ó
    EñiZý ã                  ó@&  • % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSSSSSSSSSS.
S jr\" \R4                  R7                  S5      \R8                  S	9q\" \R4                  R7                  S
5      \R8                  S	9q\" 5       r Sq!S r"S r#S r$SSSSSSSSSS.	S jr%SSSSSSSSSS.	S jr&GS@S jr'GSAS jr(S r)\*" \RV                  S-   \," S5      -   5      r-S r.S r/\/" SS5      r0\." SS5      r1 " S S5      r2\2" 5       r3Sr4S\5S'   Sq6S  r7S! r8\R4                  R7                  S"5      r9\9bƒ  \'" \: S#\9< S$35        \'" \: S%\R4                  S&    35        \9S:X  a  SSK9r9O.SSKr\Rv                  Ry                  S'\95      R{                  5       r9\9R|                  R~                  R€                  r@O7 SS(KJ@r@  \B" \@S)5      (       a  \@R†                  " 5         \@Rˆ                  " 5         S* rESS+KFJGrG  SS,KFJHrH  SS-KFJIrI  SS.KFJJrJ  SS/KFJKrK  SS0KFJLrL  SS1KFJMrM  SS2KFJNrN  \@Rž                  rPSrQ\R" \PR§                  S35       V s/ s H  n \E" U 5      PM     sn 5      rT\T\@Rª                  \@R¬                  \@R®                  4:X  d0   S4\T< S5\@Rª                  \@R¬                  \@R®                  4< 35       e\K\PS4rX\PrY\KrZSr[S6S7.S8 jr\\\r] \R¼                  r^\RÆ                  \^   rd\RÆ                  \e   rf\RÆ                  \g   rh\RÒ                  \jS4   rk\RÆ                  \RØ                     rm\RÆ                  \n   roS9rpS:rqS;rrS<rsS= rtGSBS> jruS? rvGSBS@ jrwSA rxSry " SB SC5      rz " SD SE5      r{ " SF SG5      r| " SH SI5      r} " SJ SK5      r~ " SL SM5      r\1(       a  \GR                   r� " SN SO5      r‚\‚rƒ " SP SQ5      r„ " SR SS5      r… " ST SU5      r† " SV SW5      r‡ " SX SY5      rˆ " SZ S[\ˆ5      r‰\‰" 5       rŠ " S\ S]5      r‹ " S^ S_5      rŒSS`KJ�r�   " Sa Sb5      rŽ      GSCSc jr� " Sd Se5      r� " Sf Sg5      r‘ " Sh Si5      r’ " Sj Sk5      r“ " Sl Sm5      r” " Sn So5      r• " Sp Sq5      r– " Sr Ss5      r— " St Su5      r˜ " Sv Sw5      r™ \GR4                  \›   rœ \@GR:                  GR=                  5        HB  u  rŸr \ŸGRC                  Sx5      (       d  M  \ŸGRC                  Sy5      (       a  M8  \¢" \œ\Ÿ\ 5        MD     S\@GRH                  -  \@GRJ                  -  \@GRL                  -  \@GRN                  -  \@GRP                  -  \@GRR                  -  rª\@GRV                  S:X  d   e\¬\@GRX                  :X  d   e\­\@GRZ                  :X  d   eCœCŸC \GR\                  r¯Szr°0 r±\° H  r²\²\±\²GRg                  5       '   M     S{\±S|'   S}\±S~'   S\±S€'   S�\±S‚'   Sƒ\±S„'   S…\±S†'   S‡\±Sˆ'   S‰\±SŠ'   S‹\±SŒ'   S�\±SŽ'   S�\±S�'   S‘\±S’'   S“\±S”'   S•\±S–'   S—r´S—rµS˜r¶S™r·Sšq¸/ q¹SqºSq»\@GRx                  r¼\@GRz                  r½\@GR|                  r¾\@GR~                  r¿\@GR€                  rÀ\@GR‚                  rÁ\@GR„                  rÂ\@GR†                  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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›réS�rêSŸrëS rìSríSrîS›rïSœrðS�rñ\@GRä                  ró\@GRè                  rõ\@GRì                  r÷\@GRð                  rù\@GRô                  rû\@GRø                  rý\@GRü                  rÿ\@GR                   Gr\@GR                  Gr\@GR                  Gr\@GR                  Gr\@GR                  Gr	\@GR                  Gr\@GR                  Gr\TSª:¼  a  \@GR                  Gr\TS«:¼  a  \@GR                   Gr\@GR$                  Gr\@GR(                  Gr\@GR,                  Gr\@GR0                  Gr\@GR4                  Gr\@GR8                  Gr\@GR<                  GrG\Gr G\Gr!S\ó-  \õ-  \ÿ-  G\-  Gr"S\ó-  \õ-  \ÿ-  G\-  Gr#S\ó-  \õ-  \ÿ-  \÷-  G\-  Gr$G\$Gr%S\õ-  \ÿ-  \û-  G\-  Gr&S\ó-  \õ-  \ÿ-  \÷-  G\-  Gr'S\ó-  \õ-  \ÿ-  \÷-  G\-  Gr(S\ó-  \õ-  \ÿ-  G\-  Gr)S\ó-  \õ-  \ÿ-  G\-  Gr*SGr+SGr,S›Gr-SGq.SGr/S›Gr0SœGr1S¬Gr2S­Gr3S®Gr4S¯Gr5S°Gr6S±Gr7S²Gr8S³Gr9S´Gr:SµGr;S¶Gr<S·Gr=S¸Gr>S¹Gr?SºGr@S»GrAS¼ S½ S¾ S¿ SÀ SÁ SÂ SÃ.GrB " SÄ SÅG\C5      GrD " SÆ SÇG\C5      GrE " SÈ SÉG\D5      GrF\}" G\/5      GrG\}" G\05      GrH\}" G\15      GrISÊGrJSËGrKSÌGrLSÍGrMSÎGrNSÏGrOSÐGrPSÑGrQSÒGrRSÓGrSSÔGrTSÕGrUSÖGrVS×GrWSØGrXSÙGrYSÚGrZSÛGr[SÜGr\SÝGr]SÞGr^SßGr_SàGr`SáGraSâGrbSãGrcSäGrdSåGreSæGrfSçGrgSèGrhSéGriSêGrjSëGrkSìGrlSíGrmSîGrnSïGroSðGrpSñGrqSòGrrSóGrsSôGrtSõGruSöGrvS÷GrwSøGrxSùGrySúGrzSûGr{SüGr|SýGr}SþGr~ SSÿGKGJ€Gr€GJ�Gr�  G\€GR                  " 5       GrƒG\ƒGR	                  5        H  Gr…G\�G\…   G\ƒG\…   GS '   M     GC€GC�GSGr‡GSGrˆGS Gr‰GS GrŠGS Gr‹GS GrŒGS Gr�GS GrŽGS	 Gr�GS
 Gr�GS Gr‘GS Gr’GS Gr“GS Gr”GS Gr•GS Gr–GS Gr—GS Gr˜GS Gr™GS GršGS Gr›GSDGS jGrœGSDGS jGr�GS GržGS GrŸGS Gr GS Gr¡GS Gr¢GS Gr£GS Gr¤GS Gr¥GS  Gr¦GS! Gr§GS" Gr¨GS# Gr©GS$ GrªGS% Gr«GS& Gr¬GS' Gr­GS( Gr®GS) Gr¯GS* Gr°GS+ Gr±GS, Gr²GS- Gr³GS. Gr´GS/ GrµGS0 Gr¶GS1 Gr·GS2 Gr¸GS3 Gr¹GS4 GrºGS5 Gr»GS6 Gr¼GS7 Gr½GS8 Gr¾GS9 Gr¿GS: GrÀGS; GrÁGS< GrÂGS= GrÃGS> GrÄGSEGS? jGrÅGSFGS@ jGrÆGSA GrÇGSB GrÈGSC GrÉGSD GrÊGSE GrËGSF GrÌGSG GrÍGSH GrÎGSI GrÏGSJ GrÐGSK GrÑGSL GrÒGSM GrÓGSN GrÔGSO GrÕGSP GrÖGSQ Gr×GSR GrØSGqÙGSS GrÚGST GrÛGSU GrÜGSV GrÝGSW GrÞGSX GrßGSY GràGSZ GráGS[ GrâGS\ GrãGS] GräGS^ GråGS_ GræGS` GrçGSa GrèGSb GréGSc GrêGSd GrëGSe GrìGSf GríGSg GrîGSh GrïGSi GrðGSj GrñGSk GròGSl GróGSm GrôGSn GrõGSo GröGSp Gr÷GSq GrøGSr GrùGSs GrúGSt GrûGSu GrüGSv GrýGSw GrþGSx GrÿGSy Gr GSz GrGS{ GrGS| GrGS} GrGS~ GrGS GrGS€ GrGS� GrGS‚ Gr	GSƒ Gr
GS„ GrGS… GrGS† GrGS‡ GrGSˆ GrGS‰ GrGSŠ GrGS‹ GrGSŒ GrGS� GrGSŽ GrGS�GrGS�GrGS‘GrGS’GrGS“GrGS”GrGS•GrGS–GrGS—GrGS˜GrGS™Gr GSšGr!GS›Gr"GSœGr#GS�Gr$GSžGr%GSŸGr&GS Gr'GS¡Gr(GS¢Gr)GS£Gr*GS¤Gr+GS¥Gr,GS¦Gr-GS§Gr.GS¨Gr/GS©Gr0SÅGr1GSªGr2GS« Gr3GSGGS¬ jGr4GSHGS­ jGr5GSIGS® jGr6GSJGS¯ jGr7GSKGS° jGr8GSLGS± jGr9GSMGS² jGr:GSNGS³ jGr;GSOGS´ jGr<GSPGSµ jGr=GS¶ Gr>GS· Gr?GSQGS¸ jGr@GS¹ GrAGSº GrBGS» GrCGS¼ GrDGSRGS½ jGrEGSSGS¾ jGrFGSTGS¿ jGrGSSSGSÀ.         GSUGSÁ jjGrHGSVGSWGSÂ jjGrIGSXGSÃ jGrJGSÄ GrKGSÅ GrLGSÆ GrMGSÇ GrNGSÈ GrOGSÉ GrPGSÊ GrQGSË GrRGSÌ GrSGSÍ GrTGSÎ GrUGSÏ GrVGSÐ GrWGSÑ GrXGSÒ GrYGSÓ GrZGSÔ Gr[GSÕ Gr\GSÖ Gr] " GS× GSØ\@GR¼                  5      Gr_GSÙ Gr`GSÚ GraGSÛ GrbGSÜ GrcGSÝ GrdGSÞ GreGSß GrfGSà GrgGSá GrhGSâ GriGSã GrjGSä GrkGSå GrlGSæ GrmGSç GrnGSYGSè jGro " GSé GSê\@GRà                  5      Grq " GSë GSì\@GRä                  5      Grs " GSí GSî\@GRè                  5      GruGSï Grv " GSð GSñ\@GRä                  5      Grw " GSò GSó\@GRä                  5      GrxGSZGS[GSô jjGryGS\GSõ jGrzGS]GSö jGr{GS^GS÷ jGr|GSø Gr}GSù Gr~GSú GrGSû Gr€GSü Gr�GS_GSý jGr‚ " GSþ GSÿG\ƒ5      Gr„GS  Gr…GS`GSaGS jjGr†GSbGS jGr‡GS GrˆGScGSdGS jjGr‰GS GrŠSSSSSSGS.GS jGr‹SSSSSSGS.GS jGrŒGS	 Gr�GS
 GrŽGS Gr�GS Gr�GS Gr‘GS Gr’GS Gr“GS Gr”GS Gr•GS Gr–GS Gr—GS Gr˜GS Gr™GS GršGS Gr›GS GrœGSeGS jGr�GSfGS jGržGS GrŸGS Gr GSAGS jGr¡GSgGS jGr¢GShGS jGr£GShGS  jGr¤GS! Gr¥GS" Gr¦GS# Gr§SGr¨S›Gr©SœGrªS�Gr«GSiGS$ jGr¬GS% Gr­GS&\e" 5       SGS&\e" 5       SGS'SSGS(.	GS) jGr®SGS'SSöSSSSSSGS*.
GS+ jGr¯ " GS, GS-5      Gr°\9(       d(  \@GRb                  " G\ì5        \@GRd                  " G\í5        GS. Gr³\GRh                  " G\³5        SGS/KGJµGrµ  G\µGRj                  Grµ\e" 5       Gr¶G\µ H4  u  Gr·Gr¸Gr¹GrºG\¸GS0-  G\¹GS0-  G\ºGS0-  4G\¶G\·GRg                  5       '   M6     GS1 Gr»GS2 Gr¼GSBGS3 jGr½SGS4KGJ¾Gr¾  G\¾GR~                  Gr¿G\¾GR€                  GrÀG\¾GR‚                  GrÁG\¾GR„                  GrÂG\¾GR†                  GrÃSGS5KGJÄGrÄ   " GS6 GS7G\Å5      GrÆGS8 GrÇ \ZGrÈGS9\Z GS:\Y GS;\GR’                  S    S3\GR’                  S    GS<\GR”                   GS=\GR–                  GS>:”  a  S¢OS¡ GS?3r g! \A a    SSK@r@ GNôf = fs  sn f ! \_ a    \`\a-  \b-  r^ GN÷f = f! G\† a    0 Grƒ GNšf = f(j  zk
PyMuPDF implemented on top of MuPDF Python bindings.

License:

    SPDX-License-Identifier: GPL-3.0-only
é    )ÚannotationsNé   )Úextra©
ÚtextÚfdÚstreamÚpathÚpath_appendÚ	pyloggingÚpylogging_loggerÚpylogging_levelÚpylogging_nameÚdefaultc        
        ó(  ^^• U Gb  U R                  S5      (       a  [        U SS 5      nOóU R                  S5      (       a  U SS nO×U R                  S5      (       a  U SS nO»U R                  S5      (       a™  Sn[        5       n
U S	S R                  S
5      nU HA  nU(       d  M  UR                  SS5      n[	        U5      S:X  d   SU< S35       eUu  pïXúU'   MC     U
R                  S5      mTb  [        T5      mU
R                  SS5      nO SU < S35       eUb  [        R                  " USSS9nU$ Ub*  [        US5      (       d   e[        US5      (       d   eUnU$ Ub  [        R                  " US5      nU$ Ub  [        R                  " US5      nU$  Uc	  Tc  Tc  Ubd  SSK	nTc  Uc  SnUR                  U5      m[        TUR                  5      (       d   eTc  TR                  5       m " UU4S jS5      nU" 5       nU$ U	nU$ )aî  
Returns a stream that writes to a specified destination, which can be a
file descriptor, a file, an existing stream or Python's `logging' system.

Args:
    text: text specification of destination.
        fd:<int> - write to file descriptor.
        path:<str> - write to file.
        path+:<str> - append to file.
        logging:<items> - write to Python `logging` module.
            items: comma-separated <name=value> pairs.
                level=<int>
                name=<str>.
            Other names are ignored.
    
    fd: an int file descriptor.
    stream: something with methods .write(text) and .flush().
        If specified we simply return <stream>.
    path: a file path.
        If specified we return a stream that writes to this file.
    path_append: a file path.
        If specified we return a stream that appends to this file.
    pylogging*:
        if any of these args is not None, we return a stream that writes to
        Python's `logging` module.
        
        pylogging:
            Unused other than to activate use of logging module.
        pylogging_logger:
            A logging.Logger; If None, set from <pylogging_name>.
        pylogging_level:
            An int log level, if None we use
            pylogging_logger.getEffectiveLevel().
        pylogging_name:
            Only used if <pylogging_logger> is None:
                If <pylogging_name> is None, we set it to 'pymupdf'.
                Then we do: pylogging_logger = logging.getLogger(pylogging_name)
Nzfd:é   zpath:é   zpath+zlogging:Té   Ú,Ú=r   é   zNeed `=` in item=Ú.ÚlevelÚnameÚpymupdfr   z?Expected prefix `fd:`, `path:`. `path+:` or `logging:` in text=ÚwF)ÚmodeÚclosefdÚwriteÚflushÚac                  ó*   >• \ rS rSrU U4S jrS rSrg)Ú_make_output.<locals>.Outé”   c                ó\   >• UR                  S5      nU(       a  TR                  TU5        g g )NÚ
)ÚrstripÚlog)Úselfr   r   r   s     €€ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pymupdf/__init__.pyr   Ú_make_output.<locals>.Out.write•   s+   ø€ ð —{‘{ 4Ó(�ÞØ$×(Ñ(¨¸$Õ?ð ó    c                ó   • g ©N© ©r)   s    r*   r    Ú_make_output.<locals>.Out.flushœ   s   € Ør,   r/   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r    Ú__static_attributes__)r   r   s   €€r*   ÚOutr#   ”   s   ø† ö@õr,   r7   )Ú
startswithÚintÚdictÚsplitÚlenÚgetÚioÚopenÚhasattrÚloggingÚ	getLoggerÚ
isinstanceÚLoggerÚgetEffectiveLevel)r   r   r	   r
   r   r   r   r   r   r   Úitems_dÚitemsÚitemÚnvÚnÚvÚretrA   r7   s         ``           r*   Ú_make_outputrM   .   sN  ù€ ðf Òà�?‰?˜5×!Ñ!Ü�T˜!˜"�X“‰BØ�_‰_˜W×%Ñ%Ø˜˜�8‰DØ�_‰_˜W×%Ñ%Ø˜q˜r˜(‰KØ�_‰_˜Z×(Ñ(ØˆIÜ“fˆGØ˜˜�H—N‘N 3Ó'ˆEã�ÞÙØ—Z‘Z  QÓ'�Ü˜2“w !“|Ð<Ð'9°D±7¸!Ð%<Ó<�|Ø‘�Ø˜“
ñ ð &Ÿk™k¨'Ó2ˆOØÑ*Ü"% oÓ"6�Ø$Ÿ[™[¨°Ó;‰Nà[ÐXÐSWÑRYÐYZÐ[Ó[�1à	�~Ü�gŠg�b˜s¨EÑ2ˆðH €JðG 
Ñ	Ü�v˜w×'Ñ'Ð'Ð'Ü�v˜w×'Ñ'Ð'Ð'Øˆð@ €Jð? 
Ñ	Ü�gŠg�d˜CÓ ˆð< €Jð; 
Ñ	 Ü�gŠg�k 3Ó'ˆð8 €Jð7 ØÑ$ØÑ+ØÑ*ØÑ)ãØÑ#ØÑ%Ø!*�Ø&×0Ñ0°Ó@ÐÜÐ*¨G¯N©N×;Ñ;Ð;Ð;ØÑ"Ø.×@Ñ@ÓBˆO÷		õ 		ñ ‹eˆð €Jð ˆØ€Jr,   ÚPYMUPDF_MESSAGE)r   r   ÚPYMUPDF_LOGFc                 ó   • [         $ r.   ©Ú_g_log_itemsr/   r,   r*   Ú
_log_itemsrS   ­   s   € ÜÐr,   c                ó   • U q g r.   )Ú_g_log_items_active)Úactives    r*   Ú_log_items_activerW   °   s   € à Ñr,   c                 ó   • [         S S 2	 g r.   rQ   r/   r,   r*   Ú_log_items_clearrY   ´   s	   € Ü’Q‰r,   ©	r   r   r	   r
   r   r   r   r   r   c        	        ó0   • [        U UUUUUUUU[        S9
qg)zG
Sets destination of PyMuPDF messages. See _make_output() for details.
r   N)rM   Ú_g_out_messagerZ   s	            r*   Úset_messagesr]   ¸   s,   € ô  "ØØØØØ#ØØ-Ø+Ø)Ü"ñ�Nr,   c        	        ó0   • [        U UUUUUUUU[        S9
qg)z\
Sets destination of PyMuPDF development/debugging logging. See
_make_output() for details.
r   N)rM   Ú
_g_out_logrZ   s	            r*   Úset_logr`   Õ   s,   € ô" ØØØØØ#ØØ-Ø+Ø)Üñ�Jr,   Ú c                ó¤  •  [         R                  " SS9nX!   n [        R                  R	                  UR
                  5      nUR                  nUR                  nU SU SU SU  3n A[        (       a  [        R                  U 5        [        (       a  [        U [        SS9  gg! [         a    UR
                  n Nzf = f! [         a     Ndf = f)z(
For development/debugging diagnostics.
r   )ÚcontextÚ:z(): r   ©Úfiler    N)ÚinspectÚstackÚosr
   ÚrelpathÚfilenameÚ	ExceptionÚlinenoÚfunctionÚStopIterationrU   rR   Úappendr_   Úprint)r   Úcallerrh   Úframe_recordrk   Úlinern   s          r*   r(   r(   ó   sË   € ðÜ—’ aÑ(ˆð ‘}ˆð	-Ü—w‘w—‘ |×'<Ñ'<Ó=ˆHð ×"Ñ"ˆØ×(Ñ(ˆØ�˜1˜T˜F ! H :¨T°$°Ð8ˆØçÒÜ×Ñ˜DÔ!ß‚zÜˆdœ¨1Ó-ð øô ó 	-Ø#×,Ñ,ŠHð	-ûô ó Ùðús"   ‚C ›)B& Â&B?Â>B?Ã
CÃCc                ó:   • [         (       a  [        U [         SS9  gg)z
For user messages.
r   re   N)r\   rq   ©r   s    r*   Úmessagerw     s   € ÷ ‚~Üˆdœ¨qÓ1ð r,   c                 óT   • SS K n [        S5        [        U R                  5       5        g )Nr   zexception_info:)Ú	tracebackr(   Ú
format_exc)ry   s    r*   Úexception_infor{     s   € ÛÜˆ/ÔÜˆ	×ÑÓÕr,   z
()<>[]{}/%c                ó¾   • [         R                  R                  U 5      nUc  UnO US:X  a  SnOUS:X  a  SnO SU  SU< 35       eX1:w  a  [        SU  SU< 35        U$ )úq
Returns `True`, `False` or `default` depending on whether $<name> is '1',
'0' or unset. Otherwise assert-fails.
Ú1TÚ0FzUnrecognised value for ú: úUsing non-default setting from )ri   Úenvironr=   r(   ©r   r   rK   rL   s       r*   Úget_env_boolr„     sp   € ô
 	�
‰
�‰˜Ó€AØ�yØ‰Ø	
ˆc‹Ø‰Ø	
ˆc‹Ø‰à9Ð+¨D¨6°°A±5Ð9Ó9ˆqØ
ƒ~ÜÐ-¨d¨V°2°a±UÐ;Ô<Ø€Jr,   c                ó’   • [         R                  R                  U 5      nUc  UnO[        U5      nX1:w  a  [	        SU  SU 35        U$ )r}   r�   r€   )ri   r‚   r=   r9   r(   rƒ   s       r*   Úget_env_intr†   1  sI   € ô
 	�
‰
�‰˜Ó€AØ�yØ‰ä�!‹fˆØ
ƒ~ÜÐ-¨d¨V°2°a°SÐ9Ô:Ø€Jr,   ÚPYMUPDF_EXCEPTIONS_VERBOSEÚPYMUPDF_USE_EXTRATc                  ó   • \ rS rSrS rSrg)Ú_GlobalsiK  c                ó<   • SU l         SU l        SU l        SU l        g ©Nr   )Úno_device_cachingÚsmall_glyph_heightsÚsubset_fontnamesÚskip_quad_correctionsr0   s    r*   Ú__init__Ú_Globals.__init__L  s"   € Ø!"ˆÔØ#$ˆÔ Ø !ˆÔØ%&ˆÕ"r,   )r�   r�   rŽ   r�   N©r2   r3   r4   r5   r‘   r6   r/   r,   r*   rŠ   rŠ   K  s   † õ'r,   rŠ   z typing.Optional[typing.Callable]Ú_get_layoutc                 ó   • Sq g)z:For users who never want to see the layout recommendation.FN)Ú_recommend_layoutr/   r,   r*   Úno_recommend_layoutr—   Z  s
   € ð Ñr,   c                 óÌ   • Sn  [         (       aV  [        cN  [        R                  " S5      S:w  a3  [        R
                  R                  S5      (       d  [        U 5        Sq ggggg)z;Check if we should recommend installing the layout package.zVConsider using the pymupdf_layout package for a greatly improved page layout analysis.NÚPYMUPDF_SUGGEST_LAYOUT_ANALYZERr   zpymupdf.layoutF)r–   r”   ri   ÚgetenvÚ	importlibÚutilÚ	find_specrq   )Úmsgs    r*   Ú_warn_layout_oncerŸ   `  sf   € àd€Cð 	
ßÒÜÑô �IŠIÐ7Ó8¸CÓ?ô —‘×(Ñ(Ð)9×:Ñ:äˆcŒ
Ø!Ñð ;ð @ð  ð r,   ÚMUPDF_CPPYYz: $MUPDF_CPPYY=z% so attempting to import mupdf_cppyy.z: $PYTHONPATH=Ú
PYTHONPATHÚmupdf_cppyy)ÚmupdfÚinternal_check_ndebugc                óP   • U R                  S5      nUS:¼  a  U SU n [        U 5      $ )z4
Converts string to int, ignoring trailing 'rc...'.
Úrcr   N)Úfindr9   )r   r¦   s     r*   Ú_int_rcr¨   ’  s-   € ð 
�‰�4‹€BØ	ˆQƒwØ�C�RˆyˆÜˆt‹9Ðr,   )Úmupdf_location)Úpymupdf_git_branch)Úpymupdf_git_diff)Úpymupdf_git_sha)Úpymupdf_version)Úpymupdf_version_tuple)Úswig_version)Úswig_version_tupler   z8Inconsistent MuPDF version numbers: mupdf_version_tuple=zM != (mupdf.FZ_VERSION_MAJOR, mupdf.FZ_VERSION_MINOR, mupdf.FZ_VERSION_PATCH)=z%g©Úfmtc               ó®   • [        U [        [        45      (       a%  SnU  H  nU(       a  US-  nU[        X1S9-  nM     U$ [        R
                  " X5      $ )z¼
Returns `value` formatted with mupdf.fz_format_double() if available,
otherwise with Python's `%`.

If `value` is a list or tuple, we return a space-separated string of
formatted values.
ra   Ú r±   )rC   ÚlistÚtupleÚ	_format_gr£   Úfz_format_double)Úvaluer²   rL   rK   s       r*   r·   r·   ¿  sW   € ô �%œ$¤˜×'Ñ'ØˆÛˆAÞØ�s‘
�Ø”9˜QÑ(Ñ(ŠCñ ð ˆ
ä×%Ò% cÓ1Ð1r,   Úmatrix_likeÚ
point_likeÚ	quad_likeÚ	rect_likec                óX  • [        U [        5      (       a(  U R                  (       a  [        S5      eU R                  n [        U [
        R                  5      (       a  U $ [        U [
        R                  5      (       a  U R                  5       $ U c   S5       e S[        U 5      < 35       e)zn
Returns document as a mupdf.FzDocument, upcasting as required. Raises
'document closed' exception if closed.
údocument closedúdocument is NoneúUnrecognised type(document)=)
rC   ÚDocumentÚ	is_closedÚ
ValueErrorÚthisr£   Ú
FzDocumentÚPdfDocumentÚsuperÚtype)Údocuments    r*   Ú_as_fz_documentrË   è  s�   € ô
 �(œH×%Ñ%Ø××ÜÐ.Ó/Ð/Ø—=‘=ˆÜ�(œE×,Ñ,×-Ñ-ØˆÜ	�Hœe×/Ñ/×	0Ñ	0Ø�~‰~ÓÐØ	Ñ	Ø%Ð$Ó%ˆqà3Ð1¤$ x£.Ñ!2Ð3Ó3ˆqr,   c                óœ  • [        U [        5      (       a(  U R                  (       a  [        S5      eU R                  n [        U [
        R                  5      (       a  U $ [        U [
        R                  5      (       a2  [
        R                  " U 5      nU(       a  UR                  (       d   eU$ U c   S5       e S[        U 5      < 35       e)zí
Returns `document` downcast to a mupdf.PdfDocument. If downcast fails (i.e.
`document` is not actually a `PdfDocument`) then we assert-fail if `required`
is true (the default) else return a `mupdf.PdfDocument` with `.m_internal`
false.
r¿   rÀ   rÁ   )
rC   rÂ   rÃ   rÄ   rÅ   r£   rÇ   rÆ   Ú
m_internalrÉ   )rÊ   ÚrequiredrL   s      r*   Ú_as_pdf_documentrÏ   ú  s¦   € ô �(œH×%Ñ%Ø××ÜÐ.Ó/Ð/Ø—=‘=ˆÜ�(œE×-Ñ-×.Ñ.ØˆÜ	�Hœe×.Ñ.×	/Ñ	/Ü×Ò Ó)ˆÞØ—>—>Ð!�>Øˆ
Ø	Ñ	Ø%Ð$Ó%ˆqà3Ð1¤$ x£.Ñ!2Ð3Ó3ˆqr,   c                ó   • [        U [        5      (       a  U R                  n [        U [        R                  5      (       a  U R                  5       $ [        U [        R                  5      (       a  U $ U c   S5       e S[        U 5      < 35       e)z8
Returns page as a mupdf.FzPage, upcasting as required.
úpage is NoneúUnrecognised type(page)=)rC   ÚPagerÅ   r£   ÚPdfPagerÈ   ÚFzPagerÉ   ©Úpages    r*   Ú_as_fz_pagerØ     sr   € ô �$œ×ÑØ�y‰yˆÜ�$œŸ™×&Ñ&Ø�z‰z‹|ÐÜ	�Dœ%Ÿ,™,×	'Ñ	'ØˆØ	‰Ø!�LÓ!ˆqà/Ð-¤$ t£*¡Ð/Ó/ˆqr,   c                ód  • [        U [        5      (       a  U R                  n [        U [        R                  5      (       a  U $ [        U [        R
                  5      (       a2  [        R                  " U 5      nU(       a  UR                  (       d   eU$ U c   S5       e S[        U 5      < 35       e)zÙ
Returns `page` downcast to a mupdf.PdfPage. If downcast fails (i.e. `page`
is not actually a `PdfPage`) then we assert-fail if `required` is true (the
default) else return a `mupdf.PdfPage` with `.m_internal` false.
rÑ   rÒ   )	rC   rÓ   rÅ   r£   rÔ   rÕ   Úpdf_page_from_fz_pagerÍ   rÉ   )r×   rÎ   rL   s      r*   Ú_as_pdf_pagerÛ      sŠ   € ô �$œ×ÑØ�y‰yˆÜ�$œŸ™×&Ñ&ØˆÜ	�Dœ%Ÿ,™,×	'Ñ	'Ü×)Ò)¨$Ó/ˆÞØ—>—>Ð!�>Øˆ
Ø	‰Ø!�LÓ!ˆqà/Ð-¤$ t£*¡Ð/Ó/ˆqr,   c                ój   • [         R                  " U 5      nUR                  (       d  [        S5      eU$ )a   
Wrapper for mupdf.pdf_annot_page() which raises an exception if <annot>
is not bound to a page instead of returning a mupdf.PdfPage with
`.m_internal=None`.

[Some other MuPDF functions such as pdf_update_annot()` already raise a
similar exception if a pdf_annot's .page field is null.]
úAnnot is not bound to a page)r£   Úpdf_annot_pagerÍ   ÚRuntimeError)Úannotr×   s     r*   Ú_pdf_annot_pagerá   5  s,   € ô ×Ò Ó&€DØ�?�?ÜÐ9Ó:Ð:Ø€Kr,   c                  óä  • \ rS rSrS rS rS rS rS rS r	S r
SBS	 jrSCS jr\S 5       r\S 5       r\S 5       r\S 5       rSDS jr\S 5       rS r\S 5       r\S 5       rS rS rS rSES jrS rS rS rSFS jr\S 5       r\S 5       r \S 5       r!\S  5       r"\S! 5       r#\S" 5       r$\S# 5       r%\S$ 5       r&\S% 5       r'\S& 5       r(\S' 5       r)\S( 5       r*\S) 5       r+S* r,S+ r-S, r.SGS- jr/SHS. jr0S/ r1SIS0 jr2S1 r3SJS2 jr4S3 r5S4 r6SBS5 jr7S6 r8S7 r9S8 r:S9 r;SBS: jr<\S; 5       r=         SK                 SLS< jjr>SMS= jr?\@S> 5       rA\S? 5       rB\S@ 5       rCSArDg
)NÚAnnotiJ  c                óR   • [        U[        R                  5      (       d   eXl        g r.   )rC   r£   ÚPdfAnnotrÅ   ©r)   rà   s     r*   r‘   ÚAnnot.__init__L  s   € Ü˜5¤%§.¡.×1Ñ1Ð1Ð1Ø�	r,   c                ó,   • [        U R                  5      $ r.   )ÚboolrÅ   r0   s    r*   Ú__bool__ÚAnnot.__bool__P  s   € Ü�D—I‘I‹Ðr,   c                óF   • [        U SS5      nSU R                  S    SU 3$ )NÚparentz<>Ú'r   z' annotation on )ÚgetattrrÉ   )r)   rí   s     r*   Ú__repr__ÚAnnot.__repr__S  s,   € Ü˜˜x¨Ó.ˆØ�4—9‘9˜Q‘<�.Ð 0°°Ð9Ð9r,   c                ó"   • U R                  5       $ r.   )rð   r0   s    r*   Ú__str__ÚAnnot.__str__W  s   € Ø�}‰}‹Ðr,   c                ó8   • [        U SS5      (       a  SU l        g g )NÚthisownF)rï   rö   r0   s    r*   Ú_eraseÚAnnot._eraseZ  s   € Ü�4˜ E×*Ñ*Ø ˆD�Lð +r,   c                óâ  • U R                   n[        R                  " U5      [        R                  :w  a  g [	        5       n [        R
                  " [        R                  " U5      S5      nUR                  (       a)  [        S5        [        R                  " U5      nXB[        '   [        R
                  " [        R                  " U5      S5      nUR                  (       a)  [        R                  " U5      n[        U5      U[        '   O	SU[        '   [        R                  " [        R                  " U5      [        S5      5      nSnUR                  (       a  [        R                   " U5      nXb["        '   UnU(       d  U$ U R*                  US'   [,        R/                  U 5      u  p‰n
X‡S'   X—S	'   X§S
'   U R0                  S   nX·S'   U$ ! [$         a    [&        (       a
  [)        5          g f = f)NÚROzIgnoring redaction key '/RO'.ÚOverlayTextra   ÚQr   ÚrectÚ
text_colorÚfontnameÚfontsizeÚfill)rÅ   r£   Úpdf_annot_typeÚPDF_ANNOT_REDACTr:   Úpdf_dict_getsÚpdf_annot_objrÍ   Úmessage_warningÚ
pdf_to_numÚdictkey_xrefÚpdf_to_text_stringÚJM_UnicodeFromStrÚdictkey_textÚpdf_dict_getÚPDF_NAMEÚ
pdf_to_intÚdictkey_alignrl   Úg_exceptions_verboser{   rý   ÚTOOLSÚ	_parse_daÚcolors)r)   rà   ÚvaluesÚobjÚxrefr   ÚalignÚvalrþ   rÿ   r   r  s               r*   Ú_get_redact_valuesÚAnnot._get_redact_values^  sˆ  € Ø—	‘	ˆÜ×Ò Ó&¬%×*@Ñ*@Ó@Øä“ˆð	Ü×%Ò%¤e×&9Ò&9¸%Ó&@À$ÓGˆCØ�~�~ÜÐ ?Ô@Ü×'Ò'¨Ó,�Ø'+”|Ñ$Ü×%Ò%¤e×&9Ò&9¸%Ó&@À-ÓPˆCØ�~�~Ü×/Ò/°Ó4�Ü'8¸Ó'>�”|Ò$à')�”|Ñ$Ü×$Ò$¤U×%8Ò%8¸Ó%?ÄÈ#ÃÓOˆCØˆEØ�~�~Ü×(Ò(¨Ó-�Ø$)”=Ñ!ð ˆæØˆJØ—i‘iˆˆF‰Ü).¯©¸Ó)>Ñ&ˆ
˜hØ&ˆLÑØ"ˆJ‰Ø"ˆJ‰Ø�{‰{˜6Ñ"ˆØˆF‰Øˆ
øô ó 	ß#Ò#¬Ô(8Ùð	ús   ÁD8G ÇG.Ç-G.c                ón  • [         (       ad  [        U R                  [        R                  5      (       d   e[
        R                  " U R                  5      n[        U[        5      (       d   eU$ S nS nU R                  n[        U[        R                  5      (       d   e[        R                  " U5      n[        R                  " U[        S5      [        S5      5      n[        R                  " U5      (       a  [        R                  " U5      nU(       a  UR                  (       a  [        U5      nU$ )NÚAPÚN)Úg_use_extrarC   rÅ   r£   rå   r   ÚAnnot_getAPÚbytesr  Úpdf_dict_getlr  Úpdf_is_streamÚpdf_load_streamrÍ   ÚJM_BinFromBuffer)r)   rL   ÚrÚresrà   Ú	annot_objÚaps          r*   Ú_getAPÚAnnot._getAP…  sÝ   € ßŠ;Ü˜tŸy™y¬%¯.©.×9Ñ9Ð9Ð9Ü×#Ò# D§I¡IÓ.ˆCÜ˜s¤E×*Ñ*Ð*Ð*ØˆJàˆAØˆCØ—I‘IˆEÜ˜u¤e§n¡n×5Ñ5Ð5Ð5Ü×+Ò+¨UÓ3ˆIÜ×$Ò$ i´¸$³ÄÈ#ÃÓOˆBÜ×"Ò" B×'Ñ'Ü×+Ò+¨RÓ0�Þ�s—~—~Ü$ SÓ)�ØˆHr,   c                ó´  •  U R                   n[        R                  " U5      n[        U5      n[        R                  " U[        S5      [        S5      5      nUR                  (       d  [        [        5      e[        R                  " U5      (       d  [        [        5      e[        U5      nUR                  (       d  [        [        5      e[        UR                  5       XgS5        U(       aB  [        R                  " U[        S5      5      n[        R                   " U[        S5      U5        g g ! ["         a    [$        (       a  ['        5          g  g f = f)Nr  r  r   ÚRectÚBBox)rÅ   r£   r  rá   r!  r  rÍ   rß   ÚMSG_BAD_APNr"  ÚJM_BufferFromBytesrÄ   ÚMSG_BAD_BUFFERÚJM_update_streamÚdocÚpdf_dict_get_rectÚpdf_dict_put_rectrl   r  r{   )	r)   Úbuffer_rý   rà   r'  r×   Úapobjr&  Úbboxs	            r*   Ú_setAPÚAnnot._setAP˜  sù   € ð	9Ø—I‘IˆEÜ×+Ò+¨UÓ3ˆIÜ" 5Ó)ˆDÜ×'Ò'¨´H¸T³NÄHÈSÃMÓRˆEØ×#×#Ü"¤KÓ0Ð0Ü×&Ò&¨×.Ñ.Ü"¤KÓ0Ð0Ü$ gÓ.ˆCØ—>—>Ü ¤.Ó1Ð1Ü˜dŸh™h›j¨%°aÔ8ÞÜ×.Ò.°	¼8ÀFÓ;KÓL�Ü×'Ò'¨´¸Ó0@À$ÕGð øô ó 	9ß#Ò#¬Ö(8Ñ#ð	9ús   ‚D/D3 Ä3EÅENc                ó–
  • U R                   nUR                  (       d   e[        R                  " U5      n[	        U5      nUR                  5       n[        R                  " U5      n	[        U5      u  p« U
S:X  dQ  U	[        R                  [        R                  [        R                  [        R                  [        R                  4;  a!  [        R                  " U[        S5      5        OU
S:”  a  [        R                  " X[S U
 5        US:¼  a  SOSnU	[        R                   [        R                  [        R"                  [        R$                  [        R&                  [        R                  [        R                  [        R                  [        R                  [        R(                  [        R*                  4;  a  SnU(       a!  [        R,                  " U[        S5      U5        U	[        R"                  :X  a   U
S:”  a  [        R.                  " X[S U
 5        OwU
S:”  aq  [        R0                  " UR                  5       U
5      n[3        U
5       H  n[        R4                  " XÛU   5        M     [        R6                  " U[        S5      U5        [        R8                  " U5        [        R:                  " U5        SUl        US:  d  US:¼  a  U(       d  g [        RF                  " [        R                  " U5      [        S5      [        S5      5      nUR                  (       d  [I        [J        5      e[        RL                  " U[        S	5      5      nUR                  (       d!  [        RN                  " U[        S	5      S
5      n[        RP                  " UR                  5       S5      nUS:¼  ai  US:  ac  [        RR                  " U[        S5      U5        [        RR                  " U[        S5      U5        [        RR                  " U[        S5      U5        U(       aB  [        RT                  " U[        S5      U5        [        RT                  " U[        S5      U5        [        RL                  " U[        S5      5      nUR                  (       d!  [        RN                  " U[        S5      S
5      n[        R6                  " U[        S5      U5        g! [>         a)  n[@        (       a
  [C        5         [E        SU 35        e S nAff = f! [>         a)  n[@        (       a
  [C        5         [E        SU 35        e S nAff = f)Nr   ÚICr   ÚRotatezcannot update annot: Tr  r  Ú	Resourcesr   r   ÚCAÚcaÚBMÚ	ExtGStateÚHz#cannot set opacity or blend mode
: )+rÅ   rÍ   r£   r  rá   r2  r  ÚJM_color_FromSequenceÚPDF_ANNOT_SQUAREÚPDF_ANNOT_CIRCLEÚPDF_ANNOT_LINEÚPDF_ANNOT_POLY_LINEÚPDF_ANNOT_POLYGONÚpdf_dict_delr  Úpdf_set_annot_interior_colorÚPDF_ANNOT_CARETÚPDF_ANNOT_FREE_TEXTÚPDF_ANNOT_FILE_ATTACHMENTÚPDF_ANNOT_INKÚPDF_ANNOT_STAMPÚPDF_ANNOT_TEXTÚpdf_dict_put_intÚpdf_set_annot_colorÚpdf_new_arrayÚrangeÚpdf_array_push_realÚpdf_dict_putÚpdf_dirty_annotÚpdf_update_annotÚresynth_requiredrl   r  r{   rw   r!  rß   r.  r  Úpdf_dict_put_dictÚpdf_new_dictÚpdf_dict_put_realÚpdf_dict_put_name)r)   ÚopacityÚ
blend_modeÚ
fill_colorÚrotaterà   r'  r×   ÚpdfÚtype_ÚnfcolÚfcolÚ
insert_rotÚcolÚiÚer(  Ú	resourcesÚalp0Úextgs                       r*   Ú_update_appearanceÚAnnot._update_appearance¬  sô  € Ø—	‘	ˆØ××ÐÐÜ×'Ò'¨Ó/ˆ	Ü˜uÓ%ˆØ�h‰h‹jˆÜ×$Ò$ eÓ,ˆÜ+¨JÓ7‰ˆð1	ð ˜‹z˜UÜ×*Ñ*Ü×*Ñ*Ü×(Ñ(Ü×-Ñ-Ü×+Ñ+ð+ó ô ×"Ò" I¬x¸«~Õ>Ø˜“Ü×2Ò2°EÀÀ¸<ÔHà$¨›k™¨qˆJØÜ×)Ñ)Ü×*Ñ*Ü×-Ñ-Ü×3Ñ3Ü×'Ñ'Ü×(Ñ(Ü×-Ñ-Ü×+Ñ+Ü×*Ñ*Ü×)Ñ)Ü×(Ñ(ðó ð �
æÜ×&Ò& y´(¸8Ó2DÀfÔMð œ×1Ñ1Ó1Ø˜1“9Ü×-Ò-¨e¸&¸5°\ÔBøØ˜“Ü×)Ò)¨$¯(©(«*°eÓ<�Ü ž�AÜ×-Ò-¨c¸±7Ö;ñ 'ä×"Ò" 9¬h°t«n¸cÔBÜ×!Ò! %Ô(Ü×"Ò" 5Ô)Ø#$ˆCÔ ð �a‹K˜7 a›<¶Øð 	Ü×$Ò$Ü×'Ò'¨Ó.Ü˜T“NÜ˜S“MóˆBð
 —=—=Ü"¤KÓ0Ð0ä×*Ò*¨B´¸Ó0EÓFˆIØ×'×'Ü!×3Ò3°R¼À+Ó9NÐPQÓR�	ä×%Ò% t§x¡x£z°1Ó5ˆDØ˜!‹| ¨!£Ü×'Ò'¨¬x¸«~¸wÔGÜ×'Ò'¨¬x¸«~¸wÔGÜ×'Ò'¨´H¸T³NÀGÔLæÜ×'Ò'¨¬x¸«~¸zÔJÜ×'Ò'¨´H¸T³NÀJÔOä×%Ò% y´(¸;Ó2GÓHˆDØ—?—?Ü×.Ò.°	¼8ÀKÓ;PÐRSÓT�ä×Ò ¤h¨s£m°TÔ:ð øôW ó 	ß#Ò#ÜÔ ÜÐ,¨Q¨CÐ0Ô1Øûð		ûôL ó 	ß#Ò#¬Ô(8ÜÐ;¸A¸3Ð?Ô@Øûð	ús2   Á5IS ËH T Ó
TÓ)$TÔTÔ
UÔ$UÕUc                ó   • [        U 5        U R                  n[        R                  " U5      n[        R                  " U[        S5      [        S5      5      nUR                  (       d8  [        [        R                  " [        R                  R                  5      5      nO+[        R                  " U[        S5      5      n[        U5      n[        U5      U R                  5       R                  -  nX@R                  5       R                  -  nU$ )zannotation appearance bboxr  r  r-  )ÚCheckParentrÅ   r£   r  r!  r  rÍ   ÚJM_py_from_rectÚFzRectÚFixed_INFINITEr3  r,  Ú
get_parentÚtransformation_matrixÚderotation_matrix)r)   rà   r'  r(  r  rý   s         r*   Úapn_bboxÚAnnot.apn_bbox  s»   € ô 	�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü× Ò  ¬H°T«N¼HÀS»MÓJˆØ�}�}Ü!¤%§,¢,¬u¯|©|×/JÑ/JÓ"KÓL‰Cä×*Ò*¨2¬x¸Ó/?Ó@ˆDÜ! $Ó'ˆCä�3‹i˜$Ÿ/™/Ó+×AÑAÑAˆØ�‰Ó ×2Ñ2Ñ2ˆØˆ
r,   c                ó$  •  [        U 5        U R                  n[        U[        R                  5      (       d   e[        R
                  " [        R                  " U5      [        R                  [        R                  5      nUR                  (       d  [        [        R                  " 5       5      $ [        R                  " U[        R                  5      n[        U5      n[        U5      nU$ ! [         a    [         (       a
  [#        5         e f = f)zannotation appearance matrix)rp  rÅ   rC   r£   rå   r!  r  ÚPDF_ENUM_NAME_APÚPDF_ENUM_NAME_NrÍ   ÚJM_py_from_matrixÚFzMatrixÚpdf_dict_get_matrixÚPDF_ENUM_NAME_MatrixÚMatrixrl   r  r{   )r)   rà   r(  Úmatr  s        r*   Ú
apn_matrixÚAnnot.apn_matrix   sÇ   € ð	Ü˜ÔØ—I‘IˆEÜ˜e¤U§^¡^×4Ñ4Ð4Ð4Ü×$Ò$Ü×'Ò'¨Ó.Ü×*Ñ*Ü×)Ñ)óˆBð
 —=—=Ü(¬¯ªÓ)9Ó:Ð:Ü×+Ò+¨B´×0JÑ0JÓKˆCÜ# CÓ(ˆCä˜“+ˆCàˆJøÜó 	ß#Ò#¬Ô(8Øð	ús   ‚B.C. Â1<C. Ã.!Dc           
     ó¦  • [        U 5        U R                  n[        R                  " U5      n[        R                  " U[        S5      5      nSnUR                  (       a!  [        [        R                  " U5      5      nU$ [        R                  " U[        S5      [        S5      [        S5      [        S5      5      n[        R                  " U5      (       aö  [        R                  " U5      n[        U5       HÑ  n[        R                  " X65      n[        R                  " U5      (       d  M6  [        R                  " U5      n[        U5       Hv  n	[        R                  " Xy5      n
[        R                  " U
[        S5      5      S:X  d  M?  [        [        R                  " [        R                  " Xy5      5      5      nUs  s  $    MÓ     U$ )zannotation BlendModer@  Nr  r  r=  rA  r   )rp  rÅ   r£   r  r  r  rÍ   r
  Úpdf_to_namer!  Úpdf_is_dictÚpdf_dict_lenrT  Úpdf_dict_get_valÚpdf_dict_get_keyÚ
pdf_objcmp)r)   rà   r'  r  r_  rJ   rh  Úobj1ÚmÚjÚobj2s              r*   Ú	blendmodeÚAnnot.blendmode8  s[  € ô 	�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü× Ò  ¬H°T«NÓ;ˆØˆ
Ø�>�>Ü*¬5×+<Ò+<¸SÓ+AÓBˆJØÐä×!Ò!ØÜ˜“Ü˜“Ü˜Ó%Ü˜Ó%óˆô ×Ò˜S×!Ñ!Ü×"Ò" 3Ó'ˆAÜ˜1–X�Ü×-Ò-¨cÓ5�Ü×$Ò$ T×*Ó*Ü×*Ò*¨4Ó0�AÜ" 1žX˜Ü$×5Ò5°dÓ>˜Ü ×+Ò+¨D´(¸4³.ÓAÀQÕFÜ):¼5×;LÒ;LÌU×McÒMcÐdhÓMlÓ;mÓ)n˜JØ#-Ô-ó	 &ñ	 ð Ðr,   c                ó‚  • [        U 5        U R                  S   nU[        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  4;  a
  [        5       $ [        R                  " U R                  5      n[        U5      nU$ )zBorder information.r   )rp  rÉ   r£   rE  rL  rN  rF  rG  rH  rD  r:   r  rÅ   ÚJM_annot_border)r)   ÚatypeÚaorL   s       r*   ÚborderÚAnnot.borderX  s‘   € ô 	�DÔØ—	‘	˜!‘ˆØÜ×&Ñ&Ü×)Ñ)Ü×#Ñ#Ü×$Ñ$Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&ðó ô “6ˆMÜ× Ò  §¡Ó+ˆÜ˜bÓ!ˆØˆ
r,   c                óÌ   • [        U 5        U R                  n[        R                  " [        R                  " U5      5      n[        SSSUS9n[        R                  " X2U5        g)z!Clean appearance contents stream.r   r   )ÚrecurseÚinstance_formsÚasciiÚsanitizeN)rp  rÅ   r£   Úpdf_get_bound_documentr  Ú_make_PdfFilterOptionsÚpdf_filter_annot_contents)r)   r›  rà   rb  Úfilter_s        r*   Úclean_contentsÚAnnot.clean_contentsk  sO   € ä�DÔØ—	‘	ˆÜ×*Ò*¬5×+>Ò+>¸uÓ+EÓFˆÜ(°À1ÈAÐX`ÑaˆÜ×'Ò'¨°GÕ<r,   c                óú   •  [        U 5        U R                  n[        U[        R                  5      (       d   e[        [        R                  " U5      5      $ ! [         a    [        (       a
  [        5         e f = f)zColor definitions.)
rp  rÅ   rC   r£   rå   ÚJM_annot_colorsr  rl   r  r{   ræ   s     r*   r  ÚAnnot.colorss  sb   € ð	Ü˜ÔØ—I‘IˆEÜ˜e¤U§^¡^×4Ñ4Ð4Ð4Ü"¤5×#6Ò#6°uÓ#=Ó>Ð>øÜó 	ß#Ò#¬Ô(8Øð	ús   ‚AA Á!A:c                ó0  • [        U 5        U R                  n[        R                  " U5      n[	        U5      n [        U5      nU(       d  O[        R                  " X45        M+  [        R                  " U[        S5      5        [        R                  " UR                  5       [        S5      5      n[        R                  " U5      nSn[        US-
  SS5       H�  n[        R                  " XX5      n	[        R                  " U	[        S5      5      n
U	R                  (       d  ML  [        R                  " X¢5      (       a  Mi  [        R                   " XX5        SnMƒ     U(       a0  [        R"                  " UR                  5       [        S5      U5        gg)z*Delete 'Popup' and responding annotations.r   ÚPopupÚAnnotsr   éÿÿÿÿÚParentN)rp  rÅ   r£   r  rá   ÚJM_find_annot_irtÚpdf_delete_annotrI  r  r  r  Úpdf_array_lenrT  Úpdf_array_getrÍ   rŠ  Úpdf_array_deleterV  )r)   rà   r'  r×   Ú	irt_annotÚannotsrJ   Úfoundrh  ÚoÚps              r*   Údelete_responsesÚAnnot.delete_responses  s/  € ä�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü˜uÓ%ˆØÜ)¨%Ó0ˆIÞØÜ×"Ò" 4Ô3ñ	 ô
 	×Ò˜9¤h¨wÓ&7Ô8ä×#Ò# D§H¡H£J´¸Ó0BÓCˆÜ×Ò Ó'ˆØˆÜ�q˜‘s˜B Ö#ˆAÜ×#Ò# FÓ.ˆAÜ×"Ò" 1¤h¨xÓ&8Ó9ˆAØ—<—<ÙÜ×#Ò# A×1Ó1Ü×&Ò& vÔ1Ø’ñ $ö Ü×Ò˜tŸx™x›z¬8°HÓ+=¸vÕFð r,   c                ó   • [        U 5        [        5       nSnSnSnU R                  n[        R                  " U5      n[        R
                  " U5      nU[        R                  :w  a  [        [        5      e[        R                  " U[        S5      [        S5      [        S5      5      nUR                  (       d  [        S[        5        [        R                  " U[        S5      5      n	[        R                  " U	[        S5      5      n
U
R                  (       a  [        R                  " U
5      nOG[        R                  " U	[        S5      5      n
U
R                  (       a  [        R                  " U
5      n[        R                  " U	[        S5      5      n
U
R                  (       a  [        R                  " U
5      n[        R                  " U[        S	5      5      n
U
R                  (       a  [        R                   " U
5      n[        R                  " U[        S
5      [        S5      5      n
U
R                  (       a  [        R                   " U
5      n[#        W5      U[$        '   ['        U5      U[(        '   X![*        '   X1[,        '   U$ )zAttached file information.r¨  NÚFSÚEFÚFúbad PDF: file entry not foundÚUFÚDescÚLengthÚParamsÚSize)rp  r:   rÅ   r£   r  r  rM  Ú	TypeErrorÚMSG_BAD_ANNOT_TYPEr!  r  rÍ   ÚRAISEPYÚJM_Exc_FileDataErrorr  r	  r  ÚJM_EscapeStrFromStrÚdictkey_filenamer
  Údictkey_descrÚdictkey_lengthÚdictkey_size)r)   r&  ÚlengthÚsizeÚdescrà   r'  rc  r	   Úfsr²  rk   s               r*   Ú	file_infoÚAnnot.file_infoš  sÙ  € ô 	�DÔÜ‹fˆØˆØˆØˆØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü×$Ò$ UÓ+ˆØ”E×3Ñ3Ó3ÜÔ/Ó0Ð0Ü×$Ò$ØÜ˜“Ü˜“Ü˜“ó	ˆð × × ÜÐ4Ô6JÔKä×Ò 	¬8°D«>Ó:ˆä×Ò˜r¤8¨D£>Ó2ˆØ�<�<Ü×/Ò/°Ó2‰Hä×"Ò" 2¤x°£}Ó5ˆAØ�|�|Ü ×3Ò3°AÓ6�ä×Ò˜r¤8¨FÓ#3Ó4ˆØ�<�<Ü×+Ò+¨AÓ.ˆDä×Ò˜v¤x°Ó'9Ó:ˆØ�<�<Ü×%Ò% aÓ(ˆFä×Ò ¬°Ó(:¼HÀVÓ<LÓMˆØ�<�<Ü×#Ò# AÓ&ˆDä!4°XÓ!>ˆÔÑÜ/°Ó5ˆŒ]ÑØ%Œ^ÑØ!Œ\ÑØˆ
r,   c                ó\   • [        U 5        U R                  n[        R                  " U5      $ )zFlags field.)rp  rÅ   r£   Úpdf_annot_flagsræ   s     r*   ÚflagsÚAnnot.flagsÌ  s&   € ô 	�DÔØ—	‘	ˆÜ×$Ò$ UÓ+Ð+r,   c                ó¾  • [        U 5        U R                  n[        R                  " U5      n[        R                  " U5      nU[        R
                  :w  a  [        [        5      e[        R                  " U[        S5      [        S5      [        S5      5      nUR                  (       d  [        S[        5        [        R                  " U5      n[        U5      nU$ )zRetrieve attached file content.r·  r¸  r¹  rº  )rp  rÅ   r£   r  r  rM  rÀ  rÁ  r!  r  rÍ   rÂ  rÃ  r#  r$  )r)   rà   r'  rÉ   r	   Úbufr&  s          r*   Úget_fileÚAnnot.get_fileÓ  s¦   € ä�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü×#Ò# EÓ*ˆØ”5×2Ñ2Ó2ÜÔ/Ó0Ð0Ü×$Ò$ Y´¸³ÄÈÃÔPXÐY\ÓP]Ó^ˆØ× × ÜÐ4Ô6JÔKÜ×#Ò# FÓ+ˆÜ˜sÓ#ˆØˆ
r,   c                óò   • [        U 5        SnU R                  n[        R                  " U5      n[        R                  " U[        S5      5      nUR                  (       a  [        R                  " U5      nU$ )z*Get annotation optional content reference.r   ÚOC©rp  rÅ   r£   r  r  r  rÍ   r  )r)   Úocrà   r'  r  s        r*   Úget_ocÚAnnot.get_ocâ  sZ   € ä�DÔØˆØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü× Ò  ¬H°T«NÓ;ˆØ�>�>Ü×!Ò! #Ó&ˆBØˆ	r,   c                ó(  •  [        U S5      nU$ ! [         aw    [        U R                  5      n[	        U[
        R                  5      (       d   eUR                  (       a  [        UR                  5       5      OS n[        X#5      nXl         U$ f = f)Nrí   )rï   ÚAttributeErrorrá   rÅ   rC   r£   rÔ   rÍ   rÂ   r2  rÓ   rí   )r)   rL   r×   rÊ   s       r*   rt  ÚAnnot.get_parentð  s~   € ð	Ü˜4 Ó*ˆCð ˆ
øô ó 	Ü" 4§9¡9Ó-ˆDÜ˜t¤U§]¡]×3Ñ3Ð3Ð3Ø04··”x §¡£Ô,ÀTˆHÜ�tÓ&ˆCà�Kð ˆ
ð	ús   ‚ �A=BÂBc                óÜ  • [        U 5        [        [        [        S.n[	        U5      [
        L a   UR                  UR                  5       S5      nU(       a  [        US-  US-  5      n[        U5      nUnU(       d  [        R                  " 5       n[        R                  " U R                  Xg[        R                  " S5      U5      n[        U5      n	U(       a  U	R!                  X"5        U	$ )zannotation Pixmap)ÚgrayÚrgbÚcmykNéH   r   )rp  ÚcsGRAYÚcsRGBÚcsCMYKrÉ   Ústrr=   Úlowerr€  ÚJM_matrix_from_pyr£   Úfz_device_rgbÚpdf_new_pixmap_from_annotrÅ   ÚFzSeparationsÚPixmapÚset_dpi)
r)   ÚmatrixÚdpiÚ
colorspaceÚalphaÚcspacesÚctmÚcsÚpixrL   s
             r*   Ú
get_pixmapÚAnnot.get_pixmapþ  s¹   € ô 	�DÔÜ!¬%¼Ñ@ˆÜ�
ÓœsÒ"Ø Ÿ™ Z×%5Ñ%5Ó%7¸Ó>ˆJÞÜ˜C "™H c¨B¡hÓ/ˆFÜ Ó'ˆØˆÞÜ×$Ò$Ó&ˆBä×-Ò-¨d¯i©i¸Ä%×BUÒBUÐVWÓBXÐZ_Ó`ˆÜ�S‹kˆÞØ�K‰K˜Ô!Øˆ
r,   c                óâ  • [        U 5        U R                  n[        R                  " U5      n[        R                  " U5      n[        R
                  " U[        S5      5      nU[        R                  :w  d  UR                  (       d  [        [        5      e[        R
                  " U[        S5      5      R                  (       a  [        S[        5        [        5       n[        R
                  " U[        S5      5      nUR                  (       a  [        R                  " U5      US'   [        R
                  " U[        S5      5      nUR                  (       a  [        R                  " U5      US'   [        R
                  " U[        S5      5      nUR                  (       a  [        R                  " U5      US	'   [        R
                  " U[        S
5      5      nUR                  (       a  [        R                   " U5      US'   [        R"                  " US5      nUR                  (       a  [        R                   " U5      US'   [        R$                  " U5      n['        U5      nX…S'   U$ )zRetrieve sound stream.ÚSoundr¹  zunsupported sound streamÚRÚrateÚCÚchannelsÚBÚbpsÚEÚencodingÚCOÚcompressionr	   )rp  rÅ   r£   r  r  r  r  ÚPDF_ANNOT_SOUNDrÍ   rÀ  rÁ  rÂ  rÃ  r:   Úpdf_to_realr  r…  r  r#  r$  )	r)   rà   r'  rÉ   Úsoundr&  r  rÔ  r	   s	            r*   Ú	get_soundÚAnnot.get_sound  s±  € ä�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü×#Ò# EÓ*ˆÜ×"Ò" 9¬h°wÓ.?Ó@ˆØ”5×(Ñ(Ó(°×0@×0@ÜÔ/Ó0Ð0Ü×Ò˜e¤X¨c£]Ó3×>×>ÜÐ/Ô1EÔFÜ‹fˆÜ× Ò  ¬°«Ó6ˆØ�>�>Ü×+Ò+¨CÓ0ˆC�‰KÜ× Ò  ¬°«Ó6ˆØ�>�>Ü#×.Ò.¨sÓ3ˆC�
‰OÜ× Ò  ¬°«Ó6ˆØ�>�>Ü×)Ò)¨#Ó.ˆC�‰JÜ× Ò  ¬°«Ó6ˆØ�>�>Ü#×/Ò/°Ó4ˆC�
‰OÜ×!Ò! %¨Ó.ˆØ�>�>Ü!&×!2Ò!2°3Ó!7ˆC�ÑÜ×#Ò# EÓ*ˆÜ! #Ó&ˆØˆH‰Øˆ
r,   c                ó6   • [         R                  " U /UQ70 UD6$ r.   ©ÚutilsÚget_text©r)   ÚargsÚkwargss      r*   r  ÚAnnot.get_text2  ó   € Ü�~Š~˜dÐ4 TÒ4¨VÑ4Ð4r,   c                ó6   • [         R                  " U /UQ70 UD6$ r.   )r  Úget_textboxr  s      r*   r  ÚAnnot.get_textbox5  s   € Ü× Ò  Ð7¨Ò7°Ñ7Ð7r,   c                ó"  • [        U 5        [        R                  " U5      nU(       ag  [        [        S5      (       d   S[         S35       e[        U5      nUR                  5       Ul        U=R                  [        R                  -  sl        U R                  n[        R                  " XS5      n[        U5      nU R                  5       n[        U[        R                   5      (       a  X‡l        U$ [        R$                  " U5      Ul        U$ )zMake annotation TextPage.ÚFZ_STEXT_CLIP_RECTzMuPDF-z% does not support FZ_STEXT_CLIP_RECT.)rp  r£   ÚFzStextOptionsr@   Úmupdf_versionÚJM_rect_from_pyÚinternalÚcliprÑ  r  rÅ   ÚFzStextPageÚTextPagert  rC   ÚweakrefÚ	ProxyTyperí   Úproxy)	r)   r  rÑ  ÚoptionsÚclip2rà   Ú	stextpagerL   r³  s	            r*   Úget_textpageÚAnnot.get_textpage8  sÑ   € ä�DÔÜ×&Ò& uÓ-ˆÞÜœ5Ð"6×7Ñ7Ðv¸6Ä-ÀÐPuÐ9vÓvÐ7Ü# DÓ)ˆEØ Ÿ>™>Ó+ˆGŒLØ�MŠMœU×5Ñ5Ñ5�MØ—	‘	ˆÜ×%Ò% eÓ5ˆ	Ü�yÓ!ˆØ�O‰OÓˆÜ�aœ×*Ñ*×+Ñ+ØŒJð ˆ
ô !Ÿš qÓ)ˆCŒJØˆ
r,   c                óÂ   • [        U 5        U R                  n[        R                  " [        R                  " U5      [        S5      5      nUR                  (       a  S$ S$ )z Check if annotation has a Popup.r¦  TF)rp  rÅ   r£   r  r  r  rÍ   )r)   rà   r  s      r*   Ú	has_popupÚAnnot.has_popupK  sH   € ô 	�DÔØ—	‘	ˆÜ× Ò ¤×!4Ò!4°UÓ!;¼XÀgÓ=NÓOˆØ—~—~ˆtÐ0¨5Ð0r,   c                ó„  • [        U 5        U R                  n[        5       n[        [        R
                  " U5      5      U[        '   [        R                  " [        R                  " U5      [        S5      5      n[        [        R                  " U5      5      U[        '   [        R                  " [        R                  " U5      [        S5      5      n[        [        R                  " U5      5      U[        '   [        R                  " [        R                  " U5      S5      n[        [        R                  " U5      5      U[        '   [        R                  " [        R                  " U5      [        S5      5      n[        [        R                  " U5      5      U[         '   [        R                  " [        R                  " U5      S5      n[        R                  " U5      U["        '   [        R                  " [        R                  " U5      S5      n[        [        R                  " U5      5      U[$        '   U$ )zVarious information details.ÚNameÚTÚCreationDateÚMÚSubjÚNM)rp  rÅ   r:   r
  r£   Úpdf_annot_contentsÚdictkey_contentr  r  r  r…  Údictkey_namer	  Údictkey_titler  Údictkey_creationDateÚdictkey_modDateÚdictkey_subjectÚ
dictkey_id)r)   rà   r&  r²  s       r*   ÚinfoÚ
Annot.infoS  s—  € ô 	�DÔØ—	‘	ˆÜ‹fˆä0´×1IÒ1IÈ%Ó1PÓQˆŒOÑä×Òœu×2Ò2°5Ó9¼8ÀFÓ;KÓLˆÜ-¬e×.?Ò.?ÀÓ.BÓCˆŒLÑô ×Òœu×2Ò2°5Ó9¼8ÀC»=ÓIˆÜ.¬u×/GÒ/GÈÓ/JÓKˆŒMÑô ×Ò¤× 3Ò 3°EÓ :¸NÓKˆÜ$5´e×6NÒ6NÈqÓ6QÓ$RˆÔ Ñ!ô ×Òœu×2Ò2°5Ó9¼8ÀC»=ÓIˆÜ0´×1IÒ1IÈ!Ó1LÓMˆŒOÑô ×Ò¤× 3Ò 3°EÓ :¸FÓCˆÜ$×7Ò7¸Ó:ˆŒOÑô ×Ò¤× 3Ò 3°EÓ :¸DÓAˆÜ+¬E×,DÒ,DÀQÓ,GÓHˆŒJ‰àˆ
r,   c                óÖ   • U R                   n[        R                  " U5      n[        R                  " U[	        S5      5      nUR
                  (       d  g[        R                  " U5      $ )z
annotation IRT xref
ÚIRTr   )rÅ   r£   r  r  r  rÍ   r  )r)   rà   r'  Úirts       r*   Úirt_xrefÚAnnot.irt_xrefu  sN   € ð
 —	‘	ˆÜ×'Ò'¨Ó/ˆ	Ü× Ò  )¬X°e«_Ó=ˆØ�~�~ØÜ×Ò Ó%Ð%r,   c                óX   • [        U 5        [        R                  " U R                  5      $ )z-Get 'open' status of annotation or its Popup.)rp  r£   Úpdf_annot_is_openrÅ   r0   s    r*   Úis_openÚAnnot.is_open�  s!   € ô 	�DÔÜ×&Ò& t§y¡yÓ1Ð1r,   c                óÊ   • U R                   n[        R                  " U5      nU[        R                  :X  a  g[	        [        S5      (       d   e[        R
                  " U5      $ )zannotation languageNÚfz_string_from_text_language2)rÅ   r£   Úpdf_annot_languageÚFZ_LANG_UNSETr@   rF  )r)   Ú
this_annotÚlangs      r*   ÚlanguageÚAnnot.language‡  sS   € ð —Y‘Yˆ
Ü×'Ò'¨
Ó3ˆØ”5×&Ñ&Ó&ØÜ”uÐ=×>Ñ>Ð>Ð>Ü×2Ò2°4Ó8Ð8r,   c                óÆ   • [        U 5        U R                  n[        R                  " U5      (       d  g[        R                  " U5      n[        R
                  " U5      nX#4$ )zLine end codes.N)rp  rÅ   r£   Ú pdf_annot_has_line_ending_stylesÚpdf_annot_line_start_styleÚpdf_annot_line_end_style)r)   rà   ÚlstartÚlends       r*   Ú	line_endsÚAnnot.line_ends‘  sQ   € ô 	�DÔØ—	‘	ˆä×5Ò5°e×<Ñ<ØÜ×1Ò1°%Ó8ˆÜ×-Ò-¨eÓ4ˆØˆ|Ðr,   c                ó  • [        U 5        U R                  n[        U[        R                  5      (       d   eUR
                  (       d   e[        R                  " U5      nU[        R                  :w  a  [        R                  " U5      nO[        R                  " U5      nUR
                  (       a  [        U5      OSnU(       d  gSUl        UR                  5       R                  R                  5       U R                  5       R                  R                  5       :X  d   eXDR                  R                  [!        U5      '   UR"                  S   [        R                  :X  a!  [%        5       n[&        R)                  XE5        UnU$ )zNext annotation.NTr   )rp  rÅ   rC   r£   rå   rÍ   r  ÚPDF_ANNOT_WIDGETÚpdf_next_annotÚpdf_next_widgetrã   rö   rt  Úm_internal_valuerí   Ú_annot_refsÚidrÉ   ÚWidgetr  Ú_fill_widget)r)   rI  rc  rà   r  Úwidgets         r*   ÚnextÚ
Annot.next�  s  € ô 	�DÔØ—Y‘Yˆ
Ü˜*¤e§n¡n×5Ñ5Ð5Ð5Ø×$×$Ð$Ð$Ü×$Ò$ ZÓ0ˆØ”E×*Ñ*Ó*Ü×(Ò(¨Ó4‰Eä×)Ò)¨*Ó5ˆEà#×.×.Œe�EŒl°DˆÞØØˆŒØ�~‰~Ó×$Ñ$×5Ñ5Ó7¸4¿?¹?Ó;L×;QÑ;Q×;bÑ;bÓ;dÓdÐdÐdØ*-�
‰
×Ñœr #›wÑ'à�8‰8�A‰;œ%×0Ñ0Ó0Ü“XˆFÜ×Ñ˜sÔ+ØˆCØˆ
r,   c                ó  • [        U 5        U R                  nSn[        R                  " [        R                  " U5      [        R
                  5      n[        R                  " U5      (       a  [        R                  " U5      nU$ )zOpacity.r¨  )rp  rÅ   r£   r  r  ÚPDF_ENUM_NAME_CAÚpdf_is_numberr  )r)   rà   Úopyr?  s       r*   r^  ÚAnnot.opacity·  sc   € ô 	�DÔØ—	‘	ˆØˆÜ×Ò¤×!4Ò!4°UÓ!;¼U×=SÑ=SÓTˆÜ×Ò˜r×"Ñ"Ü×#Ò# BÓ'ˆCØˆ
r,   c                óø  • [        U 5        [        R                  " [        R                  R                  5      nU R                  n[        R
                  " U5      n[        R                  " U[        S5      5      nUR                  (       a   [        R                  " U[        S5      5      n[        U5      n[        U5      U R                  5       R                  -  nXPR                  5       R                  -  nU$ )zannotation 'Popup' rectangler¦  r,  )rp  r£   rr  rs  rÅ   r  r  r  rÍ   r3  rq  r,  rt  ru  rv  )r)   rý   rà   r'  r  r  s         r*   Ú
popup_rectÚAnnot.popup_rectÂ  s³   € ô 	�DÔÜ�|Š|œEŸL™L×7Ñ7Ó8ˆØ—	‘	ˆÜ×'Ò'¨Ó/ˆ	Ü× Ò  )¬X°gÓ->Ó?ˆØ�>�>Ü×*Ò*¨3´¸Ó0@ÓAˆDä˜dÓ#ˆô �3‹i˜$Ÿ/™/Ó+×AÑAÑAˆØ�‰Ó ×2Ñ2Ñ2ˆàˆ
r,   c                óò   • [        U 5        SnU R                  n[        R                  " U5      n[        R                  " U[        S5      5      nUR                  (       a  [        R                  " U5      nU$ )zannotation 'Popup' xrefr   r¦  rÙ  )r)   r  rà   r'  r  s        r*   Ú
popup_xrefÚAnnot.popup_xrefÕ  s]   € ô 	�DÔØˆØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü× Ò  ¬H°WÓ,=Ó>ˆØ�>�>Ü×#Ò# CÓ(ˆDØˆr,   c                óð   • [         (       a!  [        R                  " U R                  5      nO [        R
                  " U R                  5      n[        U5      nU R                  5       nXR                  -  nU$ )zannotation rectangle)	r  r   ÚAnnot_rect3rÅ   r£   Úpdf_bound_annotr,  rt  rv  )r)   r  r³  s      r*   rý   Ú
Annot.rectá  s]   € ÷ Š;Ü×#Ò# T§Y¡YÓ/‰Cä×'Ò'¨¯	©	Ó2ˆCÜ�3‹iˆð �O‰OÓˆð 	×"Ñ"Ñ"ˆØˆ
r,   c           	     ó  • [         R                  " U R                  5      n[         R                  " U[	        S5      5      n[         R
                  " U5      S:X  a¬  [         R                  " [         R                  " US5      5      [         R                  " [         R                  " US5      5      [         R                  " [         R                  " US5      5      * [         R                  " [         R                  " US5      5      * 4$ g)z&
annotation delta values to rectangle
ÚRDé   r   r   r   r   N)r£   r  rÅ   r  r  r¬  r  r­  )r)   r'  Úarrs      r*   Ú
rect_deltaÚAnnot.rect_deltaõ  sÂ   € ô
 ×'Ò'¨¯	©	Ó2ˆ	Ü× Ò  )¬X°d«^Ó<ˆÜ×Ò Ó$¨Ó)ä×%Ò%¤u×':Ò':¸CÀÓ'CÓDÜ×%Ò%¤u×':Ò':¸CÀÓ'CÓDÜ×&Ò&¬×(;Ò(;¸SÀ!Ó(DÓEÐEÜ×&Ò&¬×(;Ò(;¸SÀ!Ó(DÓEÐEð	ð ð *r,   c                óò   • [        U 5        U R                  n[        R                  " [        R                  " U5      [        R
                  5      nUR                  (       d  g[        R                  " U5      $ )zannotation rotationr¨  )rp  rÅ   r£   r  r  ÚPDF_ENUM_NAME_RotaterÍ   r  )r)   rà   Úrotations      r*   rx  ÚAnnot.rotation  sU   € ô 	�DÔØ—	‘	ˆÜ×%Ò%¤u×':Ò':¸5Ó'AÄ5×C]ÑC]Ó^ˆØ×"×"ØÜ×Ò Ó*Ð*r,   c                óª  • [        U 5        U R                  5       nUR                  nUR                  nXU) -  -  nU R                  n[
        R                  " U5      n[
        R                  " U[        S5      [        S5      5      nUR                  (       d  [        [        5      e[        U5      n[
        R                  " U[        S5      U5        g)z!
Set annotation appearance bbox.
r  r  r-  N)rp  rt  Úrotation_matrixru  rÅ   r£   r  r!  r  rÍ   rß   r.  r  r4  )	r)   r7  r×   Úrotr�  rà   r'  r(  rý   s	            r*   Úset_apn_bboxÚAnnot.set_apn_bbox  s¤   € ô 	�DÔØ�‰Ó ˆØ×"Ñ"ˆØ×(Ñ(ˆØ�s�d‘
ÑˆØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü× Ò  ¬H°T«N¼HÀS»MÓJˆØ�}�}Ü¤Ó,Ð,Ü˜tÓ$ˆÜ×Ò ¤H¨VÓ$4°dÕ;r,   c                óJ  • [        U 5        U R                  n[        R                  " U5      n[        R                  " U[        S5      [        S5      5      nUR                  (       d  [        [        5      e[        U5      n[        R                  " U[        S5      U5        g)z!Set annotation appearance matrix.r  r  r€  N)rp  rÅ   r£   r  r!  r  rÍ   rß   r.  rê  Úpdf_dict_put_matrix)r)   rð  rà   r'  r(  r�  s         r*   Úset_apn_matrixÚAnnot.set_apn_matrix  sr   € ä�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü× Ò  ¬H°T«N¼HÀS»MÓJˆØ�}�}Ü¤Ó,Ð,Ü Ó'ˆÜ×!Ò! "¤h¨xÓ&8¸#Õ>r,   c                ó    • [        U 5        U R                  n[        R                  " U5      n[        R                  " U[        S5      U5        g)zSet annotation BlendMode.r@  N©rp  rÅ   r£   r  r]  r  )r)   r_  rà   r'  s       r*   Úset_blendmodeÚAnnot.set_blendmode*  s9   € ä�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü×Ò 	¬8°D«>¸:ÕFr,   c                óö  • [        U 5        U R                  SS u  pgU[        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  4;  a  [        SU S35        gU[        R                  [        R                  [        R                  [        R                  4;  a  US:”  a  [        SU S35        Sn[        U5      [        La  X#XES.nUR                  S	S5        UR                  S
S5        UR                  SS5        UR                  SS5        US	   c  SUS	'   US   c  SUS'   [        US   S5      (       a9  [        US   5      US'   US    H  n[        U[         5      (       a  M  SUS'     O   U R"                  n	[        R$                  " U	5      n
[        R&                  " U
5      n[)        XU
5      $ )zZSet border properties.

Either a dict, or direct arguments width, style, dashes or clouds.Nr   zCannot set border for 'ú'.r   zCannot set cloudy border for 'r¨  )ÚwidthÚstyleÚdashesÚcloudsr‰  rŠ  r‹  rŒ  Ú__getitem__)rp  rÉ   r£   rE  rL  rN  rF  rG  rH  rD  rw   r:   Ú
setdefaultr@   r¶   rC   r9   rÅ   r  rœ  ÚJM_annot_set_border)r)   r•  r‰  rŠ  r‹  rŒ  r“  ÚatnamerH   rà   r'  rb  s               r*   Ú
set_borderÚAnnot.set_border1  sÖ  € ô 	�DÔØŸ	™	 " 1˜‰ˆØÜ×&Ñ&Ü×)Ñ)Ü×#Ñ#Ü×$Ñ$Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&ðó ô Ð-¨f¨X°RÐ8Ô9ØØÜ×&Ñ&Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&ð	ó ð ˜‹zÜÐ8¸¸ÀÐCÔDØ�Ü�‹<œtÒ#Ø$ÀÑYˆFØ×Ñ˜' 2Ô&Ø×Ñ˜' 4Ô(Ø×Ñ˜( DÔ)Ø×Ñ˜( BÔ'Ø�'‰?Ñ"Ø ˆF�7‰OØ�(ÑÑ#Ø!ˆF�8ÑÜ�6˜(Ñ# ]×3Ñ3Ü$ V¨HÑ%5Ó6ˆF�8ÑØ˜xÔ(�Ü! $¬×,Ó,Ø'+�F˜8Ñ$Ùñ )ð —	‘	ˆÜ×'Ò'¨Ó/ˆ	Ü×*Ò*¨IÓ6ˆÜ" F°Ó;Ð;r,   c                óv  • U R                   S   [        R                  :X  a  [        S5      e[	        U 5        U R                  5       R                  n[        U5      [        La  X2S.nUR                  S5      nUR                  S5      n[        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4nU/ S4;   a  UR                  U R                   SS5        OhUbe  [#        US
5      (       a  [%        U5      /n['        U5        [)        U5      S;   d   eS[+        U5       S3nUR                  U R                   SU5        U(       a0  U R                   S   U;  a  [-        SU R                   S    S35        g	U/ S4;   a  UR                  U R                   SS5        g	Ubf  [#        US
5      (       a  [%        U5      /n['        U5        [)        U5      S;   d   eS[+        U5       S3nUR                  U R                   SU5        g	g	)zLSet 'stroke' and 'fill' colors.

Use either a dict or the direct arguments.
r   z'cannot be used for FreeText annotations©r  Ústroker  r•  r/   rþ  ú[]NÚ	__float__©r   r   rr  Ú[Ú]z,Warning: fill color ignored for annot type 'r   rˆ  r;  )rÉ   r£   rL  rÄ   rp  rt  rí   r:   r=   rE  rD  rF  rG  rH  r  Úxref_set_keyr  r@   ÚfloatÚ
CheckColorr<   r·   rw   )r)   r  r•  r  r2  Úfill_annotsÚss          r*   Ú
set_colorsÚAnnot.set_colors`  sñ  € ð
 �9‰9�Q‰<œ5×4Ñ4Ó4ÜÐFÓGÐGä�DÔØ�o‰oÓ×&Ñ&ˆÜ�‹<œtÒ#Ø"Ñ5ˆFØ�z‰z˜&Ó!ˆØ—‘˜HÓ%ˆä×-Ñ-¬u×/EÑ/EÄu×G[ÑG[Ô]b×]vÑ]vÔx}÷  yPñ  yPÜ×-Ñ-ð0ˆð �b˜"�XÓØ×Ñ˜TŸY™Y¨¨TÕ2ØÑÜ�v˜{×+Ñ+Ü ›-˜�Ü�vÔÜ�v“; )Ó+Ð+Ð+Ø”I˜fÓ%Ð& aÐ(ˆAØ×Ñ˜TŸY™Y¨¨QÔ/æ�D—I‘I˜a‘L¨Ó3ÜÐBÀ4Ç9Á9ÈQÁ<À.ÐPRÐSÔTØØ�B˜�8ÓØ×Ñ˜TŸY™Y¨¨dÕ3ØÑÜ�t˜[×)Ñ)Ü˜d›�}�Ü�tÔÜ�t“9 	Ó)Ð)Ð)Ø”I˜d“OÐ$ AÐ&ˆAØ×Ñ˜TŸY™Y¨¨aÕ0ð r,   c                ó^   • [        U 5        U R                  n[        R                  " X!5        g)zSet annotation flags.N)rp  rÅ   r£   Úpdf_set_annot_flags)r)   rÑ  rà   s      r*   Ú	set_flagsÚAnnot.set_flags‰  s!   € ä�DÔØ—	‘	ˆÜ×!Ò! %Õ/r,   c                ó>  • [        U 5        [        U5      [        L a\  UR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nSnU R                  n[
        R                  " U5      nU(       a  [
        R                  " Xr5        U(       aÞ  U(       a  [
        R                  " Xs5        U(       a5  [
        R                  " [
        R                  " U5      [        S5      U5        U(       a5  [
        R                  " [
        R                  " U5      [        S5      U5        U(       aA  [
        R                  " [
        R                  " U5      S	[
        R                  " U5      5        ggg)
zSet various properties.ÚcontentNÚtitleÚcreationDateÚmodDateÚsubjectr.  r/  r0  )rp  rÉ   r:   r=   rÅ   r£   Úpdf_annot_has_authorÚpdf_set_annot_contentsÚpdf_set_annot_authorÚpdf_dict_put_text_stringr  r  Úpdf_dict_putsÚpdf_new_text_string)	r)   r:  r§  r¨  r©  rª  r«  rà   Ú	is_markups	            r*   Úset_infoÚAnnot.set_info�  s,  € ä�DÔÜ�‹:œÒØ—h‘h˜y¨$Ó/ˆGØ—H‘H˜W dÓ+ˆEØŸ8™8 N°DÓ9ˆLØ—h‘h˜y¨$Ó/ˆGØ—h‘h˜y¨$Ó/ˆGØˆDØ—	‘	ˆä×.Ò.¨uÓ5ˆ	æÜ×(Ò(¨Ô8ÞæÜ×*Ò*¨5Ô8æÜ×.Ò.¬u×/BÒ/BÀ5Ó/IÌ8ÐTbÓKcÐeqÔræÜ×.Ò.¬u×/BÒ/BÀ5Ó/IÌ8ÐTWË=ÐZaÔbæÜ×#Ò#¤E×$7Ò$7¸Ó$>ÀÌ×HaÒHaÐbiÓHjÕkð ð r,   c                ó$  • U R                   n[        R                  " U5      n[        U5      nUS:  d(  U[        R                  " UR                  5       5      :¼  a  [        [        5      e[        R                  " UR                  5       US5      n[        R                  " U[        S5      5      n[        R                  " [        R                  " U5      5      nUS:  a  [        [        5      e[        R                  " U[        S5      U5        g)z
Set annotation IRT xref
r   r   ÚSubtyper=  N)rÅ   r£   r  rá   Úpdf_xref_lenr2  rÄ   ÚMSG_BAD_XREFÚpdf_new_indirectr  r  Úpdf_annot_type_from_stringr…  ÚMSG_IS_NO_ANNOTrV  )r)   r  rà   r'  r×   r>  ÚsubtÚirt_subts           r*   Úset_irt_xrefÚAnnot.set_irt_xref­  sÅ   € ð —	‘	ˆÜ×'Ò'¨Ó/ˆ	Ü˜uÓ%ˆØ�!‹8�tœu×1Ò1°4·8±8³:Ó>Ó>ÜœlÓ+Ð+Ü×$Ò$ d§h¡h£j°$¸Ó:ˆÜ×!Ò! 3¬°Ó(;Ó<ˆÜ×3Ò3´U×5FÒ5FÈÓ5MÓNˆØ�a‹<ÜœoÓ.Ð.Ü×Ò˜I¤x°£¸Õ<r,   c                óº   • [        U 5        U R                  nU(       d  [        R                  nO[        R                  " U5      n[        R
                  " X#5        g)zSet annotation language.N)rp  rÅ   r£   rH  Úfz_text_language_from_stringÚpdf_set_annot_language)r)   rK  rI  rJ  s       r*   Úset_languageÚAnnot.set_language½  s?   € ä�DÔØ—Y‘Yˆ
ÞÜ×&Ñ&‰Dä×5Ò5°hÓ?ˆDÜ×$Ò$ ZÕ6r,   c                ó®   • [        U 5        U R                  n[        R                  " U5      (       a  [        R                  " X1U5        g[        S5        g)zSet line end codes.zbad annot type for line endsN)rp  rÅ   r£   rN  Ú pdf_set_annot_line_ending_stylesr  )r)   ÚstartÚendrà   s       r*   Úset_line_endsÚAnnot.set_line_endsÇ  s=   € ä�DÔØ—	‘	ˆÜ×1Ò1°%×8Ñ8Ü×2Ò2°5ÀÕEäÐ:Õ;r,   c                ó    • [        U 5        U R                  n[        R                  " U5      n[        R                  " U[        S5      U5        g)zSet /Name (icon) of annotation.r,  Nr„  )r)   r   rà   r'  s       r*   Úset_nameÚAnnot.set_nameÐ  s:   € ä�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü×Ò 	¬8°FÓ+;¸TÕBr,   c                óî   • [        U 5        U R                  n[        R                  " U5      nU(       d!  [        R                  " U[        S5      5        g[        [        R                  " U5      X15        g)z Set / remove annotation OC xref.rØ  N)rp  rÅ   r£   r  rI  r  ÚJM_add_oc_objectrœ  )r)   rÚ  rà   r'  s       r*   Úset_ocÚAnnot.set_oc×  sO   € ä�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	ÞÜ×Ò˜y¬(°4«.Õ9äœU×9Ò9¸)ÓDÀiÕTr,   c                óä   • [        U 5        U R                  n[        USS5      (       d  [        R                  " US5        g[        R                  " X!5        US:  a  [        U5      nSUl        gg)zSet opacity.ç        ç      ð?r   N)rp  rÅ   Ú_INRANGEr£   Úpdf_set_annot_opacityrá   Útransparency)r)   r^  rà   r×   s       r*   Úset_opacityÚAnnot.set_opacityá  sa   € ä�DÔØ—	‘	ˆÜ˜  c×*Ñ*Ü×'Ò'¨¨qÔ1ØÜ×#Ò# EÔ3Ø�S‹=Ü" 5Ó)ˆDØ !ˆDÕð r,   c                ó^   • [        U 5        U R                  n[        R                  " X!5        g)z-Set 'open' status of annotation or its Popup.N)rp  rÅ   r£   Úpdf_set_annot_is_open)r)   rC  rà   s      r*   Úset_openÚAnnot.set_opení  s!   € ä�DÔØ—	‘	ˆÜ×#Ò# EÕ3r,   c                óÊ   • [        U 5        U R                  n[        U5      n[        U5      n[        R
                  " [        U5      U5      n[        R                  " X%5        g)z0
Create annotation 'Popup' or update rectangle.
N)rp  rÅ   rá   ÚJM_rotate_page_matrixr£   Úfz_transform_rectr  Úpdf_set_annot_popup)r)   rý   rà   Úpdfpager|  r%  s         r*   Ú	set_popupÚAnnot.set_popupó  sN   € ô 	�DÔØ—	‘	ˆÜ! %Ó(ˆÜ# GÓ,ˆÜ×#Ò#¤O°DÓ$9¸3Ó?ˆÜ×!Ò! %Õ+r,   c                ó   • [        U 5        U R                  n[        U5      n[        U5      n[        R
                  " [        U5      U5      n[        R                  " U5      (       d  [        R                  " U5      (       a  [        [        5      e [        R                  " X%5        g! [         a  n[        SU 35         SnAgSnAff = f)zSet annotation rectangle.zcannot set rect: NF)rp  rÅ   rá   rß  r£   rà  r  Úfz_is_empty_rectÚfz_is_infinite_rectrÄ   ÚMSG_BAD_RECTÚpdf_set_annot_rectrl   rw   )r)   rý   rà   râ  r|  r%  ri  s          r*   Úset_rectÚAnnot.set_rectþ  s    € ä�DÔØ—	‘	ˆä! %Ó(ˆÜ# GÓ,ˆÜ×#Ò#¤O°DÓ$9¸3Ó?ˆÜ×!Ò! !×$Ñ$¬×(AÒ(AÀ!×(DÑ(DÜœlÓ+Ð+ð	Ü×$Ò$ UÕ.øÜó 	ÜÐ'¨ sÐ+Ô,Üûð	ús   ÂB+ Â+
CÂ5CÃCc                ó²  • [        U 5        U R                  n[        R                  " U5      nU[        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4;  a  gUnUS:  a  US-  nUS:  a  M  US:¼  a  US-  nUS:¼  a  M  U[        R                  :X  a  US-  S:w  a  Sn[        R                  " U5      n[        R                   " U[#        S5      U5        g)zSet annotation rotation.Nr   éh  éZ   r<  )rp  rÅ   r£   r  rK  rE  rL  rM  rN  rF  rG  rH  rD  rO  rP  r  rQ  r  )r)   ra  rà   rÉ   r|  r'  s         r*   Úset_rotationÚAnnot.set_rotation  s  € ä�DÔà—	‘	ˆÜ×#Ò# EÓ*ˆØÜ×%Ñ%Ü×&Ñ&Ü×)Ñ)Ü×/Ñ/Ü×#Ñ#Ü×$Ñ$Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&Ü×%Ñ%Ü×$Ñ$ðó ð ØˆØ�A‹gØ�3‰JˆCð �A�gà�S‹jØ�3‰JˆCð �S�jà”5×,Ñ,Ó,°°r±¸Q³ØˆCÜ×'Ò'¨Ó.ˆ	Ü×Ò˜y¬(°8Ó*<¸cÕBr,   c                ó¸  • [        U 5        U R                  R                  (       d  g[        R                  " U R                  5      n[        R
                  " U5      n[        R                  " [        R                  " U R                  5      S5      nUR                  (       a  [        R                  " U5      (       a  X4$ [        R                  " U5      nXU4$ )zannotation typeÚnullÚIT)
rp  rÅ   rÍ   r£   r  Úpdf_string_from_annot_typer  r  Úpdf_is_namer…  )r)   rc  Úcr²  Úits        r*   rÉ   Ú
Annot.type,  sš   € ô 	�DÔØ�y‰y×#×#ØÜ×$Ò$ T§Y¡YÓ/ˆÜ×,Ò,¨UÓ3ˆÜ×Ò¤×!4Ò!4°T·Y±YÓ!?ÀÓFˆØ�|�|œu×0Ò0°×3Ñ3Ø�:ÐÜ×Ò˜qÓ!ˆØ˜"ˆ~Ðr,   c
                óÌ  • [         R                  " U R                  5      n
U(       a2  [         R                  " U
[	        S5      5      nU(       d  [        S5      e[        R                  5         [        U 5        S nU R                  S   nU R                  R                  SS5      nU R                  R                  SS5      nU R                  S	   nUb  UnOU R                  S
   nSnU R                  nU	S:w  aE  U	S:  a  U	S-  n	U	S:  a  M  U	S:¼  a  U	S-  n	U	S:¼  a  M  U[         R                  :X  a  U	S-  S:w  a  Sn	Uc  U R                  n[!        US5      (       d  U R"                  nSUs=::  a  S:  d	  O  U(       a  SnOSnU[         R                  :X  ak  [%        U5        [%        U5        [&        R)                  U 5      u  nnnUS::  a  SnU(       a  UnU(       a  UnUS:”  a  Un[+        U [-        U5      UUU5        SnU R/                  UUUU	S9nUSL a  [1        S5      eU[         R                  :X  aK  U R3                  5       nSUs=::  a  S:  a-  O  gUR5                  S5      (       d  U R7                  SU-   5        gU" US5      nU" US5      nU R9                  5       R:                  nU) nU(       a7  SSR=                  [?        [@        U5      5      -   S-   nURC                  S5      nOSnU RD                  (       a  U RD                  u  nn OSu  nn U R3                  5       nURG                  5       n!Sn"U[         RH                  :X  Ga  U(       au  Sn"U!SS n!U!u  n#n$n%n&n'U!RK                  U%5        U!RK                  U$5        U!RK                  U&5        U!RK                  U$5        U!RK                  U'5        U!RK                  S5        US:”  d  US :w  a|  Sn"US:”  a  [M        U5      RC                  5       S!-   /O/ n(U! HM  n)U)RO                  S"5      (       a  M  U)RO                  S#5      (       a  US :w  a  USS n)U(RK                  U)5        MO     U(n!S$R=                  U!5      nU[         RP                  [         RR                  4;   a‰  S$R=                  U!SS 5      S$-   nSn"US :w  a7  U[         RP                  :X  a	  UU-   S%-   nOMU[         RR                  :X  a  US-   nO3U[         RP                  :X  a  US&-   nOU[         RR                  :X  a  US-   nUb  UU-   nURU                  S'S(S5      nSn"U(       a  URC                  S5      U-   nSn"S)U-   S*-   nUU -   S:”  Ga—  U[         RP                  [         RR                  4;   Gar  S[&        RV                  [&        RX                  [&        RZ                  [&        R\                  [&        R^                  [&        R`                  [&        Rb                  [&        Rd                  [&        Rf                  4
n*[i        S[-        U*5      5      n+S+[k        SU R                  S   5      -  n,U Rl                  U,* U,* U,U,4-   nSn"U Rn                  n-UU+;   aD  [q        U-S   5      U-  n.[q        U-S   5      U-  n/U*U   " U U.U/SU5      n0UU0RC                  5       -  nU U+;   aD  [q        U-S,   5      U-  n.[q        U-S   5      U-  n/U*U    " U U.U/SU5      n0UU0RC                  5       -  nU"(       a9  U(       a"  U Rs                  U5        U R7                  USS-9  OU R7                  USS-9  U[         Rt                  [         Rv                  [         Rx                  [         Rz                  [         R|                  [         RR                  [         RP                  [         R~                  [         R€                  [         R‚                  4
;  a  gU R„                  n1U1S:X  a  gU Rl                  R†                  U Rl                  Rˆ                  -   S+-  n2U1S:X  aq  [‹        U[�        SS5      -
  5      S.:  a  gU Rl                  R�                  U2U) 5      n3U R‘                  U3Rl                  5        U R“                  [�        SS5      5        g[�        U15      n4U Rl                  R�                  U2U45      n3U Rs                  U3Rl                  5        U R“                  UU4-  5        g)/aª  Update annot appearance.

Notes:
    Depending on the annot type, some parameters make no sense,
    while others are only available in this method to achieve the
    desired result. This is especially true for 'FreeText' annots.
Args:
    blend_mode: set the blend mode, all annotations.
    opacity: set the opacity, all annotations.
    fontsize: set fontsize, 'FreeText' only.
    fontname: set the font, 'FreeText' only.
    border_color: set border color, 'FreeText' only.
    text_color: set text color, 'FreeText' only.
    fill_color: set fill color, all annotations.
    cross_out: draw diagonal lines, 'Redact' only.
    rotate: set rotation, 'FreeText' and some others.
ÚRCú-cannot set border_color if rich_text is Falsec                óN   • [        X5      nU(       d  gUS-   R                  5       $ )zHReturn valid PDF color operator for a given color sequence.
            r,   r&   )Ú	ColorCodeÚencode)rö  ÚcodeÚccs      r*   Úcolor_stringÚ"Annot.update.<locals>.color_string^  s'   € ô ˜2Ó$ˆBÞØØ˜‘I×%Ñ%Ó'Ð'r,   r   r‹  Nr‰  r¨  r•  r  rí  rî  r—  r   ú/H gs
ra   é   )r^  r_  r`  ra  FzError updating annotation.s   /H gss   /H gs
Úfrö  r™  r´   z] 0 d
úutf-8©r   r   Tó   Sr,   s    wó   ws   RGó   
ó   bó   ss   
S
s
   
S
[] 0 d
ó   q
s   
Q
r   éþÿÿÿ©rý   çñhãˆµøä>)Jr£   r  rÅ   r  r  rÄ   rã   Úupdate_timing_testrp  rÉ   r•  r=   r  r‚  rL  r�  r@   r^  r�  r  r  ÚJM_make_annot_DAr<   rm  rß   r)  r8   r8  rt  ru  ÚjoinÚmaprè  rþ  rS  Ú
splitlinesr  rp   r·   ÚendswithrH  rG  ÚreplaceÚ
_le_squareÚ
_le_circleÚ_le_diamondÚ_le_openarrowÚ_le_closedarrowÚ_le_buttÚ_le_ropenarrowÚ_le_rclosedarrowÚ	_le_slashrT  Úmaxrý   ÚverticesÚPointrê  rK  rE  rM  rN  rF  rD  rO  rP  rx  ÚtlÚbrÚabsr€  ÚmorphÚsetRectr�  )5r)   r_  r^  r   rÿ   rþ   Úborder_colorr`  Ú	cross_outra  r'  Úis_rich_textr  Ú
annot_typeÚdtÚbwidthr•  r  rý   ÚapnmatÚopa_codeÚtcolÚfnameÚfsizer  r(  ÚbfillÚbstrokeÚp_ctmÚimatr‹  Úline_end_leÚline_end_riÚap_tabÚ
ap_updatedÚ_ÚLLÚLRÚURÚULÚntabrt   Úle_funcsÚle_funcs_rangeÚdÚpointsÚp1Úp2Úleftr|  r/  Úquadr�  s5                                                        r*   ÚupdateÚAnnot.update:  sÛ  € ô8 ×'Ò'¨¯	©	Ó2ˆ	æÜ ×-Ò-¨i¼À$»ÓHˆLÞÜ Ð!PÓQÐQÜ× Ñ Ô"Ü�DÔò	(ð —Y‘Y˜q‘\ˆ
à�[‰[�_‰_˜X tÓ,ˆØ—‘—‘ ¨"Ó-ˆØ—‘˜XÑ&ˆØÑ!Ø‰Dà—;‘;˜vÑ&ˆDØˆØ—‘ˆØ�R‹<Ø˜1“*Ø˜#‘�ð ˜1•*à˜C“-Ø˜#‘�ð ˜C•-àœU×6Ñ6Ó6¸6ÀB¹;È!Ó;KØ�ð
 ÑØŸ™ˆJÜ�w ×,Ñ,Ø—l‘lˆGà�Õ˜!ÕžzØ ‰HàˆHàœ×2Ñ2Ó2Ü�zÔ"Ü�zÔ"Ü!&§¡°Ó!6ÑˆD�%˜ð ˜‹zØ�ÞØ!�ÞØ �Ø˜!‹|Ø �Ü˜T¤3 t£9¨d°E¸5ÔAØˆJð
 ×%Ñ%ØØ!ØØð	 &ð 
ˆð �%Š<ÜÐ;Ó<Ð<àœ×2Ñ2Ó2à—‘“ˆBØ�GÕ˜aÕàð )+¯©°h×(?Ñ(?Ø—‘˜J¨™OÔ,Øá˜T 3Ó'ˆÙ˜v sÓ+ˆà—‘Ó!×7Ñ7ˆØˆvˆæØ˜3Ÿ8™8¤C¬¨R£LÓ1Ñ1°IÑ=ˆFØ—]‘] 7Ó+‰FàˆFà�>�>Ø'+§~¡~Ñ$ˆK™à'+Ñ$ˆK˜ð �[‰[‹]ˆØ—‘“ˆØˆ
àœ×/Ñ/Ô/ÞØ!�
Ø  ˜�Ø$*Ñ!��2�r˜2˜rØ—‘˜bÔ!Ø—‘˜bÔ!Ø—‘˜bÔ!Ø—‘˜bÔ!Ø—‘˜bÔ!Ø—‘˜dÔ#à˜‹z˜W¨›^Ø!�
Ø?EÈ»zœ	 &Ó)×0Ñ0Ó2°UÑ:Ñ;Èr�Û"�DØ—}‘} T×*Ñ*Ù Ø—}‘} U×+Ñ+°¸3³Ø& s¨˜|˜Ø—K‘K Ö%ñ #ð �à—‘˜FÓ#ˆBàœ%×1Ñ1´5×3LÑ3LÐMÓMØ—‘˜F 3 B˜KÓ(¨5Ñ0ˆBØˆJØ˜‹|Ø¤×!8Ñ!8Ó8Ø˜e™ dÑ*‘BØ¤5×#<Ñ#<Ó<Ø˜d™�Bøà¤×!8Ñ!8Ó8Ø˜d™‘BØ¤5×#<Ñ#<Ó<Ø˜d™�BàÑØ˜"‘ˆBà—‘˜HÐ&6¸Ó:ˆBØˆJæØ—‘ Ó)¨BÑ.ˆBØˆJà�b‰[˜8Ñ#ˆð ˜Ñ$ qÔ(¨Z¼E×<SÑ<SÔUZ×UnÑUnÐ;oÔ-oàœe×.Ñ.´×0@Ñ0@Ü×)Ñ)¬5×+>Ñ+>Ü×-Ñ-¬u¯~©~Ü×,Ñ,¬e×.DÑ.DÜŸ™ð	)ˆHô
 # 1¤c¨(£mÓ4ˆNØ”C˜˜4Ÿ;™; wÑ/Ó0Ñ0ˆAØ—9‘9   Q B¨¨1˜~Ñ-ˆDØˆJØ—]‘]ˆFØ˜nÓ,Ü˜6 !™9Ó%¨Ñ,�Ü˜6 !™9Ó%¨Ñ,�Ø Ò,¨T°2°r¸5À*ÓM�Ø�d—k‘k“mÑ#�Ø˜nÓ,Ü˜6 "™:Ó&¨Ñ-�Ü˜6 "™:Ó&¨Ñ-�Ø Ò,¨T°2°r¸4ÀÓL�Ø�d—k‘k“mÑ#�æÞØ—‘˜dÔ#Ø—‘˜B Q�Ò'à—‘˜B Q�Ñ'ð
 Ü×%Ñ%Ü×&Ñ&Ü×/Ñ/Ü×#Ñ#Ü×$Ñ$Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&Ü×%Ñ%Ü×$Ñ$ðó ð à�m‰mˆØ�"‹9Øà�Y‰Y�\‰\˜DŸI™IŸL™LÑ(¨AÑ-ˆà�!‹8Ü�6œF 1 a›LÑ(Ó)¨DÓ0ØØ—9‘9—?‘? 1 v gÓ.ˆDØ�L‰L˜Ÿ™Ô#Ø×Ñ¤ q¨!£Ô-Øä�S‹kˆØ�y‰y�‰˜q #Ó&ˆØ�‰�d—i‘iÔ Ø×Ñ˜F S™LÕ)r,   c                óâ  • [        U 5        U R                  n[        R                  " U5      n[        R                  " U5      n[        R
                  " U5      nU[        R                  :w  a  [        [        5      e[        R                  " U[        S5      [        S5      [        S5      5      n	U	R                  (       d  [        S[        5        [        R                  " U[        S5      5      n
[        U5      nU(       a   UR                  (       d  [!        ["        5      eU(       a†  [%        XyUS5        [        R&                  " U5      u  pÍ[        R(                  " U5      n[        R*                  " U	[        S5      U5        [        R,                  " Xž[        S5      [        S5      5        U(       a¥  [        R.                  " U	[        S5      U5        [        R.                  " U
[        S5      U5        [        R.                  " U	[        S	5      U5        [        R.                  " U
[        S	5      U5        [        R.                  " U[        S
5      U5        U(       aB  [        R.                  " U	[        S	5      U5        [        R.                  " U
[        S	5      U5        U(       aC  [        R.                  " U	[        S5      U5        [        R.                  " U
[        S5      U5        gg)zUpdate attached file.r·  r¸  r¹  úbad PDF: no /EF objectr   ÚDLr¾  r¿  r»  ÚContentsr¼  N)rp  rÅ   r£   r  rœ  r  rM  rÀ  rÁ  r!  r  rÍ   rÂ  rÃ  r  r/  rÄ   r0  r1  Úfz_buffer_storageÚpdf_new_intrV  Úpdf_dict_putlr¯  )r)   r5  rk   Ú	ufilenamerË  rà   r'  rb  rÉ   r	   rÌ  r&  r<   r<  Úls                  r*   Úupdate_fileÚAnnot.update_file7  s  € ä�DÔØ—	‘	ˆÜ×'Ò'¨Ó.ˆ	Ü×*Ò*¨9Ó5ˆÜ×#Ò# EÓ*ˆØ”5×2Ñ2Ó2ÜÔ/Ó0Ð0Ü×$Ò$ Y´¸³ÄÈÃÔPXÐY\ÓP]Ó^ˆà× × ÜÐ-Ô/CÔDä×Ò 	¬8°D«>Ó:ˆô ! Ó)ˆÞ˜3Ÿ>Ÿ>ÜœnÓ-Ð-ÞÜ˜S¨#¨qÔ1ä×,Ò,¨SÓ1‰FˆCÜ×!Ò! #Ó&ˆAÜ×Ò˜v¤x°£~°qÔ9Ü×Ò ¬8°HÓ+=¼xÈÓ?OÔPæÜ×*Ò*¨6´8¸C³=À(ÔKÜ×*Ò*¨2¬x¸«}¸hÔGÜ×*Ò*¨6´8¸D³>À8ÔLÜ×*Ò*¨2¬x¸«~¸xÔHÜ×*Ò*¨9´h¸zÓ6JÈHÔUæÜ×*Ò*¨6´8¸D³>À9ÔMÜ×*Ò*¨2¬x¸«~¸yÔIæÜ×*Ò*¨6´8¸FÓ3CÀTÔJÜ×*Ò*¨2¬x¸Ó/?ÀÕFð r,   c                 ó6   • Sn [        S5       H  nX-  n M	     U $ )Nr   i0u  )rT  )Útotalrh  s     r*   r  ÚAnnot.update_timing_testb  s!   € àˆÜ˜–ˆAØ‰JŠEñ !àˆr,   c           	     ó:  • [        U 5        U R                  n[        U[        R                  5      (       d   e[        R
                  " U5      n[        U5      n[        R                  " 5       n[        R                  " 5       n[        R                  " X5U5        [        U5      n[        R                  " XF5      n[        R                  " U[        S5      5      nUR                  (       d   [        R                  " U[        S5      5      nUR                  (       d   [        R                  " U[        S5      5      nUR                  (       d  [        R                  " US5      nUR                  (       aÖ  / n[!        S[        R"                  " U5      S5       H­  n	[        R$                  " [        R&                  " Xy5      5      n
[        R$                  " [        R&                  " XyS-   5      5      n[        R(                  " X«5      n[        R*                  " XÄ5      nUR-                  UR.                  UR0                  45        M¯     U$ [        R                  " US5      nUR                  (       Ga&  / n[!        [        R"                  " U5      5       Hÿ  n	/ n[        R&                  " Xy5      n[!        S[        R"                  " U5      S5       H­  n[        R$                  " [        R&                  " Xï5      5      n
[        R$                  " [        R&                  " XïS-   5      5      n[        R(                  " X«5      n[        R*                  " XÄ5      nUR-                  UR.                  UR0                  45        M¯     UR-                  U5        GM     U$ g	)
zannotation vertex pointsÚVerticesÚLÚ
QuadPointsÚCLr   r   r   ÚInkListN)rp  rÅ   rC   r£   rå   r  rá   r}  rr  Úpdf_page_transformÚJM_derotate_page_matrixÚ	fz_concatr  r  rÍ   r  rT  r¬  r  r­  ÚFzPointÚfz_transform_pointrp   ÚxÚy)r)   rà   r'  r×   Úpage_ctmÚdummyÚderotr²  r&  rh  re  rf  ÚpointÚres1Úo1r�  s                   r*   r"  ÚAnnot.verticesi  s�  € ô 	�DÔØ—	‘	ˆÜ˜%¤§¡×0Ñ0Ð0Ð0Ü×'Ò'¨Ó.ˆ	Ü˜uÓ%ˆÜ—>’>Ó#ˆÜ—’“ˆÜ× Ò  ¨hÔ7Ü'¨Ó-ˆÜ—?’? 8Ó3ˆô ×Ò˜y¬(°:Ó*>Ó?ˆØ�|�|¤E×$6Ò$6°yÄ(È3Ã-Ó$P Ø�|�|¤E×$6Ò$6°yÄ(È<ÓBXÓ$Y Ø�|�|¤E×$7Ò$7¸	À4Ó$H à�<�<ð ˆCÜ˜1œe×1Ò1°!Ó4°aÖ8�Ü×%Ò%¤e×&9Ò&9¸!Ó&?Ó@�Ü×%Ò%¤e×&9Ò&9¸!¸q¹SÓ&AÓB�ÜŸš aÓ+�Ü×0Ò0°ÓA�Ø—
‘
˜UŸW™W e§g¡gÐ.Ö/ñ 9ð ˆJä×Ò 	¨9Ó5ˆØ�<�<ˆ<ð ˆCÜœ5×.Ò.¨qÓ1Ö2�Ø�Ü×(Ò(¨Ó.�Ü˜q¤%×"5Ò"5°bÓ"9¸1Ö=�AÜ×)Ò)¬%×*=Ò*=¸bÓ*DÓE�AÜ×)Ò)¬%×*=Ò*=¸bÀAÁ#Ó*FÓG�AÜ!ŸMšM¨!Ó/�EÜ!×4Ò4°UÓE�EØ—K‘K %§'¡'¨5¯7©7Ð!3Ö4ñ >ð —
‘
˜4× ñ 3ð ˆJð r,   c                ó„   • [        U 5        U R                  n[        R                  " [        R                  " U5      5      $ )zannotation xref number)rp  rÅ   r£   r  r  ræ   s     r*   r  Ú
Annot.xrefŸ  s1   € ô 	�DÔØ—	‘	ˆÜ×Ò¤× 3Ò 3°EÓ :Ó;Ð;r,   ©rí   rÅ   rö   ©r   )r¨  NNr¨  ©r   )NNNr   rŒ   )Nr¨  NNr¨  ©NNN©NNNNNNr.   )	NNr   NNNNTr¨  )r_  ÚOptStrr^  ÚOptFloatr   rœ  rÿ   ru  rþ   ÚOptSeqr)  rw  r`  rw  r*  ré   ra  r9   ©NNNN)Er2   r3   r4   r5   r‘   rê   rð   ró   r÷   r  r)  r8  rm  Úpropertyrw  r‚  r�  r•  r   r  r´  rÍ  rÑ  rÕ  rÛ  rt  rø  r	  r  r  r&  r)  r:  r?  rC  rK  rS  r_  r^  rg  rj  rý   rt  rx  r}  r�  r…  r‘  r   r¤  r³  r¾  rÃ  rÉ  rÌ  rÐ  rØ  rÜ  rã  rê  rï  rÉ   rJ  rU  Ústaticmethodr  r"  r  r6   r/   r,   r*   rã   rã   J  s/  † òòò:òò!ò%òNô&9ô(aðF ñó ðð  ñó ðð. ñó ðð> ñó ðô$=ð ñ	ó ð	òGð6 ñ/ó ð/ðb ñ,ó ð,òò	òôò(ò@5ò8ôð& ñ1ó ð1ð ñó ððB ñ	&ó ð	&ð ñ2ó ð2ð
 ñ9ó ð9ð ñ	ó ð	ð ñó ðð2 ñó ðð ñó ðð$ ñ	ó ð	ð ñó ðð& ñó ðð ñ+ó ð+ò<ò"	?òGô-<ô^'1òR0ôlò<=ô 7ò<òCôUò
"ò4ò	,òô Cð< ñó ðð !%Ø#ØØ"Ø $Ø"&Ø $Ø!Øð{*Øð{*àð{*ð ð{*ð ð	{*ð
 ð{*ð !ð{*ð ð{*ð ð{*ð õ{*ôz)GðV ñó ðð ñ3ó ð3ðj ñ<ó ó<r,   rã   c                  óx   • \ rS rSrS rS rSS jrSS jrSS jrSS jr	SS	 jr
SS
 jr\S 5       rS rS rSrg)ÚArchivei§  c                ó„   • [        5       U l        [        R                  " 5       U l        U(       a  U R
                  " U6   gg)zÅ
Archive(dirname [, path]) - from folder
Archive(file [, path]) - from file name or object
Archive(data, name) - from memory item
Archive() - empty archive
Archive(archive [, path]) - from archive
N)rµ   Ú_subarchivesr£   Úfz_new_multi_archiverÅ   Úadd©r)   r  s     r*   r‘   ÚArchive.__init__¨  s2   € ô !›FˆÔÜ×.Ò.Ó0ˆŒ	ÞØ�HŠH�tÒð r,   c                ó2   • S[        U R                  5       3$ )NzArchive, sub-archives: )r<   r~  r0   s    r*   rð   ÚArchive.__repr__µ  s   € Ø(¬¨T×->Ñ->Ó)?Ð(@ÐAÐAr,   Nc                óF   • [         R                  " U R                  X5        g r.   )r£   Úfz_mount_multi_archiverÅ   )r)   Úsubarchr
   s      r*   Ú	_add_archÚArchive._add_arch¸  s   € Ü×$Ò$ d§i¡i°Õ?r,   c                ór   • [         R                  " U5      n[         R                  " U R                  X25        g r.   )r£   Úfz_open_directoryr†  rÅ   )r)   Úfolderr
   Úsubs       r*   Ú_add_dirÚArchive._add_dir»  s&   € Ü×%Ò% vÓ.ˆÜ×$Ò$ d§i¡i°Õ;r,   c                óÜ   • [        U5      n[        R                  " [        R                  " 5       5      n[        R                  " XRU5        [        R
                  " U R                  XS5        g r.   )r/  r£   Úfz_new_tree_archiveÚFzTreeÚfz_tree_archive_add_bufferr†  rÅ   )r)   Úmemoryr   r
   Úbuffr�  s         r*   Ú_add_treeitemÚArchive._add_treeitem¿  sF   € Ü! 6Ó*ˆÜ×'Ò'¬¯ª«Ó8ˆÜ×(Ò(¨#°TÔ:Ü×$Ò$ d§i¡i°Õ;r,   c                ó¬   • US:X  a  [         R                  " U5      nO[         R                  " U5      n[         R                  " U R                  XC5        g ©Nr   )r£   Úfz_open_zip_archiveÚfz_open_tar_archiver†  rÅ   )r)   Úfilepathrc  r
   r�  s        r*   Ú_add_ziptarfileÚArchive._add_ziptarfileÅ  s=   € Ø�A‹:Ü×+Ò+¨XÓ6‰Cä×+Ò+¨XÓ6ˆCÜ×$Ò$ d§i¡i°Õ;r,   c                óî   • [        U5      n[        R                  " U5      nUS:X  a  [        R                  " U5      nO[        R                  " U5      n[        R
                  " U R                  Xc5        g r™  )r/  r£   Úfz_open_bufferÚfz_open_zip_archive_with_streamÚfz_open_tar_archive_with_streamr†  rÅ   )r)   r”  rc  r
   r•  r	   r�  s          r*   Ú_add_ziptarmemoryÚArchive._add_ziptarmemoryÌ  sW   € Ü! 6Ó*ˆÜ×%Ò% tÓ,ˆØ�!‹8Ü×7Ò7¸Ó@‰Cä×7Ò7¸Ó@ˆCÜ×$Ò$ d§i¡i°Õ;r,   c                óè  ^ • S nU 4S jn[        U[        R                  5      (       a  [        U5      n[        U[        5      (       aú  [        R
                  R                  U5      (       a/  T R                  X5        U" [        R                  " U5      US5      $ [        R
                  R                  U5      (       at  [        U[        5      (       a  US:w  d   SU< S35       e[        R                  " US5       nUR                  5       nSSS5        T R                  WU5        U" U/SS	5      $ [        S
U< 35      eU" U5      (       a>  [        U[        5      (       a  USU< S3:w  d   eT R                  X5        U" U/SS	5      $ [        U[        R                   5      (       ai  [#        USS5      nUc.  UR$                  R'                  5       nT R)                  USU5        OT R+                  USU5        U" UR-                  5       US5      $ [        U[.        R0                  5      (       až  [#        UR2                  SS5      nUcY  UR2                  n[        U[        R4                  5      (       d  UR2                  nT R)                  UR'                  5       SU5        OT R+                  USU5        U" UR7                  5       US5      $ [        U[8        5      (       a  T R;                  X5        U" / US5      $ [        U[<        5      (       aô  [?        U5      S:X  aå  Uu  pš[        U
[        5      (       d   S[A        U
5      < 35       eU" U	5      (       a  T R                  XšUS9  O�[        U	[        5      (       ae  [        R
                  R                  U	5      (       a@  [        R                  " U	S5       nUR                  5       nSSS5        T R                  WX¢S9  O S[A        U	5      < S35       eU" U
/US	5      $ [C        US5      (       a  U H  nT RE                  X²5        M     g[G        S[A        U5       S35      e! , (       d  f       GNH= f! , (       d  f       N•= f)a9  
Add a sub-archive.

Args:
    content:
        The content to be added. May be one of:
            `str` - must be path of directory or file.
            `bytes`, `bytearray`, `io.BytesIO` - raw data.
            `zipfile.Zipfile`.
            `tarfile.TarFile`.
            `pymupdf.Archive`.
            A two-item tuple `(data, name)`.
            List or tuple (but not tuple with length 2) of the above.
    path: (str) a "virtual" path name, under which the elements
        of content can be retrieved. Use it to e.g. cope with
        duplicate element names.
c                óL   • [        U [        [        [        R                  45      $ r.   )rC   r   Ú	bytearrayr>   ÚBytesIO©re  s    r*   Úis_binary_dataÚ#Archive.add.<locals>.is_binary_dataç  s   € Ü˜a¤%¬´B·J±JÐ!?Ó@Ð@r,   c                óJ  >• [        X US9nUS:w  d  TR                  / :X  a  TR                  R                  U5        g TR                  S   nUS   S:w  d  US   US   :w  a  TR                  R                  U5        g US   R                  US   5        UTR                  S'   g )N)r²   Úentriesr
   Útreer¨  r²   r
   r­  )r:   r~  rp   Úextend)r­  Úmountr²   r‡  Últreer)   s        €r*   Úmake_subarchÚ!Archive.add.<locals>.make_subarchê  sž   ø€ Ü˜s¸%Ñ@ˆGØ�f‹} × 1Ñ 1°RÓ 7Ø×!Ñ!×(Ñ(¨Õ1à×)Ñ)¨"Ñ-�Ø˜‘< 6Ó)¨U°6©]¸gÀf¹oÓ-MØ×%Ñ%×,Ñ,¨WÕ5à˜)Ñ$×+Ñ+¨G°IÑ,>Ô?Ø,1�D×%Ñ% bÒ)r,   Údirra   z'Need name for binary content, but path=r   ÚrbNr®  zNot a file or directory: rk   r   Úzipr   r   ÚtarÚmultir   zUnexpected type(name)=)r
   zUnexpected type(data)=r�  zUnrecognised type )$rC   ÚpathlibÚPathrè  ri   r
   ÚisdirrŽ  ÚlistdirÚisfiler>   r?   Úreadr–  rÄ   ÚzipfileÚZipFilerï   ÚfpÚgetvaluer£  r�  ÚnamelistÚtarfileÚTarFileÚfileobjr¨  Úgetnamesr|  rˆ  r¶   r<   rÉ   r@   r€  rÀ  )r)   r§  r
   rª  r²  r  Úffrk   rÁ  Údatar   rH   s   `           r*   r€  ÚArchive.addÕ  s¼  ø€ ò$	Aõ
	2ô �gœwŸ|™|×,Ñ,Ü˜'“lˆGä�gœs×#Ñ#Ü�w‰w�}‰}˜W×%Ñ%Ø—‘˜gÔ,Ù#¤B§J¢J¨wÓ$7¸¸uÓEÐEÜ—‘—‘ ×(Ñ(Ü! $¬×,Ñ,°¸³ð FØB¸T¹GÀ1ÐEóFÐ;ä—W’W˜W dÔ+¨qØŸ™›�B÷ ,à×"Ñ" 2 tÔ,Ù# T F¨D°&Ó9Ð9ä Ð#<¸W¹KÐ!HÓIÐIá˜G×$Ñ$Ü˜d¤C×(Ñ(¨Tð 6?Ø9=¹¸qð6Bó .Bð Bð Bà×Ñ˜wÔ-Ù  ¨¨fÓ5Ð5ä˜¤§¡×1Ñ1Ü˜w¨
°DÓ9ˆHØÑØ—Z‘Z×(Ñ(Ó*�Ø×&Ñ& r¨1¨dÕ3à×$Ñ$ X¨q°$Ô7Ù × 0Ñ 0Ó 2°D¸%Ó@Ð@ä˜¤§¡×1Ñ1Ü˜wŸ™°¸Ó=ˆHØÑØ—_‘_�Ü! "¤b§j¡j×1Ñ1ØŸ™�BØ×&Ñ& r§{¡{£}°a¸Õ>à×$Ñ$ X¨q°$Ô7Ù × 0Ñ 0Ó 2°D¸%Ó@Ð@ä˜¤×)Ñ)Ø�N‰N˜7Ô)Ù  D¨'Ó2Ð2ä�gœu×%Ñ%¬#¨g«,¸!Ó*;à ‰JˆDÜ˜d¤C×(Ñ(ÐEÐ,C¼¸T»
±}Ð*EÓEÐ(Ù˜d×#Ñ#Ø×"Ñ" 4°DÐ"Ò9Ü˜D¤#×&Ñ&Ü—7‘7—>‘> $×'Ñ'ÜŸš  tÔ,°ØŸV™V›X˜÷ -à×&Ñ& r¨4Ð&Ñ;øà6Ð3¬¨T«
¡}°AÐ6Ó6�qÙ  ¨¨fÓ5Ð5ä�W˜m×,Ñ,ã�Ø—‘˜Ö$ñ  àô Ð0´°g³°¸qÐAÓBÐB÷w ,Ö+ú÷Z -Õ,ús   Ã?QÏQ#Ñ
Q Ñ#
Q1c                ó   • U R                   $ )z
List of sub archives.
)r~  r0   s    r*   Ú
entry_listÚArchive.entry_list>  s   € ð
 × Ñ Ð r,   c                óD   • [         R                  " U R                  U5      $ r.   )r£   Úfz_has_archive_entryrÅ   ©r)   r   s     r*   Ú	has_entryÚArchive.has_entryE  s   € Ü×)Ò)¨4¯9©9°dÓ;Ð;r,   c                óZ   • [         R                  " U R                  U5      n[        U5      $ r.   )r£   Úfz_read_archive_entryrÅ   r$  )r)   r   r•  s      r*   Ú
read_entryÚArchive.read_entryH  s#   € Ü×*Ò*¨D¯I©I°tÓ<ˆÜ Ó&Ð&r,   )r~  rÅ   r.   )r2   r3   r4   r5   r‘   rð   rˆ  rŽ  r–  r�  r£  r€  ry  rÌ  rÑ  rÕ  r6   r/   r,   r*   r|  r|  §  sL   † òòBô@ô<ô<ô<ô<ôgðR ñ!ó ð!ò<õ'r,   r|  c                  óx  • \ rS rSrS rS rS rS rS rS r	SJS	 jr
S
 rS rS rSKS jrS rSLS jrSJS jrS rSMS jrS rS rS rSJS jrSJS jrS rS rS rS rS r\S 5       rS r S r!S  r"S! r#S" r$\%S# 5       r&S$ r'S% r(S& r)S' r*S( r+\%S) 5       r,\%S* 5       r-\%S+ 5       r.\%S, 5       r/\%S- 5       r0S. r1S/ r2\%S0 5       r3S1 r4S2 r5S3 r6SNS4 jr7S5 r8S6 r9S7 r:S8 r;S9 r<SNS: jr=S; r>S< r?S= r@S> rAS? rBS@ rCSA rD                  SOSB jrESC rFSPSD jrGSE rHSF rI\%SG 5       rJ\%SH 5       rK\
rL\
rM\
rNSIrOg)QÚXmliM  c                ó   • U $ r.   r/   r0   s    r*   Ú	__enter__ÚXml.__enter__O  ó   € Øˆr,   c                ó   • g r.   r/   r�  s     r*   Ú__exit__ÚXml.__exit__R  ó   € Ør,   c                ó  • [        U[        R                  5      (       a  Xl        g [        U[        5      (       a2  [        R
                  " U5      n[        R                  " U5      U l        g  S[        U5       35       e)NzUnsupported type for rhs: )rC   r£   ÚFzXmlrÅ   rè  Úfz_new_buffer_from_copied_dataÚfz_parse_xml_from_html5rÉ   )r)   Úrhsr•  s      r*   r‘   ÚXml.__init__U  s]   € Ü�cœ5Ÿ;™;×'Ñ'Ø�IÜ˜œS×!Ñ!Ü×7Ò7¸Ó<ˆDÜ×5Ò5°dÓ;ˆD�Ià>Ð2´4¸³9°+Ð>Ó>�1r,   c                ó.   ^• U4S jmSn/ nT" XU5      nU$ )Nc           	     óð  >• U bñ  U R                   (       a/  UR                  USU R                   S345        U R                  n MC  UR                  USU R                   345        U R                  5       R                  5        H  u  p4UR                  USU SU S345        M!     U R                  nU(       a  T" XQUS-   5      nUR                  USU R                   345        U R                  n U b  Mñ  U$ )NÚ"Ú(r   z 'rî   r   Ú))Úis_textrp   r   r_  ÚtagnameÚget_attributesrG   Úfirst_child)ÚnoderG   ÚshiftÚkrK   ÚchildÚ	show_nodes         €r*   rô  Ú%Xml._get_node_tree.<locals>.show_node_  så   ø€ ØÑ"Ø—<—<Ø—L‘L %¨1¨T¯Y©Y¨K°qÐ)9Ð!:Ô;ØŸ9™9�DÙØ—‘˜e q¨¯©¨Ð%7Ð8Ô9Ø ×/Ñ/Ó1×7Ñ7Ö9‘D�AØ—L‘L %¨1¨Q¨C¨r°!°°A¨Ð!7Ö8ñ :à×(Ñ(�ÞÙ% e°E¸A±IÓ>�EØ—‘˜e q¨¯©¨Ð%7Ð8Ô9Ø—y‘y�ð Ó"ð ˆLr,   r   r/   )r)   rñ  rG   rô  s      @r*   Ú_get_node_treeÚXml._get_node_tree^  s%   ø€ õ	ð  ˆØˆÙ˜$ uÓ-ˆØˆr,   c                óJ   • U R                  S5      nU R                  U5        U$ )zAdd bulleted list ("ul" tag)Úul©Úcreate_elementÚappend_child©r)   ró  s     r*   Úadd_bullet_listÚXml.add_bullet_listt  ó%   € à×#Ñ# DÓ)ˆØ×Ñ˜%Ô Øˆr,   c                óž   • U R                  S5      nUb  X;   a  U $ U R                  S5        Uc  UnOUSU-   -  nU R                  SU5        U $ )z5Set some class via CSS. Replaces complete class spec.Úclassr´   ©Úget_attribute_valueÚremove_attributeÚset_attribute)r)   r   Úclss      r*   Ú	add_classÚXml.add_classz  s[   € à×&Ñ& wÓ/ˆØ‰?˜t›{ØˆKØ×Ñ˜gÔ&Ø‰;Ø‰Cà�3˜‘:ÑˆCØ×Ñ˜7 CÔ(Øˆr,   Nc                óØ   • U R                  S5      n[        U5      [        L a   UR                  U R	                  U5      5        U R                  5       nUc  U nUR                  U5        U $ )zAdd a "code" tagrÿ  ©rû  rÉ   rè  rü  Úcreate_text_nodeÚspan_bottom©r)   r   ró  Úprevs       r*   Úadd_codeÚXml.add_code‡  sb   € à×#Ñ# FÓ+ˆÜ�‹:œÒØ×Ñ˜t×4Ñ4°TÓ:Ô;Ø×ÑÓ!ˆØ‰<ØˆDØ×Ñ˜%Ô Øˆr,   c                óJ   • U R                  S5      nU R                  U5        U$ )z!Add monospaced lines ("pre" node)Úprerú  rý  s     r*   Úadd_codeblockÚXml.add_codeblock’  ó%   € à×#Ñ# EÓ*ˆØ×Ñ˜%Ô Øˆr,   c                óJ   • U R                  S5      nU R                  U5        U$ )zAdd description list ("dl" tag)Údlrú  rý  s     r*   Úadd_description_listÚXml.add_description_list˜  r   r,   c                óJ   • U R                  S5      nU R                  U5        U$ )zAdd "div" tagÚdivrú  rý  s     r*   Úadd_divisionÚXml.add_divisionž  r  r,   c                óè   • U[        SS5      ;  a  [        S5      eU R                  nSU 3nU R                  U5      nUS;  a  U R	                  U5        U$ U R
                  R	                  U5        U$ )zAdd header tagr   é   zHeader level must be in [1, 6]Úh)Úh1Úh2Úh3Úh4Úh5Úh6r³  )rT  rÄ   rí  rû  rü  rí   )r)   r   Úthis_tagÚnew_tagró  s        r*   Ú
add_headerÚXml.add_header¤  ss   € àœ˜a ›Ó#ÜÐ=Ó>Ð>Ø—<‘<ˆØ�e�W�+ˆØ×#Ñ# GÓ,ˆØÐDÓDØ×Ñ˜eÔ$ØˆLØ�‰× Ñ  Ô'Øˆr,   c                óJ   • U R                  S5      nU R                  U5        U$ )zAdd horizontal line ("hr" tag)Úhrrú  rý  s     r*   Úadd_horizontal_lineÚXml.add_horizontal_line±  r   r,   c                ó$  • U R                  S5      nUb  UR                  SU 5        Ub  UR                  SU 5        Ub  UR                  SSU 35        Ub  UR                  SU 5        UR                  SU 5        U R                  U5        U$ )zAdd image node (tag "img").Úimgr‰  ÚheightrŠ  zfloat: r  Úsrc)rû  r  rü  )r)   r   r‰  r2  Úimgfloatr  ró  s          r*   Ú	add_imageÚXml.add_image·  sœ   € à×#Ñ# EÓ*ˆØÑØ×Ñ ¨E¨7Ô4ØÑØ×Ñ ¨V¨HÔ6ØÑØ×Ñ ¨7°8°*Ð)=Ô>ØÑØ×Ñ ¨E¨7Ô4Ø×Ñ˜E d VÔ-Ø×Ñ˜%Ô Øˆr,   c                ó  • U R                  S5      n[        U[        5      (       d  UnUR                  SU5        UR	                  U R                  U5      5        U R                  5       nUc  U nUR	                  U5        U $ )zAdd a hyperlink ("a" tag)r!   Úhref)rû  rC   rè  r  rü  r  r  )r)   r8  r   ró  r  s        r*   Úadd_linkÚXml.add_linkÆ  sx   € à×#Ñ# CÓ(ˆÜ˜$¤×$Ñ$ØˆDØ×Ñ˜F DÔ)Ø×Ñ˜4×0Ñ0°Ó6Ô7Ø×ÑÓ!ˆØ‰<ØˆDØ×Ñ˜%Ô Øˆr,   c                ó–   • U R                   S;  a  [        SU R                   5      eU R                  S5      nU R                  U5        U$ )z8Add item ("li" tag) under a (numbered or bulleted) list.)Úolrù  zcannot add list item toÚli)rí  rÄ   rû  rü  rý  s     r*   Úadd_list_itemÚXml.add_list_itemÓ  sC   € à�<‰<˜|Ó+ÜÐ6¸¿¹ÓEÐEØ×#Ñ# DÓ)ˆØ×Ñ˜%Ô Øˆr,   c                ó¶   • U R                  S5      nUS:”  a  UR                  S[        U5      5        Ub  UR                  SU5        U R                  U5        U$ )zAdd numbered list ("ol" tag)r<  r   rÇ  rÉ   )rû  r  rè  rü  )r)   rÇ  Únumtyperó  s       r*   Úadd_number_listÚXml.add_number_listÛ  sV   € à×#Ñ# DÓ)ˆØ�1‹9Ø×Ñ ¬¨U«Ô4ØÑØ×Ñ ¨Ô0Ø×Ñ˜%Ô Øˆr,   c                ó¤   • U R                  S5      nU R                  S:w  a  U R                  U5        U$ U R                  R                  U5        U$ )zAdd "p" tagr³  )rû  rí  rü  rí   rý  s     r*   Úadd_paragraphÚXml.add_paragraphå  sL   € à×#Ñ# CÓ(ˆØ�<‰<˜3ÓØ×Ñ˜eÔ$ð ˆð �K‰K×$Ñ$ UÔ+Øˆr,   c                óJ   • U R                  S5      nU R                  U5        U$ ©NÚspanrú  rý  s     r*   Úadd_spanÚXml.add_spanî  s%   € Ø×#Ñ# FÓ+ˆØ×Ñ˜%Ô Øˆr,   c                óž   • U R                  S5      nUb  X;   a  U $ U R                  S5        Uc  UnOUSU-   -  nU R                  SU5        U $ )z;Set some style via CSS style. Replaces complete style spec.rŠ  Ú;r  )r)   r   rŠ  s      r*   Ú	add_styleÚXml.add_styleó  s\   € à×(Ñ(¨Ó1ˆØÑ £ØˆKØ×Ñ˜gÔ&Ø‰=Ø‰Eà�S˜4‘ZÑˆEØ×Ñ˜7 EÔ*Øˆr,   c                óØ   • U R                  S5      n[        U5      [        L a   UR                  U R	                  U5      5        U R                  5       nUc  U nUR                  U5        U $ )zAdd a subscript ("sub" tag)r�  r  r  s       r*   Úadd_subscriptÚXml.add_subscript 	  ób   € à×#Ñ# EÓ*ˆÜ�‹:œÒØ×Ñ˜t×4Ñ4°TÓ:Ô;Ø×ÑÓ!ˆØ‰<ØˆDØ×Ñ˜%Ô Øˆr,   c                óØ   • U R                  S5      n[        U5      [        L a   UR                  U R	                  U5      5        U R                  5       nUc  U nUR                  U5        U $ )zAdd a superscript ("sup" tag)Úsupr  r  s       r*   Úadd_superscriptÚXml.add_superscript	  rS  r,   c                ó"  • UR                  5       n[        U5      nU R                  5       nUc  U n[        U5       HO  u  pVUR	                  U R                  U5      5        XSS-
  :  d  M/  UR	                  U R                  S5      5        MQ     U $ )z"Add text. Line breaks are honored.r   r%  )r  r<   r  Ú	enumeraterü  r  rû  )r)   r   ÚlinesÚ
line_countr  rh  rt   s          r*   Úadd_textÚXml.add_text	  sƒ   € à—‘Ó!ˆÜ˜“Zˆ
Ø×ÑÓ!ˆØ‰<ØˆDä  Ö'‰GˆAØ×Ñ˜d×3Ñ3°DÓ9Ô:Ø ‘>Õ!Ø×!Ñ! $×"5Ñ"5°dÓ";Ö<ñ (ð ˆr,   c                óZ   • [         R                  " U R                  UR                  5        g r.   )r£   Úfz_dom_append_childrÅ   rý  s     r*   rü  ÚXml.append_child$	  s   € Ü×!Ò! 4§9¡9¨e¯j©jÕ9r,   c                ó–   • U R                  S5      nUR                  U5        U R                  5       nUc  U nUR                  U5        U$ rH  )rû  rN  r  rü  )r)   rŠ  rI  r  s       r*   Úappend_styled_spanÚXml.append_styled_span'	  sI   € Ø×"Ñ" 6Ó*ˆØ�‰�uÔØ×ÑÓ!ˆØ‰<ØˆDØ×Ñ˜$ÔØˆr,   c                óT   • [        [        R                  " U R                  5      5      $ r.   )rØ  r£   Úfz_dom_bodyrÅ   r0   s    r*   ÚbodytagÚXml.bodytag0	  s   € Ü”E×%Ò% t§y¡yÓ1Ó2Ð2r,   c                óX   • [         R                  " U R                  5      n[        U5      $ r.   )r£   Úfz_dom_clonerÅ   rØ  ©r)   rL   s     r*   ÚcloneÚ	Xml.clone3	  s    € Ü× Ò  $§)¡)Ó,ˆÜ�C‹yÐr,   c                ó¾   • [        U 5      [        L a  U $ [        U 5      [        L a  S[        U 5       S3$ [        U 5      [        [
        4;   a  S[	        U 5       3$ U $ )Nzrgb(rë  râ  )rÉ   rè  r9   ÚsRGB_to_rgbr¶   rµ   )Úcolors    r*   Ú
color_textÚXml.color_text7	  sZ   € ä�‹;œ#ÒØˆLÜ�‹;œ#ÒØœ+ eÓ,Ð-¨QÐ/Ð/Ü�‹;œ5¤$˜-Ó'Øœ˜u›˜Ð'Ð'Øˆr,   c                óV   • [        [        R                  " U R                  U5      5      $ r.   )rØ  r£   Úfz_dom_create_elementrÅ   )r)   Útags     r*   rû  ÚXml.create_elementA	  s   € Ü”E×/Ò/°·±¸CÓ@ÓAÐAr,   c                óV   • [        [        R                  " U R                  U5      5      $ r.   )rØ  r£   Úfz_dom_create_text_noderÅ   )r)   r   s     r*   r  ÚXml.create_text_nodeD	  s   € Ü”E×1Ò1°4·9±9¸dÓCÓDÐDr,   c                ó„   • U R                  5       nU H*  n[        SUS   -  US   R                  SS5      -   5        M,     g)z)Print a list of the node tree below self.z  r   r   r&   ú\nN)rö  rw   r  )r)   rG   rH   s      r*   ÚdebugÚ	Xml.debugG	  s>   € à×#Ñ#Ó%ˆÛˆDÜ�D˜4 ™7‘N T¨!¡W§_¡_°T¸5Ó%AÑAÖBò r,   c                ó€   • [         R                  " U R                  XU5      nUR                  (       a  [	        U5      $ g r.   )r£   Úfz_dom_findrÅ   rÍ   rØ  ©r)   rt  ÚattÚmatchrL   s        r*   r§   ÚXml.findM	  s0   € Ü×Ò §¡¨C°eÓ<ˆØ�>�>Ü˜“9Ðð r,   c                ó€   • [         R                  " U R                  XU5      nUR                  (       a  [	        U5      $ g r.   )r£   Úfz_dom_find_nextrÅ   rÍ   rØ  r  s        r*   Ú	find_nextÚXml.find_nextR	  s0   € Ü×$Ò$ d§i¡i°¸5ÓAˆØ�>�>Ü˜“9Ðð r,   c                ó´   • [         R                  " U R                  5      (       a  g [         R                  " U 5      nUR                  (       a  [        U5      $ g r.   )r£   Úfz_xml_textrÅ   Úfz_dom_first_childrÍ   rØ  rj  s     r*   rï  ÚXml.first_childW	  s@   € ä×Ò˜dŸi™i×(Ñ(àÜ×&Ò&¨Ó-ˆØ�>�>Ü˜“9Ðð r,   c                óV   • U(       d   e[         R                  " U R                  U5      $ r.   )r£   Úfz_dom_attributerÅ   ©r)   Úkeys     r*   r  ÚXml.get_attribute_value`	  s    € Þˆ
ˆsÜ×%Ò% t§y¡y°#Ó6Ð6r,   c                óæ   • [         R                  " U R                  5      (       a  g [        5       nSn [         R                  " U R                  U5      u  p4U(       a  U(       d   U$ X1U'   US-  nM?  ©Nr   r   )r£   rˆ  rÅ   r:   Úfz_dom_get_attribute)r)   Úresultrh  r  rŽ  s        r*   rî  ÚXml.get_attributesd	  sg   € Ü×Ò˜dŸi™i×(Ñ(àÜ“ˆØˆØÜ×1Ò1°4·9±9¸aÓ@‰HˆCÞžcØð ˆð �C‰LØ�‰FˆAñ r,   c                óZ   • [         R                  " U R                  UR                  5        g r.   )r£   Úfz_dom_insert_afterrÅ   ©r)   rð  s     r*   Úinsert_afterÚXml.insert_afterr	  s   € Ü×!Ò! 4§9¡9¨d¯i©iÕ8r,   c                óZ   • [         R                  " U R                  UR                  5        g r.   )r£   Úfz_dom_insert_beforerÅ   r—  s     r*   Úinsert_beforeÚXml.insert_beforeu	  s   € Ü×"Ò" D§I¡I¨t¯y©yÕ9r,   c                óø   • UR                  5       n[        U5      n[        U5       HO  u  pEU R                  U R	                  U5      5        XCS-
  :  d  M/  U R                  U R                  S5      5        MQ     U $ )Nr   r%  )r  r<   rY  rü  r  rû  )r)   r   rZ  r[  rh  rt   s         r*   Úinsert_textÚXml.insert_textx	  sk   € Ø—‘Ó!ˆÜ˜“Zˆ
Ü  Ö'‰GˆAØ×Ñ˜d×3Ñ3°DÓ9Ô:Ø ‘>Õ!Ø×!Ñ! $×"5Ñ"5°dÓ";Ö<ñ (ð ˆr,   c                ó   • U R                   SL$ )zCheck if this is a text node.Nrv   r0   s    r*   rì  ÚXml.is_text�	  s   € ð �y‰y Ð$Ð$r,   c                óV   • U R                   nUc  g UR                  nU(       d  U$ UnM  )zReturn last child node.N)rï  r_  )r)   ró  r_  s      r*   Ú
last_childÚXml.last_child†	  s5   € ð × Ñ ˆØ‰=ØØØ—:‘:ˆDÞØ�ØˆEñ	 r,   c                ó|   • [         R                  " U R                  5      nUR                  (       a  [	        U5      $ g r.   )r£   Úfz_dom_nextrÅ   rÍ   rØ  rj  s     r*   r_  ÚXml.next’	  s,   € ä×Ò §¡Ó+ˆØ�>�>Ü˜“9Ðð r,   c                ó|   • [         R                  " U R                  5      nUR                  (       a  [	        U5      $ g r.   )r£   Úfz_dom_parentrÅ   rÍ   rØ  rj  s     r*   rí   Ú
Xml.parent˜	  s,   € ä×!Ò! 4§9¡9Ó-ˆØ�>�>Ü˜“9Ðð r,   c                ó|   • [         R                  " U R                  5      nUR                  (       a  [	        U5      $ g r.   )r£   Úfz_dom_previousrÅ   rÍ   rØ  rj  s     r*   ÚpreviousÚXml.previousž	  s,   € ä×#Ò# T§Y¡YÓ/ˆØ�>�>Ü˜“9Ðð r,   c                óD   • [         R                  " U R                  5        g r.   )r£   Úfz_dom_removerÅ   r0   s    r*   ÚremoveÚ
Xml.remove¤	  s   € Ü×Ò˜TŸY™YÕ'r,   c                óX   • U(       d   e[         R                  " U R                  U5        g r.   )r£   Úfz_dom_remove_attributerÅ   r�  s     r*   r  ÚXml.remove_attribute§	  s   € Þˆ
ˆsÜ×%Ò% t§y¡y°#Õ6r,   c                óT   • [        [        R                  " U R                  5      5      $ r.   )rØ  r£   Úfz_xml_rootrÅ   r0   s    r*   ÚrootÚXml.root«	  s   € ä”E×%Ò% t§y¡yÓ1Ó2Ð2r,   c                óä   • [        U[        5      (       a  UnOCU[        :X  a  SnO6U[        :X  a  SnO)U[        :X  a  SnOU[
        :X  a  SnO[        SU< 35      eU R                  SU 35        U $ )z Set text alignment via CSS stylerH  ÚcenterÚrightÚjustifyzUnrecognised align=ztext-align: )rC   rè  ÚTEXT_ALIGN_LEFTÚTEXT_ALIGN_CENTERÚTEXT_ALIGN_RIGHTÚTEXT_ALIGN_JUSTIFYrÄ   rN  )r)   r  Úts      r*   Ú	set_alignÚXml.set_align¯	  sv   € ä�uœc×"Ñ"Ø‰AØ”oÓ%Ø‰AØÔ'Ó'Ø‰AØÔ&Ó&Ø‰AØÔ(Ó(Ø‰AäÐ3¨U©HÐ5Ó6Ð6Ø�‰˜ a SÐ)Ô*Øˆr,   c                óX   • U(       d   e[         R                  " U R                  X5        g r.   )r£   Úfz_dom_add_attributerÅ   )r)   rŽ  r¹   s      r*   r  ÚXml.set_attributeÀ	  s   € Þˆ
ˆsÜ×"Ò" D§I¡I¨sÕ:r,   c                óL   • U R                  SU R                  U5       35        U $ )z"Set background color via CSS stylezbackground-color: )rN  rp  ©r)   ro  s     r*   Úset_bgcolorÚXml.set_bgcolorÄ	  s%   € à�‰Ð+¨D¯O©O¸EÓ,BÐ+CÐDÔEØˆr,   c                óF   • U(       a  SnOSnU R                  SU 35        U $ )zSet bold on / off via CSS styleÚboldÚnormalzfont-weight: ©rb  ©r)   r  s     r*   Úset_boldÚXml.set_boldÉ	  s)   € æØ‰CàˆCØ×Ñ -°¨uÐ 5Ô6Øˆr,   c                óL   • U R                  SU R                  U5       35        U $ )zSet text color via CSS stylezcolor: )rb  rp  rÊ  s     r*   Ú	set_colorÚXml.set_colorÒ	  s&   € à×Ñ '¨$¯/©/¸%Ó*@Ð)AÐ BÔCØˆr,   c                ó.   • U R                  SU 35        U $ )z(Set number of text columns via CSS stylez	columns: rÐ  )r)   Úcolss     r*   Úset_columnsÚXml.set_columns×	  s   € à×Ñ )¨D¨6Ð 2Ô3Øˆr,   c                ó.   • U R                  SU 35        U $ )z"Set font-family name via CSS stylezfont-family: rÐ  )r)   Úfonts     r*   Úset_fontÚXml.set_fontÜ	  s   € à×Ñ -°¨vÐ 6Ô7Øˆr,   c                ód   • [        U5      [        L a  SnOSnSU U 3nU R                  U5        U $ )z Set font size name via CSS stylera   Úpxzfont-size: )rÉ   rè  rb  )r)   r   rà  r   s       r*   Úset_fontsizeÚXml.set_fontsizeá	  s;   € ä�‹>œSÒ Ø‰BàˆBØ˜X˜J r dÐ+ˆØ×Ñ Ô%Øˆr,   c                ó�   • U R                   nUR                  SSU5      (       a  [        SU S35      eU R                  SU5        U $ )zSet a unique id.Nr[  zid 'z' already exists)r¹  r§   rÄ   r  )r)   Úuniquer¹  s      r*   Úset_idÚ
Xml.set_idë	  sJ   € ð �y‰yˆØ�9‰9�T˜4 ×(Ñ(Ü˜t F 8Ð+;Ð<Ó=Ð=Ø×Ñ˜4 Ô(Øˆr,   c                óF   • U(       a  SnOSnU R                  SU 35        U $ )z!Set italic on / off via CSS styleÚitalicrÏ  zfont-style: rÐ  rÑ  s     r*   Ú
set_italicÚXml.set_italicô	  s)   € æØ‰CàˆCØ×Ñ ,¨s¨eÐ 4Ô5Øˆr,   c                ó.   • U R                  SU 35        U $ )z>Set inter-line spacing value via CSS style - block-level only.z-mupdf-leading: ©rN  )r)   Úleadings     r*   Úset_leadingÚXml.set_leadingý	  s   € à�‰Ð)¨'¨Ð3Ô4Øˆr,   c                ó.   • U R                  SU 35        U $ )z,Set inter-letter spacing value via CSS stylezletter-spacing: rÐ  ©r)   Úspacings     r*   Úset_letter_spacingÚXml.set_letter_spacing
  s   € à×ÑÐ"2°7°)Ð <Ô=Øˆr,   c                ó.   • U R                  SU 35        U $ )z6Set line height name via CSS style - block-level only.zline-height: rì  )r)   Ú
lineheights     r*   Úset_lineheightÚXml.set_lineheight
  s   € à�‰˜ z lÐ3Ô4Øˆr,   c                ó.   • U R                  SU 35        U $ )zSet margin values via CSS stylez	margins: rÐ  rÑ  s     r*   Úset_marginsÚXml.set_margins
  s   € à×Ñ )¨C¨5Ð 1Ô2Øˆr,   c                ó.   • U R                  SU 35        U $ )zSet opacity via CSS stylez	opacity: rÐ  )r)   r^  s     r*   rØ  ÚXml.set_opacity
  s   € à×Ñ )¨G¨9Ð 5Ô6Øˆr,   c                ó(   • U R                  S5        U $ )z$Insert a page break after this node.zpage-break-after: alwaysrì  r0   s    r*   Úset_pagebreak_afterÚXml.set_pagebreak_after
  s   € à�‰Ð1Ô2Øˆr,   c                ó(   • U R                  S5        U $ )z%Insert a page break before this node.zpage-break-before: alwaysrì  r0   s    r*   Úset_pagebreak_beforeÚXml.set_pagebreak_before
  s   € à�‰Ð2Ô3Øˆr,   c                óJ  • U R                   nUR                  5       nUb  UR                  U5        Ub  UR                  U5        Ub  UR	                  U5        Ub  UR                  U5        Ub  UR                  U5        Ub  UR                  U5        Ub  UR                  U5        Ub  UR                  U5        U	b  UR                  U	5        U
b  UR                  U
5        Ub  UR                  U5        Ub  UR                  U5        Ub  UR                  U5        Ub  UR                  5         Ub  UR!                  5         Ub  UR#                  U5        Ub  U R%                  U5        Ub  U R'                  U5        / nUR)                  S5      nUb  UR+                  U5        UR,                  nU(       a5  UR+                  UR)                  S5      5        UR,                  nU(       a  M5  U R/                  SSR1                  U5      5        UR3                  5         U $ )zPSet any or all properties of a node.

To be used for existing nodes preferably.
rŠ  rM  )r¹  r  rÄ  rË  rÒ  rÕ  rÙ  rÝ  rá  Úset_text_indentré  rî  ró  r÷  rú  rÿ  r  Úset_word_spacingrå  r  r  rp   rï  r  r  r²  )r)   r  ÚbgcolorrÎ  ro  ÚcolumnsrÜ  r   Úindentrè  rí  Úletter_spacingrö  ÚmarginsÚpagebreak_afterÚpagebreak_beforeÚword_spacingÚunqidr  r¹  ÚtempÚstylesÚ	top_styleró  s                           r*   Úset_propertiesÚXml.set_properties 
  s÷  € ð2 �y‰yˆØ× Ñ Ó"ˆØÑØ�N‰N˜5Ô!ØÑØ×Ñ˜WÔ%ØÑØ�M‰M˜$ÔØÑØ�N‰N˜5Ô!ØÑØ×Ñ˜WÔ%ØÑØ�M‰M˜$ÔØÑØ×Ñ˜hÔ'ØÑØ× Ñ  Ô(ØÑØ�O‰O˜FÔ#ØÑØ×Ñ˜WÔ%ØÑ%Ø×#Ñ# NÔ3ØÑ!Ø×Ñ 
Ô+ØÑØ×Ñ˜WÔ%ØÑ&Ø×$Ñ$Ô&ØÑ'Ø×%Ñ%Ô'ØÑ#Ø×!Ñ! ,Ô/ØÑØ�K‰K˜ÔØ‰?Ø�N‰N˜3ÔàˆØ×,Ñ,¨WÓ5ˆ	ØÑ Ø�M‰M˜)Ô$Ø× Ñ ˆÞØ�M‰M˜%×3Ñ3°GÓ<Ô=Ø×%Ñ%ˆE÷ ˆeð 	×Ñ˜7 C§H¡H¨VÓ$4Ô5Ø�‰ŒØˆr,   c                ó.   • U R                  SU 35        U $ )z;Set text indentation name via CSS style - block-level only.ztext-indent: rì  )r)   r	  s     r*   r  ÚXml.set_text_indentl
  s   € à�‰˜ v hÐ/Ô0Øˆr,   c                ó.   • U R                  SU 35        U $ )Nztext-decoration: rÐ  rÑ  s     r*   Úset_underlineÚXml.set_underlineq
  s   € Ø×ÑÐ"3°C°5Ð 9Ô:Øˆr,   c                ó.   • U R                  SU 35        U $ )z*Set inter-word spacing value via CSS stylezword-spacing: rÐ  rñ  s     r*   r  ÚXml.set_word_spacingu
  s   € à×Ñ .°°	Ð :Ô;Øˆr,   c                óf  • U nU R                   nUc  gUR                  (       a#  UR                  nUc  OUR                  (       a  M#  Ub  UR                  S:w  a  g Uc  U$ UR                  S;   d  UR                  (       a  UR                  nM5  UR                  S:X  a  UnUR
                  nOU$ MW  )z$Find deepest level in stacked spans.NrI  )r!   r�  rU  Úbody)r¤  rì  r®  rí  r_  rï  )r)   rí   ró  s      r*   r  ÚXml.span_bottomz
  s¢   € àˆØ—‘ˆØ‰=ØØ�m�mØ—N‘NˆEØ‰}Øð �m�m‰mð ‰=˜EŸM™M¨VÓ3ØàØ‰}Ø�Ø�}‰}Ð 9Ó9¸U¿]¿]ØŸ
™
�ÙØ�}‰} Ó&Ø�Ø×)Ñ)‘à�ñ r,   c                óB   • [         R                  " U R                  5      $ r.   )r£   Ú
fz_xml_tagrÅ   r0   s    r*   rí  ÚXml.tagname“
  s   € ä×Ò §¡Ó+Ð+r,   c                óB   • [         R                  " U R                  5      $ r.   )r£   rˆ  rÅ   r0   s    r*   r   ÚXml.text—
  s   € ä× Ò  $§)¡)Ó,Ð,r,   ©rÅ   r.   rr  rx  ©r   N©T)NNNNNNNNNNNNNNNNNN)Ú	underline)Pr2   r3   r4   r5   rÚ  rÞ  r‘   rö  rþ  r  r  r  r  r  r*  r.  r5  r9  r>  rB  rE  rJ  rN  rQ  rV  r\  rü  rb  rf  rk  rz  rp  rû  r  r{  r§   r…  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Ø  rÿ  r  r  r  r  r  r  rí  r   Úadd_varÚadd_sampÚadd_kbdr6   r/   r,   r*   rØ  rØ  M  sD  † òòò?òò,òô	òòòôòôôòôòòò
ô	ô	òò:òò3òð ñó ðòBòEòCòò
ð
 ñó ðò7òò9ò:òð ñ%ó ð%ð ñ	ó ð	ð ñó ðð
 ñó ðð
 ñó ðò
(ò7ð ñ3ó ð3òò";òô
òò
ò
ò
òôòò
ò
ò
ò
ò
ò
ð ØØØØØØØØØØØØØ Ø!ØØØô'JòXô
òò
ð2 ñ,ó ð,ð ñ-ó ð-ð €GØ€HØƒGr,   rØ  c                  óF   • \ rS rSrS rS rS r\S 5       r\S 5       r	Sr
g)	Ú
Colorspacei 
  c                ó*  • [        U[        R                  5      (       a  Xl        gU[        :X  a4  [        R                  " [        R                  R
                  5      U l        gU[        :X  a4  [        R                  " [        R                  R                  5      U l        gU[        :X  a4  [        R                  " [        R                  R                  5      U l        g[        R                  " [        R                  R                  5      U l        g)z!Supported are GRAY, RGB and CMYK.N)
rC   r£   ÚFzColorspacerÅ   ÚCS_GRAYÚ
Fixed_GRAYÚCS_CMYKÚ
Fixed_CMYKÚCS_RGBÚ	Fixed_RGB)r)   rc  s     r*   r‘   ÚColorspace.__init__¢
  s©   € ä�uœe×0Ñ0×1Ñ1Ø�IØ”gÓÜ×*Ò*¬5×+=Ñ+=×+HÑ+HÓIˆD�IØ”gÓÜ×*Ò*¬5×+=Ñ+=×+HÑ+HÓIˆD�IØ”f‹_Ü×*Ò*¬5×+=Ñ+=×+GÑ+GÓHˆD�Iä×*Ò*¬5×+=Ñ+=×+GÑ+GÓHˆD�Ir,   c                óD   • SU R                      nSU SU R                   3$ )N)ra   ÚGRAYra   ÚRGBÚCMYKzColorspace(CS_z) - )rJ   r   ©r)   re  s     r*   rð   ÚColorspace.__repr__¯
  s'   € Ø+¨D¯F©FÑ3ˆØ ˜s $ t§y¡y kÐ2Ð2r,   c                óB   • [         R                  " U R                  5      $ r.   )r£   Úfz_colorspace_namerÅ   r0   s    r*   Ú_nameÚColorspace._name³
  s   € Ü×'Ò'¨¯	©	Ó2Ð2r,   c                óB   • [         R                  " U R                  5      $ )zSize of one pixel.)r£   Úfz_colorspace_nrÅ   r0   s    r*   rJ   ÚColorspace.n¶
  ó   € ô ×$Ò$ T§Y¡YÓ/Ð/r,   c                ó"   • U R                  5       $ )zName of the Colorspace.©r>  r0   s    r*   r   ÚColorspace.name»
  s   € ð �z‰z‹|Ðr,   r$  N)r2   r3   r4   r5   r‘   rð   r>  ry  rJ   r   r6   r/   r,   r*   r,  r,   
  s:   † òIò3ò3ð ñ0ó ð0ð ñó ór,   r,  c                  ó   • \ rS rSrS rSrg)ÚDeviceWrapperiÁ
  c                óÞ  • [        U[        R                  5      (       a  Uu  nX l        g [        U[        S 5      (       aŠ  Uu  p4[        U5      n[        R                  " U5      (       a0  [        R                  " [        R                  " 5       U5      U l        g [        R                  " [        R                  " 5       X55      U l        g [        U[        R                  5      (       a   Uu  n[        R                  " U5      U l        g [        U[        R                  S 5      (       a6  Uu  px[        R                  " U5      n	[        R                  " Xy5      U l        g [        SU< 35      e)Nz%Unrecognised args for DeviceWrapper: )Ú
args_matchr£   ÚFzDevicerÅ   rî  ÚJM_irect_from_pyÚfz_is_infinite_irectÚfz_new_draw_devicer}  Úfz_new_draw_device_with_bboxÚFzDisplayListÚfz_new_list_devicer  r  Úfz_new_stext_devicerl   )
r)   r  ÚdeviceÚpmr  r7  r  ÚtprÑ  Úoptss
             r*   r‘   ÚDeviceWrapper.__init__Â
  s  € Ü�tœUŸ^™^×,Ñ,Ø‰GˆFØ�IÜ˜œv t×,Ñ,Ø‰HˆBÜ# TÓ*ˆDÜ×)Ò)¨4×0Ñ0Ü!×4Ò4´e·n²nÓ6FÈÓK�•	ä!×>Ò>ÄÇÂÓ@PÐRTÓ[�•	Ü˜œu×2Ñ2×3Ñ3Ø‰CˆBÜ×0Ò0°"Ó5ˆD�IÜ˜œu×0Ñ0°$×7Ñ7Ø‰IˆBÜ×'Ò'¨Ó/ˆDÜ×1Ò1°2Ó<ˆD�IäÐDÀTÁHÐMÓNÐNr,   r$  Nr“   r/   r,   r*   rH  rH  Á
  s   † õOr,   rH  c                  óJ   • \ rS rSrS rS rS
S jrSS jr\S 5       r	S r
S	rg)ÚDisplayListiØ
  c                ó8   • [        U 5      [        La  g SU l        g ©NF)rÉ   rY  rö   r0   s    r*   Ú__del__ÚDisplayList.__del__Ù
  s   € Ü�D‹zœ[Ò(¨&Øˆ�r,   c                ó0  • [        U5      S:X  aA  [        US   [        R                  5      (       a  [        R                  " US   5      U l        g [        U5      S:X  a-  [        US   [        R                  5      (       a  US   U l        g  SU< 35       e)Nr   r   zUnrecognised args=)r<   rC   r£   rr  rP  rÅ   r�  s     r*   r‘   ÚDisplayList.__init__Ý
  su   € Üˆt‹9˜‹>œj¨¨a©´%·,±,×?Ñ?Ü×+Ò+¨D°©GÓ4ˆD�IÜ�‹Y˜!‹^¤
¨4°©7´E×4GÑ4G× HÑ HØ˜Q™ˆD�Ià-Ð+ d¡WÐ-Ó-�1r,   Nc                óä   • [        U[        5      (       a  UR                  nO.[        R                  " [        R                  R
                  5      n[        U R                  XX4S 5      nSUl        U$ ©NT)rC   r,  rÅ   r£   r.  r4  ÚJM_pixmap_from_display_liströ   )r)   rð  rò  ró  r  r  s         r*   rø  ÚDisplayList.get_pixmapå
  sU   € Ü�j¤*×-Ñ-Ø#Ÿ™‰Jä×+Ò+¬E×,>Ñ,>×,HÑ,HÓIˆJÜ)¨$¯)©)°VÈÐVZÓ[ˆØˆŒØˆ
r,   c                óŒ   • [         R                  " 5       nXl        [         R                  " U R                  U5      nSUl        U$ )z#Make a TextPage from a DisplayList.T)r£   r  rÑ  r  rÅ   rö   )r)   rÑ  Ústext_optionsr  s       r*   r&  ÚDisplayList.get_textpageî
  s8   € ä×,Ò,Ó.ˆØ#ÔÜ×Ò §	¡	¨=Ó9ˆØˆŒØˆ
r,   c                ón   • [        [        R                  " U R                  5      5      n[	        U5      nU$ r.   )rq  r£   Úfz_bound_display_listrÅ   r,  rÑ  s     r*   rý   ÚDisplayList.rectö
  s)   € äœe×9Ò9¸$¿)¹)ÓDÓEˆÜ�3‹iˆØˆ
r,   c                óª   • [         R                  " U R                  UR                  [	        U5      [        U5      [         R                  " 5       5        g r.   )r£   Úfz_run_display_listrÅ   rS  rê  r  ÚFzCookie)r)   ÚdwrŒ  Úareas       r*   ÚrunÚDisplayList.runü
  s8   € Ü×!Ò!Ø—	‘	Ø—	‘	Ü! !Ó$Ü Ó%Ü—’Ó õ	r,   ©rÅ   rö   )NNr   N)r   )r2   r3   r4   r5   r\  r‘   rø  r&  ry  rý   ro  r6   r/   r,   r*   rY  rY  Ø
  s/   † òò.ôôð ñó ðõ
r,   rY  c                  óŒ
  • \ rS rSrSÇS jrSÈS jrS rS r\R                  SfSÉS jj5       r
\R                  S:¼  a(  \R                  SÊS	 j5       r
\R                  SËS
 j5       r
SfS jr
SÌS jrSÍS jrSÎS jrS r    SÏS jrS rS rS r   SÐ           SÑS jjr    SÒ           SÓS jjrS rSÔS jrSÕS jrS rS rS rSÖS jrS rS×S  jrSfSØS! jjr S" r!S# r"S$ r#S% r$S& r%SÙS' jr&S( r'S) r(S* r)SÚS+ jr*S, r+S- r,S. r-S/ r.SÛS0 jr/\0S1 5       r1SÙS2 jr2SÜS4 jr3S5 r4S6 r5S7S7S8.SÝS9 jjr6\0S: 5       r7S; r8S< r9SÞS= jr:SßSàS> jjr;S? r<SßSáS@ jjr=SA r>   SÕ           SâSB jjr?SÍSC jr@SãSD jrASäSE jrBSåSF jrCSæSG jrD    SÖ           SçSH jjrESèSI jrFSJ rG                   SéSL jrHSM rISßSN jrJ   Sê           SëSO jjrKSßSP jrLSQ rMSR rNSìSS jrOST rPSíSU jrQSV rRSîSïSW jjrSSîSïSX jjrTSY rUSîSZ jrVSSSSSKS7S[.               SðS\ jjrW     Sñ               SòS] jjrXSóS^ jrYS_ rZ Sô     SõS` jjr[Sa r\SöSb jr]SöSc jr^Sd r_        S÷Se jr`       Sø                   SùSg jjraSSSSS3S3S3SSS3SSh.Si jrb\0Sj 5       rc\0Sk 5       rd\0Sl 5       re\0Sm 5       rf\0Sn 5       rg\0So 5       rhSp riSq rjSr rkSs rlSt rmSu rnSv roSw rpSúSx jrqSy rrSz rs\0S{ 5       rt\0S| 5       ruS} rvSûS~ jrwS rxS€ ryS� rz\0SüS‚ j5       r{SßSàSƒ jjr|\0S„ 5       r}SúS… jr~\0S† 5       r   SÚ         SýS‡ jjr€Sˆ r�S‰ r‚\0SŠ 5       rƒS‹ r„SŒ r…S� r†\0SÎSŽ j5       r‡\0SÎS� j5       rˆSÕSþS� jjr‰S‘ rŠSÿS’ jr‹\0S“ 5       rŒS” r�GS S• jrŽS– r�GSS— jr�          GSS˜ jr‘GSS™ jr’Sš r“                    GSS› jr”Sœ r•S� r–             GS                             GSSž jjr—    GS               GSSŸ jjr˜S  r™SúS¡ jršGS	S¢ jr›SfS£ jrœGS
S¤ jr�SúGSS¥ jjržGSS¦ jrŸ    GS           GSS§ jjr GSS¨ jr¡GSS© jr¢Sª r£ GS       GSS« jjr¤        GS                     GSS¬ jjr¥S­ r¦GSGSS® jjr§SfS¯ jr¨SúS° jr©GSS± jrª\0S² 5       r«                    GSS³ jr¬S´ r­\0Sµ 5       r®SS¶.GSS· jjr¯S¸ r°S¹ r±Sº r²S» r³SfS¼ jr´S½ rµS¾ r¶SÿS¿ jr·SÀ r¸SÁ r¹SÂ rºSÃ r»SÄr¼\0" SÅ 5      r½\´r¾SÆr¿g(  rÂ   i	  c                ó^  • [        U5      [        L a  XR                  :  a  gg[        U5      [        [        4;  d  [        U5      S:w  a  gUu  p# [        U[        5      (       a  US:  d  X R                  :¼  a  g [        U[        5      (       a  US:  d  X0R                  U5      :¼  a  gg)NTFr   r   )	rÉ   r9   Ú
page_countr¶   rµ   r<   rC   Úchapter_countÚchapter_page_count)r)   ÚlocÚchapterÚpnos       r*   Ú__contains__ÚDocument.__contains__  s–   € Ü�‹9œÒØ—_‘_Ó$ØØÜ�‹9œU¤D˜MÓ)¬S°«X¸«]ØØ‰ˆØÜ! '¬3×/Ñ/Ø˜Q“;Ø×0Ñ0Ó0àØÜ! #¤s×+Ñ+Ø˜“7Ø×1Ñ1°'Ó:Ó:àØr,   c                ó¨  • U R                   (       d  [        S5      e[        U5      [        L a  U R	                  U5      $ [        U5      [
        [        [        4;   a  U R                  U5      $ [        U5      [        La  [        S5      eU R                  nUR                  (       a  UR                  OSnUR                  (       a  UR                  OUnUR                  (       a  UR                  OSnUS:  a  X2-  nUS:  a  M  X2:¼  a  [        S5      eUS:  a  XB-  nUS:  a  M  XB:”  a  [        S5      eU R                  [        X4U5      5      $ )Nú	is no PDFzbad argument typer   r   úbad page number(s))Úis_pdfrÄ   rÉ   r9   Údelete_pagerµ   r¶   rT  Údelete_pagesÚslicert  rÇ  ÚstopÚstep)r)   rh  ÚpcrÇ  rƒ  r„  s         r*   Ú__delitem__ÚDocument.__delitem__!  s  € Ø�{�{Ü˜[Ó)Ð)Ü�‹7”cŠ>Ø×#Ñ# AÓ&Ð&Ü�‹7”tœU¤EÐ*Ó*Ø×$Ñ$ QÓ'Ð'Ü�‹7œ%ÒÜÐ0Ó1Ð1Ø�_‰_ˆØŸ7Ÿ7�—’¨ˆØŸŸˆq�vŠv RˆØŸŸˆq�vŠv QˆØ�a‹iØ‰KˆEð �a�ià‹;ÜÐ1Ó2Ð2Ø�Q‹hØ‰JˆDð �Q�hà‹9ÜÐ1Ó2Ð2Ø× Ñ ¤ u°DÓ!9Ó:Ð:r,   c                ó   • U $ r.   r/   r0   s    r*   rÚ  ÚDocument.__enter__8  rÜ  r,   c                ó$   • U R                  5         g r.   ©Úcloser�  s     r*   rÞ  ÚDocument.__exit__;  ó   € Ø�
‰
�r,   r   c                ó   • g r.   r/   ©r)   rh  s     r*   r�  ÚDocument.__getitem__>  s   € àr,   )r   é	   c                ó   • g r.   r/   r�  s     r*   r�  r‘  C  ó   € àr,   c                ó   • g r.   r/   r�  s     r*   r�  r‘  G  r”  r,   c                óž  • [        U[        5      (       a3  [        UR                  [	        U 5      5      6  Vs/ s H  o U   PM	     sn$ [        U[
        5      (       dG  [        U[        5      (       a&  [	        U5      S:X  a  [        S U 5       5      (       d   SU< S35       eX;  a  [        SU S35      eU R                  U5      $ s  snf )Nr   c              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr.   )rC   r9   )Ú.0re  s     r*   Ú	<genexpr>Ú'Document.__getitem__.<locals>.<genexpr>N  s    é € ÐRqÒopÐjkÔS]Ð^_Ôad×SeÐSeÒopùs   ‚zInvalid item number: i=r   úpage z not in document)
rC   r‚  rT  Úindicesr<   r9   r¶   ÚallÚ
IndexErrorÚ	load_page)r)   rh  r�  s      r*   r�  r‘  K  s¶   € Ü�aœ×ÑÜ%*¨A¯I©I´c¸$³iÓ,@Ñ%AÓBÒ%A ˜”GÑ%AÑBÐBÜ˜!œS×!Ñ!¤j°´E×&:Ñ&:¼sÀ1»vÈ»{ÌsÑRqÑopÓRq×OqÑOqð 	.Ø*¨¡t¨1Ð-ó	.Ðrà‹=Ü˜u Q CÐ'7Ð8Ó9Ð9Ø�~‰~˜aÓ Ð ùò Cs   ¸C
Nc                ó$  • [         nSq  SU l        SU l        SU l        SU l        / U l        0 U l        0 U l        0 U l        [        R                  " 5       U l
        [        U[        R                  5      (       a  Un	X�l        SU l         Uq gUn
Un[!        U5      n[        R"                  " U5      (       d2  UR$                  UR&                  -
  n
UR(                  UR*                  -
  nXl        X l        UGb"  Ub  Uc  Un[        U[0        [2        45      (       a  Oj[        U[4        5      (       a  [1        U5      nOI[        U[6        R8                  5      (       a  UR;                  5       nO[=        S[?        U5      < S35      eX l        [        U[0        [2        45      (       d   e[A        U5      S:X  a  [C        S5      e[        RD                  " [        RF                  " U5      [A        U5      5      n [        RH                  " U(       a  UOSU5      nGO—U(       Gad  U(       a   e[        U[R        5      (       a  OX[U        US5      (       a  [S        U5      nO;[U        US5      (       a  URV                  nO[=        S[?        U5      < SU< S35      eXl        [X        RZ                  R]                  U5      (       d  [_        SU S35      e[X        RZ                  Ra                  U5      (       d  [Q        SU S35      e[X        RZ                  Rc                  U5      S:X  a  [C        SU< S35      eU(       a/   [        Rd                  " U5      n[        RH                  " UU5      nOC [        Rf                  " U5      nO+[        R                  " 5       n[        Rh                  " U5      nU
S:”  a  US:”  a  [        Rj                  " XêX·5        O4[        Rl                  " U5      (       a  [        Rj                  " USSS5        Xàl        SU l7        U Rn                  (       a™  [p        Rs                  5       U l:        U Rv                  (       a  SU l        OU Ry                  5         U(       a$  UR{                  5       R}                  S5      (       d  U(       a%  SUR{                  5       ;   a   U R                  5       n[€        (       ae  [        U R                  [        R                  5      U l        U R                  (       a  [‚        R„                  U lC        O[‚        Rˆ                  U lC        Uq g! [J         a%  n[L        S	:”  a
  [O        5         [Q        S
5      UeSnAff = f! [J         a.  n[L        S	:”  a
  [O        5         [Q        SU< SU< S35      UeSnAff = f! [J         a*  n[L        S	:”  a
  [O        5         [Q        SU< S35      UeSnAff = f! [J         a%  n[L        S	:”  a
  [O        5         [Q        S5      UeSnAff = f! Uq f = f)aþ  Creates a document. Use 'open' as a synonym.

Notes:
    Basic usages:
    open() - new PDF document
    open(filename) - string or pathlib.Path, must have supported
            file extension.
    open(type, buffer) - type: valid extension, buffer: bytes object.
    open(stream=buffer, filetype=type) - keyword version of previous.
    open(filename, fileype=type) - filename with unrecognized extension.
    rect, width, height, fontsize: layout reflowable document
    on open (e.g. EPUB). Ignored if n/a.
r   FNTzbad stream: type(stream)=r   zCannot open empty stream.ra   r   zFailed to open streamÚabsoluter   zbad filename: type(filename)=z
 filename=zno such file: 'rî   z' is no filez!Cannot open empty file: filename=zFailed to open file z	 as type i�  iX  é   Úsvgúcannot open broken document)EÚJM_mupdf_show_errorsrÃ   Úis_encryptedÚmetadataÚ	FontInfosÚ	GraftmapsÚ
ShownPagesÚInsertedImagesr   ÚWeakValueDictionaryÚ
_page_refsrC   r£   rÇ   rÅ   Úthis_is_pdfr  rç  Úx1Úx0Úy1Úy0r>  r	   r   Ú
memoryviewr§  r>   r¨  rÂ  rÀ  rÉ   r<   ÚEmptyFileErrorÚfz_open_memoryÚpython_buffer_dataÚfz_open_document_with_streamrl   r  r{   ÚFileDataErrorrè  r@   r   ri   r
   ÚexistsÚFileNotFoundErrorr½  ÚgetsizeÚfz_open_fileÚfz_open_documentrÆ   Úfz_layout_documentÚfz_is_document_reflowablerö   r  Úgen_idÚ	_graft_idÚ
needs_passÚinit_docré  r  Úconvert_to_pdfr  r   Úpage_count_pdfÚpage_count2Úpage_count_fz)r)   rk   r	   Úfiletyperý   r‰  r2  r   ÚJM_mupdf_show_errors_oldÚpdf_documentr   r!  r%  Ústream2r2  ri  Ú	fz_streamrb  r<  s                      r*   r‘   ÚDocument.__init__T  s  € ô$ $8Ð Ø ÐðB	<Ø %ˆDŒNØ %ˆDÔØ %ˆDÔØ#ˆDŒMØ!ˆDŒNØ!ˆDŒNØ!ˆDŒOØ#%ˆDÔÜ&×:Ò:Ó<ˆDŒOÜ˜(¤E×$5Ñ$5×6Ñ6Ø'�Ø(”	Ø#'�Ô Øðh $<Ñ ðe ˆAØˆAÜ Ó%ˆAÜ×,Ò,¨Q×/Ñ/Ø—D‘D˜1Ÿ4™4‘K�Ø—D‘D˜1Ÿ4™4‘K�à!ŒJØ ŒKàÒ!ØÑ'¨HÑ,<ð  (�HÜ˜f¤u¬jÐ&9×:Ñ:ØÜ ¬	×2Ñ2Ü" 6›]‘FÜ ¬¯
©
×3Ñ3Ø#Ÿ_™_Ó.‘Fä#Ð&@´4¸³<±/ÀÐ$CÓDÐDØ$”ä! &¬5´*Ð*=×>Ñ>Ð>Ð>Ü�v“; !Ó#ô )Ð)DÓEÐEä×.Ò.¬u×/GÒ/GÈÓ/OÔQTÐU[ÓQ\Ó]�ðHÜ×<Ò<Î¹XÐWYÐ[bÓc’C÷
 Þ!Ð!�zÜ˜h¬×,Ñ,ØÜ˜X z×2Ñ2Ü" 8›}‘HÜ˜X v×.Ñ.Ø'Ÿ}™}‘Hä#Ð&D´T¸(³^Ñ4EÀ[ÀxÁkÐQRÐ$SÓTÐTØ%”
ô —w‘w—~‘~ h×/Ñ/Ü+¨o¸h¸ZÀqÐ,IÓJÐJÜŸ™Ÿ™¨×1Ñ1Ü'¨!¨H¨:°\Ð(BÓCÐCÜ—W‘W—_‘_ XÓ.°!Ó3Ü(Ð+MÀHÁ;ÈaÐ)PÓQÐQæðnÜ$)×$6Ò$6°xÓ$@˜	Ü#×@Ò@ÀÈ9ÓU™ð
YÜ#×4Ò4°XÓ>™ô ×'Ò'Ó)�Ü×&Ò& sÓ+�à�1‹u˜˜Q›Ü×(Ò(¨°Õ=Ü×0Ò0°×5Ñ5Ü×(Ò(¨¨c°3¸Ô;àŒIð  ˆDŒLà�|�|Ü!&§¡£�”Ø—?—?Ø(,�DÕ%à—M‘M”Oö  §¡Ó 0× 9Ñ 9¸%× @Ñ @ÆHÐQVÐZb×ZhÑZhÓZjÓQjðRØ ×/Ñ/Ó1˜÷
 Š{Ü#-¨t¯y©y¼%×:KÑ:KÓ#L�Ô Ø×#×#Ü',×';Ñ';�DÕ$ä',×':Ñ':�DÔ$à#;Ñ øô] !ó HÜ+¨aÓ/´NÔ4DÜ'Ð(?Ó@ÀaÐGûðHûô> %ó nÜ/°!Ó3¼Ô8HÜ+Ð.BÀ8Á,ÈiÐX`ÑWcÐcdÐ,eÓfÐlmÐmûðnûô %ó YÜ/°!Ó3¼Ô8HÜ+Ð.BÀ8Á,ÈaÐ,PÓQÐWXÐXûðYûô< %ó RÜ/°!Ó3¼Ô8HÜ+Ð,IÓJÐPQÐQûðRûð $<Ñ ús¦   ŠB X ÂE+X Ç: T5 ÈD'X Í-U' Í/X Í1V" ÎD*X Ò2W ÓA0X Ô5
U$Ô? UÕU$Õ$X Õ'
VÕ1)VÖVÖX Ö"
WÖ,%W×W×X ×
X×# XØXØX ØXc                ó   • U R                   $ r.   )rt  r0   s    r*   Ú__len__ÚDocument.__len__í  s   € Ø�‰Ðr,   c                óð   • U R                   (       a  SOSnU R                  c5  U R                  S:X  a  U SU R                  S S3$ U SU R                   S3$ U SU R                   SU R                  S S3$ )	Nzclosed ra   zDocument(<new PDF, doc# rD  z>)z
Document('ú')z', <memory, doc# )rÃ   r	   r   rÁ  )r)   rÃ   s     r*   rð   ÚDocument.__repr__ð  s}   € Ø!%§§‘I°Rˆ	Ø�;‰;ÑØ�y‰y˜B‹Ø#˜Ð$<¸T¿^¹^ÈAÐ<NÈbÐQÐQØ�[ 
¨4¯9©9¨+°RÐ8Ð8Ø�˜J t§y¡y kÐ1BÀ4Ç>Á>ÐRSÐBTÐTVÐWÐWr,   c           	     ó  • U R                   (       d  U R                  (       a  [        S5      e[        U SS9nUR                  (       d  g[
        R                  " [
        R                  " U5      [        S5      [        S5      [        S5      [        S5      5      nUR                  (       a  [
        R                  " U5      (       d  [        S	5      e[
        R                  " U5      n[        X25      n[
        R                  " XEU5        g)
zAdd new form font.údocument closed or encryptedr   ©rÎ   NÚRootÚAcroFormÚDRÚFontzPDF has no form fonts yet)rÃ   r¦  rÄ   rÏ   rÍ   r£   r!  Úpdf_trailerr  r†  rß   Úpdf_new_nameÚJM_pdf_obj_from_strrV  )r)   r   rÜ  rb  Úfontsrò  rK   s          r*   Ú_addFormFontÚDocument._addFormFontø  sÁ   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜t¨aÑ0ˆØ�~�~ØÜ×#Ò#Ü×!Ò! 3Ó'Ü˜Ó Ü˜Ó$Ü˜“Ü˜Ó óˆð ××¤u×'8Ò'8¸%×'@Ñ'@ÜÐ ;Ó<Ð<Ü×Ò Ó%ˆÜ Ó+ˆÜ×Ò˜E aÕ(r,   c                óL   • U R                  5       U   nU R                  U5        g)z$Delete TOC / bookmark item by index.N)Úget_outline_xrefsÚ_remove_toc_item)r)   Úidxr  s      r*   Údel_toc_itemÚDocument.del_toc_item  s%   € ð
 ×%Ñ%Ó'¨Ñ,ˆØ×Ñ˜dÕ#r,   c                ó   • U R                   (       d  U R                  (       a  [        S5      e/ n[        U SS9nUR                  (       d  U$ [
        R                  " [
        R                  " U5      [        S5      5      n[
        R                  " U[        S5      5      nUR                  (       d  U$ [
        R                  " U[        S5      5      n[        XQ5      n[        U5      n[
        R                  " U5      n[
        R                  " X'5        [
        R                  " U[        S5      5        [        U5       H&  n[        X5      u  pš[
        R                  " X*5        M(     UR!                  U5        UnU R#                  5         U$ )zDelete the TOC.rÕ  r   rÖ  r×  ÚOutlinesÚFirst)rÃ   r¦  rÄ   rÏ   rÍ   r£   r  rÛ  r  ÚJM_outline_xrefsr<   r  Úpdf_delete_objectrI  rT  ÚJM_INT_ITEMrp   rÃ  )r)   Úxrefsrb  r¹  ÚolrootÚfirstÚ
xref_countÚolroot_xrefrh  r<  r  r  s               r*   Ú_delToCÚDocument._delToC  s(  € à�>�>˜T×.×.ÜÐ;Ó<Ð<ØˆÜ˜t¨aÑ0ˆØ�~�~ØˆLä×!Ò!¤%×"3Ò"3°CÓ"8¼(À6Ó:JÓKˆä×#Ò# D¬(°:Ó*>Ó?ˆØ× × ØˆLä×"Ò" 6¬8°GÓ+<Ó=ˆä  Ó.ˆÜ˜“Zˆ
ä×&Ò& vÓ.ˆÜ×Ò Ô1Ü×Ò˜4¤¨*Ó!5Ô6ä�zÖ"ˆAÜ! %Ó+‰GˆAÜ×#Ò# CÖ.ñ #ð 	�‰�[Ô!ØˆØ�‰ŒØˆ
r,   c                ó¾   • [        U 5      n[        R                  " X!5        UR                  R                  (       a!  [        R
                  " UR                  5        g g r.   )rÏ   r£   Úpdf_delete_pagerÍ   Úrev_page_mapÚll_pdf_drop_page_tree)r)   ry  rb  s      r*   Ú_delete_pageÚDocument._delete_page4  s>   € Ü˜tÓ$ˆÜ×Ò˜sÔ(Ø�>‰>×&×&Ü×'Ò'¨¯©Õ8ð 'r,   c                ó¶   • [        U 5      n[        US[        R                  " U5      S-
  5      (       d  [	        [
        5      e[        R                  " X!5        g)zDelete object.r   N)rÏ   rÕ  r£   r·  rÄ   r¸  rë  ©r)   r  rb  s      r*   Ú_deleteObjectÚDocument._deleteObject:  sD   € ä˜tÓ$ˆÜ˜˜a¤×!3Ò!3°CÓ!8¸Ñ!:×;Ñ;ÜœlÓ+Ð+Ü×Ò Õ*r,   r¨  c                ó„  • S nUS:  a  SnO!X!R                   :¼  a  UR                   S-
  nOUnUS:  d  X1R                   :¼  a  UR                   S-
  nOUnUS:  a  [        S5      eUnXg::  a  SOSn	[        [        XgU	-   U	5      5      n
[        [	        U
5      5       Vs/ s H  o¸U-   PM	     nn/ n/ n[        [	        U
5      5       HO  nX«   nXË   nUR                  U5      nU R                  U5      nUR                  U5        UR                  U5        MQ     [        [	        U5      5       GH	  nXU      nUR                  5       n[	        U5      S:X  a  SnM.  XU      n[        R                  " 5       n[        U5      n[        R                  " U[        R                  " S5      U5        [        [        R                  " U5      5      n/ nU H?  nUS   [        :X  a  US   U
;  a  M  U" UXêU5      nU(       d  M.  UR                  U5        MA     U/ :w  d  Mï  UR!                  [#        U5      5        GM     gs  snf )	z«Insert links contained in copied page range into destination PDF.

Parameter values **must** equal those of method insert_pdf(), which must
have been previously executed.
c           	     óø  • U S   U-  n[        [        U5      5      nU S   [        :X  aL  [        S   nUR	                  U S   5      nU S   U-  nU" X   UR
                  UR                  U S   U5      n	U	$ U S   [        :X  a©  U S   S:¼  as  [        S   nU R                  S[        SS5      5      n
[        U
5      [        La  [        SS5      n
U" U S   U
R
                  U
R                  U S   U S	   U S	   U5      n	U	$ [        S
   n[        U S   5      nUSS nU S	   nU" X¼U5      n	 U	$ U S   [        :X  a  [        S   nU" U S	   U S	   U5      n	U	$ U S   [        :X  a  [        S   nU" U S   U5      n	U	$ Sn	U	$ )z5Create annotation object string for a passed-in link.ÚfromÚkindÚgoto1r×   ÚtoÚzoomr   Úgotor1rf   Úgotor2r   r¨  ÚlaunchÚurira   )r·   r¶   Ú	LINK_GOTOÚ
annot_skelÚindexre  rf  Ú
LINK_GOTORr=   r#  rÉ   Úget_pdf_strÚLINK_LAUNCHÚLINK_URI)ÚlnkÚxref_dstÚpno_srcrõ  r%  rý   Útxträ  r³  rà   Úpntr  r  s                r*   Ú	cre_annotÚ%Document._do_links.<locals>.cre_annotQ  s¾  € ð �F‘˜cÑ!ˆAÜœU 1›XÓ&ˆDØ�6‰{œiÓ'Ü  Ñ)�Ø—m‘m C¨¡KÓ0�Ø˜‘I ‘O�Ù˜H™M¨1¯3©3°·±°S¸±[À$ÓG�ðF ˆLðC �V‘¤
Ó*Ø�v‘; !Ó#Ü$ XÑ.�CØŸ'™' $¬¨a°«Ó4�CÜ˜C“y¬Ò-Ü# A q›k˜ÙØ˜F™ØŸ™ØŸ™Ø˜F™Ø˜F™Ø˜F™Øó�Eð6 ˆLô# % XÑ.�CÜ$ S¨¡YÓ/�BØ˜A˜b˜�BØ˜F™�AÙ  tÓ,‘Eð ˆLð �V‘¤Ó+Ü  Ñ*�Ù˜C ™K¨¨V©°dÓ;�ð ˆLð �V‘¤Ó(Ü  Ñ'�Ù˜C ™J¨Ó-�ð
 ˆLð �àˆLr,   r   r   z'start_at' must be >= 0r¨  Nr  r×   )rt  rÄ   rµ   rT  r<   Ú	page_xrefrp   Ú	get_linksr£   r}  rÛ   r`  rr  r€  Úfz_invert_matrixr	  Ú_addAnnot_FromStringr¶   )Údoc1Údoc2Ú	from_pageÚto_pageÚstart_atr  rÁ  rU  ÚsaÚincrr  rh  Úpno_dstÚxref_srcr  Úp_srcÚp_dstÚold_xrefÚnew_xrefÚpage_srcÚlinksÚpage_dstrõ  Úpage_src_pdf_documentÚictmÚlink_tabrT  Ú
annot_texts                               r*   Ú	_do_linksÚDocument._do_linksA  s  € ò ,	ðb �q‹=Ø‰BØŸ/™/Ó)Ø—‘ 1Ñ$‰BàˆBà�Q‹;˜'§_¡_Ó4Ø—‘ 1Ñ$‰BàˆBà�a‹<ÜÐ6Ó7Ð7Øˆà“H‰q "ˆô ”u˜R d¡¨DÓ1Ó2ˆÜ#(¬¨W«Ô#6Ó7Ò#6˜a˜”6Ñ#6ˆÐ7ð ˆØˆÜ”s˜7“|Ö$ˆAØ‘JˆEØ‘JˆEØ—~‘~ eÓ,ˆHØ—~‘~ eÓ,ˆHØ�O‰O˜HÔ%Ø�O‰O˜HÖ%ñ %ô ”s˜8“}×%ˆAØ A™JÑ'ˆHØ×&Ñ&Ó(ˆEô
 �5‹z˜Q‹Ø�ÙØ A™JÑ'ˆHô —.’.Ó"ˆCÜ$0°Ó$:Ð!Ü×$Ò$Ð%:¼E¿LºLÈ»OÈSÔQÜœ%×0Ò0°Ó5Ó6ˆDàˆHÛ�Ø�V‘9¤	Ó)¨q°©yÀÓ/GÙÙ& q¨(¸TÓB�
ß�:Ø—O‘O JÖ/ñ ð ˜2�~Ø×-Ñ-¬u°X«×?òA &ùò 8s   ÂH=c           	     óÖ  ^.^/^0• UR                   (       d  gS m.S m0U/4S jm/U/4S jnSU.U04S jjnS n	[        R                  " U 5      n
[        R                  " U5      nU R                   (       an  U	" U 5      nUR                  [	        S5      5      nUR                  [	        S	5      5      nUR                  5       (       d  UR                  [	        S	5      S
5      nGO][        R                  " U	" U5      5      nUR                  [	        S5      5        UR                  [	        S5      S
5        UR                  [	        S	5      5        UR                  [	        S	5      S
5        [        R                  " X,5      n[        R                  " X¯5      nUR                  [	        S5      5      nUR                  [	        S	5      5      nUR                  5       n[        R                  " U
US5      n[        R                  " [        R                  " U
5      [	        S5      5      nUR                  [	        S5      U5        X4::  a  [        X4S-   5      nO[        X4S-
  S5      n0 nU Hœ  nUU   nUR!                  5        VVVs/ s H  u  nnnU[        R"                  :X  d  M  UPM!     snnn HQ  n[        R$                  " UU5      nUR                  [	        S5      5        U" U5      u  nnU(       d  MH  SU/ S.UU'   MS     Mž     UR'                  5        Hš  n[        R$                  " UU5      n[        R                  " UU5      n[        R                  " U
U5      n T/" U / 5      n!U R                  5       n"[        R                  " U
U"S5      n#UR)                  U#5        U"UU   S'   U!UU   S'   Mœ     [        [+        U5      5       GH`  nXU-      n$UUU      nUR!                  5        VVVs/ s H  u  nnnU[        R"                  :X  d  M  UPM!     n%nnnU%(       d  MZ  [        R,                  " U$5      n&[        R                  " U&R/                  5       [	        S5      5      n'[        R
                  " U'5      (       d/  [        R                  " U&R/                  5       [	        S5      S
5      n'U% GHq  n[        R$                  " UU5      n[        R0                  " [        R2                  " US5      5      n([        R                  " UR                  [	        S5      5      5      nUS:X  a†   [        R                  " UU5      n)[        R                  " U
U)5      n+U+R                  5       n[        R                  " U
US5      n,[        R(                  " U'U,5        [        R(                  " UU,5        OPUU   nUS   R9                  U5      n-US   U-   n[        R                  " U
US5      n,[        R(                  " U'U,5        U((       d  GMZ  [        R(                  " UU,5        GMt     GMc     U" X­US9  gs  snnnf s  snnnf ! [4         a  n*[7        SU< SU* 35         Sn*A*GM´  Sn*A*ff = f)z�Insert widgets of copied page range into target PDF.

Parameter values **must** equal those of method insert_pdf() which
must have been previously executed.
Nc                ó2  • [        U R                  5       5       Hz  nU R                  U5      nUR                  [	        S5      5      n[        UR                  5       5       H/  nUR                  U5      nUR                  [	        S5      U5        M1     M|     g)z2Make sure all kids have correct "Parent" pointers.ÚKidsr©  N)rT  r¬  r­  r  r  rV  )Úacro_fieldsrh  rí   Úkidsr�  Úkids         r*   Úclean_kid_parentsÚ/Document._do_widgets.<locals>.clean_kid_parentsØ  s|   € ä˜;×4Ñ4Ó6Ö7�Ø$×2Ñ2°1Ó5�Ø×*Ñ*¬8°FÓ+;Ó<�Ü˜t×1Ñ1Ó3Ö4�AØ×,Ñ,¨QÓ/�CØ×$Ñ$¤X¨hÓ%7¸Ö@ó 5ò 8r,   c           	     óf  • S nS n[         R                  " X5      n[         R                  " X5      nUR                  [        S5      5      n	UR                  [        S5      5      n
U	R	                  5       (       a  U" XX)X:5        gU
R	                  5       (       a  U" XX:X)5        gU" XX'X8U5        g)a  Called for each pair of widgets having the same name.

Args:
    pdf: target MuPDF document
    acro_fields: object Root/AcroForm/Fields
    xref1, xref2: widget xrefs having same names
    name: (str) the name

Result:
    Defined or updated widget parent that points to both widgets.
c                óŒ  • [         R                  " XS5      n[         R                  " XS5      nUR                  U5      nUR                  U5        UR	                  5       (       d]  [         R
                  " X5      n	U	R                  [        S5      5        U	R                  [        S5      U5        UR                  U5        g[        UR                  5       5       He  n
UR                  U
5      nUR                  [        S5      U5        [         R                  " XR                  5       S5      nUR                  U5        Mg     g)z»Merge widget in xref2 into "Kids" list of widget xref1.

Args:
    xref1, kids1: target widget and its "Kids" array.
    xref2, kids2: source wwidget and its "Kids" array (may be empty).
r   r-  r©  N)r£   r¹  Úpdf_array_findr®  Úpdf_is_arrayÚpdf_load_objectrI  r  rV  Úpdf_array_pushrT  r¬  r­  r  )rb  r4  Úxref1Úkids1Úxref2Úkids2Úw1_indÚw2_indrä  r^  rh  r6  Úkid_inds                r*   Ú	re_targetÚ=Document._do_widgets.<locals>.join_widgets.<locals>.re_targetî  s  € ô ×/Ò/°¸AÓ>�Ü×/Ò/°¸AÓ>�à!×0Ñ0°Ó8�Ø×,Ñ,¨SÔ1à×)Ñ)×+Ñ+Ü"×2Ò2°3Ó>�Fð ×'Ñ'¬°«Ô6Ø×'Ñ'¬°Ó(:¸FÔCð ×(Ñ(¨Õ0ä" 5×#6Ñ#6Ó#8Ö9˜Ø#×1Ñ1°!Ó4˜Ø×(Ñ(¬°(Ó);¸VÔDÜ"'×"8Ò"8¸¿n¹nÓ>NÐPQÓ"R˜Ø×,Ñ,¨WÖ5ò	 :r,   c                ór  • [         R                  " U S5      nUR                  [        S5      U5        UR	                  [        S5      S5      n[         R
                  " X5      n	U	R                  5       n
[         R                  " X
S5      nUR                  [        S5      5      nUR                  [        S5      5        U	R                  [        S5      U5        UR                  [        S5      5      nUR                  [        S5      5        U	R                  [        S5      U5        UR                  [        S5      5        UR                  [        S5      U5        UR                  [        S5      5        UR                  [        S5      U5        [         R                  " XS5      n[         R                  " XS5      nUR                  U5        UR                  U5        UR                  U5      nUR                  U5        UR                  U5      nUR                  U5        UR                  U5        g	)
a@  Make new "Parent" for two widgets with same name.

Args:
    xref1, w1: first widget
    xref2, w2: second widget
    name: field name

Result:
    Both widgets have no "Kids". We create a new object with the
    name and a "Kids" array containing the widgets.
    Original widgets must be removed from AcroForm/Fields.
r   r-  r3  r   r   ÚFTÚAAr©  N)r£   r[  r¯  r  Úpdf_dict_put_arrayÚpdf_add_objectr  r¹  r  rI  rV  r>  r;  r®  )rb  r4  r?  Úw1rA  Úw2r   Únewr5  Únew_objÚnew_obj_xrefÚnew_indÚftÚaaÚind1Úind2rä  s                    r*   Ú
new_targetÚ>Document._do_widgets.<locals>.join_widgets.<locals>.new_target  sµ  € ô ×(Ò(¨¨aÓ0�Ø×,Ñ,¬X°c«]¸DÔAØ×-Ñ-¬h°vÓ.>ÀÓB�Ü×.Ò.¨sÓ8�Ø&×1Ñ1Ó3�Ü×0Ò0°ÀAÓF�ð —_‘_¤X¨d£^Ó4�Ø—‘¤¨£Ô/Ø×$Ñ$¤X¨d£^°RÔ8à—_‘_¤X¨d£^Ó4�Ø—‘¤¨£Ô/Ø×$Ñ$¤X¨d£^°RÔ8ð —‘¤¨£Ô.Ø—‘¤¨Ó 2°GÔ<Ø—‘¤¨£Ô.Ø—‘¤¨Ó 2°GÔ<ô ×-Ò-¨c¸!Ó<�Ü×-Ò-¨c¸!Ó<�Ø×#Ñ# DÔ)Ø×#Ñ# DÔ)ð "×0Ñ0°Ó6�Ø×,Ñ,¨SÔ1Ø!×0Ñ0°Ó6�Ø×,Ñ,¨SÔ1à×*Ñ*¨7Õ3r,   r3  N)r£   r=  r  r  r<  )rb  r4  r?  rA  r   rF  rW  rM  rN  r@  rB  s              r*   Újoin_widgetsÚ*Document._do_widgets.<locals>.join_widgetsá  s›   € ò6ò<04ôd ×&Ò& sÓ2ˆBÜ×&Ò& sÓ2ˆBØ—O‘O¤H¨VÓ$4Ó5ˆEØ—O‘O¤H¨VÓ$4Ó5ˆEð ×!Ñ!×#Ñ#Ù˜#¨E¸%ÕGØ×#Ñ#×%Ñ%Ù˜#¨E¸%ÕGá˜3¨U¸À4ÕHr,   c           	     óœ  >• [         R                  " U [        S5      5      nUR                  5       (       d  U$ [	        UR                  5       5       Hv  nUR                  U5      n[         R                  " [         R                  " U[        S5      5      5      (       a
  T" XA5      nMW  UR                  UR                  5       5        Mx     U$ )zFReturn xref list of leaf kids for a parent.

Call with an empty list.
r3  )
r£   r  r  r<  rT  r¬  r­  r†  rp   r  )rí   Ú	kids_listr5  rh  r6  Úget_kidss        €r*   r]  Ú&Document._do_widgets.<locals>.get_kidsK  s£   ø€ ô
 ×%Ò% f¬h°vÓ.>Ó?ˆDØ×$Ñ$×&Ñ&Ø Ð Ü˜4×-Ñ-Ó/Ö0�Ø×(Ñ(¨Ó+�Ü×$Ò$¤U×%7Ò%7¸¼XÀfÓ=MÓ%N×OÑOÙ (¨Ó 8’Ià×$Ñ$ S§^¡^Ó%5Ö6ñ 1ð Ðr,   c                ó�   >• / n[         R                  " U [        S5      5      nUR                  5       nUS:X  a  X14$ T" X!5      nX14$ )z:Get the xref of top "Parent" and the list of leaf widgets.r©  r   )r£   r  r  r  )r^  r\  rí   Úparent_xrefr]  s       €r*   Ú
kids_xrefsÚ(Document._do_widgets.<locals>.kids_xrefs[  sQ   ø€ àˆIÜ×'Ò'¨´¸Ó0BÓCˆFØ ×+Ñ+Ó-ˆKØ˜aÓØ"Ð-Ð-Ù  Ó3ˆIØÐ)Ð)r,   c                ó<  >• 0 n[        [        R                  " U5      5       Hp  n[        R                  " X5      nUR	                  5       n[        R
                  " U[        S5      5      nUR                  U/ 5      nUR                  U5        XƒU'   Mr     UR                  5        Hj  u  p˜[        U5      S:  a  M  USS u  p«U(       a  T" XX«U	5        M0  U	SU S3-   n[        R                  " X5      nUR                  [        S5      U5        Ml     T" U5        g)z6Handle any widget name duplicates caused by the merge.r-  r   Nz [rš  )rT  r£   r¬  r­  r  Úpdf_dict_get_text_stringr  r=   rp   rG   r<   r=  r¯  )rb  r4  Újoin_duplicatesÚnamesrh  Úwobjectr  r-  rí  r   Úxref0r?  Únewnamer7  rY  s                €€r*   Údeduplicate_namesÚ/Document._do_widgets.<locals>.deduplicate_namese  sû   ø€ àˆEô œ5×.Ò.¨{Ó;Ö<�Ü×-Ò-¨kÓ=�Ø×)Ñ)Ó+�ô ×2Ò2°7¼HÀS»MÓJ�ØŸ	™	 ! RÓ(�Ø—‘˜TÔ"Ø �a“ñ =ð  %Ÿ{™{ž}‘�Ü�u“: “>ÙØ$ R a˜y‘�Þ"Ù  °5ÀÖFà" r¨%¨° ]Ñ2�GÜ#×3Ò3°CÓ?�GØ×4Ñ4´X¸c³]ÀGÖLñ  -ñ ˜kÕ*r,   c                ó„   • [         R                  " U 5      n[         R                  " [         R                  " U5      S5      $ )z,Retrieve the AcroForm dictionary form a PDF.úRoot/AcroForm)r£   Úpdf_document_from_fz_documentÚpdf_dict_getprÛ  )r2  rb  s     r*   Úget_acroformÚ*Document._do_widgets.<locals>.get_acroform�  s0   € ä×5Ò5°cÓ:ˆCä×&Ò&¤u×'8Ò'8¸Ó'=¸ÓOÐOr,   ÚFieldsr  r   r   r×  rØ  r   r¨  ÚP)r'  Úold_kidsÚnew_kidsr'  ru  r§  zAA/Cr©  zcannot copy widget at xref=r€   rt  )re  ©F)Úis_form_pdfr£   rn  r  r  r<  rK  Úpdf_deep_copy_objrI  Úpdf_graft_mapped_objectrL  r  r¹  rÛ  rV  rT  Úannot_xrefsrV  r=  Úkeysr>  r<   rÚ   r  r†  ro  rl   r  r  )1r·  r3  Úgraftmapr  r  r  re  ra  rj  rp  ÚtarpdfÚsrcpdfÚacror4  Útar_coÚ
acro_graftÚacro_tarÚtar_xrefÚacro_tar_indr¹  Ú	src_rangeÚparentsrh  Úsrc_pager  Úwtyper<  Úw_objr`  rt  rí   Úparent_graftÚ
parent_tarÚkids_xrefs_newÚparent_xref_newÚ
parent_indÚtar_pageÚw_xrefsÚtar_page_pdfÚ
tar_annotsÚis_aacÚw_obj_graftri  Ú	w_obj_tarÚw_obj_tar_indrä  r7  r]  rY  s1                                                 @@@r*   Ú_do_widgetsÚDocument._do_widgetsÇ  s   ú€ ð ��Øò	Aòh	IõT	õ 	*÷	+ð 	+ò8	Pô ×4Ò4°SÓ9ˆÜ×4Ò4°SÓ9ˆà�?�?á Ó$ˆDà×+Ñ+¬H°XÓ,>Ó?ˆKØ×&Ñ&¤x°£~Ó6ˆFØ×&Ñ&×(Ñ(Ø×0Ñ0´¸$³ÀÓC�ùô ×*Ò*©<¸Ó+<Ó=ˆDð ×Ñœh xÓ0Ô1Ø×#Ñ#¤H¨XÓ$6¸Ô:Ø×Ñœh t›nÔ-Ø×#Ñ#¤H¨T£N°AÔ6ô ×6Ò6°xÓFˆJô ×+Ò+¨FÓ?ˆHØ"×/Ñ/´¸Ó0BÓCˆKØ×*Ñ*¬8°D«>Ó:ˆFð  ×*Ñ*Ó,ˆHÜ ×1Ò1°&¸(ÀAÓFˆLÜ×%Ò%¤e×&7Ò&7¸Ó&?ÄÈ&ÓAQÓRˆDØ×Ñœh zÓ2°LÔAàÓÜ˜i°1©Ó5‰Iä˜i°1©°bÓ9ˆIàˆó ˆAØ˜1‘vˆHð '/×&:Ñ&:Ô&<õâ&<‘N�D˜% ØœE×2Ñ2Ñ2÷ Ù&<ö�ô
 ×-Ò-¨f°dÓ;�Ø×"Ñ"¤8¨C£=Ô1ñ )3°5Ó(9Ñ%�˜Xß�;à$%Ø$,Ø$&ñ,�G˜KÓ(óñ ð& —L‘L–NˆDÜ×*Ò*¨6°4Ó8ˆFÜ ×8Ò8¸À6ÓJˆLÜ×-Ò-¨f°lÓCˆJÙ% j°"Ó5ˆNØ(×3Ñ3Ó5ˆOÜ×/Ò/°¸ÈÓKˆJØ×&Ñ& zÔ2Ø(7ˆG�D‰M˜*Ñ%Ø(6ˆG�D‰M˜*Ó%ñ #ô ”s˜9“~×&ˆAà a™<Ñ(ˆHð ˜9 Q™<Ñ(ˆHð
 '/×&:Ñ&:Ô&<õâ&<‘N�D˜% ØœE×2Ñ2Ñ2÷ Ù&<ð ò ö
 Ùô !×6Ò6°xÓ@ˆLô ×+Ò+¨L×,<Ñ,<Ó,>ÄÈÓ@RÓSˆJÜ×%Ò% j×1Ñ1Ü"×5Ò5Ø ×$Ñ$Ó&¬°Ó(:¸Aó�
ô  �Ü×-Ò-¨f°dÓ;�ô ×*Ò*¬5×+>Ò+>¸uÀfÓ+MÓN�ô $×.Ò.Ø×&Ñ&¤x°Ó'9Ó:ó�ð  !Ó#ð!Ü&+×&CÒ&CÀHÈeÓ&T˜ô !&× 4Ò 4°V¸[Ó I�IØ(×3Ñ3Ó5�HÜ$)×$:Ò$:¸6À8ÈQÓ$O�MÜ×(Ò(¨°]ÔCÜ×(Ò(¨°mÕDà$ [Ñ1�FØ  Ñ,×2Ñ2°4Ó8�CØ% jÑ1°#Ñ6�HÜ$)×$:Ò$:¸6À8ÈQÓ$O�MÜ×(Ò(¨°]ÔC÷ ‘6Ü×(Ò(¨°×?ô=  ñ5 'ñt 	˜&¸ÓOùômùôHøô> %ó !Ü'Ð*FÀÁÀrÈ!ÈÐ(MÔNÞ ûð!ús0   É?X2
ÊX2
Ï,X9
ÐX9
Ô*Y Ù 
Y(Ù
Y#Ù#Y(c           	     ó�  • [        U 5      n[        R                  " [        R                  " U5      [	        S5      [	        S5      [	        S5      [	        S5      5      n[        R
                  " USU-  S-   5      n[        R                  " U[	        S5      [	        S5      5      n[        R                  " U5      n[        U5      nU$ )Nr×  ÚNamesÚEmbeddedFilesr   r   r¸  r¹  )rÏ   r£   r!  rÛ  r  r­  r#  r$  )r)   rä  rb  rf  ÚentryÚfilespecrÔ  Úconts           r*   Ú_embeddedFileGetÚDocument._embeddedFileGet  s¡   € Ü˜tÓ$ˆÜ×#Ò#Ü×!Ò! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×#Ò# E¨1¨S©5°©7Ó3ˆÜ×&Ò& u¬h°t«n¼hÀs»mÓLˆÜ×#Ò# HÓ-ˆÜ Ó$ˆØˆr,   c                ó¨   • U R                  5       nX;   a  UR                  U5      nU$ U[        [        U5      5      ;   a  UnU$ [	        SU S35      e)Nrî   z' not in EmbeddedFiles array.)Úembfile_namesr  rT  r<   rÄ   )r)   rH   Ú	filenamesrä  s       r*   Ú_embeddedFileIndexÚDocument._embeddedFileIndex  sa   € Ø×&Ñ&Ó(ˆ	ØÓØ—/‘/ $Ó'ˆCð
 ˆ
ð	 ”Uœ3˜y›>Ó*Ó*ØˆCð ˆ
ô ˜q  Ð&CÐDÓEÐEr,   c           	     óf  • [        U 5      n[        U5      nUR                  (       d  [        [        5      e[
        R                  " [
        R                  " U5      [        S5      [        S5      [        S5      [        S5      5      n[
        R                  " U5      (       d€  [
        R                  " [
        R                  " U5      [        S5      5      n	[
        R                  " US5      n[
        R                  " U	U[        S5      [        S5      [        S5      5        [        XgX4US5      n
[
        R                  " [
        R                  " U
[        S5      [        S5      5      5      n[
        R                  " U[
        R                   " U5      5        [
        R                  " XŠ5        U$ )Nr×  rš  r›  é   r   r¸  r¹  )rÏ   r/  rÍ   rÀ  r0  r£   r!  rÛ  r  r<  r  rS  rR  ÚJM_embed_filer  r>  r±  )r)   r   r5  rk   rS  rË  rb  rÉ  rf  r¹  Ú	fileentryr  s               r*   Ú_embfile_addÚDocument._embfile_add&  sE  € Ü˜tÓ$ˆÜ! 'Ó*ˆØ��Üœ^Ó,Ð,ä×#Ò#Ü×!Ò! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×!Ò! %×(Ñ(Ü×%Ò%¤e×&7Ò&7¸Ó&<¼hÀvÓ>NÓOˆDÜ×'Ò'¨¨QÓ/ˆEÜ×ÒØØÜ˜WÓ%Ü˜_Ó-Ü˜WÓ%ôô " #¨XÀ$ÈÓJˆ	Ü×ÒÜ×#Ò# I¬x¸«~¼xÈ»}ÓMóˆô 	×Ò˜U¤E×$=Ò$=¸dÓ$CÔDÜ×Ò˜UÔ.Øˆr,   c           	     ó  • [        U 5      n[        R                  " [        R                  " U5      [	        S5      [	        S5      [	        S5      [	        S5      5      n[        R
                  " X1S-   5        [        R
                  " X15        g )Nr×  rš  r›  r   )rÏ   r£   r!  rÛ  r  r®  )r)   rä  rb  rf  s       r*   Ú_embfile_delÚDocument._embfile_delE  sl   € Ü˜tÓ$ˆÜ×#Ò#Ü×!Ò! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô 	×Ò˜u¨A¡gÔ.Ü×Ò˜uÕ*r,   c           	     ó¨  • [        U 5      nSnSn[        R                  " U5      n[        R                  " U[	        S5      [	        S5      [	        S5      [	        S5      5      n[        R
                  " USU-  S-   5      n[        R                  " U[	        S5      5      n	U	R                  (       a  [        R                  " U	5      nXRS'   [        R                  " [        R                  " U[	        S	5      5      5      n
[        U
5      U[        '   [        R                  " [        R                  " U[	        S
5      5      5      n
[        U
5      U[        '   [        R                  " [        R                  " U[	        S5      5      5      n
[        U
5      U[        '   SnSn[        R                  " U[	        S5      [	        S	5      5      n[        R                  " U5      n[        R                  " U[	        S5      5      nUR                  (       a  [        R                  " U5      n[        R                  " U[	        S5      5      nUR                  (       a  [        R                  " U5      nOQ[        R                  " U[	        S5      [	        S5      5      nUR                  (       a  [        R                  " U5      nXÂ[         '   X²["        '   U$ )Nr   r×  rš  r›  r   r   ÚCIÚ
collectionr¹  r»  r¼  r¨  r¸  r½  rN  r¾  r¿  )rÏ   r£   rÛ  r!  r  r­  r  rÍ   r  r	  rÄ  rÅ  Údictkey_ufilenamer
  rÆ  r  rÈ  rÇ  )r)   rä  Úinfodictrb  r  Úci_xrefÚtrailerrf  r²  Úcir   Úlen_rN  r©  s                 r*   Ú_embfile_infoÚDocument._embfile_infoQ  s  € Ü˜tÓ$ˆØˆØˆä×#Ò# CÓ(ˆä×#Ò#ØÜ˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×Ò  q¨¡u¨Q¡wÓ/ˆÜ×Ò ¤8¨D£>Ó2ˆØ�=�=Ü×&Ò& rÓ*ˆGØ!(�ÑÜ×'Ò'¬×(:Ò(:¸1¼hÀs»mÓ(LÓMˆÜ%8¸Ó%>ˆÔ!Ñ"ä×'Ò'¬×(:Ò(:¸1¼hÀt»nÓ(MÓNˆÜ&9¸$Ó&?ˆÔ"Ñ#ä×'Ò'¬×(:Ò(:¸1¼hÀvÓ>NÓ(OÓPˆÜ"3°DÓ"9ˆ”ÑàˆØˆÜ×'Ò'¨¬8°D«>¼8ÀC»=ÓIˆ	Ü×Ò 	Ó*ˆÜ×Ò˜y¬(°8Ó*<Ó=ˆØ�<�<Ü×#Ò# AÓ&ˆDä×Ò˜y¬(°4«.Ó9ˆØ�<�<Ü×!Ò! !Ó$‰Bä×#Ò# I¬x¸Ó/AÄ8ÈFÓCSÓTˆAØ�|�|Ü×%Ò% aÓ(�Ø!#”ÑØ#'”Ñ Øˆr,   c           	     óÒ  • [        U 5      n[        R                  " [        R                  " U5      [	        S5      [	        S5      [	        S5      [	        S5      5      n[        R
                  " U5      (       ao  [        R                  " U5      n[        SUS5       HG  n[        [        R                  " [        R                  " X55      5      5      nUR                  U5        MI     gg)z Get list of embedded file names.r×  rš  r›  r   r   N)rÏ   r£   r!  rÛ  r  r<  r¬  rT  rÄ  r	  r­  rp   )r)   rÃ  rb  rf  rJ   rh  r  s          r*   Ú_embfile_namesÚDocument._embfile_names€  s¸   € ä˜tÓ$ˆÜ×#Ò#Ü×!Ò! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×Ò˜e×$Ñ$Ü×#Ò# EÓ*ˆAÜ˜1˜a –^�Ü)Ü×0Ò0Ü!×/Ò/°Ó9óó�ð
 —‘ Ö$ò $ð %r,   c           	     ó”  • [        U 5      nSn[        R                  " [        R                  " U5      [	        S5      [	        S5      [	        S5      [	        S5      5      n[        R
                  " USU-  S-   5      n	[        R                  " U	[	        S5      [	        S5      5      n
U
R                  (       d  [        S	[        5        [        U5      nU(       a1  UR                  (       a   UR                  (       d  [        [        5      eUR                  (       až  U(       a—  UR                  (       a†  [        XjUS5        [        R                  " U5      u  pÍ[        R                  " U5      n[        R                  " U
[	        S
5      U5        [        R                   " X®[	        S5      [	        S5      5        [        R"                  " U
5      nU(       a!  [        R$                  " U	[	        S5      U5        U(       a!  [        R$                  " U	[	        S5      U5        U(       a!  [        R$                  " U	[	        S5      U5        U$ )Nr   r×  rš  r›  r   r   r¸  r¹  rM  rN  r¾  r¿  r»  r¼  )rÏ   r£   r!  rÛ  r  r­  rÍ   rÂ  rÃ  r/  rÀ  r0  r1  rP  rQ  rV  rR  r  r¯  )r)   rä  r5  rk   rS  rË  rb  r  rf  rœ  r�  r&  r<   r<  rT  s                  r*   Ú_embfile_updÚDocument._embfile_upd”  s”  € Ü˜tÓ$ˆØˆÜ×#Ò#Ü×!Ò! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×#Ò# E¨1¨S©5°©7Ó3ˆä×&Ò& u¬h°t«n¼hÀs»mÓLˆØ×"×"ÜÐ-Ô/CÔDÜ  Ó)ˆÞ�w×)×)°#·.·.Üœ^Ó,Ð,Ø�>�>žg¨'×*<×*<Ü˜S¨C°Ô3ä×,Ò,¨SÓ1‰FˆCÜ×!Ò! #Ó&ˆAÜ×Ò˜x¬°$«¸Ô;Ü×Ò ¬X°hÓ-?ÄÈ&ÓAQÔRÜ×Ò Ó)ˆÞÜ×*Ò*¨5´(¸3³-ÀÔJæÜ×*Ò*¨5´(¸4³.À)ÔLæÜ×*Ò*¨5´(¸6Ó2BÀDÔIØˆr,   c           	     óB  • U R                   (       a  [        S5      e[        (       a!  [        R                  " U R
                  U5      $ [        U 5      nSnSnSnSn[        R                  " [        R                  " U5      [        S5      5      nUR                  (       d  g[        R                  " U[        S5      5      nUR                  (       d  g[        R                  " U[        S	5      5      n	U	R                  (       d  g/ n
[        Xš5      n
[        U
5      n[        U5      nU(       d  gX¼:w  a  [        S
5      e[        U5       GHÏ  n[!        X­   5      nX   nUS   n[#        U[$        5      (       d  [        S5      eX­   U[&        '   [        R(                  " X.5      n[        R*                  " [        R                  " U[        S5      5      5      nUS:X  a  SUU'   OUS:X  a  SUU'   OUS:X  a
  SUU'   SUU'   [        R*                  " [        R                  " U[        S5      5      5      nUS:  a  SUU'   OUS:”  a  SUU'   [        R                  " U[        S5      5      n[        R,                  " U5      (       a£  [        R.                  " U5      S:X  a‰  [        R0                  " [        R2                  " US5      5      [        R0                  " [        R2                  " US5      5      [        R0                  " [        R2                  " US5      5      4nUU[4        '   Sn[        R                  " U[        S5      5      nUR                  (       a  [        R,                  " U5      (       d*  [        R6                  " U[        S5      [        S5      5      n[        R,                  " U5      (       aE  [        R.                  " U5      S:X  a+  [        R0                  " [        R2                  " US5      5      n[9        U5      UU'   UUS'   XñU'   GMÒ     g)z4Add color info to all items of an extended TOC list.r¿   r  rÎ  rè  Úcollapser×  Nrè  ré  z$internal error finding outline xrefsr   zneed non-simple TOC formatr¹  r   Tr   ÚCountr   Frþ  ÚDestÚAÚDr   rr  )rÃ   rÄ   r  r   ÚDocument_extend_toc_itemsrÅ   rÏ   r£   r  rÛ  r  rÍ   rê  r<   rž  rT  r9   rC   r:   r  r=  r  r<  r¬  r  r­  Údictkey_colorr!  rœ  )r)   rG   rb  r  rÎ  rè  rÁ  r¹  rî  rï  rí  rJ   rŒ  rh  r  rH   ÚitemdictÚbmrÑ  Úcountrg  ro  Úzr  s                           r*   Ú_extend_toc_itemsÚDocument._extend_toc_items¸  sC  € à�>�>ÜÐ.Ó/Ð/ßŠ;Ü×2Ò2°D·I±I¸uÓEÐEÜ˜tÓ$ˆØˆØˆØˆØˆä×!Ò!¤%×"3Ò"3°CÓ"8¼(À6Ó:JÓKˆØ��ØÜ×#Ò# D¬(°:Ó*>Ó?ˆØ× × ØÜ×"Ò" 6¬8°GÓ+<Ó=ˆØ××ØØˆÜ  Ó.ˆÜ�‹JˆÜ�‹JˆÞØØ‹6ÜÐDÓEÐEô �q—ˆAÜ�u‘x“=ˆDØ‘8ˆDØ˜A‘wˆHÜ˜h¬×-Ñ-Ü Ð">Ó?Ð?Ø%*¡XˆH”\Ñ"Ü×&Ò& sÓ1ˆBÜ×$Ò$¤e×&8Ò&8¸¼XÀc»]Ó&KÓLˆEØ˜‹zØ#'�˜Ò Ø˜!“Ø!%�˜’Ø˜!“Ø#'�˜Ñ Ø!%�˜‘Ü×$Ò$¤e×&8Ò&8¸¼XÀgÓ=NÓ&OÓPˆEØ�q‹yØ%)�˜Ò"Ø˜“Ø%*�˜Ñ"Ü×$Ò$ R¬°#«Ó7ˆCÜ×!Ò! #×&Ñ&¬5×+>Ò+>¸sÓ+CÀqÓ+Hä×)Ò)¬%×*=Ò*=¸cÀ1Ó*EÓFÜ×)Ò)¬%×*=Ò*=¸cÀ1Ó*EÓFÜ×)Ò)¬%×*=Ò*=¸cÀ1Ó*EÓFð�ð
 +0�œÑ'ØˆAÜ×$Ò$ R¬°&Ó)9Ó:ˆCØ—>—>¬×);Ò);¸C×)@Ñ)@Ü×)Ò)¨"¬h°s«m¼XÀc»]ÓK�Ü×!Ò! #×&Ñ&¬5×+>Ò+>¸sÓ+CÀqÓ+HÜ×%Ò%¤e×&9Ò&9¸#¸qÓ&AÓB�Ü" 1›XˆH�T‰NØˆD�‰GØ�!ŒHòK r,   c                óT   • [        U5      nX R                  ;   a  U R                  U	 gg)z&Remove a page from document page dict.N)r[  r­  )r)   r×   Úpids      r*   Ú_forget_pageÚDocument._forget_pageþ  s&   € ä�‹hˆØ—/‘/Ó!à—‘ Ñ$ð "r,   c                óŒ  • [        U 5      nUnUS:  a  SnUS:¼  a3  [        R                  " U5      u  pšn[        R                  " S XšUS5      nO}[        R                  " U5      u  pšU	(       a  [        R                  " X)U
SS5      nOD[        Xq5      nUR                  (       d  [        SUS S35      e[        R                  " S XÖS5      n/ n[        U5       Hg  n[        R                  " XÏ5      n[        R                  " UUS5      nUS:¼  a  UnUS:”  a  UR                  UU45        MT  UR                  US45        Mi     U$ )Né   r   zfont at xref rD  z is not supportedrÓ  )rÏ   r£   Úfz_lookup_cjk_fontÚfz_new_font_from_memoryÚfz_lookup_base14_fontÚJM_get_fontbufferrÍ   rl   Úfz_new_font_from_bufferrT  Úfz_encode_characterÚfz_advance_glyphrp   )r)   r  ÚbfnameÚextÚorderingÚlimiträ  rb  ÚmylimitrÉ  rÊ  r  rÜ  rÔ  Úwlistrh  ÚglyphÚadvs                     r*   Ú_get_char_widthsÚDocument._get_char_widths  s'  € Ü˜tÓ$ˆØˆØ�S‹=ØˆGØ�q‹=Ü %× 8Ò 8¸Ó BÑˆD˜Ü×0Ò0°°tÀ5È!ÓL‰Dä×4Ò4°VÓ<‰JˆDÞÜ×4Ò4°VÀ4ÈÈAÓN‘ä'¨Ó2�Ø—~—~Ü# m°D¸°8Ð;LÐ$MÓNÐNä×4Ò4°T¸3ÀQÓG�ØˆÜ�w–ˆAÜ×-Ò-¨dÓ6ˆEÜ×(Ò(¨¨u°aÓ8ˆCØ˜1‹}Ø�Ø�q‹yØ—‘˜u c˜lÖ+à—‘˜u c˜lÖ+ñ  ð ˆr,   c           	     óò  • [        U 5      n/ n[        R                  " S5      n[        R                  " [        R                  " U5      [        S5      U5      nUR                  (       d  U$ [        R                  " [        R                  " U[        S5      5      5      nUR                  (       a  [        X%5        U$ [        R                  " [        R                  " U[        S5      [        S5      5      5      nUR                  (       a  [        X%5        U$ [        R                  " [        R                  " U[        S5      5      5      nUR                  (       a  [        R                  " U5      (       d  U$ [        R                  " U5      n[        U5       HV  n[        R                  " [        R                  " [        R                  " Xh5      [        S5      5      5      n[        X%5        MX     U$ )NÚ
PageLabelsr×  ÚNumsr3  )rÏ   r£   rÜ  r!  rÛ  r  rÍ   Úpdf_resolve_indirectr  ÚJM_get_page_labelsr<  r¬  rT  r­  )	r)   rb  r¦   Ú
pagelabelsr  Únumsr5  rJ   rh  s	            r*   Ú_get_page_labelsÚDocument._get_page_labels#  sg  € Ü˜tÓ$ˆØˆÜ×'Ò'¨Ó5ˆ
Ü×!Ò!¤5×#4Ò#4°SÓ#9¼8ÀFÓ;KÈZÓXˆØ�~�~ØˆIä×)Ò)¬5×+=Ò+=¸sÄHÈVÓDTÓ+UÓVˆØ�?�?Ü˜rÔ(ØˆIä×)Ò)¬5×+>Ò+>¸sÄHÈVÓDTÔV^Ð_eÓVfÓ+gÓhˆØ�?�?Ü˜rÔ(ØˆIä×)Ò)¬5×+=Ò+=¸sÄHÈVÓDTÓ+UÓVˆØ��¤e×&8Ò&8¸×&>Ñ&>ØˆIÜ×Ò Ó%ˆÜ�q–ˆAÜ×-Ò-Ü×&Ò&Ü×+Ò+¨DÓ4Ü  Ó(óóˆDô ˜rÖ(ñ ð ˆ	r,   c                óŽ   •  [         R                  " U R                  U5      $ ! [         a    [        S:”  a
  [        5          gf = f)zGet metadata.r   ra   )r£   Úfz_lookup_metadata2rÅ   rl   r  r{   r�  s     r*   Ú_getMetadataÚDocument._getMetadataC  s=   € ð	Ü×,Ò,¨d¯i©i¸Ó=Ð=øÜó 	Ü# aÓ'¬NÔ,<Ùð	ús   ‚ # £AÁAc                ó˜  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " [        R                  " U5      [        S5      5      n[        R
                  " U[        S5      5      nUR                  (       d˜  [        R                  " US5      n[        R                  " U[        S5      [        S5      5        [        R                  " X5      n[        R                  " U[        S5      U5        [        R
                  " U[        S5      5      n[        R                  " U5      $ )z/Get xref of Outline Root, create it if missing.rÕ  r×  rè  rr  ÚType)rÃ   r¦  rÄ   rÏ   r£   r  rÛ  r  rÍ   r[  rV  rL  r  )r)   rb  r¹  rî  Úind_objs        r*   Ú_getOLRootNumberÚDocument._getOLRootNumberK  sæ   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆä×!Ò!¤5×#4Ò#4°cÓ#:¼HÀVÓ<LÓMˆä×#Ò# T¬8°JÓ+?Ó@ˆØ× × Ü×'Ò'¨¨aÓ0ˆFÜ×Ò ¬°Ó(8¼(À:Ó:NÔOÜ×*Ò*¨CÓ8ˆGÜ×Ò ¤h¨zÓ&:¸GÔDÜ×'Ò'¨¬x¸
Ó/CÓDˆFÜ×Ò Ó(Ð(r,   c                óÂ  • [        U SS9nUR                  (       d  g/ n[        R                  " [        R                  " U5      [        S5      5      nUR                  (       a{  [        R                  " U5      n[        U5       HV  n[        R                  " X55      n[        R                  " U5      n[        R                  " U5      nUR                  U5        MX     U$ )zGet PDF file id.r   rÖ  NÚID)rÏ   rÍ   r£   r  rÛ  r  r¬  rT  r­  r	  ÚbinasciiÚhexlifyrp   )	r)   rb  ÚidlistÚidentityrJ   rh  r²  r   Úhex_s	            r*   Ú_getPDFfileidÚDocument._getPDFfileid\  s¨   € ä˜t¨aÑ0ˆØ�~�~ØØˆÜ×%Ò%¤e×&7Ò&7¸Ó&<¼hÀt»nÓMˆØ××Ü×#Ò# HÓ-ˆAÜ˜1–X�Ü×'Ò'¨Ó4�Ü×/Ò/°Ó2�Ü×'Ò'¨Ó-�Ø—‘˜dÖ#ñ	 ð
 ˆr,   c                ó0  • U R                   (       d  U R                  (       a  [        S5      eU R                  n[	        U[
        R                  5      (       a  [
        R                  " U5      O[
        R                  " U5      nUnUS:  a  XT-  nUS:  a  M  XT:¼  a  [        [        5      e[        U 5      n[
        R                  " Xe5      n[
        R                  " U[
        R                  5      n/ n	/ n
UR                  (       a  [        XhX’SU
5        U	$ )z,List fonts, images, XObjects used on a page.rÕ  r   )rÃ   r¦  rÄ   rÅ   rC   r£   rÇ   Úpdf_count_pagesÚfz_count_pagesÚMSG_BAD_PAGENOrÏ   Úpdf_lookup_page_objÚpdf_dict_get_inheritableÚPDF_ENUM_NAME_ResourcesrÍ   ÚJM_scan_resources)r)   ry  Úwhatr2  Ú	pageCountrJ   rb  ÚpagerefÚrsrcÚlisteÚtracers              r*   Ú_getPageInfoÚDocument._getPageInfol  sÙ   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ø�i‰iˆÜ2<¸SÄ%×BSÑBS×2TÑ2T”E×)Ò)¨#Ô.ÔZ_×ZnÒZnÐorÓZsˆ	ØˆØ�!‹eØ‰NˆAð �!�eà‹>ÜœnÓ-Ð-Ü˜tÓ$ˆÜ×+Ò+¨CÓ3ˆÜ×-Ò-¨g´u×7TÑ7TÓUˆØˆØˆØ�?�?Ü˜c¨°a¸Ô@Øˆr,   c                ó|   • [        U 5      nU(       d  U(       d  [        [        5      e[        USXSSSSSS5
      nU$ )z+
Utility: insert font from file or binary.
Nr   r¨  )rÏ   rÄ   ÚMSG_FILE_OR_BUFFERÚJM_insert_font)r)   ÚfontfileÚ
fontbufferrb  r¹   s        r*   Ú_insert_fontÚDocument._insert_font€  s>   € ô ˜tÓ$ˆÞ¦
ÜÔ0Ó1Ð1Ü˜s D¨(ÀÀ1ÀaÈÈAÈrÓRˆØˆr,   c                óè   • U R                   n[        U[        R                  5      (       d   e [        R                  " U5      n[        U5      $ ! [
         a    [        S:”  a
  [        5          gf = f)zLoad first outline.r   N)	rÅ   rC   r£   rÆ   Úfz_load_outlinerl   r  r{   ÚOutline)r)   r2  r<  s      r*   Ú_loadOutlineÚDocument._loadOutlineŠ  sf   € à�i‰iˆÜ˜3¤× 0Ñ 0×1Ñ1Ð1Ð1ð	Ü×&Ò&¨Ó,ˆBô ˜‹|Ðøô ó 	Ü# aÓ'¬NÔ,<Ùð	ús   ¯A ÁA1Á0A1c                óH   • U R                   (       a  [        S5      e S5       e)z)Make an array page number -> page object.r¿   z_make_page_map() is no-op)rÃ   rÄ   r0   s    r*   Ú_make_page_mapÚDocument._make_page_map•  s    € à�>�>ÜÐ.Ó/Ð/Ø.Ð-Ó.ˆqr,   c                ó@  • [        U 5      nSn[        XQ5      u  pxn	[        R                  " U[	        S5      5      n
[        XR5      u  p¼n[        R                  " U[	        S5      5      nU(       a  UnOUS-   n[        R
                  " X®5      nU(       d'  US:w  a!  [        R                  " U[	        S5      U5        [        R                  " XçU5        US:w  Ga2  UnUR                  (       aw  [        R                  " U[	        S5      5      n[        R                  " U[	        S5      US-   5        [        R                  " U[	        S5      5      nUR                  (       a  Mw  U(       d   [        R                  " X©5        UnUR                  (       aw  [        R                  " U[	        S5      5      n[        R                  " U[	        S5      US-
  5        [        R                  " U[	        S5      5      nUR                  (       a  Mw  OÇU(       a‹  UnUR                  (       aw  [        R                  " U[	        S5      5      n[        R                  " U[	        S5      US-   5        [        R                  " U[	        S5      5      nUR                  (       a  Mw  O5XŸ:  a  [        R                  " X©5        O[        R                  " X©S-   5        UR                  R                  (       a   [        R                  " UR                  5        U R                  5         g)z"Move or copy a PDF page reference.r   r3  r   r©  rÂ  N)rÏ   Úpdf_lookup_page_locr£   r  r  rŠ  rV  Úpdf_array_insertrÍ   Úpdf_dict_get_intrQ  r®  rö  r÷  Ú_reset_page_refs)r)   ry  ÚnbÚbeforeÚcopyrb  ÚsameÚpage1Úparent1Úi1r@  Úpage2Úparent2Úi2rB  Úposrí   rÊ  s                     r*   Ú_move_copy_pageÚDocument._move_copy_page›  sV  € ä˜tÓ$ˆØˆô 1°#Ó;Ñˆ˜ä×"Ò" G¬X°fÓ-=Ó>ˆä0°#Ó:Ñˆ˜Ü×"Ò" G¬X°fÓ-=Ó>ˆÞØ‰Cà�q‘&ˆCô ×Ò Ó.ˆö ˜ ›	Ü×Ò ¤x°Ó'9¸7ÔCÜ×Ò ¨cÔ2à�1Œ9ØˆFØ×#×#Ü×.Ò.°¼ÀÓ8IÓJ�Ü×&Ò&¨´¸Ó0AÀ5È1Á9ÔMÜ×+Ò+¨V´X¸hÓ5GÓH�ð ×#×#Ñ#ö Ü×&Ò&¨Ô2Ø �Ø×'×'Ü!×2Ò2°F¼HÀWÓ<MÓN�EÜ×*Ò*¨F´H¸WÓ4EÀuÈqÁyÔQÜ"×/Ò/°¼À(Ó9KÓL�Fð ×'×'Ñ'øö
 Ø �Ø×'×'Ü!×2Ò2°F¼HÀWÓ<MÓN�EÜ×*Ò*¨F´H¸WÓ4EÀuÈqÁyÔQÜ"×/Ò/°¼À(Ó9KÓL�Fð ×'×'Ñ'øð
 “8Ü×*Ò*¨EÕ6ä×*Ò*¨E¸±6Ô:Ø�>‰>×&×&Ü×'Ò'¨¯©Ô8à×ÑÕr,   c                óJ  • U R                   (       d  U R                  (       a  [        S5      e[        (       a#  [        R
                  " U R                  XU5        Oµ[        U 5      n[        R                  " [        R                  R                  5      nX%l        X5l        [        R                  " 5       nUS:  a  [        [        5      e[        R                  " US5      n[        R                   " XESXv5      n[        R"                  " XAU5        U R%                  5         X   $ )zMake a new PDF page.rÕ  r¨  r   r   )rÃ   r¦  rÄ   r  r   Ú_newPagerÅ   rÏ   r£   rr  Ú
Fixed_UNITr¯  r±  ÚFzBufferr  Úpdf_add_new_dictÚpdf_add_pageÚpdf_insert_pager#  )	r)   ry  r‰  r2  rb  ÚmediaboxÚcontentsrj  Úpage_objs	            r*   r2  ÚDocument._newPageÓ  sÎ   € à�>�>˜T×.×.ÜÐ;Ó<Ð<ßŠ;Ü�NŠN˜DŸI™I s°6Õ:ä" 4Ó(ˆCÜ—|’|¤E§L¡L×$;Ñ$;Ó<ˆHØŒKØ ŒKÜ—~’~Ó'ˆHØ�R‹xÜ ¤.Ó1Ð1ô ×.Ò.¨s°AÓ6ˆIÜ×)Ò)¨3¸!¸YÓQˆHÜ×!Ò! 3¨XÔ6ð 	×ÑÔØ‰yÐr,   c                ó0   • [        U 5      n[        X!5        g r.   )rÏ   Ú_remove_dest_range)r)   Únumbersrb  s      r*   Ú_remove_links_toÚDocument._remove_links_toë  s   € Ü˜tÓ$ˆÜ˜3Õ(r,   c                óŠ  • [        U 5      n[        R                  " X!S5      n[        R                  " U[	        S5      5        [        R                  " U[	        S5      5        [        R
                  " US5      n[        S5       H  n[        R                  " US5        M     [        R                  " U[	        S5      U5        g )Nr   rÃ  rÄ  r   çš™™™™™é?rþ  )	rÏ   r£   r¹  rI  r  rS  rT  rU  rV  )r)   r  rb  rH   ro  rh  s         r*   rã  ÚDocument._remove_toc_itemï  s�   € ä˜tÓ$ˆÜ×%Ò% c°Ó3ˆÜ×Ò˜D¤(¨6Ó"2Ô3Ü×Ò˜D¤(¨3£-Ô0Ü×#Ò# S¨!Ó,ˆÜ�q–ˆAÜ×%Ò% u¨cÖ2ñ ä×Ò˜D¤(¨3£-°Õ7r,   c                ó  • [        U SS5      (       a  gU R                  R                  5        Vs/ s H  oPM     nnU H  nU(       d  M  UR                  5         SnM      U R                  R	                  5         gs  snf )z,Invalidate all pages in document dictionary.rÃ   TN)rï   r­  r  r÷   Úclear)r)   r³  Úpagesr×   s       r*   r#  ÚDocument._reset_page_refsú  sk   € ä�4˜ d×+Ñ+ØØ ŸO™O×2Ñ2Ô4Ó5Ò4�q’Ñ4ˆÐ5ÛˆDßˆtØ—‘”Ø’ñ ð 	�‰×ÑÕùò 6s   °A<c                óÖ  • [        U 5      n[        R                  " S5      n[        R                  " [        R                  " U5      [        S5      5      n[        R                  " XC5        [        R                  " U[        R                  " US5      U[        S5      5        U R                  5       nU R                  USS9nUR                  SSU S	35      nU R                  XV5        g )
Nræ  r×  r   rç  T©Ú
compressedz/Nums[]z/Nums[rš  )rÏ   r£   rÜ  r  rÛ  r  rI  rR  rS  Úpdf_catalogÚxref_objectr  Úupdate_object)r)   Úlabelsrb  rê  r¹  r  r   s          r*   Ú_set_page_labelsÚDocument._set_page_labels  s½   € Ü˜tÓ$ˆÜ×'Ò'¨Ó5ˆ
Ü×!Ò!¤%×"3Ò"3°CÓ"8¼(À6Ó:JÓKˆÜ×Ò˜4Ô,Ü×Ò˜D¤%×"5Ò"5°c¸1Ó"=¸zÌ8ÐTZÓK[Ô\à×ÑÓ!ˆØ×Ñ °ÐÐ6ˆØ�|‰|˜I¨°¨x°qÐ'9Ó:ˆØ×Ñ˜4Õ&r,   c                óÂ  • [        U 5      n[        R                  " XqS5      nU(       a!  [        R                  " U[	        S5      U5        U(       aL  [        R
                  " U[	        S5      5        [        Xr5      n	[        R                  " U[	        S5      U	5        [        R                  " U[	        S5      U5        U(       ae  [        R                  " US5      n
[        S5       H  nXk   n[        R                  " X¬5        M     [        R                  " U[	        S5      U
5        O#Ub   [        R
                  " U[	        S5      5        Ub�  [        R                  " U[	        S	5      5      R                  (       a_  [        R                  " U[	        S	5      5      nUS:  a  US
L d  US:”  a-  USL a'  US-  n[        R                  " U[	        S	5      U5        ggggg)z2
"update" bookmark by letting it point to nowhere
r   ÚTitlerÃ  rÄ  r¹  r   rþ  NrÂ  FTr¨  )rÏ   r£   r¹  r¯  r  rI  rÝ  rV  rQ  rS  rT  rU  r  rÍ   r"  )r)   r  Úactionr¨  rÑ  rÁ  ro  rb  rH   r  rö  rh  r  s                r*   Ú_update_toc_itemÚDocument._update_toc_item  sy  € ô ˜tÓ$ˆÜ×%Ò% s°!Ó4ˆÞÜ×*Ò*¨D´(¸7Ó2CÀUÔKÞÜ×Ò ¤h¨vÓ&6Ô7Ü% sÓ3ˆCÜ×Ò ¤h¨s£m°SÔ9Ü×Ò ¤h¨s£m°UÔ;ÞÜ×#Ò# S¨!Ó,ˆAÜ˜1–X�Ø‘H�Ü×)Ò)¨1Ö0ñ ô ×Ò ¤h¨s£m°QÕ7ØÑÜ×Ò ¤h¨s£mÔ4ØÑÜ×!Ò! 4¬°'Ó):Ó;×F×FÜ×*Ò*¨D´(¸7Ó2CÓD�Ø˜“E˜h¨%Ò/°Q¸³U¸xÈ4Ò?OØ˜R™�AÜ×*Ò*¨D´(¸7Ó2CÀQÕGð @P°Uð Gð  r,   c           	     ó&  • [        U SS9nUR                  (       d  g[        R                  " [        R                  " U5      [        S5      [        S5      [        S5      [        S5      5      n[        5       nUR                  (       a‡  [        R                  " U5      (       al  [        R                  " U5      n[        U5       HG  n[        R                  " X%5      nUR                  [        [        R                  " U5      5      5        MI     U$ )z&Get list of field font resource names.r   rÖ  Nr×  rØ  rÙ  rÚ  )rÏ   rÍ   r£   r!  rÛ  r  rµ   r†  r‡  rT  r‰  rp   r
  r…  )r)   rb  rÞ  r  rJ   rh  r  s          r*   Ú	FormFontsÚDocument.FormFonts-  sË   € ô ˜t¨aÑ0ˆØ�~�~ØÜ×#Ò#Ü×!Ò! #Ó&Ü˜Ó Ü˜Ó$Ü˜“Ü˜Ó óˆô “ˆØ××¤× 1Ò 1°%× 8Ñ 8Ü×"Ò" 5Ó)ˆAÜ˜1–X�Ü×*Ò*¨5Ó4�Ø—‘Ô.¬u×/@Ò/@ÀÓ/CÓDÖEñ ð ˆr,   c                ór   • [        U 5      n[        XAX#5        [        R                  " UR                  5        g)zAdd a new OC layer.N)rÏ   ÚJM_add_layer_configr£   Úll_pdf_read_ocgrÍ   )r)   r   ÚcreatorÚonrb  s        r*   Ú	add_layerÚDocument.add_layerB  s(   € ä˜tÓ$ˆÜ˜S¨Ô4Ü×Ò˜sŸ~™~Õ.r,   r   c                ó\  • Sn[        U 5      n[        R                  " US5      n[        R                  " U[	        S5      [	        S5      5        [        R
                  " U[	        S5      U5        [        R                  " U[	        S5      S5      n	U(       d!  [        R                  " U	[	        S5      5        O\[        U[        5      (       d   S	[        U5      < S
[        < 35       e[        R                  " U	[        R                  " U5      5        [        R                  " U[	        S5      S5      n
[        R                  " S5      n[        R                  " X«S5      n[        R
                  " U[	        S5      S5        U(       a"  [        R                  " U[	        S5      U5        O![        R                  " U[	        S5      S5        [        R                  " Xx5      n[        U5      n[        R                   " U[	        S5      5      n[        R                  " Xý5        US:”  a�  [        R                   " U[	        S5      5      n[        R"                  " U5      (       d  [%        [&        5      e[        R(                  " Xò5      nUR*                  (       d  [%        [&        5      eO [        R                   " U[	        S5      5      n[        R                   " U[	        S5      5      nUR*                  (       d!  [        R                  " U[	        S5      S5      n[        R                  " Xý5        U(       aS  [        R                   " U[	        S5      5      nUR*                  (       d!  [        R                  " U[	        S5      S5      nOR[        R                   " U[	        S5      5      nUR*                  (       d!  [        R                  " U[	        S5      S5      n[        R                  " Xý5        [        R,                  " UR*                  5        [        R.                  " U5      nU$ )zAdd new optional content group.r   r   ró  ÚOCGr,  ÚIntentr   ÚViewz)fixme: intent is not a str. type(intent)=ú type=ÚUsageÚCreatorInfoÚCreatorÚPyMuPDFr¶  ÚArtworkÚOCGsr¨  ÚConfigsrÅ  ÚOrderr   ÚONÚOFF)rÏ   r£   r5  rV  r  r¯  rK  r>  rC   rè  rÉ   rÜ  rZ  r]  rL  ÚJM_ensure_ocpropertiesr  r<  rÄ   ÚMSG_BAD_OC_CONFIGr­  rÍ   r[  r  )r)   r   Úconfigr]  ÚintentÚusager  rb  ÚocgÚintentsÚuse_forÚci_nameÚcre_infoÚindocgÚocpr  Úcfgs                    r*   Úadd_ocgÚDocument.add_ocgH  s÷  € àˆÜ˜tÓ$ˆô ×$Ò$ S¨!Ó,ˆÜ×Ò˜3¤¨Ó 0´(¸5³/ÔBÜ×&Ò& s¬H°VÓ,<¸dÔCÜ×*Ò*¨3´¸Ó0BÀAÓFˆÞÜ× Ò  ¬(°6Ó*:Õ;Ü˜F¤C×(Ñ(ØLÐB´T¸&³\±OÀ7ÄTÁGÐLÓL�1ô × Ò  ¬%×*<Ò*<¸VÓ*DÔEÜ×)Ò)¨#¬x¸Ó/@À!ÓDˆÜ×$Ò$ ]Ó3ˆÜ×*Ò*¨7¸QÓ?ˆÜ×&Ò& x´¸)Ó1DÀiÔPÞÜ×#Ò# H¬h°yÓ.AÀ5ÕIä×#Ò# H¬h°yÓ.AÀ9ÔMÜ×%Ò% cÓ/ˆô % SÓ)ˆÜ× Ò  ¤h¨vÓ&6Ó7ˆÜ×Ò˜SÔ)à�B‹;Ü×$Ò$ S¬(°9Ó*=Ó>ˆCÜ×%Ò% c×*Ñ*Ü Ô"3Ó4Ð4Ü×%Ò% cÓ2ˆCØ—>—>Ü Ô"3Ó4Ð4ð "ô ×$Ò$ S¬(°3«-Ó8ˆCä× Ò  ¤h¨wÓ&7Ó8ˆØ�~�~Ü×*Ò*¨3´¸Ó0AÀ1ÓEˆCÜ×Ò˜SÔ)ÞÜ×$Ò$ S¬(°4«.Ó9ˆCØ—>—>Ü×.Ò.¨s´H¸T³NÀAÓF�øä×#Ò# C¬°%«Ó9ˆCØ—>—>Ü×-Ò-¨c´8¸E³?ÀAÓF�Ü×Ò˜SÔ)ô 	×Ò˜cŸn™nÔ-ä×Ò Ó'ˆØˆr,   c                óØ   • U R                   (       a  [        S5      e[        R                  " U R                  U5      nU(       a%  SU l        SU l        U R                  5         SU l        U$ )zDecrypt document.r¿   FT)rÃ   rÄ   r£   Úfz_authenticate_passwordrÅ   r¦  rÃ  rö   )r)   Úpasswordr  s      r*   ÚauthenticateÚDocument.authenticateŽ  sS   € à�>�>ÜÐ.Ó/Ð/Ü×,Ò,¨T¯Y©Y¸ÓAˆÞØ %ˆDÔØ %ˆDÔØ�M‰MŒOØˆDŒLØˆ
r,   c                óf   • [        U SS9nUR                  (       d  g[        R                  " U5      $ )z-Check whether incremental saves are possible.r   rÖ  F)rÏ   rÍ   r£   Úpdf_can_be_saved_incrementally©r)   rb  s     r*   Úcan_save_incrementallyÚDocument.can_save_incrementallyš  s)   € ä˜t¨aÑ0ˆØ�~�~ØÜ×3Ò3°CÓ8Ð8r,   T)r°  Úwidgetsc               ón   • [        U 5      n[        R                  " U[        U5      [        U5      5        g)aª  Convert annotations or fields to permanent content.

Notes:
    Converts annotations or widgets to permanent page content, like
    text and vector graphics, as appropriate.
    After execution, pages will still look the same, but no longer
    have annotations, respectively no fields.
    If widgets are selected the PDF will no longer be a Form PDF.

Args:
    annots: convert annotations
    widgets: convert form fields

N)rÏ   r£   Úpdf_bake_documentr9   )r)   r°  rˆ  rb  s       r*   ÚbakeÚDocument.bake¡  s(   € ô ˜tÓ$ˆÜ×Ò ¤S¨£[´#°g³,Õ?r,   c                óz   • U R                   (       a  [        S5      e[        R                  " U R                  5      $ )zNumber of chapters.r¿   )rÃ   rÄ   r£   Úfz_count_chaptersrÅ   r0   s    r*   ru  ÚDocument.chapter_count³  s,   € ð �>�>ÜÐ.Ó/Ð/Ü×&Ò&¨¯	©	Ó2Ð2r,   c                óì   • U R                   (       a  [        S5      e[        R                  " U R                  5      nUS:  d  X:¼  a  [        S5      e[        R
                  " U R                  U5      nU$ )zPage count of chapter.r¿   r   zbad chapter number)rÃ   rÄ   r£   rŽ  rÅ   Úfz_count_chapter_pages)r)   rx  ÚchaptersrF  s       r*   rv  ÚDocument.chapter_page_countº  s\   € à�>�>ÜÐ.Ó/Ð/Ü×*Ò*¨D¯I©IÓ6ˆØ�Q‹;˜'Ó-ÜÐ2Ó3Ð3Ü×,Ò,¨d¯i©i¸ÓAˆØˆr,   c                óÚ   • [        U SS5      (       a  [        S5      e[        U S5      (       a  U R                  (       a  SU l        U R	                  5         SU l        0 U l        SU l        g)zClose document.rÃ   Tr¿   Ú_outlineN)rï   rÄ   r@   r•  r#  rÃ   r©  rÅ   r0   s    r*   rŒ  ÚDocument.closeÄ  s\   € ä�4˜ d×+Ñ+ÜÐ.Ó/Ð/ä�4˜×$Ñ$¨¯¯Ø ˆDŒMØ×ÑÔð !ˆŒàˆŒð ˆ�	r,   c                ó¤  • U R                   (       d  U R                  (       a  [        S5      eU R                  nUnUn[        R
                  " U5      nUS:  a  SnXWS-
  :”  a  US-
  nUS:  a  US-
  nXgS-
  :”  a  US-
  n[        [        5      n[        XEXc5      n	[        [        5      n
[        XŠ5       H  n[        [        U    5        M     U	$ )z[Convert document to a PDF, selecting page range and optional rotation. Output bytes object.rÕ  r   r   )rÃ   r¦  rÄ   rÅ   r£   r  r<   ÚJM_mupdf_warnings_storeÚJM_convert_to_pdfrT  rw   )r)   r  r  ra  Úfz_docrÁ  rU  ÚsrcCountÚlen0r2  Úlen1rh  s               r*   rÄ  ÚDocument.convert_to_pdfÖ  sÉ   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ø—‘ˆØˆØˆÜ×'Ò'¨Ó/ˆØ�‹6ØˆBØ˜1‘ÓØ˜A‘ˆBØ�‹6Ø˜A‘ˆBØ˜1‘ÓØ˜A‘ˆBÜÔ*Ó+ˆÜ ¨BÓ7ˆÜÔ*Ó+ˆÜ�tÖ"ˆAÜÔ.¨qÑ1Ð2Ö4ñ #àˆ
r,   c                óê   • U R                   (       a  [        S5      e[        U 5      nU[        U5      ;  d  U[        SU5      ;  a  [        S5      eSnSnUS:X  a  US-
  nSnU R	                  XXE5      $ )zÁCopy a page within a PDF document.

This will only create another reference of the same page object.
Args:
    pno: source page number
    to: put before this page, '-1' means after last page.
r¿   r¨  r~  r   r   ©rÃ   rÄ   r<   rT  r/  ©r)   ry  r  rt  r%  r&  s         r*   Ú	copy_pageÚDocument.copy_pageí  sz   € ð �>�>ÜÐ.Ó/Ð/ä˜“Yˆ
àœ5 Ó,Ó,ØœU 2 zÓ2Ó2äÐ1Ó2Ð2ØˆØˆØ�‹8Ø˜a‘ˆBØˆFà×#Ñ# C¨VÓ:Ð:r,   c                ó@  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " [        R                  " U5      [        S5      5      nUR                  (       a!  [        R                  " U[        S5      5        gg)zDelete XML metadata.rÕ  r×  ÚMetadataN)
rÃ   r¦  rÄ   rÏ   r£   r  rÛ  r  rÍ   rI  )r)   rb  r¹  s      r*   Údel_xml_metadataÚDocument.del_xml_metadata  sj   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×!Ò!¤5×#4Ò#4°cÓ#:¼HÀVÓ<LÓMˆØ�?�?Ü×Ò ¤h¨zÓ&:Õ;ð r,   c                ó$   • U R                  U5      $ )z$Delete one page from a PDF.
        )r�  )r)   ry  s     r*   r€  ÚDocument.delete_page  s   € ð × Ñ  Ó%Ð%r,   c                ór  • U R                   (       d  [        S5      eU R                  (       a  [        S5      eU R                  nS=pEU(       a‹  U(       a  [        S5      eUR	                  SS5      nUR	                  SS5      nUS:  a  XC-  nUS:  a  M  US:  a  XS-  nUS:  a  M  XEs=::  a  U:  d  O  [        S5      e[        [        XES	-   5      5      nOÛ[        U5      S
:”  d  U/ :X  a  [        S5      e[        U5      S
:X  ak  Uu  pE[        U5      [        L a  [        U5      [        L d  [        S5      eXE:”  a  XTpTXEs=::  a  U:  d  O  [        S5      e[        [        XES	-   5      5      nOA[        US   [        5      (       a  US   nUS:  a  Xs-  nUS:  a  M  U4nO[        US   5      n[        [        [        [        U5      5      5      nU/ :X  a  [        S5        gUR                  5         US   S:  d	  US   U:¼  a  [        S5      e[!        U5      nU R#                  5       n	[%        U R'                  5       5       H&  u  p«Xš   S
   S	-
  U;   d  M  U R)                  U5        M(     U R+                  U5        [-        U5       H  n
U R/                  U
5        M     U R1                  5         g)zþDelete pages from a PDF.

Args:
    Either keywords 'from_page'/'to_page', or two integers to
    specify the first/last page to delete.
    Or a list/tuple/range object, which can contain arbitrary
    page numbers.
    Or a single integer page number.
r}  r¿   r¨  z*cannot mix keyword and positional argumentr  r  r   r~  r   r   z need 1 or 2 positional argumentszboth arguments must be intznothing to deleteN)r  rÄ   rÃ   rt  r=   r¶   rT  r<   rÉ   r9   rC   rµ   r  Úsetrw   ÚsortÚ	frozensetÚget_tocrY  râ  rã  r?  Úreversedrø  r#  )r)   r  Úkwrt  r  rÃ  r>  ry  Úfrozen_numbersÚtocrh  r  s               r*   r�  ÚDocument.delete_pages  sh  € ð �{�{Ü˜[Ó)Ð)Ø�>�>ÜÐ.Ó/Ð/à—_‘_ˆ
Øˆ
ˆÞÞÜ Ð!MÓNÐNØ—‘�{ BÓ'ˆAØ—‘�y "Ó%ˆAØ�a“%Ø‘�ð �a•%à�a“%Ø‘�ð �a•%àÕ&˜JÕ&Ü Ð!5Ó6Ð6ÜœE !¨¡U›OÓ,‰Gä�4‹y˜1‹} ¨£
Ü Ð!CÓDÐDÜ�4‹y˜A‹~Ø‘�Ü˜Q›¤3š¬4°«7´cª>Ü$Ð%AÓBÐBØ“5Ø�qØÕ* 
Õ*Ü$Ð%9Ó:Ð:Ü¤ a¨Q©£Ó0‘Ü˜D ™G¤S×)Ñ)Ø˜1‘g�Ø˜A“gØÑ%�Cð ˜A•gà˜&‘ä  Q¡›.�ä”sœ3¤ G£Ó-Ó.ˆØ�b‹=ÜÐ'Ô(ØØ�‰ŒØ�1‰:˜‹>˜W R™[¨JÓ6ÜÐ1Ó2Ð2Ü" 7Ó+ˆØ�l‰l‹nˆÜ  ×!7Ñ!7Ó!9Ö:‰GˆAØ‰v�a‰y˜1‰} Õ.Ø×%Ñ% dÖ+ñ ;ð 	×Ñ˜nÔ-ä˜'Ö"ˆAØ×Ñ˜aÖ ñ #ð 	×ÑÕr,   c                ó<  • U R                  5       nX;   a  [        SU S35      eUc  UnUc  UnUc  UnU R                  UUUUUS9n[        5       nU R	                  USS5        U R	                  US[        U5      5        U R	                  US[        U5      5        U$ )a$  Add an item to the EmbeddedFiles array.

Args:
    name: name of the new item, must not already exist.
    buffer_: (binary data) the file content.
    filename: (str) the file name, default: the name
    ufilename: (unicode) the file name, default: filename
    desc: (str) the description.
zName 'z' already exists.©r5  rk   rS  rË  ró  z/EmbeddedFileúParams/CreationDateúParams/ModDate)r¢  rÄ   rª  Úget_pdf_nowr›  r  )	r)   r   r5  rk   rS  rË  r£  r  Údates	            r*   Úembfile_addÚDocument.embfile_addY  sÁ   € ð  ×&Ñ&Ó(ˆ	ØÓÜ˜v d VÐ+<Ð=Ó>Ð>ØÑØˆHØÑØ ˆIØ‰<ØˆDØ× Ñ ØØØ!Ø#Øð !ð ˆô ‹}ˆØ×Ñ˜$ ¨Ô8Ø×Ñ˜$Ð 5´{À4Ó7HÔIØ×Ñ˜$Ð 0´+¸dÓ2CÔDØˆr,   c                ó4   • [        U R                  5       5      $ )zGet number of EmbeddedFiles.)r<   r¢  r0   s    r*   Úembfile_countÚDocument.embfile_count  s   € ä�4×%Ñ%Ó'Ó(Ð(r,   c                óF   • U R                  U5      nU R                  U5      $ )a  Delete an entry from EmbeddedFiles.

Notes:
    The argument must be name or index of an EmbeddedFiles item.
    Physical deletion of data will happen on save to a new
    file with appropriate garbage option.
Args:
    item: name or number of item.
Returns:
    None
)r¤  r­  ©r)   rH   rä  s      r*   Úembfile_delÚDocument.embfile_delƒ  s%   € ð ×%Ñ% dÓ+ˆØ× Ñ  Ó%Ð%r,   c                óF   • U R                  U5      nU R                  U5      $ )z‡Get the content of an item in the EmbeddedFiles array.

Args:
    item: number or name of item.
Returns:
    (bytes) The file content.
)r¤  rŸ  rÀ  s      r*   Úembfile_getÚDocument.embfile_get’  s%   € ð ×%Ñ% dÓ+ˆØ×$Ñ$ SÓ)Ð)r,   c                óŠ  • U R                  U5      nSU R                  5       U   0nU R                  X#5      nU R                  US5      u  pVUS:w  a  XcS'   U R                  US5      u  pVUS:w  a  XcS'   U R                  US5      u  pWUS:w  a5  [        R
                  " UR                  5       5      R                  5       US'   U$ )	z…Get information of an item in the EmbeddedFiles array.

Args:
    item: number or name of item.
Returns:
    Information dictionary.
r   r¶  rò  r©  r·  rª  zParams/CheckSumÚchecksum)r¤  r¢  r¸  Úxref_get_keyrù  rú  rþ  Údecode)r)   rH   rä  r³  r  rÃ  r¹  Úmd5s           r*   Úembfile_infoÚDocument.embfile_info�  sÉ   € ð ×%Ñ% dÓ+ˆØ˜D×.Ñ.Ó0°Ñ5Ð6ˆØ×!Ñ! #Ó0ˆØ×#Ñ# DÐ*?Ó@‰ˆØ�‹;Ø'+�^Ñ$Ø×#Ñ# DÐ*:Ó;‰ˆØ�‹;Ø"&�YÑØ×"Ñ" 4Ð):Ó;‰ˆØ�‹;Ü#+×#3Ò#3°C·J±J³LÓ#A×#HÑ#HÓ#JˆH�ZÑ Øˆr,   c                ó,   • / nU R                  U5        U$ )z#Get list of names of EmbeddedFiles.)r»  )r)   r£  s     r*   r¢  ÚDocument.embfile_names³  s   € àˆ	Ø×Ñ˜IÔ&ØÐr,   c                óš   • U R                  U5      nU R                  UUUUUS9n[        5       nU R                  US[	        U5      5        U$ )a]  Change an item of the EmbeddedFiles array.

Notes:
    Only provided parameters are changed. If all are omitted,
    the method is a no-op.
Args:
    item: number or name of item.
    buffer_: (binary data) the new file content.
    filename: (str) the new file name.
    ufilename: (unicode) the new filen ame.
    desc: (str) the new description.
rµ  r·  )r¤  r¾  r¸  r›  r  )	r)   rH   r5  rk   rS  rË  rä  r  r¹  s	            r*   Úembfile_updÚDocument.embfile_upd¹  s^   € ð& ×%Ñ% dÓ+ˆØ× Ñ ØØØ!Ø#Øð !ð ˆô ‹}ˆØ×Ñ˜$Ð 0´+¸dÓ2CÔDØˆr,   c           
     óX  • [        U 5      n[        R                  " XA5      n[        R                  " U[	        S5      5      n[        R                  " U[	        S5      5      n[        R
                  " U[	        S5      5      (       Ga}  [        R                  " U5      R                  S5      (       GdR  [        R                  " U[	        S5      5      nUR                  (       a  [        R                  " U5      (       a!  [        R                  " U[	        S5      5      n	OUn	[        XA5      n
U
S:w  a  U(       d  [        XA5      n[        U5      nOSnU(       dK  [        [        R                  " U	5      5      [        U
5      [        [        R                  " U5      5      U4nU$ [        [        [        R                  " U	5      5      [         [        U
5      ["        [        [        R                  " U5      5      [$        U0n U$ U(       d  S	nU$ [        S
[         S
["        S
[$        S0nU$ )z4
Get a font by xref. Returns a tuple or dictionary.
ró  r¶  rÚ  ÚCIDFontTypeÚBaseFontr,  ún/ar,   )ra   ra   ra   r,   ra   )rÏ   r£   r=  r  r  Úpdf_name_eqr…  r8   rÍ   Úpdf_is_nullÚJM_get_fontextensionr×  r$  rÄ  r
  r4  Údictkey_extÚdictkey_typer3  )r)   r  Ú	info_onlyÚnamedrb  r  rc  ÚsubtypeÚbasefontÚbnamerÜ  r5  Úbytes_r¦   s                 r*   Úextract_fontÚDocument.extract_fontØ  s»  € ô
 ˜tÓ$ˆÜ×#Ò# CÓ.ˆÜ×"Ò" 3¬°Ó(8Ó9ˆÜ×$Ò$ S¬(°9Ó*=Ó>ˆÜ×Ò˜e¤X¨fÓ%5×6Ò6Ü×)Ò)¨7Ó3×>Ñ>¸}×MÒMä×)Ò)¨#¬x¸
Ó/CÓDˆHØ×&×&¬%×*;Ò*;¸H×*EÑ*EÜ×*Ò*¨3´¸Ó0@ÓA‘à �Ü& sÓ1ˆCØ�e‹|¦IÜ+¨CÓ6�Ü)¨'Ó2‘à�Þä+¬E×,=Ò,=¸eÓ,DÓEÜ)¨#Ó.Ü)¬%×*;Ò*;¸GÓ*DÓEØð	�ð. ˆ	ô %Ô&9¼%×:KÒ:KÈEÓ:RÓ&SÜ#Ô%6°sÓ%;Ü$Ô&7¼×8IÒ8IÈ'Ó8RÓ&SÜ'¨ð	‘ð  ˆ	ö Ø$�ð ˆ	ô % bÜ# RÜ$ bÜ'¨ð	�ð ˆ	r,   c                ó  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[	        US[
        R                  " U5      S-
  5      (       d  [        [        5      e[
        R                  " X!S5      n[
        R                  " U[        S5      5      n[
        R                  " U[        S5      5      (       d  [        S5      e[
        R                  " U[        S5      [        S5      5      nUR                  (       a  [
        R                  " U5      nOSn[
        R                  " X#5      n[!        5       n[#        Xx5        Xh[$        '   [
        R&                  " UR)                  5       5      U[*        '   U$ )	z(Get image by xref. Returns a dictionary.rÕ  r   r   r¶  ÚImageznot an imageÚSMaskÚMask)rÃ   r¦  rÄ   rÏ   rÕ  r£   r·  r¸  r¹  r  r  rÖ  Úpdf_dict_getarÍ   r  Úpdf_load_imager:   Ú_make_image_dictÚdictkey_smaskr=  rò  Údictkey_cs_name)	r)   r  rb  r  rÝ  r²  Úsmaskr1  r¦   s	            r*   Úextract_imageÚDocument.extract_image	  s!  € à�>�>˜T×.×.ÜÐ;Ó<Ð<ä˜tÓ$ˆä˜˜a¤×!3Ò!3°CÓ!8¸Ñ!:×;Ñ;ÜœlÓ+Ð+ä×$Ò$ S°Ó2ˆÜ×$Ò$ S¬(°9Ó*=Ó>ˆä× Ò  ¬(°7Ó*;×<Ñ<Ü˜nÓ-Ð-ä×Ò ¤X¨gÓ%6¼ÀÓ8HÓIˆØ�<�<Ü×$Ò$ QÓ'‰EàˆEô ×"Ò" 3Ó,ˆÜ‹VˆÜ˜Ô!Ø!Œ=ÑÜ#×6Ò6°s·~±~Ó7GÓHˆŒ?ÑØˆ	r,   Fc                óF   • U R                  UUUUUUUUU	U
UUUUUUUUUUS9$ )z(
Save PDF using some different defaults
)ÚgarbageÚcleanÚdeflateÚdeflate_imagesÚdeflate_fontsÚincrementalrš  ÚexpandÚlinearÚprettyÚ
encryptionÚpermissionsÚowner_pwÚuser_pwÚ	no_new_idÚpreserve_metadataÚuse_objstmsÚcompression_effortÚraise_on_repair)Úsave)r)   rk   rð  rñ  rò  ró  rô  rõ  rš  rö  r÷  rø  rù  rú  rû  rü  rý  rþ  rÿ  r   r  s                        r*   Úez_saveÚDocument.ez_save'  sV   € ð4 �y‰yØØØØØ-Ø+Ø'ØØØØØ%Ø'Ø!ØØ#Ø"3Ø'Ø#5Ø /ð) ð ð 	r,   c                óÎ   • U R                   (       d  U R                  (       a  [        S5      e[        R                  " U R
                  U5      nUR                  UR                  4$ )z-Find new location after layouting a document.rÕ  )rÃ   r¦  rÄ   r£   Úfz_lookup_bookmark2rÅ   rx  r×   )r)   rÉ  Úlocations      r*   Úfind_bookmarkÚDocument.find_bookmarkX  sH   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü×,Ò,¨d¯i©i¸Ó<ˆØ×Ñ §¡Ð.Ð.r,   c                óv  • [        U 5      n[        R                  " U5      n [        USUS-
  5      (       a  [        USUS-
  5      (       d  [	        [
        5      e[        R                  " [        R                  " X15      5      n[        R                  " U5      n[        R                  " U[        S5      5      nUR                  (       Gaª  [        R                  " U5      n[        R                  " X85      n	[        U5       GHM  n
[        R                  " Xz5      n[        R                  " U[        S5      5      n[        R                   " U[        S5      5      (       a  Ma  [        R"                  " US5      R                  (       a  M‰  [        R                  " [        R                  " U5      5      n[        R$                  " U5      n[        R&                  " X>U5        [        R(                  " X>S5      n[        R*                  " U[        S5      5        [        R*                  " U[        S5      5        [        R,                  " X�5        GMP     [        R.                  " U[        S5      U	5        [1        U5      nU(       a€  UR                  (       ao  [        R2                  " U[        R4                  " S	5      [        R6                  " 5       S5      n[9        UUUS5        [        R.                  " U[        S
5      U5        [        R$                  " U5      n[        R&                  " X>U5        [        R(                  " X>S5      n[        R:                  " X2U5        [        R<                  " UR                  5        U R?                  5         g! [        R<                  " UR                  5        f = f)zMake a full page duplicate.r   r   r¨  r§  r¶  r¦  r=  rs  ó    rO  N) rÏ   r£   r  rÕ  rÄ   r  rè  r  rx  r  r  rÍ   r¬  rS  rT  r­  rÖ  r  Úpdf_create_objectÚpdf_update_objectr¹  rI  r>  rV  ÚJM_read_contentsÚpdf_add_streamrã  ÚPdfObjr1  r7  r÷  r#  )r)   ry  r  rb  rt  r(  r+  Ú
old_annotsrJ   Ú
new_annotsrh  r²  rÝ  Úcopy_or  r&  r9  s                    r*   Úfullcopy_pageÚDocument.fullcopy_page_  sª  € ä˜tÓ$ˆÜ×*Ò*¨CÓ0ˆ
ð0	9Ü˜S ! Z°!¡^×4Ñ4Ü# B¨¨J¸©N×;Ñ;ä ¤.Ó1Ð1ä×.Ò.´×0IÒ0IÈ3Ó0TÓUˆEä×+Ò+¨UÓ3ˆEÜ×+Ò+¨U´H¸XÓ4FÓGˆJð ×$×$Ð$Ü×'Ò'¨Ó4�Ü"×0Ò0°#Ó9�
Ü˜qŸ�AÜ×+Ò+¨ZÓ;�AÜ#×0Ò0°!´X¸iÓ5HÓI�GÜ×(Ò(¨'´8¸GÓ3D×EÑEÙ Ü×*Ò*¨A¨uÓ5×@×@Ù Ü"×4Ò4´e×6PÒ6PÐRSÓ6TÓU�FÜ ×2Ò2°CÓ8�DÜ×+Ò+¨S¸Ô?Ü"×3Ò3°SÀÓB�FÜ×&Ò&¨´¸Ó0AÔBÜ×&Ò&¨´¸³Ô>Ü×(Ò(¨*×=ñ "ô ×"Ò" E¬8°HÓ+=¸zÔJô # EÓ*ˆCö �s—~—~ä ×/Ò/°´e×6ZÒ6ZÐ\`Ó6aÔch×coÒcoÓcqÐstÓu�Ü  # x°°aÔ8Ü×"Ò" E¬8°JÓ+?ÀÔJô ×*Ò*¨CÓ0ˆDÜ×#Ò# S°Ô6ä×*Ò*¨C°qÓ9ˆEÜ×!Ò! 3¨EÔ2ä×'Ò'¨¯©Ô8à×ÑÕøô ×'Ò'¨¯©Õ8ús   £MN Î"N8c                ó”  • [        X5      nUcÈ  Uc#  [        R                  " X5      u  pgp‰n
UUUU	U
S.nOUS   nUS   nUS   nUS   nUS   nUS:X  a  [        S	5      eUS
;   a  SnOSnUS;   a  SnOUS;   a  SnOUS;   a  SnOUS;   a  SnOSnXÄS'   US:X  a  [        nOUS:X  a  [
        nOSnXÔS'   X´S'   X/nU R                  R                  U5        OUS   nUS   nUS   nUS   nUc  SnO[        U5      n[        SU5      nXþ::  a  U$ US:  a  U R                  XS   US   US   Xó5      nOSnXÔS'   XES'   [        X5        U$ )aa  Get list of glyph information of a font.

Notes:
    Must be provided by its XREF number. If we already dealt with the
    font, it will be recorded in doc.FontInfos. Otherwise we insert an
    entry there.
    Finally we return the glyphs for the font. This is a list of
    (glyph, width) where glyph is an integer controlling the char
    appearance, and width is a float controlling the char's spacing:
    width * fontsize is the actual space.
    For 'simple' fonts, glyph == ord(char) will usually be true.
    Exceptions are 'Symbol' and 'ZapfDingbats'. We are providing data for these directly here.
N)r   rÉ   rÜ  ÚascenderÚ	descenderr   rÜ  rÉ   rÝ  Úsimplera   zxref is not a font)ÚType1ÚMMType1ÚTrueTypeTF)ÚFangtiÚMingr   )ÚHeitiÚSongr   )ÚGothicÚMinchor   )ÚDotumÚBatangr   r¨  ÚZapfDingbatsÚSymbolÚglyphsrÓ  )ÚCheckFontInfor  Ú_get_font_propertiesrÄ   Úzapf_glyphsÚsymbol_glyphsr¨  rp   r<   r!  rã  ÚUpdateFontInfo)r2  r  rÞ  rä  ÚfontdictÚfontinfor   rÜ  ÚstypeÚascÚdscrÝ  r  r'  Úoldlimitrß  s                   r*   Úget_char_widthsÚDocument.get_char_widths—  sÓ  € ô( ! Ó+ˆØÑØÑÜ-2×-GÒ-GÈÓ-RÑ*�˜5 sà Ø!ØØ #Ø!$ñ‘ð   Ñ'�Ø˜u‘o�Ø  Ñ(�Ø# JÑ/�Ø! (Ñ+�à�b‹yÜ Ð!5Ó6Ð6ð Ð8Ó8Ø‘à�ð Ð)Ó)Ø‘ØÐ*Ó*Ø‘ØÐ-Ó-Ø‘ØÐ,Ó,Ø‘à�à!'�XÑà�~Ó%Ü$‘Ø˜Ó!Ü&‘à�à!'�XÑØ#+�ZÑ ØÐ'ˆHØ�M‰M× Ñ  Õ*à ‘{ˆHØ˜hÑ'ˆFØ˜hÑ'ˆFØ 
Ñ+ˆHà‰>Ø‰Hä˜6“{ˆHä�c˜5“/ˆàÓØˆMà�a‹<Ø×)Ñ)Ø˜vÑ&¨°©¸À*Ñ9MÈwó‰Fð ˆFà#�ÑØ�‰Ü�sÔ%àˆr,   c                óÊ  • [        U 5      n[        R                  " [        R                  " U5      [	        S5      [	        S5      5      nUR
                  (       d  gUS:X  a!  [        R                  " U[	        S5      5      nO5[        R                  " [        R                  " U[	        S5      5      U5      nUR
                  (       d  [        [        5      e[        U5      nU$ )z,Content of ON, OFF, RBGroups of an OC layer.r×  ÚOCPropertiesNr¨  rÅ  rk  )rÏ   r£   r!  rÛ  r  rÍ   r  r­  rÄ   rp  ÚJM_get_ocg_arrays)r)   rq  rb  rz  r  r¦   s         r*   Ú	get_layerÚDocument.get_layerü  s¯   € ä˜tÓ$ˆÜ×!Ò!Ü×!Ò! 3Ó'Ü˜Ó Ü˜Ó(óˆð
 �~�~ØØ�R‹<Ü×$Ò$ c¬8°C«=Ó9‰Cä×%Ò%Ü×&Ò&¨¬X°iÓ-@ÓAØóˆCð �~�~ÜÔ/Ó0Ð0Ü Ó$ˆØˆ	r,   c                óô  • [        U 5      n[        R                  " U5      nUS:X  ae  [        R                  " [        R                  " U5      [        S5      [        S5      [        S5      5      n[        R                  " U5      (       d  Sn/ n[        R                  " 5       n[        U5       HE  n[        R                  " XU5        UUR                  UR                  S.nUR                  U5        MG     U$ )zShow optional OC layers.r   r×  r6  rk  r   )Únumberr   r\  )rÏ   r£   Úpdf_count_layer_configsr!  rÛ  r  r<  ÚPdfLayerConfigrT  Úpdf_layer_config_infor   r\  rp   )r)   rb  rJ   r  r¦   r:  rh  rH   s           r*   Ú
get_layersÚDocument.get_layers  sÏ   € ä˜tÓ$ˆÜ×)Ò)¨3Ó/ˆØ�‹6Ü×%Ò%Ü×%Ò% sÓ+Ü˜VÓ$Ü˜^Ó,Ü˜YÓ'ó	ˆCô ×%Ò% s×+Ñ+Ø�ØˆÜ×#Ò#Ó%ˆÜ�q–ˆAÜ×'Ò'¨°Ô6àØ ŸI™IØ#Ÿ|™|ñˆDð
 �I‰I�tÖñ ð ˆ	r,   c                ó¼   • U R                   (       d  U R                  (       a  [        S5      e[        U 5      nSn[	        U5        [
        R                  " U5      nU$ )zMake new xref.rÕ  r   )rÃ   r¦  rÄ   rÏ   ÚENSURE_OPERATIONr£   r  )r)   rb  r  s      r*   Úget_new_xrefÚDocument.get_new_xref+  sI   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆØˆÜ˜ÔÜ×&Ò& sÓ+ˆØˆr,   c                ó(  • U R                   (       d  U R                  (       a  [        S5      eU R                  US5      u  p#US:w  d  US;  a  [        SU 35      eU R                  US5      u  p$US:w  a  g[	        UR                  S	S
5      5      nU$ )z‚Return optional content object xref for an image or form xobject.

Args:
    xref: (int) xref number of an image or form xobject.
údocument close or encryptedr¶  r   ©ú/Imageú/Formúbad object type at xref rØ  r  r   ú0 Rra   )rÃ   r¦  rÄ   rÈ  r9   r  )r2  r  rÃ  r   rÚ  r¦   s         r*   rÛ  ÚDocument.get_oc5  s�   € ð �=�=˜C×,×,ÜÐ:Ó;Ð;Ø×"Ñ" 4¨Ó3‰ˆØ�‹;˜$Ð&9Ó9ÜÐ7¸°vÐ>Ó?Ð?Ø× Ñ   tÓ,‰ˆØ�‹;ØÜ�—‘˜E 2Ó&Ó'ˆØˆ	r,   c           	     ó$  • [         R                  " S5      n[        U 5      n[         R                  " [         R                  " [         R
                  " U5      [        S5      5      [        S5      [        S5      5      n[        5       n[         R                  " U5      (       d  U$ [         R                  " U5      n[        U5       GHE  n[         R                  " X65      n[         R                  " U5      n[         R                  " [         R                  " U[        S5      5      5      n	[         R                  " U[        S5      U[        S5      5      n
SnU
R                  (       a  [         R                  " U
5      n[!        5       n[         R                  " U[        S	5      5      nUR                  (       aÜ  [         R"                  " U5      (       a&  UR%                  [         R                  " U5      5        O›[         R                  " U5      (       a€  [         R                  " U5      n[        U5       H[  n[         R                  " Xß5      n[         R"                  " U5      (       d  M6  UR%                  [         R                  " U5      5        M]     [&        S
:¼  a.  [         R(                  " 5       n[         R*                  " UUX·5      nO+[         R*                  " U[         R,                  " 5       X·5      nU	UU(       + US.nUnUUU'   GMH     U$ )z&Show existing optional content groups.rf  r×  r6  rj  r,  re  r¶  Nrb  )r   é   r¢  )r   rr  r]  rs  )r£   rÜ  rÏ   r!  r  rÛ  r  r:   r<  r¬  rT  r­  r  r	  rÍ   r…  rµ   rõ  rp   Úmupdf_version_tupleÚPdfResourceStackÚpdf_is_ocg_hiddenr  )r)   r¶  rb  Úocgsr¦   rJ   rh  rt  r  r   r  rs  ru  rr  rŒ  r�  r²  Úresource_stackÚhiddenrH   r  s                        r*   Úget_ocgsÚDocument.get_ocgsF  s@  € ä×Ò Ó/ˆÜ˜tÓ$ˆÜ×"Ò"Ü×"Ò"¤E×$5Ò$5°sÓ$;¼XÀfÓ=MÓNÜ˜Ó(Ü˜Ó óˆô
 ‹VˆÜ×!Ò! 4×(Ñ(ØˆIÜ×Ò Ó&ˆÜ�q—ˆAÜ×%Ò% tÓ/ˆCÜ×#Ò# SÓ)ˆDÜ×+Ò+¬U×-?Ò-?ÀÄhÈvÓFVÓ-WÓXˆDÜ×%Ò% s¬H°WÓ,=¸rÄ8ÈIÓCVÓWˆCØˆEØ�~�~Ü×)Ò)¨3Ó/�Ü“fˆGÜ×'Ò'¨¬h°xÓ.@ÓAˆFØ× × Ü×$Ò$ f×-Ñ-Ø—N‘N¤E×$5Ò$5°vÓ$>Õ?Ü×'Ò'¨×0Ñ0Ü×+Ò+¨VÓ4�AÜ" 1žX˜Ü!×/Ò/°Ó;˜Ü ×,Ò,¨a×0Ó0Ø#ŸN™N¬E×,=Ò,=¸qÓ,AÖBñ &ô # kÓ1Ü!&×!7Ò!7Ó!9�Ü×0Ò0°#°~ÀuÓR‘ä×0Ò0°#´u·|²|³~ÀuÓR�à Ø%Ø$œ*Ø"ñ	ˆDð ˆDØˆB�ŒIñ? ð@ ˆ	r,   c                óz  • U[        U R                  5       5      ;  a  [        S5      eU R                  USS9nSU;  a  [        S5      e[	        U5      nUR                  S5      nUR                  SU5      nUS:  d  US:  a  S	nO>X$S
-   U R                  SS5      R                  5       n[        [        [        U5      5      nUR                  S5      nUS:  a  S	nOEUR                  SU5      nUS:  a  UR                  SU5      nUS:  a  [        S5      eX$S-   US-    nUR                  S5      nUS:  a  S	nOÒS=pšUnU	S:  d  Xš:w  a>  US-  nXS:  d  [        S5      eX%   S:X  a  U	S-  n	X%   S:X  a  U
S-  n
U	S:  a  M7  Xš:w  a  M>  X$S-   US-    nUR                  SS5      R                  SS5      R                  SS5      nUR                  SS5      R                  SS5      R                  SS 5      nSS	Kn UR                  U5      nXXxS".$ ! [         a    [        5         [        S!U< 35        e f = f)#a`  Return the definition of an OCMD (optional content membership dictionary).

Recognizes PDF dict keys /OCGs (PDF array of OCGs), /P (policy string) and
/VE (visibility expression, PDF array). Via string manipulation, this
info is converted to a Python dictionary with keys "xref", "ocgs", "policy"
and "ve" - ready to recycle as input for 'set_ocmd()'.
úbad xrefTrI  ú
/Type/OCMDzbad object typeú/OCGs[rš  r   Nr§  rK  r´   ú/P/rÈ  r]  zbad object at xrefr   r   z/VE[r   r™  z/Andz"and",z/Notz"not",z/Orz"or",z 0 R]ú 0 Rr   z][z],[zbad /VE key: )r  rR  ÚpolicyÚve)rT  Úxref_lengthrÄ   rL  r<   r§   r  r;   rµ   r  r9   ÚjsonÚloadsrl   r{   rw   )r2  r  r   ÚtextlenÚp0rF  rR  r]  r^  ÚlpÚrpr`  s               r*   Úget_ocmdÚDocument.get_ocmdu  sN  € ð ”u˜SŸ_™_Ó.Ó/Ó/Ü˜ZÓ(Ð(Ø�‰˜t°ˆÐ5ˆØ˜tÓ#ÜÐ.Ó/Ð/Ü�d“)ˆà�Y‰Y�xÓ ˆØ�Y‰Y�s˜BÓˆØ�‹6�R˜!“VØ‰Dà˜Q™ Ð$×,Ñ,¨U°CÓ8×>Ñ>Ó@ˆDÜœœC ›Ó'ˆDà�Y‰Y�uÓˆØ�‹6Ø‰Fà—‘˜4 Ó$ˆBØ�A‹vØ—Y‘Y˜t RÓ(�Ø�A‹vÜ Ð!5Ó6Ð6à 1™f r¨A¡vÐ.�à�Y‰Y�vÓˆØ�‹6Ø‰BàˆKˆBØˆBØ�q“&˜B›HØ�a‘�Ø“|Ü$Ð%9Ó:Ð:Ø‘8˜s“?Ø˜!‘G�BØ‘8˜s“?Ø˜!‘G�Bð �q•&˜B�Hð ˜1‘f˜r A™vÐ&ˆBà—
‘
˜6 8Ó,ß‘˜ Ó*ß‘˜ Ó(ð ð
 —‘˜G SÓ)×1Ñ1°&¸#Ó>×FÑFÀtÈUÓSˆBÛðØ—Z‘Z “^�ð
 °fÑGÐGøô	 ó ÜÔ Ü˜-¨¡vÐ.Ô/Øðús   Ç?H È%H:c                ó´  • / n[        U SS9nUR                  (       d  U$ [        R                  " [        R                  " U5      [        S5      5      nUR                  (       d  U$ [        R                  " U[        S5      5      nUR                  (       d  U$ [        R                  " U[        S5      5      nUR                  (       d  U$ [        XQ5      nU$ )z!Get list of outline xref numbers.r   rÖ  r×  rè  ré  )rÏ   rÍ   r£   r  rÛ  r  rê  )r)   rí  rb  r¹  rî  rï  s         r*   râ  ÚDocument.get_outline_xrefs¸  s¦   € àˆÜ˜t¨aÑ0ˆØ�~�~ØˆLÜ×!Ò!¤%×"3Ò"3°CÓ"8¼(À6Ó:JÓKˆØ��ØˆLÜ×#Ò# D¬(°:Ó*>Ó?ˆØ× × ØˆLÜ×"Ò" 6¬8°GÓ+<Ó=ˆØ××ØˆLÜ  Ó.ˆØˆr,   c                ón  • U R                   (       d  U R                  (       a  [        S5      eU R                  (       d  g[	        U5      [
        La   UR                  nU R                  US5      nU(       d  U Vs/ s H  oDSS PM	     sn$ U$ ! [         a    [        5         [        S5      ef = fs  snf )z1Retrieve a list of fonts used on a page.
        rÕ  r/   zneed a Page or page numberr   Nr¨  )
rÃ   r¦  rÄ   r  rÉ   r9   r;  rl   r{   r  ©r)   ry  Úfullr  rK   s        r*   Úget_page_fontsÚDocument.get_page_fontsÊ  sŸ   € ð �>�>˜T×.×.ÜÐ;Ó<Ð<Ø�{�{ØÜ�‹9œCÒð?Ø—j‘j�ð ×Ñ  QÓ'ˆÞÙ$'Ó(¢C˜q�c�r“F¡CÑ(Ð(Øˆ
øô ó ?ÜÔ Ü Ð!=Ó>Ð>ð?üò
 )s   ÁB Á<B2Â B/c                óê   • U R                   (       d  U R                  (       a  [        S5      eU R                  (       d  gU R	                  US5      nU(       d  U Vs/ s H  oDSS PM	     sn$ U$ s  snf )z2Retrieve a list of images used on a page.
        rÕ  r/   r   Nr¨  ©rÃ   r¦  rÄ   r  r  rk  s        r*   Úget_page_imagesÚDocument.get_page_imagesÜ  sa   € ð �>�>˜T×.×.ÜÐ;Ó<Ð<Ø�{�{ØØ×Ñ  QÓ'ˆÞÙ$'Ó(¢C˜q�c�r“F¡CÑ(Ð(Øˆ
ùò )s   ÁA0c                óv   • U R                  5        Vs/ s H  n[        R                  " U5      PM     sn$ s  snf )z¹Return page label definitions in PDF document.

Returns:
    A list of dictionaries with the following format:
    {'startpage': int, 'prefix': str, 'style': str, 'firstpagenum': int}.
)rì  r  Ú	rule_dict)r)   rH   s     r*   Úget_page_labelsÚDocument.get_page_labelsè  s0   € ð 37×2GÑ2GÔ2IÓJÒ2I¨$”—’ Ö%Ñ2IÑJÐJùÒJs   “ 6c                óô   • / nU(       d  U$ U R                  5       nU/ :X  a  U$ [        U R                  5       H;  n[        R                  " XT5      nXa:X  d  M   UR                  U5        U(       d  M:    U$    U$ )zêReturn a list of page numbers with the given label.

Args:
    doc: PDF document object (resp. 'self').
    label: (str) label.
    only_one: (bool) stop searching after first hit.
Returns:
    List of page numbers having this label.
)rì  rT  rt  r  Úget_label_pnorp   )r2  ÚlabelÚonly_oner>  rN  rh  Úplabels          r*   Úget_page_numbersÚDocument.get_page_numbersò  ss   € ð ˆÞØˆNØ×%Ñ%Ó'ˆØ�R‹<ØˆNÜ�s—~‘~Ö&ˆAÜ×(Ò(¨Ó3ˆFØ�Ø—‘˜qÔ!ß�8ØØˆñ 'ð ˆr,   ©rð  rñ  rò  r  ró  r°  c          	     óP   • Uc  [         nUc  [        nX   R                  UX4UUUS9$ )a·  Create pixmap of document page by page number.

Notes:
    Convenience function calling page.get_pixmap.
Args:
    pno: (int) page number
    matrix: pymupdf.Matrix for transformation (default: pymupdf.Identity).
    colorspace: (str,pymupdf.Colorspace) rgb, rgb, gray - case ignored, default csRGB.
    clip: (irect-like) restrict rendering to this area.
    alpha: (bool) include alpha channel
    annots: (bool) also render annotations
r~  )ÚIdentityræ  rø  )r2  ry  rð  rñ  rò  r  ró  r°  s           r*   Úget_page_pixmapÚDocument.get_page_pixmap  sB   € ð. ‰>ÜˆFØÑÜˆJØ‰x×"Ñ"ØØØØØð #ð ð 	r,   c                ó&   • X   R                  X#XFS9$ )zþExtract a document page's text by page number.

Notes:
    Convenience function calling page.get_text().
Args:
    pno: page number
    option: (str) text, words, blocks, html, dict, json, rawdict, xhtml or xml.
Returns:
    output from page.TextPage().
)r  rÑ  r¬  )r  )r2  ry  Úoptionr  rÑ  Útextpager¬  s          r*   Úget_page_textÚDocument.get_page_text/  s   € ð& ‰x× Ñ  ¸%Ð ÐKÐKr,   c                ó¨   • U R                   (       d  U R                  (       a  [        S5      eU R                  (       d  gU R	                  US5      nU$ )z4Retrieve a list of XObjects used on a page.
        rÕ  r/   r   rp  )r)   ry  r  s      r*   Úget_page_xobjectsÚDocument.get_page_xobjectsD  s@   € ð �>�>˜T×.×.ÜÐ;Ó<Ð<Ø�{�{ØØ×Ñ  QÓ'ˆØˆ
r,   c                ó   • [        U SS9nUR                  (       d  g[        R                  " [        R                  " U5      [        S5      [        S5      [        S5      5      nSnUR                  (       a  [        R                  " U5      nU$ )zGet the /SigFlags value.r   rÖ  r¨  r×  rØ  ÚSigFlags)rÏ   rÍ   r£   r!  rÛ  r  r  )r)   rb  ÚsigflagsÚsigflags       r*   Úget_sigflagsÚDocument.get_sigflagsN  ss   € ä˜t¨aÑ0ˆØ�~�~ØÜ×&Ò&Ü×!Ò! #Ó&Ü˜Ó Ü˜Ó$Ü˜Ó$ó	ˆð ˆØ××Ü×&Ò& xÓ0ˆGØˆr,   c                ó
  ^ ^^• U UU4S jmT R                   (       a  [        S5      eT R                  5         T R                  nU(       d  / $ Sn/ nT" X$U5      nT R                  (       a  T(       d  T R                  U5        U$ )zëCreate a table of contents.

Args:
    simple: a bool to control output. Returns a list, where each entry consists of outline level, title, page number and link destination (if simple = False). For details see PyMuPDF's documentation.
c                ó   >• U (       GaD  U R                   R                  (       Ga(  U R                  (       a  U R                  nOSnU R                  (       dX  U R                  (       aD  U R
                  S:X  a$  TR                  U R                  5      nUS   S-   nOU R
                  S-   nOSnOSnT	(       d+  [        R                  " U T5      nUR                  X#XV/5        OUR                  X#U/5        U R                  (       a  T" U R                  XS-   5      nU R                  n U (       a  U R                   R                  (       a  GM(  U$ )zPRecursively follow the outline item chain and record item information in a list.r´   r¨  r   r   )rÅ   rÍ   r¨  Úis_externalr  r×   Úresolve_linkr  ÚgetLinkDictrp   Údownr_  )
ÚolItemr  Úlvlr¨  Úresolver×   Úlinkr2  r˜  r  s
          €€€r*   r˜  Ú!Document.get_toc.<locals>.recurseg  sô   ø€ ç˜VŸ[™[×3×3Ð3Ø—<—<Ø"ŸL™L‘Eà�Eà×)×)Ø—z—zØ!Ÿ;™;¨"Ó,Ø&)×&6Ñ&6°v·z±zÓ&B˜GØ#*¨1¡:°¡>™Dà#)§;¡;°¡?™Dà!™à�DæÜ ×,Ò,¨V°SÓ9�DØ—L‘L #¨dÐ!9Õ:à—L‘L #¨dÐ!3Ô4à—;—;Ù# F§K¡K°¸a¹Ó@�EØŸ™�ö5 ˜VŸ[™[×3×3Ò3ð6 ˆLr,   r¿   r   )rÃ   rÄ   rÃ  Úoutliner  rÌ  )r2  r  r—  r˜  r  r²  r˜  s   ``    @r*   r®  ÚDocument.get_toc^  sj   ú€ ÷	ð@ �=�=ÜÐ.Ó/Ð/Ø�‰ŒØ—‘ˆÞØˆIØˆØˆÙ�f SÓ)ˆØ�:�:žfØ×!Ñ! #Ô&Øˆ
r,   c                ó.  • Sn[        U SS9nUR                  (       a>  [        R                  " [        R                  " U5      [        S5      [        S5      5      nUb4  UR                  (       a#  [        R                  " U5      n[        U5      nU$ SnU$ )zGet document XML metadata.Nr   rÖ  r×  r¥  ra   )rÏ   rÍ   r£   r!  rÛ  r  r#  ÚJM_UnicodeFromBuffer)r)   Úxmlrb  r•  r¦   s        r*   Úget_xml_metadataÚDocument.get_xml_metadata”  s‚   € àˆÜ˜t¨aÑ0ˆØ�>�>Ü×%Ò%Ü×%Ò% cÓ*Ü˜VÓ$Ü˜ZÓ(óˆCð
 ‰?˜sŸ~Ÿ~Ü×(Ò(¨Ó-ˆDÜ% dÓ+ˆBð ˆ	ð ˆBØˆ	r,   c                óB  • U R                   (       a  [        S5      eU R                  (       d  [        S5      e[        U R                  5       HN  nU R                  U5       H6  nUS   [        R                  :X  a  M  US   [        R                  :X  a  M5      g   MP     g)z0Check whether there are annotations on any page.r¿   r}  r   TF)	rÃ   rÄ   r  rT  rt  Úpage_annot_xrefsr£   ÚPDF_ANNOT_LINKrV  ©r2  rh  rH   s      r*   Ú
has_annotsÚDocument.has_annots¥  sz   € à�=�=ÜÐ.Ó/Ð/Ø�z�zÜ˜[Ó)Ð)Ü�s—~‘~Ö&ˆAØ×,Ñ,¨QÖ/�à˜Q™¤5×#7Ñ#7Õ7¸4À¹7Äe×F\ÑF\Õ;\Úó 0ñ 'ð
 r,   c                ó  • U R                   (       a  [        S5      eU R                  (       d  [        S5      e[        U R                  5       H5  nU R                  U5       H  nUS   [        R                  :X  d  M      g   M7     g)z*Check whether there are links on any page.r¿   r}  r   TF)rÃ   rÄ   r  rT  rt  r¤  r£   r¥  r¦  s      r*   Ú	has_linksÚDocument.has_links²  si   € à�=�=ÜÐ.Ó/Ð/Ø�z�zÜ˜[Ó)Ð)Ü�s—~‘~Ö&ˆAØ×,Ñ,¨QÖ/�Ø˜‘7œe×2Ñ2Õ2Úó 0ñ 'ð r,   c                óx  • U R                   (       a  [        S5      eU R                  5       U l        [	        SSSSSSSS	S
SS.
R                  5        VVs/ s H  u  pXR                  U5      4PM     snn5      U l        U R                  S5      S:X  a  S OU R                  S5      U R                  S'   g s  snnf )Nz,cannot initialize - document still encryptedÚformatz
info:Titlezinfo:Authorzinfo:Subjectzinfo:Keywordszinfo:Creatorzinfo:Producerzinfo:CreationDatezinfo:ModDatezinfo:Trapped)
r­  r¨  Úauthorr«  Úkeywordsr\  Úproducerr©  rª  Útrappedrù  ÚNone)r¦  rÄ   r  r•  r:   rG   rð  r§  )r)   rò  rK   s      r*   rÃ  ÚDocument.init_doc¾  sÅ   € Ø××ÜÐKÓLÐLØ×)Ñ)Ó+ˆŒÜð &.Ø$0Ø%2Ø&4Ø'6Ø&4Ø'6Ø+>Ø&4Ø&4ñ=÷ $™e›gð=&ôò=&±S°Q˜×,Ñ,¨QÓ/Ó0ñ =&òóˆŒð  /3×.?Ñ.?ÀÓ.MÈvÓ.U¡dÐ[_×[lÑ[lÐmyÓ[zˆ�‰�lÒ#ùós   ÁB6
c
                ó¬  • Sn
[        U[        5      (       aE  UR                  R                  S:”  a  [        [        U5      n[        SUR                  5       5      n
O#[        U[
        5      (       a  Un
O[        U5      n
U
(       d  [        S5      eU
R                  (       d  U
R                  5       n[        SU5      n
U R                  U
UUUUUUUU	S9	$ )z¿
Insert an arbitrary supported document to an existing PDF.

The infile may be given as a filename, a Document or a Pixmap. Other
parameters - where applicable - equal those of insert_pdf().
Nr   Úpngzbad infile parameterrb  )r  r  r  ra  r)  r°  Úshow_progressÚfinal)rC   rî  rò  rJ   ræ  rÂ   ÚtobytesrÄ   r  rÄ  Ú
insert_pdf)r)   Úinfiler  r  r  ra  r)  r°  r¶  r·  r3  Úpdfbytess               r*   Úinsert_fileÚDocument.insert_fileÔ  sÆ   € ð" ˆÜ�fœf×%Ñ%Ø× Ñ ×"Ñ" QÓ&Ü¤ vÓ.�Ü˜5 &§.¡.Ó"2Ó3‰CÜ˜¤×)Ñ)Ø‰Cä˜6Ó"ˆCÞÜÐ3Ó4Ð4Ø�z�zØ×)Ñ)Ó+ˆHÜ˜5 (Ó+ˆCØ�‰ØØ#ØØ!ØØØØ+Øð ð 
ð 
	r,   rq  c	           	     óp   • U R                  XUS9n	[        U5      (       d  gU	R                  SUUUUUS9n
U
$ )z´Create a new PDF page and insert some text.

Notes:
    Function combining pymupdf.Document.new_page() and pymupdf.Page.insert_text().
    For parameter details see these methods.
)ry  r‰  r2  r   )é2   rä  )r   rÿ   r  ro  )Únew_pageré   rŸ  )r2  ry  r   r   r‰  r2  rÿ   r  ro  r×   r¦   s              r*   Úinsert_pageÚDocument.insert_pageÿ  sP   € ð" �|‰| ¸ˆ|Ð@ˆÜ�D�z‰zØØ×ÑØØØØØØð ð 
ˆð ˆ	r,   )r  r  r  ra  r)  r°  rˆ  re  r¶  r·  Ú_gmapc               ó  • U R                   (       d  U R                  (       a  [        S5      eU R                  UR                  :X  a  [        S5      eUnUS:  a  U R                  nU R                  nUR                  nUnUnUn[        US5      n[        UUS-
  5      nUS:  a  US-
  n[        UUS-
  5      nUS:  a  Un[        XÞ5      n[        U5      U
s=:”  a  S:”  ay  O  Ov[        R                  R                  UR                  5      nU(       d  Sn[        R                  R                  U R                  5      nU(       d  Sn[        SU SU S35        UR                  nU R                  R                  US	5      nUc  [        U 5      nXÀR                  U'   [         (       a*  [#        U R$                  UR$                  UUUUUUU
UU5        O_['        U 5      n['        U5      nUR(                  (       a  UR(                  (       d  [+        S
5      e[-        U5        [/        UUUUXÕXgX¬5
        U R1                  5         U(       a  U R3                  UUUUS9  U(       a  U R5                  XUUXÙS9  US:X  a  S	U R                  U'   g	g	)aM  Insert a page range from another PDF.

Args:
    docsrc: PDF to copy from. Must be different object, but may be same file.
    from_page: (int) first source page to copy, 0-based, default 0.
    to_page: (int) last source page to copy, 0-based, default last page.
    start_at: (int) from_page will become this page number in target.
    rotate: (int) rotate copied pages, default -1 is no change.
    links: (int/bool) whether to also copy links.
    annots: (int/bool) whether to also copy annotations.
    widgets: (int/bool) whether to also copy form fields.
    join_duplicates: (int/bool) join or rename duplicate widget names.
    show_progress: (int) progress message interval, 0 is no messages.
    final: (bool) indicates last insertion from this source PDF.
    _gmap: internal use only

Copy sequence reversed if from_page > to_page.rÕ  z'source and target cannot be same objectr   r   z
memory PDFzInserting 'z' at 'rî   Nzsource or target not a PDF)r  r  r  )r  r  r  re  )rÃ   r¦  rÄ   rÁ  rt  r!  Úminr<   ri   r
   Úbasenamer   rw   r©  r=   ÚGraftmapr  Úextra_FzDocument_insert_pdfrÅ   rÏ   rÍ   rÀ  rB  ÚJM_merge_ranger#  r/  r—  )r)   Údocsrcr  r  r  ra  r)  r°  rˆ  re  r¶  r·  rÃ  r   ÚoutCountr›  rÁ  rU  ÚinnameÚoutnameÚisrtÚpdfoutÚpdfsrcs                          r*   r¹  ÚDocument.insert_pdf  sN  € ðL �>�>˜T×.×.ÜÐ;Ó<Ð<Ø�>‰>˜V×-Ñ-Ó-ÜÐFÓGÐGØˆØ�‹6Ø—‘ˆBØ—?‘?ˆØ×$Ñ$ˆð ˆØˆØˆô ��Q‹ZˆÜ��X ‘\Ó"ˆà�‹6Ø˜A‘ˆBÜ��X ‘\Ó"ˆà�‹6ØˆBÜ�Óˆäˆv‹;˜Õ*¨Ö*Ü—W‘W×%Ñ% f§k¡kÓ2ˆFÞØ%�Ü—g‘g×&Ñ& t§y¡yÓ1ˆGÞØ&�Ü�k & ¨°¨y¸Ð:Ô;ð ×ÑˆØ—‘×"Ñ" 4¨Ó.ˆØ‰=ä˜T“NˆEØ#(�N‰N˜4Ñ çŠ;ä'Ø—I‘IØ—K‘KØØØØØØØ!ØØõô & dÓ+ˆFÜ% fÓ-ˆFà×$×$¨F×,=×,=ÜÐ!=Ó>Ð>Ü˜VÔ$Ü˜6 6¨2¨r°2¸uÈmÔcð 	×ÑÔÞà�N‰N˜6¨R¸ÀbˆNÑIÞØ×Ñ˜V°bÀ"ÈrÐÑsØ�A‹:Ø#'ˆD�N‰N˜4Ò ð r,   c                ó|   • [        U SS9nUR                  (       d  g[        R                  " U5      nU(       a  S$ S$ )Nr   rÖ  FT)rÏ   rÍ   r£   Úpdf_has_unsaved_changes©r)   rb  r%  s      r*   Úis_dirtyÚDocument.is_dirty”  s5   € ä˜t¨aÑ0ˆØ�~�~ØÜ×)Ò)¨#Ó.ˆÞˆtÐ#˜eÐ#r,   c                óf   • [        U SS9nUR                  (       a  [        R                  " U5      $ g)z)
Check whether we have a linearized PDF.
r   rÖ  F)rÏ   rÍ   r£   Úpdf_doc_was_linearizedr…  s     r*   Úis_fast_webaccessÚDocument.is_fast_webaccessœ  s+   € ô
 ˜t¨aÑ0ˆØ�>�>Ü×/Ò/°Ó4Ð4Ør,   c                ó¬  • [        U SS9nUR                  (       d  gSn [        R                  " [        R                  " U5      [        R
                  [        R                  [        R                  5      n[        R                  " U5      (       a  [        R                  " U5      nUS:¼  a  U$ g! [         a    [        (       a
  [        5          gf = f)z Either False or PDF field count.r   rÖ  Fr¨  )rÏ   rÍ   r£   r!  rÛ  ÚPDF_ENUM_NAME_RootÚPDF_ENUM_NAME_AcroFormÚPDF_ENUM_NAME_Fieldsr<  r¬  rl   r  r{   )r)   rb  rÊ  Úfieldss       r*   rw  ÚDocument.is_form_pdf¦  s°   € ô ˜t¨aÑ0ˆØ�~�~ØØˆð	Ü×(Ò(Ü×%Ò% cÓ*Ü×,Ñ,Ü×0Ñ0Ü×.Ñ.ó	ˆFô ×!Ò! &×)Ñ)Ü×+Ò+¨FÓ3�ð �A‹:ØˆLØøô ó 	ß#Ò#¬Ô(8Ùð	ús    BB1 Â1CÃCc                óÄ   • [        U R                  [        R                  5      (       a  g[        R                  " U R                  R
                  5      (       a  SnU$ SnU$ )zCheck for PDF.TF)rC   rÅ   r£   rÇ   Úll_pdf_specificsrÍ   rj  s     r*   r  ÚDocument.is_pdf½  sS   € ô �d—i‘i¤×!2Ñ!2×3Ñ3Øô
 ×!Ò! $§)¡)×"6Ñ"6×7Ñ7ØˆCð ˆ
ð ˆCØˆ
r,   c                óx   • U R                   (       a  [        S5      e[        [        R                  " U 5      5      $ )z Check if document is layoutable.r¿   )rÃ   rÄ   ré   r£   r¿  r0   s    r*   Úis_reflowableÚDocument.is_reflowableÌ  s-   € ð �>�>ÜÐ.Ó/Ð/Ü”E×3Ò3°DÓ9Ó:Ð:r,   c                óx   • [        U SS9nUR                  (       d  g[        R                  " U5      nU(       a  gg)zCheck whether PDF was repaired.r   rÖ  FT)rÏ   rÍ   r£   Úpdf_was_repairedrÔ  s      r*   Úis_repairedÚDocument.is_repairedÓ  s3   € ô ˜t¨aÑ0ˆØ�~�~ØÜ×"Ò" 3Ó'ˆÞØØr,   c                ó   • U R                   (       d  U R                  (       a  [        S5      eSnSn[        U 5      n[        R
                  " U5      n[        R                  " U5      n[        U5      [        U5      S.$ )z(Show if undo and / or redo are possible.rÕ  r   )ÚundoÚredo)rÃ   r¦  rÄ   rÏ   r£   Úpdf_can_undoÚpdf_can_redoré   )r)   rì  rí  rb  s       r*   Újournal_can_doÚDocument.journal_can_doÞ  sd   € à�>�>˜T×.×.ÜÐ;Ó<Ð<ØˆØˆÜ˜tÓ$ˆÜ×!Ò! #Ó&ˆÜ×!Ò! #Ó&ˆÜ˜T›
¬D°«JÑ7Ð7r,   c                ó    • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " U5        g)zActivate document journalling.rÕ  N)rÃ   r¦  rÄ   rÏ   r£   Úpdf_enable_journalr…  s     r*   Újournal_enableÚDocument.journal_enableé  s5   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ× Ò  Õ%r,   c                óÈ   • U R                   (       d  U R                  (       a  [        S5      e[        U 5      nUR                  =(       a    UR                  R
                  nU$ )z Check if journalling is enabled.rÕ  )rÃ   r¦  rÄ   rÏ   rÍ   Újournal)r)   rb  Úenableds      r*   Újournal_is_enabledÚDocument.journal_is_enabledð  sD   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆØ—.‘.×; S§^¡^×%;Ñ%;ˆØˆr,   c                ó’  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[	        U[
        5      (       a  [        R                  " X!5        O7[        U5      n[        R                  " U5      n[        R                  " X$5        UR                  R                  (       d  [        S[        5        gg)zLoad a journal from a file.rÕ  z!Journal and document do not matchN)rÃ   r¦  rÄ   rÏ   rC   rè  r£   Úpdf_load_journalr/  r   Úpdf_deserialise_journalrÍ   r÷  rÂ  rÃ  )r)   rk   rb  r&  Ústms        r*   Újournal_loadÚDocument.journal_loadø  sˆ   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ�h¤×$Ñ$Ü×"Ò" 3Õ1ä$ XÓ.ˆCÜ×&Ò& sÓ+ˆCÜ×)Ò)¨#Ô3Ø�~‰~×%×%ÜÐ8Ô:NÕOð &r,   c                ó¢   • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " X!5      nU$ )z#Show operation name for given step.rÕ  )rÃ   r¦  rÄ   rÏ   r£   Úpdf_undoredo_step)r)   r„  rb  r   s       r*   Újournal_op_nameÚDocument.journal_op_name  s<   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×&Ò& sÓ1ˆØˆr,   c                ó¬   • U R                   (       d  U R                  (       a  [        S5      eSn[        U 5      n[        R
                  " U5      u  p1X14$ )zShow journalling state.rÕ  r   )rÃ   r¦  rÄ   rÏ   r£   Úpdf_undoredo_state)r)   Ústepsrb  r¦   s       r*   Újournal_positionÚDocument.journal_position  sF   € à�>�>˜T×.×.ÜÐ;Ó<Ð<ØˆÜ˜tÓ$ˆÜ×,Ò,¨SÓ1‰	ˆØˆyÐr,   c                ó    • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " U5        g)zMove forward in the journal.rÕ  T)rÃ   r¦  rÄ   rÏ   r£   Úpdf_redor…  s     r*   Újournal_redoÚDocument.journal_redo  ó6   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ�Š�sÔØr,   c                ó.  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[	        U[
        5      (       a  [        R                  " X!5        g[        U5      n[        R                  " X#5        UR                  5         g)zSave journal to a file.rÕ  N)rÃ   r¦  rÄ   rÏ   rC   rè  r£   Úpdf_save_journalÚJM_new_output_fileptrÚpdf_write_journalÚfz_close_output)r)   rk   rb  Úouts       r*   Újournal_saveÚDocument.journal_save  sf   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ�h¤×$Ñ$Ü×"Ò" 3Õ1ä'¨Ó1ˆCÜ×#Ò# CÔ-Ø×ÑÕ!r,   c                ó(  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      nUR                  R
                  (       d  [        S5      eU(       a  [        R                  " X!5        g[        R                  " U5        g)zBegin a journalling operation.rÕ  zJournalling not enabledN)
rÃ   r¦  rÄ   rÏ   rÍ   r÷  rß   r£   Úpdf_begin_operationÚpdf_begin_implicit_operation)r)   r   rb  s      r*   Újournal_start_opÚDocument.journal_start_op+  s_   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆØ�~‰~×%×%ÜÐ 9Ó:Ð:ÞÜ×%Ò% cÕ0ä×.Ò.¨sÕ3r,   c                ó    • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " U5        g)zEnd a journalling operation.rÕ  N)rÃ   r¦  rÄ   rÏ   r£   Úpdf_end_operationr…  s     r*   Újournal_stop_opÚDocument.journal_stop_op7  s5   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×Ò Õ$r,   c                ó    • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " U5        g)zMove backwards in the journal.rÕ  T)rÃ   r¦  rÄ   rÏ   r£   Úpdf_undor…  s     r*   Újournal_undoÚDocument.journal_undo>  r	  r,   c                ó¼   • [        U SS9nUR                  (       d  g[        R                  " U5      nU[        R                  :X  a  g[        R
                  " U5      $ )zDocument language.r   rÖ  N)rÏ   rÍ   r£   Úpdf_document_languagerH  rF  )r)   rb  rJ  s      r*   rK  ÚDocument.languageF  sL   € ô ˜t¨aÑ0ˆØ�~�~ØÜ×*Ò*¨3Ó/ˆØ”5×&Ñ&Ó&ØÜ×2Ò2°4Ó8Ð8r,   c                óª   • U R                   (       a  [        S5      e[        R                  " U R                  5      nUR
                  UR                  4$ )z Id (chapter, page) of last page.r¿   )rÃ   rÄ   r£   Úfz_last_pagerÅ   rx  r×   )r)   Úlast_locs     r*   Úlast_locationÚDocument.last_locationQ  s@   € ð �>�>ÜÐ.Ó/Ð/Ü×%Ò% d§i¡iÓ0ˆØ×Ñ §¡Ð.Ð.r,   c                óœ  • [        U 5      n[        R                  " 5       n[        R                  " U5      n/ n[	        U5       H„  n[        R
                  " XU5        UR                  S:X  a  SnOUR                  S:X  a  SnOSnUUR                  UR                  UUR                  UR                  S.nUR                  U5        M†     U$ )z-Show OC visibility status modifiable by user.r   Úcheckboxr   Úradioboxry  )r;  r   ÚdepthrÉ   r]  Úlocked)rÏ   r£   ÚPdfLayerConfigUiÚpdf_count_layer_config_uirT  Úpdf_layer_config_ui_inforÉ   r   r/	  Úselectedr0	  rp   )r)   rb  r:  rJ   r¦   rh  rc  rH   s           r*   Úlayer_ui_configsÚDocument.layer_ui_configsY  s¯   € ä˜tÓ$ˆÜ×%Ò%Ó'ˆÜ×+Ò+¨SÓ1ˆØˆÜ�q–ˆAÜ×*Ò*¨C°DÔ9Ø�y‰y˜A‹~Ø"‘Ø—‘˜a“Ø"‘à�àØ ŸI™IØ!ŸZ™ZØ!ØŸ-™-Ø"Ÿk™kñˆDð �I‰I�dŽOñ! ð" ˆ	r,   c                ó  • U R                   (       d  U R                  (       a  [        S5      eU R                  n[        R
                  " U5      (       d  gUnUn[        U5      n[        R                  " U5      (       d2  UR                  UR                  -
  nUR                  UR                  -
  nUS::  d  US::  a  [        S5      e[        R                  " XVXt5        U R                  5         U R                  5         g)z Re-layout a reflowable document.rÕ  NrÓ  zbad page size)rÃ   r¦  rÄ   rÅ   r£   r¿  r  rç  r¯  r°  r±  r²  r¾  r#  rÃ  )	r)   rý   r‰  r2  r   r2  r   r!  r%  s	            r*   ÚlayoutÚDocument.layoutr  s¾   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ø�i‰iˆÜ×.Ò.°×4Ñ4ØØˆØˆÜ˜DÓ!ˆÜ×(Ò(¨×+Ñ+Ø—‘�q—t‘t‘ˆAØ—‘�q—t‘t‘ˆAØ�‹8�q˜C“xÜ˜oÓ.Ð.Ü× Ò  #¨!Ô6à×ÑÔØ�‰�r,   c                óL  • U R                   (       d  U R                  (       a  [        S5      eUc  SnX;  a  [        S5      e[        U5      [        L a$  US:  a  U R
                  nUS:  a  X-  nUS:  a  M  [        U[        5      (       a"  [        R                  " U R                  U5      nO%Uu  pE[        R                  " U R                  XE5      n[        X05      nSUl        Xl        X`R                  [        U5      '   [         R"                  " 5       Ul        Xl        U$ )zŒLoad a page.

'page_id' is either a 0-based page number or a tuple (chapter, pno),
with chapter number and page number within that chapter.
rÕ  r   zpage not in documentT)rÃ   r¦  rÄ   rÉ   r9   rt  rC   r£   Úfz_load_pagerÅ   Úfz_load_chapter_pagerÓ   rö   rí   r­  r[  r   r¬  rZ  r;  )r)   Úpage_idÚnpr×   rx  Úpagenumr  s          r*   rŸ  ÚDocument.load_page†  sî   € ð �>�>˜T×.×.ÜÐ;Ó<Ð<Ø‰?ØˆGØÓÜÐ3Ó4Ð4Ü�‹=œCÒ G¨a£KØ—‘ˆBØ˜A“+Ø‘�ð ˜A•+ä�gœs×#Ñ#Ü×%Ò% d§i¡i°Ó9‰Dà&ÑˆGÜ×-Ò-¨d¯i©i¸ÓJˆDÜ�4ÓˆàˆŒØŒ
Ø#&�‰œ˜3›Ñ Ü!×5Ò5Ó7ˆŒØŒ
Øˆ
r,   c                óT  • U R                   (       a  [        S5      eU R                  n[        R                  " SS5      n[        R
                  " U5      nUS:  a  X-  nUS:  a  M  X:¼  a  [        [        5      e[        R                  " X!5      nUR                  UR                  4$ )zConvert pno to (chapter, page).r¿   r¨  r   )
rÃ   rÄ   rÅ   r£   Úfz_make_locationr  r  Úfz_location_from_page_numberrx  r×   )r)   ry  Úthis_docrw  rt  s        r*   Úlocation_from_page_numberÚ"Document.location_from_page_number¤  sŒ   € à�>�>ÜÐ.Ó/Ð/Ø—9‘9ˆÜ×$Ò$ R¨Ó,ˆÜ×)Ò)¨(Ó3ˆ
Ø�A‹gØÑˆCð �A�gàÓÜœnÓ-Ð-Ü×0Ò0°Ó?ˆØ�{‰{˜CŸH™HÐ$Ð$r,   c                óø   • U R                   (       d  U R                  (       a  [        S5      e[        R                  " U6 n[        R
                  " U R                  R                  UR                  5       5      nU$ )z.Make a page pointer before layouting document.rÕ  )	rÃ   r¦  rÄ   r£   Ú
FzLocationÚll_fz_make_bookmark2rÅ   rÍ   r  )r)   rw  Úmarks      r*   Úmake_bookmarkÚDocument.make_bookmark²  sT   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü×Ò Ð$ˆÜ×)Ò)¨4¯9©9×+?Ñ+?ÀÇÁÃÓPˆØˆr,   c                ó
  • U R                  5       nUS:X  a  gU R                  US5      nUS   S:X  a  0 $ US   S:X  a0  [        US   R                  5       S   5      nU R	                  USS9nOUS   S	:X  a  US   nOSnUb  USS
 S:X  a	  USS S:X  d  0 $ SSSS.nUS
S R                  S5      nUSS  H"  n UR                  5       u  pgUS:X  d  M  SXF'   M$     U$ ! [
         a    [        S:”  a
  [        5         Us s  $ f = f)zReturn the PDF MarkInfo value.r   NÚMarkInforò  r  r   TrI  r:   r   ú<<r  ú>>F©ÚMarkedÚUserPropertiesÚSuspectsÚ/Útrue)rK  rÈ  r9   r;   rL  rl   r  r{   )r)   r  r¦   r  ÚvalidrK   rŽ  r¹   s           r*   ÚmarkinfoÚDocument.markinfoº  s/  € ð ×ÑÓ!ˆØ�1‹9ØØ×Ñ˜t ZÓ0ˆØˆa‰5�F‹?ØˆIØˆa‰5�F‹?Ü�r˜!‘u—{‘{“} QÑ'Ó(ˆDØ×"Ñ" 4°DÐ"Ð9‰CØ�‰U�f‹_Ø�Q‘%‰CàˆCØ‰;˜s 2 A˜w¨$›°3°r°s°8¸tÓ3CØˆIØ °EÀuÑMˆØ�!�Bˆi�o‰o˜cÓ"ˆØ�Q�R“ˆAðØŸW™W›Y‘
�ð ˜�Ø!�“
ñ ð ˆøô ó Ü'¨!Ó+´Ô0@Ø”ðús   Â9CÃ DÄDc                óê   • U R                   (       a  [        S5      e[        U 5      nU[        U5      ;  d  U[        SU5      ;  a  [        S5      eSnSnUS:X  a  US-
  nSnU R	                  XXE5      $ )z�Move a page within a PDF document.

Args:
    pno: source page number.
    to: put before this page, '-1' means after last page.
r¿   r¨  r~  r   r   r   r¡  s         r*   Ú	move_pageÚDocument.move_pageØ  sy   € ð �>�>ÜÐ.Ó/Ð/Ü˜“Yˆ
Ø”u˜ZÓ(Ó(¨B´e¸BÀ
Ó6KÓ,KÜÐ1Ó2Ð2ØˆØˆØ�‹8Ø˜a‘ˆBØˆFà×#Ñ# C¨VÓ:Ð:r,   c                ó   • U R                   $ r.   rE  r0   s    r*   r   ÚDocument.nameì  s   € à�z‰zÐr,   c                óà  • U R                   (       d  g[        U 5      nSnSn[        R                  " [        R                  " U5      S5      n[        R
                  " XT5      n[        R                  " U5      (       a  [        R                  " U5      nU(       a&  [        R                  " XT[        R                  5        O%[        R                  " XT[        R                  5        Uc  US:¬  $ U$ )z"Get/set the NeedAppearances value.Nr¨  ÚNeedAppearancesrm  r   )rw  rÏ   r£   ro  rÛ  r  Úpdf_is_boolÚpdf_to_boolr°  ÚPDF_TRUEÚ	PDF_FALSE)r)   r¹   rb  ÚoldvalÚappkeyÚformÚapps          r*   Úneed_appearancesÚDocument.need_appearancesð  sµ   € à××Øä˜tÓ$ˆØˆØ"ˆä×"Ò"Ü×!Ò! #Ó&Øóˆô ×!Ò! $Ó/ˆÜ×Ò˜S×!Ñ!Ü×&Ò& sÓ+ˆFÞÜ×Ò ¬e¯n©nÕ=ä×Ò ¬e¯o©oÔ>Ø‰=Ø˜Q‘;ÐØˆr,   c                ó  • U R                   (       a  [        S5      e[        U R                  [        R
                  5      (       a  U R                  OU R                  R                  5       n[        R                  " U5      nU$ )zIndicate password required.r¿   )rÃ   rÄ   rC   rÅ   r£   rÆ   rÈ   Úfz_needs_password)r)   rÊ   rL   s      r*   rÂ  ÚDocument.needs_pass  sX   € ð �>�>ÜÐ.Ó/Ð/Ü *¨4¯9©9´e×6FÑ6F× GÑ G�4—9’9ÈTÏYÉYÏ_É_ÓM^ˆÜ×%Ò% xÓ0ˆØˆ
r,   c                ó*   • U R                  XUS9  X   $ )a   Create and return a new page object.

Args:
    pno: (int) insert before this page. Default: after last page.
    width: (float) page width in points. Default: 595 (ISO A4 width).
    height: (float) page height in points. Default 842 (ISO A4 height).
Returns:
    A pymupdf.Page object.
©r‰  r2  )r2  )r2  ry  r‰  r2  s       r*   rÀ  ÚDocument.new_page  s   € ð 	�‰�S¨fˆÑ5Ø‰xˆr,   c                óè  • U R                   (       d  U R                  (       a  [        S5      e[        U5      [        L a  SU4nX;  a  [        S5      e[        U5      U R                  :X  a  g[        U 5      nUS   n[        U[        5      (       d  [        [        [        5        UnUS   nUn[        R                  " XE5      n[        R                  " X&5      nUR                  UR                   4$ )z!Get (chapter, page) of next page.rÕ  r   úpage id not in documentr/   r   )rÃ   r¦  rÄ   rÉ   r9   r¶   r*	  rË   rC   rÂ  ÚMSG_BAD_PAGEIDÚPyExc_ValueErrorr£   rB	  Úfz_next_pagerx  r×   )r)   r=	  rD	  r  rx  ry  rw  Únext_locs           r*   Únext_locationÚDocument.next_location#  sÌ   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü�‹=œCÒØ˜'�lˆGØÓÜÐ6Ó7Ð7Ü�‹>˜T×/Ñ/Ó/ØÜ" 4Ó(ˆØ�q‰kˆÜ˜#œs×#Ñ#Ü”NÔ$4Ô5ØˆØ�q‰kˆØˆÜ×$Ò$ WÓ2ˆÜ×%Ò% xÓ5ˆØ×Ñ §¡Ð.Ð.r,   c                óî  • [         (       a!  [        R                  " U R                  U5      $ [	        U R                  [
        R                  5      (       a-  [
        R                  " U R                  5      nU R                  nO+[
        R                  " U R                  5      n[        U 5      nUS:  a  X-  nUS:  a  M  X:”  a  [        [        5      e[
        R                  " X15      n[        U5      nU$ rŒ   )r  r   r¤  rÅ   rC   r£   rÇ   r  r  rÏ   rÄ   r  r  ÚJM_get_annot_xref_list)r)   rJ   rt  rÊ  r:  r°  s         r*   r¤  ÚDocument.page_annot_xrefs8  s¶   € ßŠ;Ü×)Ò)¨4¯9©9°aÓ8Ð8ä�d—i‘i¤×!2Ñ!2×3Ñ3Ü×.Ò.¨t¯y©yÓ9ˆJØŸ9™9‰Lä×-Ò-¨d¯i©iÓ8ˆJÜ+¨DÓ1ˆLØ�!‹eØ‰OˆAð �!�eà‹>ÜœnÓ-Ð-Ü×,Ò,¨\Ó=ˆÜ'¨Ó1ˆØˆr,   c                óD  • U R                   (       a  [        S5      e[        (       a  U R                  U 5      $ [	        U R
                  [        R                  5      (       a   [        R                  " U R
                  5      $ [        R                  " U R
                  5      $ )zNumber of pages.r¿   )
rÃ   rÄ   r  rÆ  rC   rÅ   r£   rÆ   r  r  r0   s    r*   rt  ÚDocument.page_countJ  sn   € ð �>�>ÜÐ.Ó/Ð/ßŠ;Ø×#Ñ# DÓ)Ð)Ü�t—y‘y¤%×"2Ñ"2×3Ñ3Ü×'Ò'¨¯©Ó3Ð3ä×(Ò(¨$¯)©)Ó4Ð4r,   c                óV  • U R                   (       a  [        S5      eU R                  n[        R                  " U5      nUnUS:  a  XC-  nUS:  a  M  [        U 5      nXC:¼  a  [        [        5      e[        R                  " XT5      n[        U5      n[        U5      n[        U5      nU$ )z2Get CropBox of page number (without loading page).r¿   r   )rÃ   rÄ   rÅ   r£   r  rÏ   r  r  Ú
JM_cropboxrq  r,  )	r)   ry  rD	  rt  rJ   rb  r
  Úcropboxr  s	            r*   Úpage_cropboxÚDocument.page_cropboxV  s–   € à�>�>ÜÐ.Ó/Ð/Ø—9‘9ˆÜ×)Ò)¨8Ó4ˆ
ØˆØ�!‹eØ‰OˆAð �!�eä˜tÓ$ˆØ‹?ÜœnÓ-Ð-Ü×+Ò+¨SÓ4ˆÜ˜WÓ%ˆÜ˜gÓ&ˆä�3‹iˆàˆ
r,   c                ó  • [        U5      [        L a"  U R                  nUS:  a  X-  nUS:  a  M  SU4nX;  a  [        S5      eUu  p4[        R
                  " X45      n[        R                  " U R                  U5      nU$ )z&Convert (chapter, pno) to page number.r   rr	  )rÉ   r9   rt  rÄ   r£   rB	  Úfz_page_number_from_locationrÅ   )r)   r=	  r>	  rx  ry  rw  Úpage_ns          r*   Úpage_number_from_locationÚ"Document.page_number_from_locationj  s{   € ä�‹=œCÒØ—‘ˆBØ˜A“+Ø‘�ð ˜A•+à˜'�lˆGØÓÜÐ6Ó7Ð7Ø‰ˆÜ×$Ò$ gÓ3ˆÜ×3Ò3°T·Y±YÀÓDˆØˆr,   c                ó”  • [         (       a!  [        R                  " U R                  U5      $ U R                  (       a  [        S5      e[        R                  " U R                  5      nUnUS:  a  X2-  nUS:  a  M  [        U 5      nSnX2:¼  a  [        [        5      e[        R                  " [        R                  " XC5      5      nU$ )zGet xref of page number.r¿   r   )r  r   r  rÅ   rÃ   rÄ   r£   r  rÏ   r  r  r  )r)   ry  rt  rJ   rb  r  s         r*   r  ÚDocument.page_xrefx  sž   € çŠ;Ü—?’? D§I¡I¨sÓ3Ð3Ø�>�>ÜÐ.Ó/Ð/Ü×)Ò)¨$¯)©)Ó4ˆ
ØˆØ�!‹eØ‰OˆAð �!�eä˜tÓ$ˆØˆØ‹?ÜœnÓ-Ð-Ü×Ò¤× 9Ò 9¸#Ó AÓBˆØˆr,   c                óŒ   • U R                  5       nUS:X  a  gU R                  US5      nUS   S:X  a  gUS   S:X  a  US   SS $ g)z)Return the PDF PageLayout value.
        r   NÚ
PageLayoutrò  Ú
SinglePager   r   ©rK  rÈ  ©r)   r  r¦   s      r*   Ú
pagelayoutÚDocument.pagelayout‰  sZ   € ð ×ÑÓ!ˆØ�1‹9ØØ×Ñ˜t \Ó2ˆØˆa‰5�F‹?ØØˆa‰5�F‹?Ø�a‘5˜˜�9ÐØr,   c                óŒ   • U R                  5       nUS:X  a  gU R                  US5      nUS   S:X  a  gUS   S:X  a  US   SS $ g)z'Return the PDF PageMode value.
        r   NÚPageModerò  ÚUseNoner   r   r�	  rŽ	  s      r*   ÚpagemodeÚDocument.pagemode—  sZ   € ð ×ÑÓ!ˆØ�1‹9ØØ×Ñ˜t ZÓ0ˆØˆa‰5�F‹?ØØˆa‰5�F‹?Ø�a‘5˜˜�9ÐØr,   c              #  óŽ  #   • U R                   (       d  gU=(       d    SnUS:  a  XR                   -  nUS:  a  M  U[        U R                   5      ;  a  [        S5      eUb  X R                   ::  a  UOU R                   nUS:X  a  [        S5      eUc
  X:”  a  SnOSn[        XU5       H  nU R                  U5      v •  M     g7f)zmReturn a generator iterator over a page range.

Arguments have the same meaning as for the range() built-in.
Nr   zbad start page numberzarg 3 must not be zeror¨  r   )rt  rT  rÄ   rŸ  )r)   rÇ  rƒ  r„  ry  s        r*   rF  ÚDocument.pages¥  s·   é € ð
 ��Øà—
˜ˆØ�a‹iØ—_‘_Ñ$ˆEð �a�iàœ˜dŸo™oÓ.Ó.ÜÐ4Ó5Ð5ð Ñ'¨D·O±OÓ,C‰tÈÏÉˆð �1‹9ÜÐ5Ó6Ð6Ø‰<Ø‹|Ø‘à�ä˜ dÖ+ˆCØ—>‘> #Ó&Ô'ò ,ùs   ‚8C¼B	Cc                óØ   • [        U SS9nSnUR                  (       d  U$ [        R                  " [        R                  " U5      [        S5      5      n[        R                  " U5      nU$ )zGet xref of PDF catalog.r   rÖ  r×  )rÏ   rÍ   r£   r  rÛ  r  r  )r)   rb  r  r¹  s       r*   rK  ÚDocument.pdf_catalogÂ  sV   € ä˜t¨aÑ0ˆØˆØ�~�~ØˆKÜ×!Ò!¤%×"3Ò"3°CÓ"8¼(À6Ó:JÓKˆÜ×Ò Ó%ˆØˆr,   c                ó"   • U R                  SXS9$ )zGet PDF trailer as a string.r¨  )rJ  rš  )rL  )r)   rJ  rš  s      r*   rÛ  ÚDocument.pdf_trailerÌ  s   € à×Ñ ¨zÐÐGÐGr,   c                ó¨  • U R                   (       a  gU R                  n[        R                  " U5      nUR                  (       a  [        R
                  " U5      $ Sn[        R                  " U[        R                  5      (       d  U[        R                  -  n[        R                  " U[        R                  5      (       d  U[        R                  -  n[        R                  " U[        R                  5      (       d  U[        R                  -  n[        R                  " U[        R                  5      (       d  U[        R                  -  nU$ )zDocument permissions.r   l   üÿ )r¦  rÅ   r£   rn  rÍ   Úpdf_document_permissionsÚfz_has_permissionÚFZ_PERMISSION_PRINTÚPDF_PERM_PRINTÚFZ_PERMISSION_EDITÚPDF_PERM_MODIFYÚFZ_PERMISSION_COPYÚPDF_PERM_COPYÚFZ_PERMISSION_ANNOTATEÚPDF_PERM_ANNOTATE)r)   r2  rb  Úperms       r*   rú  ÚDocument.permissionsÐ  só   € ð ××ØØ�Y‰YˆÜ×1Ò1°#Ó6ˆð �>�>Ü×1Ò1°#Ó6Ð6ð ˆä×&Ò& s¬E×,EÑ,E×FÑFØœ%×.Ñ.Ñ.ˆDÜ×&Ò& s¬E×,DÑ,D×EÑEØœ%×/Ñ/Ñ/ˆDÜ×&Ò& s¬E×,DÑ,D×EÑEØœ%×-Ñ-Ñ-ˆDÜ×&Ò& s¬E×,HÑ,H×IÑIØœ%×1Ñ1Ñ1ˆDØˆr,   c                ó\  • U R                   (       d  U R                  (       a  [        S5      e[        U5      [        L a  SU4nX;  a  [        S5      eUS:X  a  gUu  p#[
        R                  " X#5      n[
        R                  " U R                  U5      nUR                  UR                  4$ )z%Get (chapter, page) of previous page.rÕ  r   rr	  r  r/   )rÃ   r¦  rÄ   rÉ   r9   r£   rB	  Úfz_previous_pagerÅ   rx  r×   )r)   r=	  rx  ry  rw  Úprev_locs         r*   Úprev_locationÚDocument.prev_locationé  s“   € ð �>�>˜T×.×.ÜÐ;Ó<Ð<Ü�‹=œCÒØ˜'�lˆGØÓÜÐ6Ó7Ð7Ø�vÓØØ‰ˆÜ×$Ò$ WÓ2ˆÜ×)Ò)¨$¯)©)°SÓ9ˆØ×Ñ §¡Ð.Ð.r,   c                ó.  • 0 nUR                   nUR                  R                  5        H	  u  pEXRU'   M     UR                  R                  R
                  nUR                  R                  5       nSUl        UR                  5         Sn[        R                  S5        U R                  U5      nUR                  5        H  u  pEX$   nX�R                  U'   M     US:X  a   U$ UR                  R                  5       n	X—:w  d   SU< SUS SU	S 35       eU$ )zMake a fresh copy of a page.Néd   r   z	refs_old=z m_internal_old=z#xz m_internal_new=)r;  rZ  rG   rÅ   rÍ   ÚrefsrY  r÷   r  Ústore_shrinkrŸ  )
r)   r×   r  ry  rò  rK   Úrefs_oldÚm_internal_oldrà   Úm_internal_news
             r*   Úreload_pageÚDocument.reload_pageù  s  € àˆ
Ø�k‰kˆØ×$Ñ$×*Ñ*Ö,‰DˆAØ�q‹Mñ -ð6 —9‘9×'Ñ'×,Ñ,ˆØŸ™×3Ñ3Ó5ˆàˆŒ	Ø�‰ŒØˆÜ×Ñ˜3ÔØ�~‰~˜cÓ"ˆð ×$Ñ$Ö&‰DˆAØ‘MˆEà"'×Ñ˜QÓñ 'ð �q‹=ð
 ð ˆð "ŸY™Y×7Ñ7Ó9ˆNØ!Ó3ð MØ �x‘kÐ!2 >°2Ð"6Ð6G¸ÈÐ7KÐLóMÐ3àˆr,   c                óh   • [        U SS9nUR                  (       a  [        R                  " U5        gg)z(
If we are a PDF document, does repair.
FrÖ  N)rÏ   rÍ   r£   Úpdf_check_documentr…  s     r*   ÚrepairÚDocument.repair4  s*   € ô ˜t¨eÑ4ˆØ�>�>Ü×$Ò$ SÕ)ð r,   c                óT  • U(       d	  U(       a  gg [         R                  " U R                  U5      u  p4nU(       a  UR                  UR                  4XE4$ [         R                  " U R                  U5      nXdU4$ ! [         a!    [        (       a
  [        5         U(       a   g gf = f)a  Calculate internal link destination.

Args:
    uri: (str) some Link.uri
    chapters: (bool) whether to use (chapter, page) format
Returns:
    (page_id, x, y) where x, y are point coordinates on the page.
    page_id is either page number (if chapters=0), or (chapter, pno).
)©r¨  r¨  r   r   )r¨  r   r   )	r£   Úfz_resolve_linkrÅ   rl   r  r{   rx  r×   r„	  )r)   r  r’  rw  ÚxpÚypry  s          r*   r”  ÚDocument.resolve_link<  s‘   € ö ÞØ%Øð	Ü×/Ò/°·	±	¸3Ó?‰KˆC�Rö Ø—K‘K §¡Ð*¨BÐ2Ð2Ü×0Ò0°·±¸CÓ@ˆØ˜ˆ{Ðøô ó 	ß#Ò#¬Ô(8ÞÙ%Ùð		ús   ’$A< Á<&B'Â&B'c                ót  • [        U5      nU(       d  S=pUS:”  a  X!:¼  a  [        S5      e[        R                  " 5       n[	        [        U5      5      nU
(       Gds  [        R                  " 5       nU(       a<  [        R                  Ul        [        R                  Ul	        X.l
        X¾l        Xl        U(       a†  U(       a<  [        R                  Ul        [        R                  Ul        X.l        Xl        X¾l        U(       a<  [        R                  Ul        [        R                  Ul        Xl        X.l        X¾l        U(       a†  U(       a<  [        R                  Ul        [        R                  Ul        X.l        Xl        X¾l        U(       a<  [        R                  Ul        [        R                  Ul        Xl        X.l         X¾l!        OU
n[	        [        U5      5      nXý-
  nU(       a  [        SU 35      eU	(       a  U RE                  S5        [G        U 5      n[        RH                  " UU5        g)a­  Rewrite images in a PDF document.

The typical use case is to reduce the size of the PDF by recompressing
images. Default parameters will convert all images to JPEG where
possible, using the specified resolutions and quality. Exclude
undesired images by setting parameters to False.
Args:
    dpi_threshold: look at images with a larger DPI only.
    dpi_target: change eligible images to this DPI.
    quality: Quality of the recompressed images (0-100).
    lossy: process lossy image types (e.g. JPEG).
    lossless: process lossless image types (e.g. PNG).
    bitonal: process black-and-white images (e.g. FAX)
    color: process colored images.
    gray: process gray images.
    set_to_gray: whether to change the PDF to gray at process start.
    options: (PdfImageRewriterOptions) Custom options for image
            rewriting (optional). Expert use only. If provided, other
            parameters are ignored, except set_to_gray.
r   z0{dpi_target=} must be less than {dpi_threshold=}zInvalid options: r   N)%rè  rÄ   r£   ÚPdfImageRewriterOptionsr«  r´  ÚFZ_RECOMPRESS_FAXÚbitonal_image_recompress_methodÚFZ_SUBSAMPLE_AVERAGEÚbitonal_image_subsample_methodÚbitonal_image_subsample_toÚ bitonal_image_recompress_qualityÚ!bitonal_image_subsample_thresholdÚFZ_RECOMPRESS_JPEGÚ&color_lossless_image_recompress_methodÚ%color_lossless_image_subsample_methodÚ!color_lossless_image_subsample_toÚ(color_lossless_image_subsample_thresholdÚ'color_lossless_image_recompress_qualityÚ#color_lossy_image_recompress_methodÚ"color_lossy_image_subsample_methodÚ%color_lossy_image_subsample_thresholdÚcolor_lossy_image_subsample_toÚ$color_lossy_image_recompress_qualityÚ%gray_lossless_image_recompress_methodÚ$gray_lossless_image_subsample_methodÚ gray_lossless_image_subsample_toÚ'gray_lossless_image_subsample_thresholdÚ&gray_lossless_image_recompress_qualityÚ"gray_lossy_image_recompress_methodÚ!gray_lossy_image_subsample_methodÚ$gray_lossy_image_subsample_thresholdÚgray_lossy_image_subsample_toÚ#gray_lossy_image_recompress_qualityÚrecolorrÏ   Úpdf_rewrite_images)r)   Údpi_thresholdÚ
dpi_targetÚqualityÚlossyÚlosslessÚbitonalro  rá  Úset_to_grayr#  Úquality_strÚtemplate_optsÚdir1rV  Údir2Úinvalid_optionsrb  s                     r*   Úrewrite_imagesÚDocument.rewrite_imagesV  s³  € ôB ˜'“lˆÞØ)*Ð*ˆMØ˜‹>˜jÓ9ÜÐOÓPÐPÜ×5Ò5Ó7ˆÜ”3�}Ó%Ó&ˆßÜ×0Ò0Ó2ˆDÞÜ7<×7NÑ7N�Ô4Ü6;×6PÑ6P�Ô3Ø2<Ô/Ø8CÔ5Ø9FÔ6ÞÞÜBG×BZÑBZ�DÔ?ÜAF×A[ÑA[�DÔ>Ø=GÔ:ØDQÔAØCNÔ@ÞÜ?D×?WÑ?W�DÔ<Ü>C×>XÑ>X�DÔ;ØANÔ>Ø:DÔ7Ø@KÔ=ÞÞÜAF×AYÑAY�DÔ>Ü@E×@ZÑ@Z�DÔ=Ø<FÔ9ØCPÔ@ØBMÔ?ÞÜ>C×>VÑ>V�DÔ;Ü=B×=WÑ=W�DÔ:Ø@MÔ=Ø9CÔ6Ø?JÔ<øàˆDä”3�t“9‹~ˆØ™+ˆÞÜÐ0°Ð0AÐBÓCÐCæØ�L‰L˜ŒOÜ˜tÓ$ˆÜ× Ò   dÕ+r,   c                ó´   • U R                   (       d  [        S5      e[        U R                  5       H#  nU R	                  U5      R                  U5        M%     g)z©Change the color component count on all pages.

Args:
    components: (int) desired color component count, one of 1, 3, 4.

Invokes the same-named method for all pages.
r}  N)r  rÄ   rT  rt  rŸ  rß	  )r)   Ú
componentsrh  s      r*   rß	  ÚDocument.recolor­  s@   € ð �{�{Ü˜[Ó)Ð)Ü�t—‘Ö'ˆAØ�N‰N˜1Ó×%Ñ% jÖ1ò (r,   c                ód  ^	^
^• [        U S5      (       a  U R                  $ [        U R                  5       Vs0 s H  oR	                  U5      U_M     snmS m
U
U4S jm	U	4S jn[
        R                  " U 5      n[
        R                  " [
        R                  " U5      S5      n0 n[
        R                  " S5      n[
        R                  " XF5      nUR                  5       (       a  U" XW5        [
        R                  " X65      nUR                  5       (       a  U" XX5        XPl        U$ s  snf )aÎ  Convert the PDF's destination names into a Python dict.

The only parameter is the pymupdf.Document.
All names found in the catalog under keys "/Dests" and "/Names/Dests" are
being included.

Returns:
    A dcitionary with the following layout:
    - key: (str) the name
    - value: (dict) with the following layout:
        * "page":  target page number (0-based). If no page number found -1.
        * "to": (x, y) target point on page - currently in PDF coordinates,
                i.e. point (0,0) is the bottom-left of the page.
        * "zoom": (float) the zoom factor
        * "dest": (str) only occurs if the target location on the page has
                not been provided as "/XYZ" or if no page number was found.
    Examples:
    {'__bookmark_1': {'page': 0, 'to': (0.0, 541.0), 'zoom': 0.0},
    '__bookmark_2': {'page': 0, 'to': (0.0, 481.45), 'zoom': 0.0}}

    or

    '21154a7c20684ceb91f9c9adc3b677c40': {'page': -1, 'dest': '/XYZ 15.75 1486 0'}, ...
Ú_resolved_namesc                óÀ   • [         R                  " S5      n[         R                  " U5      n[         R                  " X SS5        UR	                  5         [        U5      $ )z1Return string version of a PDF object definition.é   r   r   )r£   Úfz_new_bufferÚFzOutputÚpdf_print_objr	  rŸ  )r  ÚbufferÚoutputs      r*   Ú
obj_stringÚ*Document.resolve_names.<locals>.obj_stringØ  sI   € ä×(Ò(¨Ó-ˆFÜ—^’^ FÓ+ˆFÜ×Ò ¨Q°Ô2Ø×"Ñ"Ô$Ü'¨Ó/Ð/r,   c                óh  >• SSS.nU R                  5       (       a  [        R                  " U 5      n U R                  5       (       a	  T" U 5      nO5U R	                  5       (       a  T" [        R
                  " U S5      5      nOU$ UR                  SS5      SS nUR                  S5      nUS:  a  X!S	'   U$ US
U R                  5       nX#S
 nX!S	'   UR                  S5      (       au  US		 UR                  5       SS n[        U5      S:  a"  UR                  S5        [        U5      S:  a  M"  [        [        [        U5      5      nUS   US   4US'   US   US'   UR!                  S5      (       a1  TR#                  [%        UR                  5       S   5      S5      US'   U$ [%        U5      US'   U$ )z3Generate value of one item of the names dictionary.r¨  ra   )r×   ÚdestrÅ  rò  r   r   rU	  rþ	  Nz/XYZrr  r   r   r  r   r  rK  r×   )Úpdf_is_indirectr£   rè  r<  r†  r  r  r§   Ústripr8   r;   r<   rp   rµ   r  rœ  r  r=   r9   )	r  Ú
templ_dictÚarrayrä  ÚsubvalÚ
array_listrÃ  rû	  Ú
page_xrefss	          €€r*   Ú	get_arrayÚ)Document.resolve_names.<locals>.get_arrayà  s´  ø€ à"$¨bÑ1ˆJØ×"Ñ"×$Ñ$Ü×0Ò0°Ó5�Ø×Ñ×!Ñ!Ù" 3›‘Ø—‘×"Ñ"Ù"¤5×#6Ò#6°s¸CÓ#@ÓA‘à!Ð!ð —M‘M &¨#Ó.¨q°Ð4ˆEð —*‘*˜S“/ˆCØ�Q‹wØ%*˜6Ñ"Ø!Ð!à˜4˜C�[×&Ñ&Ó(ˆFØ˜$�KˆEØ!&�vÑð ×Ñ ×'Ñ'Ø˜vÐ&ð #Ÿ[™[›]¨1¨QÐ/�
ô ˜*“o¨Ó)Ø×%Ñ% cÔ*ô ˜*“o¨Õ)ô œœU JÓ/Ó0�Ø$% a¡D¨!¨A©$ <�
˜4Ñ Ø%& q¡T�
˜6Ñ"ð �‰˜u×%Ñ%Ø%/§^¡^´C¸¿¹»ÀqÑ8IÓ4JÈ2Ó%N�
˜6Ñ"ð Ðô &)¨£[�
˜6Ñ"ØÐr,   c                óB  >• [         R                  " U5      n[        U5       Hy  n[         R                  " X5      n[         R                  " X5      nUR                  5       (       a  UR                  5       nO[        SU S35        SnU(       d  Mo  T" U5      X'   M{     g)zaGenerate name resolution items for pdf_dict.

This may be either "/Names/Dests" or just "/Dests"
zkey z is no /NameN)r£   r‡  rT  r‰  rˆ  rõ  r…  rw   )Ú	dest_dictÚpdf_dictÚ
name_countrh  rŽ  r  Údict_keyr
  s          €r*   Ú	fill_dictÚ)Document.resolve_names.<locals>.fill_dict  s†   ø€ ô ×+Ò+¨HÓ5ˆJô ˜:Ö&�Ü×,Ò,¨XÓ9�Ü×,Ò,¨XÓ9�Ø—?‘?×$Ñ$Ø"Ÿ™Ó0‘Hä˜d 1 # \Ð2Ô3Ø#�Hç�8Ù*3°C«.�IÓ'ò 'r,   r×  ÚDests)r@   ró	  rT  rt  r  r£   rn  r  rÛ  rÜ  r  r†  Úpdf_load_name_tree)r)   rh  r
  rb  Úcatalogr	
  ÚdestsÚ	old_destsr®  r
  rû	  r
  s            @@@r*   Úresolve_namesÚDocument.resolve_namesº  s  ú€ ô2 �4Ð*×+Ñ+Ø×'Ñ'Ð'ä49¸$¿/¹/Ô4JÓKÒ4J¨q—n‘n QÓ'¨Ò*Ñ4JÑKˆ
ò	0ö.	õ`	9ô, ×1Ò1°$Ó7ˆô ×%Ò%¤e×&7Ò&7¸Ó&<¸fÓEˆàˆ	ô ×"Ò" 7Ó+ˆô ×&Ò& wÓ6ˆ	Ø× Ñ ×"Ñ"Ù�iÔ+ô ×'Ò'¨Ó3ˆØ×Ñ×ÑÙ�iÔ&à(ÔØÐùòK Ls   ¸D-c                óø  • U R                   n U R                  (       d  U R                  (       a  [        S5      e[	        U5      [
        L a  OW[        US5      (       a  [        U5      nO:[        US5      (       a  UR                  nO[        US5      (       d  [        S5      eXR                  :X  a  U(       d  [        S5      eU
(       a  U(       a  [        S5      eU R                  S:  a  [        S	5      eU(       a,  U R                  U:w  d  U R                  (       a  [        S
5      eU(       a  [        U5      S:”  d  U(       a  [        U5      S:”  a  [        S5      e[        U 5      n[        R                  " 5       nUUl        UUl        UUl        UUl        UUl        U	Ul        UUl        UUl        U
Ul        UUl        UUl        UUl        UUl        UUl        UUl        Ub  UR;                  U5        OUb  UR;                  U5        Ub  UR=                  U5        UUl        UUl         UUl!        S nSURD                  l#        [I        U5        US:X  a  [K        U5        [M        U[
        5      (       a  [        RN                  " UUU5        O3[Q        U5      n[        RR                  " UUU5        URU                  5         U(       a%  U R                   (       a  U(       d  [W        S5      eg g g )NrÕ  r?   r   Úseekú)filename must be str, Path or file objectz$save to original must be incrementalz3'linear' and 'use_objstms' cannot both be requestedr   zcannot save with zero pageszincremental needs original fileé(   z"password length must not exceed 40r   zDocument save did a repair),ré  rÃ   r¦  rÄ   rÉ   rè  r@   r   rt  r	   r<   rÏ   r£   ÚPdfWriteOptionsÚdo_incrementalÚdo_asciiÚdo_compressÚdo_compress_imagesÚdo_compress_fontsÚdo_decompressÚ
do_garbageÚ	do_prettyÚ	do_linearÚdo_cleanÚdo_sanitizeÚdont_regenerate_idÚdo_appearanceÚ
do_encryptrú  Úopwd_utf8_set_valueÚupwd_utf8_set_valueÚdo_preserve_metadataÚdo_use_objstmsr   rÍ   rY  ÚJM_embedded_cleanÚJM_ensure_identityrC   Úpdf_save_documentr	  Úpdf_write_documentr	  rl   )r)   rk   rð  rñ  rò  ró  rô  rõ  rš  rö  r÷  rý  Ú
appearancerø  rù  rú  rû  rü  rþ  rÿ  r   r  Úis_repaired_prerb  rV  r	  s                             r*   r  ÚDocument.save=  s~  € ð4 ×*Ñ*ˆØ=Ø�>�>˜T×.×.ÜÐ;Ó<Ð<Ü�‹>œSÒ ØÜ�X˜v×&Ñ&Ü˜8“}‰HÜ�X˜v×&Ñ&Ø—}‘}‰HÜ˜ 6×*Ñ*ÜÐHÓIÐIØ—y‘yÓ ®ÜÐCÓDÐDÞ–kÜÐRÓSÐSØ�?‰?˜QÓÜÐ:Ó;Ð;ÞØ�y‰y˜HÓ$¨¯¯Ü Ð!BÓCÐCÞ”s˜7“| bÓ(®H¼¸X»ÈÓ9KÜÐAÓBÐBä˜tÓ$ˆÜ×$Ò$Ó&ˆØ)ˆÔØˆŒØ"ˆÔØ"0ˆÔØ!.ˆÔØ#ˆÔØ!ˆŒØˆŒØˆŒØˆŒØ ˆÔØ"+ˆÔØ'ˆÔØ$ˆŒØ&ˆÔØÑØ×$Ñ$ XÕ.ØÑ Ø×$Ñ$ WÔ-ØÑØ×$Ñ$ WÔ-Ø$5ˆÔ!Ø)ˆÔØ"4ˆÔàˆØ*+ˆ�‰Ô'Ü˜#ÔØ˜‹>Ü˜sÔ#Ü�h¤×$Ñ$ä×#Ò# C¨°4Õ8ä'¨Ó1ˆCä×$Ò$ S¨#¨tÔ4Ø×ÑÔ!ÞØ××®ÜÐ"<Ó>Ð>ð )8Ðð r,   c                ód  • U R                   (       a  [        S5      e[        U5      [        L a  OF[	        US5      (       a  [        U5      nO)[	        US5      (       a  UR
                  nO[        S5      eXR
                  :X  a  [        S5      e[        U 5      n[        R                  " X!5        g)z.Save a file snapshot suitable for journalling.zdoc is closedr?   r   r
  zcannot snapshot to originalN)	rÃ   rÄ   rÉ   rè  r@   r   rÏ   r£   Úpdf_save_snapshot)r)   rk   rb  s      r*   Úsave_snapshotÚDocument.save_snapshot›  s‰   € à�>�>Ü˜_Ó-Ð-Ü�‹>œSÒ ØÜ�X˜v×&Ñ&Ü˜8“}‰HÜ�X˜v×&Ñ&Ø—}‘}‰HäÐHÓIÐIØ—y‘yÓ ÜÐ:Ó;Ð;Ü˜tÓ$ˆÜ×Ò Õ.r,   c                óT   • U R                  U R                  S[        R                  S9$ )zSave PDF incrementallyT)rõ  rù  )r  r   r£   ÚPDF_ENCRYPT_KEEPr0   s    r*   ÚsaveIncrÚDocument.saveIncr¬  s!   € à�y‰y˜Ÿ™°Ä×AWÑAWˆyÐXÐXr,   c                ó¨  • S nU R                   (       d  [        S5      eU R                  (       d  U R                  (       a  [        S5      eU(       d  SnSnU(       a  U R	                  0 5        U  GH  nU
(       a'  UR                  5        H  nUR                  5         M     U	(       a*  UR                  5       nU H  nUR                  U5        M     SnUR                  5        Hv  nUR                  S   [        R                  :X  a  U(       a  UR                  SS9  U(       a  UR                  5         UR                  S   [        R                  :X  d  Mt  SnMx     U(       a  U(       a  UR!                  US	9  U(       d
  U(       d  GM  UR#                  5         UR%                  5       (       d  GME  U(       aw  UR%                  5       n['        U5      S
:X  d   eUS   nU R)                  U5      nU" UR+                  5       5      nU(       a#  SR-                  U5      nU R/                  UU5        U(       d  GMÍ  U R1                  UR2                  S5      S   S:w  d  GMó  U R5                  UR2                  SS5        GM     U(       a(  U R7                  5        H  nU R9                  U5        M     U(       a  U R;                  5         U(       d
  U(       d  SnOU R=                  5       n[?        S
U5       HÕ  nU RA                  U5      (       d  SU S3n[        U5      eU(       a/  U R1                  US5      S
   S:X  a  SnU RC                  UU5        M`  U(       d  Mi  U R1                  US5      S
   S:X  a%  U RC                  US5        U R/                  USSS9  M§  U R1                  US5      S   S:w  d  MÂ  U R5                  USS5        M×     g )Nc                ó‚  • / nSnSnSnU  H¨  nUS:X  a  SnUR                  U5        M  US:X  a  SnUR                  U5        M9  US:X  a  SnSnME  USS S:X  a  US	   S
:w  a  SnUR                  U5        Ml  US:X  a  SnUR                  U5        M‡  U(       a	  U(       a  M—  UR                  U5        Mª     U(       a  U$ g)a  Remove hidden text from a PDF page.

Args:
    cont_lines: list of lines with /Contents content. Should have status
        from after page.cleanContents().

Returns:
    List of /Contents lines from which hidden text has been removed.

Notes:
    The input must have been created after the page's /Contents object(s)
    have been cleaned with page.cleanContents(). This ensures a standard
    formatting: one command per line, single spaces between operators.
    This allows for drastic simplification of this code.
Fs   BTTs   ETs   3 Trr  Ns   Trr   ó   3ó   Q©rp   )Ú
cont_linesÚ	out_linesÚin_textÚsuppressÚmake_returnrt   s         r*   Úremove_hiddenÚ%Document.scrub.<locals>.remove_hiddenÅ  sß   € ð  ˆIØˆGØˆHØˆKÛ"�Ø˜5“=Ø"�GØ×$Ñ$ TÔ*ÙØ˜5“=Ø#�GØ×$Ñ$ TÔ*ÙØ˜7“?Ø#�HØ"&�KÙØ˜˜�9 Ó%¨$¨q©'°T«/Ø$�HØ×$Ñ$ TÔ*ÙØ˜4“<Ø$�HØ×$Ñ$ TÔ*ÙÞ¦ÙØ× Ñ  Ö&ñ/ #ö0 Ø Ð àr,   r}  zclosed or encrypted docFr   r  )r5  T)Úimagesr   r
  ÚThumbrò  z	bad xref z - clean PDF before scrubbingÚSz/JavaScriptz<</S/JavaScript/JS()>>ró  z	/Metadataú<<>>s   deleted)rO  r¥  )"r  rÄ   r¦  rÃ   Úset_metadatarˆ  Úresetr  Údelete_linkr°  rÉ   r£   rM  rU  r´  r  Úapply_redactionsr   Úget_contentsr<   Úxref_streamr  r  Úupdate_streamrÈ  r  r›  r¢  rÁ  r¦  r_  rT  rL  rM  )r2  Úattached_filesÚclean_pagesÚembedded_filesÚhidden_textÚ
javascriptr§  Ú
redactionsÚredact_imagesÚremove_linksÚreset_fieldsÚreset_responsesÚ
thumbnailsÚxml_metadatarF
  r×   r^  r)  rš  Úfound_redactsrà   rí  r  rž  rA
  r   Ú
xref_limitrž   r  s                                r*   ÚscrubÚDocument.scrub´  s  € ò"/	ðb �z�zÜ˜[Ó)Ð)Ø××˜sŸ}Ÿ}ÜÐ6Ó7Ð7æØˆKØˆJæØ×Ñ˜RÔ äˆDÞà"Ÿl™lžn�FØ—L‘L–Nñ -ö ØŸ™Ó(�Û!�DØ×$Ñ$ TÖ*ñ "ð "ˆMØŸ™ž�Ø—:‘:˜a‘=¤E×$CÑ$CÓCÎØ×%Ñ%¨dÐ%Ñ3Þ"Ø×*Ñ*Ô,Ø—:‘:˜a‘=¤E×$:Ñ$:Õ:Ø$(’Mñ 'ö žmØ×%Ñ%¨]Ð%Ñ;æ¦;Úà×ÑÔ!Ø×$Ñ$×&Ñ&ÚÞØ×)Ñ)Ó+�Ü˜5“z Q“Ð&�Ø˜Q‘x�Ø—‘ tÓ,�Ù*¨4¯?©?Ó+<Ó=�
ÞØ Ÿ:™: jÓ1�DØ×%Ñ% d¨DÔ1ç‰zØ×#Ñ# D§I¡I¨wÓ7¸Ñ:¸fÖDØ×$Ñ$ T§Y¡Y°¸×@ñS öZ Ø×)Ñ)Ö+�Ø—‘ Ö%ñ ,ö Ø× Ñ Ô"Þ¦
Ø‰JàŸ™Ó*ˆJÜ˜!˜ZÖ(ˆDØ—?‘? 4×(Ñ(Ø! $ Ð'DÐE�Ü  “oÐ%Þ˜c×.Ñ.¨t°SÓ9¸!Ñ<ÀÓMà.�Ø×!Ñ! $¨Ô,ÙæÙà×Ñ  fÓ-¨aÑ0°KÓ?à×!Ñ! $¨Ô/Ø×!Ñ! $¨
¸Ð!Ñ=Ùà×Ñ  jÓ1°!Ñ4¸Õ>Ø× Ñ   z°6Ö:ò) )r,   c                ón   • Uc  S[         -  [        -  [        -  [        -  nX   R	                  UUUUUS9$ )ai  Search for a string on a page.

Args:
    pno: page number
    text: string to be searched for
    clip: restrict search to this rectangle
    quads: (bool) return quads instead of rectangles
    flags: bit switches, default: join hyphened words
    textpage: reuse a prepared textpage
Returns:
    a list of rectangles or quads, each containing an occurrence.
r   )Úquadsr  rÑ  r…  )ÚTEXT_DEHYPHENATEÚTEXT_PRESERVE_LIGATURESÚTEXT_PRESERVE_WHITESPACEÚTEXT_MEDIABOX_CLIPÚ
search_for)r2  ry  r   rd
  r  rÑ  r…  s          r*   Úsearch_page_forÚDocument.search_page_forO  s]   € ð* ‰=ØÜ&ñ'ä-ñ.ô /ñ/ô )ñ	)ˆEð ‰x×"Ñ"ØØØØØð #ð 
ð 	
r,   c                óæ  • U R                   (       d  U R                  (       a  [        S5      eU R                  (       d  [        S5      e[	        US5      (       d  [        S5      e[        [        U 5      5      n[        U5      S:X  d  [        U5      U;  d  [        U5      U;  a  [        S5      e[        U 5      n[        R                  " X1[        R                  5        U R                  5         g)z,Build sub-pdf with page numbers in the list.rÕ  r}  r�  zsequence requiredr   r~  N)rÃ   r¦  rÄ   r  r@   rT  r<   rÅ  r!  rÏ   r£   Úpdf_rearrange_pages2ÚPDF_CLEAN_STRUCTURE_KEEPr#  )r)   ÚpylisteÚvalid_rangerb  s       r*   ÚselectÚDocument.selects  s¸   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ø�{�{Ü˜[Ó)Ð)Ü�w ×.Ñ.ÜÐ0Ó1Ð1äœC ›IÓ&ˆÜ�‹L˜AÓÜ�7‹| ;Ó.Ü�7‹| ;Ó.äÐ1Ó2Ð2ô ˜tÓ$ˆô
 	×"Ò" 3´×1OÑ1OÔPð 	×ÑÕr,   c                ó¢   • [        U 5      nU(       d  [        R                  nO[        R                  " U5      n[        R                  " X#5        gra  )rÏ   r£   rH  rÁ  Úpdf_set_document_language)r)   rK  rb  rJ  s       r*   rÃ  ÚDocument.set_languageŽ  s;   € Ü˜tÓ$ˆÞÜ×&Ñ&‰Dä×5Ò5°hÓ?ˆDÜ×'Ò'¨Ô2Ør,   c                ó   • U R                   (       a  [        S5      e[        U R                  5       R	                  5       5      nU[        5       :X  a  [        S5      eU(       aZ  [        U5      [        [        4;  a  [        S5      e[        U5      R                  U5      nU[        5       :w  a  [        SU 35      eU(       aZ  [        U5      [        [        4;  a  [        S5      e[        U5      R                  U5      nU[        5       :w  a  [        SU 35      eU(       aZ  [        U5      [        [        4;  a  [        S5      e[        U5      R                  U5      nU[        5       :w  a  [        SU 35      eU(       a‹  [        U5      [        [        4;  a  [        S	5      eU Ha  n	[        U	5      [        [        4;  a  [        S
U	 S35      e[        U	5      R                  U5      nU[        5       :w  d  MU  [        SU 35      e   U(       a2  [        U5      R                  5       nUS:X  a  SnUS;  a  [        S5      e[        U 5      n
[        R                  " [        R                  " U
5      [        S5      [        S5      5      nUR                   (       d  gUS:X  a!  [        R"                  " U[        S5      5      nO5[        R$                  " [        R"                  " U[        S5      5      U5      nUR                   (       d  [        [&        5      e[)        XÂX4XV5        [        R*                  " U
R                   5        g)z5Set the PDF keys /ON, /OFF, /RBGroups of an OC layer.r¿   z document has no optional contentzbad type: 'on'zbad OCGs in 'on': zbad type: 'off'zbad OCGs in 'off': zbad type: 'locked'zbad OCGs in 'locked': zbad type: 'rbgroups'zbad RBGroup 'rî   zbad OCGs in RBGroup: Ú	UNCHANGEDÚ	Unchanged)rm  rn  rx
  zbad 'basestate'r×  r6  Nr¨  rÅ  rk  )rÃ   rÄ   r«  rU  r{  rÉ   rµ   r¶   Ú
differencerè  ÚupperrÏ   r£   r!  rÛ  r  rÍ   r  r­  rp  ÚJM_set_ocg_arraysr[  )r)   rq  Ú	basestater]  ÚoffÚrbgroupsr0	  rR  rŸ  re  rb  rz  r  s                r*   Ú	set_layerÚDocument.set_layer—  s¢  € à�>�>ÜÐ.Ó/Ð/Ü�4—=‘=“?×'Ñ'Ó)Ó*ˆØ”3“5‹=ÜÐ?Ó@Ð@æÜ�B‹x¤¤e˜}Ó,Ü Ð!1Ó2Ð2Ü�B“×"Ñ" 4Ó(ˆAØ”C“E‹zÜ Ð#5°a°SÐ!9Ó:Ð:æÜ�C‹y¤¤u Ó-Ü Ð!2Ó3Ð3Ü�C“×#Ñ# DÓ)ˆAØ”C“E‹zÜ Ð#6°q°cÐ!:Ó;Ð;æÜ�F‹|¤D¬% =Ó0Ü Ð!5Ó6Ð6Ü�F“×&Ñ& tÓ,ˆAØ”C“E‹zÜ Ð#9¸!¸Ð!=Ó>Ð>æÜ�H‹~¤d¬E ]Ó2Ü Ð!7Ó8Ð8Û�Ü˜A“w¤4¬ -Ó/Ü$ }°Q°C°qÐ%9Ó:Ð:Ü˜“F×%Ñ% dÓ+�Øœ›•:Ü$Ð'<¸Q¸CÐ%@ÓAÐAñ ö Ü˜I›×,Ñ,Ó.ˆIØ˜KÓ'Ø'�	ØÐ :Ó:Ü Ð!2Ó3Ð3Ü˜tÓ$ˆÜ×!Ò!Ü×!Ò! 3Ó'Ü˜Ó Ü˜Ó(óˆð
 �~�~ØØ�R‹<Ü×$Ò$ c¬8°C«=Ó9‰Cä×%Ò%Ü×&Ò&¨¬X°iÓ-@ÓAØóˆCð �~�~ÜÔ/Ó0Ð0Ü˜3¨2°HÔEÜ×Ò˜sŸ~™~Õ.r,   c                ó|  • [        U[        5      (       aG  U R                  5        Vs/ s H  o3S   U:X  d  M  US   PM     nnU/ :X  a  [        SU S35      eUS   n[	        U 5      nUS:X  a  [
        R                  " XQ5        gUS:X  a  [
        R                  " XQ5        g[
        R                  " XQ5        gs  snf )	z$Set / unset OC intent configuration.r   r;  z	bad OCG 'rˆ  r   r   r   N)	rC   rè  r5	  rÄ   rÏ   r£   Úpdf_toggle_layer_config_uiÚpdf_deselect_layer_config_uiÚpdf_select_layer_config_ui)r)   r;  rS  Úuirq
  rb  s         r*   Úset_layer_ui_configÚDocument.set_layer_ui_configØ  s¬   € ô �fœc×"Ñ"Ø-1×-BÑ-BÔ-DÓ]Ò-D rÈ6É
ÐV\ÑH\“l�b˜”lÑ-DˆFÐ]Ø˜‹|Ü  9¨V¨H°BÐ!7Ó8Ð8Ø˜A‘YˆFÜ˜tÓ$ˆØ�Q‹;Ü×,Ò,¨SÕ9Ø�q‹[Ü×.Ò.¨sÕ;ä×,Ò,¨SÕ9ùò ^s
   ¨B9¸	B9c                óŠ  • U R                  5       nUS:X  a  [        S5      eU(       a  [        U[        5      (       d  gSSSS.n[	        UR                  5       5      R                  UR                  5       5      (       dD  S[	        UR                  5       5      R                  UR                  5       5       3n[        U5      eSnUR                  U5        UR                  5        HA  u  pg[        U5      R                  5       nUS;  a  [        SU S	U S
35      eUSU SU 3-  nMC     US-  nU R                  USU5        g)zSet the PDF MarkInfo values.r   ú	not a PDFFrQ	  zbad MarkInfo key(s): rO	  )rV	  Úfalsezbad key value 'z': 'rî   rU	  r´   rP	  rN	  T)rK  rÄ   rC   r:   r«  r{  Ú
issupersetry
  rJ  rG   rè  ré  r›  )r)   rX	  r  rW	  ÚbadkeysÚpdfdictrŽ  r¹   s           r*   Úset_markinfoÚDocument.set_markinfoé  s%  € à×ÑÓ!ˆØ�1‹9Ü˜[Ó)Ð)Þœz¨(´D×9Ñ9ØØ °EÀuÑMˆä�5—:‘:“<Ó ×+Ñ+¨H¯M©M«O×<Ñ<Ø-¬c°(·-±-³/Ó.B×.MÑ.MÈeÏjÉjËlÓ.[Ð-\Ð]ˆGÜ˜WÓ%Ð%ØˆØ�‰�XÔØŸ+™+ž-‰JˆCÜ�e“*×"Ñ"Ó$ˆEØÐ-Ó-Ü  ?°3°%°t¸E¸7À!Ð!DÓEÐEØ˜˜3˜%˜q  Ð(Ñ(ŠGñ	 (ð
 	�4‰ˆØ×Ñ˜$ 
¨GÔ4Ør,   c                ó  • U R                   (       d  [        S5      eU R                  (       d  U R                  (       a  [        S5      eUc  0 nO[	        U5      [
        La  [        S5      eSSSSSSS	S
SSSS.n[        UR                  5       5      n[        UR                  5       5      R                  U5      nU[        5       :w  a  SU 3n[        U5      eU R                  SS5      u  pgUS:w  a  SnO[        UR                  SS5      5      nU0 :X  a  US:X  a  gUS:X  a9  U R                  5       nU R                  US5        U R                  SSU S35        O*U0 :X  a$  U R                  SSS5        U R                  5         gUR!                  5        V	V
s/ s H  u  pšX)   c  M  Xš4PM     sn
n	 H?  u  p¼X+   n[#        U5      (       a  US;   a  SnO[%        U5      nU R                  X�U5        MA     U R                  5         gs  sn
n	f )zKUpdate the PDF /Info object.

Args:
    m: a dictionary like doc.metadata.
r}  rÕ  Nzbad metadataÚAuthorÚProducerrg  rR  r.  ÚModDateÚSubjectÚKeywordsÚTrapped)r®  r°  r\  r¨  r­  rù  r©  rª  r«  r¯  r±  zbad dict key(s): r¨  ÚInfor  r   rK  ra   rK
  r\  rò  )Únonerò  )r  rÄ   rÃ   r¦  rÉ   r:   r«  r{  ry
  rÈ  r9   r  rC  rM  r›  rÃ  rG   ré   r  )r2  rŒ  ÚkeymapÚ
valid_keysÚdiff_setrž   rÃ  r  Ú	info_xrefrò  rK   rŽ  r  Úpdf_keys                 r*   rL
  ÚDocument.set_metadata   så  € ð �z�zÜ˜[Ó)Ð)Ø�=�=˜C×,×,ÜÐ;Ó<Ð<Ø‰9Ø‰AÜ�!‹WœDÒ Ü˜^Ó,Ð,àØ"Ø ØØØØ*Ø Ø Ø"Ø ñ
ˆô ˜Ÿ™›Ó'ˆ
Ü�q—v‘v“x“=×+Ñ+¨JÓ7ˆØ”s“uÓØ% h ZÐ0ˆCÜ˜S“/Ð!à×"Ñ" 2 vÓ.‰ˆØ�‹;Ø‰Iä˜DŸL™L¨°Ó3Ó4ˆIà�‹7�y A“~Øà˜‹>Ø×(Ñ(Ó*ˆIØ×Ñ˜i¨Ô0Ø×Ñ˜R ¨I¨;°dÐ);Õ<Ø�"‹WØ×Ñ˜R ¨Ô0Ø�L‰LŒNØà,-¯G©G¬IÔOªI¡D A¸¹›˜!›©IÕO‰HˆCØ‘kˆGÜ˜—9‘9 Ð'7Ó 7Ø‘ä! #Ó&�Ø×Ñ˜Y°Ö5ñ Pð 	�‰ŒØùó Ps   ÆH	Æ*H	c                ó¬  • U R                   (       d  U R                  (       a  [        S5      eU R                  US5      u  p4US:w  d  US;  a  [        SU 35      eUS:”  a.  U R                  US5      u  p4US:w  d  US;  a  [        SU 35      eUS:X  a)  S	U R	                  U5      ;   a  U R                  US	S
5        gU R                  US	U S35        g)z¤Attach optional content object to image or form xobject.

Args:
    xref: (int) xref number of an image or form xobject
    oc: (int) xref number of an OCG or OCMD
rF  r¶  r   rG  rJ  r   ró  )z/OCGz/OCMDrØ  rò  Nr\  )rÃ   r¦  rÄ   rÈ  Úxref_get_keysr›  )r2  r  rÚ  rÃ  r   s        r*   rÐ  ÚDocument.set_oc=  sÛ   € ð �=�=˜C×,×,ÜÐ:Ó;Ð;Ø×"Ñ" 4¨Ó3‰ˆØ�‹;˜$Ð&9Ó9ÜÐ7¸°vÐ>Ó?Ð?Ø�‹6Ø×&Ñ& r¨6Ó2‰GˆAØ�F‹{˜dÐ*;Ó;Ü Ð#;¸B¸4Ð!@ÓAÐAØ�‹7�t˜s×0Ñ0°Ó6Ó6Ø×Ñ˜T 4¨Ô0ØØ×Ñ˜˜t¨ t¨4 [Ô1Ør,   c                ó°  ^	^
• [        U R                  5       R                  5       5      m	U	U
4S jm
SnU(       av  [        U5      [        [
        4;   a]  [        U5      R                  T	5      nU[        5       :w  a  SU 3n[        U5      eUSSR                  [        S U5      5      -   S-   -  nU(       a>  [        U5      R                  5       nSS	S
SS.nUS;  a  [        SU 35      eUSXƒ    3-  nU(       a  UST
" U5       3-  nUS-  nUS:X  a  U R                  5       nOSU R                  USS9;  a  [        S5      eU R                  X5        U$ )a‘  Create or update an OCMD object in a PDF document.

Args:
    xref: (int) 0 for creating a new object, otherwise update existing one.
    ocgs: (list) OCG xref numbers, which shall be subject to 'policy'.
    policy: one of 'AllOn', 'AllOff', 'AnyOn', 'AnyOff' (any casing).
    ve: (list) visibility expression. Use instead of 'ocgs' with 'policy'.

Returns:
    Xref of the created or updated OCMD.
c                óø  >• [        U 5      [        [        4;  d  [        U 5      S:  a  [	        SU  35      eU S   R                  5       S;  a  [	        SU S    35      eU S   R                  5       S:X  a  [        U 5      S:w  a  [	        SU  35      eSU S   R                  5        3nU SS   HB  n[        U5      [        L a  UT;  a  [	        S	U 35      eUS
U S3-  nM4  US
T" U5       3-  nMD     US-  nU$ )Nr   zbad 've' format: r   )ÚandÚorÚnotzbad operand: r¦
  z[/r   zbad OCG r´   r\  rš  )rÉ   rµ   r¶   r<   rÄ   ré  r¨  r9   )r^  rH   re  Úall_ocgsÚve_makers      €€r*   r¨
  Ú#Document.set_ocmd.<locals>.ve_makerh  s	  ø€ Ü�B‹x¤¤e˜}Ó,´°B³¸!³Ü Ð#4°R°DÐ!9Ó:Ð:Ø�!‰u�{‰{‹}Ð$8Ó8Ü  =°°A±°Ð!8Ó9Ð9Ø�!‰u�{‰{‹} Ó%¬#¨b«'°Q«,Ü Ð#4°R°DÐ!9Ó:Ð:Ø˜˜1™Ÿ™›�Ð'ˆDØ˜˜“V�Ü˜“7œc’>Ø Ó(Ü(¨8°A°3¨Ó8Ð8Ø˜a ˜s $˜KÑ'’Dà˜a¡¨£˜}Ð-Ñ-’Dñ ð �C‰KˆDØˆKr,   z<</Type/OCMDz
bad OCGs: rZ  r´   c                ó   • U  S3$ )Nr\  r/   r©  s    r*   Ú<lambda>Ú#Document.set_ocmd.<locals>.<lambda>�  s
   € ¸¸¸4±jr,   rš  ÚAnyOnÚAllOnÚAnyOffÚAllOff)ÚanyonÚallonÚanyoffÚalloffzbad policy: r[  z/VErP	  r   rY  TrI  zbad xref or not an OCMD)r«  rU  r{  rÉ   rµ   r¶   ry
  rÄ   r  r  rè  ré  rC  rL  rM  )r2  r  rR  r]  r^  r   rŸ  rž   Úpolsr§
  r¨
  s            @@r*   Úset_ocmdÚDocument.set_ocmdS  sX  ù€ ô& �s—|‘|“~×*Ñ*Ó,Ó-ˆö	ð$ ˆæ”D˜“J¤4¬ -Ó/Ü�D“	×$Ñ$ XÓ.ˆAØ”C“E‹zØ" 1 #Ð&�Ü  “oÐ%Ø�H˜sŸx™x¬Ñ,@À$Ó(GÓHÑHÈ3ÑNÑNˆDæÜ˜“[×&Ñ&Ó(ˆFà Ø Ø"Ø"ñ	ˆDð ÐCÓCÜ  <°¨xÐ!8Ó9Ð9Ø�c˜$™,˜Ð(Ñ(ˆDæØ�c™( 2›,˜Ð(Ñ(ˆDà�‰ˆð �1‹9Ø×#Ñ#Ó%‰DØ §¡°À$ Ð!GÓGÜÐ6Ó7Ð7Ø×Ñ˜$Ô%Øˆr,   c                ó$  • SnU R                  5       nUS:X  a  [        S5      eU(       d  [        S5      eUS   S:X  a  USS nU H=  nUR                  5       UR                  5       :X  d  M'  U R                  USSU 35          g	   [        S5      e)
zSet the PDF PageLayout value.)rŒ	  Ú	OneColumnÚTwoColumnLeftÚTwoColumnRightÚTwoPageLeftÚTwoPageRightr   r‰
  zbad PageLayout valuerU	  r   Nr‹	  T©rK  rÄ   ré  r›  )r)   r�	  rW	  r  rK   s        r*   Úset_pagelayoutÚDocument.set_pagelayoutœ  s—   € àmˆØ×ÑÓ!ˆØ�1‹9Ü˜[Ó)Ð)ÞÜÐ3Ó4Ð4Ø�a‰=˜CÓØ# A B˜ˆJÛˆAØ×ÑÓ! Q§W¡W£YÕ.Ø×!Ñ! $¨¸¸!¸°gÔ>Ùñ ô Ð/Ó0Ð0r,   c                ó$  • SnU R                  5       nUS:X  a  [        S5      eU(       d  [        S5      eUS   S:X  a  USS nU H=  nUR                  5       UR                  5       :X  d  M'  U R                  USSU 35          g	   [        S5      e)
zSet the PDF PageMode value.)r“	  ÚUseOutlinesÚ	UseThumbsÚ
FullScreenÚUseOCÚUseAttachmentsr   r‰
  zbad PageMode valuerU	  r   Nr’	  Tr¾
  )r)   r”	  rW	  r  rK   s        r*   Úset_pagemodeÚDocument.set_pagemode¬  s•   € à`ˆØ×ÑÓ!ˆØ�1‹9Ü˜[Ó)Ð)ÞÜÐ1Ó2Ð2Ø�A‰;˜#ÓØ  �|ˆHÛˆAØ�~‰~Ó 1§7¡7£9Õ,Ø×!Ñ! $¨
°a¸°s°GÔ<Ùñ ô Ð-Ó.Ð.r,   c                óF   ^• S mU4S jnU R                  U" U5      5        g)a   Add / replace page label definitions in PDF document.

Args:
    doc: PDF document (resp. 'self').
    labels: list of label dictionaries like:
    {'startpage': int, 'prefix': str, 'style': str, 'firstpagenum': int},
    as returned by get_page_labels().
c                óè   • U S    S3nU R                  SS5      S:w  a  USU S    S3-  nU R                  SS5      S:w  a  USU S    3-  nU R                  S	S
5      S
:”  a  USU S	    3-  nUS-  nU$ )z©Convert Python label dict to corresponding PDF rule string.

Args:
    label: (dict) build rule for the label.
Returns:
    PDF label rule string wrapped in "<<", ">>".
Ú	startpagerO	  Úprefixra   z/P(rë  rŠ  z/S/Úfirstpagenumr   z/St rP	  )r=   )ry  rŸ  s     r*   Úcreate_label_strÚ2Document.set_page_labels.<locals>.create_label_strÇ  s¢   € ð ˜Ñ%Ð& bÐ)ˆAØ�y‰y˜ 2Ó&¨"Ó,Ø�s˜5 ™?Ð+¨1Ð-Ñ-�Ø�y‰y˜ "Ó%¨Ó+Ø�s˜5 ™>Ð*Ð+Ñ+�Ø�y‰y˜¨Ó+¨aÓ/Ø�t˜E .Ñ1Ð2Ð3Ñ3�Ø�‰IˆAØˆHr,   c                ó‚   >• U R                  S S9  SR                  U  Vs/ s H  nT" U5      PM     sn5      nU$ s  snf )zíReturn concatenated string of all labels rules.

Args:
    labels: (list) dictionaries as created by function 'rule_dict'.
Returns:
    PDF compatible string for page label definitions, ready to be
    enclosed in PDF array 'Nums[...]'.
c                ó   • U S   $ )NrË
  r/   r©  s    r*   r«
  Ú?Document.set_page_labels.<locals>.create_nums.<locals>.<lambda>â  s   €  a¨¢nr,   ©rŽ  ra   )r¬  r  )rN  ry  rŸ  rÎ
  s      €r*   Úcreate_numsÚ-Document.set_page_labels.<locals>.create_numsÙ  sB   ø€ ð �K‰KÑ4ˆKÑ5Ø—‘¹fÓEºf°UÑ)¨%Ö0¹fÑEÓFˆAØˆHùò Fs   ¡<N)rO  )r2  rN  rÔ
  rÎ
  s      @r*   Úset_page_labelsÚDocument.set_page_labels¼  s"   ø€ ò	õ$	ð 	×Ñ™[¨Ó0Õ1r,   c           	     óš  • U R                   (       d  U R                  (       a  [        S5      eU R                  (       d  [        S5      eU(       d  [	        U R                  5       5      $ [        U5      [        [        4;  a  [        S5      e[	        U5      nU R                  nUS   n[        U5      [        [        4;  a  [        S5      eUS   S:w  a  [        S5      e[        [        US-
  5      5       H·  nX   nXS-      nSUS	   s=::  a  U::  d  O  [        S
U S35      e[        U5      [        [        4;  d  [	        U5      S;  a  [        SUS-    35      e[        US   5      [        Ld	  US   S:  a  [        SUS-    35      eUS   US   S-   :”  d  M¨  [        SUS-    35      e   U R                  5       n	/ n	S/U	-   n
U R                  5       U
S'   U[	        U	5      :”  a=  [        U[	        U	5      -
  5       H"  nU
R                  U R                  5       5        M$     SS0nSSSU
S   S./n[        U5       GH¤  nX   nUS   n[        US   5      n[!        U R                  S-
  [#        SUS	   S-
  5      5      nU R%                  U5      nU R'                  U5      R(                  n[+        SUS-
  5      nU[,        S.nUS	   S:  a	  [.        US'   [	        U5      S:”  aÍ  [        US   5      [        [0        4;   a  [+        SUUS   -
  5      US'   O›[        US   5      [2        L a  US   R5                  5       OUnSU;  a  UUS'   OeU U   n[+        US   5      nUR6                  R(                  UR8                  -
  Ul        UUR:                  -  nUR<                  UR8                  4US'   0 nSUS'   SUS'   SUS'   SUS'   SUS'   [>        R@                  " UU5      US'   US   US'   UUS'   X¾S-
     US'   X¦S-      US'   URC                  S 5      US '   URC                  S!S5      S	URC                  S"S5      -  -   US#'   US-   X¾'   XËUS-
        nURC                  S$5      (       d  U(       a  Xâ:”  a  US==   S-  ss'   OUS==   S-  ss'   US   S:X  a  US-   US'   US-   US'   O US   US'   UUS      nUS-   US'   US-   US'   UR                  U5        GM§     [E        U5       GH:  u  nnS%nUS   S:w  a  US&US    3-  n UUS   -  n US   S:”  a  US'U
US       S(3-  n US   S:”  a  US)U
US       S(3-  n US   S:”  a  US*U
US       S(3-  n US   S:”  a  US+U
US       S(3-  n US   S:”  a  US,U
US       S(3-  n US-US   -   -  nURC                  S 5      (       a0  [	        US    5      S:X  a  US.[M        [        US    5      5       S/3-  nURC                  S#S5      S:”  a  US0US#    3-  nUS:X  a  US1-  nUS2-  nU RO                  X¦   U5        GM=     U RQ                  5         U$ ! [F         a    [H        S	:¼  a
  [K        5          GNLf = f! [F         a    [H        S	:¼  a
  [K        5          GNXf = f! [F         a    [H        S	:¼  a
  [K        5          GNdf = f! [F         a    [H        S	:¼  a
  [K        5          GNpf = f! [F         a    [H        S	:¼  a
  [K        5          GN|f = f! [F         a    [H        S	:¼  a
  [K        5          GNˆf = f! [F         a    [H        S	:¼  a
  [K        5          GN¡f = f)3a‰  Create new outline tree (table of contents, TOC).

Args:
    toc: (list, tuple) each entry must contain level, title, page and
        optionally top margin on the page. None or '()' remove the TOC.
    collapse: (int) collapses entries beyond this level. Zero or None
        shows all entries unfolded.
Returns:
    the number of inserted items, or the number of removed items respectively.
rÕ  r}  z'toc' must be list or tupler   z'items must be sequences of 3 or 4 itemsr   z#hierarchy level of item 0 must be 1r¨  r   zrow z: page number out of range)r   rr  zbad row zbad hierarchy level in row )rÊ  rï  Úlastr  rä  é$   )r  r  r  r   r  rï  rÊ  rÙ
  r  r_  rþ	  Útopr¨  rí   r  ro  rè  rÎ  rÑ  rÁ  rO	  z/Count z/First r\  z/Last z/Next z/Parent z/Prev z/Titlez/C[ rš  z/F z/Type/OutlinesrP	  ))rÃ   r¦  rÄ   r  r<   rò  rÉ   rµ   r¶   rt  rT  r9   rõ  rp   rC  r  rÅ  r!  r  r�	  r2  r#  r	  Ú	LINK_NONErœ  r:   r&  r€	  rf  r{  re  r  Ú
getDestStrr=   rY  rl   r  r{   r·   rM  rÃ  )r2  r²  rÁ  Útoclenrt  Út0rh  Út1Út2Ú	old_xrefsr  ÚlvltabÚolitemsr²  r˜  r¨  ry  r  Úpage_heightrÛ
  r	
  r×   rj  rD  rí   r  r<  r  s                               r*   Úset_tocÚDocument.set_tocè  sÄ  € ð �=�=˜C×,×,ÜÐ;Ó<Ð<Ø�z�zÜ˜[Ó)Ð)ÞÜ�s—{‘{“}Ó%Ð%ô �‹9œT¤5˜MÓ)ÜÐ:Ó;Ð;Ü�S“ˆØ—^‘^ˆ
Ø�‰VˆÜ�‹8œD¤%˜=Ó(ÜÐFÓGÐGØˆa‰5�A‹:ÜÐBÓCÐCÜ”e˜F Q™JÓ'Ö(ˆAØ‘ˆBØ˜‘U‘ˆBØ˜˜A™Õ, *Õ,Ü  4¨ sÐ*DÐ!EÓFÐFÜ�R“¤¤u Ó-´#°b³'ÀÓ2GÜ  8¨Q°©U¨9Ð!5Ó6Ð6Ü�R˜‘U“¤3Ò&¨2¨a©5°1«9Ü Ð#>ÀÀAÁ¸iÐ!HÓIÐIØ�!‰u�r˜!‘u˜q‘yÕ Ü Ð#>ÀÀAÁ¸iÐ!HÓIÐIñ )ð  —K‘K“Mˆ	ð ˆ	Øˆs�Y‰ˆØ×&Ñ&Ó(ˆˆQ‰Ø”C˜	“NÓ"Ü˜F¤S¨£^Ñ3Ö5�Ø—‘˜C×,Ñ,Ó.Ö/ñ 6ð �Q�ˆð
 ¨°RÀÀaÁÑIÐJˆô �v—ˆAØ‘ˆAØ�A‘$ˆCÜ  !¡Ó%ˆEÜ�c—n‘n qÑ(¬#¨a°°1±¸±Ó*:Ó;ˆCØŸ™ cÓ*ˆIØ×*Ñ*¨3Ó/×6Ñ6ˆKÜ˜˜K¨"Ñ,Ó-ˆCØ"¬IÑ6ˆIØ�‰t�a‹xÜ$-�	˜&Ñ!Ü�1‹v˜‹zÜ˜˜!™“:¤#¤u Ó-Ü&+¨B°¸aÀ¹dÑ0BÓ&C�I˜d’Oô 04°A°a±D«z¼TÒ/A  !¡§	¡	¤Ày�IØ 9Ó,Ø*-˜	 $šà" 3™x˜Ü % i°¡oÓ 6˜Ø"&§,¡,×"5Ñ"5¸¿¹Ñ"?˜œØ %¨×(<Ñ(<Ñ <˜Ø+0¯7©7°E·G±GÐ*<˜	 $™ØˆAØˆAˆg‰JØˆAˆg‰JØˆAˆf‰IØˆAˆf‰IØˆAˆf‰IÜ×(Ò(¨°IÓ>ˆAˆf‰IØ  ‘ˆAˆe‰HØˆAˆg‰JØ  q¡™/ˆAˆh‰KØ ™U™ˆAˆf‰IØ"Ÿ™ wÓ/ˆAˆg‰JØ"Ÿ™ x°Ó3°a¸)¿-¹-ÈÐPQÓ:RÑ6RÑRˆAˆg‰JØ˜a™%ˆF‰KØ C¨!¡G™_Ñ-ˆFð —‘˜j×)Ñ)®X¸#».à�w“ 1Ñ$”à�w“ 1Ñ$“à�g‰ "Ó$Ø"# a¡%��w‘Ø!" Q¡��v’à" 6™N��&‘	Ø˜v f™~Ñ.�Ø  1™u��V‘Ø!" Q¡��v‘Ø�N‰N˜1×ñq ôz ˜w×'‰EˆAˆrØˆCØ�'‰{˜aÓØ˜  G¡ Ð.Ñ.�ðØ�r˜&‘zÑ!�ð
Ø�g‘; Ó#Ø˜W T¨"¨W©+Ñ%6Ð$7°tÐ<Ñ<�CðØ�f‘: “?Ø˜V D¨¨F©Ñ$4Ð#5°TÐ:Ñ:�CðØ�f‘: “?Ø˜V D¨¨F©Ñ$4Ð#5°TÐ:Ñ:�Cð
Ø�h‘< "Ó$Ø˜X d¨2¨h©<Ñ&8Ð%9¸Ð>Ñ>�Cð
Ø�f‘: “?Ø˜V D¨¨F©Ñ$4Ð#5°TÐ:Ñ:�Cð
Ø�x " W¡+Ñ-Ñ-�ð �v‰v�g�‰¤3 r¨'¡{Ó#3°qÓ#8Ø˜œi¬¨b°©kÓ(:Ó;Ð<¸AÐ>Ñ>�Ø�v‰v�g˜qÓ! AÓ%Ø˜˜R ™[˜MÐ*Ñ*�à�A‹vØÐ'Ñ'�Ø�4‰KˆCØ×Ñ˜d™g s×+ñu (ðx 	�‰ŒØˆøôo ó ä'¨1Ó,´Ô0@Úðûô ó Ü'¨1Ó,´Ô0@Úðûô ó Ü'¨1Ó,´Ô0@Úðûô ó ä'¨1Ó,´Ô0@Úðûô ó ä'¨1Ó,´Ô0@Úðûô ó ä'¨1Ó,´Ô0@Úðûô ó ä'¨1Ó,´Ô0@Úðús~   ÔY
Ô Y/Ô9ZÕZ9Õ+[Ö\Ö\(Ù
Y,Ù+Y,Ù/ZÚZÚZ6Ú5Z6Ú9[Û[Û\ Û?\ Ü\%Ü$\%Ü(]
Ý	]
c
           	     ól  • U R                  5       U   n
Sn[        U5      [        L Gae  US   [        :X  ad  US   nU R	                  U5      nU R                  U5      R                  nUR                  S[        SS5      5      nXÇR                  -
  Ul	        XrS'   [        R                  " X²5      nUR                  S5      (       d  [        S5      eUR                  S	5      nU(       aQ  [        [        [         U5      5      n[#        U5      S
:w  d  [%        U5      S:  d  ['        U5      S:”  a  [        S5      eUR                  SS5      nUR                  SS5      nUSU-  -   nUR                  S5      nU R)                  U
USS UUUUS9$ U[*        :X  a  U R-                  U5      $ Uc  Uc  gUc  U R)                  U
SUS9$ U[        :X  aŽ  Ub  U[/        SU R0                  S-   5      ;  a  [        S5      eU R	                  US-
  5      nU R                  US-
  5      R                  nUc  [        SUS-
  5      nO[        U5      nXÇR                  -
  Ul	        UUUUUU	S.n[        R                  " UU5      nUS:X  d  UR                  S5      (       d  [        S5      eU R)                  X­SS US9$ )aŠ  Update TOC item by index.

It allows changing the item's title and link destination.

Args:
    idx:
        (int) desired index of the TOC list, as created by get_toc.
    dest_dict:
        (dict) destination dictionary as created by get_toc(False).
        Outrules all other parameters. If None, the remaining parameters
        are used to make a dest dictionary.
    kind:
        (int) kind of link (pymupdf.LINK_GOTO, etc.). If None, then only
        the title will be updated. If pymupdf.LINK_NONE, the TOC item will
        be deleted.
    pno:
        (int) page number (1-based like in get_toc). Required if
        pymupdf.LINK_GOTO.
    uri:
        (str) the URL, required if pymupdf.LINK_URI.
    title:
        (str) the new title. No change if None.
    to:
        (point-like) destination on the target page. If omitted, (72, 36)
        will be used as target coordinates.
    filename:
        (str) destination filename, required for pymupdf.LINK_GOTOR and
        pymupdf.LINK_LAUNCH.
    name:
        (str) a destination name for pymupdf.LINK_NAMED.
    zoom:
        (float) a zoom factor for the target location (pymupdf.LINK_GOTO).
r   r  r×   r  rä  rÚ
  z/Azbad bookmark destro  r   r   zbad color valuerÎ  Frè  r   rÁ  N)rS  r¨  ro  rÑ  rÁ  )rS  r¨  zbad page number)r  r  r  r×   rf   r  ra   )râ  rÉ   r:   r	  r  r�	  r2  r=   r#  rf  r  rÝ
  r8   rÄ   rµ   r  rœ  r<   rÅ  r!  rT  rÜ
  rå  rT  rt  )r2  rä  r	
  r  ry  r  r¨  r  rk   r  r  r  rå
  rS  ro  rÎ  rè  rÑ  rÁ  Úddicts                       r*   Úset_toc_itemÚDocument.set_toc_item§  s°  € ðZ ×$Ñ$Ó& sÑ+ˆØˆ	Ü�	‹?œdÓ"Ø˜Ñ ¤IÓ-Ø Ñ'�ØŸM™M¨#Ó.�	Ø!×.Ñ.¨sÓ3×:Ñ:�Ø—]‘] 4¬¨r°2«Ó7�Ø"§T¡TÑ)�”Ø"$˜$‘Ü×%Ò% iÓ;ˆFØ×$Ñ$ T×*Ñ*Ü Ð!4Ó5Ð5Ø—M‘M 'Ó*ˆEÞÜœS¤¨Ó.Ó/�Ü�u“: “?¤c¨%£j°1£n¼¸E»
ÀQ»Ü$Ð%6Ó7Ð7Ø—=‘= ¨Ó/ˆDØ—]‘] 8¨UÓ3ˆFØ˜Q ™XÑ%ˆEØ —}‘} ZÓ0ˆHØ×'Ñ'ØØ˜a˜b�zØØØØ!ð (ð ð ð ”9ÓØ×#Ñ# CÓ(Ð(Ø‰<˜E™MØØ‰<Ø×'Ñ'¨°TÀÐ'ÐGÐGà”9ÓØ‰{˜c¬¨q°#·.±.À1Ñ2DÓ)EÓEÜ Ð!2Ó3Ð3ØŸ™ c¨A¡gÓ.ˆIØ×*Ñ*¨3°©7Ó3×:Ñ:ˆKØ‰zÜ˜2˜{¨RÑ/Ó0‘ä˜2“Y�Ø"§T¡TÑ)�”ð ØØØØØñ
ˆô ×!Ò! )¨UÓ3ˆØ�R‹<˜v×0Ñ0°×6Ñ6ÜÐ0Ó1Ð1à×#Ñ# D¸¸°À5Ð#ÐIÐIr,   c                ó.  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " [        R                  " U5      [        S5      5      nUR                  (       d  [        [        [        5        [        R                  " UR                  S5      5      n[        R
                  " U[        S5      5      nUR                  (       a  [        X%US5        g	[        R                  " X$[        R                   " 5       S5      n[        R"                  " U[        S5      [        S5      5        [        R"                  " U[        S5      [        S5      5        [        R"                  " U[        S5      U5        g	)
z"Store XML document level metadata.rÕ  r×  r  r¥  r   ró  r¶  ÚXMLN)rÃ   r¦  rÄ   rÏ   r£   r  rÛ  r  rÍ   rÂ  ÚMSG_BAD_PDFROOTrÃ  rã  rþ  r1  r  r  rV  )r)   r§  rb  r¹  r&  r   s         r*   Úset_xml_metadataÚDocument.set_xml_metadata  s  € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×!Ò!¤5×#4Ò#4°cÓ#:¼HÀVÓ<LÓMˆØ��Ü”_Ô&:Ô;Ü×2Ò2°H·O±OÀGÓ4LÓMˆÜ× Ò  $¬°Ó(<Ó=ˆØ�>�>Ü˜c¨¨QÕ/ä×&Ò&¨´%·,²,³.À!ÓDˆCÜ×Ò ¤X¨fÓ%5´xÀ
Ó7KÔLÜ×Ò ¤X¨iÓ%8¼(À5»/ÔJÜ×Ò ¤h¨zÓ&:¸CÕ@r,   c                ó´  ^ ^• U(       dJ  [         R                  " T 5      n[         R                  " U[        [	        T R
                  5      5      5        g0 mU 4S jnU 4S jnU 4S jnS nU4S jnU4S jn	U" T 5        T(       d  U(       a  [        S5        g	S	n
S	nTR                  5        H  nU
[        U5      -  n
M     T  H�  nUR                  5        Hv  n[        U5      [        La  M  US
   SS nU	" U5      nUc  M,  TU   u  nnu  nnUS    H+  nUR                  US	   5        UR                  US   5        M-     UUUU44TU'   Mx     M�     TR                  5        Hí  u  nu  nnnU" UUS	   US   5      n[        U5      S	   nUb  [        U5      [        U5      :¼  a  U(       a  [        SU< S35        M\  U(       a  [        SU< S35        T R                  US9nUS	   nU" U5        T R                  USS9nU H:  nU" U5      u  nnT R!                  UU5        U(       d	  U(       d  M0  U" UUU5        M<     U[        U5      -  nMï     X«-
  $ )a4  Build font subsets in a PDF.

Eligible fonts are potentially replaced by smaller versions. Page text is
NOT rewritten and thus should retain properties like being hidden or
controlled by optional content.

This method by default uses MuPDF's own internal feature to create subset
fonts. As this is a new function, errors may still occur. In this case,
please fall back to using the previous version by using "fallback=True".
Fallback mode requires the external package 'fontTools'.

Args:
    fallback: use the older deprecated implementation.
    verbose: only used by fallback mode.

Returns:
    The new MuPDF-based code returns None.  The deprecated fallback
    mode returns 0 if there are no fonts to subset.  Otherwise, it
    returns the decrease in fontsize (the difference in fontsize),
    measured in bytes.
Nc                ó  >• TR                  U S5      nUS   S:w  a  g[        US   SS R                  SS5      5      nTR                  US	5      nUS   S:w  a  S
nOUS   nTR                  US5      nUS   S:w  a  S
nX44$ US   nX44$ )z(Retrieve old font '/W' and '/DW' values.ÚDescendantFontsr   r
  ©NNr   r¨  rK  ra   ÚWNÚDWr9   )rÈ  r9   r  )r  ÚdfÚdf_xrefÚwidthsÚdwidthsr2  s        €r*   Úget_old_widthsÚ-Document.subset_fonts.<locals>.get_old_widthsH  s²   ø€ à×!Ñ! $Ð(9Ó:ˆBØ�!‰u˜ÓØ!Ü˜"˜Q™%  "˜+×-Ñ-¨e°RÓ8Ó9ˆGØ×%Ñ% g¨sÓ3ˆFØ�a‰y˜GÓ#Ø‘à ™�Ø×&Ñ& w°Ó5ˆGØ�q‰z˜UÓ"Ø�ð �?Ð"ð " !™*�Ø�?Ð"r,   c                óä  >• TR                  U S5      nUS   S:w  a  g[        US   SS R                  SS5      5      n[        U5      [        Ld  U(       d-  TR                  US	5      S   S
:w  a  TR                  US	S
5        OTR                  US	U5        [        U5      [        Ld  U(       d-  TR                  US5      S   S
:w  a  TR                  USS
5        gTR                  USU5        g)zœRestore the old '/W' and '/DW' in subsetted font.

If either parameter is None or evaluates to False, the corresponding
dictionary key will be set to null.
ró
  r   r
  Nr   r¨  rK  ra   rõ
  rò  rö
  )rÈ  r9   r  rÉ   rè  r›  )r  rù
  rú
  r÷
  rø
  r2  s        €r*   Úset_old_widthsÚ-Document.subset_fonts.<locals>.set_old_widthsZ  sü   ø€ ð ×!Ñ! $Ð(9Ó:ˆBØ�!‰u˜ÓØÜ˜"˜Q™%  "˜+×-Ñ-¨e°RÓ8Ó9ˆGÜ�V“¤CÒ'®v¸3×;KÑ;KÈGÐUXÓ;YØñ<àó<ð × Ñ  ¨#¨vÕ6à× Ñ  ¨#¨vÔ6Ü�W“¤SÒ(¶¸S×=MÑ=MØ˜ó>àñ>àó>ð × Ñ  ¨$°Ô7ð ð × Ñ  ¨$°Ô8Ør,   c                óB  >• SSK nSSKnSR                  UR                  [	        UR
                  5      SS95      S-   nT
R                  U SS9nUR                  S	S	U-   5      nT
R                  U S
5      nUS   S:X  a�  [        US   SS R                  SS5      5      nT
R                  US5      nUS   S:X  aT  [        US   R                  SS5      5      nT
R                  USS9n	U	R                  SSU-   5      n	T
R                  X‰5        T
R                  X5        g)z÷Generate a name prefix to tag a font as subset.

We use a random generator to select 6 upper case ASCII characters.
The prefixed name must be put in the font xref as the "/BaseFont" value
and in the FontDescriptor object as the '/FontName' value.
r   Nra   r§  )rò  Ú+TrI  z
/BaseFont/ró
  r
  r   r¨  rK  ÚFontDescriptorr  z
/FontName/)ÚrandomÚstringr  Úchoicesr¶   Úascii_uppercaserL  r  rÈ  r9   rM  )r'  r  r  rÌ
  Úfont_strr÷
  rø
  r   Úfd_xrefÚfd_strr2  s             €r*   Úset_subset_fontnameÚ2Document.subset_fonts.<locals>.set_subset_fontnamer  s  ø€ ó ÛØ—W‘W˜VŸ^™^¬E°&×2HÑ2HÓ,IÈQ˜^ÐOÓPÐSVÑVˆFØ—‘ x¸D�ÐAˆHØ×'Ñ'¨°lÀVÑ6KÓLˆHØ×!Ñ! (Ð,=Ó>ˆBØ�!‰u˜ÓÜ˜b ™e A b˜k×1Ñ1°%¸Ó<Ó=�Ø×%Ñ% gÐ/?Ó@�Ø�a‘5˜F“?Ü! " Q¡%§-¡-°°rÓ":Ó;�GØ Ÿ_™_¨WÀ˜_ÐF�FØ#Ÿ^™^¨L¸,ÈÑ:OÓP�FØ×%Ñ% gÔ6Ø×Ñ˜hÕ1r,   c           	     ó.  •  SSK Jn  SSKnUR                  5        nU S3nU S3nU S3nUSSU 3S	S
SSS/n	[        R                  " U S3SSS9 n
SU;   aN  U	R                  SU 35        UR                  S5        [        U5      nU H  nU
R                  U S35        M     ONU	R                  SU 35        UR                  S5        [        U5      nU H  nU
R                  US S35        M     SSS5        [        R                  " US5       nUR                  U 5        SSS5         [        R                  " U5         UR#                  U	5        [%        US9nUR&                  nUR(                  S:X  a  SnSSS5        U$ ! [         a"    [        (       a
  [	        5         [        S5        e f = f! , (       d  f       NÈ= f! , (       d  f       N¨= f! [          a     N f = f! [          a    [	        5         Sn Nƒf = f! , (       d  f       W$ = f)zÚBuild font subset using fontTools.

Args:
    buffer: (bytes) the font given as a binary buffer.
    unc_set: (set) required glyph ids.
Returns:
    Either None if subsetting is unsuccessful or the subset font buffer.
r   Nz/This method requires fontTools to be installed.z/oldfont.ttfz/newfont.ttfz/uncfile.txtz--retain-gidsz--output-file=z--layout-features=*z--passthrough-tablesz--ignore-missing-glyphsz--ignore-missing-unicodesz--symbol-cmapr   Úutf8)r  éýÿ  z--gids-file=é½   r&   z--unicodes-file=éÿ   Ú04xÚwb)r  )ÚfontTools.subsetÚsubsetÚImportErrorr  r{   rw   ÚtempfileÚTemporaryDirectoryr>   r?   rp   r€  rµ   r   ri   r²  rl   ÚmainrÚ  rù	  Úglyph_count)rù	  Úunc_setÚgid_setÚftsr  Útmp_dirÚoldfont_pathÚnewfont_pathÚuncfile_pathr  Úunc_fileÚunc_listÚuncr  rÜ  Ú
new_buffers                   r*   Úbuild_subsetÚ+Document.subset_fonts.<locals>.build_subsetŠ  s  € ðÝ.ó
 Ø×,Ñ,Ô.°'Ø") ¨,Ð7�Ø") ¨,Ð7�Ø") ¨,Ð7�à Ø#Ø$ \ NÐ3Ø)Ø*Ø-Ø/Ø#ð	�ô —W’W ˜y¨Ð5°sÀVÒLÐPXØ Ó(ØŸ™ l°<°.Ð$AÔBØŸ™ CÔ(Ü#'¨£=˜Û#+˜CØ$ŸN™N¨c¨U°"¨:Ö6ò $,ð Ÿ™Ð&6°|°nÐ$EÔFØŸ™ CÔ(Ü#'¨£=˜Û#+˜CØ$ŸN™N¨c°#¨Y°b¨>Ö:ñ $,÷ Mô —W’W˜\¨4Ô0°HØ—N‘N 6Ô*÷ 1ðÜ—I’I˜lÔ+ð&Ø—H‘H˜T”NÜ¨Ñ6�DØ!%§¡�JØ×'Ñ'¨1Ó,Ø%)˜
÷U /ð\ Ðøôg ó ß'Ò'¬NÔ,<ÜÐIÔJØðú÷* MÕLú÷ 1Õ0ûô !ó Ùðûô !ó &Ü"Ô$Ø!%’Jð&ú÷W /Ô.ð\ Ðúsƒ   ‚F œ6HÁB#F7Ã5HÄGÄ&HÄ/GÅ8G)Æ,F4Æ7
G	ÇHÇ
G	ÇHÇ
G&Ç#HÇ%G&Ç&HÇ)HÇ?HÈHÈHÈ
Hc           
     ó@  >^• S mU4S jn[        U R                  5       Hú  nU R                  USS9 Hã  nUS   nUS   nUS   nUS;  a  M  [        U5      S	:”  a  US	   S
:X  a  M4  U R	                  U5      nUS   nU" X5      n	TR                  U[        5       [        5       [        5       [        5       445      u  p«nUR                  U5        U	 H  nU
R                  U5        M     [        US9nU
R                  UR                  5        AX«U4TU'   Må     Mü     g)z“Populate 'font_buffers'.

For each font candidate, store its xref and the list of names
by which PDF text may refer to it (there may be multiple).
c                ó¬   • SU ;   aM  U R                  S5      n[        XS-   US-    S5      nU R                  XUS-    [        U5      5      n SU ;   a  MM  U $ )zLRecreate font name that contains PDF hex codes.

E.g. #20 -> space, chr(32)
Ú#r   r   é   )r§   r9   r  Úchr)r   r³  rö  s      r*   Ú	norm_nameÚ@Document.subset_fonts.<locals>.repl_fontnames.<locals>.norm_nameÑ  s]   € ð
 ˜T“kØŸ	™	 #›�AÜ˜D Q¡¨¨Q©Ð/°Ó4�AØŸ<™<¨°°Q±¨¼¸Q»Ó@�Dð ˜T•kð �r,   c                óH  >• US   nU/nU R                  US   S5      S   SS nT" U5      nX#;  a  UR                  U5        U R                  US   S5      nUS   S:w  a  U$ US   SS nUR                  S	5      (       a  [        USS
 5      nU R	                  USS9nUR                  S5      nUS:¼  al  UR                  SUS-   5      n[        UR                  SUS-   5      UR                  SUS-   5      5      nXGS-   U nT" U5      nX#;  a  UR                  U5        U$ )zoReturn a list of fontnames for an item of page.get_fonts().

There may be multiple names e.g. for Type0 fonts.
r   r   rÔ  r   Nró
  r
  r¨  r\  éüÿÿÿTrI  z	/BaseFontrU	  rP	  )rÈ  rp   r  r9   rL  r§   rÅ  )	r2  rH   rÿ   rf  Údescendentsr  rF  rG  r,  s	           €r*   Úget_fontnamesÚDDocument.subset_fonts.<locals>.repl_fontnames.<locals>.get_fontnamesÜ  sL  ø€ ð
   ™7�Ø!˜
�Ø×+Ñ+¨D°©G°ZÓ@ÀÑCÀAÀBÐG�Ù$ XÓ.�ØÓ(Ø—L‘L Ô*Ø!×.Ñ.¨t°A©wÐ8IÓJ�Ø˜q‘> WÓ,Ø �LØ)¨!™n¨Q¨rÐ2�Ø×'Ñ'¨×/Ñ/Ü˜{¨3¨BÐ/Ó0�DØ"%§/¡/°$À4 /Ð"H�KØ ×%Ñ% kÓ2�Ø˜“7Ø$×)Ñ)¨#¨r°A©vÓ6�BÜ˜[×-Ñ-¨c°2¸±6Ó:¸K×<LÑ<LÈTÐSUÐXYÑSYÓ<ZÓ[�BØ*°©6°BÐ7�HÙ(¨Ó2�HØÓ,ØŸ™ XÔ.Ø�r,   T©rl  r   r   r   )ÚotfÚttfÚwoffÚwoff2r§  r  r¨  ©r  N)
rT  rt  rm  r<   rá  r=   r«  r€  rÚ  r   )r2  r1  rh  r  Ú	font_xrefÚfont_extrÆ  Úextrr  rf  Úname_setÚxref_setÚsubsetsr   rÜ  r,  Úfont_bufferss                  @€r*   Úrepl_fontnamesÚ-Document.subset_fonts.<locals>.repl_fontnamesÊ  s#  ù€ ò	õô8 ˜3Ÿ>™>Ö*�Ø×+Ñ+¨A°DÐ+Ó9�AØ ! !¡�IØ  ™t�HØ  ™t�Hàð (ó ñ !ä˜8“} qÓ(¨X°a©[¸CÓ-?Ù à×+Ñ+¨IÓ6�DØ!% b¡�JÙ)¨#Ó1�EØ2>×2BÑ2BØ"¤S£U¬C«E´C³E¼3»5°>Ð$Bó3Ñ/�H¨ð —L‘L Ô+Û %˜Ø Ÿ™ TÖ*ñ !&ä¨:Ñ6�DØ—L‘L §¡Ô+ØØ08ÀGÐ/L�L Ó,ó9 :ò +r,   c                óT   >• TR                  5        H  u  nu  n  nX;   d  M  Us  $    g r.   )rG   )r   rù	  r<  r<  r?  s       €r*   Úfind_buffer_by_nameÚ2Document.subset_fonts.<locals>.find_buffer_by_name  s3   ø€ Ø,8×,>Ñ,>Ö,@Ñ(�Ñ(˜ 1 aØÕ#Ø!’Mñ -Að r,   zNo fonts to subset.r   rÜ  é!   Úcharsr   zCannot subset r   zBuilt subset of font r8  TrI  )r£   rn  Úpdf_subset_fonts2rµ   rT  rt  rw   r{  r<   Úget_texttracerÉ   r:   r€  rG   r  rL  rM  ) r2  ÚverboseÚfallbackrb  rû
  rþ
  r
  r%  r@  rC  Úold_fontsizeÚnew_fontsizer  r×   rI  rÿ   rù	  r<  r=  Úset_ucsÚset_gidrö  Ú
old_bufferr>  r$  r  r'  r  r9  Úwidth_tableÚ	def_widthr?  s    `                              @r*   Úsubset_fontsÚDocument.subset_fonts%  ss  ù€ ö8 Ü×5Ò5°cÓ:ˆCÜ×#Ò# C¬¬e°C·N±NÓ.CÓ)DÔEØàˆõ	#õ$	õ0	2ò0>	õ@K	MõZ	ñ 	�sÔÞÞÜÐ-Ô/ØàˆØˆØ&×+Ñ+Ö-ˆJØœC 
›OÑ+ŠLñ .ó ˆDð ×*Ñ*Ö,�Ü˜“:¤TÒ)ÙØ ™<¨¨Ð,�Ù,¨XÓ6�Ø‘>ÙØ9EÀfÑ9MÑ6�˜(Ñ$6 W¨gØ˜gœ�AØ—K‘K  !¡Ô%Ø—K‘K  !¡Ö%ñ 'ð )1°(¸WÀgÐ<NÐ'O�˜VÓ$ó -ñ ð" :F×9KÑ9KÖ9MÑ5ˆJÑ5˜ 8¨WÙ% j°'¸!±*¸gÀa¹jÓIˆJÜ˜H“~ aÑ(ˆHØÑ!¤S¨£_¼¸J»Ó%GæÜ˜n¨X©L¸Ð:Ô;ÙÞÜÐ/°©|¸1Ð=Ô>Ø×"Ñ"¨jÐ"Ð9ˆCØ˜1‘vˆHÙ Ô)Ø—‘ØØð 'ð ˆHó
 &�	á)7¸	Ó)BÑ&�˜Yà×!Ñ! )¨XÔ6æ§) )Ù" 9¨k¸9ÖEñ &ð œC 
›OÑ+ŠLñ9 :Nð< Ñ*Ð*r,   c                óø  • [        U 5      n[        R                  " [        R                  " U5      [	        S5      [	        S5      [	        S5      5      n[        R
                  " U5      (       a  [        R                  " U5      (       d  US:  a  g[        [        5      eUS:  a  g[        R                  " X15        U(       a7  [        R                  " U5        [        R                  " UR                  5        gg)zActivate an OC layer.r×  r6  rk  r   Nr   )rÏ   r£   r!  rÛ  r  r<  r¬  rÄ   ÚMSG_BAD_OC_LAYERÚpdf_select_layer_configÚpdf_set_layer_config_as_defaultr[  rÍ   )r)   rq  Ú
as_defaultrb  Úcfgss        r*   Úswitch_layerÚDocument.switch_layer]  s»   € ä˜tÓ$ˆÜ×"Ò"Ü×!Ò! 3Ó'Ü˜Ó Ü˜Ó(Ü˜Ó#ó	ˆô ×!Ò! 4×(Ñ(´×0CÒ0CÀT×0JÑ0JØ˜‹zØÜÔ.Ó/Ð/Ø�A‹:ØÜ×%Ò% sÔ3ÞÜ×1Ò1°3Ô7Ü×!Ò! 3§>¡>Õ2ð r,   c                ó|  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " U5      n[        USUS-
  5      (       d  [        S[        5        [        U5        [        XB5      n[        R                  " XAU5        U(       a  [        [        U5      5        gg)z!Replace object definition source.rÕ  r   rX  N)rÃ   r¦  rÄ   rÏ   r£   r·  rÕ  rÂ  r¸  rB  rÝ  r  ÚJM_refresh_linksrÛ   )r)   r  r   r×   rb  ÚxreflenrP  s          r*   rM  ÚDocument.update_objectq  s‹   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×$Ò$ SÓ)ˆÜ˜˜a ¨¡×+Ñ+Ü�J¤Ô-Ü˜Ôä% cÓ0ˆÜ×Ò ¨7Ô3ÞÜœl¨4Ó0Õ1ð r,   c                óÒ  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " U5      nUS:  d  X:”  a  [        [        5      e[        R                  " XQS5      n[        R                  " U5      (       d  [        [        5      e[        U5      nUR                  (       d  [        [        5      e[        XWX„5        SUl        g)zReplace xref stream part.rÕ  r   r   N)rÃ   r¦  rÄ   rÏ   r£   r·  r¸  r¹  r†  ÚMSG_IS_NO_DICTr/  rÍ   rÀ  r0  r1  Údirty)	r)   r  r	   rO  Úcompressrb  r^  r  r&  s	            r*   rR
  ÚDocument.update_stream€  s¨   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×$Ò$ SÓ)ˆØ�!‹8�t“~ÜœlÓ+Ð+ä×$Ò$ S°Ó2ˆÜ× Ò  ×%Ñ%ÜœnÓ-Ð-Ü  Ó(ˆØ�~�~Üœ^Ó,Ð,Ü˜ 3Ô1Øˆ�	r,   c                óf   • [        U SS9nUR                  (       a  [        R                  " U5      $ g)z!
Count versions of PDF document.
r   rÖ  )rÏ   rÍ   r£   Úpdf_count_versionsr…  s     r*   Úversion_countÚDocument.version_count’  s+   € ô
 ˜t¨aÑ0ˆØ�>�>Ü×+Ò+¨CÓ0Ð0Ør,   c                ó‚   • SSK Jn  U" 5       nU R                  UUUU
UUUUUUUU	UUUUUUUUUS9  UR                  5       $ )Nr   ©r¨  )rð  rñ  rý  r1
  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ö  r÷  rý  r1
  rø  rù  rú  rû  rü  rþ  rÿ  r   r  r¨  Úbios                          r*   r   ÚDocument.writeœ  sl   € õ. 	Ù‹iˆØ�	‰	ØØØØ#Ø%ØØ-Ø+Ø'ØØØØØ%Ø'Ø!ØØ"3Ø'Ø#5Ø /ð+ 	ñ 	
ð. �|‰|‹~Ðr,   c                ó&   • U R                   " U0 UD6$ r.   )r   r  s      r*   r¸  ÚDocument.tobytesÎ  s   € Ø�zŠz˜4Ð* 6Ñ*Ð*r,   c                ób   • [        U 5        U R                  R                  U R                  5      $ ©zPDF xref number of page.©rp  rí   r  r;  r0   s    r*   r  ÚDocument.xrefÑ  ó%   € ô 	�DÔØ�{‰{×$Ñ$ T§[¡[Ó1Ð1r,   )Úkeepc               ó^  • U R                  U5      (       a#  U R                  U5      nU R                  UUSSS9  Uc  / nU R                  U5       H  nXS;   a  M
  U R	                  X%S5        M     U R                  U5       H)  nU R                  X5      nU R	                  X%US   5        M+     g)a¦  Copy a PDF dictionary object to another one given their xref numbers.

Args:
    doc: PDF document object
    source: source xref number
    target: target xref number, the xref must already exist
    keep: an optional list of 1st level keys in target that should not be
          removed before copying.
Notes:
    This works similar to the copy() method of dictionaries in Python. The
    source may be a stream object.
FT)rc  rO  Nrò  r   )Úxref_is_streamÚxref_stream_rawrR
  r 
  r›  rÈ  )r2  ÚsourceÚtargetrt  r	   rŽ  rH   s          r*   Ú	xref_copyÚDocument.xref_copy×  s¸   € ð ×Ñ˜f×%Ñ%à×(Ñ(¨Ó0ˆFØ×ÑØØØØð	 ñ ð ‰<ØˆDØ×$Ñ$ VÖ,ˆCØ‹{ÙØ×Ñ˜V¨&Ö1ñ -ð
 ×$Ñ$ VÖ,ˆCØ×#Ñ# FÓ0ˆDØ×Ñ˜V¨$¨q©'Ö2ò -r,   c                óð  • [        U 5      n[        R                  " U5      n[        USUS-
  5      (       d  US:w  a  [	        [
        5      eUS:”  a  [        R                  " X15      nO[        R                  " U5      nUR                  (       d  g[        R                  " XR5      nUR                  (       d  gSn[        R                  " U5      (       a  Sn[        R                  " U5      S S3nGOf[        R                  " U5      (       a  S	nGOG[        R                  " U5      (       a  S
nGO([        R                  " U5      (       a  Sn[        R                  " U5      S nOò[        R                   " U5      (       a  SnOÔ[        R"                  " U5      (       a  SnSnO´[        R$                  " U5      (       a#  Sn[        R&                  " U5      (       a  SnOySnOv[        R(                  " U5      (       a  SnS[        R*                  " U5       3nO?[        R,                  " U5      (       a"  Sn[/        [        R0                  " U5      5      nOSnUc  [3        USS5      n	[5        U	5      nX‡4$ )z+Get PDF dict key value of object at 'xref'.r   r¨  r   )rò  rò  Nr  rD  r\  r
  r:   r9   rœ  rò  ré   rV	  rŠ
  r   rU	  r  Úunknown)rÏ   r£   r·  rÕ  rÄ   r¸  r=  rÛ  rÍ   ro  rÿ	  r  r<  r†  Ú
pdf_is_intr  Úpdf_is_realr×  ra	  rb	  rõ  r…  Úpdf_is_stringr
  r	  ÚJM_object_to_bufferrŸ  )
r)   r  rŽ  rb  r^  r  Úsubobjr   rÉ   r&  s
             r*   rÈ  ÚDocument.xref_get_keyú  sþ  € ä˜tÓ$ˆÜ×$Ò$ SÓ)ˆÜ˜˜a ¨¡×+Ñ+°¸³
ÜœlÓ+Ð+Ø�!‹8Ü×'Ò'¨Ó2‰Cä×#Ò# CÓ(ˆCØ�~�~Ø#Ü×$Ò$ SÓ.ˆØ× × Ø#ØˆÜ× Ò  ×(Ñ(ØˆDÜ×&Ò& vÓ.¨qÐ1°Ð6ŠDÜ×Ò ×'Ñ'ØŠDÜ×Ò˜v×&Ñ&ØŠDÜ×Ò˜f×%Ñ%ØˆDÜ×&Ò& vÓ.¨qÐ1‰DÜ×Ò˜v×&Ñ&Ø‰DÜ×Ò˜v×&Ñ&ØˆDØ‰DÜ×Ò˜v×&Ñ&ØˆDÜ× Ò  ×(Ñ(Ø‘à‘Ü×Ò˜v×&Ñ&ØˆDØ”u×(Ò(¨Ó0Ð1Ð2‰DÜ× Ò  ×(Ñ(ØˆDÜ$¤U×%=Ò%=¸fÓ%EÓF‰DàˆDØ‰<Ü% f¨a°Ó3ˆCÜ'¨Ó,ˆDØˆ|Ðr,   c                óÜ  • [        U 5      n[        R                  " U5      n[        USUS-
  5      (       d  US:w  a  [	        [
        5      eUS:”  a  [        R                  " X!5      nO[        R                  " U5      n[        R                  " U5      n/ nUS:X  a  U$ [        U5       H>  n[        R                  " [        R                  " XG5      5      nUR                  U5        M@     U$ )zFGet the keys of PDF dict object at 'xref'. Use -1 for the PDF trailer.r   r¨  r   )rÏ   r£   r·  rÕ  rÄ   r¸  r=  rÛ  r‡  rT  r…  r‰  rp   )	r)   r  rb  r^  r  rJ   r¦   rh  rŽ  s	            r*   r 
  ÚDocument.xref_get_keys,  sÃ   € ä˜tÓ$ˆÜ×$Ò$ cÓ*ˆÜ˜˜a ¨¡×+Ñ+°¸³
ÜœlÓ+Ð+Ø�!‹8Ü×'Ò'¨Ó3‰Cä×#Ò# SÓ)ˆCÜ×Ò Ó$ˆØˆØ�‹6ØˆIÜ�q–ˆAÜ×#Ò#¤U×%;Ò%;¸SÓ%DÓEˆCØ�I‰I�cŽNñ ð ˆ	r,   c                ó’   • U R                   (       d  U R                  (       a  [        S5      eU R                  US5      S   S:X  a  gg)zCheck if xref is a font object.rÕ  ró  r   z/FontTF©rÃ   r¦  rÄ   rÈ  ©r)   r  s     r*   Úxref_is_fontÚDocument.xref_is_font?  s=   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ø×Ñ˜T 6Ó*¨1Ñ-°Ó8ØØr,   c                ó’   • U R                   (       d  U R                  (       a  [        S5      eU R                  US5      S   S:X  a  gg)z!Check if xref is an image object.rÕ  r¶  r   rH  TFr‡  rˆ  s     r*   Úxref_is_imageÚDocument.xref_is_imageG  s=   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ø×Ñ˜T 9Ó-¨aÑ0°HÓ<ØØr,   c                óx   • [        U SS9nUR                  (       d  g[        [        R                  " X!5      5      $ )z!Check if xref is a stream object.r   rÖ  F)rÏ   rÍ   ré   r£   Úpdf_obj_num_is_streamrû  s      r*   rv  ÚDocument.xref_is_streamO  s.   € ä˜t¨aÑ0ˆØ�~�~ØÜ”E×/Ò/°Ó:Ó;Ð;r,   c                ó’   • U R                   (       d  U R                  (       a  [        S5      eU R                  US5      S   S:X  a  gg)z Check if xref is a form xobject.rÕ  r¶  r   rI  TFr‡  rˆ  s     r*   Úxref_is_xobjectÚDocument.xref_is_xobjectV  s=   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ø×Ñ˜T 9Ó-¨aÑ0°GÓ;ØØr,   c                ól   • Sn[        U SS9nUR                  (       a  [        R                  " U5      nU$ )zGet length of xref table.r   rÖ  )rÏ   rÍ   r£   r·  )r)   r^  rb  s      r*   r_  ÚDocument.xref_length^  s/   € àˆÜ˜t¨aÑ0ˆØ�>�>Ü×(Ò(¨Ó-ˆGØˆr,   c                óî  • U R                   (       a  [        S5      e[        (       a$  [        R                  " U R
                  XU5      nU$ [        U 5      n[        R                  " U5      n[        USUS-
  5      (       d  US:w  a  [        [        5      eUS:”  a  [        R                  " XQ5      nO[        R                  " U5      n[        [        R                  " U5      X#5      n[        U5      n	U	$ )z#Get xref object source as a string.r¿   r   r¨  r   )rÃ   rÄ   r  r   rL  rÅ   rÏ   r£   r·  rÕ  r¸  r=  rÛ  r�  rè  ÚJM_EscapeStrFromBuffer)
r)   r  rJ  rš  rL   rb  r^  r  r&  r   s
             r*   rL  ÚDocument.xref_objectf  sÂ   € à�>�>ÜÐ.Ó/Ð/ßŠ;Ü×#Ò# T§Y¡Y°À%ÓHˆCØˆJÜ˜tÓ$ˆÜ×$Ò$ SÓ)ˆÜ˜˜a ¨¡×+Ñ+°¸³
ÜœlÓ+Ð+Ø�!‹8Ü×'Ò'¨Ó2‰Cä×#Ò# CÓ(ˆCÜ!¤%×"<Ò"<¸SÓ"AÀ:ÓUˆÜ% cÓ*ˆØˆr,   c           	     ó¾  • U R                   (       a  [        S5      eU(       a9  [        U[        5      (       a$  [        R                  U5      [        5       S14;  a  [        S5      e[        U[        5      (       a4  U(       a-  US   S:X  a/  [        R                  USS 5      [        5       :w  a  [        S5      e[        U 5      n[        R                  " U5      n[        USUS-
  5      (       d  US:w  a  [        [        5      eUS:w  a  [        R                  " XA5      nO[        R                  " U5      n[        XbU5      nUR                  (       d  gUS:w  a  [        R                   " XAU5        g[        R"                  " U5      n[%        U5       HC  n	[        R&                  " U[        R(                  " Xy5      [        R*                  " Xy5      5        ME     g)	z&Set the value of a PDF dictionary key.r¿   rU	  z	bad 'key'r   r   Nzbad 'value'r¨  )rÃ   rÄ   rC   rè  ÚINVALID_NAME_CHARSÚintersectionr«  rÏ   r£   r·  rÕ  r¸  r=  rÛ  ÚJM_set_object_valuerÍ   r  r‡  rT  rV  r‰  rˆ  )
r)   r  rŽ  r¹   rb  r^  r  rP  rJ   rh  s
             r*   r›  ÚDocument.xref_set_keyy  sv  € à�>�>ÜÐ.Ó/Ð/æœ* S¬#×.Ñ.Ô2D×2QÑ2QÐRUÓ2VÔ_bÓ_dÐgjÐfkÐ^lÓ2lÜ˜[Ó)Ð)Ü˜%¤×%Ñ%®U°e¸A±hÀ#³oÔJ\×JiÑJiÐjoÐpqÐprÐjsÓJtÔx{Óx}ÓJ}Ü˜]Ó+Ð+ä˜tÓ$ˆÜ×$Ò$ SÓ)ˆô ˜˜a ¨¡×+Ñ+°¸³
ÜœlÓ+Ð+Ø�2‹:Ü×'Ò'¨Ó2‰Cä×#Ò# CÓ(ˆCÜ% c°Ó6ˆØ×!×!ØØ�2‹:Ü×#Ò# C¨wÕ7ä×"Ò" 7Ó+ˆAÜ˜1–X�Ü×"Ò"ØÜ×.Ò.¨wÓ:Ü×.Ò.¨wÓ:öò r,   c                óÚ  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " U5      n[        USUS-
  5      (       d  US:w  a  [        [        5      eUS:¼  a  [        R                  " X!S5      nO[        R                  " U5      nSn[        R                  " U5      (       a!  [        R                  " X!5      n[        U5      nU$ )zGet decompressed xref stream.rÕ  r   r¨  r   N)rÃ   r¦  rÄ   rÏ   r£   r·  rÕ  r¸  r¹  rÛ  r"  Úpdf_load_stream_numberr$  ©r)   r  rb  r^  r  r%  r&  s          r*   rQ
  ÚDocument.xref_streamŸ  s¹   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×$Ò$ cÓ*ˆÜ˜˜a ¨¡×+Ñ+°¸³
ÜœlÓ+Ð+Ø�1‹9Ü×(Ò(¨#°QÓ7‰Cä×#Ò# SÓ)ˆCØˆÜ×Ò ×$Ñ$Ü×.Ò.°Ó:ˆCÜ  #Ó&ˆAØˆr,   c                óÚ  • U R                   (       d  U R                  (       a  [        S5      e[        U 5      n[        R
                  " U5      n[        USUS-
  5      (       d  US:w  a  [        [        5      eUS:¼  a  [        R                  " X!S5      nO[        R                  " U5      nSn[        R                  " U5      (       a!  [        R                  " X!5      n[        U5      nU$ )z&Get xref stream without decompression.rÕ  r   r¨  r   N)rÃ   r¦  rÄ   rÏ   r£   r·  rÕ  r¸  r¹  rÛ  r"  Úpdf_load_raw_stream_numberr$  r   s          r*   rw  ÚDocument.xref_stream_raw±  s¹   € à�>�>˜T×.×.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×$Ò$ cÓ*ˆÜ˜˜a ¨¡×+Ñ+°¸³
ÜœlÓ+Ð+Ø�1‹9Ü×(Ò(¨#°QÓ7‰Cä×#Ò# SÓ)ˆCØˆÜ×Ò ×$Ñ$Ü×2Ò2°CÓ>ˆCÜ  #Ó&ˆAØˆr,   c                ó`  • [        U 5      n[        R                  " [        R                  " U5      [	        S5      5      nUR
                  (       d  [        [        [        5        [        R                  " U[	        S5      5      nSnUR
                  (       a  [        R                  " U5      nU$ )z"Get xref of document XML metadata.r×  r¥  r   )
rÏ   r£   r  rÛ  r  rÍ   rÂ  rî
  rÃ  r  )r)   rb  r¹  r   r  s        r*   Úxref_xml_metadataÚDocument.xref_xml_metadataÃ  sx   € ä˜tÓ$ˆÜ×!Ò!¤5×#4Ò#4°cÓ#:¼HÀVÓ<LÓMˆØ��Ü”_Ô&:Ô;Ü× Ò  $¬°Ó(<Ó=ˆØˆØ�>�>Ü×#Ò# SÓ)ˆDØˆr,   )rÅ   rÆ  r®  Ú__dict__c                ó   • U R                   $ r.   )r•  r0   s    r*   r«
  ÚDocument.<lambda>Ñ  s   €  D§M¢Mr,   )r¨  r©  r«  rª  rÁ  r>  r•  r­  ró	  rÃ   r¦  r§  rÆ  r	   rÅ   r®  rö   )Úreturnré   )r«  r²  )rh  r9   r«  rÓ   )rh  r‚  r«  z
list[Page])rh  ztuple[int, int]r«  rÓ   )NNNNr   r   r¢  ©r«  r9   ©r«  rè  )rä  r9   r«  r²  )r¨  r¨  r¨  )r  ú
'Document'r  r®  r  r9   r  r9   r  r9   r«  r²  )r¨  r¨  r¨  r   )r·  r®  r3  r®  r  r9   r  r9   r  r9   r«  r²  )rH   útyping.Union[int, str]r«  r9   rs  rx  ©r×   rÓ   )r  r9   rÛ  rè  rÜ  rè  rÝ  r9   rÞ  r9   rä  r9   rô
  )r¨  éS  éJ  ©NNr   NN)r¨  r   NN)r°  ré   rˆ  ré   r«  r²  )r   r¨  r   )r¨  )ry  r9   r  r9   )ry  r9   )r   rè  r5  Ú
ByteStringrk   ru  rS  ru  rË  ru  r«  r²  )rH   r¯  )rH   r¯  r«  r   )rH   r¯  r«  r:   ©r«  rµ   )rH   r¯  r5  ÚOptBytesrk   ru  rS  ru  rË  ru  r«  r²  )r   r   N)r   FTTTFFFFFr   éÿ  NNTr   r   r   F)rÓ  r   N)r2  r®  r  r9   rÞ  r9   rä  r9   r-  ÚOptDictr«  rµ   )r2  r®  r  r9   r«  r9   )r2  r®  r  r9   r«  r:   rv  )ry  r9   rl  ré   r«  rµ   )r2  r®  ry  r9   rð  rº   rò  r,  r  r½   ró  ré   r°  ré   r«  ú'Pixmap')r   NNNF)r2  r®  ry  r9   r„  rè  r  r½   rÑ  ÚOptIntr…  ú
'TextPage'r¬  ré   r«  ú
typing.Any)ry  r9   r«  rµ   r&  )r2  r®  r  ré   r«  rµ   )r2  r®  r«  ré   )r¨  r¨  r¨  r¨  TTr   r   )Nr¢  r±  r²  ÚhelvNrq  )r2  r®  ry  r9   r   ztyping.Union[str, list, None]r   rœ  r‰  rœ  r2  rœ  rÿ   rè  r  ru  ro  rw  r«  r9   r.   )Nr   r   r¢  ©r«  r:   )
r2  r®  ry  r9   r‰  rœ  r2  rœ  r«  rÓ   )rÇ  rº  rƒ  rº  r„  rº  r«  zcollections.abc.Iterable[Page]r  )r×   rÓ   r«  rÓ   rŒ   )
Nr   r   TTTTTFNrr  )r   r   r   r   r   r   r   r   r   r   r   r   r   r·  NNr   r   r   F)TTTTTTTr   TTTTT)r2  r®  rS
  ré   rT
  ré   rU
  ré   rV
  ré   rW
  ré   r§  ré   rX
  ré   rY
  r9   rZ
  ré   r[
  ré   r\
  ré   r]
  ré   r^
  ré   r«  r²  )FNNN)r2  r®  ry  r9   r   rè  rd
  ré   r  r½   rÑ  r9   r…  r»  r«  rµ   )NNNNN)rX	  r:   r«  ré   )r2  r®  rŒ  r:   r«  r²  )r2  r®  r  r9   rÚ  r9   r«  r²  )r   NNN)r2  r®  r  r9   rR  útyping.Union[list, None]r]  ru  r^  r¿  r«  r9   )r�	  rè  )r”	  rè  )r2  r®  r²  rµ   rÁ  r9   r«  r9   )NNNNNNNr   )r2  r®  rä  r9   r	
  r¸  r  rº  ry  rº  r  ru  r¨  ru  r  r»   rk   ru  r  rœ  r«  r²  ©FF)r2  r®  rI  ré   rJ  ré   r«  rº  )r   Nr   r   )FFFFFFFFFFFFr   r·  NNr   r   r   F)
r2  r®  rx  r9   ry  r9   rt  rµ   r«  r²  )Àr2   r3   r4   r5   rz  r†  rÚ  rÞ  ÚtypingÚoverloadr�  ÚsysÚversion_infor‘   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?  rã  r#  rO  rT  ry  rW  r^  r|  r�  r†  r‹  ru  rv  rŒ  rÄ  r¢  r¦  r€  r�  rº  r½  rÁ  rÄ  rË  r¢  rÐ  rá  rí  r  r  r  r3  r8  r?  rC  rÛ  rU  rf  râ  rm  rq  ru  r|  r�  r†  r‰  r�  r®  r¡  r§  rª  rÃ  r¼  rÁ  r¹  rÕ  rÙ  rw  r  rå  ré  rð  rô  rù  rÿ  r	  r	  r	  r	  r	  r	  r"	  rK  r*	  r5	  r8	  rŸ  rE	  rK	  rX	  r[	  r   ri	  rÂ  rÀ  rw	  r¤  rt  r�	  r†	  r  r�	  r”	  rF  rK  rÛ  rú  r¬	  rµ	  r¹	  r”  rí	  rß	  r
  r  r6
  r:
  ra
  rj
  rq
  rÃ  r
  r†
  rŽ
  rL
  rÐ  r¶
  r¿
  rÇ
  rÖ
  ræ
  rê
  rï
  rR  rZ  rM  rR
  rg  r   r¸  r  rz  rÈ  r 
  r‰  rŒ  rv  r’  r_  rL  r›  rQ
  rw  r¦  Ú	__slots__rœ  Ú	is_streamr6   r/   r,   r*   rÂ   rÂ   	  sÑ  † ôô,;ò.òð ‡_�_õó ðð ×Ñ˜6Ó!Ø	�‰ó	ó 
ð	ð 
�‰ó	ó 
ð	ô!ôW<ôrôXò)ð($àð$ð ô$òò@9ò+ð  ØØðC@ØðC@àðC@ð ðC@ð ð	C@ð
 ðC@ð õC@ðT  ØØØðDPØðDPàðDPð ð	DPð
 ðDPð ðDPð õDPòL
ôôò>
+ò-ò^%ô("òHDôL%öò<ò@ò)ò"ò ô(ò	ò/ò6 ôpò0)ò	8ò	 ò
'ôHð8 ñó ðô(/ôDòL
ò9ð &*¸4÷ @ð$ ñ3ó ð3òòô$ö.;ò2<ö&ò
C ðP #Ø#Øð$Øð$àð$ð ð$ð ð	$ð
 ð$ð õ$ôL)ô&ô	*ôô,ð  $Ø"Ø#ØðØ(ðàðð ðð ð	ð
 ðð õô>/òbðB ØØØØØØØØØØØØØØØØØ Ø!ô+/òb/ô6 ðv ØØ $ðcØðcàðcð ðcð ð	cð
 ðcð õcôJò,ò2ôò"-ô^AHòFö$ö$
òKôð< #'ØØ%)Ø"ØØñ!Øð!àð!ð  ð	!ð #ð!ð ð!ð ð!ð ð!ð õ!ðL !Ø"Ø Ø#'ØðLØðLàðLð ðLð ð	Lð
 ðLð !ðLð ðLð õLô*òð$  ð4Øð4àð4ð õ4òlô"ô
ò{ð0 ØØØØØØØô)ð\ 37Ø ØØØ"Ø#Ø ðØðàðð 0ðð ð	ð
 ðð ðð ðð ðð ðð õðD ØØØØØØØØØØõt(ðn ñ$ó ð$ð ñó ðð ñó ðð, ñó ðð ñ;ó ð;ð ñó ðò	8ò&òòPòòòò
"ô
4ò%òð ñ9ó ð9ð ñ/ó ð/òô2ò(ò<%òð óó ðö:;ð( ñó ðôð0 ñó ðð ØØð	Øðàðð ðð ð	ð
 õò$/ò*ð$ ñ	5ó ð	5òò(òð" óó ðð óó ðö(ò:ôHð ñó ðò0/õ 9òv*õð8 ØØØØØØØØØõU,õn2òAðL ØØØØØØØØØØØØØØØØØØ Ø!õ-\?ò|/ò"Yð $(Ø $Ø#'Ø $Ø#Ø!Ø#Ø!"Ø!%Ø!%Ø$(Ø#Ø!%ñY;ØðY;à ðY;ð ðY;ð !ð	Y;ð
 ðY;ð ðY;ð ðY;ð ðY;ð ðY;ð ðY;ð ðY;ð "ðY;ð ðY;ð ðY;ð öY;ð~  Ø"ØØ#'ñ"
Øð"
àð"
ð ð"
ð ð	"
ð
 ð"
ð ð"
ð !ð"
ð ö"
òH ô6õ?/ôB:õ"÷.;õzð0 Ø-1Ø!Ø+/ñGØðGàðGð +ðGð ð	Gð
 )ðGð öGõR1õ /ò *2ð^ ñ}Øð}àð}ð ð}ð ö	}ðD "&ØØØØ Ø!Ø#ØñjJØðjJàðjJð ðjJð ð	jJð
 ðjJð ðjJð ðjJð ðjJð ðjJð ðjJð öjJòXA÷$v+ð v+ôp	3ô(2õð$ ñó ðð ØØØ ØØØØØØØØØØØØØØØ Ø!õ+0òd+ð ñ2ó ð2ð
 NR÷ !3ð !3òF0òdò&òô<òòôò&$òLò$ò$
ð C€IáÑ1Ó2€GØƒIr,   rÂ   c                  ó<   • \ rS rSrS rS rS
S jrS rS rS r	Sr
g	)ÚDocumentWriteri×  c                ó   • U $ r.   r/   r0   s    r*   rÚ  ÚDocumentWriter.__enter__Ù  rÜ  r,   c                ó$   • U R                  5         g r.   r‹  r�  s     r*   rÞ  ÚDocumentWriter.__exit__Ü  rŽ  r,   c                ó  • [        U[        5      (       a  O:[        US5      (       a  [        U5      nO[        US5      (       a  UR                  n[        U[        5      (       a5  [        R
                  " X[        R
                  R                  5      U l        g [        U5      n[        R
                  " X2[        R
                  R                  5      U l        UR                  5       S:X  d   e[        U R                  S5      (       d   eg )Nr¡  r   r   Ú_out)rC   rè  r@   r   r£   ÚFzDocumentWriterÚPathType_PDFrÅ   r	  ÚOutputType_PDFrY  )r)   r
   r#  r	  s       r*   r‘   ÚDocumentWriter.__init__ß  sÅ   € Ü�tœS×!Ñ!ØÜ�d˜J×'Ñ'Ü˜“:‰DÜ�d˜F×#Ñ#Ø—9‘9ˆDÜ�tœS×!Ñ!Ü×.Ò.°¼u×?UÑ?U×?bÑ?bÓcˆD�Iô (¨Ó.ˆCÜ×.Ò.°¼e×>TÑ>T×>cÑ>cÓdˆDŒIØ×'Ñ'Ó)¨QÓ.Ð.Ð.Ü˜DŸI™I v×.Ñ.Ð.Ñ.r,   c                ót   • [        U5      n[        R                  " U R                  U5      n[	        U5      nU$ r.   )r  r£   Úfz_begin_pagerÅ   rH  )r)   r8  Ú	mediabox2rS  Údevice_wrappers        r*   Ú
begin_pageÚDocumentWriter.begin_pageö  s2   € Ü# HÓ-ˆ	Ü×$Ò$ d§i¡i°Ó;ˆÜ&¨Ó/ˆØÐr,   c                óD   • [         R                  " U R                  5        g r.   )r£   Úfz_close_document_writerrÅ   r0   s    r*   rŒ  ÚDocumentWriter.closeü  s   € Ü×&Ò&¨¯	©	Õ2r,   c                óD   • [         R                  " U R                  5        g r.   )r£   Úfz_end_pagerÅ   r0   s    r*   Úend_pageÚDocumentWriter.end_pageÿ  s   € Ü×Ò˜4Ÿ9™9Õ%r,   r$  N©ra   )r2   r3   r4   r5   rÚ  rÞ  r‘   r×  rŒ  rÞ  r6   r/   r,   r*   rÈ  rÈ  ×  s    † òòô/ò.ò3õ&r,   rÈ  c                  óB  • \ rS rSrS r          SS jrS r\S 5       r\S 5       r	\S 5       r
SS	 jr\S
 5       r\S 5       rSS jrSS jr\S 5       rS rSS jr\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rSS jrS rS rSrg)rÚ  i   c                ó*   • [        U 5      [        La  g g r.   )rÉ   rÚ  r0   s    r*   r\  ÚFont.__del__   s   € Ü�‹:œTÒ!Øð "r,   Nc                óð  • U(       ab  [        US5      (       a  UR                  5       nO [        U[        5      (       a  [	        U5      n[        U[        5      (       d  [        S5      e[        U[        5      (       aÍ  UR                  5       nSU;   d  SU;   d  SU;   a  [        S5        US;   a  SnO—UR                  S	5      (       a  S
nO~UR                  S5      (       a  SnOeUR                  S5      (       a  SnOLU[        R                  5       ;   a  SS KnUR                  U5      nS nAOUS:  a  [        R                  X5      n[         R"                  " U5      n[%        XX4XÖXxXš5
      nXàl        g )NrÂ  zbad type: 'fontbuffer'rU	  Ú\r   z!Warning: did you mean a fontfile?)Úcjkúchina-túchina-tsr   úchina-sr   Úkorear   Újapanr   )r@   rÂ  rC   r§  r   rÄ   rè  ré  rw   r8   Úfitz_fontdescriptorsr{  Úpymupdf_fontsÚmyfontÚBase14_fontdictr=   r£   rÁ  ÚJM_get_fontrÅ   )r)   rÿ   r  r  ÚscriptrK  rÝ  Úis_boldÚ	is_italicÚis_serifÚembedÚfname_lowerrí  rJ  rÜ  s                  r*   r‘   ÚFont.__init__	   sK  € ö Ü�z :×.Ñ.Ø'×0Ñ0Ó2‘
Ü˜J¬	×2Ñ2Ü" :Ó.�
Ü˜j¬%×0Ñ0Ü Ð!9Ó:Ð:ä�h¤×$Ñ$Ø"Ÿ.™.Ó*ˆKØ�kÓ! T¨[Ó%8¸CÀ;Ó<NÜÐ;Ô<àÐ<Ó<Ø‘à×'Ñ'¨	×2Ñ2Ø‘Ø×'Ñ'¨×0Ñ0Ø‘Ø×'Ñ'¨×0Ñ0Ø‘ØÔ 4× 9Ñ 9Ó ;Ó;Û$Ø*×1Ñ1°+Ó>�
Ø�Ù!à˜A“Ü*×.Ñ.¨xÓB�ä×1Ò1°(Ó;ˆÜ˜8Ø tØ xó8ˆð �	r,   c                ó"   • SU R                    S3$ )NzFont('rÒ  ©r   r0   s    r*   rð   ÚFont.__repr__<   s   € Ø˜Ÿ	™	�{ "Ð%Ð%r,   c                óB   • [         R                  " U R                  5      $ )z Return the glyph ascender value.)r£   Úfz_font_ascenderrÅ   r0   s    r*   r  ÚFont.ascender?   ó   € ô ×%Ò% d§i¡iÓ0Ð0r,   c                ó6   • U R                   R                  5       $ r.   )rÅ   Úfz_font_bboxr0   s    r*   r7  Ú	Font.bboxD   s   € à�y‰y×%Ñ%Ó'Ð'r,   c                ó¾   • [         R                  " [         R                  " U R                  R                  R
                  5      5      n[         R                  " U5      $ r.   )r£   r4  Úll_fz_keep_bufferrÅ   rÍ   rù	  Úfz_buffer_extract_copy)r)   r5  s     r*   rù	  ÚFont.bufferH   s<   € ä—.’.¤%×"9Ò"9¸4¿9¹9×;OÑ;O×;VÑ;VÓ"WÓXˆÜ×+Ò+¨WÓ5Ð5r,   c           	     ón  • [         R                  " U5      n/ nU H–  n	[        U	5      n
U(       a4  [         R                  " U R                  U
5      nUS:¼  a  U R                  nO$[         R
                  " U R                  X¤U5      u  p¼UR                  U[         R                  " WXµ5      -  5        M˜     U$ )z@Return tuple of char lengths of unicode 'text' under a fontsize.r   )r£   rÁ  ÚordÚfz_encode_character_scrÅ   Ú!fz_encode_character_with_fallbackrp   rÚ  )r)   r   r   rK  rñ  ÚwmodeÚ
small_capsrJ  r¦   Úchrö  ÚgidrÜ  s                r*   Úchar_lengthsÚFont.char_lengthsM   s”   € ä×1Ò1°(Ó;ˆØˆÛˆBÜ�B“ˆAÞÜ×2Ò2°4·9±9¸aÓ@�Ø˜!“8ØŸ9™9�Døä!×CÒCÀDÇIÁIÈqÐZ^Ó_‘	�Ø�I‰I�h¤×!7Ò!7¸¸cÓ!IÑIÖJñ ð ˆ	r,   c                óB   • [         R                  " U R                  5      $ )z!Return the glyph descender value.)r£   Úfz_font_descenderrÅ   r0   s    r*   r  ÚFont.descender\   s   € ô ×&Ò& t§y¡yÓ1Ð1r,   c                ó`  ^• [         R                  " U R                  R                  5      nU(       d  g [	        U[         R
                  5      (       d   e[        (       a{  UR                  /mU4S jnU" S5      nU" S5      nU" S5      nU" S5      nU" S5      nU" S5      nU" S5      n	U" S5      n
U" S5      nU" S5      nU" S5      nU" S5      nU" S5      n[        (       a  WOUR                  [        (       a  WOUR                  [        (       a  WOUR                  [        (       a  WOUR                  [        (       a  WOUR                  [        (       a  WOUR                  [        (       a  W	OUR                  [        (       a  W
OUR                  [        (       a  WOUR                  [        (       a  WOUR                   [        (       a  WOUR"                  [        (       a  WOUR$                  [        (       a  WOUR&                  [        (       a  WS.$ UR(                  S.$ )Nc                ó:   >• TS   SU -  S-
  -  nTS   U -	  TS'   U$ r‘  r/   )ÚbitsrL   rK   s     €r*   ÚbÚFont.flags.<locals>.bk   s/   ø€ Ø˜‘d˜q D™y¨!™mÑ,�Ø˜‘t˜t‘|��!‘Ø�
r,   r   )ÚmonoÚserifrÎ  rè  Ú
substituteÚstretchz	fake-boldzfake-italicÚopentypezinvalid-bboxræ  zcjk-langrõ  znever-embed)r£   Úll_fz_font_flagsrÅ   rÍ   rC   Úfz_font_flags_tr¢   Úis_monorô  rò  ró  Úft_substituteÚ
ft_stretchÚ	fake_boldÚfake_italicÚhas_opentypeÚinvalid_bboxræ  Úcjk_langrõ  Únever_embed)r)   r  r  r  rô  rò  ró  r   r!  r"  r#  r$  r%  r&  rõ  r'  rK   s                   @r*   rÑ  Ú
Font.flagsa   s—  ø€ ä×"Ò" 4§9¡9×#7Ñ#7Ó8ˆÞØÜ˜1œe×3Ñ3×4Ñ4Ð4Ð4çŠ;à—‘�ˆAõñ ˜“dˆGÙ˜“tˆHÙ˜“dˆGÙ˜!›ˆIÙ˜a›DˆMÙ˜1›ˆJÙ˜!›ˆIÙ˜A›$ˆKÙ˜Q›4ˆLÙ˜Q›4ˆLÙ˜“tˆHÙ�a“DˆEÙ˜A›$ˆKç+6ª;¡¸A¿I¹Iß,7ªK¡¸Q¿Z¹Zß+6ª;¡¸A¿I¹Iß-8ª[¡	¸a¿k¹kß1<²¡À!Ç/Á/ß.9ªk¡
¸q¿|¹|ß-8ª[¡	¸a¿k¹kß/:ª{¡ÀÇÁß0;²¡ÀÇÁß0;²¡ÀÇÁß,7ªK¡¸Q¿U¹Uß,7ªK¡¸Q¿Z¹Zß)4ª¡¸!¿'¹'ß/:ª{ ñð 	ð ABÇÁñð 	r,   c                ó  • [         R                  " U5      nU(       a4  [         R                  " U R                  U5      nUS:¼  a  U R                  nO$[         R                  " U R                  XU5      u  px[         R
                  " WXt5      $ )z2Return the glyph width of a unicode (font size 1).r   )r£   rÁ  r  rÅ   r	  rÚ  )	r)   Úchr_rK  rñ  r
  r  rJ  r  rÜ  s	            r*   Úglyph_advanceÚFont.glyph_advance�   sj   € ä×1Ò1°(Ó;ˆÞÜ×.Ò.¨t¯y©y¸$Ó?ˆCØ�a‹xØ—y‘y�øä×?Ò?ÀÇ	Á	È4ÐY]Ó^‰IˆCÜ×%Ò% d¨CÓ7Ð7r,   c                óT  • [         R                  " U5      nU(       a4  [         R                  " U R                  U5      nUS:¼  a  U R                  nO$[         R                  " U R                  XU5      u  pg[        [         R                  " WU[         R                  " 5       5      5      $ )z1Return the glyph bbox of a unicode (font size 1).r   )r£   rÁ  r  rÅ   r	  r,  Úfz_bound_glyphr}  )r)   ÚcharrK  rñ  r  rJ  r  rÜ  s           r*   Ú
glyph_bboxÚFont.glyph_bbox˜   sx   € ä×1Ò1°(Ó;ˆÞÜ×.Ò.°·	±	¸4Ó@ˆCØ�a‹xØ—y‘y�øä×?Ò?ÀÇÁÈDÐZ^Ó_‰IˆCÜ”E×(Ò(¨$°´U·^²^Ó5EÓFÓGÐGr,   c                óB   • U R                   R                  R                  $ r.   )rÅ   rÍ   r  r0   s    r*   r  ÚFont.glyph_count£   s   € à�y‰y×#Ñ#×/Ñ/Ð/r,   c                ó   • [        U5      $ )z$Return the unicode for a glyph name.)Úglyph_name_to_unicoderÐ  s     r*   r5  ÚFont.glyph_name_to_unicode§   s   € ä$ TÓ*Ð*r,   c                ó"  • U(       a<  [         R                  " U5      n[         R                  " U R                  XU5      u  pxU$ U(       a#  [         R                  " U R                  U5      nU$ [         R
                  " U R                  U5      nU$ )z0Check whether font has a glyph for this unicode.)r£   rÁ  r	  rÅ   r  rÙ  )	r)   r+  rK  rñ  rJ  r  rJ  r  rÜ  s	            r*   Ú	has_glyphÚFont.has_glyph«   sv   € æÜ×5Ò5°hÓ?ˆDÜ×?Ò?ÀÇ	Á	È3ÐX\Ó]‰IˆCð ˆ
ö	 Ü×2Ò2°4·9±9¸cÓB�ð ˆ
ô ×/Ò/°·	±	¸3Ó?�Øˆ
r,   c                óB   • [         R                  " U R                  5      $ r.   )r£   Úfz_font_is_boldrÅ   r0   s    r*   rò  ÚFont.is_bold·   s   € ä×$Ò$ d§i¡iÓ0Ð0r,   c                óB   • [         R                  " U R                  5      $ r.   )r£   Úfz_font_is_italicrÅ   r0   s    r*   ró  ÚFont.is_italic»   s   € ä×&Ò&¨¯	©	Ó2Ð2r,   c                óB   • [         R                  " U R                  5      $ r.   )r£   Úfz_font_is_monospacedrÅ   r0   s    r*   Úis_monospacedÚFont.is_monospaced¿   s   € ä×*Ò*¨D¯I©IÓ6Ð6r,   c                óB   • [         R                  " U R                  5      $ r.   )r£   Úfz_font_is_serifrÅ   r0   s    r*   rô  ÚFont.is_serifÃ   s   € ä×%Ò% t§y¡yÓ1Ð1r,   c                ó   • gra  )rÅ   r£   r  rÍ   r¢   ÚcppyyÚgblÚ"mupdf_mfz_font_flags_ft_substituter   Úll_fz_font_t3_procsÚpdf_font_writing_supported)r)   rÜ  rÑ  rH  r   s        r*   Úis_writableÚFont.is_writableÇ   s   € àr,   c                óF   • [         R                  " U R                  5      nU$ r.   )r£   Úfz_font_namerÅ   rj  s     r*   r   Ú	Font.nameÚ   s   € ä× Ò  §¡Ó+ˆàˆ
r,   c                óx  • U R                   n[        R                  " U5      nSn	[        U[        5      (       d  [        [        5      eU Hg  n
[        U
5      nU(       a  [        R                  " X{5      nUS:¼  a  UnO[        R                  " X{XH5      u  pÍU	[        R                  " WXÅ5      -  n	Mi     X’-  n	U	$ )z1Return length of unicode 'text' under a fontsize.r   )rÅ   r£   rÁ  rC   rè  rÀ  ÚMSG_BAD_TEXTr  r  r	  rÚ  )r)   r   r   rK  rñ  r
  r  ÚthisfontrJ  r¦   r  rö  r  rÜ  s                 r*   Útext_lengthÚFont.text_lengthà   s¥   € à—9‘9ˆÜ×1Ò1°(Ó;ˆØˆÜ˜$¤×$Ñ$Üœ\Ó*Ð*ÛˆBÜ�B“ˆAÞÜ×2Ò2°8Ó?�Ø˜!“8Ø#�Døä!×CÒCÀHÐQWÓ^‘	�Ø”%×(Ò(¨¨sÓ:Ñ:ŠBñ ð 	‰ˆØˆ	r,   c                ó   • [        U5      $ )z$Return the glyph name for a unicode.)Úunicode_to_glyph_name)r)   r  s     r*   rX  ÚFont.unicode_to_glyph_nameó   s   € ä$ RÓ(Ð(r,   c                ó²   • [         R                  " U R                  5      nU Vs/ s H  o"R                  PM     nn[	        U5      n[        U5      nU$ s  snf )z5
Returns sorted list of valid unicodes of a fz_font.
)r£   Úfz_enumerate_font_cmap2rÅ   Úucsr«  Úsorted)r)   Úucs_gidsrh  ÚucssÚucss_uniqueÚucss_unique_sorteds         r*   Úvalid_codepointsÚFont.valid_codepoints÷   sM   € ô ×0Ò0°·±Ó;ˆÙ'Ó(šx˜!—”™xˆÐ(Ü˜$“iˆÜ# KÓ0ÐØ!Ð!ùò )s   ¥Ar$  )
NNNr   Nr¨  r   r   r   r   )r¢  Nr   r   r   )Nr   r   r   )Nr   r   )r2   r3   r4   r5   r\  r‘   rð   ry  r  r7  rù	  r  r  rÑ  r+  r0  r  r5  r8  rò  ró  rB  rô  rM  r   rU  rX  rb  r6   r/   r,   r*   rÚ  rÚ     sL  † òð ØØØØØØØØØô1òf&ð ñ1ó ð1ð ñ(ó ð(ð ñ6ó ð6ôð ñ2ó ð2ð ñ)ó ð)ôV	8ô	Hð ñ0ó ð0ò+ô
ð ñ1ó ð1ð ñ3ó ð3ð ñ7ó ð7ð ñ2ó ð2ð ñó ðð$ ñó ðô
ò&)õ"r,   rÚ  c                  ó    • \ rS rSrS rS rSrg)rÇ  i!  c                ó8   • [        U 5      [        La  g SU l        g r[  )rÉ   rÇ  rö   r0   s    r*   r\  ÚGraftmap.__del__!  s   € Ü�D‹zœXÒ%ØØˆ�r,   c                ó`   • [        U5      n[        R                  " U5      nX0l        SU l        g ra  )rÏ   r£   Úpdf_new_graft_maprÅ   rö   )r)   r2  ÚdstÚmap_s       r*   r‘   ÚGraftmap.__init__	!  s(   € Ü˜sÓ#ˆÜ×&Ò& sÓ+ˆØŒ	Øˆ�r,   rq  N)r2   r3   r4   r5   r\  r‘   r6   r/   r,   r*   rÇ  rÇ  !  s   † òõ
r,   rÇ  c                  óæ   • \ 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 5       r\S 5       r\SS j5       r\S 5       r\S 5       r\S 5       rSS jrSS jrS r\S 5       rSrSrg)ÚLinki!  c                ó$   • U R                  5         g r.   )r÷   r0   s    r*   r\  ÚLink.__del__!  s   € Ø�‰�r,   c                óR   • [        U[        R                  5      (       d   eXl        g r.   )rC   r£   ÚFzLinkrÅ   )r)   rÅ   s     r*   r‘   ÚLink.__init__!  s   € Ü˜4¤§¡×.Ñ.Ð.Ð.Ø�	r,   c                óH   • [        U 5        S[        U R                  5      -   $ ©Nzlink on ©rp  rè  rí   r0   s    r*   rð   ÚLink.__repr__!  ó   € Ü�DÔØœC §¡Ó,Ñ,Ð,r,   c                óH   • [        U 5        S[        U R                  5      -   $ rt  ru  r0   s    r*   ró   ÚLink.__str__!  rw  r,   c                ó¦   • [        USS9nUR                  (       d  g [        R                  " X2S5      nUR                  (       d  g [	        U5      nU$ ©Nr   rÖ  )rÏ   rÍ   r£   r¹  r’  ©r)   r2  r  rb  Úlink_objr  s         r*   Ú_borderÚLink._border !  sE   € Ü˜s¨QÑ/ˆØ�~�~ØÜ×)Ò)¨#°QÓ7ˆØ×"×"ØÜ˜HÓ%ˆØˆr,   c                óÂ   • [        USS9nUR                  (       d  g [        R                  " X2S5      nUR                  (       d  [	        [
        5      e[        U5      nU$ r{  )rÏ   rÍ   r£   r¹  rÄ   r¸  r£  r|  s         r*   Ú_colorsÚLink._colors*!  sM   € Ü˜s¨QÑ/ˆØ�~�~ØÜ×)Ò)¨3°aÓ8ˆØ×"×"ÜœlÓ+Ð+Ü˜XÓ&ˆØˆr,   c                ó    • S U l         SU l        g r[  )rí   rö   r0   s    r*   r÷   ÚLink._erase4!  s   € ØˆŒØˆ�r,   c                ó¨   • [        USS9nUR                  (       d  g [        R                  " XCS5      nUR                  (       d  g [	        XU5      nU$ r{  )rÏ   rÍ   r£   r¹  r�  )r)   r•  r2  r  rb  r}  r  s          r*   Ú
_setBorderÚLink._setBorder8!  sG   € Ü˜s¨QÑ/ˆØ�~�~ØÜ×)Ò)¨#°QÓ7ˆØ×"×"ØÜ ¨XÓ6ˆØˆr,   c                óv   • U R                  U R                  R                  R                  U R                  5      $ r.   )r~  rí   rÅ   r  r0   s    r*   r•  ÚLink.borderB!  ó'   € à�|‰|˜DŸK™K×.Ñ.×3Ñ3°T·Y±YÓ?Ð?r,   c                óv   • U R                  U R                  R                  R                  U R                  5      $ r.   )r�  rí   rÅ   r  r0   s    r*   r  ÚLink.colorsF!  rŠ  r,   c                óà  • [        U S5      (       a  U R                  c  [        S5      eU R                  R                  R                  (       d%  U R                  R                  R                  (       a  [        S5      eU R                  R                  nU R
                  (       d   U R                  R                  S5      (       a  SnOUR                  U R                  5      n[        XU5      $ )z Create link destination details.rí   Núorphaned object: parent is NonerÕ  r)  )
r@   rí   rÄ   rÃ   r¦  r“  r  r8   r”  ÚlinkDest)r)   r2  r  s      r*   rþ	  Ú	Link.destJ!  s©   € ô �4˜×"Ñ" t§{¡{Ñ':ÜÐ>Ó?Ð?Ø�;‰;×Ñ×'×'¨4¯;©;×+=Ñ+=×+J×+JÜÐ;Ó<Ð<Ø�k‰k× Ñ ˆà××˜tŸx™x×2Ñ2°3×7Ñ7Ø‰Cà×"Ñ" 4§8¡8Ó,ˆCä˜ 3Ó'Ð'r,   c                óÐ   • [        U 5        U R                  R                  nUR                  (       d  gUR                  U R                  S5      nUS   S:w  a  [        US   5      $ g)Nr   r¹  r   rò  )rp  rí   r  rÈ  r  r9   )r)   r2  r  s      r*   rÑ  Ú
Link.flagsZ!  sU   € ä�DÔØ�k‰k× Ñ ˆØ�z�zØØ×Ñ˜TŸY™Y¨Ó,ˆØˆQ‰4�6‹>Ü�q˜‘t“9ÐØr,   c                óF  • [        U 5        [        (       a   [        R                  " U R                  5      $ U R                  nUR
                  (       a  UR
                  R                  (       d  g[        [        R                  " UR
                  R                  5      5      $ )zFlag the link as external.F)
rp  r  r   ÚLink_is_externalrÅ   rÍ   r  ré   r£   Úfz_is_external_link©r)   Ú	this_links     r*   r“  ÚLink.is_externale!  sk   € ô 	�DÔßŠ;Ü×)Ò)¨4¯9©9Ó5Ð5Ø—I‘Iˆ	Ø×#×#¨9×+?Ñ+?×+C×+CØÜ”U×.Ò.°	×0DÑ0D×0HÑ0HÓIÓJÐJr,   c                ó  • U R                   R                  (       d  g[        U 5         U R                   R                  5       nUR                  (       d  g[        U5      nU(       Ga  SUl        U R                  Ul	        XR                  R                  [        U5      '   U R                  S:”  a¿  U R                  R                  5        Vs/ s H   o"S   [        R                  :X  d  M  US   PM"     nnU R                  R                  5        Vs/ s H   o"S   [        R                  :X  d  M  US   PM"     nnUR!                  U R                  5      nX5S-      Ul        XES-      Ul        U$ SUl        SUl        U$ s  snf s  snf )z
Next link.Nr   Tr   r   ra   )rÅ   rÍ   rp  r  r   Ú	Link_nextr_  rm  rö   rí   rZ  r[  r  rz  r£   r¥  r  )r)   r  re  Ú
link_xrefsÚlink_idsrä  s         r*   r_  Ú	Link.nextp!  s@  € ð �y‰y×#×#ØÜ�DÔØð —)‘)—.‘.Ó"ˆCØ�~�~ØÜ�C‹jˆßØˆCŒKØŸ™ˆCŒJØ.1�J‰J×"Ñ"¤2 c£7Ñ+Ø�y‰y˜1‹}Ø,0¯K©K×,CÑ,CÔ,EÓfÒ,E qÈ1ÉÔQV×QeÑQeÑIe›d˜a œdÑ,E�
ÐfØ*.¯+©+×*AÑ*AÔ*CÓdÒ*C QÈÁtÌu×OcÑOcÑGc›D˜A˜aœDÑ*C�ÐdØ ×&Ñ& t§y¡yÓ1�Ø%¨A¡gÑ.�”Ø!¨¡'Ñ*�”ð ˆ
ð �”Ø�”Øˆ
ùò gùÚds   ÃF Ã+	F ÄFÄ0	Fc                óÞ   • [        U 5        U R                  b  U R                  R                  (       d  [        S5      e[	        U R                  R                  5       5      n[        U5      nU$ )zRectangle ('hot area').z"self.this.m_internal not available)rp  rÅ   rÍ   rl   rq  rý   r,  rÑ  s     r*   rý   Ú	Link.rectŒ!  sS   € ô 	�DÔð �9‰9Ñ D§I¡I×$8×$8ÜÐAÓBÐBÜ˜tŸy™yŸ~™~Ó/Ó0ˆÜ�3‹iˆØˆ
r,   Nc                ó¤   • [        U5      [        La  X$US.nU R                  XR                  R                  R                  U R
                  5      $ )N)r‰  rŠ  r‹  )rÉ   r:   r†  rí   rÅ   r  )r)   r•  r‰  r‹  rŠ  s        r*   r‘  ÚLink.set_border˜!  s=   € Ü�‹<œtÒ#Ø$ÀÑGˆFØ�‰˜v§{¡{×'9Ñ'9×'>Ñ'>ÀÇ	Á	ÓJÐJr,   c                óè  • [        U 5        U R                  R                  n[        U5      [        La  X2S.nUR	                  S5      nUR	                  S5      nUb  [        S5        U/ S4;   a  UR                  U R                  SS5        g[        US	5      (       a  [        U5      /n[        U5        [        U5      S
;   d   eS[        U5       S3nUR                  U R                  SU5        g)zSet border colors.r”  r  r•  Nz!warning: links have no fill colorr/   rþ  r–  r—  r˜  r™  rš  )rp  rí   rÉ   r:   r=   rw   r›  r  r@   rœ  r�  r<   r·   )r)   r  r•  r  r2  rŸ  s         r*   r   ÚLink.set_colors�!  sÙ   € ä�DÔØ�k‰k× Ñ ˆÜ�‹<œtÒ#Ø"Ñ5ˆFØ�z‰z˜&Ó!ˆØ—‘˜HÓ%ˆØÑÜÐ7Ô8Ø�b˜"�XÓØ×Ñ˜TŸY™Y¨¨TÔ2ØÜ�6˜;×'Ñ'Ü˜F“m�_ˆFÜ�6ÔÜ�6‹{˜iÓ'Ð'Ð'Ø”	˜&Ó!Ð" !Ð$ˆØ×Ñ˜Ÿ™ C¨Õ+r,   c                ó  • [        U 5        U R                  R                  nUR                  (       d  [        S5      e[	        U5      [
        La  [        S5      eUR                  U R                  S[        U5      5        g )Nr}  zbad 'flags' valuer¹  )	rp  rí   r  rÄ   rÉ   r9   r›  r  rè  )r)   rÑ  r2  s      r*   r¤  ÚLink.set_flags±!  s`   € Ü�DÔØ�k‰k× Ñ ˆØ�z�zÜ˜[Ó)Ð)Ü�E‹{œcÒ!ÜÐ0Ó1Ð1Ø×Ñ˜Ÿ™ C¬¨U«Ô4Ør,   c                óÂ   • [         (       a   [        R                  " U R                  5      $ U R                  nUR                  (       a  UR                  R
                  $ S$ )zUri string.ra   )r  r   Úlink_urirÅ   rÍ   r  r–  s     r*   r  ÚLink.uri»!  sD   € ÷ Š;Ü—>’> $§)¡)Ó,Ð,Ø—I‘Iˆ	Ø+4×+?×+?ˆy×#Ñ#×'Ñ'ÐGÀRÐGr,   r¨  rp  r¬  )Nr   NNrs  )r2   r3   r4   r5   r\  r‘   rð   ró   r~  r�  r÷   r†  ry  r•  r  rþ	  rÑ  r“  r_  rý   r‘  r   r¤  r  r×   r6   r/   r,   r*   rm  rm  !  sé   † òòò-ò-òòòòð ñ@ó ð@ð ñ@ó ð@ð ñ(ó ð(ð óó ðð ñKó ðKð ñó ðð6 ñ	ó ð	ôKô
,ò(ð ñHó ðHð ƒDr,   rm  c                  óÊ   • \ rS rSrS rS rS rS rS rSSSSSSS.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S jr\S 5       rS rS rS rS r\
r\r\rSrg)r€  iÇ!  c           	     óp   • [         R                  " [        U  Vs/ s H  oU-  PM	     sn5      5      $ s  snf r.   ©ÚmathÚsqrtÚsum©r)   rö  s     r*   Ú__abs__ÚMatrix.__abs__É!  ó*   € Ü�yŠyœ©4Ó0ª4 a œc©4Ñ0Ó1Ó2Ð2ùÒ0ó   š3c           
     óô  • [        US5      (       a^  [        U R                  U-   U R                  U-   U R                  U-   U R
                  U-   U R                  U-   U R                  U-   5      $ [        U5      S:w  a  [        S5      e[        U R                  US   -   U R                  US   -   U R                  US   -   U R
                  US   -   U R                  US   -   U R                  US	   -   5      $ ©
Nr—  r§  úMatrix: bad seq lenr   r   r   r   rr  r   ©
r@   r€  r!   r  rö  rD  ri  r  r<   rÄ   ©r)   rŒ  s     r*   Ú__add__ÚMatrix.__add__Ì!  óÔ   € Ü�1�k×"Ñ"Ü˜$Ÿ&™& 1™* d§f¡f¨q¡j°$·&±&¸1±*ØŸ&™& 1™* d§f¡f¨q¡j°$·&±&¸1±*ó>ð >äˆq‹6�Q‹;ÜÐ2Ó3Ð3Ü�d—f‘f˜q ™t‘m T§V¡V¨a°©d¡]°D·F±F¸Q¸q¹T±MØŸ&™& 1 Q¡4™-¨¯©°!°A±$©¸¿¹ÀÀ1Á¹óGð 	Gr,   c                ód   • [        U 5      [        U 5      s=:H  =(       a
    S:H  (       + $ s  (       + $ rŒ   ©r!  rÅ  r0   s    r*   rê   ÚMatrix.__bool__Õ!  ó)   € Ü˜“I¤ T£×/Ó/¨aÑ/Ô0Ð0Ñ/Ô0Ð0r,   c                ób   • [        US5      (       d  g[        U5      S:H  =(       a	    X-
  (       + $ )NrÏ  Fr§  ©r@   r<   )r)   r�  s     r*   Ú__eq__ÚMatrix.__eq__Ø!  s*   € Ü�s˜I×&Ñ&ØÜ�3‹x˜1‰}×1 d¡jÔ!1Ð1r,   c                ó�   • U R                   U R                  U R                  U R                  U R                  U R
                  4U   $ r.   ©r!   r  rö  rD  ri  r  r�  s     r*   r�  ÚMatrix.__getitem__Ý!  s2   € Ø—‘˜Ÿ™ §¡¨¯©°·±¸¿¹Ð?ÀÑBÐBr,   NrÅ  c               ó@  • U(       d,  S=U l         =U l        =U l        =U l        =U l        U l        GO´[        U5      S:”  a  [        S5      e[        U5      S:X  a7  [        [        U5      u  U l         U l        U l        U l        U l        U l        GOT[        U5      S:X  Gan  [        US   [        R                  5      (       az  US   R                   U l         US   R                  U l        US   R                  U l        US   R                  U l        US   R                  U l        US   R
                  U l        GO¨[        US   S5      (       a…  [        R                  " US   5      n[!        [        R"                  " U5      S5      n	[!        [        R$                  " U5      S5      n
U	=U l         U l        X l        U
* U l        S=U l        U l        GO[        [        US   5      u  U l         U l        U l        U l        U l        U l        OÖ[        U5      S:X  d  [        U5      S	:X  aO  US   S:X  aF  [        US   5      SS[        US   5      SS4u  U l         U l        U l        U l        U l        U l        Oi[        U5      S	:X  aO  US   S:X  aF  S
[        US   5      [        US   5      S
SS4u  U l         U l        U l        U l        U l        U l        O[        S5      eUb  Xl         Ub  X l        Ub  X0l        Ub  X@l        Ub  XPl        Ub  X`l        gg)aZ  
Matrix() - all zeros
Matrix(a, b, c, d, e, f)
Matrix(zoom-x, zoom-y) - zoom
Matrix(shear-x, shear-y, 1) - shear
Matrix(degree) - rotate
Matrix(Matrix) - new copy
Matrix(sequence) - from 'sequence'
Matrix(mupdf.FzMatrix) - from MuPDF class wrapper for fz_matrix.

Explicit keyword args a, b, c, d, e, f override any earlier settings if
not None.
rÓ  r§  r¶  r   r   r—  r   r   r   rÔ  zMatrix: bad argsN)r!   r  rö  rD  ri  r  r<   rÄ   r  rœ  rC   r£   r}  r@   r¬  ÚradiansÚroundÚcosÚsin)r)   r!   r  rö  rD  ri  r  r  ÚthetaÚc_Ús_s              r*   r‘   ÚMatrix.__init__à!  s‰  € ö ØBEÐEˆDŒFÐE�T”VÐE˜dœfÐE t¤vÐE°´¸¾Ü�‹Y˜‹]ÜÐ2Ó3Ð3Ü�‹Y˜!‹^Ü=@ÄÈÓ=MÑ:ˆDŒF�D”F˜DœF D¤F¨D¬F°D¶FÜ�‹Y˜!Œ^Ü˜$˜q™'¤5§>¡>×2Ñ2Ø˜a™Ÿ™�”Ø˜a™Ÿ™�”Ø˜a™Ÿ™�”Ø˜a™Ÿ™�”Ø˜a™Ÿ™�”Ø˜a™Ÿ™�–Ü˜˜a™ +×.Ñ.ÜŸš T¨!¡WÓ-�Üœ4Ÿ8š8 E›?¨AÓ.�Üœ4Ÿ8š8 E›?¨AÓ.�Ø"$Ð$�”˜œØ”Ø˜�”Ø"%Ð%�”˜žäADÄUÈDÐQRÉGÓATÑ>�”˜œ ¤¨¬°´¸½Ü�‹Y˜!‹^œs 4›y¨A›~°$°q±'¸Q³,Ü=BÀ4ÈÁ7»^Ø�Sœ%  Q¡›.¨#¨sð>3Ñ:ˆDŒF�D”F˜DœF D¤F¨D¬F°DµFä�‹Y˜!‹^  Q¡¨1£Ø=@Ü�d˜1‘g“¤ d¨1¡g£°°S¸#ð>>Ñ:ˆDŒF�D”F˜DœF D¤F¨D¬F°DµFô Ð/Ó0Ð0ð ‰= QœFØ‰= QœFØ‰= QœFØ‰= QœFØ‰= QœFØ‰= Q�Fˆ=r,   c                ó<   • [        5       nUR                  U 5        U$ )zCalculate inverted matrix.)r€  Úinvert)r)   Úm1s     r*   Ú
__invert__ÚMatrix.__invert__"  s   € ä‹XˆØ
�	‰	�$ŒØˆ	r,   c                ó   • g)Nr§  r/   r0   s    r*   rÏ  ÚMatrix.__len__"  ó   € Ør,   c           	     ó  • [        US5      (       a^  [        U R                  U-  U R                  U-  U R                  U-  U R
                  U-  U R                  U-  U R                  U-  5      $ [        SS5      nUR                  X5      $ )Nr—  r   )	r@   r€  r!   r  rö  rD  ri  r  Úconcat)r)   rŒ  rÒ  s      r*   Ú__mul__ÚMatrix.__mul__ "  ss   € Ü�1�k×"Ñ"Ü˜$Ÿ&™& 1™* d§f¡f¨q¡j°$·&±&¸1±*ØŸ&™& 1™* d§f¡f¨q¡j°$·&±&¸1±*ó>ð >ä�A�a‹[ˆØ�y‰y˜Ó!Ð!r,   c                ó¦   • [        U R                  * U R                  * U R                  * U R                  * U R
                  * U R                  * 5      $ r.   )r€  r!   r  rö  rD  ri  r  r0   s    r*   Ú__neg__ÚMatrix.__neg__'"  s;   € Ü�t—v‘v�g §¡˜w¨¯©¨°$·&±&°¸4¿6¹6¸'ÀDÇFÁFÀ7ÓKÐKr,   c                ód   • [        U 5      [        U 5      s=:H  =(       a
    S:H  (       + $ s  (       + $ rŒ   r½  r0   s    r*   Ú__nonzero__ÚMatrix.__nonzero__*"  r¿  r,   c                ó   • [        U 5      $ r.   )r€  r0   s    r*   Ú__pos__ÚMatrix.__pos__-"  s   € Ü�d‹|Ðr,   c                ó0   • S[        [        U 5      5      -   $ )Nr€  ©rè  r¶   r0   s    r*   rð   ÚMatrix.__repr__0"  s   € Øœ#œe D›kÓ*Ñ*Ð*r,   c                óÊ   • [        U5      nUS:X  a  X l        g US:X  a  X l        g US:X  a  X l        g US:X  a  X l        g US:X  a  X l        g US:X  a  X l        g [        S5      e)Nr   r   r   r   rr  r   úindex out of range)rœ  r!   r  rö  rD  ri  r  rž  ©r)   rh  rK   s      r*   Ú__setitem__ÚMatrix.__setitem__3"  sƒ   € Ü�!‹HˆØ�!‹V˜a”Vð 	ð �!‹V˜a”Vð 	ð �!‹V˜a”Vð 	ð �!‹V˜a”Vð
 	ð	 �!‹V˜a”Vð 	ð �!‹V˜a”Vð 	ô Ð1Ó2Ð2r,   c           
     óô  • [        US5      (       a^  [        U R                  U-
  U R                  U-
  U R                  U-
  U R
                  U-
  U R                  U-
  U R                  U-
  5      $ [        U5      S:w  a  [        S5      e[        U R                  US   -
  U R                  US   -
  U R                  US   -
  U R
                  US   -
  U R                  US   -
  U R                  US	   -
  5      $ rµ  r·  r¸  s     r*   Ú__sub__ÚMatrix.__sub__?"  r»  r,   c           	     ó~  • [        US5      (       ap  [        U R                  S-  U-  U R                  S-  U-  U R                  S-  U-  U R
                  S-  U-  U R                  S-  U-  U R                  S-  U-  5      $ [        U5      S   nU(       d  [        S5      e[        SS5      nUR                  X5      $ ©Nr—  rÔ  r   zmatrix not invertible)r@   r€  r!   r  rö  rD  ri  r  Úutil_invert_matrixÚZeroDivisionErrorrÙ  )r)   rŒ  rÒ  Úm2s       r*   Ú__truediv__ÚMatrix.__truediv__H"  s«   € Ü�1�k×"Ñ"Ü˜$Ÿ&™& 2™+ a™-¨¯©°"©°Q©¸¿¹À¹ÀA¹ØŸ&™& 2™+ a™-¨¯©°"©°Q©¸¿¹À¹ÀA¹óGð Gä Ó" 1Ñ%ˆÞÜ#Ð$;Ó<Ð<Ü�A�a‹[ˆØ�y‰y˜Ó"Ð"r,   c                ó¾   • [        U5      [        U5      s=:X  a  S:X  d  O  [        S5      e[        X5      u  U l        U l        U l        U l        U l        U l        U $ )z.Multiply two matrices and replace current one.r§  r¶  )	r<   rÄ   Úutil_concat_matrixr!   r  rö  rD  ri  r  )r)   ÚoneÚtwos      r*   rÙ  ÚMatrix.concatR"  sK   € ä�3‹xœ3˜s›8Õ( qÕ(ÜÐ2Ó3Ð3Ü9KÈCÓ9UÑ6ˆŒ�”˜œ ¤¨¬°´Øˆr,   c                ó    • Uc  [        U 5      nO[        U5      nUS   S:X  a  gUS   u  U l        U l        U l        U l        U l        U l        g)zmCalculate the inverted matrix. Return 0 if successful and replace
current one. Else return 1 and do nothing.
r   r   )rò  r!   r  rö  rD  ri  r  )r)   r3  ri  s      r*   rÑ  ÚMatrix.invertY"  sP   € ð ‰;Ü$ TÓ*‰Cä$ SÓ)ˆCØˆq‰6�Q‹;ØØ9<¸Q¹Ñ6ˆŒ�”˜œ ¤¨¬°´Ør,   c                ó  • [        U R                  5      [        :  =(       a    [        U R                  5      [        :  =(       d?    [        U R                  5      [        :  =(       a    [        U R
                  5      [        :  $ )z,True if rectangles are mapped to rectangles.)r&  r  ÚEPSILONrö  r!   rD  r0   s    r*   Úis_rectilinearÚMatrix.is_rectilinearf"  sR   € ô �D—F‘F“œgÑ%×?¬#¨d¯f©f«+¼Ñ*?÷ >Ü�—‘‹[œ7Ñ"×<¤s¨4¯6©6£{´WÑ'<ð	>r,   c                óV  • [        U5      nUS:  a  US-  oS:  a  M  US:¼  a  US-  oS:¼  a  M  [        SU-
  5      [        :  a   U $ [        SU-
  5      [        :  aL  U R                  nU R                  nU R
                  U l        U R                  U l        U* U l        U* U l        U $ [        SU-
  5      [        :  aJ  U R                  * U l        U R                  * U l        U R
                  * U l        U R                  * U l        U $ [        SU-
  5      [        :  aJ  U R                  nU R                  nU R
                  * U l        U R                  * U l        X l        X0l        U $ [        R                  " U5      n[        R                  " U5      n[        R                  " U5      nU R                  nU R                  nXb-  XPR
                  -  -   U l        Xc-  XPR                  -  -   U l        U* U-  X`R
                  -  -   U l        U* U-  X`R                  -  -   U l        U $ )z2Calculate pre rotation and replace current matrix.r   rí  g     €V@g     €f@g     àp@)rœ  r&  rÿ  r!   r  rö  rD  r¬  rÈ  rË  rÊ  )r)   rÌ  r!   r  ÚradrŸ  rö  s          r*   Ú	prerotateÚMatrix.prerotatel"  sØ  € ä�e“ˆØ�a‹i˜ #™˜�a�iØ�s‹l˜E S™L˜E�s�lÜˆq�5‰y‹>œGÓ#ØðF ˆôC �˜‘Ó¤Ó(Ø—‘ˆAØ—‘ˆAØ—V‘VˆDŒFØ—V‘VˆDŒFØ�RˆDŒFØ�RˆDŒFð6 ˆô3 �˜‘Ó¤'Ó)Ø—f‘f�WˆDŒFØ—f‘f�WˆDŒFØ—f‘f�WˆDŒFØ—f‘f�WˆDŒFð* ˆô' �˜‘Ó¤'Ó)Ø—‘ˆAØ—‘ˆAØ—f‘f�WˆDŒFØ—f‘f�WˆDŒFØŒFØŒFð ˆô —,’,˜uÓ%ˆCÜ—’˜“ˆAÜ—’˜“ˆAØ—‘ˆAØ—‘ˆAØ‘U˜Q§¡™ZÑ'ˆDŒFØ‘U˜Q§¡™ZÑ'ˆDŒFØ�B˜‘F˜Q§¡™ZÑ'ˆDŒFØ�B˜‘F˜Q§¡™ZÑ'ˆDŒFàˆr,   c                óÚ   • [        U5      n[        U5      nU =R                  U-  sl        U =R                  U-  sl        U =R                  U-  sl        U =R                  U-  sl        U $ )z1Calculate pre scaling and replace current matrix.©rœ  r!   r  rö  rD  )r)   ÚsxÚsys      r*   ÚprescaleÚMatrix.prescale—"  sM   € ä�2‹YˆÜ�2‹YˆØ�Š�"‰�Ø�Š�"‰�Ø�Š�"‰�Ø�Š�"‰�Øˆr,   c                ó@  • [        U5      n[        U5      nU R                  U R                  pCU =R                  X R                  -  -  sl        U =R                  X R                  -  -  sl        U =R                  X-  -  sl        U =R                  X-  -  sl        U $ )z2Calculate pre shearing and replace current matrix.r  )r)   r!  rK   r!   r  s        r*   ÚpreshearÚMatrix.preshear¡"  sn   € ä�!‹HˆÜ�!‹HˆØ�v‰v�t—v‘vˆ1Ø�Š�!—f‘f‘*Ñ�Ø�Š�!—f‘f‘*Ñ�Ø�Š�!‘%‰�Ø�Š�!‘%‰�Øˆr,   c                óò   • [        U5      n[        U5      nU =R                  XR                  -  X R                  -  -   -  sl        U =R                  XR
                  -  X R                  -  -   -  sl        U $ )z5Calculate pre translation and replace current matrix.)rœ  ri  r!   rö  r  r  rD  )r)   ÚtxÚtys      r*   ÚpretranslateÚMatrix.pretranslate¬"  sW   € ä�2‹YˆÜ�2‹YˆØ�Š�"—v‘v‘+ §V¡V¡Ñ+Ñ+�Ø�Š�"—v‘v‘+ §V¡V¡Ñ+Ñ+�Øˆr,   r.   ) r2   r3   r4   r5   r°  r¹  rê   rÂ  r�  r‘   rÓ  rÏ  rÚ  rÝ  rà  rã  rð   rë  rî  rõ  rÙ  rÑ  ry  r   r  r
  r  r  Ú__inv__Ú__div__Únormr6   r/   r,   r*   r€  r€  Ç!  sª   † ò3òGò1ò2ò
Cð !%¨°¸ÀÈõ 5'ònòò"òLò1òò+ò
òGò#òôð ñ>ó ð>ò
)òVò	òð €GØ€GØƒDr,   r€  c                  ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
ÚIdentityMatrixi¹"  z"Identity matrix [1, 0, 0, 1, 0, 0]c                ó   • [        S5      $ )N)r   r   r   r   r   r   )Úhashr0   s    r*   Ú__hash__ÚIdentityMatrix.__hash__¼"  s   € Ü�MÓ"Ð"r,   c                ó2   • [         R                  U SS5        g )NrÔ  )r€  r‘   r0   s    r*   r‘   ÚIdentityMatrix.__init__¿"  s   € Ü�‰˜˜c 3Õ'r,   c                ó   • g)Nz,IdentityMatrix(1.0, 0.0, 0.0, 1.0, 0.0, 0.0)r/   r0   s    r*   rð   ÚIdentityMatrix.__repr__Â"  s   € Ø=r,   c                óx   • US;   a  SU R                   U'   g US;   a  SU R                   U'   g X R                   U'   g )NÚadrÔ  ÚbcefrÓ  )r¨  )r)   r   r¹   s      r*   Ú__setattr__ÚIdentityMatrix.__setattr__Å"  s8   € Ø�4‹<Ø"%ˆD�M‰M˜$ÒØ�V‹^Ø"%ˆD�M‰M˜$Òà"'�M‰M˜$Òr,   c                 ó   • [        S5      e)NzIdentity is readonly)ÚNotImplementedError)r  s    r*   Ú	checkargsÚIdentityMatrix.checkargsÍ"  s   € Ü!Ð"8Ó9Ð9r,   r/   N)r2   r3   r4   r5   Ú__doc__r  r‘   rð   r$  r(  r6   r/   r,   r*   r  r  ¹"  s   † Ù,ò#ò(ò>ò(õ:r,   r  c                  ó"   • \ rS rSrSrSS jrSrg)r�  iÓ"  z#link or outline destination detailsNc           	     ó
  ^ • UR                   nU(       + nST l        ST l        ST l        ST l        ST l        [        T l        [        SS5      T l	        [        5       T l        ST l        UR                  T l        [        SS5      T l        UR                  T l        U 4S jnS nU(       aN  T R                  R!                  S5      (       d.  SUS   S-    S	[#        US   5       S
[#        US   5       3T l        UR                   (       a  ST l        [$        T l        T R                  (       d  ST l        [        T l        U(       Ga=  T R                  (       Ga+  T R                  R'                  SS5      T l        T R                  R!                  S5      (       GaÇ  [(        T l        [*        R,                  " ST R                  5      nU(       a„  [/        UR1                  S5      5      S-
  T l        [        [3        UR1                  S5      5      [3        UR1                  S5      5      5      T l	        T R                  [4        -  [6        -  T l        GO2[*        R,                  " ST R                  5      nU(       a#  [/        UR1                  S5      5      S-
  T l        Oç[8        T l        [*        R,                  " ST R                  5      nU(       d   eU(       an  U(       ag  U" UR1                  S5      5      n	UR;                  5       R=                  U	5      T l        T R                  c  [        5       T l        U	T R                  S'   O=U" T R                  SS  5      T l        O"[8        T l        U" T R                  5      T l        UR                   (       GaM  T R                  (       d  GO:T R                  R!                  S5      (       aå  T R                  SS  T l        T R                  R!                  S5      (       a  T R                  SS  T l        ST l        ST l        [>        T l        T R                  RA                  S5      n
[C        U
5      S:X  aY  U
S   R!                  S5      (       a@  [D        T l        U
S   T l        [/        U
S   RA                  S5      S   SS  5      S-
  T l        O5ST R                  ;   a  ST l        [$        T l        OST l        [>        T l        [G        T R                  [        5      (       d   eg )Nra   r   Fc                ó¼   >• TR                   SS  R                  S5      n[        5       nU H,  nUR                  S5      nUS:¼  a  X4S-   S  X#S U '   M(  S X#'   M.     U$ )Nr   Ú&r   r   )r  r;   r:   r§   )r  rG   rL   rH   Úeqr)   s        €r*   Úuri_to_dictÚ&linkDest.__init__.<locals>.uri_to_dictæ"  se   ø€ Ø—H‘H˜Q˜R�L×&Ñ& sÓ+ˆEÜ“&ˆCÛ�Ø—Y‘Y˜s“^�Ø˜“7Ø%)¨Q©$¨% [�C˜S˜b˜	“Nà $�C“Iñ ð ˆJr,   c           	     ó²   • U R                  SS5      nUR                  S5      nUS   nUSS  H%  nUSS nU[        [        USS	95      -  nX#SS -  nM'     U$ )
z'Unescape '%AB' substrings to chr(0xAB).z%%z%25Ú%r   r   Nr   r*  )Úbase)r  r;   r+  r9   )r   r;   ri  rH   Úpieces        r*   ÚunescapeÚ#linkDest.__init__.<locals>.unescapeñ"  so   € à—L‘L  uÓ-ˆEØ—K‘K Ó$ˆEØ˜A‘hˆGØ˜a˜b›	�Ø˜R˜a˜�Øœ3œs 5¨rÑ2Ó3Ñ3�Ø  ˜8Ñ#’ñ "ð ˆNr,   r)  z#page=r   z&zoom=0,r   r   r¨  z	&zoom=nanz&zoom=0z7^#page=([0-9]+)&zoom=([0-9.]+),(-?[0-9.]+),(-?[0-9.]+)$r   rr  z^#page=([0-9]+)$z^#nameddest=(.*)Ú	nameddestzfile:r   z//zpage=r.  rd   T)$r“  rþ	  Ú	file_specrÑ  Úis_mapÚis_urirÜ
  r  r#  Últr:   rÜ  Ú
new_windowr×   rµ  r  r8   r·   r  r  r	  Úrer�  r9   Úgrouprœ  ÚLINK_FLAG_L_VALIDÚLINK_FLAG_T_VALIDÚ
LINK_NAMEDr
  r=   r  r;   r<   r  rC   )r)   r  ÚrlinkrÊ   ÚisExtÚisIntr0  r6  rŒ  rÜ  Úftabs   `          r*   r‘   ÚlinkDest.__init__Ö"  s­  ø€ Ø—‘ˆØ”	ˆØˆŒ	ØˆŒØˆŒ
ØˆŒØˆŒÜˆŒ	Ü˜˜1“+ˆŒÜ“VˆŒ
ØˆŒØ—H‘HˆŒ	Ü˜˜1“+ˆŒØ—7‘7ˆŒõ		ò		ö ˜Ÿ™×,Ñ,¨S×1Ñ1Ø  a¡¨1¡˜~¨X´iÀÀaÁÓ6IÐ5JÈ!ÌIÐV[Ð\]ÑV^ÓL_ÐK`ÐaˆDŒHØ�?�?ØˆDŒIÜ ˆDŒIØ�x�xØˆDŒIÜ!ˆDŒIß�T—X—X�XØ—x‘x×'Ñ'¨°YÓ?ˆDŒHØ�x‰x×"Ñ" 3×'Ò'Ü%�”	Ü—H’HÐVÐX\×X`ÑX`Óa�ÞÜ # A§G¡G¨A£J£°!Ñ 3�D”IÜ#¤E¨1¯7©7°1«:Ó$7¼¸q¿w¹wÀq»zÓ9JÓK�D”GØ!%§¡Ô.?Ñ!?ÔBSÑ!S�D–JäŸšÐ!3°T·X±XÓ>�AÞÜ$'¨¯©°«
£O°aÑ$7˜�	ä$.˜œ	ÜŸHšHÐ%7¸¿¹ÓB˜Þ'˜˜xÞ#®Ù$,¨Q¯W©W°Q«ZÓ$8˜EØ)1×)?Ñ)?Ó)A×)EÑ)EÀeÓ)L˜DœJØ#Ÿz™zÑ1ô .2«V ¤
Ø6;˜DŸJ™J {Ò3á)4°T·X±X¸a¸b°\Ó)B˜D�Jä&�”	Ù(¨¯©Ó2�”
Ø�?�?ˆ?Ø—8—8ÙØ—‘×$Ñ$ W×-Ñ-Ø!%§¡¨!¨" �”Ø—>‘>×,Ñ,¨T×2Ñ2Ø%)§^¡^°A°BÐ%7�D”NØ#�”Ø�”Ü'�”	Ø—~‘~×+Ñ+¨CÓ0�Ü�t“9 “>Ø˜A‘w×)Ñ)¨'×2Ñ2Ü$.˜œ	Ø)-¨a©˜œÜ$'¨¨Q©¯©°cÓ(:¸1Ñ(=¸a¸bÐ(AÓ$BÀQÑ$F˜œ	øØ˜Ÿ™“Ø"�”Ü$�•	à"�”Ü'�”	Ü˜$Ÿ*™*¤d×+Ñ+Ð+Ñ+r,   )rþ	  r9  rÑ  r:  r;  r  r<  rÜ  r=  r×   rµ  r  r.   ©r2   r3   r4   r5   r*  r‘   r6   r/   r,   r*   r�  r�  Ó"  s   † Ù-÷b,r,   r�  c                  ón   • \ 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SS jrSrg)r\  i:#  z.
Class describing a PDF form field ("widget")
c                ó¶  • 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        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        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        S U l        S U l        S U l        SU l        g )NrJ
  r   ©r   r   r   ÚHelvra   )r)  Úborder_styleÚborder_widthÚborder_dashesÚchoice_valuesÚ	rb_parentÚ
field_nameÚfield_labelÚfield_valueÚfield_flagsÚfield_displayÚ
field_typeÚfield_type_stringr`  Úbutton_captionÚ	is_signedrþ   Ú	text_fontÚtext_fontsizeÚtext_maxlenÚtext_formatÚ_text_darñ  Úscript_strokeÚscript_formatÚscript_changeÚscript_calcÚscript_blurÚscript_focusrý   r  r0   s    r*   r‘   ÚWidget.__init__?#  sï   € Ø ˆÔØˆÔØˆÔØ!ˆÔØ!ˆÔØˆŒàˆŒØˆÔØˆÔØˆÔØˆÔØˆŒØ!%ˆÔàˆŒØ"ˆÔØˆŒØ#ˆŒØˆŒØˆÔØˆÔØˆÔØˆŒàˆŒØ!ˆÔØ!ˆÔØ!ˆÔØˆÔØˆÔØ ˆÔàˆŒ	Øˆ�	r,   c                ó<   • SU R                    SU R                   S3$ )NzWidget:(field_type=z script=rë  )rX  rñ  r0   s    r*   rð   ÚWidget.__repr__d#  s#   € Ø$ T×%;Ñ%;Ð$<¸HÀTÇ[Á[ÀMÐQRÐSÐSr,   c                óÂ   • U R                   (       d  SU l         gSnU H7  nU R                   R                  5       UR                  5       :X  d  M1  X l           g   SU l         g)zAEnsure text_font is from our list and correctly spelled.
        rL  N)ÚCourÚTiRorL  ÚZaDb)r[  ré  )r)   Úvalid_fontsr  s      r*   Ú_adjust_fontÚWidget._adjust_fontg#  sS   € ð �~�~Ø#ˆDŒNØØ6ˆÛˆAØ�~‰~×#Ñ#Ó%¨¯©«Õ2Ø!"”Ùñ ð  ˆŒØr,   c           	     ó  • U R                   [        SS5      ;  a  [        S5      eU R                   [        R                  :X  aÆ  U R
                  S;  aµ  [        U S5      (       a£  U R                  R                  nUR                  U R                  S5      u  p#US:X  ah  [        [        [        USS R                  S	S
5      R                  5       5      5      nU H'  nXPR                  :w  d  M  UR                  USS5        M)     ggggg)z Any widget type checks.
        r   r   zbad field type)FÚOffrí   zParent/Kidsr
  r¨  rK  ra   ÚASz/OffN)rW  rT  rÄ   r£   ÚPDF_WIDGET_TYPE_RADIOBUTTONrT  r@   rí   rÈ  r  r¶   r  r9   r  r;   r›  )r)   r2  Ú	kids_typeÚ
kids_valuerí  r  s         r*   Ú_checkerÚWidget._checkeru#  s÷   € ð �?‰?¤%¨¨1£+Ó-ÜÐ-Ó.Ð.ð �?‰?œe×?Ñ?Ó?ÀD×DTÑDTÐ\jÓDjÔovÐw{ð  ~F÷  pGñ  pGð —+‘+×$Ñ$ˆCØ$'×$4Ñ$4°T·Y±YÀÓ$NÑ!ˆIØ˜GÓ#Üœc¤# z°!°BÐ'7×'?Ñ'?ÀÀbÓ'I×'OÑ'OÓ'QÓRÓS�Û!�DØŸy™yÕ(Ø×(Ñ(¨¨t°VÖ<ò "ð $ð pGÐDjÐ?r,   c                óþ  • U R                   (       d  gSnSnSnU R                   R                  5       n[        U5       Hž  u  pVUS:X  a.  XES-
     SS n[        XES-
     5      nS=XE'   =XES-
  '   XES-
  '   M9  US	:X  a  [        XES-
     5      /nS=XE'   XES-
  '   M]  US
:X  d  Me  XES-
  U  Vs/ s H  n[        U5      PM     nnS=XE'   =XES-
  '   =XES-
  '   XES-
  '   M      Xl        X l        X0l        SU l         gs  snf )z Extract font name, size and color from default appearance string (/DA object).

Equivalent to 'pdf_parse_default_appearance' function in MuPDF's 'pdf-annot.c'.
NrL  r   rK  ÚTfr   r   ra   ÚgÚrgr   )r_  r;   rY  rœ  r[  r\  rþ   )r)   rÜ  r3  rg  Údatrh  rH   r  s           r*   r  ÚWidget._parse_daŠ#  s)  € ð
 �}�}ØØˆØˆØˆØ�m‰m×!Ñ!Ó#ˆÜ  –~‰GˆAØ�t‹|Ø˜q™5‘z ! "�~�Ü˜c a¡%™jÓ)�Ø/1Ð1�‘Ð1˜˜q™S™ C¨!©¡HÙØ�s‹{Ü˜c a¡%™jÓ)Ð+�Ø$&Ð&�‘˜˜q™S™ÙØ�t�|Ø),°©U°1©Ó6ª A”u˜Q–x©�Ð6Ø:<Ð<�‘Ð<˜˜q™S™Ð< C¨!©¡H¨s°Q±3©xÙñ &ð ŒØ"ÔØŒØˆŒØùò 7s   Â,C:c                óª  • U R                   R                  (       d  U R                   R                  (       a  [        S5      eU R                  (       d  [        S5      eU R
                  S:X  a  SU l        [        U R                  5        [        U R                  5        U R                  (       d  SU l	        [        U R                  5        U R                  (       d  SU l
        U R                  (       d  SU l        U R                  R                  5       SS U l        U R                  [        R                   [        R"                  [        R$                  4;   nU R&                  (       d  SU l        O'[)        U R&                  5      [*        La  [        S5      eU(       d  U R,                  (       d  SU l        O'[)        U R,                  5      [*        La  [        S	5      eU(       d  U R.                  (       d  SU l        O'[)        U R.                  5      [*        La  [        S
5      eU(       d  U R0                  (       d  SU l        O'[)        U R0                  5      [*        La  [        S5      eU(       d  U R2                  (       d  SU l        O'[)        U R2                  5      [*        La  [        S5      eU(       d  U R4                  (       d  SU l        O'[)        U R4                  5      [*        La  [        S5      eU(       d  U R6                  (       d  SU l        O'[)        U R6                  5      [*        La  [        S5      eU R9                  5         g)z$Validate the class entries.
        zbad rectzfield name missingÚUnnamedNrK  r   r   zscript content must be a stringz$script_calc content must be a stringz&script_change content must be a stringz&script_format content must be a stringz&script_stroke content must be a stringz$script_blur content must be a stringz%script_focus content must be a string)rý   Úis_infiniteÚis_emptyrÄ   rR  rS  r�  r)  r`  rþ   rN  r\  rM  rz
  rW  r£   ÚPDF_WIDGET_TYPE_BUTTONÚPDF_WIDGET_TYPE_CHECKBOXrs  rñ  rÉ   rè  rc  rb  ra  r`  rd  re  rv  )r)   Úbtn_types     r*   Ú	_validateÚWidget._validate©#  sZ  € ð �I‰I×!×!Ø�y‰y×!×!ä˜ZÓ(Ð(à��ÜÐ1Ó2Ð2à×Ñ˜yÓ(Ø#ˆDÔÜ�4×$Ñ$Ô%Ü�4—?‘?Ô#Ø��Ø'ˆDŒOÜ�4—?‘?Ô#à× × Ø !ˆDÔà×!×!Ø!"ˆDÔà ×-Ñ-×3Ñ3Ó5°a¸Ð:ˆÔð —?‘?Ü×,Ñ,Ü×.Ñ.Ü×1Ñ1ð'ñ ˆð
 �{�{ØˆD�KÜ�$—+‘+Ó¤cÒ)ÜÐ>Ó?Ð?ö ˜4×+×+Ø#ˆDÕÜ�$×"Ñ"Ó#¬3Ò.ÜÐCÓDÐDæ˜4×-×-Ø!%ˆDÕÜ�$×$Ñ$Ó%¬SÒ0ÜÐEÓFÐFæ˜4×-×-Ø!%ˆDÕÜ�$×$Ñ$Ó%¬SÒ0ÜÐEÓFÐFæ˜4×-×-Ø!%ˆDÕÜ�$×$Ñ$Ó%¬SÒ0ÜÐEÓFÐFæ˜4×+×+Ø#ˆDÕÜ�$×"Ñ"Ó#¬3Ò.ÜÐCÓDÐDæ˜4×,×,Ø $ˆDÕÜ�$×#Ñ#Ó$¬CÒ/ÜÐDÓEÐEà�‰�r,   c                ód  • U R                   (       d  gU R                  R                  nU(       d   e[        U5      n[        R                  " X R                   5      n[        R
                  " U[        S5      5      nUR                  5       (       d  gUR                  [        S5      U R                  5        UR                  [        S5      5      nUR                  5       (       d  [        S5        g[        UR                  5       5       H¡  nUR                  U5      nUR                  5       (       d  M+  UR                  5       nX€R                   :X  a  ML  UR                  [        S5      5      n	U	R!                  5       S:X  d  M|  UR                  [        S5      U R                  5        M£     g)	zÝPropagate the field flags.

If this widget has a "/Parent", set its field flags and that of all
its /Kids widgets to the value of the current widget.
Only possible for widgets existing in the PDF.

Returns True or False.
Fr©  ÚFfr3  z0warning: malformed PDF, Parent has no Kids arrayr¶  r\  T)r  rí   rÏ   r£   r=  r  r  r†  rQ  rU  r<  rw   rT  r¬  r­  r  r…  )
r)   r2  rb  Ú
pdf_widgetr©  r5  rh  r6  r  rÝ  s
             r*   Ú_sync_flagsÚWidget._sync_flagsð#  sR  € ð �y�yØØ�k‰k× Ñ ˆÞˆ
ˆsÜ˜sÓ#ˆä×*Ò*¨3·	±	Ó:ˆ
Ü×#Ò# J´¸Ó0BÓCˆØ×!Ñ!×#Ñ#Øð 	×Ñ¤¨£°×0@Ñ0@ÔAð ×"Ñ"¤8¨FÓ#3Ó4ˆØ× Ñ ×"Ñ"ÜÐFÔGØä�t×)Ñ)Ó+Ö,ˆAà×$Ñ$ QÓ'ˆCØ—?‘?×$Ñ$ÙØ—>‘>Ó#ˆDØ—y‘yÓ ÙØ×&Ñ&¤x°	Ó':Ó;ˆGØ×&Ñ&Ó(¨HÓ4Ùà× Ñ ¤¨$£°×1AÑ1AÖBñ -ð r,   c                ó8  • U R                   S;  a  g[        U S5      (       a  U R                  R                  nOgU R                  nSSS.nUR	                  US5      nUS   S:X  aM  / nUS   S	S
 nUR                  S5      SS nU H%  nUR                  UR                  5       S   5        M'     XSS'   US   S:X  av  / n[        US   R                  S5      S   5      nUR                  U5      nUR                  S5      SS nU H%  nUR                  UR                  5       S   5        M'     XSS'   UR	                  US5      n	U	S   S:X  aM  / n
U	S   S	S
 n	U	R                  S5      SS nU H%  nU
R                  UR                  5       S   5        M'     X£S'   U	S   S:X  av  / n
[        U	S   R                  S5      S   5      nUR                  U5      n	U	R                  S5      SS nU H%  nU
R                  UR                  5       S   5        M'     X£S'   U$ )zéReturn the on/off state names for button widgets.

A button may have 'normal' or 'pressed down' appearances. While the 'Off'
state is usually called like this, the 'On' state is often given a name
relating to the functional context.
©r   r   Nrí   )rÏ  r–  zAP/Nr   r:   r   r   r  rU	  rÏ  r  r´   zAP/Dr–  )	rW  r@   rí   r  rÈ  r;   rp   r9   rL  )r)   r2  r  ÚstatesÚAPNÚnstatesÚapntre  ÚnxrefÚAPDÚdstatesÚapdtÚdxrefs                r*   Úbutton_statesÚWidget.button_states$  s  € ð �?‰? &Ó(ØÜ�4˜×"Ñ"Ø—+‘+×$Ñ$‰CàØ�y‰yˆØ ¨$Ñ/ˆØ×Ñ˜t VÓ,ˆØˆq‰6�VÓØˆGØ�a‘&˜˜2�,ˆCØ—9‘9˜S“> ! "Ð%ˆDÛ�Ø—‘˜qŸw™w›y¨™|Ö,ñ à&�8ÑØˆq‰6�VÓØˆGÜ˜˜A™Ÿ™ SÓ)¨!Ñ,Ó-ˆEØ—/‘/ %Ó(ˆCØ—9‘9˜S“> ! "Ð%ˆDÛ�Ø—‘˜qŸw™w›y¨™|Ö,ñ à&�8ÑØ×Ñ˜t VÓ,ˆØˆq‰6�VÓØˆGØ�a‘&˜˜2�,ˆCØ—9‘9˜S“> ! "Ð%ˆDÛ�Ø—‘˜qŸw™w›y¨™|Ö,ñ à$�6‰NØˆq‰6�VÓØˆGÜ˜˜A™Ÿ™ SÓ)¨!Ñ,Ó-ˆEØ—/‘/ %Ó(ˆCØ—9‘9˜S“> ! "Ð%ˆDÛ�Ø—‘˜qŸw™w›y¨™|Ö,ñ à$�6‰NØˆr,   c                ó.   • U R                   R                  $ r.   )Ú_annotr_  r0   s    r*   r_  ÚWidget.nextN$  s   € à�{‰{×ÑÐr,   c                óÒ   • U R                   S;  a  gU R                  5       nUc
  [        5       nUR                  5        H  nX    H  nUS:w  d  M  Us  s  $    M     [	        S5        g)ae  Return the "On" value for button widgets.

This is useful for radio buttons mainly. Checkboxes will always return
"Yes". Radio buttons will return the string that is unequal to "Off"
as returned by method button_states().
If the radio button is new / being created, it does not yet have an
"On" value. In this case, a warning is shown and True is returned.
r�  Nrq  z(warning: radio button has no 'On' value.T)rW  r—  r:   r{  rw   )r)   Úbstaterò  rK   s       r*   Úon_stateÚWidget.on_stateR$  sc   € ð �?‰? &Ó(ØØ×#Ñ#Ó%ˆØ‰>Ü“VˆFØ—‘–ˆAØ”Y�Ø˜•:Ø”Hó ñ ô 	Ð:Ô;Ør,   c                óB   • [         R                  U R                  5        g)z.Reset the field value to its default.
        N)r  Ú_reset_widgetrš  r0   s    r*   rM
  ÚWidget.resetg$  s   € ô 	×Ñ˜DŸK™KÕ(r,   c                ó|  • U R                  5         U R                  5         SU l        [        U R                  5      S:X  a  SU R                  -   nOQ[        U R                  5      S:X  a  SU R                  -   nO([        U R                  5      S:X  a  SU R                  -   nWR
                  " U R                  U R                  U R                  S.6U l        U R                  (       a  [        U R                  5        [        R                  U R                  U 5        SU l        U(       a  U R                  5         g	g	)
z!Reflect Python object in the PDF.ra   r   ú!{:g} {:g} {:g} rg /{f:s} {s:g} Tfr   z{:g} g /{f:s} {s:g} Tfrr  z%{:g} {:g} {:g} {:g} k /{f:s} {s:g} Tf©r  rŸ  N)r…  rn  r_  r<   rþ   r­  r[  r\  rc  Úutil_ensure_widget_calcrš  r  Ú_save_widgetrŠ  )r)   Ú
sync_flagsr²   s      r*   rJ  ÚWidget.updatel$  së   € à�‰Ôà×ÑÔð ˆŒÜ�—‘Ó! QÓ&Ø5¸¿¹ÑE‰CÜ�—‘Ó! QÓ&Ø*¨T¯]©]Ñ:‰CÜ�—‘Ó! QÓ&Ø9¸D¿M¹MÑIˆCØŸ
š
 D§O¡O°t·~±~Ø&*×&8Ñ&8ò:ˆŒð ××ä# D§K¡KÔ0ô 	×Ñ˜4Ÿ;™;¨Ô-ØˆŒÞØ×ÑÕð r,   )r_  r)  rO  rM  rN  rY  rP  rV  rU  rS  rR  rW  rX  rT  r`  rZ  rQ  rý   rñ  rd  rc  rb  re  ra  r`  rþ   r[  r\  r^  r]  r  Nrv  )r2   r3   r4   r5   r*  r‘   rð   rn  rv  r  r…  rŠ  r—  ry  r_  rž  rM
  rJ  r6   r/   r,   r*   r\  r\  :#  sX   † ñò#òJTòò=ò*ò>EòN+òZ/ðb ñ ó ð òò*)÷
r,   r\  )Ú_extrac                  óÆ   • \ rS rSrS r\S 5       rS r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       rS/rSrg)r  iŽ$  c                ó   • Xl         g r.   r$  ©r)   r<  s     r*   r‘   ÚOutline.__init__�$  s   € Ø�	r,   c                ó   • [        U SS5      $ )zoutline destination detailsN©r�  r0   s    r*   rþ	  ÚOutline.dest“$  s   € ô ˜˜d DÓ)Ð)r,   c                ó   • [        U SU5      $ )zW
Like `dest` property but uses `document` to resolve destinations for
kind=LINK_NAMED.
Nr°  )r)   rÊ   s     r*   ÚdestinationÚOutline.destination˜$  s   € ô
 ˜˜d HÓ-Ð-r,   c                ót   • U R                   nUR                  5       nUR                  (       d  g [        U5      $ r.   )rÅ   r–  rÍ   r  )r)   r<  Údown_ols      r*   r–  ÚOutline.downŸ$  ó-   € à�Y‰YˆØ—'‘'“)ˆØ×!×!ØÜ�wÓÐr,   c                óô   • [         (       a   [        R                  " U R                  5      $ U R                  nUR                  (       d  gUR                  R
                  nUc  g[        R                  " U5      $ r[  )r  rª  ÚOutline_is_externalrÅ   rÍ   r  r£   r•  )r)   r<  r  s      r*   r“  ÚOutline.is_external§$  sY   € çŠ;ô ×-Ò-¨t¯y©yÓ9Ð9Ø�Y‰YˆØ�}�}ØØ�m‰m×ÑˆØ‰;ØÜ×(Ò(¨Ó-Ð-r,   c                óD   •  U R                   R                  R                  $ r.   )rÅ   rÍ   rC  r0   s    r*   rC  ÚOutline.is_open¶$  s   € àØ—9‘9×'Ñ'×/Ñ/Ð/r,   c                ót   • U R                   nUR                  5       nUR                  (       d  g [        U5      $ r.   )rÅ   r_  rÍ   r  )r)   r<  Únext_ols      r*   r_  ÚOutline.next¼$  r¸  r,   c                óX   •  U R                   R                  R                  R                  $ r.   )rÅ   rÍ   r×   r0   s    r*   r×   ÚOutline.pageÄ$  s!   € àØ—9‘9×'Ñ'×,Ñ,×1Ñ1Ð1r,   c                óB   • U R                   R                  R                  $ r.   )rÅ   rÍ   r¨  r0   s    r*   r¨  ÚOutline.titleÊ$  s   € à�y‰y×#Ñ#×)Ñ)Ð)r,   c                ój   • U R                   nUR                  (       d  g UR                  R                  $ r.   )rÅ   rÍ   r  r­  s     r*   r  ÚOutline.uriÎ$  s%   € à�Y‰YˆØ�}�}ØØ�}‰}× Ñ Ð r,   c                óB   • U R                   R                  R                  $ r.   )rÅ   rÍ   re  r0   s    r*   re  Ú	Outline.xÕ$  ó   € à�y‰y×#Ñ#×%Ñ%Ð%r,   c                óB   • U R                   R                  R                  $ r.   )rÅ   rÍ   rf  r0   s    r*   rf  Ú	Outline.yÙ$  rÉ  r,   rÅ   r$  N)r2   r3   r4   r5   r‘   ry  rþ	  r³  r–  r“  rC  r_  r×   r¨  r  re  rf  rÅ  r6   r/   r,   r*   r  r  Ž$  sÝ   † òð ñ*ó ð*ò.ð ñ ó ð ð ñ.ó ð.ð ñ#ó ð#ð
 ñ ó ð ð ñ%ó ð%ð
 ñ*ó ð*ð ñ!ó ð!ð ñ&ó ð&ð ñ&ó ð&ð �	ƒIr,   r  c                ó|  ^• [         R                  " 5       nXl        Xl        X&l        X6l        U(       a†  T(       a"  [        T[         R                  5      (       d   eO[         R                  " 5       m " U4S jS[         R                  5      nU" 5       nUR                  UR                  5       5        X†l        U$ )z,
Returns a mupdf.PdfFilterOptions instance.
c                  ó2   >^ • \ rS rSrU U4S jrS rSrU =r$ )Ú'_make_PdfFilterOptions.<locals>.Factoryiÿ$  c                óP   >• [         TU ]  5         U R                  5         TU l        g r.   )rÈ   r‘   Úuse_virtual_filterÚsopts)r)   Ú	__class__rÑ  s    €€r*   r‘   Ú0_make_PdfFilterOptions.<locals>.Factory.__init__ %  s!   ø€ Ü‘Ñ Ô"Ø×'Ñ'Ô)Ø"�•
r,   c           	     ój   •  [        R                  " UUUUUU R                  R                  5       5      $ r.   )r(   rÑ  r  r£   Úll_pdf_new_sanitize_filter)r)   Úctxr2  ÚchainÚstruct_parentsÚ	transformr#  s          r*   ÚfilterÚ._make_PdfFilterOptions.<locals>.Factory.filter%  s9   € Øô ×7Ò7ØØØ&Ø!ØØŸ
™
×+Ñ+Ó-óð r,   )rÑ  )r2   r3   r4   r5   r‘   rÚ  r6   Ú__classcell__)rÒ  rÑ  s   @€r*   ÚFactoryrÎ  ÿ$  s   ù† ö#÷ð r,   rÝ  )r£   ÚPdfFilterOptionsr˜  r™  rš  Ú	no_updaterC   ÚPdfSanitizeFilterOptionsÚPdfFilterFactory2Úadd_factoryr  Ú_factory)	r˜  r™  rš  rß  r›  rÑ  rŸ  rÝ  Úfactorys	        `   r*   r�  r�  à$  s•   ø€ ô ×$Ò$Ó&€GØ„OØ+ÔØ„Mà!ÔÞö Ü˜e¤U×%CÑ%C×DÑDÐDÑDä×2Ò2Ó4ˆE÷	”e×-Ñ-ô 	ñ2 “)ˆØ×Ñ˜G×,Ñ,Ó.Ô/Ø"ÔØ€Nr,   c                  ór  • \ rS rSrS rS rS rS rS«S jrSSSSSS	SS\	R                  S
S	S	SS4S jrS rS rS rS¬S jrS rSNS jrS­S jrS rS rS rS rS rS rS®S jrS rS¯S jr   S°S jrS rS  rS±S! jrS" r S²S$ jr!S% r"S³S& jr#S' r$S( r%S´S) jr&SµS* jr'S¶S+ jr(   S«             S·S, jjr)SSSSSS	SS\	R                  S
S	S	SSS-.                             S¸S. jjr*  S¹ SºS/ jjr+S»S0 jr,S¼S1 jr-S½S2 jr.S½S3 jr/S¶S4 jr0       S¾               S¿S5 jjr1    S¹ SºS6 jjr2SNS¶S7 jjr3S¹SºS8 jjr4SÀSÁS9 jjr5S¹SºS: jjr6SÂS; jr7S< r8S= r9S­S> jr:   SÃ         SÄS? jjr;SÅS@ jr<SA r=SB r>\?SC 5       r@\?SD 5       rASE rBSÅSF jrC\?SG 5       rD\?SH 5       rESI rFSÆSJ jrGSK rHSÇSL jrI\?SÈSM j5       rJ            SÉ                                   SÊSO jjrK           SË                             SÌSP jjrL            SÉ                                 SÍSQ jjrM          SÎ                         SÏSR jjrN           SË                           SÐSS jjrO            SÑ                             SÒST jjrP           SÓ                           SÔSU jjrQ            SÕ                           SÖSV jjrR             S×                                   SØSW jjrS           SÙ                             SÚSX jjrT           SÙ                             SÚSY jjrUSÛSZ jrVS[ rW\?S\ 5       rX\?S] 5       rY\?S^ 5       rZS­S_ jr[S«S` jr\Sa r]SÅSb jr^SÜSÝSc jjr_  SÞ       SßSd jjr`SÜSàSe jjraSf rbSàSg jrc\dSSSSS#Sh.             SáSi jjreSj rf  Sâ       SãSk jjrgSÜSl jrhSNSm jriSÜSn jrjSäSo jrkSåSp jrl S­     SæSq jjrmSr rnSs roSt rpSu rqSv rrS¯SçSw jjrsSx rtSy ru  SèS{ jrvSS	SS	S	S
S#S#SS|.	 SéS} jjrwSSS	S#SS	S#SS	SS	S	S~.S jrxS²SêS€ jjrySSSzSS	S	SSS�S
S	S	SS#S
S
S	S‚.                                       SëSƒ jjrzS	S�SS	S
S
SSSzSSS
SS	S#S	S	S	S
S„.                                             SìS… jjr{\?S† 5       r|\?S‡ 5       r}S­Sˆ jr~SíS‰ jrSŠ r€S‹ r�\?SŒ 5       r‚\?S� 5       rƒSŽ r„S� r…S� r†SSSS‘.   SÆS’ jjr‡\?S“ 5       rˆ\?SÈS” j5       r‰S• rŠSSSSS–. SäS— jjr‹S˜ rŒS™ r�Sš rŽS› r�S­Sœ jr�S� r‘Sž r’SŸ r“      Sî SïS  jjr”\?S¡ 5       r•\?S¢ 5       r–SðS£ jr—S­S¤ jr˜S¥ r™        Sñ   SòS¦ jjrš\?S§ 5       r›\?" \BS¨S©9rœSr�Sªržg)órÓ   i%  c                óÈ  • [        U[        R                  [        R                  45      (       d
   SU 35       eXl        SU l        S U l        SU l        [        5       U l	        X l
        UR                  (       aa  [        U[        R                  5      (       a&  UR                  R                  R                  U l        g UR                  R                  U l        g S U l        g )Nz	page is: Tra   )rC   r£   rÕ   rÔ   rÅ   rö   Ú
last_pointÚ	draw_contr:   rZ  rí   rÍ   rÈ   r;  )r)   r×   rÊ   s      r*   r‘   ÚPage.__init__ %  sž   € Ü˜$¤§¡¬u¯}©}Ð =×>Ñ>ÐRÀ)ÈDÈ6Ð@RÓRÐ>ØŒ	ØˆŒØˆŒØˆŒÜ›6ˆÔØŒØ�?�?Ü˜4¤§¡×/Ñ/Ø"Ÿo™o×3Ñ3×:Ñ:�•à"Ÿo™o×4Ñ4�•àˆD�Kr,   c                ó"   • U R                  5       $ r.   )ró   r0   s    r*   rð   ÚPage.__repr__0%  s   € Ø�|‰|‹~Ðr,   c                óè  • [        U SS 5      n[        U R                  R                  [        R
                  5      (       a+  U R                  R                  R                  R                  nO U R                  R                  R                  nU(       aZ  U R                  R                  nU R                  R                  b  SnUS:X  a  SnSU SU SU R                  R                  S S	3nU$ SU 3nU$ )
Nrí   r”  ra   znew PDFr›  z of <z, doc# rD  Ú>)rï   rC   rÅ   rÍ   r£   Úpdf_pagerÈ   r;  rí   r   r	   rÁ  )r)   rí   r;  re  rL   s        r*   ró   ÚPage.__str__3%  sÏ   € ä˜˜x¨Ó.ˆÜ�d—i‘i×*Ñ*¬E¯N©N×;Ñ;Ø—Y‘Y×)Ñ)×/Ñ/×6Ñ6‰Fà—Y‘Y×)Ñ)×0Ñ0ˆFæØ—‘× Ñ ˆAØ�{‰{×!Ñ!Ñ-Ø�Ø�B‹wØ�Ø˜&˜  q c¨°·±×1FÑ1FÀqÐ0IÈÐKˆCð ˆ
ð ˜&˜Ð"ˆCØˆ
r,   c                óˆ  • [         (       a,  [        R                  " U R                  [	        U5      5      nU$ U R                  5       n[        R                  " U[        R                  5      nU(       a¬  [	        U5      n[        R                  " U5      n[        R                  " UR                  UR                  UR                  UR                  -   UR                  -
  UR                  UR                  -   UR                   -
  5      n[        R"                  " X%5        [        R$                  " U5        ['        US5        U$ ©NrÄ  )r  r   Ú_add_caret_annotrÅ   ÚJM_point_from_pyÚ	_pdf_pager£   Úpdf_create_annotrK  Úpdf_annot_rectrr  re  rf  r¯  r°  r±  r²  ré  rX  ÚJM_add_annot_id)r)   rj  rà   r×   r³  r%  s         r*   rò  ÚPage._add_caret_annotF%  sÞ   € ßŠ;Ü×*Ò*¨D¯I©IÔ7GÈÓ7NÓOˆEð ˆð —>‘>Ó#ˆDÜ×*Ò*¨4´×1FÑ1FÓGˆEÞÜ$ UÓ+�Ü×(Ò(¨Ó/�Ü—L’L §¡ a§c¡c¨1¯3©3°·±©:¸¿¹Ñ+<¸a¿c¹cÀAÇDÁD¹jÈ1Ï4É4Ñ>OÓP�Ü×(Ò(¨Ô2Ü×"Ò" 5Ô)Ü˜E 3Ô'Øˆr,   Nc                óŠ  • U R                  5       nU(       a  UOUnU(       a  UOUn	[        U5      n
[        U5      nUR                  (       d  [	        [
        5      e[        R                  " U[        R                  5      n[        R                  " U5      n[        R                  " U
R                  U
R                  U
R                  UR                  -   UR                  -
  U
R                  UR                  -   UR                   -
  5      n[        R"                  " XÍ5        [        R$                  n[        R&                  " XÎ5        U(       a  [        R(                  " XÆ5        [+        UR-                  5       X³X‰S5      n[        R.                  " [        R0                  " U5      [3        S5      U5        [        R4                  " [        R0                  " U5      [3        S5      U5        [        R6                  " U5        [        R"                  " XÍ5        [        R&                  " XÎ5        [9        US5        [;        U5      $ )Nr   r·  rO  rÄ  )rô  ró  r/  rÍ   rÀ  r0  r£   rõ  rM  rö  Úfz_make_rectre  rf  r¯  r°  r±  r²  ré  ÚPDF_ANNOT_IS_PRINTr£  Úpdf_set_annot_icon_namer¨  r2  rV  r  r  r¯  rX  r÷  rã   )r)   rj  r5  rk   rS  rË  Úiconr×   ÚufrD  r³  Úfilebufrà   r%  rÑ  r  s                   r*   Ú_add_file_annotÚPage._add_file_annotU%  sˆ  € Ø�~‰~ÓˆÞ#‰Y¨ˆÞ‰D˜hˆÜ˜UÓ#ˆÜ$ WÓ-ˆØ×!×!Üœ^Ó,Ð,Ü×&Ò& t¬U×-LÑ-LÓMˆÜ× Ò  Ó'ˆÜ×Ò˜qŸs™s A§C¡C¨¯©¨q¯t©t©°a·d±dÑ):¸A¿C¹CÀ!Ç$Á$¹JÈÏÉÑ<MÓNˆÜ× Ò  Ô*Ü×(Ñ(ˆÜ×!Ò! %Ô/æÜ×)Ò)¨%Ô6ä˜DŸH™H›J¨¸2À!ÓDˆÜ×Òœ5×.Ò.¨uÓ5´xÀ³~ÀsÔKÜ×&Ò&¤u×':Ò':¸5Ó'AÄ8ÈJÓCWÐYaÔbÜ×Ò˜uÔ%Ü× Ò  Ô*Ü×!Ò! %Ô/Ü˜˜sÔ#Ü�U‹|Ðr,   r¢  r   r   Fc                óþ  • SU 3nU R                  5       nU(       a  U(       d  [        S5      eU(       a	  U(       d  Un[        U5      u  nn[        U5      u  nn[        U5      n[        R
                  " U5      (       d  [        R                  " U5      (       a  [        [        5      e[        R                  " U[        R                  5      n[        R                  " U5      nU(       d  [        R                  " UU5        OI[        R                  " U[        S5      U5        U(       a!  [        R                  " U[        S5      U5        [        R                  " UU5        US:  a  US-  nUS:  a  M  US:¼  a  US-  nUS:¼  a  M  US:w  a!  [        R                  " U[        S5      U5        [        R                   " UU5        US:”  a  [        R"                  " UUS U 5        [        R$                  " UU5        [        R&                  " UU5        U	(       a)  U	 H#  n[        R(                  " U[+        U5      5        M%     U
(       am  [        R,                  " U[        S5      [        S	5      5        [        R.                  " UU5        [1        U
5      n[2        R4                  " U[7        U
5      U5        U(       d  [9        UUUXC5        [        R:                  " U5        [=        US
5        [?        U5      nU$ )Nzï<?xml version="1.0"?>
            <body xmlns="http://www.w3.org/1999/xtml"
            xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"
            xfa:contentType="text/html" xfa:APIVersion="Acrobat:8.0.0" xfa:spec="2.4">
            rû  rú  ÚDSr   rí  r<  ró  ÚFreeTextCalloutrÄ  ) rô  rÄ   rC  r  r£   rç  ræ  rè  rõ  rL  r  r­  r¯  r  ré  rQ  Úpdf_set_annot_quaddingrR  Úpdf_set_annot_border_widthrÖ  Úpdf_add_annot_border_dash_itemrœ  rV  Úpdf_set_annot_callout_styler<   r   ÚJM_set_annot_callout_liner¶   r  rX  r÷  rã   )r)   rý   r   r   rÿ   rþ   r`  r)  rN  r‹  ÚcalloutÚline_endr^  r  ra  ÚrichtextrŠ  r¦   r×   rd  re  Úntcolr1  r%  rà   r'  rD  Úpoint_countr  s                                r*   Ú_add_freetext_annotÚPage._add_freetext_annotp%  sS  € ð$ð ˆFð	ˆð
 �~‰~ÓˆÞ¦ÜÐLÓMÐMÞ¦
Ø%ˆJÜ+¨JÓ7‰ˆˆtÜ+¨JÓ7‰ˆˆtÜ˜DÓ!ˆÜ×$Ò$ Q×'Ñ'¬5×+AÒ+AÀ!×+DÑ+DÜœlÓ+Ð+Ü×&Ò& t¬U×-FÑ-FÓGˆÜ×'Ò'¨Ó.ˆ	ö Ü×(Ò(¨°Õ5ä×*Ò*¨9´X¸d³^ÀRÔHÞÜ×.Ò.¨y¼À$»ÈÔOä× Ò  ¨Ô*à�q‹jØ�c‰MˆFð �q�jà˜‹mØ�c‰MˆFð ˜�mà�Q‹;Ü×"Ò" 9¬h°xÓ.@À&ÔIä×$Ò$ U¨EÔ2à�1‹9Ü×%Ò% e¨T°&°5¨\Ô:ä×(Ò(¨°Ô=Ü×#Ò# E¨7Ô3ÞÛ�Ü×4Ò4°U¼EÀ!»HÖEñ ö Ü×Ò˜y¬(°4«.¼(ÐCTÓ:UÔVÜ×-Ò-¨e°XÔ>Ü˜g›,ˆKÜ×+Ò+¨E´5¸³>À;ÔOö Ü˜U E¨4°ÔDä×Ò˜uÔ%Ü˜˜sÔ#Ü�E‹lˆØˆ
r,   c                ó�  • [        U R                  5      n[        U5      (       d  [        [        5      e[
        R                  " 5       n[
        R                  " U[
        R                  " S5      U5        [
        R                  " U5      n[
        R                  " U[
        R                  5      n[
        R                  " U5      n[        U5      n[
        R                  " UR                  5       U5      n[!        U5       Hô  n	X   n
[        U
5      n[
        R                  " UR                  5       SU-  5      n[!        U5       H•  nX­   n[        U5      (       a  [#        U5      S:w  a  [        [        5      e[
        R$                  " ['        U5      U5      n[
        R(                  " XÏR*                  5        [
        R(                  " XÏR,                  5        M—     [
        R.                  " XŒ5        Mö     [
        R0                  " U[3        S5      U5        [
        R4                  " U5        [7        US5        [9        U5      $ )Nr   r   r_  rÄ  )rÛ   rÅ   ÚPySequence_CheckrÄ   ÚMSG_BAD_ARG_INK_ANNOTr£   r}  r`  rr  r  rõ  rN  r  r<   rS  r2  rT  ÚPySequence_Sizerd  ró  rU  re  rf  r>  rV  r  rX  r÷  rã   )r)   rµ   r×   rõ  Úinv_ctmrà   r'  Ún0Úinklistr�  ÚsublistÚn1r•  rh  r³  rj  s                   r*   Ú_add_ink_annotÚPage._add_ink_annotÀ%  sŸ  € Ü˜DŸI™IÓ&ˆÜ ×%Ñ%ÜÔ3Ó4Ð4Ü�nŠnÓˆÜ× Ò  ¤u§|¢|°A£¸Ô<Ü×(Ò(¨Ó-ˆÜ×&Ò& t¬U×-@Ñ-@ÓAˆÜ×'Ò'¨Ó.ˆ	Ü�‹YˆÜ×%Ò% d§h¡h£j°"Ó5ˆä�r–ˆAØ‘gˆGÜ�W“ˆBÜ×(Ò(¨¯©«°Q¸±VÓ<ˆFä˜2–Y�Ø‘J�Ü'¨×*Ñ*¬o¸aÓ.@ÀAÓ.EÜ$Ô&;Ó<Ð<Ü×0Ò0Ô1AÀ!Ó1DÀgÓN�Ü×)Ò)¨&·'±'Ô:Ü×)Ò)¨&·'±'Ö:ñ ô × Ò  Ö1ñ ô 	×Ò˜9¤h¨yÓ&9¸7ÔCÜ×Ò˜uÔ%Ü˜˜sÔ#Ü�U‹|Ðr,   c                óF  • U R                  5       n[        R                  " U[        R                  5      n[	        U5      n[	        U5      n[        R
                  " XEU5        [        R                  " U5        [        US5        UR                  (       d   e[        U5      $ rñ  )
rô  r£   rõ  rF  ró  Úpdf_set_annot_linerX  r÷  rÍ   rã   )r)   rF  rG  r×   rà   r!   r  s          r*   Ú_add_line_annotÚPage._add_line_annotà%  s{   € Ø�~‰~ÓˆÜ×&Ò& t¬U×-AÑ-AÓBˆÜ˜RÓ ˆÜ˜RÓ ˆÜ× Ò  ¨1Ô-Ü×Ò˜uÔ%Ü˜˜sÔ#Ø××ÐÐÜ�U‹|Ðr,   c                ót  • U R                  5       n[        U5      S:  a  [        [        5      e[        R
                  " X25      nU HB  n[        U5      S:w  a  [        [        5      e[        U5      n[        R                  " XF5        MD     [        R                  " U5        [        US5        [        U5      $ )Nr   rÄ  )rô  r<   rÄ   ÚMSG_BAD_ARG_POINTSr£   rõ  r  ró  Úpdf_add_annot_vertexrX  r÷  rã   )r)   rE  r,  r×   rà   r³  rj  s          r*   Ú_add_multilineÚPage._add_multilineë%  s”   € Ø�~‰~ÓˆÜˆv‹;˜‹?ÜÔ0Ó1Ð1Ü×&Ò& tÓ8ˆÛˆAÜ Ó" aÓ'Ü Ô"4Ó5Ð5Ü$ QÓ'ˆEÜ×&Ò& uÖ4ñ	 ô 	×Ò˜uÔ%Ü˜˜sÔ#Ü�U‹|Ðr,   c                óR  • U R                  5       n/ SQnSn	[        R                  " U[        R                  5      n
[	        U5      n[        R
                  " U5      n[        R                  " X¬5        U(       a’  [        U5      u  p˜[        R                  " UR                  5       U	5      n[        U	5       H  n[        R                  " XØU   5        M     [        R                  " [        R                  " U
5      [        S5      U5        U(       a³  U(       d   e[        R                  " [        R                  " U
5      S[        R                   " U5      5        [        R"                  " [        R                  " U
5      [        S5      U5        [        R$                  " [        R                  " U
5      [        S5      U5        [        R&                  " U
5        [)        U
S5        [        R*                  " U
R,                  5      n
[        R.                  " U
5      n
[1        U
5      $ )N)r   r   r   r   r   r;  rû   ÚDArü   rÄ  )rô  r£   rõ  r  ÚJM_quad_from_pyÚfz_rect_from_quadré  rC  rS  r2  rT  rU  rV  r  r  r°  r±  r¯  rQ  rX  r÷  Úll_pdf_keep_annotrÍ   rå   rã   )r)   rI  r   Úda_strr  r  rþ   r×   re  rd  rà   Úqr%  rs  rh  s                  r*   Ú_add_redact_annotÚPage._add_redact_annotú%  sƒ  € Ø�~‰~ÓˆÚˆØˆÜ×&Ò& t¬U×-CÑ-CÓDˆÜ˜DÓ!ˆÜ×#Ò# AÓ&ˆä× Ò  Ô*ÞÜ/°Ó5‰KˆEÜ×%Ò% d§h¡h£j°%Ó8ˆCÜ˜5–\�Ü×)Ò)¨#°A©wÖ7ñ "ä×Òœu×2Ò2°5Ó9¼8ÀD»>È3ÔOÞÞˆM�6Ü×ÒÜ×'Ò'¨Ó.Ø!Ü×-Ò-¨dÓ3ôô
 ×*Ò*¬5×+>Ò+>¸uÓ+EÄxÐPTÃ~ÐW]Ô^Ü×"Ò"¤5×#6Ò#6°uÓ#=¼xÈ»}ÈeÔTÜ×Ò˜uÔ%Ü˜˜sÔ#Ü×'Ò'¨×(8Ñ(8Ó9ˆÜ—’ Ó&ˆÜ�U‹|Ðr,   c                óš  • U R                  5       n[        U5      n[        R                  " U5      (       d  [        R                  " U5      (       a  [        [        5      e[        R                  " X25      n[        R                  " XT5        [        R                  " U5        [        US5        UR                  (       d   e[        U5      $ rñ  )rô  r  r£   rç  ræ  rÄ   rè  rõ  ré  rX  r÷  rÍ   rã   )r)   rý   r,  r×   r%  rà   s         r*   Ú_add_square_or_circleÚPage._add_square_or_circle&  s“   € Ø�~‰~ÓˆÜ˜DÓ!ˆÜ×$Ò$ Q×'Ñ'¬5×+AÒ+AÀ!×+DÑ+DÜœlÓ+Ð+Ü×&Ò& tÓ8ˆÜ× Ò  Ô*Ü×Ò˜uÔ%Ü˜˜sÔ#Ø××ÐÐÜ�U‹|Ðr,   c                óæ  • [        U5      n[        U5      n[        R                  " U5      (       d  [        R                  " U5      (       a  [        [        5      eU R                  5       n/ SQn[        U5      nS nS nU[        U5      ;   a  XR   nO³[        U[        5      (       a  UR                  5       nO�[        U[        5      (       a%  [        R                  " U5      R!                  5       nOS[        U["        [$        45      (       a  UnO5[        U[&        R(                  5      (       a  UR+                  5       nOUS   n[        R,                  " U[        R.                  5      n	U(       Gai  [        R0                  " U5      n
[        R2                  " U
5      nUR5                  5       UR7                  5       pÜ[9        UR:                  U-  UR<                  U-  5      nXÎ-  nXÞ-  nUR>                  UR@                  -   S-  nURB                  US-  -
  nURD                  US-  -
  nUU-   nUU-   n[        RF                  " UUUU5      n[        RH                  " X“5        [        RJ                  " X›5        [        RL                  " [        RN                  " U	5      [Q        S5      [        RR                  " S5      5        [        RT                  " U	S5        Oj[        RH                  " X“5        [        RL                  " [        RN                  " U	5      [Q        S5      [Q        U5      5        [        RT                  " X˜5        [        RV                  " U	5        [Y        U	S5        [[        U	5      $ )N)ÚApprovedÚAsIsÚConfidentialÚDepartmentalÚExperimentalÚExpiredÚFinalÚ
ForCommentÚForPublicReleaseÚNotApprovedÚNotForPublicReleaseÚSoldÚ	TopSecretÚDraftr   r   r,  Ú
ImageStampzImage StamprÄ  ).r,  r  r£   rç  ræ  rÄ   rè  rô  r<   rT  rC   rî  r¸  rè  r¹  rº  Ú
read_bytesr   r§  r>   r¨  rÂ  rõ  rO  rã  Úfz_new_image_from_bufferr   r!  rÅ  r‰  r2  r$  r%  re  rf  rú  ré  Úpdf_set_annot_stamp_imagerV  r  r  rÜ  r­  rX  r÷  rã   )r)   rý   Ústampr%  r×   Ústamp_idrJ   rÔ  r   rà   Úfzbuffr1  r   r!  Úscaler‰  r2  r¼  r°  r²  r¯  r±  s                         r*   Ú_add_stamp_annotÚPage._add_stamp_annot$&  s“  € Ü�D‹zˆÜ˜DÓ!ˆÜ×$Ò$ Q×'Ñ'¬5×+AÒ+AÀ!×+DÑ+DÜœ\Ó*Ð*Ø�~‰~Óˆòˆô  �‹MˆØˆØˆØ”E˜!“HÓØ‘?‰DÜ˜œv×&Ñ&Ø—-‘-“/‰CÜ˜œs×#Ñ#Ü—,’,˜uÓ%×0Ñ0Ó2‰CÜ˜¤¤yÐ1×2Ñ2Ø‰CÜ˜œrŸz™z×*Ñ*Ø—.‘.Ó"‰Cà˜A‘;ˆDä×&Ò& t¬U×-BÑ-BÓCˆßÜ×9Ò9¸#Ó>ˆFÜ×0Ò0°Ó8ˆCð —5‘5“7˜CŸE™E›GˆqÜ˜Ÿ
™
 Q™¨¯©°a©Ó8ˆEØ‘IˆEØ‘YˆFð —g‘g §¡Ñ'¨1Ñ,ˆFØ—‘˜E A™IÑ%ˆBØ—‘˜F Q™JÑ&ˆBØ�e‘ˆBØ�f‘ˆBÜ×"Ò" 2 r¨2¨rÓ2ˆAÜ×$Ò$ UÔ.Ü×+Ò+¨EÔ7Ü×Òœu×2Ò2°5Ó9¼8ÀFÓ;KÌU×M_ÒM_Ð`lÓMmÔnÜ×(Ò(¨°Õ>ä×$Ò$ UÔ.Ü×Òœu×2Ò2°5Ó9¼8ÀFÓ;KÌXÐVZË^Ô\Ü×(Ò(¨Ô5Ü×Ò˜uÔ%Ü˜˜sÔ#Ü�U‹|Ðr,   c                ó„  • U R                  5       n[        U5      n[        R                  " U[        R                  5      n[        R
                  " U5      n[        R                  " UR                  UR                  UR                  UR                  -   UR                  -
  UR                  UR                  -   UR                  -
  5      n[        R                  " Xg5        [        R                  " Xb5        U(       a  [        R                  " Xc5        [        R                   " U5        [#        US5        [%        U5      $ rñ  )rô  ró  r£   rõ  rP  rö  rú  re  rf  r¯  r°  r±  r²  ré  r­  rü  rX  r÷  rã   )r)   rj  r   rý  r×   r³  rà   r%  s           r*   Ú_add_text_annotÚPage._add_text_annoth&  s×   € Ø�~‰~ÓˆÜ˜eÓ$ˆÜ×&Ò& t¬U×-AÑ-AÓBˆÜ× Ò  Ó'ˆÜ×Ò˜qŸs™s A§C¡C¨¯©¨q¯t©t©°a·d±dÑ):¸A¿C¹CÀ!Ç$Á$¹JÈÏÉÑ<MÓNˆÜ× Ò  Ô*Ü×$Ò$ UÔ1ÞÜ×)Ò)¨%Ô6Ü×Ò˜uÔ%Ü˜˜sÔ#Ü�U‹|Ðr,   c                óô   • [        U 5        U R                  R                  (       d  [        S5      e[	        XU5      nU(       d  g [
        R                  " U 5      Ul        X0R                  [        U5      '   U$ )Nr}  )	rp  rí   r  rÄ   ÚPage__add_text_markerr   r"  rZ  r[  )r)   rd
  r,  r  s       r*   Ú_add_text_markerÚPage._add_text_markerv&  s[   € ä�DÔØ�{‰{×!×!Ü˜[Ó)Ð)ä# D°Ó<ˆÞØÜ—]’] 4Ó(ˆŒ
Ø$'×Ñœ˜C›Ñ!àˆ
r,   c                óÆ  • [        U 5        [        (       a@  [        R                  U R                  l        [        R                  " U R                  U5      $ [        U R                  5      n[        U5      nUS:  a  gSn[        U[        5      (       d  [        S5      e[        R                  " UR                  5       [        S5      5      R                   (       d/  [        R"                  " UR                  5       [        S5      U5        [        R                  " UR                  5       [        S5      5      nUR                   (       d   SU< SUR                   < 35       e[%        U5       H¹  nX   n['        U5      nU(       d  [)        SUS	 S
35        M+   [        R*                  " UR-                  5       [/        UR-                  5       U5      5      n[        R0                  " UR-                  5       [        R2                  " U5      S5      n	[        R4                  " XY5        M»     g! [6         a)    [8        (       a
  [;        5         [)        SUS	 S35         Mð  f = f)z&Add links from list of object sources.r   Nr¨  zbad 'linklist' argumentr§  zlcount=z annots.m_internal=zskipping bad link / annot item rD  r   r   z.
)rp  r  r   ÚPage_addAnnot_FromStringrÒ  r  rÅ   rÛ   r<   rC   r¶   rÄ   r£   r  r  r  rÍ   rK  rT  ÚJM_StrAsCharrw   rL  r2  rÝ  r¹  r  r>  rl   r  r{   )
r)   Úlinklistr×   Úlcountrh  r°  Útxtpyr   rà   rô  s
             r*   r  ÚPage._addAnnot_FromString„&  sÊ  € ä�DÔßŠ;Ü27×2PÑ2PˆD�N‰NÔ/ä×1Ò1°4·9±9¸hÓGÐGÜ˜DŸI™IÓ&ˆÜ�X“ˆØ�A‹:ØØˆô ˜(¤E×*Ñ*ÜÐ7Ó8Ð8Ü×!Ò! 4§8¡8£:¬x¸Ó/AÓB×M×MÜ×$Ò$ d§h¡h£j´(¸8Ó2DÀfÔMÜ×#Ò# T§X¡X£Z´¸(Ó1CÓDˆØ× × ÐC W V¡IÐ-A¨v×/@Ñ/@Ñ.BÐ"CÓCÐ Ü�v–ˆAØ‘KˆEÜ Ó&ˆDÞÜÐ9¸!¸A¸¸aÐ@ÔAÙðDÜ×,Ò,¨d¯h©h«jÔ:MÈtÏxÉxËzÐ[_Ó:`Óa�Ü×0Ò0°$·(±(³*¼e×>NÒ>NÐPUÓ>VÐXYÓZ�Ü×$Ò$ fÖ6ò øô ó Dß'Ò'¬NÔ,<ÜÐ9¸!¸A¸¸cÐB×CðDús   ÆBH-È-/I ÉI c                óÀ   • U R                  5       nUR                  5       n[        XCX5      nUR                  (       d  [	        S5      e[        US5        [        U5      $ )Nzcannot create widgetrõ
  )rô  r2  ÚJM_create_widgetrÍ   rß   r÷  rã   )r)   rW  rR  r×   rb  rà   s         r*   Ú
_addWidgetÚPage._addWidget¦&  sN   € Ø�~‰~ÓˆØ�h‰h‹jˆÜ  ¨JÓCˆØ××ÜÐ 6Ó7Ð7Ü˜˜sÔ#Ü�U‹|Ðr,   c                óÌ   • U R                  5       n[        R                  " 5       nSUl        Xl        X%l        X5l        [        R                  " UR                  5       XE5      nU$ rŒ   )	rô  r£   ÚPdfRedactOptionsÚblack_boxesr   Úimage_methodÚline_artÚpdf_redact_pager2  )r)   r   rH
  Úgraphicsr×   rV  Úsuccesss          r*   Ú_apply_redactionsÚPage._apply_redactions¯&  sQ   € Ø�~‰~ÓˆÜ×%Ò%Ó'ˆØˆÔØŒ	Ø"ÔØ ŒÜ×'Ò'¨¯©«
°DÓ?ˆØˆr,   c                óÈ   • U R                  5          U R                  R                  U 5        S U l        SU l        S U l        S U l        g ! [         a    [	        5          N3f = fr[  )Ú_reset_annot_refsrí   rÐ  rl   r{   rö   r;  rÅ   r0   s    r*   r÷   ÚPage._erase¹&  s]   € Ø×ÑÔ ð	Ø�K‰K×$Ñ$ TÔ*ð ˆŒØˆŒØˆŒØˆ�	øô ó 	ÜÔÙð	ús   ’A
 Á
A!Á A!c                ó<  • [        U 5      n[        R                  " UR                  5       [        R                  5      n[        R                  " UR                  5       [        R
                  5      n[        U R                  5      n[        R                  " XBU5      $ )a”  Count missing graphic state pushs and pops.

        Returns:
            A pair of integers (push, pop). Push is the number of missing
            PDF "q" commands, pop is the number of "Q" commands.
            A balanced graphics state for the page will be reached if its
            /Contents is prepended with 'push' copies of string "q
"
            and appended with 'pop' copies of "
Q".
        )	rÛ   r£   r  r  r  ÚPDF_ENUM_NAME_ContentsrÏ   rí   Ú pdf_count_q_balance_outparams_fn)r)   r×   r&  rž  rb  s        r*   Ú_count_q_balanceÚPage._count_q_balanceÅ&  sy   € ô ˜DÓ!ˆÜ× Ò Ø�H‰H‹JÜ×)Ñ)ó
ˆô ×!Ò!Ø�H‰H‹JÜ×(Ñ(ó
ˆô ˜tŸ{™{Ó+ˆô ×5Ò5°cÀÓEÐEr,   c                ó„  • Ub  US:X  a  g U R                   nUR                  USS9nSU;   d  SU;   d  [        S5      e0 nU R                  5        H	  u  pVXTU'   M     XR	                  5       ;   a  XA   $ SnSUS 3nX„R                  5       ;   a   US	-  nSUS 3nX„R                  5       ;   a  M   U R                  X�5        U$ )
Nr   TrI  ú	/Type/OCGrY  zbad optional content: 'oc'ÚMCrD  r   )rí   rL  rÄ   Ú_get_resource_propertiesr{  r  Ú_set_resource_property)	r)   rÚ  r2  ÚcheckÚpropsr³  re  rh  Úmcs	            r*   Ú_get_optional_contentÚPage._get_optional_contentÝ&  sÒ   € Ø‰:˜˜q›ØØ�k‰kˆØ—‘ ¨t�Ð4ˆØ˜uÓ$¨¸Ó(=äÐ9Ó:Ð:àˆØ×1Ñ1Ö3‰DˆAØ�!‹Hñ 4à—‘“ÓØ‘9ÐØˆØ�!�A�ˆZˆØ—L‘L“NÓ"Ø�‰FˆAØ�a˜�U�ˆBð —L‘L“NÕ"ð 	×#Ñ# BÔ+àˆ	r,   c                óX   • U R                  5       n[        UR                  5       5      nU$ )z
page list Resource/Properties
)rô  ÚJM_get_resource_propertiesr  )r)   r×   r¦   s      r*   rq  ÚPage._get_resource_propertiesô&  s%   € ð �~‰~ÓˆÜ'¨¯©«
Ó3ˆØˆ	r,   c                óx   •  [        R                  " U R                  XU5      n[        R
                  " U5      nU$ r.   )r  r   Úpage_get_textpagerÅ   r£   r  r  r  Úfz_bound_pagerê  rR  Ú_globalsr�   Úfz_enable_device_hintsÚFZ_NO_CACHErC   rÕ   rÔ   rÈ   rÉ   Úfz_run_pagerl  Úfz_close_device)r)   r  rÑ  rð  Úll_tpageÚtpager×   r#  rý   rõ  Údevs              r*   Ú_get_textpageÚPage._get_textpageü&  s2   € ØÜ×.Ò.¨t¯y©y¸$ÀvÓNˆHÜ×%Ò% hÓ/ˆEØˆLr,   r¨  c                óì  • [         R                  " 5       nU R                  5       nUR                  5       nU
nUnUnSnSnSnSnSnSnUS:”  aµ  [         R                  " UUS5      n[         R
                  " [         R                  " U[        S5      [        S5      5      5      n[         R
                  " [         R                  " U[        S5      [        S5      5      5      nUU-   S:X  a  [        [        5      eSnSnSnSnO4U(       a  [        U5      nSnOU(       a  [         R                  " U5      nSnU(       Ga‚  UR                  nUR                  5       nUR                  5       n[         R                  " U5      nUn UR!                  U S 5      n!U!b/  U!n[         R                  " UR                  5       US5      nSnSnSnOúUR#                  5       S:X  a+  [         R$                  " U[         R&                  " 5       5      n"O·[         R(                  " U[         R*                  " 5       [         R*                  " 5       [         R,                  " S 5      [         R.                  " 5       S5      n#SU#l        S U#l        [         R$                  " U#[         R&                  " 5       5      n$[         R$                  " UU$5      n"SnSnU(       Ga  [         R2                  " 5       n%[4        (       a  [         R6                  " U%W5        O@[         R8                  " U%WR:                  R<                  UR:                  R>                  5        U(       an  [        U5      n[4        (       a  [         R6                  " U%U5        O@[         R8                  " U%UR:                  R<                  UR:                  R>                  5        [         R@                  " U%5      n[C        U5      n UR!                  U S 5      n!U!b©  U!n[         R                  " UR                  5       US5      n[         R
                  " [         R                  " U[        S5      [        S5      5      5      n[         R
                  " [         R                  " U[        S5      [        S5      5      5      nSnSnO?[         RD                  " U5      n"U"R                  5       nU"R                  5       nU(       d  SnU(       a²  [         RF                  " W"5      n&U&R:                  (       d  [        S5      eU"RI                  5       n'U"R1                  5       n([         RJ                  " U"5      u  n)n*[         RD                  " U5      n$[         RL                  " UUU'U(U)U*SS[O        5       [O        5       U&U$5      n"U(       aH  [         RP                  " UW"5      nU	(       a  [S        UUU	5        [         RT                  " U5      nUUW '   SnU(       Gaƒ  [         RV                  " URY                  5       [        S5      5      n+U+R:                  (       d/  [         RZ                  " URY                  5       [        S5      S	5      n+[         R\                  " U+[        S
5      5      n,U,R:                  (       d!  [         RZ                  " U+[        S
5      S	5      n,[_        UUXWU5      n-[         R`                  " U,UW5        [         Rb                  " S5      n.S[e        U-Rf                  U-Rh                  U-Rj                  U-Rl                  U-Rn                  U-Rp                  45       SU S3n/[         Rr                  " U.U/5        [u        UURY                  5       U.U5        U(       a  UU4$ US 4$ )Nr   r   ÚWidthrõ
  ÚHeightrB  z#uncompressed image cannot have maskr=  r   ÚXObjectr¿  ú
q
z cm
/z Do
Q
);r£   r4  rô  r2  r¹  r  rç  r  rÄ   ÚMSG_IS_NO_IMAGEr/  Úfz_read_filerÅ   r   r!  Úfz_md5_pixmap2r=   ró  Úfz_new_image_from_pixmapÚFzImageÚfz_convert_pixmapr.  ÚFzDefaultColorspacesÚFzColorParamsrò  ÚFzMd5r¢   Úfz_md5_update_bufferÚfz_md5_updaterÍ   rÉ  r<   Úfz_md5_final2r   rB  Úfz_compressed_image_bufferÚbpcÚfz_image_resolutionÚ$fz_new_image_from_compressed_buffer2rµ   Úpdf_add_imagerÏ  r  r  r  rZ  r  Úcalc_image_matrixr°  rö	  r·   r!   r  rö  rD  ri  r  Úfz_append_stringÚJM_insert_contents)0r)   rk   Úpixmapr	   Úimaskr  Úoverlayra  Úkeep_proportionrÚ  r‰  r2  r  ró  Ú_imgnameÚdigestsÚmaskbufr×   rb  r   r!  Úimg_xrefÚ	rc_digestÚdo_process_pixmapÚdo_process_streamÚdo_have_imaskÚdo_have_imageÚdo_have_xrefÚrefÚimgbufÚarg_pixÚdigestÚmd5_pyr  ÚimagerT  ÚmaskÚstateÚcbuf1rš  rò  ÚxresÚyresrj  Úxobjectr�  ÚnresrŸ  s0                                                   r*   Ú_insert_imageÚPage._insert_image'  sß  € ô
 —.’.Ó"ˆØ�~‰~Óˆð �h‰h‹jˆØˆØˆØˆØˆ	àÐØÐØˆØˆØˆà�!‹8Ü×(Ò(¨¨d°AÓ6ˆCÜ× Ò ¤%×"5Ò"5°s¼HÀWÓ<MÌxÐX[Ë}Ó"]Ó^ˆAÜ× Ò ¤%×"5Ò"5°s¼HÀXÓ<NÔPXÐY\ÓP]Ó"^Ó_ˆAØ�1‰u˜‹zÜ ¤/Ó2Ð2à !ÐØ !ÐØˆMØ‰Mö Ü+¨FÓ3�Ø$%Ñ!æÜ"×/Ò/°Ó9�Fà()Ð%çð —k‘kˆGØ—	‘	“ˆAØ—	‘	“ˆAÜ×)Ò)¨'Ó2ˆFØˆFØ—;‘;˜v tÓ,ˆDØÑØ�Ü×,Ò,¨T¯X©X«Z¸À1ÓE�à$%Ð!Ø !�Ø !‘à—=‘=“? aÓ'Ü!×:Ò:¸7ÄEÇMÂMÃOÓT‘Eä×0Ò0Ø#Ü!×.Ò.Ó0Ü!×.Ò.Ó0Ü!×6Ò6°tÓ<Ü!×/Ò/Ó1Øó�Bð  !�B”HØ$(�B”MÜ ×9Ò9¸"¼e¿mºm»oÓN�DÜ!×:Ò:¸7ÀDÓI�Eà$%Ð!Ø !�çô —K’K“MˆEßŠ{Ü×*Ò*¨E°6Õ:ä×#Ò# E¨6×+<Ñ+<×+AÑ+AÀ6×CTÑCT×CXÑCXÔYÞÜ,¨UÓ3�ß’;Ü×.Ò.°°wÕ?ä×'Ò'¨¨w×/AÑ/A×/FÑ/FÈ×HZÑHZ×H^ÑH^Ô_Ü×(Ò(¨Ó/ˆFÜ˜6“]ˆFØ—;‘;˜v tÓ,ˆDØÑØ�Ü×,Ò,¨T¯X©X«Z¸À1ÓE�Ü×$Ò$¤e×&9Ò&9¸3ÄÈÓ@QÔS[Ð\_ÓS`Ó&aÓb�Ü×$Ò$¤e×&9Ò&9¸3ÄÈÓ@RÔT\Ð]`ÓTaÓ&bÓc�à !�Ø !‘ä×6Ò6°vÓ>�Ø—G‘G“I�Ø—G‘G“I�Þà$%�Mæô ×4Ò4°eÓ<ˆEØ×#×#Ü Ð"GÓHÐHØ—)‘)“+ˆCØ×)Ñ)Ó+ˆJÜ×2Ò2°5Ó9‰JˆD�$Ü×1Ò1°'Ó:ˆDÜ×>Ò>ØØØØØØØØÜ“FÜ“FØØóˆEö ä×%Ò% c¨5Ó1ˆCÞÜ   c¨2Ô.Ü×'Ò'¨Ó,ˆHØ&ˆG�F‰OØˆIçä×6Ò6°t·x±x³zÄ8ÈKÓCXÓYˆIØ×'×'Ü!×3Ò3°D·H±H³JÄÈÓ@UÐWXÓY�	Ü×(Ò(¨´H¸YÓ4GÓHˆGØ×%×%Ü×1Ò1°)¼XÀiÓ=PÐRSÓT�Ü# A q¨$¸ÓHˆCÜ×Ò ¨°3Ô7Ü×&Ò& rÓ*ˆDØœ	 3§5¡5¨#¯%©%°·±¸¿¹¸s¿u¹uÀcÇeÁeÐ"LÓMÐNÈfÐU]ÐT^Ð^fÐgˆAä×"Ò" 4¨Ô+Ü˜s D§H¡H£J°°gÔ>æØ˜WÐ$Ð$à˜T�>Ð!r,   c                óê  • U R                  5       nUR                  5       n[        XÂX4XVXxXš5
      n[        R                  " UR                  5       [        S5      5      nUR                  5       (       d/  [        R                  " UR                  5       [        S5      S5      n[        R                  " U[        S5      5      nUR                  (       dP  [        R                  " US5      n[        R                  " UR                  5       U[        S5      [        S5      5        [        US5      u  nnU(       d  [        S5      e[        R                  " UUS5      n[        R                   " XñU5        U$ )Nr=  r   rÚ  r   zcannot insert font)rô  r2  r  r£   r  r  r  r†  rZ  r  rÍ   r[  rR  rì  rß   r¹  r°  )r)   rÿ   rÛ  r  r  Ú
set_simplerä  r
  r  r  rÝ  r×   rb  r¹   rj  rÞ  r<  r  Úfont_objs                      r*   Ú_insertFontÚPage._insertFontÁ'  s  € Ø�~‰~ÓˆØ�h‰h‹jˆä˜s¨HÀÐRWÐ`hÓsˆä×2Ò2°4·8±8³:¼xÈÓ?TÓUˆ	Ø×$Ñ$×&Ñ&Ü×/Ò/°·±³
¼HÀ[Ó<QÐSTÓUˆIÜ×"Ò" 9¬h°vÓ.>Ó?ˆØ××Ü×&Ò& s¨AÓ.ˆEÜ×Ò §¡£
¨E´8¸KÓ3HÌ(ÐSYÓJZÔ[ä˜e QÓ'‰ˆˆ4ÞÜÐ 4Ó5Ð5Ü×)Ò)¨#¨t°QÓ7ˆÜ×Ò˜E¨XÔ6Øˆr,   c                ó‚   • U R                  5       nUS:X  a  [        X15      nO[        X25      nU(       a  [        U5      $ g rŒ   )rô  ÚJM_get_annot_by_nameÚJM_get_annot_by_xrefrã   )r)   r   r  r×   rà   s        r*   Ú_load_annotÚPage._load_annotÖ'  s;   € Ø�~‰~ÓˆØ�1‹9Ü(¨Ó4‰Eä(¨Ó4ˆEÞÜ˜“<Ðð r,   c           	     óH   • [        XR                  X#XEU5      n[        U5      $ r.   )ÚJM_pixmap_from_pagerÅ   rî  )r)   r2  rõ  rö  ró  r°  r  r÷  s           r*   Ú_makePixmapÚPage._makePixmapß'  s    € Ü! #§y¡y°#¸5È$ÓOˆÜ�c‹{Ðr,   c                ó¢  • [         R                  " [         R                  R                  5      n[        U R                  SS9nUR
                  (       aV  [         R                  " UR                  5       U5      n[         R                  " U5      (       a  [         R                  " U5      n[         R                  " U5      (       a  g [        U5      $ ©NFrÖ  )r£   rr  rs  rÛ   rÅ   rÍ   r  r  r<  Úpdf_to_rectrç  rq  )r)   Úboxtyperý   r×   r  s        r*   Ú
_other_boxÚPage._other_boxã'  s‰   € Ü�|Š|œUŸ\™\×8Ñ8Ó9ˆÜ˜DŸI™I°Ñ6ˆØ�?�?Ü×%Ò% t§x¡x£z°7Ó;ˆCÜ×!Ò! #×&Ñ&Ü×(Ò(¨Ó-�Ü×$Ò$ d×+Ñ+ØÜ˜tÓ$Ð$r,   Tc                ó*   • [        U R                  US9$ )NrÖ  )rÛ   rÅ   )r)   rÎ   s     r*   rô  ÚPage._pdf_pageî'  s   € Ü˜DŸI™I°Ñ9Ð9r,   c                ó8   • U R                   R                  5         g)z,Invalidate / delete all annots of this page.N)rZ  rE  r0   s    r*   rg  ÚPage._reset_annot_refsñ'  s   € à×Ñ×ÑÕ r,   c                óL  • US:¼  a
  US:¼  a  Uc  g [        [        [        US5      S-  5      5      nUS:¼  a  Sn[        [        [        US5      S-  5      5      nUS:¼  a  SnSUS US 3nU(       d  g [        U R                  5      n[
        R                  " UR                  5       [        S5      5      nUR                  (       d/  [
        R                  " UR                  5       [        S5      S5      n[
        R                  " U[        S	5      5      n	U	R                  (       d!  [
        R                  " U[        S	5      S5      n	[
        R                  " U	5      n
[        U
5       H8  n[
        R                  " X›5      n[
        R                  " U5      nXÑ:X  d  M6  Us  $    [
        R                  " UR!                  5       S
5      n[
        R"                  " U[        S5      U5        [
        R"                  " U[        S5      U5        [
        R$                  " X‘U5        U$ )Nr   r   r¯	  éc   ÚfitzcaÚ02dr=  r   rA  r   r>  r?  )r9   rÉ  r!  rÛ   rÅ   r£   r  r  r  rÍ   rZ  r‡  rT  r‰  r…  r[  r2  r\  r°  )r)   Úgstater>  r?  r�  ÚtCAÚtcar×   rj  rl  rJ   rh  rl  r   Úopas                  r*   Ú_set_opacityÚPage._set_opacityõ'  s«  € à�‹7�r˜Q“w 9Ñ#4ØÜ”%œ˜B › cÑ)Ó*Ó+ˆØ�#‹:ØˆCÜ”%œ˜B ›
 SÑ(Ó)Ó*ˆØ�#‹:ØˆCØ˜#˜c˜ 3 s )Ð,ˆæØÜ˜DŸI™IÓ&ˆÜ×&Ò& t§x¡x£z´8¸KÓ3HÓIˆ	Ø×#×#Ü×/Ò/°·±³
¼HÀ[Ó<QÐSTÓUˆIÜ×!Ò! )¬X°kÓ-BÓCˆØ��Ü×*Ò*¨9´h¸{Ó6KÈQÓOˆDÜ×Ò˜tÓ$ˆÜ�q–ˆAÜ×'Ò'¨Ó0ˆBÜ×$Ò$ RÓ(ˆDØ�~Ø’ñ	 ô
 × Ò  §¡£¨QÓ/ˆÜ×Ò ¤X¨d£^°RÔ8Ü×Ò ¤X¨d£^°RÔ8Ü×Ò˜D¨#Ô.Øˆr,   c           
     ó¦  • U R                   nUc  [        S5      eUR                  (       d  [        S5      eSnX;  a  [        S5      e[        U5      nU R                  n[        US   UR
                  US   -
  US   UR
                  US   -
  5      nUR                  UR                  s=::  a!  UR                  s=:  a  UR                  ::  aA  O  O>UR                  UR                  s=::  a!  UR
                  s=:  a  UR
                  ::  d  O  [        U S	35      eUR                  U R                  US
[        [        U5      5       S35        g )NrŽ  r}  )ÚCropBoxÚBleedBoxÚTrimBoxÚArtBoxzbad boxtyper   r   r   r   z not in MediaBoxr™  rš  )rí   rÄ   r  r,  r8  r±  r°  r¯  r²  r›  r  r·   r¶   )r)   rÏ  rý   r2  Úvalid_boxesÚmbs         r*   Ú_set_pageboxÚPage._set_pagebox(  s  € Ø�k‰kˆØ‰;ÜÐ>Ó?Ð?à�z�zÜ˜[Ó)Ð)àBˆàÓ%Ü˜]Ó+Ð+ä�D‹zˆØ�]‰]ˆÜ�D˜‘G˜RŸU™U T¨!¡W™_¨d°1©g°r·u±u¸tÀA¹w±ÓGˆØ—‘˜Ÿ™Õ3 4§7¡7Õ3¨b¯e©eÖ3¸¿¹ÀÇÁÕ8[È4Ï7É7Õ8[ÐVX×V[ÑV[Õ8[Ü ˜yÐ(8Ð9Ó:Ð:à×Ñ˜Ÿ™ G¨q´¼5À»;Ó1GÐ0HÈÐ-JÕKr,   c                óX   • U R                  5       n[        UR                  5       X5        g r.   )rô  ÚJM_set_resource_propertyr  )r)   r   r  r×   s       r*   rr  ÚPage._set_resource_property+(  s   € Ø�~‰~ÓˆÜ  §¡£¨TÕ8r,   c	                ó  • [        U5      n	[        U5      n
Un[        U R                  5      nUR	                  5       nUR                  5       n[        U5        [        XáXGR                  5      nU(       d  [        R                  " U5      n[        R                  " US5      n[        R                  " USU5        [        R                  " US5      n[        R                  " U[        S5      U5        [        R                  " S5      n[        R                  " US5        [        R                   " XéU
UU5      nUS:”  a!  [#        U[        R$                  " U5      U5        [        R&                  " U[        S5      5      nUR(                  (       d!  [        R*                  " U[        S5      S5      n[        R,                  " U[        S5      5      nUR(                  (       d!  [        R*                  " U[        S5      S5      n[        R                  " UUU5        [        R                  " S5      n[        R                  " US	5        [        R                  " UU5        [        R                  " US
5        [/        XíUU5        U$ )Nr   Úfullpager‹  é   z/fullpage Dor   r=  r¿  z q /z Do Q )r  rê  rÛ   rÅ   r  r2  rB  ÚJM_xobject_from_pager£   r  r[  r°  rV  r  rö	  rŸ  Úpdf_new_xobjectrÏ  rè  r  rÍ   rZ  r  r   )r)   Ú
fz_srcpager£  rð  r  rÚ  r  r|  r¥  r€	  r�  Úrc_xrefr„  ÚtpagerefrÏ  Úxobj1Úsubres1Úsubresr&  Úxobj2rj  r»  s                         r*   Ú_show_pdf_pageÚPage._show_pdf_page/(  sé  € Ü! $Ó'ˆÜ Ó'ˆØˆÜ˜TŸY™YÓ'ˆØ—9‘9“;ˆØ—‘“ˆÜ˜Ô ô % V¸¿}¹}ÓMˆÞÜ×&Ò& uÓ-ˆGô ×$Ò$ V¨QÓ/ˆÜ×Ò˜G Z°Ô7Ü×#Ò# F¨AÓ.ˆÜ×Ò˜6¤8¨IÓ#6¸Ô@ä×!Ò! "Ó%ˆÜ×Ò˜s NÔ3ä×%Ò% f°s¸FÀCÓHˆØ�‹6Ü˜V¤U×%?Ò%?ÀÓ%FÈÔKô ×2Ò2°8¼XÀkÓ=RÓSˆ	Ø×#×#Ü×/Ò/°¼À+Ó9NÐPQÓRˆIÜ×#Ò# I¬x¸	Ó/BÓCˆØ× × Ü×,Ò,¨Y¼ÀÓ8KÈQÓOˆFä×Ò˜F H¨eÔ4ô
 ×"Ò" 2Ó&ˆÜ×Ò˜t VÔ,Ü×Ò˜t XÔ.Ü×Ò˜t XÔ.ä˜6¨T°7Ô;Øˆr,   c                óú   • [        U 5      n U R                  U5      nUS:w  a  U R                  U5        [        U5      n[	        X5        [        US5      (       d   eU$ ! US:w  a  U R                  U5        f f = f)zAdd a 'Caret' annotation.r   rí   )Úannot_preprocessrò  rï  rã   Úannot_postprocessr@   )r)   rj  Úold_rotationrà   s       r*   Úadd_caret_annotÚPage.add_caret_annoth(  s   € ä'¨Ó-ˆð	0Ø×)Ñ)¨%Ó0ˆEà˜qÓ Ø×!Ñ! ,Ô/Ü�u“ˆÜ˜$Ô&Ü˜˜x×(Ñ(Ð(Ð(Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !ús   �A  Á A:c                óÜ   • [        U 5      n U R                  U[        R                  5      nUS:w  a  U R	                  U5        [        X5        U$ ! US:w  a  U R	                  U5        f f = f)z*Add a 'Circle' (ellipse, oval) annotation.r   )rû  r/  r£   rE  rï  rü  ©r)   rý   rý  rà   s       r*   Úadd_circle_annotÚPage.add_circle_annotu(  ók   € ä'¨Ó-ˆð	0Ø×.Ñ.¨t´U×5KÑ5KÓLˆEà˜qÓ Ø×!Ñ! ,Ô/Ü˜$Ô&Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !úó   � A ÁA+c           	     óÄ   • [        U 5      n U R                  UUUUUUS9nUS:w  a  U R                  U5        [        X5        U$ ! US:w  a  U R                  U5        f f = f)z"Add a 'FileAttachment' annotation.)rS  rË  rý  r   )rû  r   rï  rü  )	r)   rj  r5  rk   rS  rË  rý  rý  rà   s	            r*   Úadd_file_annotÚPage.add_file_annot€(  s}   € ô (¨Ó-ˆð
	0Ø×(Ñ(¨ØØØ'ØØð )ð ˆEð ˜qÓ Ø×!Ñ! ,Ô/Ü˜$Ô&Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !ús   �A ÁA©r   rÿ   rþ   r`  r)  rN  r‹  r
  r  r^  r  ra  r  rŠ  c               óÚ   • [        U 5      n U R                  UUUUUUUUU	U
UUUUUUS9nUS:w  a  U R                  U5        [        U U5        U$ ! US:w  a  U R                  U5        f f = f)zAdd a 'FreeText' annotation.r	  r   )rû  r  rï  rü  )r)   rý   r   r   rÿ   rþ   r`  r)  rN  r‹  r
  r  r^  r  ra  r  rŠ  rý  rà   s                      r*   Úadd_freetext_annotÚPage.add_freetext_annot™(  sž   € ô, (¨Ó-ˆð	0Ø×,Ñ,ØØØ%Ø%Ø)Ø)Ø!-Ø!-Ø!Ø#Ø%Ø#ØØ!Ø%Øð! -ð ˆEð& ˜qÓ Ø×!Ñ! ,Ô/Ü˜$ Ô&Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !ús   �A ÁA*c                óx   • Uc  [        XX4S9nO[        U5      nU R                  U[        R                  5      nU$ )zAdd a 'Highlight' annotation.©rÇ  rƒ  r  )Úget_highlight_selectionÚCheckMarkerArgrO  r£   ÚPDF_ANNOT_HIGHLIGHT)r)   rd
  rÇ  rƒ  r  r+  rL   s          r*   Úadd_highlight_annotÚPage.add_highlight_annotÉ(  s<   € ð ‰=Ü'¨ÀÑP‰Aä˜uÓ%ˆAØ×#Ñ# A¤u×'@Ñ'@ÓAˆØˆ
r,   c                ó¾   • [        U 5      n U R                  U5      nUS:w  a  U R                  U5        [        X5        U$ ! US:w  a  U R                  U5        f f = f)z^Add a 'Ink' ('handwriting') annotation.

The argument must be a list of lists of point_likes.
r   )rû  r  rï  rü  )r)   Úhandwritingrý  rà   s       r*   Úadd_ink_annotÚPage.add_ink_annotÓ(  se   € ô
 (¨Ó-ˆð	0Ø×'Ñ'¨Ó4ˆEà˜qÓ Ø×!Ñ! ,Ô/Ü˜$Ô&Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !úó   �A ÁAc                ó¾   • [        U 5      n U R                  X5      nUS:w  a  U R                  U5        [        X5        U$ ! US:w  a  U R                  U5        f f = f)zAdd a 'Line' annotation.r   )rû  r  rï  rü  )r)   rF  rG  rý  rà   s        r*   Úadd_line_annotÚPage.add_line_annotá(  sc   € ä'¨Ó-ˆð	0Ø×(Ñ(¨Ó0ˆEà˜qÓ Ø×!Ñ! ,Ô/Ü˜$Ô&Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !úr  c                óÜ   • [        U 5      n U R                  U[        R                  5      nUS:w  a  U R	                  U5        [        X5        U$ ! US:w  a  U R	                  U5        f f = f)zAdd a 'Polygon' annotation.r   )rû  r#  r£   rH  rï  rü  ©r)   rE  rý  rà   s       r*   Úadd_polygon_annotÚPage.add_polygon_annotì(  sk   € ä'¨Ó-ˆð	0Ø×'Ñ'¨´×0GÑ0GÓHˆEà˜qÓ Ø×!Ñ! ,Ô/Ü˜$Ô&Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !úr  c                óÜ   • [        U 5      n U R                  U[        R                  5      nUS:w  a  U R	                  U5        [        X5        U$ ! US:w  a  U R	                  U5        f f = f)zAdd a 'PolyLine' annotation.r   )rû  r#  r£   rG  rï  rü  r  s       r*   Úadd_polyline_annotÚPage.add_polyline_annot÷(  sk   € ä'¨Ó-ˆð	0Ø×'Ñ'¨´×0IÑ0IÓJˆEà˜qÓ Ø×!Ñ! ,Ô/Ü˜$Ô&Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !úr  c                óÜ   • [        U 5      n U R                  U[        R                  5      nUS:w  a  U R	                  U5        [        X5        U$ ! US:w  a  U R	                  U5        f f = f)z&Add a 'Square' (rectangle) annotation.r   )rû  r/  r£   rD  rï  rü  r  s       r*   Úadd_rect_annotÚPage.add_rect_annot)  r  r  c	                óæ  • Sn	U(       aÑ  [        [        R                  5      R                  U5      (       d¤  [	        U5        [	        U5        U(       d  SnU(       d  SnU(       d  Sn[        US5      (       a  XwU4n[        U5      S:”  a  USS nSn
U
R                  " XsUS.6n	Uc  S	nU(       a)  [        US5      (       a  XfU4n[        U5      S:”  a  USS nOSn[        U 5      n U R                  XU	XVS
9nUS:w  a  U R                  U5        [        X5        U(       a±  UR                  5       R                  5       SS nUu  pïnnnUR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  S5        SR                  U5      nUR!                  US5        U$ ! US:w  a  U R                  U5        f f = f)zAdd a 'Redact' annotation.NrL  r¢  rK  r—  r   r¤  r¥  ©r   r   r   )r   r*  r  r  r   r¨  r  r
  )r«  r  Ú
whitespacer‹
  r�  r@   r<   r­  rû  r,  rï  rü  r)  r  rp   r  r8  )r)   rI  r   rÿ   r   r  r  rþ   r*  r*  r²   rý  rà   r:  r<  r=  r>  r?  r@  r(  s                       r*   Úadd_redact_annotÚPage.add_redact_annot)  sÓ  € ð ˆÞœœF×-Ñ-Ó.×9Ñ9¸$×?Ñ?Ü�tÔÜ�zÔ"ÞØ!�ÞØ�ÞØ&�
Ü�z ;×/Ñ/Ø(°jÐA�
Ü�:‹ Ó"Ø'¨¨˜^�
Ø5ˆCØ—Z’Z ¸8ÒDˆFØ‰|Ø �ÞÜ˜4 ×-Ñ-Ø ¨Ð-�DÜ�t“9˜q“=Ø  ˜8�DøàˆDä'¨Ó-ˆð	0Ø×*Ñ*¨4À6Ø"ð +ð /ˆEð ˜qÓ Ø×!Ñ! ,Ô/Ü˜$Ô&ö Ø—\‘\“^×.Ñ.Ó0°°"Ð5ˆFØ &ÑˆA�2�r˜2Ø�M‰M˜"ÔØ�M‰M˜"ÔØ�M‰M˜"ÔØ�M‰M˜"ÔØ�M‰M˜"ÔØ�M‰M˜$ÔØ—‘˜FÓ#ˆBØ�L‰L˜˜QÔØˆøð# ˜qÓ Ø×!Ñ! ,Õ/ð !ús   Ã)G ÇG0c                ót   • Uc  [        XX4S9nO[        U5      nU R                  U[        R                  5      $ )zAdd a 'Squiggly' annotation.r  )r  r  rO  r£   ÚPDF_ANNOT_SQUIGGLY©r)   rd
  rÇ  rƒ  r  r+  s         r*   Úadd_squiggly_annotÚPage.add_squiggly_annotK)  s8   € ð ‰=Ü'¨ÀÑP‰Aä˜uÓ%ˆAØ×$Ñ$ Q¬×(@Ñ(@ÓAÐAr,   c                ó¾   • [        U 5      n U R                  X5      nUS:w  a  U R                  U5        [        X5        U$ ! US:w  a  U R                  U5        f f = f)z$Add a ('rubber') 'Stamp' annotation.r   )rû  rH  rï  rü  )r)   rý   rD  rý  rà   s        r*   Úadd_stamp_annotÚPage.add_stamp_annotY)  sc   € ä'¨Ó-ˆð	0Ø×)Ñ)¨$Ó6ˆEà˜qÓ Ø×!Ñ! ,Ô/Ü˜$Ô&Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !úr  c                ót   • Uc  [        XX4S9nO[        U5      nU R                  U[        R                  5      $ )zAdd a 'StrikeOut' annotation.r  )r  r  rO  r£   ÚPDF_ANNOT_STRIKE_OUTr-  s         r*   Úadd_strikeout_annotÚPage.add_strikeout_annotd)  s6   € à‰=Ü'¨ÀÑP‰Aä˜uÓ%ˆAØ×$Ñ$ Q¬×(BÑ(BÓCÐCr,   c                ó¼   • [        U 5      n U R                  XUS9nUS:w  a  U R                  U5        [        X5        U$ ! US:w  a  U R                  U5        f f = f)z&Add a 'Text' (sticky note) annotation.)rý  r   )rû  rK  rï  rü  )r)   rj  r   rý  rý  rà   s         r*   Úadd_text_annotÚPage.add_text_annotl)  sh   € ä'¨Ó-ˆð	0Ø×(Ñ(¨¸4Ð(Ð@ˆEà˜qÓ Ø×!Ñ! ,Ô/Ü˜$Ô&Øˆøð ˜qÓ Ø×!Ñ! ,Õ/ð !ús   �A ÁAc                ót   • Uc  [        XX4S9nO[        U5      nU R                  U[        R                  5      $ )zAdd a 'Underline' annotation.r  )r  r  rO  r£   ÚPDF_ANNOT_UNDERLINEr-  s         r*   Úadd_underline_annotÚPage.add_underline_annotw)  s6   € à‰=Ü'¨ÀÑP‰Aä˜uÓ%ˆAØ×$Ñ$ Q¬×(AÑ(AÓBÐBr,   c                ó¨  • [        U 5        U R                  nUR                  (       d  [        S5      eUR	                  5         U R                  UR                  UR                  5      nU(       d  gSUl        [        R                  " U 5      Ul        X0R                  [        U5      '   UR                  Ul        X1l        UR                  5         U$ )zAdd a 'Widget' (form field).r}  NT)rp  rí   r  rÄ   r…  rZ  rW  rR  rö   r   r"  rZ  r[  rš  rJ  )r)   r^  r2  rà   s       r*   Ú
add_widgetÚPage.add_widget)  sš   € ä�DÔØ�k‰kˆØ�z�zÜ˜[Ó)Ð)Ø×ÑÔØ—‘ × 1Ñ 1°6×3DÑ3DÓEˆÞØØˆŒÜ—}’} TÓ*ˆŒØ&+×Ñœ˜E›Ñ#ØŸ™ˆŒØŒØ�‰ŒØˆr,   c                ót   •  [        U 5        U R                  SS9nUR                  (       d  / $ [        U5      $ )z
page get list of annot names
FrÖ  )rp  rô  rÍ   ÚJM_get_annot_id_list©r)   r×   s     r*   Úannot_namesÚPage.annot_names‘)  s6   € ð 	>Ü�DÔØ�~‰~ uˆ~Ð-ˆØ��ØˆIÜ# DÓ)Ð)r,   c                ó   • [        U 5      $ )z8
List of xref numbers of annotations, fields and links.
)ÚJM_get_annot_xref_list2r0   s    r*   rz  ÚPage.annot_xrefsœ)  s   € ô ' tÓ,Ð,r,   c              #  óÈ  #   • [         R                  [         R                  [         R                  4n[	        US5      (       d.  U R                  5        Vs/ s H  o3S   U;  d  M  US   PM     nnO8U R                  5        Vs/ s H  o3S   U;   d  M  US   U;  d  M  US   PM     nnU H(  nU R                  U5      nU(       d  M  SUl        Uv •  M*     gs  snf s  snf 7f)zâGenerator over the annotations of a page.

Args:
    types: (list) annotation types to subselect from. If none,
           all annotations are returned. E.g. types=[PDF_ANNOT_LINE]
           will only yield line annotations.
r�  r   r   TN)r£   r¥  ÚPDF_ANNOT_POPUPrV  r@   rz  Ú
load_annotÚ_yielded)r)   ÚtypesÚ
skip_typesr!   rz  r  rà   s          r*   r°  ÚPage.annots¢)  sÒ   é € ô ×*Ñ*¬E×,AÑ,AÄ5×CYÑCYÐZˆ
Ü�u˜m×,Ñ,Ø)-×)9Ñ)9Ô);ÓVÒ); AÀ¹tÈ:Ñ?U›4˜1˜Qœ4Ñ);ˆKÐVˆKà)-×)9Ñ)9Ô);ÓhÒ); AÀ¹tÀu¹}›4ÐQRÐSTÑQUÐ]gÑQg›4˜1˜Qœ4Ñ);ˆKÐhÛˆDØ—O‘O DÓ)ˆEçˆuØ#�”Ø”ò  ùò Wùâhùs6   ‚AC"ÁCÁ%	CÁ.C"ÂCÂCÂ	CÂ'C"ÃC"c           
     ób  • S n[        U 5        U R                  nUR                  (       d  UR                  (       a  [	        S5      eUR
                  (       d  [	        S5      e/ nU R                  [        R                  4S9 H"  nUR                  UR                  5       5        M$     U/ :X  a  gU R                  X1U5      nU(       d  [	        S5      eU R                  5       n	U Hµ  n
U
S   nU
S   nU(       a   U	R                  U5        U	R                  XÌS	9  S
U
R                  5       ;   d  MJ  U
S
   nU
R!                  SS5      nU
S   nU
S   nU
S   nU" X½UU5      nSnUS:  d  M„  US:¼  d  MŒ  U	R#                  UUUUUUS9nUS-  nUS:  d  M­  US:¼  a  M)  M·     U	R%                  5         g)aÌ  Apply the redaction annotations of the page.

Args:
    page: the PDF page.
    images:
          0 - ignore images
          1 - remove all overlapping images
          2 - blank out overlapping image parts
          3 - remove image unless invisible
    graphics:
          0 - ignore graphics
          1 - remove graphics if contained in rectangle
          2 - remove all overlapping graphics
    text:
          0 - remove text
          1 - ignore text
c                ó¸  • U(       a  U R                   [        ::  a  U $  [        XU5      nUS-  nU R                   n[        R                  " XF-  5      U-  nXpR                  :¼  a  U $ U nU R                  R                  U R                  R                  -   U-
  S-  n	X˜l        U$ ! [        [        R
                  4 a    [        (       a
  [        5         U s $ f = f)a   Calculate minimal sub-rectangle for the overlay text.

Notes:
    Because 'insert_textbox' supports no vertical text centering,
    we calculate an approximate number of lines here and return a
    sub-rect with smaller height, which should still be sufficient.
Args:
    annot_rect: the annotation rectangle
    new_text: the text to insert.
    font: the fontname. Must be one of the CJK or Base-14 set, else
        the rectangle is returned unchanged.
    fsize: the fontsize
Returns:
    A rectangle to use instead of the annot rectangle.
ç333333ó?ç      à?)r‰  rÿ  Úget_text_lengthrÄ   r£   ÚFzErrorBaser  r{   r¬  Úceilr2  r$  rf  Úblr²  )
Ú
annot_rectÚnew_textrÜ  r3  Ú
text_widthÚline_heightrÞ  r!  r%  rf  s
             r*   Úcenter_rectÚ*Page.apply_redactions.<locals>.center_rectÎ)  sÊ   € ö  ˜z×/Ñ/´7Ó:Ø!Ð!ð"Ü,¨X¸UÓC�
ð
   #™+ˆKØ×$Ñ$ˆEÜ—	’	˜*Ñ,Ó-°Ñ;ˆAØ×%Ñ%Ó%Ø!Ð!ØˆAØ—‘—‘ :§=¡=§?¡?Ñ2°QÑ6¸#Ñ=ˆAØŒDØˆHøô ¤× 1Ñ 1Ð2ó "ß'Ò'Ü"Ô$Ø!Ò!ð"ús   ŸB% Â%1CÃCrÕ  r}  )rM  FzError applying redactions.rý   r  )r  ro  r   r  r   rÿ   r   rþ   r¨  rr  )rÿ   r   ro  r  rS  T)rp  rí   r¦  rÃ   rÄ   r  r°  r£   r  rp   r  rd  Ú	new_shapeÚ	draw_rectÚfinishr{  r=   Úinsert_textboxÚcommit)r×   rH
  rb  r   r\  r2  Úredact_annotsrà   r¦   ÚshapeÚredactrX  r  rY  r  r2  r3  ro  Útrects                      r*   rO
  ÚPage.apply_redactions¶)  s³  € ò0 	ôD 	�DÔØ�k‰kˆØ××˜sŸ}Ÿ}ÜÐ;Ó<Ð<Ø�z�zÜ˜[Ó)Ð)àˆØ—[‘[Ü×)Ñ)Ð+ð !ó 
ˆEð × Ñ  ×!9Ñ!9Ó!;Ö<ñ	
ð ˜BÓØà×#Ñ# D°(Ó;ˆÞÜÐ9Ó:Ð:ð —‘Ó ˆÛ#ˆFØ ™ˆJØ˜&‘>ˆDÞØ—‘ 
Ô+Ø—‘ $�Ñ3Ø˜Ÿ™›Õ&Ø! &™>�ØŸ
™
 7¨AÓ.�Ø˜zÑ*�Ø˜zÑ*�Ø˜|Ñ,�á# J¸%ÀÓG�à�Ø˜1•f ¨!¥à×-Ñ-ØØ Ø!&Ø!&Ø#Ø#ð .ð �Bð ˜S‘L�Eð ˜1•f ¨!§ñ! $ð6 	�‰ŒØr,   c                óô   • US;  a  [        S5      e[        U R                  5      n[        R                  " 5       nXl        [        R                  " U5      n[        R                  " X R                  U5        g)zJConvert colorspaces of objects on the page.

Valid values are 1, 3 and 4.
r˜  z!components must be one of 1, 3, 4N)	rÄ   rÏ   rí   r£   Úpdf_recolor_optionsÚnum_compÚPdfRecolorOptionsÚpdf_recolor_pager;  )r)   rð	  ÚpdfdocÚroptÚroptss        r*   rß	  ÚPage.recolor%*  s]   € ð
 ˜YÓ&ÜÐ@ÓAÐAÜ! $§+¡+Ó.ˆÜ×(Ò(Ó*ˆØ"ŒÜ×'Ò'¨Ó-ˆÜ×Ò˜v§{¡{°EÕ:r,   c                ó  • [        U5      nUR                  (       d  X R                  -  R                  (       a  [	        S5      eX R
                  -  n[        U 5      n[        U5      n[        R                  " X45        [        U5        g)z-Clip away page content outside the rectangle.z"rect must not be infinite or emptyN)r,  r€  rý   r�  rÄ   ru  rÛ   r  r£   Úpdf_clip_pager]  )r)   rý   r  râ  Úpclips        r*   Úclip_to_rectÚPage.clip_to_rect2*  sg   € ä�D‹zˆØ×× §y¡yÑ 0×:×:ÜÐAÓBÐBØ×*Ñ*Ñ*ˆÜ˜tÓ$ˆÜ Ó%ˆÜ×Ò˜GÔ+Ü˜Õ!r,   c                óZ   • U R                   b  g[        (       d  g[        U 5      nXl         g)z!Try to access layout information.N)Úlayout_informationr”   )r)   Úlayout_infos     r*   Ú
get_layoutÚPage.get_layout=*  s+   € ð ×"Ñ"Ñ.àçŠ{àä! $Ó'ˆØ"-Õr,   c                óÂ   • U R                  S5      nUc  U R                  $ U R                  n[        US   UR                  US   -
  US   UR                  US   -
  5      $ )z
The ArtBoxrä  r   r   r   r   ©rÐ  r€	  r8  r,  r±  ©r)   rý   ræ  s      r*   ÚartboxÚPage.artboxK*  s[   € ð �‰˜xÓ(ˆØ‰<Ø—<‘<ÐØ�]‰]ˆÜ�D˜‘G˜RŸU™U T¨!¡W™_¨d°1©g°r·u±u¸tÀA¹w±ÓGÐGr,   c                óÂ   • U R                  S5      nUc  U R                  $ U R                  n[        US   UR                  US   -
  US   UR                  US   -
  5      $ )zThe BleedBoxrâ  r   r   r   r   r|  r}  s      r*   ÚbleedboxÚPage.bleedboxT*  s[   € ð �‰˜zÓ*ˆØ‰<Ø—<‘<ÐØ�]‰]ˆÜ�D˜‘G˜RŸU™U T¨!¡W™_¨d°1©g°r·u±u¸tÀA¹w±ÓGÐGr,   c                óÂ  • [        U 5        [        U R                  5      n[        R                  " U5      n[        U5      nUR                  (       aŒ  U R                  R                  (       aq  U R                  nUR                  UR                  pTU R                  S;  a  XTpT[        SSXE5      n[        R                  SS9R                  5       S   n[!        U5        U$ )zGet page rectangle.©r   é´   r   F)rM
  r¨  )rp  rØ   rÅ   r£   r}  r,  r€  rí   r  r€	  r‰  r2  rx  r  Úmupdf_warningsr  rw   )r)   r×   r  Úcbr   r!  rž   s          r*   ÚboundÚ
Page.bound]*  s¨   € ä�DÔÜ˜4Ÿ9™9Ó%ˆÜ×!Ò! $Ó'ˆÜ�3‹iˆà�?�?˜tŸ{™{×1×1Ø—‘ˆBØ—8‘8˜RŸY™YˆqØ�}‰} HÓ,Ø�1Ü�q˜!˜QÓ"ˆCÜ×&Ñ&¨UÐ&Ð3×>Ñ>Ó@ÀÑDˆCÜ�CŒLàˆ
r,   c                óþ   • U(       d!  U R                   (       d  U R                  5         [        U R                  SS9nUR                  (       d  g [        SUS9n[        R                  " UR                  5       X#5        g )NFrÖ  r   )r˜  r›  )	Ú
is_wrappedÚwrap_contentsrÛ   rÅ   rÍ   r�  r£   Úpdf_filter_page_contentsr2  )r)   r›  r×   rŸ  s       r*   r   ÚPage.clean_contentso*  sS   € Þ §§Ø×ÑÔ Ü˜TŸY™Y°Ñ7ˆØ��ØÜ(°¸XÑFˆÜ×&Ò&¨¯©«
°DÕBr,   c                óæ   • [        U 5        U R                  SS9nUR                  (       d!  [        R                  " U R
                  5      nO[        UR                  5       5      n[        U5      nU$ )zThe CropBox.FrÖ  )	rp  rô  rÍ   r£   r}  rÅ   r	  r  r,  )r)   r×   r  s      r*   r€	  ÚPage.cropboxx*  sU   € ô 	�DÔØ�~‰~ uˆ~Ð-ˆØ��Ü×%Ò% d§i¡iÓ0‰Cä˜TŸX™X›ZÓ(ˆCÜ�3‹iˆàˆ
r,   c                ó.   • U R                   R                  $ r.   )r€	  r$  r0   s    r*   Úcropbox_positionÚPage.cropbox_position…*  s   € à�|‰|�‰Ðr,   c                ó  • [        U 5        [        U5        U R                  5       n [        UR                  5      nU(       d  O"[        R
                  " X#R                  5        M?  [        R                  " UR                  5      n[        R
                  " X!R                  5        [        U5      nU(       aC  SUl        [        R                  " U 5      Ul        XUR                  R                  [        U5      '   UR                  5         U$ )z!Delete annot and return next one.T)rp  rô  rª  rÅ   r£   r«  rW  rã   rö   r   r"  rí   rZ  r[  r÷   )r)   rà   r×   r¯  Ú	nextannotr  s         r*   Údelete_annotÚPage.delete_annot‰*  s¼   € ä�DÔÜ�EÔà�~‰~ÓˆØä)¨%¯*©*Ó5ˆIÞØÜ×"Ò" 4¯©Ô8ñ ô ×(Ò(¨¯©Ó4ˆ	Ü×Ò˜t§Z¡ZÔ0Ü�IÓˆæØˆCŒKÜ Ÿš tÓ,ˆCŒJØ.1�J‰J×"Ñ"¤2 c£7Ñ+Ø�‰ŒØˆ
r,   c                ód   • [        [        SS5      nUR                  5         U R                  XS9  g)z¥Delete the image referred to by xef.

Actually replaces by a small transparent Pixmap using method Page.replace_image.

Args:
    xref: xref of the image to delete.
©r   r   r   r   r   )r¡  N)rî  rå  Ú
clear_withÚreplace_image)r×   r  r÷  s      r*   Údelete_imageÚPage.delete_image *  s-   € ô ”V˜\¨1Ó-ˆØ�‰ÔØ×Ñ˜4ÐÒ,r,   c                óH  ^ ^• [        T 5        [        T[        5      (       d  gUU 4S jn[        T R                  SS9nUR
                  (       d  U" 5       $ T[           nUS:  a  U" 5       $ [        R                  " UR                  5       [        S5      5      nUR
                  (       d  U" 5       $ [        R                  " U5      nUS:X  a  U" 5       $ Sn[        U5       H4  n[        R                  " [        R                  " XX5      5      nXG:X  d  M4    O   XG:w  a  U" 5       $ [        R                  " UW5        [        R                   " UR#                  5       U5        [        R$                  " UR                  5       [        S5      U5        ['        U5        U" 5       $ )zDelete a Link.Nc                 ó¬   >• TS   S:X  a  g  TS   n TR                   U    nUR                  5         g ! [         a    [        S:”  a
  [	        5          g f = f)Nr  r   r[  r   )rZ  r÷   rl   r  r{   )ÚlinkidÚlinkobjÚlinkdictr)   s     €€r*   ÚfinishedÚ"Page.delete_link.<locals>.finished³*  sY   ø€ Ø˜Ñ 1Ó$ fðØ! $™�Ø×*Ñ*¨6Ñ2�Ø—‘Õ øÜó ä'¨!Ó+´Ô0@Ùðús   �$2 ²AÁAFrÖ  r   r§  r   )rp  rC   r:   rÛ   rÅ   rÍ   r  r£   r  r  r  r¬  rT  r  r­  r®  rë  r2  rV  r]  )	r)   r¢  r£  r×   r  r°  r·  Úoxrefrh  s	   ``       r*   rN
  ÚPage.delete_link­*  s?  ù€ ä�DÔÜ˜8¤T×*Ñ*Øö		ô ˜DŸI™I°Ñ6ˆØ��Ù“:ÐØœÑ%ˆØ�!‹8Ù“:ÐÜ×#Ò# T§X¡X£Z´¸(Ó1CÓDˆØ× × Ù“:ÐÜ×"Ò" FÓ+ˆØ�1‹9Ù“:ÐØˆÜ˜–ˆAÜ×$Ò$¤e×&9Ò&9¸6Ó&EÓFˆEØ�}Ùñ ð
 ‹=Ù“:ÐÜ×Ò ¨Ô*Ü×Ò §¡£¨TÔ2Ü×Ò˜DŸH™H›J¬°Ó(:¸FÔCÜ˜$Ôá‹zÐr,   c                ó   • [        U 5        [        USS5      nUc  [        S5      eUR                  nU R	                  U5        SUR
                  l        [        UR                  R                  5       5      nU H  nUR                  U	 M     U$ )z0Delete widget from page and return the next one.rš  Nzbad type: widget)
rp  rï   rÄ   r_  r–  rš  rí   rµ   r¨  r{  )r×   r^  rà   Ú
nextwidgetÚkeylistrŽ  s         r*   Údelete_widgetÚPage.delete_widgetÙ*  s   € ä�DÔÜ˜ ¨$Ó/ˆØ‰=ÜÐ/Ó0Ð0Ø—[‘[ˆ
Ø×Ñ˜%Ô Ø#ˆ�‰ÔÜ�v—‘×+Ñ+Ó-Ó.ˆÛˆCØ—‘ Ò$ñ àÐr,   c                ó@  • [         (       a)  [        [        R                  " U R                  5      5      $ U R                  SS9nUR                  (       d7  [        [        R                  " [        R                  R                  5      5      $ [        [        U5      5      $ )zReflects page de-rotation.FrÖ  )r  r€  r   ÚPage_derotate_matrixrÅ   rô  rÍ   r£   rr  ÚUNITra  )r)   râ  s     r*   rv  ÚPage.derotation_matrixç*  sk   € ÷ Š;Üœ%×4Ò4°d·i±iÓ@ÓAÐAØ—.‘.¨%�.Ð0ˆØ×!×!Üœ%Ÿ,š,¤u§|¡|×'8Ñ'8Ó9Ó:Ð:ÜÔ-¨gÓ6Ó7Ð7r,   rq  c                óê   • U R                  5       nUR                  [        U5      [        U5      [        U5      [        U5      5      nUR                  UUUUUUU	U
UUUS9  UR	                  U5        U$ )zODraw a general cubic Bezier curve from p1 to p4 using control points p2 and p3.©ro  r  r‹  r‰  ÚlineCapÚlineJoinr'  Ú	closePathÚstroke_opacityÚfill_opacityrÚ  )r^  Údraw_bezierr#  r`  rb  )r×   rF  rG  Úp3Úp4ro  r  r‹  r‰  r'  r´  r²  r³  r£  rµ  r¶  rÚ  r1  rü   s                      r*   r·  ÚPage.draw_bezierñ*  sy   € ð( �n‰nÓˆØ�O‰OœE "›I¤u¨R£y´%¸³)¼UÀ2»YÓGˆØ�
‰
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                ó®   • U R                  5       nUR                  [        U5      U5      nUR                  UUUUUU	UUUUS9
  UR	                  U
5        U$ )ú*Draw a circle given its center and radius.©
ro  r  r‹  r‰  r²  r³  r'  rµ  r¶  rÚ  )r^  Údraw_circler#  r`  rb  )r×   r¼  Úradiusro  r  r'  r‹  r‰  r²  r³  r£  rµ  r¶  rÚ  r1  rü   s                   r*   r¾  ÚPage.draw_circle+  sf   € ð" �n‰nÓˆØ�O‰OœE &›M¨6Ó2ˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ð 	�
‰
�7ÔØˆr,   c                óÖ   • U R                  5       nUR                  [        U5      [        U5      [        U5      5      nUR                  UUUUU
UUU	UUUS9  UR	                  U5        U$ )zdDraw a special Bezier curve from p1 to p3, generating control points on lines p1 to p2 and p2 to p3.r±  )r^  Ú
draw_curver#  r`  rb  )r×   rF  rG  r¸  ro  r  r‹  r‰  r'  r´  r²  r³  r£  rµ  r¶  rÚ  r1  rü   s                     r*   rÂ  ÚPage.draw_curve:+  ss   € ð& �n‰nÓˆØ�N‰Nœ5 ›9¤e¨B£i´°r³Ó;ˆØ�
‰
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                óÀ   • U R                  5       nUR                  [        U5      [        U5      5      nUR                  UUUSUUU	U
UUS9
  UR	                  U5        U$ )z&Draw a line from point p1 to point p2.F©
ro  r‹  r‰  r´  r²  r³  r'  rµ  r¶  rÚ  )r^  Ú	draw_liner#  r`  rb  )r×   rF  rG  ro  r‹  r‰  r²  r³  r£  r'  rµ  r¶  rÚ  r1  r³  s                  r*   rÆ  ÚPage.draw_line`+  sj   € ð  �n‰nÓˆØ�M‰Mœ% ›)¤U¨2£YÓ/ˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                óš   • U R                  5       nUR                  U5      nUR                  UUUUUUUU
UUS9
  UR                  U	5        U$ )z4Draw an oval given its containing rectangle or quad.r½  )r^  Ú	draw_ovalr`  rb  )r×   rý   ro  r  r‹  r'  r‰  r²  r³  r£  rµ  r¶  rÚ  r1  rü   s                  r*   rÉ  ÚPage.draw_oval‚+  s`   € ð  �n‰nÓˆØ�M‰M˜$ÓˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                óœ   • U R                  5       nUR                  U5      nUR                  UUUUUUUU
UUUS9  UR                  U	5        U$ )z&Draw multiple connected line segments.r±  )r^  Údraw_polyliner`  rb  )r×   rE  ro  r  r‹  r‰  r'  r²  r³  r£  r´  rµ  r¶  rÚ  r1  rü   s                   r*   rÌ  ÚPage.draw_polyline¤+  se   € ð" �n‰nÓˆØ×Ñ˜fÓ%ˆØ�
‰
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                ó¬   • U R                  5       nUR                  [        U5      5      nUR                  UUUUUUUU
UUS9
  UR	                  U	5        U$ )zDraw a quadrilateral.r½  )r^  Ú	draw_quadÚQuadr`  rb  )r×   rI  ro  r  r‹  r‰  r²  r³  r'  r£  rµ  r¶  rÚ  r1  rü   s                  r*   rÏ  ÚPage.draw_quadÈ+  sd   € ð  �n‰nÓˆØ�M‰Mœ$˜t›*Ó%ˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                óª   • U R                  5       nUR                  [        U5      US9nUR                  UUUUUUUU
UUS9
  UR	                  U	5        U$ )z7
Draw a rectangle. See Shape class method for details.
©r¿  r½  )r^  r_  r,  r`  rb  )r×   rý   ro  r  r‹  r‰  r²  r³  r'  r£  rµ  r¶  rÚ  r¿  r1  rü   s                   r*   r_  ÚPage.draw_rectê+  sh   € ð& �n‰nÓˆØ�M‰Mœ$˜t›*¨VˆMÐ4ˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                óÀ   • U R                  5       nUR                  [        U5      [        U5      X7S9nUR                  UUUU	UUUU
UUUS9  UR	                  U5        U$ )zïDraw a circle sector given circle center, one arc end point and the angle of the arc.

Parameters:
    center -- center of circle
    point -- arc end point
    beta -- angle of arc (degrees)
    fullSector -- connect arc ends with center
©Ú
fullSectorr±  )r^  Údraw_sectorr#  r`  rb  )r×   r¼  rj  Úbetaro  r  r‹  r×  r'  r‰  r´  r²  r³  r£  rµ  r¶  rÚ  r1  rü   s                      r*   rØ  ÚPage.draw_sector,  sq   € ð6 �n‰nÓˆØ�O‰OœE &›M¬5°«<¸ˆOÐUˆØ�
‰
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                ó¾   • U R                  5       nUR                  [        U5      [        U5      US9nUR                  UUUSUUU
UUUS9
  UR	                  U	5        U$ )z/Draw a squiggly line from point p1 to point p2.©ÚbreadthFrÅ  )r^  Údraw_squiggler#  r`  rb  ©r×   rF  rG  rÝ  ro  r‹  r‰  r²  r³  r£  r'  rµ  r¶  rÚ  r1  r³  s                   r*   rÞ  ÚPage.draw_squiggle=,  sq   € ð" �n‰nÓˆØ×Ñœe B›i¬¨r«¸GÐÐDˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                ó¾   • U R                  5       nUR                  [        U5      [        U5      US9nUR                  UUUSUUU
UUUS9
  UR	                  U	5        U$ )z-Draw a zigzag line from point p1 to point p2.rÜ  FrÅ  )r^  Údraw_zigzagr#  r`  rb  rß  s                   r*   râ  ÚPage.draw_zigzag`,  sn   € ð" �n‰nÓˆØ�O‰OœE "›I¤u¨R£y¸'ˆOÐBˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ð 	�
‰
�7Ôàˆr,   c                óp  • U R                   nUR                   n[        U[        R                  5      (       d   e[        R                  " 5       nX&l        [        U5      n[        R                  " XV5      n[        R                  " XHU[        R                  " 5       5        [        R                  " U5        g r.   )rÅ   rC   r£   r  r  rÑ  rê  rK  r�  rl  r‚  )	r)   r„  rÑ  rð  r×   rU  r#  rõ  r…  s	            r*   Úextend_textpageÚPage.extend_textpageƒ,  s   € Ø�y‰yˆØ�Z‰ZˆÜ˜2œu×0Ñ0×1Ñ1Ð1Ð1Ü×&Ò&Ó(ˆØŒÜ Ó'ˆÜ�nŠn˜RÓ)ˆÜ×Ò˜4 c¬5¯>ª>Ó+;Ô<Ü×Ò˜sÕ#r,   c                ó0   • [         R                  " U 40 UD6$ r.   )ÚtableÚfind_tables)r)   r  s     r*   ré  ÚPage.find_tablesŽ,  s   € Ü× Ò  Ñ0¨Ñ0Ð0r,   c                ó6  • [        U 5        U R                  SS9nUR                  (       d  g[        R                  " U5      nUR                  (       d  g[        U5      nSUl        [        R                  " U 5      Ul	        X0R                  [        U5      '   U$ )zFirst annotation.FrÖ  NT)rp  rô  rÍ   r£   Úpdf_first_annotrã   rö   r   r"  rí   rZ  r[  )r)   r×   rà   r  s       r*   Úfirst_annotÚPage.first_annot‘,  sy   € ô 	�DÔØ�~‰~ uˆ~Ð-ˆØ��ØÜ×%Ò% dÓ+ˆØ××ØÜ�E‹lˆØˆŒÜ—]’] 4Ó(ˆŒ
Ø$'×Ñœ˜C›Ñ!Øˆ
r,   c                ó"   • U R                  5       $ )z
First link on page
)Ú
load_linksr0   s    r*   Ú
first_linkÚPage.first_link¡,  s   € ð
 �‰Ó Ð r,   c                ó|  • [        U 5        SnU R                  SS9nUR                  (       d  g[        R                  " U5      nUR                  (       d  g[        U5      nSUl        [        R                  " U 5      Ul	        X0R                  [        U5      '   [        5       n[        R                  X45        UnU$ )zFirst widget/field.r   FrÖ  NT)rp  rô  rÍ   r£   Úpdf_first_widgetrã   rö   r   r"  rí   rZ  r[  r\  r  r]  )r)   rà   r×   r  r^  s        r*   Úfirst_widgetÚPage.first_widget¨,  s˜   € ô 	�DÔØˆØ�~‰~ uˆ~Ð-ˆØ��ØÜ×&Ò& tÓ,ˆØ××ØÜ�E‹lˆØˆŒÜ—]’] 4Ó(ˆŒ
Ø$'×Ñœ˜C›Ñ!Ü“ˆÜ×Ñ˜3Ô'ØˆØˆ
r,   c                ó€  • [        U 5        U R                  nUS:w  a  U R                  S5        U R                  n/ nU(       a  SOSn[	        XE5      n[
        R                  " X6[
        R                  " 5       [
        R                  " 5       5        [
        R                  " U5        US:w  a  U R                  U5        U$ )Nr   TF)
rp  rx  rï  rÅ   ÚJM_new_bbox_devicer£   r�  r}  rl  r‚  )r)   Úlayersrý  r×   r¦   Ú
inc_layersr…  s          r*   Úget_bboxlogÚPage.get_bboxlog¼,  s“   € Ü�DÔØ—}‘}ˆØ˜1ÓØ×Ñ˜aÔ Ø�y‰yˆØˆÞ#‘T¨ˆ
Ü  "Ó1ˆÜ×Ò˜4¤e§n¢nÓ&6¼¿ºÓ8HÔIÜ×Ò˜sÔ#à˜1ÓØ×Ñ˜lÔ+Øˆ	r,   c                ó  • [        U 5        U R                  nUS:w  a  U R                  S5        U R                  n[	        U[
        R                  5      (       a  [
        R                  " U5      n[	        U[
        R                  5      (       d   SU R                  < 35       eU(       a  SOSn[
        R                  " U5      n [        R                  " XQX#5      nUS:w  a  U R                  U5        [        U5      (       d  Ub  gU$ )z3Extract vector graphics ("line art") from the page.r   z
self.this=TFN)rp  rx  rï  rÅ   rC   r£   rÔ   rÕ   r}  r  r   Úget_cdrawingsrµ   ÚcallableÚJM_new_lineart_device_Devicer}  r±  Úptmr�  rl  r‚  )
r)   ÚextendedÚcallbackÚmethodrý  r×   ÚclipsÚprectr¦   r…  s
             r*   rþ  ÚPage.get_cdrawingsÌ,  sÕ   € ä�DÔØ—}‘}ˆØ˜1ÓØ×Ñ˜aÔ Ø�y‰yˆÜ�dœEŸM™M×*Ñ*ä—<’< Ó%ˆDÜ˜$¤§¡×-Ñ-Ð>°*°$·)±)±¨Ó>Ð-Þ ‘ eˆÜ×#Ò# DÓ)ˆØÜ×$Ò$ T°XÓFˆBð ˜1ÓØ×Ñ˜lÔ+Ü�H×Ñ Ñ!3ØØˆ	r,   c                ó(  • [        U 5        / n[        U R                  5      nUR                  5       n[        R
                  " U[        R                  5      n[        R                  " U5      (       ag  [        R                  " U5      n[        U5       H@  n[        R                  " XF5      n[        R                  " U5      nUR                  U5        MB     U$ UR                  (       a'  [        R                  " U5      nUR                  U5        U$ )zGet xrefs of /Contents objects.)rp  rÛ   rÅ   r  r£   r  rj  r<  r¬  rT  r­  r  rp   rÍ   )	r)   rL   r×   r  r9  rJ   rh  Úicontr  s	            r*   rP
  ÚPage.get_contentsë,  sÎ   € ä�DÔØˆÜ˜DŸI™IÓ&ˆØ�h‰h‹jˆÜ×%Ò% c¬5×+GÑ+GÓHˆÜ×Ò˜h×'Ñ'Ü×#Ò# HÓ-ˆAÜ˜1–X�Ü×+Ò+¨HÓ8�Ü×'Ò'¨Ó.�Ø—
‘
˜4Ö ñ ð ˆ
ð × × Ü×#Ò# HÓ-ˆDØ�J‰J˜ÔØˆ
r,   c                ó¾   • [        U 5        U(       a!  [        R                  " U R                  5      nO [        R                  " U R                  5      n[        U5      $ )zd
Make a DisplayList from the page for Pixmap generation.

Include (default) or exclude annotations.
)rp  r£   Úfz_new_display_list_from_pagerÅ   Ú&fz_new_display_list_from_page_contentsrY  )r)   r°  r  s      r*   Úget_displaylistÚPage.get_displaylistý,  sA   € ô 	�DÔÞÜ×4Ò4°T·Y±YÓ?‰Bä×=Ò=¸d¿i¹iÓHˆBÜ˜2‹Ðr,   c                ó€  • SnU R                  US9n[        [        U5      5       GH  nX4   nUS   R                  S5      (       d  [	        US   5      US'   O[	        US   5      US'   US   S:w  a˜  US   n/ nU H‡  nUS	   n	US
S n
U	S:X  a#  S[	        U
S	   5      R                  5       U
S
   4nO@U	S:X  a  S[        U
S	   5      4nO)[        U	/U
 Vs/ s H  n[        U5      PM     sn-   5      nUR                  U5        M‰     XuS'   US   S;   a  U H  nUR                  U5      X['   M     XSW'   GM     U$ s  snf )a  Retrieve vector graphics. The extended version includes clips.

Note:
For greater comfort, this method converts point-likes, rect-likes, quad-likes
of the C version to respective Point / Rect / Quad objects.
It also adds default items that are missing in original path types.
)
r´  r  ro  r‰  r²  r³  r‹  rµ  r¶  Úeven_odd)r  rÉ   r  rý   Úscissorr?  rG   r   r   Nr>  Úqur¥  )rþ  rT  r<   r8   r,  Ú	normalizerÐ  r¶   r#  rp   r=   Úobject)r)   r  Úallkeysr  rh  ÚnpathrG   ÚnewitemsrH   ÚcmdÚrestrò  ÚDrawpathÚDrawpathlistÚget_linearts                  r*   Úget_drawingsÚPage.get_drawings
-  s_  € ðˆð × Ñ ¨(Ð Ð3ˆÜ”s˜3“x—ˆAØ‘FˆEØ˜‘=×+Ñ+¨F×3Ñ3Ü $ U¨6¡]Ó 3��f’ä#'¨¨iÑ(8Ó#9��iÑ Ø�V‰}˜gÓ%Ø˜g™�Ø�Û!�DØ˜q™'�CØ  ˜8�DØ˜t›Ø $¤d¨4°©7£m×&=Ñ&=Ó&?ÀÀaÁÐI™Ø ›Ø $¤d¨4°©7£mÐ4™ä$ c UÁÓ-EÂ¸1¬e°A®hÁÑ-EÑ%EÓF˜Ø—O‘O DÖ)ñ "ð "*�g‘Ø�V‰} 
Ó*Û �AØ$Ÿy™y¨›|�E“Hñ !ð �ŒFñ1 !ð2 ˆ
ùò .Fs   ÃD;c                ó@  • U R                   nU(       a  UR                  (       a  SnUR                  (       d  Sn[        U SS5      nU(       a	  U(       d  U$ U(       d0  U R                  [        S9nUR                  US9nAU(       a  X@l        U(       a  UR                  (       d  U$ U R                  5       n0 nU H"  nUS   n	[        X95      n
X—U
R                  '   A
M$     [        [        U5      5       H$  nXK   nUR                  US   S5      n	X˜S	'   X„U'   M&     U$ )
z¿Extract image information only from a pymupdf.TextPage.

Args:
    hashes: (bool) include MD5 hash for each image.
    xrefs: (bool) try to find the xref for each image. Sets hashes to true.
TFÚ_image_infoN)rÑ  ©Úhashesr   r²  r  )rí   r  rï   r&  ÚTEXT_PRESERVE_IMAGESÚextractIMGINFOr!  Ú
get_imagesrî  r²  rT  r<   r=   )r×   r#  rí  r2  ÚimginforU  Úimglistr¦  rH   r  r÷  rh  s               r*   Úget_image_infoÚPage.get_image_infoÈ-  s  € ð �k‰kˆÞ�S—Z—ZØˆFØ�z�zØˆEÜ˜$ ¨tÓ4ˆÞž5ØˆNÞØ×"Ñ"Ô)=Ð"Ð>ˆBØ×'Ñ'¨vÐ'Ð6ˆGØÞØ#*Ô Þ˜CŸJŸJØˆNØ—/‘/Ó#ˆØˆÛˆDØ˜‘7ˆDÜ˜Ó#ˆCØ"&�C—J‘JÑÚñ	 ô
 ”s˜7“|Ö$ˆAØ‘:ˆDØ—;‘;˜t H™~¨qÓ1ˆDØ�‰LØ�A‹Jñ	 %ð
 ˆr,   c                óz  • [        U5      [        [        4;   a  US   nOr[        U5      [        L a  UnO]U R	                  5        Vs/ s H  oDS   U:X  d  M  UPM     nnU/ :X  a  [        S5      e[        U5      S:w  a  [        S5      eUS   S   n[        U R                  U5      nUR                  nAU R                  SS9nU(       d*  U V	s/ s H  o™S   U:X  d  M  [        U	S	   5      PM     n
n	U
$ U V	s/ s H*  n	U	S   U:X  d  M  [        U	S	   5      [        U	S
   5      4PM,     n
n	U
$ s  snf s  sn	f s  sn	f )ay  Return list of image positions on a page.

Args:
    name: (str, list, int) image identification. May be reference name, an
          item of the page's image list or an xref.
    transform: (bool) whether to also return the transformation matrix.
Returns:
    A list of pymupdf.Rect objects or tuples of (pymupdf.Rect, pymupdf.Matrix)
    for all image locations on the page.
r   r   úbad image namer   zmultiple image names foundTr"  r²  r7  rÙ  )rÉ   rµ   r¶   r9   r&  rÄ   r<   rî  rí   r²  r)  r,  r€  )r×   r   rÙ  r  rh  r(  r÷  r²  ÚinfosÚimÚbboxess              r*   Úget_image_rectsÚPage.get_image_rectsñ-  sL  € ô �‹:œ$¤˜Ó&Ø˜‘7‰DÜ�$‹Zœ3ÒØ‰Dà"&§/¡/Ô"3ÓDÒ"3˜Q¸±t¸t±|—qÑ"3ˆGÐDØ˜"‹}Ü Ð!1Ó2Ð2Ü�W“ Ó"Ü Ð!=Ó>Ð>Ø˜1‘:˜a‘=ˆDÜ�T—[‘[ $Ó'ˆØ—‘ˆØØ×#Ñ#¨4Ð#Ð0ˆÞÙ16ÓQ²¨2¸X¹,È&Ñ:PÓ&”d˜2˜f™:Ö&±ˆFÐQð ˆñ  óâ�BØ�h‘< 6Ñ)ó <”�b˜‘jÓ!¤6¨"¨[©/Ó#:Ó;Ùð ð ð
 ˆùò% Eùò Rùòs$   ÁD.ÁD.ÃD3ÃD3Ã9D8Ä
 D8c                ó¨   • U R                   R                  5       nU(       d  gUR                  5         [        R                  " U R
                  U5      $ )z‹Return the label for this PDF page.

Args:
    page: page object.
Returns:
    The label (str) of the page. Errors return an empty string.
ra   )rí   rì  r¬  r  rx  r;  )r×   rN  s     r*   Ú	get_labelÚPage.get_label.  s<   € ð —‘×-Ñ-Ó/ˆÞØØ�‰ŒÜ×"Ò" 4§;¡;°Ó7Ð7r,   c                ó  • [        U 5        U R                  n/ nU(       aF  [        R                  " XR                  5      nUR                  U5        UR                  nU(       a  MF  U/ :w  aš  U R                  R                  (       a  [        U 5       Vs/ s H  nUS   [        R                  :X  d  M  UPM      nn[        U5      [        U5      :X  a3  [        [        U5      5       H  nXV   S   X&   S'   XV   S   X&   S'   M     U$ s  snf )zfCreate a list of all links contained in a PDF page.

Notes:
    see PyMuPDF ducmentation for details.
r   r   r  r   r[  )rp  rñ  r  r•  rí   rp   r_  r  rG  r£   r¥  r<   rT  )r×   Úlnr)  Únlre  Ú	linkxrefsrh  s          r*   r  ÚPage.get_links%.  sô   € ô 	�DÔØ�_‰_ˆØˆÞÜ×"Ò" 2§{¡{Ó3ˆBØ�L‰L˜ÔØ—‘ˆB÷ ˆbð �B‹;˜4Ÿ;™;×-×-ô ,¨DÔ1óâ1ð  !ð ˜‘tœu×3Ñ3Ñ3÷ á1ð ð ô
 �9‹~¤ U£Ó+Üœs 9›~Ö.�AØ'0¡|°A¡�E‘H˜VÑ$Ø%.¡\°!¡_�E‘H˜T“Nñ /ð ˆùòs   ÂD	Â4D	r~  c               óŠ  • Uc  [         nU(       a  US-  n[        Xw5      n[        U5      [        L a<  UR	                  5       S:X  a  [
        nO!UR	                  5       S:X  a  [        nO[         nUR                  S;  a  [        S5      eU R                  US9nUR                  XXTS9n	SnU(       a  U	R                  X"5        U	$ )	a�  Create pixmap of page.

Keyword args:
    matrix: Matrix for transformation (default: Identity).
    dpi: desired dots per inch. If given, matrix is ignored.
    colorspace: (str/Colorspace) cmyk, rgb, gray - case ignored, default csRGB.
    clip: (irect-like) restrict rendering to this area.
    alpha: (bool) whether to include alpha channel
    annots: (bool) whether to also render annotations
Nrä  r7  r9  r˜  zunsupported colorspace)r°  )rð  rò  ró  r  )ræ  r€  rÉ   rè  rz
  rå  rç  rJ   rÄ   r  rø  rï  )
r×   rð  rñ  rò  r  ró  r°  r  r  r÷  s
             r*   rø  ÚPage.get_pixmap?.  s¹   € ð( ÑÜˆJÞØ˜‘8ˆDÜ˜DÓ'ˆFä�
ÓœsÒ"Ø×ÑÓ! VÓ+Ü#‘
Ø×!Ñ!Ó# vÓ-Ü#‘
ä"�
Ø�<‰<˜yÓ(ÜÐ5Ó6Ð6à×!Ñ!¨Ð!Ð0ˆØ�m‰m 6ÈˆmÐYˆØˆÞØ�K‰K˜Ô!Øˆ
r,   c           	     ó~  • U R                   nUS:X  a  [        $ U R                  nUS:X  aB  [        SSSSUR                  UR
                  -
  UR                  -
  UR                  -
  S5      nOrUS:X  aB  [        SSSSSUR
                  UR                  -
  UR                  -
  UR                  -
  5      nO*[        SSSSSUR                  -  SUR                  -  5      nX0R                  -  n[        [        U5      5      S-   nUR                  S5      n[        R                  XS5      nUS	;   a.  Uu  pxpšX‚l        Xrl        X¢l        X’l        U R                  U5        U R                  S5        U) nU R!                  5        H#  nUR"                  U-  nUR%                  U5        M%     U R'                  5        H2  nUS
   U-  nU R)                  U5        XÍS
'    U R+                  U5        M4     U R/                  5        H(  nUR"                  U-  nXÎl        UR1                  5         M*     U$ ! [,         a     M�  f = f)z;Set page rotation to 0 while maintaining visual appearance.r   rî  r   é  r  z cm r  F©rî  r=  r   )rx  r€  r8  r€  r±  r¯  r°  r²  rv  r·   r¶   rþ  r  Ú_insert_contentsÚset_mediaboxrï  r°  rý   rê  r  rN
  Úinsert_linkrl   rˆ  rJ  )r)   r|  ræ  Úmat0r�  r  r<  r°  r²  r¯  r±  rà   r%  rš  r^  s                  r*   Úremove_rotationÚPage.remove_rotationj.  s  € à�m‰mˆØ�!‹8ÜÐð �]‰]ˆà�"‹9ä˜!˜Q  1 b§e¡e¨b¯e©e¡m°b·e±eÑ&;¸b¿e¹eÑ&CÀQÓG‰DØ�C‹Zä˜!˜Q  1 a¨¯©°·±©¸¿¹Ñ)>ÀÇÁÑ)FÓG‰Dä˜!˜Q  1 b¨2¯5©5¡j°"°r·u±u±*Ó=ˆDð ×+Ñ+Ñ+ˆÜœ˜c›
Ó# fÑ,ˆØ�j‰j˜Ó ˆÜ×"Ñ" 4¨eÓ4ˆð �)ÓØ‰NˆB�BØŒEØŒEØŒEØŒEØ×Ñ˜bÔ!à×Ñ˜!ÔØˆdˆà—[‘[–]ˆEØ—
‘
˜SÑ ˆAà�N‰N˜1Öñ #ð —N‘NÖ$ˆDØ�V‘˜sÑ"ˆAØ×Ñ˜TÔ"Ø�‰LðØ× Ñ  Ö&ñ %ð —l‘l–nˆFØ—‘˜cÑ!ˆAØŒKØ�M‰MŽOñ %ð ˆ
øô ó Úðús   ÇH.È.
H<È;H<c                ó  ^^• [        U 5        U R                  nUb  [        U5      nUmUmUc  U R                  5       nUU4S jnU Vs/ s H‚  n US   R                  UR                  :¼  d  M#  US   R
                  UR
                  ::  d  MB  US   R                  UR                  :¼  d  Ma  US   R                  UR                  ::  d  M€  UPM„     n	n[        U	 Vs/ s H  oˆS   PM	     snS S9n
/ nU
(       a£  U
S   7nSnU(       ac  Sn[        [        U
5      S-
  SS	5       H;  nU" X®   U5      (       d  M  XÊU   R                  -  nXÊU   R                  -  nX®	 SnM=     U(       a  Mc  UR                  U5        U
S	 [        [        U
5      S
 S9n
U
(       a  M£  [        [        U5      S S9nU(       d  U$ U Vs/ s H(  oÌR                  T:”  d  M  UR                   T:”  d  M&  UPM*     sn$ s  snf s  snf s  snf )aJ  Join rectangles of neighboring vector graphic items.

Args:
    clip: optional rect-like to restrict the page area to consider.
    drawings: (optional) output of a previous "get_drawings()".
    x_tolerance: horizontal neighborhood threshold.
    y_tolerance: vertical neighborhood threshold.

Notes:
    Vector graphics (also called line-art or drawings) usually consist
    of independent items like rectangles, lines or curves to jointly
    form table grid lines or bar, line, pie charts and similar.
    This method identifies rectangles wrapping these disparate items.

Returns:
    A list of Rect items, each wrapping line-art items that are close
    enough to be considered forming a common vector graphic.
    Only "significant" rectangles will be returned, i.e. having both,
    width and height larger than the tolerance values.
c                óª  >• U R                   U R                  :”  a  U R                  U R                   4OU R                   U R                  4u  p#U R                  U R                  :”  a  U R                  U R                  4OU R                  U R                  4u  pEUR                   UR                  :”  a  UR                  UR                   4OUR                   UR                  4u  pgUR                  UR                  :”  a  UR                  UR                  4OUR                  UR                  4u  p‰ X6T
-
  :  d  X'T
-   :”  d  XXT-
  :  d  XIT-   :”  a  gg)zÇDetect whether r1, r2 are "neighbors".

Items r1, r2 are called neighbors if the minimum distance between
their points is less-equal delta.

Both parameters must be (potentially invalid) rectangles.
FT©r¯  r°  r±  r²  )Úr1Úr2Úrr1_x0Úrr1_x1Úrr1_y0Úrr1_y1Úrr2_x0Úrr2_x1Úrr2_y0Úrr2_y1Údelta_xÚdelta_ys             €€r*   Úare_neighborsÚ,Page.cluster_drawings.<locals>.are_neighborsÁ.  sú   ø€ ð 02¯u©u°r·u±u«}˜bŸe™e R§U¡U™^À2Ç5Á5È"Ï%É%À.‰NˆFØ/1¯u©u°r·u±u«}˜bŸe™e R§U¡U™^À2Ç5Á5È"Ï%É%À.‰NˆFØ/1¯u©u°r·u±u«}˜bŸe™e R§U¡U™^À2Ç5Á5È"Ï%É%À.‰NˆFØ/1¯u©u°r·u±u«}˜bŸe™e R§U¡U™^À2Ç5Á5È"Ï%É%À.‰NˆFàØ WÑ,Ó,Ø WÑ,Ó,Ø WÑ,Ó,Ø WÑ,Ó,ð ð r,   r   rý   c                ó2   • U R                   U R                  4$ r.   ©r±  r°  ©r%  s    r*   r«
  Ú'Page.cluster_drawings.<locals>.<lambda>ç.  s   € À1Ç4Á4ÈÏÉÁ,r,   rÓ
  r   TFr¨  c                ó2   • U R                   U R                  4$ r.   rW  rX  s    r*   r«
  rY  ü.  s   € ¸¿¹¸a¿d¹d±|r,   c                ó2   • U R                   U R                  4$ r.   rW  rX  s    r*   r«
  rY  þ.  s   € ¸!¿$¹$ÀÇÁ¹r,   )rp  rý   r,  r  r°  r¯  r²  r±  r]  rT  r<   r$  r%  rp   r«  r‰  r2  )r)   r  ÚdrawingsÚx_toleranceÚy_toleranceÚfinal_filterÚparearT  r³  ÚpathsÚprectsÚ	new_rectsr%  Úrepeatrh  rR  rS  s                  @@r*   Úcluster_drawingsÚPage.cluster_drawings .  sö  ù€ ô0 	�DÔØ—	‘	ˆØÑÜ˜“JˆEØˆØˆØÑØ×(Ñ(Ó*ˆHö	ñ: ó
â�ØØ�&‘	—‘ §¡Ñ(ó ð �&‘	—‘ §¡Ñ(ó	 ð
 �&‘	—‘ §¡Ñ(ó ð �&‘	—‘ §¡Ñ(÷ Ùð 	ð 
ô ©EÓ2ªE q˜6œ©EÑ2Ñ8NÑOˆàˆ	ö
 Ø˜‘�
ˆAØˆFÞØ�Üœs 6›{¨Q™°°2Ö6�AÙ$ V¡Y°×2Ó2Ø A™YŸ\™\Ñ)˜Ø A™YŸ\™\Ñ)˜Ø"˜IØ!%šñ 7÷ �&ð ×Ñ˜QÔØ�q�	ÜœC ›KÑ-CÑDˆF÷ ˆfô  œ3˜y›>Ñ/EÑFˆ	ÞØÐÙ$ÓQš9�a¯©°'Ñ(9“¸a¿h¹hÈÑ>P—™9ÑQÐQùòK
ùò 3ùò4 Rs6   Á
"G2Á0G2ÂG2Â.G2ÃG2ÃG7Ç G<ÇG<Ç)G<c                ó`   • [        U 5        U R                  R                  U R                  US9$ )z)List of fonts defined in the page object.r3  )rp  rí   rm  r;  ©r)   rl  s     r*   Ú	get_fontsÚPage.get_fonts/  s(   € ä�DÔØ�{‰{×)Ñ)¨$¯+©+¸DÐ)ÐAÐAr,   c           	     ó¬  • [        U 5        U R                  nUR                  (       d  UR                  (       a  [	        S5      e[        SSSS5      n[        5       nU(       a  XE4nOUn[        U5      [        [        4;   a#  [        US   5      [        La  [	        S5      eUnOkUR                  U R                  S5       Vs/ s H  o�US   :X  d  M  UPM     n	n[        U	5      S:X  a  U	S   nO U	/ :X  a  [	        S5      e[	        S	U S
35      eUS   n
U
S:w  d  U(       a   U R                  XrS9S   $ U R#                  5       n[%        U5      n['        U5      (       d  U$ U HÈ  nUS   US   :w  a  M  [)        US   5      nUR*                  nUS:X  a  Un  UnU$ [        [-        UR.                  UR0                  5      5      n[3        UR.                  UR4                  -
  5      n[3        UR6                  UR4                  -
  5      n[        SU-  SSSU-  SS5      nUU-  ) nUU4n  UnU$    UnU$ s  snf ! [         a    [!        5         Us $ f = f)zÒGet rectangle occupied by image 'name'.

'name' is either an item of the image list, or the referencing
name string - elem[7] of the resp. item.
Option 'transform' also returns the image transformation matrix.
rÕ  r   r¨  z!need item of full page image listTr   r   r,  zfound multiple images named 'rˆ  )rÙ  éýÿÿÿ)rp  rí   rÃ   r¦  rÄ   r,  r€  rÉ   rµ   r¶   r9   rq  r;  r<   r0  rl   r{   rô  ÚJM_image_reporterré   rÐ  rý   Úutil_hor_matrixÚllÚlrr&  rù  Úur)r)   r   rÙ  r2  Úinf_rectÚnull_matr¦   rH   rh  r(  r  rî  r  rK   r+  r7  Úhmr!  r   Úm0rŒ  s                        r*   Úget_image_bboxÚPage.get_image_bbox/  sN  € ô 	�DÔØ�k‰kˆØ�=�=˜C×,×,ÜÐ;Ó<Ð<ä˜˜1˜b "Ó%ˆÜ“8ˆÞØÐ%‰BàˆBä�‹:œ$¤˜Ó&Ü˜˜R™“>¤SÒ(Ü Ð!DÓEÐEØ‰Dà"%×"5Ñ"5°d·k±kÀ4Ô"HÓYÒ"H˜QÐTUÐVWÑTXÉL—qÑ"HˆGÐYÜ�7‹|˜qÓ Ø˜q‘z‘Ø˜B“Ü Ð!1Ó2Ð2ä Ð#@ÀÀÀbÐ!IÓJÐJØ�B‰xˆØ�1‹9ž	ð Ø×+Ñ+¨DÐ+ÐFÀqÑIÐIð —>‘>Ó#ˆÜ Ó)ˆä�C�y‰yØˆIãˆAØ�‰t�t˜B‘xÓÙÜ�Q�q‘T“
ˆAØ—6‘6ˆDØ˜A‹~Ø�Øð ˆàˆ
ô œ¨¯©¨a¯d©dÓ3Ó4ˆBÜ�A—D‘D˜1Ÿ4™4‘KÓ ˆAÜ�A—D‘D˜1Ÿ4™4‘KÓ ˆAÜ˜˜A™˜q ! Q¨¡U¨A¨qÓ1ˆBØ�r‘'�
ˆAØ˜�ˆBØØˆàˆ
ñ% ð  ˆàˆ
ùòM Zøô ó  ÜÔ Ø’ð ús   ÃH5ÃH5Ä$H: È:IÉIc                ó`   • [        U 5        U R                  R                  U R                  US9$ )z*List of images defined in the page object.r3  )rp  rí   rq  r;  rh  s     r*   r&  ÚPage.get_imagesH/  s(   € ä�DÔØ�{‰{×*Ñ*¨4¯;©;¸TÐ*ÐBÐBr,   c                ó¾   • / nU R                  5        HF  u  p#U R                  R                  USS9nSU;   a  SnOSU;   a  SnOM3  UR                  X#U45        MH     U$ )z¨Get OCGs and OCMDs used in the page's contents.

Returns:
    List of items (name, xref, type), where type is one of "ocg" / "ocmd",
    and name is the property name.
TrI  ro  rt  rY  Úocmd)rq  rí   rL  rp   )r)   r¦   Úpnamer  r   Úoctypes         r*   Úget_oc_itemsÚPage.get_oc_itemsM/  sl   € ð ˆØ×8Ñ8Ö:‰KˆEØ—;‘;×*Ñ*¨4¸DÐ*ÐAˆDØ˜dÓ"Ø‘Ø Ó%Ø‘áØ�I‰I�u FÐ+Ö,ñ ;ð ˆ	r,   c                ó¢  • [        U 5        [        R                  " U R                  5      n[	        U5      nUnUS:X  a  [        R
                  O[        R                  n[        R                  " XT5      n[        R                  " S5      n[        R                  " U5      n[        R                  " UUR                  UR                  -
  UR                  UR                  -
  US5      n	[        R                  " U R                  X”[        R                   " 5       5        [        R"                  " U	5        UR%                  5         ['        U5      n
U
$ )zMake SVG image from page.r   é   )rp  r£   r}  rÅ   rê  ÚFZ_SVG_TEXT_AS_PATHÚFZ_SVG_TEXT_AS_TEXTrà  rö	  r÷	  Úfz_new_svg_devicer¯  r°  r±  r²  r�  rl  r‚  r	  r—  )r)   rð  Útext_as_pathr8  rõ  ÚtboundsÚtext_optionr&  r	  r…  r   s              r*   Úget_svg_imageÚPage.get_svg_image`/  sö   € ä�DÔÜ×&Ò& t§y¡yÓ1ˆÜ Ó'ˆØˆØ3?À1Ó3D”e×/Ò/Ì%×JcÑJcˆÜ×)Ò)¨'Ó7ˆä×!Ò! $Ó'ˆÜ�nŠn˜SÓ!ˆÜ×%Ò%ØØ—
‘
˜7Ÿ:™:Ñ%Ø—
‘
˜7Ÿ:™:Ñ%ØØóˆô 	×Ò˜$Ÿ)™) S¬u¯~ª~Ó/?Ô@Ü×Ò˜cÔ"Ø×ÑÔÜ% cÓ*ˆØˆr,   c                ó’   • UnUc  U R                  5       nO[        US5      U :w  a  [        S5      eUR                  U5      nUc  AU$ )Nrí   únot a textpage of this page)r&  rï   rÄ   ÚextractTextbox)r×   rý   r…  rU  r¦   s        r*   r  ÚPage.get_textboxx/  sU   € ð
 ˆØ‰:Ø×"Ñ"Ó$‰BÜ�R˜Ó" dÓ*ÜÐ:Ó;Ð;Ø×Ñ˜tÓ$ˆØÑØØˆ	r,   c                ó6   • [         R                  " U /UQ70 UD6$ r.   r  r  s      r*   r  ÚPage.get_text‡/  r  r,   c                ó6   • [         R                  " U /UQ70 UD6$ r.   )r  Úget_text_blocksr  s      r*   r‘  ÚPage.get_text_blocksŠ/  s   € Ü×$Ò$ TÐ;¨DÒ;°FÑ;Ð;r,   c                ó6   • [         R                  " U /UQ70 UD6$ r.   )r  Úget_text_selectionr  s      r*   r”  ÚPage.get_text_selection�/  s   € Ü×'Ò'¨Ð>¨tÒ>°vÑ>Ð>r,   c                ó6   • [         R                  " U /UQ70 UD6$ r.   )r  Úget_text_wordsr  s      r*   r—  ÚPage.get_text_words�/  s   € Ü×#Ò# DÐ:¨4Ò:°6Ñ:Ð:r,   c                ó6   • [         R                  " U /UQ70 UD6$ r.   )r  Úget_textpage_ocrr  s      r*   rš  ÚPage.get_textpage_ocr“/  s   € Ü×%Ò% dÐ<¨TÒ<°VÑ<Ð<r,   c                óV  • [        U 5        Uc  [        SS5      nU R                  nUS:w  a  U R                  S5         U R	                  XUS9nUS:w  a  U R                  U5        [        U5      n[        R                  " U 5      Ul        U$ ! US:w  a  U R                  U5        f f = f)Nr   r   )rÑ  rð  )	rp  r€  rx  rï  r†  r  r   r"  rí   )r)   r  rÑ  rð  rý  r…  s         r*   r&  ÚPage.get_textpage–/  s§   € Ü�DÔØ‰>Ü˜A˜q“\ˆFØ—}‘}ˆØ˜1ÓØ×Ñ˜aÔ ð	0Ø×)Ñ)¨$ÀFÐ)ÐKˆHà˜qÓ Ø×!Ñ! ,Ô/Ü˜HÓ%ˆÜ!Ÿ-š-¨Ó-ˆŒØˆøð	 ˜qÓ Ø×!Ñ! ,Õ/ð !ús   ¿B ÂB(c                ó  • [        U 5        U R                  nUS:w  a  U R                  S5        U R                  n/ n [
        R                  " U5      n[        R                  " U5      n[        R                  " SSSSSUR                  5      Ul        [        R                  " X$[        R                  " 5       [        R                  " 5       5        [        R                  " U5        US:w  a  U R                  U5        U$ ©Nr   r   r¨  )rp  rx  rï  rÅ   r  r   ÚJM_new_texttrace_devicer£   r}  r}  r±  r  r�  rl  r‚  )r)   rý  r×   r¦   r…  r  s         r*   rH  ÚPage.get_texttrace¦/  sÃ   € ä�DÔØ—}‘}ˆØ˜1ÓØ×Ñ˜aÔ Ø�y‰yˆØˆØÜ×/Ò/°Ó3ˆCô ×#Ò# DÓ)ˆÜ—.’.  A q¨"¨a°·±Ó:ˆŒÜ×Ò˜$¤U§^¢^Ó%5´u·~²~Ó7GÔHÜ×Ò˜cÔ"à˜1ÓØ×Ñ˜lÔ+Øˆ	r,   c                ób   • [        U 5        U R                  R                  U R                  5      $ )z,List of xobjects defined in the page object.)rp  rí   r‰  r;  r0   s    r*   Úget_xobjectsÚPage.get_xobjects»/  s#   € ä�DÔØ�{‰{×,Ñ,¨T¯[©[Ó9Ð9r,   r½  c                ód  • U R                   nUc  [        S5      eSnUR                  S5      (       a  USS  n[        R	                  U5      n	U	[        5       :w  a  [        SU	 35      e[        X5      n
U
b*  U
S   n[        X{5      (       a  U$ UR                  U5        U$ [        R                  UR                  5       S 5      nSnSn/ SQn/ SQn UR                  U5      nSnUS:  a   UR                  U5      nSnUR                  5       [         R#                  5       ;   a  SS KnUR'                  U5      nAUb[  [)        U5      [*        L a  UnOH[-        US	5      (       a  [+        U5      nO+[-        US
5      (       a  UR.                  nO[        S5      eS nU R1                  XUX4UX]Xn5
      nU(       d  U$ US   nUS   n[        X{5      (       a  U$ UR                  UUS9  U$ ! [         a    [        S:”  a
  [        5          GN$f = f! [         a    [        S:”  a
  [        5          GN/f = f)NrŽ  r   rU	  r   zbad fontname chars r¨  )rç  ré  rë  rê  )rè  úchina-ssújapan-súkorea-sr¡  r   zbad fontfile)r-  )rí   rÄ   r8   rš  r›  r«  Ú	CheckFontr(  r3  rï  r=   ré  r  rl   r  r{   rì  r{  rí  rî  rÉ   rè  r@   r   rÁ  )r)   rÿ   r  r  r¿  r
  r  r2  rä  Ú	inv_charsrÜ  r  rÛ  r  Ú
CJK_numberÚ
CJK_list_nÚ
CJK_list_srí  Úfontfile_strr  r-  s                        r*   Úinsert_fontÚPage.insert_fontÀ/  s?  € à�k‰kˆØ‰;ÜÐ>Ó?Ð?Øˆà×Ñ˜s×#Ñ#Ø  �|ˆHÜ&×3Ñ3°HÓ=ˆ	Øœ›ÓÜÐ2°9°+Ð>Ó?Ð?ä˜Ó(ˆØÑØ˜‘7ˆDÜ˜S×'Ñ'Ø�à×Ñ Ô%ØˆKô !×$Ñ$ X§^¡^Ó%5°tÓ<ˆàˆØˆ
Ú=ˆ
ÚCˆ
ð	Ø#×)Ñ)¨(Ó3ˆJØˆEð ˜‹>ðØ'×-Ñ-¨hÓ7�
Ø�ð �>‰>ÓÔ3×8Ñ8Ó:Ó:Û Ø&×-Ñ-¨hÓ7ˆJØð ÑÜ�H‹~¤Ò$Ø'‘Ü˜ :×.Ñ.Ü" 8›}‘Ü˜ 6×*Ñ*Ø'Ÿ}™}‘ä  Ó0Ð0àˆLØ×Ñ˜x°¸zÐWZØ$¨XóCˆö ØˆJà�1‰vˆØ�q‘6ˆä˜×#Ñ#ØˆKð 	×Ñ˜D¨8ÐÑ4Øˆøô[ ó 	ä# aÓ'¬NÔ,<Úð	ûô ó ä'¨!Ó+´Ô0@Úðús$   ÃG( Ã,H Ç(H
È	H
ÈH/È.H/)	ÚcssÚ	scale_lowÚarchivera  rÚ  r^  r£  Ú_scale_word_widthÚ_verbosec       	   	     ó  ^• US-  S:X  d  [        S5      eUS:  a  US-  nUS:  a  M  US:¼  a  US-  nUS:¼  a  M  SUs=::  a  S::  d  O  [        S5      eUc  Sn[        U5      nUS	;   a#  [        SSUR                  UR                  5      nO"[        SSUR                  UR                  5      nS
U-   n[	        U[
        5      (       a  [        X-US9nO#[	        U[        5      (       a  UnO[        S5      eUS:X  a  SOSU-  nUR                  USUU
(       a  [        R                  OSUS9mTR                  (       d  STR                  -  nSU4$ [        TR                  5      Tl        TR                  R                  TR                  R                  4S:X  d   eTR                  R                  TR                  R                  4S:X  d   eSTR                  -  nUU:¼  d   SU< SU< 35       e[!        TR                  R"                  TR                  R"                  -
  U-  S5      nU4S jnUR%                  U5      nSUs=::  a  S:  aB  O  O?US   nUR'                  XˆS9nSU S3n[(        R+                  UUR-                  5       S5        U R/                  UUSXgU	S9  TR                  R0                  TR                  R2                  -   S-  U-  nUR0                  UR2                  -   S-  n[5        USSUUR6                  * UR8                  * 5      [5        U* 5      -  [5        SSSSUR6                  UR8                  5      -  nUS   R;                  5        H!  nUS==   U-  ss'   U R=                  U5        M#     UU4$ )a³  Insert text with optional HTML tags and stylings into a rectangle.

Args:
    rect: (rect-like) rectangle into which the text should be placed.
    text: (str) text with optional HTML tags and stylings.
    css: (str) CSS styling commands.
    scale_low: (float) force-fit content by scaling it down. Must be in
        range [0, 1]. If 1, no scaling will take place. If 0, arbitrary
        down-scaling is acceptable. A value of 0.1 would mean that content
        may be scaled down by at most 90%.
    archive: Archive object pointing to locations of used fonts or images
    rotate: (int) rotate the text in the box by a multiple of 90 degrees.
    oc: (int) the xref of an OCG / OCMD (Optional Content).
    opacity: (float) set opacity of inserted content.
    overlay: (bool) put text on top of page content.
    _scale_word_width: internal, for testing only.
    _verbose: internal, for testing only.
Returns:
    A tuple of floats (spare_height, scale).
    spare_height:
        The height of the remaining space in <rect> below the
        text, or -1 if we failed to fit.
    scale:
        The scaling required; `0 < scale <= 1`.
        Will be less than `scale_low` if we failed to fit.
rî  r   zbad rotation anglerí  r   z'scale_low' must be in [0, 1]Nra   r>  zbody {margin:1px;})ÚhtmlÚuser_cssr³  z"'text' must be a string or a Story)Ú	scale_minÚ	scale_maxrÑ  rI  r¨  r  z
scale_low=z scale=c                 ó6   >• TR                   TR                   S 4$ r.   r  )r  Úfits    €r*   Úrect_functionÚ*Page.insert_htmlbox.<locals>.rect_functionz0  s   ø€ Ø—8‘8˜SŸX™X tÐ+Ð+r,   ©r>  r?  rU	  ú gs
)ra  rÚ  r£  r   r   )rÄ   r,  r2  r‰  rC   rè  ÚStoryÚ	fit_scaler£   ÚFZ_PLACE_STORY_FLAG_NO_OVERFLOWÚ
big_enoughÚ	parameterÚfilledrý   r°  r²  r!  r±  Úwrite_with_linksrÞ  r  r?  rþ  Úshow_pdf_pager$  r%  r€  re  rf  r  rA  )r×   rý   r   r±  r²  r³  ra  rÚ  r^  r£  r´  rµ  Ú	temp_rectÚmycssÚstoryÚrect_scale_maxrG  Úspare_heightr½  r2  r„  rk  rŸ  Úmp1Úmp2r�  rš  r¼  s                              @r*   Úinsert_htmlboxÚPage.insert_htmlbox0  s]  ø€ ðT ˜‰{˜aÓÜÐ1Ó2Ð2Ø�q‹jØ�c‰MˆFð �q�jà˜‹mØ�c‰MˆFð ˜�mð �IÕ" Õ"ÜÐ<Ó=Ð=à‰;ØˆCä�D‹zˆØ�YÓÜ˜Q  4§;¡;°·
±
Ó;‰Iä˜Q  4§:¡:¨t¯{©{Ó;ˆIð % sÑ*ˆô �dœC× Ñ Ü˜t¸WÑE‰EÜ˜œe×$Ñ$Ø‰EäÐAÓBÐBð "+¨a£™°Q¸±]ˆà�o‰oØØØ(Þ?P”e×;Ò;ÐVWØ ð ð ˆð �~�~Ø˜Ÿ™Ñ%ˆEØ˜�;Ðô ˜#Ÿ*™*Ó%ˆŒ
Ø—‘—‘˜SŸX™XŸ[™[Ð)¨VÓ3Ð3Ð3Ø—
‘
—‘˜sŸz™zŸ}™}Ð-°Ó7Ð7Ð7à�C—M‘MÑ!ˆØ˜	Ó!Ð; j i¡\°°5±(Ð#;Ó;Ð!ä˜CŸH™HŸK™K¨#¯*©*¯-©-Ñ7¸5Ñ@À!ÓDˆõ	,ð ×$Ñ$ ]Ó3ˆð �Õ˜!ÖØ˜‘FˆEà×%Ñ%¨Ð%Ð=ˆDØ�D�6˜�ˆAÜ×"Ñ" 5¨!¯(©(«*°aÔ8ð 	×Ñ˜4  a°ÀwÐÑOð �x‰x�{‰{˜SŸX™XŸ[™[Ñ(¨AÑ-°Ñ5ˆð �w‰w˜Ÿ™Ñ  AÑ%ˆô �5˜!˜Q ¨¯© v°·±¨vÓ6Ü�f�W‹oñä�Q˜˜1˜a §¡¨¯©Ó.ñ/ð 	ð ˜‘F×$Ñ$Ö&ˆDØ�‹L˜CÑ‹LØ×Ñ˜TÖ"ñ 'ð ˜UÐ"Ð"r,   )ró  rk   r2  r¤  rµ  rÚ  r£  r¡  ra  r	   r‰  r  c               ó¬  • [        U 5        U R                  nUR                  (       d  [        S5      eUS:X  a2  [	        U5      [	        U5      -   [	        U	5      -   S:w  a  [        S5      eU(       aY  [        U5      [        L a  OF[        US5      (       a  [        U5      nO)[        US5      (       a  UR                  nO[        S5      eU(       a3  [        R                  R                  U5      (       d  [        SU S	35      eU(       a3  [        U5      [        [        [        R                   4;  a  [        S
5      eU	(       a  [        U	5      ["        La  [        S5      eU(       a  U(       d  U(       d  [        S5      eU(       a3  [        U5      [        [        [        R                   4;  a  [        S5      eU
S:  a  U
S-  n
U
S:  a  M  U
S:¼  a  U
S-  n
U
S:¼  a  M  U
S;  a  [        S5      e[%        U5      nUR&                  (       d  UR(                  (       a  [        S5      eXðR*                  ) -  nUR-                  U R.                  5       Vs/ s H  nUS   PM
     nnUUR1                  U R.                  5       Vs/ s H  nUS   PM
     sn-  nUUR3                  U R.                  5       Vs/ s H  nUS   PM
     sn-  nSnSnUS-   nUU;   a  US-  nU[        U5      -   nUU;   a  M  U(       a  U R5                  5         UR6                  nU R9                  UU	UUUUUUU
UUUUUUS9u  nnUb  UUl        U$ s  snf s  snf s  snf )aË  Insert an image for display in a rectangle.

Args:
    rect: (rect_like) position of image on the page.
    alpha: (int, optional) set to 0 if image has no transparency.
    filename: (str, Path, file object) image filename.
    height: (int)
    keep_proportion: (bool) keep width / height ratio (default).
    mask: (bytes, optional) image consisting of alpha values to use.
    oc: (int) xref of OCG or OCMD to declare as Optional Content.
    overlay: (bool) put in foreground (default) or background.
    pixmap: (pymupdf.Pixmap) use this as image.
    rotate: (int) rotate by 0, 90, 180 or 270 degrees.
    stream: (bytes) use this as image.
    width: (int)
    xref: (int) use this as image.

'page' and 'rect' are positional, all other parameters are keywords.

If 'xref' is given, that image is used. Other input options are ignored.
Else, exactly one of pixmap, stream or filename must be given.

'alpha=0' for non-transparent images improves performance significantly.
Affects stream and filename only.

Optimum transparent insertions are possible by using filename / stream in
conjunction with a 'mask' image of alpha values.

Returns:
    xref (int) of inserted image. Re-use as argument for multiple insertions.
r}  r   r   z4xref=0 needs exactly one of filename, pixmap, streamr¡  r   zbad filenamezNo such file: 'rî   z#stream must be bytes-like / BytesIOzpixmap must be a Pixmapz mask requires stream or filenamez!mask must be bytes-like / BytesIOrí  )r   rî  r…  r=  úbad rotate valueú!rect must be finite and not emptyr   rr  ÚfzImgr   )rk   r¡  r	   r¢  r  r£  rÚ  r  ra  r¤  r‰  r2  ró  r¥  r¦  )rp  rí   r  rÄ   ré   rÉ   rè  r@   r   ri   r
   r¹  rº  r   r§  r>   r¨  rî  r,  r�  r€  ru  rq  r;  r‰  rm  rŒ  r«  r¼  )r×   rý   ró  rk   r2  r¤  rµ  rÚ  r£  r¡  ra  r	   r‰  r  r2  r%  r  rh  ÚilstrJ   r¥  r¦  s                         r*   Úinsert_imageÚPage.insert_image¦0  s  € ô` 	�DÔØ�k‰kˆØ�z�zÜ˜[Ó)Ð)à�1‹9œ$˜x›.¬4°«<Ñ7¼$¸v»,ÑFÈ!ÓKÜÐSÓTÐTæÜ�H‹~¤Ò$ØÜ˜ :×.Ñ.Ü˜x›=‘Ü˜ 6×*Ñ*Ø#Ÿ=™=‘ä  Ó0Ð0æœBŸG™GŸN™N¨8×4Ñ4Ü# o°h°Z¸qÐ$AÓBÐBÞœ˜V›¬U´I¼r¿z¹zÐ,JÓJÜÐBÓCÐCÞœ˜V›¬FÒ2ÜÐ6Ó7Ð7Þž¦8ÜÐ?Ó@Ð@Þ”D˜“J¤u¬i¼¿¹Ð&DÓDÜÐ@ÓAÐAØ�q‹jØ�c‰MˆFð �q�jà˜‹mØ�c‰MˆFð ˜�màÐ*Ó*ÜÐ/Ó0Ð0ä�‹JˆØ�:�:˜ŸŸÜÐ@ÓAÐAØ×.Ñ.Ð.Ñ.ˆð "×1Ñ1°$·+±+Ô>Ó?Ò>˜��!”Ñ>ˆÐ?Ø˜s×4Ñ4°T·[±[ÔAÓBÒA˜!��1”ÑAÑBÑBˆØ˜s×1Ñ1°$·+±+Ô>Ó?Ò>˜!��1”Ñ>Ñ?Ñ?ˆØˆØˆØ�s‘7ˆØ˜$ÓØ�‰FˆAØœ3˜q›6‘zˆHð ˜$Õö Ø×ÑÔ Ø×$Ñ$ˆØ×*Ñ*ØØØØØØØØØØ+ØØØØØð +ð 
‰ˆˆgð" ÑØ!(ˆCÔàˆùòC @ùÚBùÚ?s   ÉMÊMÊ:Mc                óŒ   • [        U 5        [        R                  " X5      nUS:X  a  [        S5      eU R	                  U45        g)z'Insert a new link for the current page.ra   úlink kind not supportedN)rp  r  ÚgetLinkTextrÄ   r  )r×   r  rJ	  rà   s       r*   rA  ÚPage.insert_link"1  s=   € ä�DÔÜ×!Ò! $Ó,ˆØ�B‹;ÜÐ6Ó7Ð7Ø×!Ñ! 5 (Õ+r,   çš™™™™™©?)r   rö  rÿ   r  r¿  r  ro  r  rN  Úmiter_limitÚrender_modera  r'  r£  rµ  r¶  rÚ  c               ó”   • U R                  5       nUR                  UUUUUUUUU	U
UUUUUUUUS9nUS:¼  a  UR                  U5        U$ )N)r   rö  rÿ   r  r¿  r  ro  r  rN  rß  rÞ  ra  r'  rµ  r¶  rÚ  r   )r^  rŸ  rb  )r×   rj  r   r   rö  rÿ   r  r¿  r  ro  r  rN  rÞ  rß  ra  r'  r£  rµ  r¶  rÚ  r1  r¦   s                         r*   rŸ  ÚPage.insert_text*1  ss   € ð0 �n‰nÓˆØ�_‰_ØØØØ!ØØØ!ØØØØ%Ø#Ø#ØØØ)Ø%Øð% ð 
ˆð( �‹7Ø�J‰J�wÔØˆ	r,   )r  rN  ro  r  Ú
expandtabsr¶  r  r  rÿ   r   rö  rÞ  r'  rÚ  r£  rß  ra  r¿  rµ  c               ó˜   • U R                  5       nUR                  UUUUUU
UUUU	UUUUUUUUUUS9nUS:¼  a  UR                  U5        U$ )a£  Insert text into a given rectangle.

Notes:
    Creates a Shape object, uses its same-named method and commits it.
Parameters:
    rect: (rect-like) area to use for text.
    buffer: text to be inserted
    fontname: a Base-14 font, font name or '/name'
    fontfile: name of a font file
    fontsize: font size
    lineheight: overwrite the font property
    color: RGB color triple
    expandtabs: handles tabulators with string function
    align: left, center, right, justified
    rotate: 0, 90, 180, or 270 degrees
    morph: morph box with a matrix and a fixpoint
    overlay: put text in foreground or background
Returns:
    unused or deficit rectangle area (float)
)r   rö  rÿ   r  r¿  r  ro  r  râ  rß  rÞ  rN  r  ra  r'  rµ  r¶  rÚ  r   )r^  ra  rb  )r×   rý   rù	  r  rN  ro  r  râ  r¶  r  r  rÿ   r   rö  rÞ  r'  rÚ  r£  rß  ra  r¿  rµ  r1  r¦   s                           r*   ra  ÚPage.insert_textbox[1  s|   € ðZ �n‰nÓˆØ×ÑØØØØ!ØØØ!ØØØØ!Ø#Ø#Ø%ØØØØ)Ø%Øð)  ð 
ˆð, �‹7Ø�J‰J�wÔØˆ	r,   c                ó(   • U R                  5       S:H  $ )z3Check if /Contents is in a balanced graphics state.r  )rl  r0   s    r*   r‹  ÚPage.is_wrapped£1  s   € ð ×$Ñ$Ó&¨&Ñ0Ð0r,   c                óú   • [        U R                  SS9nUR                  (       d  g[        R                  " UR                  5       [        S5      5      nUR                  (       d  g[        R                  " U5      $ )zPage language.FrÖ  NÚLang)rÛ   rÅ   rÍ   r£   r  r  r  Úpdf_to_str_buf)r)   râ  rJ  s      r*   rK  ÚPage.language¨1  sX   € ô ˜tŸy™y°5Ñ9ˆØ×!×!ØÜ×-Ò-¨g¯k©k«m¼XÀfÓ=MÓNˆØ��ØÜ×#Ò# DÓ)Ð)r,   c              #  ób   #   • U R                  5       nU H  nUb  US   U;   d  M  Uv •  M     g7f)zÃGenerator over the links of a page.

Args:
    kinds: (list) link kinds to subselect from. If none,
           all links are returned. E.g. kinds=[LINK_URI]
           will only yield URI links.
Nr  )r  )r)   ÚkindsÚ	all_linksrš  s       r*   r)  Ú
Page.links³1  s2   é € ð —N‘NÓ$ˆ	ÛˆDØ‰}  V¡°Õ 5Ø”ò ùs   ‚ /¦	/c                ó4  • [        U 5        [        U5      [        L a  SnUnO"[        U5      [        L a  UnSnO[	        S5      eU R                  X25      nU(       d  U$ SUl        [        R                  " U 5      Ul	        X@R                  [        U5      '   U$ )zhLoad an annot by name (/NM key) or xref.

Args:
    ident: identifier, either name (str) or xref (int).
r   Nz&identifier must be a string or integerT)rp  rÉ   rè  r9   rÄ   rÆ  rö   r   r"  rí   rZ  r[  )r)   Úidentr  r   r  s        r*   rK  ÚPage.load_annotÀ1  sŠ   € ô 	�DÔÜ�‹;œ#ÒØˆDØ‰DÜ�%‹[œCÒØˆDØ‰DäÐEÓFÐFØ×Ñ˜tÓ*ˆÞØˆJØˆŒÜ—]’] 4Ó(ˆŒ
Ø$'×Ñœ˜C›Ñ!Øˆ
r,   c                ó8  • [        U 5        [        R                  " U R                  5      nUR                  (       d  g[        U5      nSUl        [        R                  " U 5      Ul	        XR                  [        U5      '   SUl        SUl        U R                  R                  (       a\  U R                  5       nU Vs/ s H  o3S   [        R                  :X  d  M  UPM     nnU(       a  US   nUS   Ul        US   Ul        U$ SUl        SUl        U$ s  snf )zGet first Link.NTr   ra   r   r   )rp  r£   Úfz_load_linksrÅ   rÍ   rm  rö   r   r"  rí   rZ  r[  r  r  rz  r¥  )r)   r  rí  re  Úlink_ids        r*   rð  ÚPage.load_links×1  sê   € ä�DÔÜ×!Ò! 4§9¡9Ó-ˆØ�~�~ØÜ�C‹jˆØˆŒÜ—]’] 4Ó(ˆŒ
Ø$'×Ñœ˜C›Ñ!ØˆŒØˆŒØ�;‰;××Ø×$Ñ$Ó&ˆEÙ %ÓF¢˜1¨1©´×1EÑ1EÑ)E—Q¡ˆEÐFÞØ ™(�Ø" 1™:�”Ø  ™�”ð ˆ
ð ˆCŒHØˆCŒFØˆ
ùò Gs   Â?DÃDc                ó&  • [        U 5        [        U R                  5      n[        X!5      nUnU(       d  U$ SUl        [
        R                  " U 5      Ul        X@R                  [        U5      '   [        5       n[        R                  XE5        UnU$ )zLoad a widget by its xref.T)rp  rÛ   rÅ   ÚJM_get_widget_by_xrefrö   r   r"  rí   rZ  r[  r\  r  r]  )r)   r  r×   rà   r  r^  s         r*   Úload_widgetÚPage.load_widgetò1  sw   € ä�DÔä˜DŸI™IÓ&ˆÜ% tÓ2ˆàˆÞØˆJØˆŒÜ—]’] 4Ó(ˆŒ
Ø$'×Ñœ˜C›Ñ!Ü“ˆÜ×Ñ˜3Ô'ØˆØˆ
r,   c                óâ   • [        U 5        U R                  SS9nUR                  (       d!  [        R                  " U R
                  5      nO[        UR                  5       5      n[        U5      $ )zThe MediaBox.FrÖ  )	rp  rô  rÍ   r£   r}  rÅ   ÚJM_mediaboxr  r,  )r)   r×   rý   s      r*   r8  ÚPage.mediabox2  sQ   € ô 	�DÔØ�~‰~ uˆ~Ð-ˆØ��Ü×&Ò&¨¯	©	Ó2‰Dä §¡£
Ó+ˆDÜ�D‹zÐr,   c                ój   • [        U R                  R                  U R                  R                  5      $ r.   )r#  r8  r¯  r±  r0   s    r*   Úmediabox_sizeÚPage.mediabox_size2  s#   € ä�T—]‘]×%Ñ% t§}¡}×'7Ñ'7Ó8Ð8r,   c                ó   • [        U 5      $ r.   )ÚShaper0   s    r*   r^  ÚPage.new_shape2  ó   € Ü�T‹{Ðr,   c                ó,   • [         R                  U 5      $ )z7All /Contents streams concatenated to one bytes object.)r  Ú_get_all_contentsr0   s    r*   Úread_contentsÚPage.read_contents2  s   € ä×&Ñ& tÓ,Ð,r,   c                ó`   • [        U 5        U R                  nUR                  U 5      nX l        g)z-Refresh page after link/annot/widget updates.N)rp  rí   rµ	  rÅ   )r)   r2  r×   s      r*   ÚrefreshÚPage.refresh!2  s&   € ä�DÔØ�k‰kˆØ�‰˜tÓ$ˆà�	r,   )rk   r¡  r	   c               ór  • U R                   nUR                  U5      (       d  [        S5      e[        U5      [        U5      -   [        U5      -   S:w  a  [        S5      eU R	                  U R
                  X$US9nUR                  Xa5        U R                  5       S   nUR                  US5        SU l	        g)a’  Replace the image referred to by xref.

Replace the image by changing the object definition stored under xref. This
will leave the pages appearance instructions intact, so the new image is
being displayed with the same bbox, rotation etc.
By providing a small fully transparent image, an effect as if the image had
been deleted can be achieved.
A typical use may include replacing large images by a smaller version,
e.g. with a lower resolution or graylevel instead of colored.

Args:
    xref: the xref of the image to replace.
    filename, pixmap, stream: exactly one of these must be provided. The
        meaning being the same as in Page.insert_image.
zxref not an imager   z3Exactly one of filename/stream/pixmap must be given)rk   r	   r¡  r¨  r  N)
rí   rŒ  rÄ   ré   r×  rý   rz  rP
  rR
  r!  )r×   r  rk   r¡  r	   r2  r'  Úlast_contents_xrefs           r*   r›  ÚPage.replace_image)2  s±   € ð. �k‰kˆØ× Ñ  ×&Ñ&ÜÐ0Ó1Ð1Ü�‹>œD ›LÑ(¬4°«<Ñ7¸1Ó<ÜÐRÓSÐSØ×$Ñ$Ø�I‰I Àð %ð 
ˆð 	�‰�hÔ%Ø!×.Ñ.Ó0°Ñ4Ðð 	×ÑÐ,¨dÔ3ØˆÕr,   c                óz   • [        U 5        [        U R                  SS9nUR                  (       d  g[	        U5      $ )zPage rotation.r   rÖ  )rp  rÛ   rÅ   rÍ   ÚJM_page_rotationrC  s     r*   rx  ÚPage.rotationO2  s1   € ô 	�DÔÜ˜DŸI™I°Ñ2ˆØ��ØÜ Ó%Ð%r,   c                ó>   • [        [        R                  U 5      5      $ )zReflects page rotation.)r€  r  Ú_rotate_matrixr0   s    r*   r{  ÚPage.rotation_matrixX2  s   € ô ”e×*Ñ*¨4Ó0Ó1Ð1r,   c                ó¬   • [        U 5        [        R                  " U R                  UR                  [        U5      [        R                  " 5       5        g)z-Run page through a device.
dw: DeviceWrapper
N)rp  r£   r�  rÅ   rS  rê  rl  )r)   rm  rŒ  s      r*   ro  ÚPage.run]2  s5   € ô 	�DÔÜ×Ò˜$Ÿ)™) R§Y¡YÔ0AÀ!Ó0DÄeÇnÂnÓFVÕWr,   )r  rd
  rÑ  r…  c               ó   • Uc  S[         -  [        -  [        -  [        -  nUb  [	        U5      n[        U 5        UnUc  U R                  X$S9nO[        US5      U :w  a  [        S5      eUR                  XS9nUc  AU$ )aZ  Search for a string on a page.

Args:
    text: string to be searched for
    clip: restrict search to this rectangle
    quads: (bool) return quads instead of rectangles
    flags: bit switches, default: join hyphened words
    textpage: a pre-created pymupdf.TextPage
Returns:
    a list of rectangles or quads, each containing one occurrence.
r   )r  rÑ  rí   r‹  )rd
  )
re
  rg
  rf
  rh
  r,  rp  r&  rï   rÄ   Úsearch)r×   r   r  rd
  rÑ  r…  rU  Úrlists           r*   ri
  ÚPage.search_ford2  s¡   € ð( ‰=ØÜ"ñ#ä*ñ+ô *ñ*ô %ñ	%ˆEð ÑÜ˜“:ˆDä�DÔØˆØ‰:Ø×"Ñ"¨Ð"Ð:‰BÜ�R˜Ó" dÓ*ÜÐ:Ó;Ð;Ø—	‘	˜$�	Ð,ˆØÑØØˆr,   c                ó&   • U R                  SU5      $ )zSet the ArtBox.rä  ©rç  ©r)   rý   s     r*   Ú
set_artboxÚPage.set_artbox�2  s   € à× Ñ  ¨4Ó0Ð0r,   c                ó&   • U R                  SU5      $ )zSet the BleedBox.râ  r  r  s     r*   Úset_bleedboxÚPage.set_bleedbox‘2  s   € à× Ñ  ¨TÓ2Ð2r,   c                óx  • [        U 5        U R                  nUR                  (       a  [        S5      eUR                  (       d  [        S5      eU[        SUR                  5       5      ;  a  [        S5      eUR                  U5      (       d  [        S5      eUR                  U R                  SUS S35        g	)
z-Set object at 'xref' as the page's /Contents.r¿   r}  r   rX  zxref is no streamrO  rD  r\  N)
rp  rí   rÃ   rÄ   r  rT  r_  rv  r›  r  )r)   r  r2  s      r*   Úset_contentsÚPage.set_contents•2  s”   € ä�DÔØ�k‰kˆØ�=�=ÜÐ.Ó/Ð/Ø�z�zÜ˜[Ó)Ð)Ø”u˜Q §¡Ó 1Ó2Ó2Ü˜ZÓ(Ð(Ø×!Ñ! $×'Ñ'ÜÐ0Ó1Ð1Ø×Ñ˜Ÿ™ J°4¸°(¸$°Õ@r,   c                ó&   • U R                  SU5      $ )z,Set the CropBox. Will also change Page.rect.rá  r  r  s     r*   Úset_cropboxÚPage.set_cropbox£2  ó   € à× Ñ  ¨DÓ1Ð1r,   c                óˆ  • [        U 5        [        U R                  5      nU(       d/  [        R                  " UR                  5       [        S5      5        g[        R                  " U5      n[        [        S5      (       d   e[        R                  " UR
                  [        S5      [        R                  " U5      5        g)zSet PDF page default language.rè  rF  N)rp  rÛ   rÅ   r£   rI  r  r  rÁ  r@   r¯  rF  )r)   rK  râ  rJ  s       r*   rÃ  ÚPage.set_language§2  s…   € ä�DÔÜ˜tŸy™yÓ)ˆÞÜ×Ò˜wŸ{™{›}¬h°vÓ.>Õ?ä×5Ò5°hÓ?ˆDÜœ5Ð"A×BÑBÐBÐBÜ×*Ò*Ø—K‘KÜ˜VÓ$Ü×7Ò7¸Ó=õr,   c                ó¨  • [        U 5        U R                  5       n[        U5      n[        R                  " U5      (       d  [        R
                  " U5      (       a  [        [        5      e[        R                  " UR                  5       [        S5      U5        [        R                  " UR                  5       [        S5      5        [        R                  " UR                  5       [        S5      5        [        R                  " UR                  5       [        S5      5        [        R                  " UR                  5       [        S5      5        g)zSet the MediaBox.ÚMediaBoxrá  rä  râ  rã  N)rp  rô  r  r£   ræ  rç  rÄ   rè  r4  r  r  rI  )r)   rý   r×   r8  s       r*   r@  ÚPage.set_mediabox¶2  sÖ   € ä�DÔØ�~‰~ÓˆÜ" 4Ó(ˆÜ×"Ò" 8×,Ñ,Ü×,Ò,¨X×6Ñ6äœlÓ+Ð+Ü×Ò §¡£¬X°jÓ-AÀ8ÔLÜ×Ò˜DŸH™H›J¬°Ó(;Ô<Ü×Ò˜DŸH™H›J¬°Ó(:Ô;Ü×Ò˜DŸH™H›J¬°Ó(<Ô=Ü×Ò˜DŸH™H›J¬°Ó(;Õ<r,   c                ó¸   • [        U 5        [        U R                  5      n[        U5      n[        R
                  " UR                  5       [        S5      U5        g)zSet page rotation.r<  N)rp  rÛ   rÅ   ÚJM_norm_rotationr£   rQ  r  r  )r)   rx  r×   r|  s       r*   rï  ÚPage.set_rotationÅ2  s?   € ä�DÔÜ˜DŸI™IÓ&ˆÜ˜xÓ(ˆÜ×Ò §¡£
¬H°XÓ,>ÀÕDr,   c                ó&   • U R                  SU5      $ )zSet the TrimBox.rã  r  r  s     r*   Úset_trimboxÚPage.set_trimboxÌ2  r(  r,   c	                ó"  • SS jn	[        U 5        U R                  n
U
R                  (       a  UR                  (       d  [        S5      eUR                  (       d  UR
                  (       a  [        S5      eUS:  a  X2R                  -  nUS:  a  M  X#   nXR                  ) -  nU(       d  UR                  OUR                  U-  nUR                  (       d  UR
                  (       a  [        S5      eXÛR                  ) -  nU	" XÜXGS9nU
R                  U R                  5       Vs/ s H  oÿS   PM	     nnUU
R                  U R                  5       Vs/ s H  oÿS   PM	     sn-  nUU
R                  U R                  5       Vs/ s H  oÿS	   PM	     sn-  nS
nSnUS-   nUU;   a  US-  nU[        U5      -   nUU;   a  M  UR                  nU
R                  U:X  a  [        S5      eU
R                  R!                  US5      nUc  [#        U
5      nUU
R                  U'   UU4nU
R$                  R!                  US5      nU(       a  U R'                  5         U R)                  UUUUUUUUS9nUU
R$                  U'   U$ s  snf s  snf s  snf )a  Show page number 'pno' of PDF 'docsrc' in rectangle 'rect'.

Args:
    rect: (rect-like) where to place the source image
    docsrc: (document) source PDF
    pno: (int) source page number
    keep_proportion: (bool) do not change width-height-ratio
    overlay: (bool) put in foreground
    oc: (xref) make visibility dependent on this OCG / OCMD (which must be defined in the target PDF)
    rotate: (int) degrees (multiple of 90)
    clip: (rect-like) part of source page rectangle
Returns:
    xref of inserted object (for reuse)
r   c           	     óè  • U R                   U R                  -   S-  nUR                   UR                  -   S-  n[        SSSSUR                  * UR                  * 5      [        U5      -  nX-  nUR
                  UR
                  -  nUR                  UR                  -  n	U(       a  [        X‰5      =p‰U[        X‰5      -  nU[        SSSSUR                  UR                  5      -  n[        U5      $ )aØ  Calculate transformation matrix from source to target rect.

Notes:
    The product of four matrices in this sequence: (1) translate correct
    source corner to origin, (2) rotate, (3) scale, (4) translate to
    target's top-left corner.
Args:
    sr: source rect in PDF (!) coordinate system
    tr: target rect in PDF coordinate system
    keep: whether to keep source ratio of width to height
    rotate: rotation angle in degrees
Returns:
    Transformation matrix.
ç       @r   r   )	r$  r%  r€  re  rf  r‰  r2  rÅ  ÚJM_TUPLE)
ÚsrÚtrrt  ra  ÚsmpÚtmprŒ  Úsr1ÚfwÚfhs
             r*   Úcalc_matrixÚ'Page.show_pdf_page.<locals>.calc_matrixé2  sÎ   € ð  —5‘5˜2Ÿ5™5‘= CÑ'ˆCà—5‘5˜2Ÿ5™5‘= CÑ'ˆCô �q˜!˜Q  C§E¡E 6¨C¯E©E¨6Ó2´V¸F³^ÑCˆAà‘&ˆCà—‘˜CŸI™IÑ%ˆBØ—‘˜SŸZ™ZÑ'ˆBÞÜ˜b›+Ð%�à”˜“ÑˆAØ”˜˜1˜a  C§E¡E¨3¯5©5Ó1Ñ1ˆAÜ˜A“;Ðr,   r}  rÔ  z!clip must be finite and not empty)rt  ra  r   r   rr  ÚfzFrmr   z%source document must not equal targetN)r£  rð  r  rÚ  r  r|  r¥  )Tr   )rp  rí   r  rÄ   r�  r€  rt  ru  rý   r‰  r;  rq  rm  rè  rÁ  r©  r=   rÇ  rª  rŒ  rø  )r×   rý   rÊ  ry  r¤  r£  rÚ  ra  r  r?  r2  r‡  Útar_rectÚsrc_rectrð  rh  rÖ  rJ   r¥  ÚisrcÚgmapÚpno_idr  s                          r*   rÈ  ÚPage.show_pdf_pageÐ2  sj  € ô2 	ôD 	�DÔØ�k‰kˆà�z�z §§Ü˜[Ó)Ð)à�=�=˜D×,×,ÜÐ@ÓAÐAà�A‹gØ×$Ñ$Ñ$ˆCð �A�gà‘;ˆà×5Ñ5Ð5Ñ5ˆæ(,�8—=’=°(·-±-À$Ñ2FˆØ×× × 4× 4ÜÐ@ÓAÐAØ×=Ñ=Ð=Ñ=ˆá˜X°oÑUˆð "×3Ñ3°D·K±KÔ@ÓAÒ@˜�!”Ñ@ˆÐAØ˜s×2Ñ2°4·;±;Ô?Ó@Ò?˜!�1”Ñ?Ñ@Ñ@ˆØ˜s×1Ñ1°$·+±+Ô>Ó?Ò>˜!�1”Ñ>Ñ?Ñ?ˆð ˆØˆØ�s‘7ˆØ˜$ÓØ�‰FˆAØœ3˜q›6‘zˆHð ˜$Õð ×ÑˆØ�=‰=˜DÓ ÜÐDÓEÐEð �}‰}× Ñ   tÓ,ˆØ‰<Ü˜C“=ˆDØ"&ˆC�M‰M˜$Ñð ˜�ˆØ�~‰~×!Ñ! &¨!Ó,ˆæØ×ÑÔ Ø×"Ñ"ØØØØØØØØð #ð 	
ˆð "&ˆ�‰�vÑàˆùòQ BùÚ@ùÚ?s   Ä(JÅJÆJc                óÄ  • [        U 5        [        R                  " 5       nU R                  SS9nUR                  (       d  [        U5      $ [        R                  " [        R                  R                  5      n[        R                  " X#U5        [        U5      nU R                  S-  S:X  a  [        U5      nU$ [        SSSSSU R                  R                  5      nU$ )zPage transformation matrix.FrÖ  rí  r   r   r¨  )rp  r£   r}  rô  rÍ   r|  rr  r3  r`  rx  r€  r€	  r2  )r)   rõ  r×   r8  r  s        r*   ru  ÚPage.transformation_matrixL3  s²   € ô 	�DÔä�nŠnÓˆØ�~‰~ uˆ~Ð-ˆØ��Ü$ SÓ)Ð)Ü—<’<¤§¡× 7Ñ 7Ó8ˆÜ× Ò  °Ô5Ü Ó$ˆà�=‰=˜3Ñ !Ó#Ü˜“+ˆCð ˆ
ô ˜˜A˜q " a¨¯©×)<Ñ)<Ó=ˆCØˆ
r,   c                óÂ   • U R                  S5      nUc  U R                  $ U R                  n[        US   UR                  US   -
  US   UR                  US   -
  5      $ )zThe TrimBoxrã  r   r   r   r   r|  r}  s      r*   ÚtrimboxÚPage.trimbox_3  s[   € ð �‰˜yÓ)ˆØ‰<Ø—<‘<ÐØ�]‰]ˆÜ�D˜‘G˜RŸU™U T¨!¡W™_¨d°1©g°r·u±u¸tÀA¹w±ÓGÐGr,   c                ó¢   • [        U 5        [        R                  " X5      nUS:X  a  [        S5      eU R                  R                  US   X S9  g)z"Update a link on the current page.ra   rÚ  r  rÖ   N)rp  r  rÛ  rÄ   rí   rM  )r×   r  rà   s      r*   Úupdate_linkÚPage.update_linkh3  sH   € ä�DÔÜ×!Ò! $Ó,ˆØ�B‹;ÜÐ6Ó7Ð7à�‰×!Ñ! # f¡+¨uÐ!Ò@r,   c              #  óò   #   • U R                  5        Vs/ s H   o"S   [        R                  :X  d  M  US   PM"     nnU H-  nU R                  U5      nUb  UR                  U;   d  M)  Uv •  M/     gs  snf 7f)z×Generator over the widgets of a page.

Args:
    types: (list) field types to subselect from. If none,
            all fields are returned. E.g. types=[PDF_WIDGET_TYPE_TEXT]
            will only yield text fields.
r   r   N)rz  r£   rV  rø  rW  )r)   rM  r!   Úwidget_xrefsr  r^  s         r*   rˆ  ÚPage.widgetsq3  sr   é € ð '+×&6Ñ&6Ô&8Ó[Ò&8 ¸a¹DÄE×DZÑDZÑ<Z›˜˜!œÑ&8ˆÐ[ã ˆDØ×%Ñ% dÓ+ˆFØ‰} × 1Ñ 1°UÕ :Ø”ò !ùò \ùs   ‚A7•A2³	A2¼)A7Á)A7c                ó´   • U R                  5       u  pUS:”  a  SU-  n[        R                  XS5        US:”  a  SU-  S-   n[        R                  XS5        gg)z,Ensure page is in a balanced graphics state.r   r  Fs   
Qr
  TN)rl  r  r?  )r)   ÚpushÚpopÚprependrp   s        r*   rŒ  ÚPage.wrap_contents‚3  s\   € à×)Ñ)Ó+‰	ˆØ�!‹8Ø˜t‘mˆGÜ×"Ñ" 4°%Ô8Ø�‹7Ø˜c‘\ EÑ)ˆFÜ×"Ñ" 4°Õ6ð r,   c	                óâ  • [        U [        5      (       d   eU(       d  [        S5      e[        U5      [        L a  US:X  a  Uc  UR                  XXCS9  gU4nUS   R                  n	[        5       n
U
R                  U R                  R                  U R                  R                  S9nU H!  nXœR                  -  n	UR                  XµUS9  M#     Uc  U	nU R                  UU
SUUUU	US9  Sn
Sng)a„  Write the text of one or more pymupdf.TextWriter objects.

Args:
    rect: target rectangle. If None, the union of the text writers is used.
    writers: one or more pymupdf.TextWriter objects.
    overlay: put in foreground or background.
    keep_proportion: maintain aspect ratio of rectangle sides.
    rotate: arbitrary rotation angle.
    oc: the xref of an optional content object
z$need at least one pymupdf.TextWriterr   N)r^  ro  r£  ro	  )r^  ro  )r£  r¤  ra  r  rÚ  )rC   rÓ   rÄ   rÉ   Ú
TextWriterÚ
write_textÚ	text_rectrÂ   rÀ  rý   r‰  r2  rÈ  )r×   rý   Úwritersr£  ro  r^  r¤  ra  rÚ  r  Útextdocr„  Úwriters                r*   rZ  ÚPage.write_textŒ3  s  € ô* ˜$¤×%Ñ%Ð%Ð%ÞÜÐCÓDÐDÜ�‹=œJÒ&Ø˜‹{˜t™|Ø×"Ñ" 4ÀÐ"ÑWØà"˜*�Ø�q‰z×#Ñ#ˆÜ“*ˆØ× Ñ  t§y¡y§¡¸t¿y¹y×?OÑ?OÐ ÐPˆÛˆFØ×$Ñ$Ñ$ˆDØ×Ñ˜e¸EÐÓBñ ð ‰<ØˆDØ×ÑØØØØØ+ØØØð 	ñ 		
ð ˆØ‰r,   c                ób   • [        U 5        U R                  R                  U R                  5      $ rp  rq  r0   s    r*   r  Ú	Page.xref¿3  rs  r,   zpage rectangle)r2  )rZ  rè  rç  rw  r;  rí   rÅ   rö   rs  r³  r.   )rÚ  rº  r«  ru  )Nr   N)NNNNNr   r   r   r   r   r   r   r¨  NN)r   r   Nr&  )Nr   r   N)r   Nr   r   NNN)rj  r»   r«  rã   )rý   r½   r«  rã   )rj  r»   r5  r´  rk   rè  rS  ru  rË  ru  rý  ru  r«  rã   )rý   r½   r   rè  r   rœ  rÿ   ru  rþ   rw  r`  rw  r)  rw  rN  rœ  r‹  rw  r
  rw  r  r9   r^  rœ  r  r9   ra  r9   r«  rã   rx  )r«  rã   )r  rµ   r«  rã   )rF  r»   rG  r»   r«  rã   )rE  rµ   r«  rã   )NNr¢  r   NNT)r   ru  rÿ   ru  r   rœ  r  r9   r  rw  rþ   rw  r*  ré   r«  rã   )ÚNote)rj  r»   r   rè  rý  rè  r«  rã   )r^  r\  r«  rã   )r   r   r   )
r×   ú'Page'rH
  r9   rb  r9   r   r9   r«  ré   rr  )r×   rc  r  r9   )r×   rc  r^  r\  r«  r\  )r«  r€  )rq  NNr   NFr   r   Tr   r   r   )$r×   rc  rF  r»   rG  r»   r¸  r»   r¹  r»   ro  rw  r  rw  r‹  ru  r‰  rœ  r'  ru  r´  ré   r²  r9   r³  r9   r£  ré   rµ  rœ  r¶  rœ  rÚ  r9   r«  r#  )rq  NNNr   r   r   Tr   r   r   )r×   rc  r¼  r»   r¿  rœ  ro  rw  r  rw  r'  rw  r‹  ru  r‰  rœ  r²  r9   r³  r9   r£  ré   rµ  rœ  r¶  rœ  rÚ  r9   r«  r#  )"r×   rc  rF  r»   rG  r»   r¸  r»   ro  rw  r  rw  r‹  ru  r‰  rœ  r'  rw  r´  ré   r²  r9   r³  r9   r£  ré   rµ  rœ  r¶  rœ  rÚ  r9   r«  r#  )
rq  Nr   r   r   TNr   r   r   )r×   rc  rF  r»   rG  r»   ro  rw  r‹  ru  r‰  rœ  r²  r9   r³  r9   r£  ré   r'  rw  rµ  rœ  r¶  rœ  r«  r#  )r×   rc  rý   z"typing.Union[rect_like, quad_like]ro  rw  r  rw  r‹  ru  r'  rw  r‰  rœ  r²  r9   r³  r9   r£  ré   rµ  rœ  r¶  rœ  rÚ  r9   r«  r#  )rq  NNr   Nr   r   TFr   r   r   )r×   rc  rE  rµ   ro  rw  r  rw  r‹  ru  r‰  rœ  r'  rw  r²  r9   r³  r9   r£  ré   r´  ré   rµ  rœ  r¶  rœ  rÚ  r9   r«  r#  )rq  NNr   r   r   NTr   r   r   )r×   rc  rI  r¼   ro  rw  r  rw  r‹  ru  r‰  rœ  r²  r9   r³  r9   r'  rw  r£  ré   rµ  rœ  r¶  rœ  rÚ  r9   r«  r#  )rq  NNr   r   r   NTr   r   r   N)r×   rc  rý   r½   ro  rw  r  rw  r‹  ru  r‰  rœ  r²  r9   r³  r9   r'  rw  r£  ré   rµ  rœ  r¶  rœ  rÚ  r9   r«  r#  )rq  NNTNr   Fr   r   Tr   r   r   )$r×   rc  r¼  r»   rj  r»   rÙ  rœ  ro  rw  r  rw  r‹  ru  r×  ré   r'  rw  r‰  rœ  r´  ré   r²  r9   r³  r9   r£  ré   rµ  rœ  r¶  rœ  rÚ  r9   r«  r#  )r   rq  Nr   r   r   TNr   r   r   )r×   rc  rF  r»   rG  r»   rÝ  rœ  ro  rw  r‹  ru  r‰  rœ  r²  r9   r³  r9   r£  ré   r'  rw  rµ  rœ  r¶  rœ  rÚ  r9   r«  r#  ©r   Nrv  )r  ré   r«  rµ   rÀ  )r×   rc  r#  ré   rí  ré   r«  rµ   )r×   rc  r«  rµ   )r×   rc  rð  rº   rò  r,  r  r½   ró  ré   r°  ré   r«  r¹  )NNr   r   T)r]  rœ  r^  rœ  r_  ré   r«  rµ   rµ  r™  )r×   rÓ   rý   r½   r«  rè  )r  r½   rÑ  r9   r«  r»  )r½  NNFr   r   )r«  r¶   )r×   rc  r  r:   rJ	  ré   r«  r²  )(r×   rc  rj  r»   r   útyping.Union[str, list]r   rœ  rö  rv  rÿ   rè  r  ru  r¿  r9   r  r9   ro  rw  r  rw  rN  rœ  rÞ  rœ  rß  r9   ra  r9   r'  rw  r£  ré   rµ  rœ  r¶  rœ  rÚ  r9   ).r×   rc  rý   r½   rù	  re  r  r9   rN  rœ  ro  rw  r  r9   râ  r9   r¶  rœ  r  rw  r  ru  rÿ   rè  r   rœ  rö  rv  rÞ  rœ  r'  rw  rÚ  r9   r£  ré   rß  r9   ra  r9   r¿  r9   rµ  rœ  r«  rœ  )rð  ztyping.Union[str, int]r«  rã   )r   TTr   r   Nr¬  )r×   rc  r  r:   r«  r²  )NNTNNTr   r   )r×   rc  r«  r²  )Ÿr2   r3   r4   r5   r‘   rð   ró   rò  r   r£   ÚPDF_ANNOT_LE_OPEN_ARROWr  r  r  r#  r,  r/  rH  rK  rO  r  rZ  rd  r÷   rl  rv  rq  r†  r¼  rÁ  rÆ  rÊ  rÐ  rô  rg  rÞ  rç  rr  rø  rþ  r  r  r  r  r  r  r  r!  r$  r)  r.  r1  r5  r8  r<  r?  rD  rz  r°  rO
  rß	  rt  ry  ry  r~  r�  rˆ  r   r€	  r’  r–  rœ  rN
  rª  rv  r·  r¾  rÂ  rÆ  rÉ  rÌ  rÏ  r_  rØ  rÞ  râ  rå  ré  rí  rñ  rõ  rû  rþ  rP
  r  r  r)  r0  r3  r  r€  rø  rC  re  ri  rv  r&  r~  rˆ  r  r  r‘  r”  r—  rš  r&  rH  r£  r¯  rÐ  r×  rA  rŸ  ra  r‹  rK  r)  rK  rð  rø  r8  rþ  r^  r  r	  r›  rx  r{  ro  ri
  r  r   r#  r&  rÃ  r@  rï  r2  rÈ  ru  rK  rN  rˆ  rŒ  rZ  r  rý   rw  r6   r/   r,   r*   rÓ   rÓ   %  s1  † òò òò&ôð< ØØØØØØØØ×2Ñ2ØØØØØô!Nò`ò@	òôò<
ôBôHòò DòDòò
òFô0ò.ôð4 GKØJKØ59ôj"òXò* ôò	%ô:ò!ôòBLò*9ô7ôrô	ð   $ØØðàðð  ðð ð	ð
 ðð ðð ðð õð<  Ø"Ø $Ø $Ø"&Ø!"Ø Ø!Ø×7Ñ7ØØØØØñ%.àð.ð ð.ð
 ð.ð ð.ð ð.ð ð.ð !ð.ð  ð.ð ð.ð ð.ð ð.ð ð.ð ð.ð  ð!.ð& õ'.ð` 59Ø*.ðØ38õôô	ô	ô	ô	ð Ø"ØØØØ $Ø!ð<ð ð<ð ð	<ð
 ð<ð ð<ð ð<ð ð<ð ð<ð õ<ð@ ØØØðBð õBö	öDö	öCôò$	*ò-ôð, ØØð	mØðmàðmð ðmð ð	mð
 õmô^;ò	"ò.ð ñHó ðHð ñHó ðHòô$Cð ñ
ó ð
ð ñó ðòô.-ò*ôXð ó8ó ð8ð !ØØ!ØØ Ø#ØØØ Ø$%Ø"#Øð#%Øð%àð%ð ð%ð ð	%ð
 ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð "ð%ð   ð!%ð" ð#%ð$ õ%%ðV !ØØ Ø!ØØØØ Ø$%Ø"#Øð Øð àð ð ð ð ð	 ð
 ð ð ð ð ð ð ð ð ð ð ð ð ð ð "ð ð  ð ð ð ð õ ðN !ØØ!ØØ Ø#ØØØ Ø$%Ø"#Øð!$Øð$àð$ð ð$ð ð	$ð
 ð$ð ð$ð ð$ð ð$ð ð$ð ð$ð ð$ð ð$ð ð$ð "ð$ð  ð$ð  ð!$ð" õ#$ðT !Ø!ØØØØ Ø Ø$%Ø"#Øð Øð àð ð ð ð ð	 ð
 ð ð ð ð ð ð ð ð ð ð ð ð "ð ð  ð ð õ ðJ !ØØ!Ø ØØØØ Ø$%Ø"#Øð Øð à4ð ð ð ð ð	 ð
 ð ð ð ð ð ð ð ð ð ð ð ð "ð ð  ð ð ð ð õ ðJ !ØØ!ØØ ØØØ Ø#Ø$%Ø"#Øð"Øð"àð"ð ð"ð ð	"ð
 ð"ð ð"ð ð"ð ð"ð ð"ð ð"ð ð"ð "ð"ð  ð"ð ð"ð õ"ðN !ØØ!ØØØØ Ø Ø$%Ø"#Øð Øð àð ð ð ð ð	 ð
 ð ð ð ð ð ð ð ð ð ð ð ð "ð ð  ð ð ð ð õ ðJ !ØØ!ØØØØ Ø Ø$%Ø"#ØØð#Øð#àð#ð ð#ð ð	#ð
 ð#ð ð#ð ð#ð ð#ð ð#ð ð#ð "ð#ð  ð#ð ð#ð õ#ðT !ØØ!Ø#Ø ØØ#ØØØ Ø$%Ø"#Øð#,Øð,àð,ð ð,ð ð	,ð
 ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð "ð,ð   ð!,ð" ð#,ð$ õ%,ðd Ø Ø!ØØØØ Ø Ø$%Ø"#Øð!Øð!àð!ð ð!ð ð	!ð
 ð!ð ð!ð ð!ð ð!ð ð!ð ð!ð ð!ð "ð!ð  ð!ð ð!ð õ!ðN Ø Ø!ØØØØ Ø Ø$%Ø"#Øð!Øð!àð!ð ð!ð ð	!ð
 ð!ð ð!ð ð!ð ð!ð ð!ð ð!ð ð!ð "ð!ð  ð!ð ð!ð õ!ôF	$ò1ð ñó ðð ñ!ó ð!ð ñó ðô&ô ò>ô$ö|ð@ !Øð'Øð'àð'ð ð'ð õ	'öR"òH8ô ð: %-ØØ'+Ø $Ø!Ø!ñ)Øð)ð $ð)ð
 'ð)ð  ð)ð ð)ð ð)ð õ)òV4ðn VWØ!ðaRØ5:ðaRØMRðaRàðaRð 
õaRôFBô
>ô@Cô
ô&ð6 ðØðàðð õ	ò5ò<ò?ò;ò=öò ò*:ð
 FJØ78ôQðp ØØØØØØØØñQ#ð 
õQ#ðn ØØØ ØØØØØØØØõzöx,ð !Ø#'Ø"Ø#ØØØ ØØ"&Ø!"Ø ØØ Ø Ø$%Ø"#Øñ+/Øð/àð/ð *ð/ð
 ð/ð !ð/ð ð/ð ð/ð ð/ð ð/ð ð/ð ð/ð  ð/ð ð/ð ð/ð  ð!/ð" ð#/ð$ ð%/ð& "ð'/ð(  ð)/ð* õ+/ðl Ø"&Ø ØØØ"#ØØ#Ø"Ø Ø#'Ø!"Ø ØØ Ø ØØØ$%ñ/FØðFàðFð ,ðFð
 ðFð  ðFð ðFð ðFð ðFð  ðFð ðFð ðFð ðFð ðFð !ðFð  ð!Fð" ð#Fð$ ð%Fð& ð'Fð( ð)Fð* ð+Fð, ð-Fð. "ð/Fð0 õ1FðP ñ1ó ð1ð ñ*ó ð*ôôò.ò6ð$ ñó ðð ñ9ó ð9òò-òð ØØñ$ Øð$ àõ$ ðL ñ&ó ð&ð ó2ó ð2òXð ØØØñ'ð õ'òR1ò3òAò2ôò=òEò2ð Ø ØØØØðzð õzðx ñó ðð$ ñHó ðHôAôò"7ð ØØØØØ ØØð1Øð1ð õ1ðf ñ2ó ð2ñ
 �EÐ/Ñ0€Dð Ór,   rÓ   c                  ó  • \ rS rSrS rS rS rS rS r\	S 5       r
S3S	 jrS4S
 jrS5S jr\	S 5       rS r\	S 5       rS r\	S 5       rS5S jr\	S 5       r\	S 5       r\	S 5       r\	S 5       rS6S jrS7S jrS rS rS rS r\	S8S j5       r\	S 5       rS r \	S 5       r!S9S  jr"S:S! jr#S;S" jr$S# r%S$ r&S% r'S& r(S' r)\	S( 5       r*\	S) 5       r+S* r,\	S+ 5       r-S, r.\	S- 5       r/\	S. 5       r0\	S/ 5       r1\	S0 5       r2\-r3\r4S1 r5S2r6g)<rî  iË3  c                ó*  • SU l         SU l         [        U[        [        R
                  4[        R                  [        R                  [        [        [        45      (       aC  Uu  p#Sn[        R                  " U[        U5      [        R                  " S5      U5      nXPl        g[        U[        [        R
                  4[        R                  [        R                  [        [        [        4[        [         45      (       aB  Uu  p#n[        R                  " U[        U5      [        R                  " S5      U5      nXPl        g[        U[        [        R
                  [#        S5      4[$        [        R&                  45      (       GaB  Uu  p&[)        U[        5      (       a  UR                  nOUc  [        R
                  " S5      n[)        U[$        5      (       a  UR                  n[        R*                  " U5      R,                  (       d  [/        S5      eUR,                  (       a[  [        R0                  " UU[        R
                  " 5       [        R2                  " S5      [        R4                  " 5       S5      U l        g[        R6                  " U5      U l        U R                  R,                  (       d  [9        [:        5      eg[        U[$        [        R&                  4[$        [        R&                  45      (       a¯  Uu  pg[)        U[$        5      (       a  UR                  n[)        U[$        5      (       a  UR                  nUnUn	UR,                  (       d7  [        R6                  " U	5      n
U
R,                  (       d  [9        [:        5      eO[        R<                  " X‰5      n
X l        g[        U[$        [        R&                  4[>        [        4[>        [        4S5      (       d<  [        U[$        [        R&                  4[>        [        4[>        [        45      (       Ga  [A        U5      S:X  a*  Uu  pkn[        R                  " [        RB                  5      nOUu  pkpÎ[        U5      n[)        U[$        5      (       a  UR                  OUn[        RD                  " U5      (       d6  [        RF                  " XÿRI                  5       URK                  5       X¼U5      nOW[        RF                  " XÿRI                  5       URK                  5       X¼[        R                  " [        RB                  5      5      nXPl        g[        U[L        [$        [        R&                  45      (       a6  US   S:X  a-  Uu  nn[)        U[$        5      (       a  UR                  nXPl        g[        U[$        [        R&                  4[        S45      (       GaÌ  US   n[A        U5      S:X  a  US   OSn[)        U[$        5      (       a  UR                  OUn[O        USS5      (       d  [/        S5      e[        R*                  " U5      nUR,                  (       d  U(       d  [/        S	5      e[        R                  " 5       n[        RP                  " U5      n[        RR                  " U5      n[        RT                  " U5      n[        RV                  " X+UUU5      nUR,                  RH                  UR,                  l$        UR,                  RJ                  UR,                  l%        UR,                  RX                  UR,                  l,        UR,                  RZ                  UR,                  l-         [\        R^                  " UR,                  UR,                  U5        XPl        g[        U[        R
                  [        4[        [        S[        [         45      (       Ga|  Uu  p+nn$n[)        U[        5      (       a-  UR                  n[)        U[        R
                  5      (       d   e[        Rn                  " U5      nUU-   U-  n%[        R                  " 5       n[        RV                  " X+UUU5      n[)        U$[p        [r        45      (       a"  [        Rt                  " U$5      n&[A        U$5      nOV[w        U$5      n'U'R,                  (       d  [/        S
5      e[        Rx                  " U'5      u  nn([        Rt                  " U$5      n&U%U-  U:w  a#  [/        SU< SU< SU< SU< SU%< SU< 35      e[        Rz                  " UR,                  U&5        XPl        g[        US5      (       Ga½  Uu  n)Sn*[}        U)S5      (       a.  U)R                  5       n+U+(       a  [        R€                  " U+5      n,O¿[}        U)U*5      (       a*  U)R‚                  n+U+(       a  [        R€                  " U+5      n,O„[)        U)[L        5      (       a  [        R€                  " U)5      n,OX[w        U)5      n'U'R,                  (       a  U'R,                  R@                  (       d  [/        S5      e[        R„                  " U'5      n,[        R†                  " W,[        R                  " [ˆ        [ˆ        [Š        [Š        5      [        RŒ                  " U,R�                  5       SSU,R‘                  5       SS5      5      u  p[n[        R’                  " U,5      u  n-n.U-UR,                  l,        U.UR,                  l-        XPl        g[        U[”        [        R–                  4[        5      (       Ga–  Uu  n/n0[™        U/5      n1[        Rš                  " U15      n2[O        U0SU2S-
  5      (       d  [/        [œ        5      e[        Rž                  " U1U0S5      n3[        R                   " U3[£        S5      5      n4[        R¤                  " U4[£        S5      5      (       dY  [        R¤                  " U4[£        S5      5      (       d4  [        R¤                  " U4[£        S5      5      (       d  [/        [¦        5      e[        R¨                  " U1U35      n,[        R†                  " U,[        R                  " [ˆ        [ˆ        [Š        [Š        5      [        RŒ                  " U,R�                  5       SSU,R‘                  5       SS5      5      u  n5p¼U5U l        gSn6U H  n7U6S[#        U75       SU7 S3-  n6M     [«        U65      e)aÈ  
Pixmap(colorspace, irect, alpha) - empty pixmap.
Pixmap(colorspace, src) - copy changing colorspace.
Pixmap(src, width, height,[clip]) - scaled copy, float dimensions.
Pixmap(src, alpha=1) - copy and add or drop alpha channel.
Pixmap(filename) - from an image in a file.
Pixmap(image) - from an image in memory (bytes).
Pixmap(colorspace, width, height, samples, alpha) - from samples data.
Pixmap(PDFdoc, xref) - from an image at xref in a PDF document.
Nr   z"source colorspace must not be Noner   r   Úrawr   zbad alpha valuez'cannot drop alpha for 'NULL' colorspacezbad samples datazbad samples length w=z h=z alpha=z n=z stride=z size=r   r™  úbad image datar¶  rä  ÚAlphaÚ
Luminosityz+Unrecognised args for constructing Pixmap:
ú    r€   r&   )VÚ_samples_mvÚ_memory_viewrJ  r,  r£   r.  rr  ÚFzIrectÚIRectr,  r¶   Úfz_new_pixmap_with_bboxrL  rí  rÅ   r9   ré   rÉ   rî  ÚFzPixmaprC   Úfz_pixmap_colorspacerÍ   rÄ   r’  r“  r”  Ú fz_new_pixmap_from_alpha_channelrß   ÚMSG_PIX_NOALPHAÚ!fz_new_pixmap_from_color_and_maskrœ  r<   Úfz_infinite_irectrM  Úfz_scale_pixmapre  rf  rè  rÕ  Úfz_pixmap_colorantsÚfz_pixmap_widthÚfz_pixmap_heightÚfz_new_pixmapr¸  r¹  r   Úpixmap_copyÚfz_pixmap_samples_memoryviewró  ÚstriderJ   rT  Úfz_samples_setÚfz_samples_getrA  r   r§  r¶  r/  rP  Úll_fz_pixmap_copy_rawr@   ró   Úfz_new_image_from_filer   rB  Úfz_get_pixmap_from_imageÚFZ_MIN_INF_RECTÚFZ_MAX_INF_RECTr}  r   r!  r›  rÂ   rÆ   rÏ   r·  r¸  r¹  r  r  rÖ  r�  rè  rl   )8r)   r  rö  rý   ró  rT  ÚspixÚmpixÚspmÚmpmri  r   r!  r7  r  Úsrc_pixr<  ÚsepsrJ   Úsrc_viewÚpm_viewrÊ  ÚtptrÚsptrÚ	pm_strideÚpm_nÚpm_alphaÚ
src_strideÚsrc_nrf  re  Úpm_iÚsrc_irh  Úsrc_pix_alphar�  Úsamplesr€  Úsamples2r&  rö  Ú	imagedatar   r2  r1  r¸  r¹  r2  r  rb  r^  r¯  rc  r÷  r   Úargs8                                                           r*   r‘   ÚPixmap.__init__Í3  sž	  € ð  ˆÔð
 !ˆÔàô ˜ÜœU×/Ñ/Ð0Ü—‘œuŸ}™}¬e´T¼5ÐA÷ñ ð
 ‰HˆBØˆEÜ×.Ò.¨rÔ3CÀDÓ3IÌ5×K^ÒK^Ð_`ÓKaÐchÓiˆBØ�Iä˜ÜœU×/Ñ/Ð0Ü—‘œuŸ}™}¬e´T¼5ÐAÜ”d�÷ñ ð #‰OˆB�eÜ×.Ò.¨rÔ3CÀDÓ3IÌ5×K^ÒK^Ð_`ÓKaÐchÓiˆBØ�Iä˜œz¬5×+=Ñ+=¼tÀD»zÐJÌVÔUZ×UcÑUcÐLd×eÒeà‰HˆBÜ˜"œj×)Ñ)Ø—W‘W‘Ø‘Ü×'Ò'¨Ó-�Ü˜$¤×'Ñ'Ø—y‘y�Ü×-Ò-¨dÓ3×>×>Ü Ð"FÓGÐGà�}�}Ü!×3Ò3ØØÜ×*Ò*Ó,Ü×2Ò2°4Ó8Ü×+Ò+Ó-Øó�•	ô "×BÒBÀDÓI�”	Ø—y‘y×+×+Ü&¬Ó8Ð8ð ,ô ˜œv¤u§~¡~Ð6¼ÄÇÁÐ8P×QÑQà‰JˆDÜ˜$¤×'Ñ'Ø—y‘y�Ü˜$¤×'Ñ'Ø—y‘y�ØˆCØˆCØ—?—?Ü×<Ò<¸SÓA�Ø—~—~Ü&¬Ó8Ð8ð &ô ×=Ò=¸cÓG�Ø�Iä˜¤¬¯©Ð7¼%Ä¸ÌÌsÀ|ÐUY×ZÑZÜ˜œv¤u§~¡~Ð6¼Ä¸ÄuÌcÀl×SÒSä�4‹y˜A‹~Ø!‘
�˜Ü—}’}¤U×%<Ñ%<Ó=‘à#'Ñ �˜Ü'¨Ó-�ä#-¨d´F×#;Ñ#;�d—i’iÀˆGÜ×-Ò-¨d×3Ñ3Ü×*Ò*¨7·I±I³KÀÇÁÃÈaÐTXÓY‘ä×*Ò*¨7·I±I³KÀÇÁÃÈaÔTY×TaÒTaÔbg×byÑbyÓTzÓ{�Ø�Iä˜œc¤F¬E¯N©NÐ#;×<Ñ<ÀÀaÁÈEÓAQà‰EˆAˆrÜ˜"œf×%Ñ%Ø—W‘W�Ø�Iä˜œv¤u§~¡~Ð6¼¸d¸×DÒDð ˜‘7ˆDÜ" 4›y¨A›~�D˜’G°1ˆEÜ#-¨d´F×#;Ñ#;�d—i’iÀˆGÜ˜E 1 a×(Ñ(Ü Ð"3Ó4Ð4Ü×+Ò+¨GÓ4ˆBØ—=—=®Ü Ð"KÓLÐLÜ×&Ò&Ó(ˆDÜ×)Ò)¨'Ó2ˆAÜ×%Ò% gÓ.ˆAÜ×&Ò& wÓ/ˆAÜ×$Ò$ R¨A¨t°UÓ;ˆBØ%×0Ñ0×2Ñ2ˆB�M‰MŒOØ%×0Ñ0×2Ñ2ˆB�M‰MŒOØ!(×!3Ñ!3×!8Ñ!8ˆB�M‰MÔØ!(×!3Ñ!3×!8Ñ!8ˆB�M‰MÔð ô ×!Ò! 2§=¡=°'×2DÑ2DÀaÔHðh �Iä˜œu×1Ñ1´:Ð>ÄÄSÈ$ÔQTÔVZÐP[×\Ò\à'+Ñ$ˆB�1�g˜uÜ˜"œj×)Ñ)Ø—W‘W�Ü! "¤e×&8Ñ&8×9Ñ9Ð9Ð9Ü×%Ò% bÓ)ˆAØ˜%‘i 1‘_ˆFÜ×&Ò&Ó(ˆDÜ×$Ò$ R¨A¨t°UÓ;ˆBä˜7¤U¬IÐ$6×7Ñ7ä ×3Ò3°GÓ<�Ü˜7“|‘ä(¨Ó1�Ø—~—~Ü$Ð&8Ó9Ð9Ü×1Ò1°#Ó6‘��aÜ ×3Ò3°GÓ<�Ø˜‰z˜TÓ!Ü Ð$:¸±t¸4¸Q¹DÀÀ%ÁÈÈ1É$ÈiÐPVÉyÐX_ÐZ^ÑY`Ð"aÓbÐbÜ×'Ò'¨¯©¸ÔAØ�Iä˜˜d×#Ò#à‰JˆIØˆDÜ�y )×,Ñ,Ø!×)Ñ)Ó+�ÞÜ×6Ò6°uÓ=�CøÜ˜ D×)Ñ)Ø!Ÿ™�ÞÜ×6Ò6°uÓ=�CøÜ˜I¤s×+Ñ+Ü×2Ò2°9Ó=‘ä(¨Ó3�Ø—~—~¨S¯^©^×-?×-?Ü$Ð&6Ó7Ð7Ü×4Ò4°SÓ9�ô
 ×5Ò5ØÜ—M’M¤/´?ÄOÔUdÓeÜ—N’N C§E¡E£G¨Q°°3·5±5³7¸A¸qÓAó‰HˆB�1ô
 ×2Ò2°3Ó7‰JˆD�$Ø!%ˆB�M‰MÔØ!%ˆB�M‰MÔØ�Iä˜œx¬×)9Ñ)9Ð:¼C×@Ò@à‰IˆC�Ü" 3Ó'ˆCÜ×(Ò(¨Ó-ˆGÜ˜D ! W¨Q¡Y×/Ñ/Ü ¤,Ó/Ð/Ü×(Ò(¨¨d°AÓ6ˆCÜ×&Ò& s¬H°YÓ,?Ó@ˆEÜ×%Ò% e¬X°gÓ->×?Ñ?Ü!×-Ò-¨e´X¸gÓ5F×GÑGÜ!×-Ò-¨e´X¸lÓ5K×LÑLä ¤/Ó2Ð2Ü×&Ò& s¨CÓ0ˆCô ×6Ò6ØÜ—M’M¤/´?ÄOÔUdÓeÜ—N’N 3§5¡5£7¨A¨q°#·%±%³'¸1¸aÓ@ó‰IˆC�ð
 ˆD�Ið BˆDÛ�Ø˜$œt C›y˜k¨¨C¨5°Ð3Ñ3’ñ ä˜TÓ"Ð"r,   c                ó   • U R                   $ r.   )rÊ  r0   s    r*   rÏ  ÚPixmap.__len__å4  s   € Ø�y‰yÐr,   c                óâ   • [        U 5      [        La  g SnU R                  (       a*  U R                  R                  R                  R
                  nSU SU R                   SU R                   S3$ )Nr˜
  zPixmap(z, rë  )rÉ   rî  rò  rÅ   rÍ   r   Úirectró  )r)   rò  s     r*   rð   ÚPixmap.__repr__è4  s[   € Ü�D‹zœVÒ#ØØˆ
Ø�?�?ØŸ™×-Ñ-×8Ñ8×=Ñ=ˆJà˜˜ B t§z¡z l°"°T·Z±Z°LÀÐBÐBr,   c                ó†  • U R                   n[        R                  " U5      UR                  5       -  n[        R                  " U5      n[        R
                  " U5      nUS:X  a  [        R                  " Xc5        O©US:X  a  [        R                  " Xc5        OŒUS:X  a  [        R                  " Xc5        OoUS:X  a  [        R                  " Xc5        ORUS:X  a  [        R                  " Xc5        O5US:X  a  [        R                  " XcUS5        O[        R                  " Xc5        UR                  5         [        U5      nU$ )z
Pixmap._tobytes
r   r   r   r   r§  r   r   )rÅ   r£   Úfz_pixmap_strider!  rö	  r÷	  Úfz_write_pixmap_as_pngÚfz_write_pixmap_as_pnmÚfz_write_pixmap_as_pamÚfz_write_pixmap_as_psdÚfz_write_pixmap_as_psÚfz_write_pixmap_as_jpegr	  r$  )r)   Úformat_Újpg_qualityrT  rÊ  r&  r	  Úbarrays           r*   Ú_tobytesÚPixmap._tobytesñ4  sì   € ð �Y‰YˆÜ×%Ò% bÓ)¨B¯D©D«FÑ2ˆÜ×!Ò! $Ó'ˆÜ�nŠn˜SÓ!ˆØ˜‹\œE×8Ò8¸ÕAØ˜‹\œE×8Ò8¸ÕAØ˜‹\œE×8Ò8¸ÕAØ˜‹\œE×8Ò8¸ÕAØ˜‹\œE×7Ò7¸Õ@Ø˜‹\Ü×)Ò)¨#°;ÀÕBä×(Ò(¨Ô1Ø×ÑÔÜ! #Ó&ˆØˆr,   c                ó¦  • U R                   nUS:X  a  [        R                  " XA5        g US:X  a  [        R                  " XA5        g US:X  a  [        R                  " XA5        g US:X  a  [        R
                  " XA5        g US:X  a  [        R                  " XA5        g US:X  a  [        R                  " XAU5        g [        R                  " XA5        g )Nr   r   r   r   r§  r   )rÅ   r£   Úfz_save_pixmap_as_pngÚfz_save_pixmap_as_pnmÚfz_save_pixmap_as_pamÚfz_save_pixmap_as_psdÚfz_save_pixmap_as_psÚfz_save_pixmap_as_jpeg)r)   rk   r¬  r­  rT  s        r*   Ú	_writeIMGÚPixmap._writeIMG5  s“   € Ø�Y‰YˆØ˜‹\œE×7Ò7¸ÕEØ˜‹\œE×7Ò7¸ÕEØ˜‹\œE×7Ò7¸ÕEØ˜‹\œE×7Ò7¸ÕEØ˜‹\œE×6Ò6°rÕDØ˜‹\œE×8Ò8¸À{ÕSÜ!×7Ò7¸ÕEr,   c                óB   • [         R                  " U R                  5      $ )z$Indicates presence of alpha channel.)r£   Úfz_pixmap_alpharÅ   r0   s    r*   ró  ÚPixmap.alpha5  rC  r,   Nc                óÖ   • Uc!  [         R                  " U R                  5        gUc"  [         R                  " U R                  U5        g[	        U R                  U[        U5      5        g)z*Fill all color components with same value.N)r£   Úfz_clear_pixmaprÅ   Úfz_clear_pixmap_with_valueÚJM_clear_pixmap_rect_with_valuerL  )r)   r¹   r7  s      r*   rš  ÚPixmap.clear_with5  sH   € à‰=Ü×!Ò! $§)¡)Õ,Ø‰\Ü×,Ò,¨T¯Y©Y¸Õ>ä+¨D¯I©I°uÔ>NÈtÓ>TÕUr,   c                óX   • U R                   n[        X25      nU(       d  [        U5      $ U$ )z
Return count of each color.
)rÅ   ÚJM_color_countr<   )r)   r  r  rT  r¦   s        r*   Úcolor_countÚPixmap.color_count5  s(   € ð �Y‰YˆÜ˜RÓ&ˆÞÜ˜“8ˆOØˆ	r,   c                ó  • SnSnUb%  U R                   [        U5      ;   a  U R                   nU R                  SUS9R                  5        H  u  pEX%-  nXS:”  d  M  UnUnM     U(       d  S[	        S/U R
                  -  5      4$ X2-  W4$ )z/Return most frequent color and its usage ratio.r   T)r  r  r   r  )r¢  r,  rÄ  rG   r   rJ   )r)   r  Ú	allpixelsÚcntÚpixelrÊ  Úmaxpixels          r*   Úcolor_topusageÚPixmap.color_topusage(5  s“   € àˆ	ØˆØÑ §
¡
¬d°4«jÓ 8Ø—:‘:ˆDØ ×,Ñ,°D¸dÐ,ÐC×IÑIÖK‰LˆEØÑˆIØ�{Ø�Ø ’ñ	 Lö
 Ø”u˜c˜U T§V¡V™^Ó,Ð-Ð-Ø‘ Ð*Ð*r,   c                óz   • [        [        R                  " U R                  5      5      nUR                  S:X  a  gU$ )zPixmap Colorspace.r²  N)r,  r£   rt  rÅ   r   )r)   rö  s     r*   rò  ÚPixmap.colorspace75  s1   € ô œ×2Ò2°4·9±9Ó=Ó>ˆØ�7‰7�fÓØØˆ	r,   c                óD  • U R                   nUR                   n[        R                  " U5      (       d  [        S5      eUR	                  5       UR	                  5       :w  a  [        S5      e[        R
                  " X4[        U5      [        R                  " S5      5        g)zCopy bbox from another Pixmap.z'cannot copy pixmap with NULL colorspacez%source and target alpha must be equalN)rÅ   r£   rt  rÄ   ró  Úfz_copy_pixmap_rectrL  r“  )r)   r3  r7  rT  rŒ  s        r*   r&  ÚPixmap.copy?5  su   € à�Y‰YˆØ—(‘(ˆÜ×)Ò)¨'×2Ñ2ÜÐGÓHÐHØ�8‰8‹:˜Ÿ™›Ó(ÜÐEÓFÐFÜ×!Ò! "Ô/?ÀÓ/EÄu×GaÒGaÐbfÓGgÕhr,   c                óX   • [         R                  " U R                  5      n[        U5      $ )zMD5 digest of pixmap (bytes).)r£   r�  rÅ   r   rj  s     r*   r²  ÚPixmap.digestI5  s"   € ô ×"Ò" 4§9¡9Ó-ˆÜ�S‹zÐr,   c                ó¨   • [         R                  " U R                  5      (       d  [        S5        g[         R                  " U R                  U5        g)z5Apply correction with some float.
gamma=1 is a no-op.zcolorspace invalid for functionN)r£   rt  rÅ   r  Úfz_gamma_pixmap)r)   Úgammas     r*   Ú
gamma_withÚPixmap.gamma_withO5  s9   € ô ×)Ò)¨4¯9©9×5Ñ5ÜÐ=Ô>ØÜ×Ò˜tŸy™y¨%Õ0r,   c                óB   • [         R                  " U R                  5      $ )zThe height.)r£   r|  rÅ   r0   s    r*   r!  ÚPixmap.hW5  rþ  r,   c                ó$  • U R                   n[        R                  " U5      R                  (       d  [	        S5        g[        U5      n[        R                  " U5      (       a  [        R                  " U5        g[        R                  " X#5        g)z Invert the colors inside a bbox.zignored for stencil pixmapFT)	rÅ   r£   rt  rÍ   r  rL  rM  Úfz_invert_pixmapÚfz_invert_pixmap_rect)r)   r7  rT  r%  s       r*   Úinvert_irectÚPixmap.invert_irect\5  sh   € à�Y‰YˆÜ×)Ò)¨"Ó-×8×8ÜÐ8Ô9ØÜ˜TÓ"ˆÜ×%Ò% a×(Ñ(Ü×"Ò" 2Ô&ØÜ×#Ò# BÔ*Ør,   c                óX   • [         R                  " U R                  5      n[        U5      $ )zPixmap bbox - an IRect object.)r£   Úfz_pixmap_bboxrÅ   ÚJM_py_from_irectrÑ  s     r*   r¢  ÚPixmap.irecti5  s#   € ô ×"Ò" 4§9¡9Ó-ˆÜ Ó%Ð%r,   c                óB   • [         R                  " U R                  5      $ )zCheck if pixmap is monochrome.)r£   Úfz_is_pixmap_monochromerÅ   r0   s    r*   Úis_monochromeÚPixmap.is_monochromeo5  s   € ô ×,Ò,¨d¯i©iÓ8Ð8r,   c                óö   • U R                   nUR                  5       nUR                  5       UR                  5       -  U-  nS n[	        SX25       H&  nUS:X  a  U" USU5      nM  U" XU5      nUW:w  d  M&    g   g)z%
Check if pixmap has only one color.
c                óŽ   • [        5       n[        U5       H+  nUR                  [        R                  " XU-   5      5        M-     U$ r.   )rµ   rT  rp   r£   r‚  )rT  ÚoffsetrJ   rL   rh  s        r*   Ú_pixmap_read_samplesÚ0Pixmap.is_unicolor.<locals>._pixmap_read_samples|5  s7   € Ü“&ˆCÜ˜1–X�Ø—
‘
œ5×/Ò/°¸1±HÓ=Ö>ñ àˆJr,   r   FT)rÅ   rJ   r   r!  rT  )r)   rT  rJ   rÊ  rë  rê  Úsample0Úsamples           r*   Úis_unicolorÚPixmap.is_unicolort5  s{   € ð
 �Y‰YˆØ�D‰D‹FˆØ—‘“˜Ÿ™›‘ !Ñ#ˆò	ô
 ˜Q Ö)ˆFØ˜‹{Ù.°°A°qÓ9’á-¨r¸1Ó=�Ø˜WÕ$Ù ñ *ð r,   c                óª   • [         (       a)  S n[        U5      U R                  l        U R                  $ [        R
                  " U R                  5      $ )zThe size of one pixel.c                óB   • [         R                  " U R                  5      $ r.   )r   Úpixmap_nrÅ   r0   s    r*   Ún2ÚPixmap.n.<locals>.n2‘5  s   € Ü—~’~ d§i¡iÓ0Ð0r,   )r  ry  rÒ  rJ   r£   Úfz_pixmap_componentsrÅ   )r)   rô  s     r*   rJ   ÚPixmap.nŠ5  s<   € ÷ Š;ò1ä'¨›|ˆD�N‰NÔØ—6‘6ˆMÜ×)Ò)¨$¯)©)Ó4Ð4r,   c                ó´  • [        U5      n[        R                  " 5       nX%l        U(       a  UR	                  U5        U(       a  UR                  U5        U R                  n[        U[        5      (       a  [        R                  " XaSU5        g[        U5      n [        R                  " XvU5        UR                  5         g! UR                  5         f = f)z$
Save pixmap as an OCR-ed PDF page.
r   N)Úget_tessdatar£   ÚFzPdfocrOptionsrc  Úlanguage_set2Údatadir_set2rÅ   rC   rè  Úfz_save_pixmap_as_pdfocrr	  Úfz_write_pixmap_as_pdfocrr	  )r)   rk   rc  rK  ÚtessdatarV  r÷  r	  s           r*   Úpdfocr_saveÚPixmap.pdfocr_save—5  s£   € ô   Ó)ˆÜ×$Ò$Ó&ˆØ ŒÞØ×Ñ Ô)ÞØ×Ñ˜xÔ(Ø�i‰iˆÜ�h¤×$Ñ$Ü×*Ò*¨C¸1¸dÕCä'¨Ó2ˆCð&Ü×/Ò/°¸4Ô@à×#Ñ#Õ%ø�×#Ñ#Õ%ús   ÂC ÃCc                ór   • [        U5      nSSKJn  U" 5       nU R                  XQX#S9  UR	                  5       $ )a^  Save pixmap as an OCR-ed PDF page.

Args:
    compress: (bool) compress, default 1 (True).
    language: (str) language(s) occurring on page, default "eng" (English),
            multiples like "eng+ger" for English and German.
    tessdata: (str) folder name of Tesseract's language support. If None
            we use environment variable TESSDATA_PREFIX or search for
            Tesseract installation.
Notes:
    On failure, make sure Tesseract is installed and you have set
    <tessdata> or environment variable "TESSDATA_PREFIX" to the folder
    containing your Tesseract's language support data.
r   rj  )rc  rK  rÿ  )rù  r>   r¨  r   rÂ  )r)   rc  rK  rÿ  r¨  rk  s         r*   Úpdfocr_tobytesÚPixmap.pdfocr_tobytes¬5  s7   € ô   Ó)ˆÝÙ‹iˆØ×Ñ˜¸(ÐÑVØ�|‰|‹~Ðr,   c                ót  •  SSK Jn  U R                  nU(       d  SnONUR
                  S:X  a  U R                  (       d  SOSnO(UR
                  S:X  a  U R                  (       d  SOS	nOS
nUR                  X0R                  U R                  4U R                  5      nU$ ! [         a    [        S5        e f = f)z&Create a Pillow Image from the Pixmap.r   )rä  zPIL/Pillow not installedr\  r   ÚLAr   r8  ÚRGBAr9  )ÚPILrä  r  rw   rò  rJ   ró  Ú	frombytesr‰  r2  rš  )r)   rä  Úcspacer   r1  s        r*   Ú	pil_imageÚPixmap.pil_imageÁ5  s•   € ð	Ý!ð
 —‘ˆÞØ‰DØ�X‰X˜‹]Ø"ŸjŸj‘3¨d‰DØ�X‰X˜‹]Ø $§
§
‘5°‰DàˆDà�o‰o˜d§Z¡Z°·±Ð$=¸t¿|¹|ÓLˆØˆ
øô ó 	ÜÐ.Ô/Øð	ús   ‚B  Â B7c                ó¦   • U R                  5       nSUR                  5       ;  a  U R                  U R                  4US'   UR                  " U0 UD6  g)a  Write to image file using Pillow.

An intermediate PIL Image is created, and its "save" method is used
to store the image. See Pillow documentation to learn about the
meaning of possible positional and keyword parameters.
Use this when other output formats are desired.
rñ  N)r  r{  r¸  r¹  r  )r)   r  r  r1  s       r*   Úpil_saveÚPixmap.pil_saveÖ5  sE   € ð �n‰nÓˆà˜Ÿ™›Ó%Ø!ŸY™Y¨¯	©	Ð2ˆF�5‰Mà�Š�$Ð!˜&Ó!r,   c                óö   • [         R                  " 5       nU R                  5       nSUR                  5       ;  a  U R                  U R
                  4US'   UR                  " U/UQ70 UD6  UR                  5       $ )a  Convert to an image in memory using Pillow.

An intermediate PIL Image is created, and its "save" method is used
to store the image. See Pillow documentation to learn about the
meaning of possible positional or keyword parameters.
Use this when other output formats are desired.
rñ  )r>   r¨  r  r{  r¸  r¹  r  rÂ  )r)   r  r  Ú	bytes_outr1  s        r*   Úpil_tobytesÚPixmap.pil_tobyteså5  sd   € ô —J’J“Lˆ	Ø�n‰nÓˆà˜Ÿ™›Ó%Ø!ŸY™Y¨¯	©	Ð2ˆF�5‰Mà�Š�Ð,˜TÒ, VÒ,Ø×!Ñ!Ó#Ð#r,   c                ó  • [         (       a+  [        R                  " U R                  R                  X5      $  US:  dL  XR                  R                  R
                  :¼  d)  US:  d#  X R                  R                  R                  :¼  a  [        [        [        5        U R                  R                  R                  nU R                  R                  R                  nXB-  X1-  -   n[        U R                  XUU-    5      nU$ )zPGet color tuple of pixel (x, y).
Last item is the alpha if Pixmap.alpha is true.r   )r  r   Úpixmap_pixelrÅ   rÍ   r   r!  rÂ  ÚMSG_PIXEL_OUTSIDErt	  rJ   r€  r¶   Ú
samples_mv)r)   re  rf  rJ   r€  rh  rL   s          r*   rÉ  ÚPixmap.pixelö5  sÃ   € ÷ Š;Ü×%Ò% d§i¡i×&:Ñ&:¸AÓAÐAØØ�q“5ØŸ	™	×,Ñ,×.Ñ.Ó.Ø�q“5ØŸ	™	×,Ñ,×.Ñ.Ó.äÔ%Ô'7Ô8Ø�I‰I× Ñ ×"Ñ"ˆØ—‘×%Ñ%×,Ñ,ˆØ‰J˜™ÑˆÜ�T—_‘_ a¨1©Ð-Ó.ˆØˆ
r,   c                ó0   • U R                   n[        U5      $ r.   )r  r   )r)   Úmvs     r*   rš  ÚPixmap.samples6  s   € à�_‰_ˆÜ�b‹zÐr,   c                ó~   • U R                   c%  [        R                  " U R                  5      U l         U R                   $ )z
Pixmap samples memoryview.
)rn  r£   r  rÅ   r0   s    r*   r  ÚPixmap.samples_mv6  s3   € ð ×ÑÑ#Ü$×AÒAÀ$Ç)Á)ÓLˆDÔØ×ÑÐr,   c                ó\   • U R                   (       a  U R                   R                  5         g g r.   ©rn  Úreleaser0   s    r*   Ú_samples_mv_releaseÚPixmap._samples_mv_release6  ó"   € Ø××Ø×Ñ×$Ñ$Õ&ð r,   c                óB   • [         R                  " U R                  5      $ r.   )r£   Úfz_pixmap_samples_intrÅ   r0   s    r*   Úsamples_ptrÚPixmap.samples_ptr6  s   € ä×*Ò*¨4¯9©9Ó5Ð5r,   c                óæ  • SSSSSSSSSSS.
n[        U5      [        L a  O:[        US5      (       a  [        U5      nO[        US	5      (       a  UR                  nUc&  [        R
                  R                  U5      u  pVUSS
 nUR                  UR                  5       S
5      nUc(  [        SU S[        UR                  5       5       35      eU R                  (       a  US;   a  [        SU S35      eU R                  (       a/  U R                  R                  S:”  a  US;   a  [        SU S35      eUS:X  a&  U R                  U R                   U R"                  5        U R%                  XU5      $ )zÒOutput as image in format determined by filename extension.

Args:
    output: (str) only use to overrule filename extension. Default is PNG.
            Others are JPEG, JPG, PNM, PGM, PPM, PBM, PAM, PSD, PS.
r   r   r   r   r§  r   )
rµ  ÚpnmÚpgmÚppmÚpbmÚpamÚpsdÚpsÚjpgÚjpegr¡  r   NúImage format ú not in ©r   r§  r   rî   z' cannot have alpha©r   r   rr  úunsupported colorspace for ')rÉ   rè  r@   r   ri   r
   Úsplitextr=   ré  rÄ   r¶   r{  ró  rò  rJ   rï  r¸  r¹  r¸  )r)   rk   rú	  r­  Úvalid_formatsr<  rÜ  rä  s           r*   r  ÚPixmap.save"6  sU  € ð ØØØØØØØØØñˆô �‹>œSÒ ØÜ�X˜z×*Ñ*Ü˜8“}‰HÜ�X˜v×&Ñ&Ø—}‘}ˆHØ‰>Ü—W‘W×%Ñ% hÓ/‰FˆAØ˜˜�WˆFà×Ñ §¡£°Ó5ˆØ‰;Ü˜}¨V¨H°H¼UÀ=×CUÑCUÓCWÓ=XÐ<YÐZÓ[Ð[Ø�:�:˜# Ó*Ü˜q  Ð(;Ð<Ó=Ð=Ø�?�?˜tŸ™×0Ñ0°1Ó4¸À	Ó9IÜÐ;¸F¸8À1ÐEÓFÐFØ�!‹8Ø�L‰L˜Ÿ™ D§I¡IÔ.Ø�~‰~˜h¨[Ó9Ð9r,   c                óŽ  • U R                   nSnSnUR                  5       S:X  a  [        [        5      e[        R
                  " U5      n[        R                  " U5      n	[        R                  " U5      n
Xš-  US-   -  n/ SQn/ SQnSnSnU(       aF  [        U[        [        45      (       a+  [        U5      U:X  a  [        U5       H  nUU   UU'   M     SnU(       aF  [        U[        [        45      (       a+  [        U5      U:X  a  [        U5       H  nUU   UU'   M     Sn[        5       nSnU(       aO  [        U[        [        45      (       a  Un[        U5      nO S[        U5       35       eUXš-  :  a  [        S5      e [        R                   " UUUU[        R"                  " U5      UR$                  UUUU5
        g)aq  Set alpha channel to values contained in a byte array.
If omitted, set alphas to 255.

Args:
    alphavalues: (bytes) with length (width * height) or 'None'.
    premultiply: (bool, True) premultiply colors with alpha values.
    opaque: (tuple, length colorspace.n) this color receives opacity 0.
    matte: (tuple, length colorspace.n)) preblending background color.
r   r   ©r   r   r   r   z!unexpected type for alphavalues: zbad alpha valuesN)rÅ   ró  rÄ   rv  r£   rz  r{  r|  rC   rµ   r¶   r<   rT  r   r§  rÉ   ÚPixmap_set_alpha_helperr¶  rÍ   r‚  r�  )r)   ÚalphavaluesÚpremultiplyÚopaqueÚmatter÷  ró  rŒ  rJ   r   r!  Úbalenr  r  Úzero_outÚbgroundrh  rÉ  Údata_lenrò  r�  Údata_fixÚ	fz_mul255s                          r*   Ú	set_alphaÚPixmap.set_alphaK6  sœ  € ð �i‰iˆØˆØˆØ�9‰9‹;˜!ÓÜœoÓ.Ð.Ü×%Ò% cÓ*ˆÜ×!Ò! #Ó&ˆÜ×"Ò" 3Ó'ˆØ‘˜˜1™‘ˆÚˆÚˆØˆØˆÞ”j ¬$´¨×7Ñ7¼CÀ»KÈ1Ó<LÜ˜1–X�Ø" 1™I��q“	ñ àˆHÞ”Z ¬´¨×6Ñ6¼3¸u»:È»?Ü˜1–X�Ø" 1™X�˜“
ñ àˆGÜ‹wˆØˆÞô ˜+¬¬yÐ'9×:Ñ:Ø"�Ü˜{Ó+‘àQÐ=¼dÀ;Ó>OÐ=PÐQÓQ�qØ˜!™%ÓÜ Ð"4Ó5Ð5Øä×)Ò)ØØØØÜ×,Ò,¨dÓ3Ø—N‘NØØØØõr,   c                óø  • SSSSSSSSSSSSS.nUR                  UR                  5       S	5      nUc(  [        S
U S[        UR	                  5       5       35      eU R
                  (       a  US;   a  [        S5      eU R                  (       a/  U R                  R                  S:”  a  US;   a  [        SU S35      eUS:X  a&  U R                  U R                  U R                  5        U R                  XB5      nU$ )z1
Convert to binary image stream of desired type.
r   r   r   rr  r   r§  r   )rµ  r)  r*  r+  r,  r-  ÚtgaÚtpicr.  r/  r0  r1  Nr2  r3  r4  z'{output}' cannot have alphar5  r6  rî   )r=   ré  rÄ   r¶   r{  ró  rò  rJ   rï  r¸  r¹  r¯  )r)   rú	  r­  r8  rä  r®  s         r*   r¸  ÚPixmap.tobytesª6  só   € ð
 ØØØØØØØØØØØñˆð ×Ñ §¡£°Ó5ˆØ‰;Ü˜}¨V¨H°H¼UÀ=×CUÑCUÓCWÓ=XÐ<YÐZÓ[Ð[Ø�:�:˜# Ó*ÜÐ;Ó<Ð<Ø�?�?˜tŸ™×0Ñ0°1Ó4¸À	Ó9IÜÐ;¸F¸8À1ÐEÓFÐFØ�!‹8Ø�L‰L˜Ÿ™ D§I¡IÔ.Ø—‘˜sÓ0ˆØˆr,   c                ó\   • U R                   nXR                  l        X#R                  l        g)z"Set resolution in both dimensions.N)rÅ   rÍ   r¸  r¹  )r)   r¸  r¹  rT  s       r*   rï  ÚPixmap.set_dpiÈ6  s   € à�Y‰YˆØ!�‰ÔØ!�‰Õr,   c                ó\   • U R                   nXR                  l        X#R                  l        g)zSet top-left coordinates.N)rÅ   rÍ   re  rf  )r)   re  rf  rT  s       r*   Ú
set_originÚPixmap.set_originÎ6  s   € à�Y‰YˆØ�‰ŒØ�‰�r,   c                óR  • [         (       a,  [        R                  " U R                  R                  XU5      $ U R                  n[        USUR                  5       S-
  5      (       a#  [        USUR                  5       S-
  5      (       d  [        [        5      eUR                  5       n[        U5       H(  nX6   n[        USS5      (       a  M  [        [        5      e   [        R                  " U5      nX‚-  XQ-  -   n [        U5       H  nUR#                  Xv-   X6   5        M     g)zSet color of pixel (x, y).r   r   r  N)r  r   Ú	set_pixelrÅ   rÍ   rÕ  r   r!  rÄ   r  rJ   rT  ÚMSG_BAD_COLOR_SEQr£   r¥  ro  r  r�  )	r)   re  rf  ro  rT  rJ   r�  rh  r€  s	            r*   rS  ÚPixmap.set_pixelÔ6  sì   € çŠ;Ü—?’? 4§9¡9×#7Ñ#7¸¸uÓEÐEØ�Y‰YˆÜ˜˜1˜bŸd™d›f q™j×)Ñ)´¸!¸QÀÇÁÃÈÁ
×1KÑ1KÜÔ/Ó0Ð0Ø�D‰D‹FˆÜ�q–ˆAØ‘ˆAÜ˜A˜q #×&Ó&Ü Ô"3Ó4Ð4ñ ô ×'Ò'¨Ó,ˆØ‰J˜™ÑˆØô ˜1–X�Ø×!Ñ! !¡%¨©Ö2ò r,   c                ó  • U R                   nUR                  5       n/ n[        U5       H9  nX&   n[        USS5      (       d  [	        [
        5      eUR                  U5        M;     [        U5      n[        X5U5      n[        U5      nU$ )z Set color of all pixels in bbox.r   r  )
rÅ   rJ   rT  rÕ  rÄ   rT  rp   rL  ÚJM_fill_pixmap_rect_with_colorré   )	r)   r7  ro  rT  rJ   rö  r�  rh  r¦   s	            r*   rê  ÚPixmap.set_rectí6  s|   € à�Y‰YˆØ�D‰D‹FˆØˆÜ�q–ˆAØ‘ˆAÜ˜A˜q #×&Ñ&Ü Ô"3Ó4Ð4Ø�H‰H�QŽKñ	 ô
   Ó%ˆÜ*¨2°$Ó7ˆÜ�!‹WˆØˆ	r,   c                ó˜   • US:  a  [        S5        g[        R                  " U R                  U5        SU l        U R                  5         g)z_Divide width and height by 2**factor.
E.g. factor=1 shrinks to 25% of original size (in place).r   zignoring shrink factor < 1N)r  r£   Úfz_subsample_pixmaprÅ   ro  r!  )r)   Úfactors     r*   ÚshrinkÚPixmap.shrinkü6  s?   € ð �A‹:ÜÐ8Ô9ØÜ×!Ò! 4§9¡9¨fÔ5à ˆÔØ× Ñ Õ"r,   c                óB   • [         R                  " U R                  5      $ )zPixmap size.)r£   Úfz_pixmap_sizerÅ   r0   s    r*   rÊ  ÚPixmap.size7  s   € ô ×$Ò$ d§i¡iÓ0Ð0r,   c                ó6   • U R                   R                  5       $ )z%Length of one image line (width * n).)rÅ   r€  r0   s    r*   r€  ÚPixmap.stride7  s   € ð �y‰y×ÑÓ!Ð!r,   c                ó²   • U R                   (       a  U R                   R                  S:”  a  [        S5        g[        R                  " U R
                  X5      $ )z/Tint colors with modifiers for black and white.r   z(warning: colorspace invalid for functionN)rò  rJ   rw   r£   Úfz_tint_pixmaprÅ   )r)   ÚblackÚwhites      r*   Ú	tint_withÚPixmap.tint_with7  s=   € à�� $§/¡/×"3Ñ"3°aÓ"7ÜÐ>Ô?ØÜ×#Ò# T§Y¡Y°Ó=Ð=r,   c                óB   • [         R                  " U R                  5      $ )z
The width.)r£   r{  rÅ   r0   s    r*   r   ÚPixmap.w7  rC  r,   c                ó  • UR                   (       d  [        S5      e[        U5      nUR                  UR                  UR
                  UR                  /n[        R                  " U R                  XRU5      n[        U5      $ )z!Return pixmap from a warped quad.zquad must be convex)Ú	is_convexrÄ   r'  rù  rq  rp  ro  r£   Úfz_warp_pixmaprÅ   rî  )r)   rI  r‰  r2  r+  rE  ri  s          r*   ÚwarpÚPixmap.warp7  s^   € à�~�~¤ZÐ0EÓ%FÐFÜ˜DÓ!ˆØ—4‘4˜Ÿ™˜qŸt™t Q§T¡TÐ*ˆÜ×"Ò" D§I¡I¨v¸fÓEˆÜ�s‹|Ðr,   c                óB   • [         R                  " U R                  5      $ )zx component of Pixmap origin.)r£   Úfz_pixmap_xrÅ   r0   s    r*   re  ÚPixmap.x%7  ó   € ô × Ò  §¡Ó+Ð+r,   c                ó6   • U R                   R                  5       $ )zResolution in x direction.)rÅ   r¸  r0   s    r*   r¸  ÚPixmap.xres*7  ó   € ð �y‰y�~‰~ÓÐr,   c                óB   • [         R                  " U R                  5      $ )zy component of Pixmap origin.)r£   Úfz_pixmap_yrÅ   r0   s    r*   rf  ÚPixmap.y/7  rs  r,   c                ó6   • U R                   R                  5       $ )zResolution in y direction.)rÅ   r¹  r0   s    r*   r¹  ÚPixmap.yres47  rv  r,   c                ó\   • U R                   (       a  U R                   R                  5         g g r.   r  r0   s    r*   r\  ÚPixmap.__del__<7  r#  r,   )ro  rn  rÅ   rô
  rd  r.   )r   NN)TÚengN)r«  r   )Né_   )Nr   NN)rµ  r  )7r2   r3   r4   r5   r‘   rÏ  rð   r¯  r¸  ry  ró  rš  rÄ  rË  rò  r&  r²  r×  r!  rÞ  r¢  ræ  rï  rJ   r   r  r  r  r  rÉ  rš  r  r!  r&  r  rG  r¸  rï  rP  rS  rê  r\  rÊ  r€  rg  r   rn  re  r¸  rf  r¹  r‰  r2  r\  r6   r/   r,   r*   rî  rî  Ë3  s  † òV#òpòCòò*Fð ñ0ó ð0ôVôô+ð ñó ðòið ñó ðò
1ð ñ1ó ð1ôð ñ&ó ð&ð
 ñ9ó ð9ð ñó ðð* ñ
5ó ð
5ô&ô*ò*ò*"ò$ò"ð$ óó ðð ñ
 ó ð
 ò'ð ñ6ó ð6ô':ôR]ô~ò<"òò3ò2ò	#ð ñ1ó ð1ð ñ"ó ð"ò>ð ñ0ó ð0òð ñ,ó ð,ð ñ ó ð ð ñ,ó ð,ð ñ ó ð ð €EØ€Fõ'r,   rî  c                  ó²   • \ rS rSrS rS rS rS rS rS r	SSS	.S
 j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\S 5       r\r\rS	rg)r#  iA7  c                ó�   • [         R                  " U R                  U R                  -  U R                  U R                  -  -   5      $ r.   )r¬  r­  re  rf  r0   s    r*   r°  ÚPoint.__abs__C7  s.   € Ü�yŠy˜Ÿ™ $§&¡&™¨4¯6©6°D·F±F©?Ñ:Ó;Ð;r,   c                óü   • [        US5      (       a&  [        U R                  U-   U R                  U-   5      $ [	        U5      S:w  a  [        S5      e[        U R                  US   -   U R                  US   -   5      $ ©Nr—  r   úPoint: bad seq lenr   r   ©r@   r#  re  rf  r<   rÄ   ©r)   r³  s     r*   r¹  ÚPoint.__add__F7  óh   € Ü�1�k×"Ñ"Ü˜Ÿ™ !™ T§V¡V¨a¡ZÓ0Ð0Üˆq‹6�Q‹;ÜÐ1Ó2Ð2Ü�T—V‘V˜a ™d‘] D§F¡F¨Q¨q©T¡MÓ2Ð2r,   c                ód   • [        U 5      [        U 5      s=:H  =(       a
    S:H  (       + $ s  (       + $ rŒ   r½  r0   s    r*   rê   ÚPoint.__bool__M7  r¿  r,   c                ób   • [        US5      (       d  g[        U5      S:H  =(       a	    X-
  (       + $ )NrÏ  Fr   rÁ  r‡  s     r*   rÂ  ÚPoint.__eq__P7  s)   € Ü�q˜)×$Ñ$ØÜ�1‹v˜‰{×- D¡Hœ~Ð-r,   c                ó8   • U R                   U R                  4U   $ r.   ©re  rf  r�  s     r*   r�  ÚPoint.__getitem__U7  s   € Ø—‘˜Ÿ™Ð Ñ"Ð"r,   c                ó*   • [        [        U 5      5      $ r.   ©r  r¶   r0   s    r*   r  ÚPoint.__hash__X7  ó   € Ü”E˜$“KÓ Ð r,   Nr�  c               ó”  • U(       d  SU l         SU l        GO[        U5      S:”  a  [        S5      e[        U5      S:X  a'  [	        US   5      U l         [	        US   5      U l        OÎ[        U5      S:X  a´  US   n[        U[        R                  [        R                  45      (       a#  UR                   U l         UR                  U l        Oh[        US5      (       d  [        S5      e[        U5      S:w  a  [        S5      e[	        US   5      U l         [	        US   5      U l        O[        S5      eUb  Xl         Ub  X l        gg)	zž
Point() - all zeros
Point(x, y)
Point(Point) - new copy
Point(sequence) - from 'sequence'

Explicit keyword args x, y override earlier settings if not None.
rÓ  r   r…  r   r   r�  zPoint: bad argsN)
re  rf  r<   rÄ   rœ  rC   r£   rc  Úfz_pointr@   )r)   re  rf  r  rT  s        r*   r‘   ÚPoint.__init__[7  s  € ö ØˆDŒFØˆDŽFÜ�‹Y˜‹]ÜÐ1Ó2Ð2Ü�‹Y˜!‹^Ü˜4 ™7“^ˆDŒFÜ˜4 ™7“^ˆD�FÜ�‹Y˜!‹^Ø�Q‘ˆAÜ˜!œeŸm™m¬U¯^©^Ð<×=Ñ=ØŸ™�”ØŸ™�•ä˜q -×0Ñ0Ü$Ð%6Ó7Ð7Ü�q“6˜Q“;Ü$Ð%9Ó:Ð:Ü˜q ™t›�”Ü˜q ™t›�•äÐ1Ó2Ð2Ø‰= QœFØ‰= Q�Fˆ=r,   c                ó   • g©Nr   r/   r0   s    r*   rÏ  ÚPoint.__len__}7  r×  r,   c                ó2  • [        US5      (       a&  [        U R                  U-  U R                  U-  5      $ [        US5      (       a4  [	        U5      S:X  a%  U R                  US   -  U R                  US   -  -   $ [        U 5      nUR                  U5      $ )Nr—  r�  r   r   r   )r@   r#  re  rf  r<   rÙ  )r)   rŒ  r³  s      r*   rÚ  ÚPoint.__mul__€7  s}   € Ü�1�k×"Ñ"Ü˜Ÿ™ !™ T§V¡V¨a¡ZÓ0Ð0Ü�1�m×$Ñ$¬¨Q«°1«à—6‘6˜A˜a™D‘= 4§6¡6¨A¨a©D¡=Ñ0Ð0Ü�$‹KˆØ�{‰{˜1‹~Ðr,   c                óF   • [        U R                  * U R                  * 5      $ r.   )r#  re  rf  r0   s    r*   rÝ  ÚPoint.__neg__‰7  s   € Ü�d—f‘f�W˜tŸv™v˜gÓ&Ð&r,   c                ód   • [        U 5      [        U 5      s=:H  =(       a
    S:H  (       + $ s  (       + $ rŒ   r½  r0   s    r*   rà  ÚPoint.__nonzero__Œ7  r¿  r,   c                ó   • [        U 5      $ r.   )r#  r0   s    r*   rã  ÚPoint.__pos__�7  r  r,   c                ó0   • S[        [        U 5      5      -   $ )Nr#  ræ  r0   s    r*   rð   ÚPoint.__repr__’7  ó   € ØœœU 4›[Ó)Ñ)Ð)r,   c                ób   • [        U5      nUS:X  a  X l        g US:X  a  X l        g [        S5      e)Nr   r   ré  )rœ  re  rf  rž  rê  s      r*   rë  ÚPoint.__setitem__•7  s;   € Ü�!‹HˆØ�!‹V˜a”Vð ð �!‹V˜a”Vð ô Ð1Ó2Ð2r,   c                óü   • [        US5      (       a&  [        U R                  U-
  U R                  U-
  5      $ [	        U5      S:w  a  [        S5      e[        U R                  US   -
  U R                  US   -
  5      $ r„  r†  r‡  s     r*   rî  ÚPoint.__sub__�7  r‰  r,   c                óô   • [        US5      (       a,  [        U R                  S-  U-  U R                  S-  U-  5      $ [	        U5      S   nU(       d  [        S5      e[        U 5      nUR                  U5      $ rñ  )r@   r#  re  rf  rò  ró  rÙ  )r)   rŒ  rÒ  r³  s       r*   rõ  ÚPoint.__truediv__¤7  si   € Ü�1�k×"Ñ"Ü˜Ÿ™ "™ Q™¨¯©°©°A©Ó6Ð6Ü Ó" 1Ñ%ˆÞÜ#Ð$;Ó<Ð<Ü�$‹KˆØ�{‰{˜2‹Ðr,   c                ó0  • U R                   U R                   -  U R                  U R                  -  -   nU[        :  a  [        SS5      $ [        R
                  " U5      n[        [        U R                   5      U-  [        U R                  5      U-  5      $ )z&Unit vector with positive coordinates.r   )re  rf  rÿ  r#  r¬  r­  r&  ©r)   rŸ  s     r*   Úabs_unitÚPoint.abs_unit­7  sk   € ð �F‰F�T—V‘V‰O˜dŸf™f t§v¡v™oÑ-ˆØŒw‹;Ü˜˜1“:ÐÜ�IŠI�a‹LˆÜ”S˜Ÿ™“[ 1‘_¤c¨$¯&©&£k°A¡oÓ6Ð6r,   c                ó  • [        U5      S:”  d  [        S5      eUS   n[        U5      S:X  a  [        U5      nO&[        U5      S:X  a  [        U5      nO[        S5      e[        U5      S:”  a  US   nOSnSS	S
SS.nXC   S   XC   S   -  n[	        U5      [        L a  [        X-
  5      U-  $ [        UR                  UR                  5      nXbR                  -  nX;   a  gU R                  UR                  :”  aˆ  U R                  UR                  :¼  a  U R                  UR                  U5      $ U R                  UR                  ::  a  U R                  UR                  U5      $ U R                  UR                  -
  U-  $ UR                  U R                  s=::  a  UR                  ::  aU  O  ORU R                  UR                  :¼  a  U R                  UR                  -
  U-  $ UR                  U R                  -
  U-  $ U R                  UR                  :¼  a  U R                  UR                   U5      $ U R                  UR                  ::  a  U R                  UR                  U5      $ UR                  U R                  -
  U-  $ )z.Return distance to rectangle or another point.r   z$at least one parameter must be givenr   rr  z$arg1 must be point-like or rect-liker   rà  )rÔ  rÔ  ©rÔ  ç      R@©gR¸…ëQ@r²  ©gffffff9@r²  ©rà  ÚinÚcmÚmmrÓ  )r<   rÄ   r#  r,  rÉ   r&  Útop_leftÚbottom_rightre  r¯  rf  r±  Údistance_tor²  Ú	top_rightr°  Úbottom_left)r)   r  re  ÚunitÚur  r%  s          r*   r»  ÚPoint.distance_to¶7  s  € ä�4‹y˜1‹}ÜÐCÓDÐDà�‰GˆÜˆq‹6�Q‹;Ü�a“‰AÜ�‹V�q‹[Ü�Q“‰AäÐCÓDÐDäˆt‹9�q‹=Ø˜‘7‰DàˆDØ (°+Øñ ˆà‰G�A‰J˜™ ™Ñ#ˆä�‹7”eÒÜ�t‘x“= 1Ñ$Ð$ô �—‘˜QŸZ™ZÓ(ˆØ—‘ÑˆØ‹9ØØ�6‰6�A—D‘D‹=Ø�v‰v˜Ÿ™‹~Ø×'Ñ'¨¯©¸Ó=Ð=Ø—‘˜1Ÿ4™4“Ø×'Ñ'¨¯©°TÓ:Ð:àŸ™ §¡™¨Ñ*Ð*Ø�T‰T�T—V‘VÕ#˜qŸt™tÖ#Ø�v‰v˜Ÿ™‹~ØŸ™ §¡™¨Ñ*Ð*àŸ™˜tŸv™v™¨Ñ*Ð*à�v‰v˜Ÿ™‹~Ø×'Ñ'¨¯©°tÓ<Ð<Ø—‘˜1Ÿ4™4“Ø×'Ñ'¨¯
©
°DÓ9Ð9àŸ™˜tŸv™v™¨Ñ*Ð*r,   c                ój   • [        U5      S:w  a  [        S5      e[        X5      u  U l        U l        U $ )z7Replace point by its transformation with matrix-like m.r§  r¶  )r<   rÄ   Úutil_transform_pointre  rf  r¸  s     r*   rÙ  ÚPoint.transformè7  s0   € äˆq‹6�Q‹;ÜÐ2Ó3Ð3Ü-¨dÓ6‰ˆŒ�”Øˆr,   c                ó  • U R                   U R                   -  U R                  U R                  -  -   nU[        :  a  [        SS5      $ [        R
                  " U5      n[        U R                   U-  U R                  U-  5      $ )zUnit vector of the point.r   )re  rf  rÿ  r#  r¬  r­  r­  s     r*   r¾  Ú
Point.unitï7  sc   € ð �F‰F�T—V‘V‰O˜dŸf™f t§v¡v™oÑ-ˆØŒw‹;Ü˜˜1“:ÐÜ�IŠI�a‹LˆÜ�T—V‘V˜a‘Z §¡¨!¡Ó,Ð,r,   )r2   r3   r4   r5   r°  r¹  rê   rÂ  r�  r  r‘   rÏ  rÚ  rÝ  rà  rã  rð   rë  rî  rõ  ry  r®  r»  rÙ  r¾  r  r  r6   r/   r,   r*   r#  r#  A7  s™   † ò<ò3ò1ò.ò
#ò!ð !%¨õ  'òDòò'ò1òò*òò3òð ñ7ó ð7ò0+òdð ñ-ó ð-ð €GØƒDr,   r#  c                  ó  • \ rS rSrS rS rS rS rS rS r	S r
S	S	S	S	S
.S jrS rS rS rS rS rS rS rS rS r\S 5       r\S 5       r\S 5       r\S 5       rS r\S 5       rS r\r\" S 5      r\" S 5      rSr g	)rÐ  iü7  c                ó°   • U R                   (       a  g[        U R                  U R                  -
  5      [        U R                  U R                  -
  5      -  $ ©NrÓ  )r�  r&  rù  rq  ro  r0   s    r*   r°  ÚQuad.__abs__þ7  s;   € Ø�=�=ØÜ�4—7‘7˜TŸW™WÑ$Ó%¬¨D¯G©G°d·g±gÑ,=Ó(>Ñ>Ð>r,   c                óx  • [        US5      (       aB  [        U R                  U-   U R                  U-   U R                  U-   U R
                  U-   5      $ [        U5      S:w  a  [        S5      e[        U R                  US   -   U R                  US   -   U R                  US   -   U R
                  US   -   5      $ ©Nr—  rr  úQuad: bad seq lenr   r   r   r   ©r@   rÐ  rù  rq  ro  rp  r<   rÄ   ©r)   r+  s     r*   r¹  ÚQuad.__add__8  ó™   € Ü�1�k×"Ñ"Ü˜Ÿ™ !™ T§W¡W¨q¡[°$·'±'¸A±+¸t¿w¹wÈ¹{ÓKÐKÜˆq‹6�Q‹;ÜÐ0Ó1Ð1Ü�D—G‘G˜a ™d‘N D§G¡G¨a°©d¡N°D·G±G¸aÀ¹d±NÀDÇGÁGÈaÐPQÉdÁNÓSÐSr,   c                ó$   • U R                   (       + $ r.   ©r�  r0   s    r*   rê   ÚQuad.__bool__
8  ó   € Ø—=‘=Ô Ð r,   c                ó®  •  UR                  5       nUS:X  a  [	        X5      $ US:w  a  g[        U5      (       a@  [        U5      R                  (       a  g[	        US S U 5      =(       a    [	        USS  U 5      $ [        U5      (       a(  [        S5       H  n[	        X   U 5      (       a  M    g   gg! [         a    [        S:”  a
  [        5          gf = f)Nr   Fr   rr  T)
rÏ  rl   r  r{   Úutil_point_in_quadÚ	CheckRectr,  r�  Ú	CheckQuadrT  )r)   re  rT  rh  s       r*   rz  ÚQuad.__contains__8  sÂ   € ð	Ø—	‘	“ˆAð �‹6Ü% aÓ.Ð.Ø�‹6ØÜ�Q�<‰<Ü�A‹w××ØÜ% a¨¨ e¨TÓ2×VÔ7IÈ!ÈAÈBÈ%ÐQUÓ7VÐVÜ�Q�<‰<Ü˜1–X�Ü)¨!©$°×5Ó5Ù ñ ð Øøô! ó 	Ü# aÓ'¬NÔ,<Ùð	ús   ‚B3 Â3CÃCc                ó
  • [        US5      (       d  g[        U5      S:H  =(       a]    U R                  US   :H  =(       aD    U R                  US   :H  =(       a+    U R                  US   :H  =(       a    U R
                  US   :H  $ ©NrÏ  Frr  r   r   r   r   )r@   r<   rù  rq  ro  rp  )r)   rI  s     r*   rÂ  ÚQuad.__eq__"8  sx   € Ü�t˜Y×'Ñ'ØÜ�4‹y˜A‰~÷ 
Ø�G‰G�t˜A‘wÑ÷ Ø�G‰G�t˜A‘wÑ÷à�G‰G�t˜A‘wÑ÷ð �G‰G�t˜A‘wÑð		
r,   c                ód   • U R                   U R                  U R                  U R                  4U   $ r.   ©rù  rq  ro  rp  r�  s     r*   r�  ÚQuad.__getitem__,8  ó&   € Ø—‘˜Ÿ™ $§'¡'¨4¯7©7Ð3°AÑ6Ð6r,   c                ó*   • [        [        U 5      5      $ r.   r’  r0   s    r*   r  ÚQuad.__hash__/8  r”  r,   NrÞ  c               óÀ  • U(       d&  [        5       =U l        =U l        =U l        U l        GOd[        U5      S:”  a  [        S5      e[        U5      S:X  a+  [        [         U5      u  U l        U l        U l        U l        GO[        U5      S:X  aö  US   n[        U[        R                  5      (       ar  X`l        [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      4u  U l        U l        U l        U l        Ok[        US5      (       d  [        S5      e[        U5      S:w  a  [        S5      e[        [         U5      u  U l        U l        U l        U l        O[        S5      eUb  [        U5      U l        Ub  [        U5      U l        Ub  [        U5      U l        Ub  [        U5      U l        gg)z´
Quad() - all zero points
Quad(ul, ur, ll, lr)
Quad(quad) - new copy
Quad(sequence) - from 'sequence'

Explicit keyword args ul, ur, ll, lr override earlier settings if not
None.

rr  rÌ  r   r   r�  zQuad: bad argsN)r#  rù  rq  ro  rp  r<   rÄ   r  rC   r£   ÚFzQuadrÅ   r@   )r)   rù  rq  ro  rp  r  rT  s          r*   r‘   ÚQuad.__init__28  sk  € ö Ü49³GÐ;ˆDŒGÐ;�d”gÐ; ¤¨$®'Ü�‹Y˜‹]ÜÐ0Ó1Ð1Ü�‹Y˜!‹^Ü14´U¸DÓ1AÑ.ˆDŒG�T”W˜dœg t¦wÜ�‹Y˜!‹^Ø�Q‘ˆAÜ˜!œUŸ\™\×*Ñ*Ø”	Ü5:¸1¿4¹4³[Ä%ÈÏÉÃ+ÌuÐUV×UYÑUYË{Ô\aÐbc×bfÑbfÓ\gÐ5gÑ2�”˜œ $¤'¨4­7Ü˜Q ×.Ñ.Ü Ð!1Ó2Ð2Ü�Q“˜1“Ü Ð!4Ó5Ð5ä58¼À³]Ñ2�”˜œ $¤'¨4­7äÐ-Ó.Ð.Ø‰>¤e¨B£i˜DœGØ‰>¤e¨B£i˜DœGØ‰>¤e¨B£i˜DœGØ‰>¤e¨B£i˜D�Gˆ>r,   c                ó   • g©Nrr  r/   r0   s    r*   rÏ  ÚQuad.__len__U8  r×  r,   c                ó>   • [        U 5      nUR                  U5      nU$ r.   )rÐ  rÙ  )r)   rŒ  r+  s      r*   rÚ  ÚQuad.__mul__X8  s   € Ü�‹JˆØ�K‰K˜‹NˆØˆr,   c                óv   • [        U R                  * U R                  * U R                  * U R                  * 5      $ r.   )rÐ  rù  rq  ro  rp  r0   s    r*   rÝ  ÚQuad.__neg__]8  ó+   € Ü�T—W‘W�H˜tŸw™w˜h¨¯©¨°4·7±7°(Ó;Ð;r,   c                ó$   • U R                   (       + $ r.   rÒ  r0   s    r*   rà  ÚQuad.__nonzero__`8  rÔ  r,   c                ó   • [        U 5      $ r.   )rÐ  r0   s    r*   rã  ÚQuad.__pos__c8  ó   € Ü�D‹zÐr,   c                ó0   • S[        [        U 5      5      -   $ )NrÐ  ræ  r0   s    r*   rð   ÚQuad.__repr__f8  ó   € ØœœE $›KÓ(Ñ(Ð(r,   c                óÐ   • US:X  a  [        U5      U l        g US:X  a  [        U5      U l        g US:X  a  [        U5      U l        g US:X  a  [        U5      U l        g [        S5      e©Nr   r   r   r   ré  )r#  rù  rq  ro  rp  rž  rê  s      r*   rë  ÚQuad.__setitem__i8  sn   € Ø�!‹Vœu Q›x�T”Wð ð �!‹Vœu Q›x�T”Wð
 ð	 �!‹Vœu Q›x�T”Wð ð �!‹Vœu Q›x�T”Wð ô Ð1Ó2Ð2r,   c                óx  • [        US5      (       aB  [        U R                  U-
  U R                  U-
  U R                  U-
  U R
                  U-
  5      $ [        U5      S:w  a  [        S5      e[        U R                  US   -
  U R                  US   -
  U R                  US   -
  U R
                  US   -
  5      $ rË  rÍ  rÎ  s     r*   rî  ÚQuad.__sub__r8  rÐ  r,   c                ó¬   • [        US5      (       a  SU-  nO [        U5      S   nU(       d  [        S5      e[        U 5      nUR	                  U5      nU$ )Nr—  rÔ  r   zMatrix not invertible)r@   rò  ró  rÐ  rÙ  )r)   rŒ  r.  r+  s       r*   rõ  ÚQuad.__truediv__y8  sQ   € Ü�1�k×"Ñ"Ø�a‘‰Bä# AÓ& qÑ)ˆBÞÜ'Ð(?Ó@Ð@Ü�‹JˆØ�K‰K˜‹OˆØˆr,   c                ót  • [        U R                  U R                  5      nU R                  U-  nU R                  U-  nUR
                  UR
                  -  S:”  a  g[        U R                  U R                  5      nU R                  U-  nU R                  U-  nUR
                  UR
                  -  S:”  a  gg)zºCheck if quad is convex and not degenerate.

Notes:
    Check that for the two diagonals, the other two corners are not
    on the same side of the diagonal.
Returns:
    True or False.
r   FT)Úplanish_linerù  rp  ro  rq  rf  )r)   rŒ  rF  rG  s       r*   rl  ÚQuad.is_convex„8  s�   € ô ˜Ÿ™ $§'¡'Ó*ˆØ�W‰W�q‰[ˆØ�W‰W�q‰[ˆØ�4‰4�"—$‘$‰;˜‹?ØÜ˜Ÿ™ $§'¡'Ó*ˆØ�W‰W�q‰[ˆØ�W‰W�q‰[ˆØ�4‰4�"—$‘$‰;˜‹?ØØr,   c                ó\   • U R                   [        :  =(       d    U R                  [        :  $ )zcCheck whether all quad corners are on the same line.

This is the case if width or height is zero.
)r‰  rÿ  r2  r0   s    r*   r�  ÚQuad.is_emptyš8  s!   € ð �z‰zœGÑ#×< t§{¡{´WÑ'<Ð<r,   c                ó.   • U R                   R                  $ )z(Check whether this is the infinite quad.)rý   r€  r0   s    r*   r€  ÚQuad.is_infinite¢8  s   € ð �y‰y×$Ñ$Ð$r,   c                ó�  • [        U R                  U R                  U R                  5      n[	        US-
  5      [
        :”  a  g[        U R                  U R                  U R                  5      n[	        US-
  5      [
        :”  a  g[        U R                  U R                  U R                  5      n[	        US-
  5      [
        :”  a  gg)z¿Check if quad is rectangular.

Notes:
    Some rotation matrix can thus transform it into a rectangle.
    This is equivalent to three corners enclose 90 degrees.
Returns:
    True or False.
r   FT)Úutil_sine_betweenrù  rq  rp  r&  rÿ  ro  )r)   Úsines     r*   Úis_rectangularÚQuad.is_rectangular§8  sŽ   € ô ! §¡¨$¯'©'°4·7±7Ó;ˆÜˆt�a‰x‹=œ7Ó"Øä  §¡¨$¯'©'°4·7±7Ó;ˆÜˆt�a‰x‹=œ7Ó"Øä  §¡¨$¯'©'°4·7±7Ó;ˆÜˆt�a‰x‹=œ7Ó"Øàr,   c                ó²   • U R                   (       a
  [        5       $ [        SS5      R                  UR                  UR
                  5      nX) -  U-  U-  nU$ )zKMorph the quad with matrix-like 'm' and point-like 'p'.

Return a new quad.r   )r€  ÚINFINITE_QUADr€  r  re  rf  )r)   r³  rŒ  Údeltar+  s        r*   r'  Ú
Quad.morphÀ8  sM   € ð ××Ü “?Ð"Ü�q˜!“×)Ñ)¨!¯#©#¨q¯s©sÓ3ˆØ�6‰M˜AÑ Ñ%ˆØˆr,   c                ó2  • [        5       n[        U R                  R                  U R                  R                  U R
                  R                  U R                  R                  5      Ul        [        U R                  R                  U R                  R                  U R
                  R                  U R                  R                  5      Ul	        [        U R                  R                  U R                  R                  U R
                  R                  U R                  R                  5      Ul        [        U R                  R                  U R                  R                  U R
                  R                  U R                  R                  5      Ul        U$ r.   )r,  rÅ  rù  re  rq  rp  ro  r°  rf  r²  r!  r¯  r±  ©r)   r%  s     r*   rý   Ú	Quad.rectÊ8  sÖ   € ä‹FˆÜ�4—7‘7—9‘9˜dŸg™gŸi™i¨¯©¯©°D·G±G·I±IÓ>ˆŒÜ�4—7‘7—9‘9˜dŸg™gŸi™i¨¯©¯©°D·G±G·I±IÓ>ˆŒÜ�4—7‘7—9‘9˜dŸg™gŸi™i¨¯©¯©°D·G±G·I±IÓ>ˆŒÜ�4—7‘7—9‘9˜dŸg™gŸi™i¨¯©¯©°D·G±G·I±IÓ>ˆŒØˆr,   c                ó  • [        US5      (       a  O[        U5      S:w  a  [        S5      eU =R                  U-  sl        U =R                  U-  sl        U =R
                  U-  sl        U =R                  U-  sl        U $ )z1Replace quad by its transformation with matrix m.r—  r§  r¶  )r@   r<   rÄ   rù  rq  ro  rp  r¸  s     r*   rÙ  ÚQuad.transformÓ8  sb   € ä�1�k×"Ñ"ØÜ�‹V�q‹[ÜÐ2Ó3Ð3Ø�Š�1‰�Ø�Š�1‰�Ø�Š�1‰�Ø�Š�1‰�Øˆr,   c                óš   • [        [        U R                  U R                  -
  5      [        U R                  U R
                  -
  5      5      $ r.   )r!  r&  rù  rq  ro  rp  r0   s    r*   r«
  ÚQuad.<lambda>à8  ó/   € ¤3¤s¨4¯7©7°T·W±WÑ+<Ó'=¼sÀ4Ç7Á7ÈTÏWÉWÑCTÓ?UÔ#Vr,   c                óš   • [        [        U R                  U R                  -
  5      [        U R                  U R
                  -
  5      5      $ r.   )r!  r&  rù  ro  rq  rp  r0   s    r*   r«
  r  á8  r  r,   )ro  rp  rÅ   rù  rq  )!r2   r3   r4   r5   r°  r¹  rê   rz  rÂ  r�  r  r‘   rÏ  rÚ  rÝ  rà  rã  rð   rë  rî  rõ  ry  rl  r�  r€  r  r'  rý   rÙ  r  r‰  r2  r6   r/   r,   r*   rÐ  rÐ  ü7  sð   † ò?ò
Tò!òò*
ò7ò!ð "&¨$°4¸Dõ !0òFòò
<ò!òò)òòTò	ð ñó ðð* ñ=ó ð=ð ñ%ó ð%ð ñó ðò0ð ñó ðò
ð €GÙÑVÓW€EÙÑVÓWƒFr,   rÐ  c                  ó¨  • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
S
S
S
S
S
S.S j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 5       rS r\S 5       rS.S jrS rS rS rS r \S  5       r!\S! 5       r"\S" 5       r#S# r$S$ r%S% r&\S& 5       r'S' r(\S( 5       r)\S) 5       r*S* r+S+ r,\S, 5       r-\r.\r/\r0\" \(5      r1\)r2\*r3S-r4g
)/r,  iä8  c                ó®   • U R                   (       d  U R                  (       a  gU R                  U R                  -
  U R                  U R
                  -
  -  $ rÈ  )r�  r€  r¯  r°  r±  r²  r0   s    r*   r°  ÚRect.__abs__æ8  s9   € Ø�=�=˜D×,×,ØØ—‘˜$Ÿ'™'Ñ! d§g¡g°·±Ñ&7Ñ8Ð8r,   c                óx  • [        US5      (       aB  [        U R                  U-   U R                  U-   U R                  U-   U R
                  U-   5      $ [        U5      S:w  a  [        S5      e[        U R                  US   -   U R                  US   -   U R                  US   -   U R
                  US   -   5      $ ©Nr—  rr  úRect: bad seq lenr   r   r   r   ©r@   r,  r°  r²  r¯  r±  r<   rÄ   r‡  s     r*   r¹  ÚRect.__add__ë8  rÐ  r,   c                óˆ   • [        US5      (       d  [        S5      e[        U5      n[        U 5      nUR                  U5      $ )NrÏ  úbad operand 2)r@   rÄ   r,  Ú	intersect)r)   re  rH  r%  s       r*   Ú__and__ÚRect.__and__ò8  s:   € Ü�q˜)×$Ñ$Ü˜_Ó-Ð-ä�!‹WˆÜ�‹JˆØ�{‰{˜2‹Ðr,   c                ód   • [        U 5      [        U 5      s=:H  =(       a
    S:H  (       + $ s  (       + $ rŒ   r½  r0   s    r*   rê   ÚRect.__bool__ú8  r¿  r,   c                óZ  • [        US5      (       a  U[        U 5      ;   $ [        U5      nUS:X  a  [        X5      $ US:X  a±  [	        5       n [        U5      nU R                  UR                  s=:*  =(       a&    UR                  s=:*  =(       a    U R                  :*  Os  =(       aJ    U R                  UR                  s=:*  =(       a&    UR                  s=:*  =(       a    U R                  :*  $ s  $ g! [         a,    [        S:”  a
  [        5         [        U5      R                  n NÑf = f)Nr—  r   rr  r   F)r@   r¶   r<   Úutil_is_point_in_rectÚINFINITE_RECTr,  rl   r  r{   rÐ  rý   r°  r¯  r²  r±  )r)   re  rT  r%  s       r*   rz  ÚRect.__contains__ý8  sç   € Ü�1�k×"Ñ"Øœ˜d›Ñ#Ð#Ü�‹FˆØ�‹6Ü(¨Ó1Ð1Ø�‹6Ü“ˆAð!Ü˜“G�ð —G‘G˜qŸt™t×6Ó6 q§t¡t×6Ó6¨t¯w©wÔ6÷ 7Ø—G‘G˜qŸt™t×6Ó6 q§t¡t×6Ó6¨t¯w©wÑ6ð8Ù6ð8àøô ó !Ü'¨!Ó+´Ô0@Ü˜“G—L‘L’ð!ús   ÁC4 Ã43D*Ä)D*c                ób   • [        US5      (       d  g[        U5      S:H  =(       a	    X-
  (       + $ )NrÏ  Frr  rÁ  r  s     r*   rÂ  ÚRect.__eq__9  s*   € Ü�t˜Y×'Ñ'ØÜ�4‹y˜A‰~×3 t¡{Ô"3Ð3r,   c                ód   • U R                   U R                  U R                  U R                  4U   $ r.   ©r°  r²  r¯  r±  r�  s     r*   r�  ÚRect.__getitem__9  rà  r,   c                ó*   • [        [        U 5      5      $ r.   r’  r0   s    r*   r  ÚRect.__hash__9  r”  r,   N©rc  rF  r°  r²  r¯  r±  c          
     ó¤   • [        XqX#XEUS.6u  p4pV[        U5      U l        [        U5      U l        [        U5      U l        [        U5      U l        g)a  
Rect() - all zeros
Rect(x0, y0, x1, y1)
Rect(top-left, x1, y1)
Rect(x0, y0, bottom-right)
Rect(top-left, bottom-right)
Rect(Rect or IRect) - new copy
Rect(sequence) - from 'sequence'

Explicit keyword args p0, p1, x0, y0, x1, y1 override earlier settings
if not None.
r0  N)Úutil_make_rectrœ  r°  r²  r¯  r±  ©r)   rc  rF  r°  r²  r¯  r±  r  s           r*   r‘   ÚRect.__init__9  sE   € ô (¨$¸"ÈÐVXÒY‰ˆ�Ü˜“*ˆŒÜ˜“*ˆŒÜ˜“*ˆŒÜ˜“*ˆ�r,   c                ó   • grç  r/   r0   s    r*   rÏ  ÚRect.__len__,9  r×  r,   c                óä   • [        US5      (       aB  [        U R                  U-  U R                  U-  U R                  U-  U R
                  U-  5      $ [        U 5      nUR                  U5      nU$ )Nr—  )r@   r,  r°  r²  r¯  r±  rÙ  )r)   rŒ  r%  s      r*   rÚ  ÚRect.__mul__/9  s[   € Ü�1�k×"Ñ"Ü˜Ÿ™ !™ T§W¡W¨q¡[°$·'±'¸A±+¸t¿w¹wÈ¹{ÓKÐKÜ�‹JˆØ�K‰K˜‹NˆØˆr,   c                óv   • [        U R                  * U R                  * U R                  * U R                  * 5      $ r.   )r,  r°  r²  r¯  r±  r0   s    r*   rÝ  ÚRect.__neg__69  rí  r,   c                ód   • [        U 5      [        U 5      s=:H  =(       a
    S:H  (       + $ s  (       + $ rŒ   r½  r0   s    r*   rà  ÚRect.__nonzero__99  r¿  r,   c                óæ   • [        US5      (       d  [        S5      e[        U 5      n[        U5      S:X  a  UR	                  U5      $ [        U5      S:X  a  UR                  U5      $ [        S5      e)NrÏ  r  r   rr  )r@   rÄ   r,  r<   Úinclude_pointÚinclude_rect)r)   re  r%  s      r*   Ú__or__ÚRect.__or__<9  sb   € Ü�q˜)×$Ñ$Ü˜_Ó-Ð-Ü�‹JˆÜˆq‹6�Q‹;Ø—?‘? 1Ó%Ð%Üˆq‹6�Q‹;Ø—>‘> !Ó$Ð$Ü˜Ó)Ð)r,   c                ó   • [        U 5      $ r.   ©r,  r0   s    r*   rã  ÚRect.__pos__F9  rò  r,   c                ó0   • S[        [        U 5      5      -   $ )Nr,  ræ  r0   s    r*   rð   ÚRect.__repr__I9  rõ  r,   c                ó–   • [        U5      nUS:X  a  X l        g US:X  a  X l        g US:X  a  X l        g US:X  a  X l        g [        S5      er÷  )rœ  r°  r²  r¯  r±  rž  rê  s      r*   rë  ÚRect.__setitem__L9  s_   € Ü�!‹HˆØ�!‹V˜q”Wð ð �!‹V˜q”Wð
 ð	 �!‹V˜q”Wð ð �!‹V˜q”Wð ô Ð1Ó2Ð2r,   c                óx  • [        US5      (       aB  [        U R                  U-
  U R                  U-
  U R                  U-
  U R
                  U-
  5      $ [        U5      S:w  a  [        S5      e[        U R                  US   -
  U R                  US   -
  U R                  US   -
  U R
                  US   -
  5      $ r  r  r‡  s     r*   rî  ÚRect.__sub__V9  rÐ  r,   c                óB  • [        US5      (       aN  [        U R                  S-  U-  U R                  S-  U-  U R                  S-  U-  U R
                  S-  U-  5      $ [        U5      S   nU(       d  [        SU 35      e[        U 5      nUR                  U5      nU$ )Nr—  rÔ  r   zMatrix not invertible: )	r@   r,  r°  r²  r¯  r±  rò  ró  rÙ  )r)   rŒ  r.  r%  s       r*   rõ  ÚRect.__truediv__]9  s’   € Ü�1�k×"Ñ"Ü˜Ÿ™ "™ Q™¨¯©°"©°Q©¸¿¹À"¹ÀQ¹ÈÏÉÐRTÉÐUVÉÓWÐWÜ Ó" 1Ñ%ˆÞÜ#Ð&=¸a¸SÐ$AÓBÐBÜ�‹JˆØ�K‰K˜‹OˆØˆr,   c                óB   • [        U R                  U R                  5      $ ©zBottom-left corner.©r#  r°  r±  r0   s    r*   r½  ÚRect.bottom_leftg9  ó   € ô �T—W‘W˜dŸg™gÓ&Ð&r,   c                óB   • [        U R                  U R                  5      $ ©zBottom-right corner.©r#  r¯  r±  r0   s    r*   rº  ÚRect.bottom_rightl9  rQ  r,   c                ó$   • U R                  U5      $ )z.Check if containing point-like or rect-like x.©rz  r:  s     r*   ÚcontainsÚRect.containsq9  ó   € à× Ñ  Ó#Ð#r,   c                óH   • [        SU R                  U R                  -
  5      $ rŒ   ©r!  r±  r²  r0   s    r*   r2  ÚRect.heightu9  ó   € ä�1�d—g‘g §¡Ñ'Ó(Ð(r,   c                óD   • [        U R                  U R                  U5      $ ©zUCalculate area of rectangle.
parameter is one of 'px' (default), 'in', 'cm', or 'mm'.©Ú
_rect_arear‰  r2  r�  s     r*   Úget_areaÚRect.get_areay9  ó   € ä˜$Ÿ*™* d§k¡k°4Ó8Ð8r,   c                ó‚   • [        U5      S:w  a  [        S5      e[        X5      u  U l        U l        U l        U l        U $ )zExtend to include point-like p.r   r…  )r<   rÄ   Úutil_include_point_in_rectr°  r²  r¯  r±  r‡  s     r*   r>  ÚRect.include_point}9  s9   € äˆq‹6�Q‹;ÜÐ1Ó2Ð2Ü-GÈÓ-PÑ*ˆŒ�”˜$œ' 4¤7Øˆr,   c                ó  • [        U5      S:w  a  [        S5      e[        U5      nUR                  (       d  U R                  (       a1  [        [        [
        [
        4u  U l        U l        U l        U l	        U $ UR                  (       a  U $ U R                  (       aI  UR                  UR                  UR                  UR                  4u  U l        U l        U l        U l	        U $ [        X5      u  U l        U l        U l        U l	        U $ )zExtend to include rect-like r.rr  r  )r<   rÄ   r,  r€  r†  r‡  r°  r²  r¯  r±  r�  Úutil_union_rectr  s     r*   r?  ÚRect.include_rect„9  sÇ   € äˆq‹6�Q‹;ÜÐ0Ó1Ð1Ü�‹GˆØ�=�=˜D×,×,Ü1@Ä/ÔSbÔdsÐ1sÑ.ˆDŒG�T”W˜dœg t¤wð ˆð �Z�ZØˆKØ�]�]Ø12·±°q·t±t¸Q¿T¹TÀ1Ç4Á4Ð1GÑ.ˆDŒG�T”W˜dœg t¤wð ˆô 2AÀÓ1IÑ.ˆDŒG�T”W˜dœg t¤wØˆr,   c                óL  • [        U5      S:X  d  [        S5      e[        U5      nUR                  (       a  U $ U R                  (       aI  UR                  UR
                  UR                  UR                  4u  U l        U l        U l        U l        U $ UR                  (       aI  UR                  UR
                  UR                  UR                  4u  U l        U l        U l        U l        U $ U R                  (       a  U $ [        X5      u  U l        U l        U l        U l        U $ )z)Restrict to common rect with rect-like r.rr  r  )
r<   rÄ   r,  r€  r°  r²  r¯  r±  r�  Úutil_intersect_rectr  s     r*   r   ÚRect.intersect“9  sÚ   € ä�1‹v˜‹{ÜÐ0Ó1Ð1Ü�‹GˆØ�=�=ØˆKØ××Ø12·±°q·t±t¸Q¿T¹TÀ1Ç4Á4Ð1GÑ.ˆDŒG�T”W˜dœg t¤wð ˆð �Z�ZØ12·±°q·t±t¸Q¿T¹TÀ1Ç4Á4Ð1GÑ.ˆDŒG�T”W˜dœg t¤wð
 ˆð	 �]�]ØˆKä1DÀTÓ1MÑ.ˆDŒG�T”W˜dœg t¤wØˆr,   c                óÌ  • [        U5      n U R                  (       + =(       aÁ    U R                  (       + =(       a©    UR                  (       + =(       a‘    UR                  (       + =(       ay    U R                  UR                  :  =(       aY    UR                  U R                  :  =(       a9    U R
                  UR                  :  =(       a    UR
                  U R                  :  $ )z4Check if intersection with rectangle x is not empty.)r,  r�  r€  r°  r¯  r²  r±  )r)   re  Úrect2s      r*   Ú
intersectsÚRect.intersects¤9  s°   € ä�Q“ˆð'ØŸ™Ô%÷'à×(Ñ(Ô(÷'ð Ÿ™Ô&÷'ð ×)Ñ)Ô)÷	'ð
 —G‘G˜eŸh™hÑ&÷'ð —H‘H˜tŸw™wÑ&÷'ð —G‘G˜eŸh™hÑ&÷'ð —H‘H˜tŸw™wÑ&ð		r,   c                ót   • U R                   U R                  :¬  =(       d    U R                  U R                  :¬  $ ©z True if rectangle area is empty.©r°  r¯  r²  r±  r0   s    r*   r�  ÚRect.is_empty²9  ó)   € ð �w‰w˜$Ÿ'™'Ñ!×7 T§W¡W°·±Ñ%7Ð7r,   c                óÄ   • U R                   U R                  s=:H  =(       a	    [        :H  Os  =(       a-    U R                  U R                  s=:H  =(       a	    [
        :H  $ s  $ )z'True if this is the infinite rectangle.©r°  r²  r†  r¯  r±  r‡  r0   s    r*   r€  ÚRect.is_infinite·9  ó?   € ð �w‰w˜$Ÿ'™'×4Ó4¤_Ô4×^¸¿¹ÀDÇGÁG×9^Ó9^ÌÑ9^Ð^Ñ9^Ð^r,   c                ót   • U R                   U R                  :*  =(       a    U R                  U R                  :*  $ ©zTrue if rectangle is valid.ru  r0   s    r*   Úis_validÚRect.is_valid¼9  ó)   € ð �w‰w˜$Ÿ'™'Ñ!×8 d§g¡g°·±Ñ&8Ð8r,   c                ón   • U R                   (       a
  [        5       $ U R                  R                  X5      $ ©z?Morph with matrix-like m and point-like p.

Returns a new quad.©r€  r
  rI  r'  ©r)   r³  rŒ  s      r*   r'  Ú
Rect.morphÁ9  ó(   € ð ××Ü “?Ð"Ø�y‰y�‰˜qÓ$Ð$r,   c           	     óp   • [         R                  " [        U  Vs/ s H  oU-  PM	     sn5      5      $ s  snf r.   r«  r¯  s     r*   r  Ú	Rect.normÉ9  r²  r³  c                óú   • U R                   U R                  :  a#  U R                   U R                  sU l        U l         U R                  U R                  :  a#  U R                  U R                  sU l        U l        U $ )z*Replace rectangle with its finite version.rG  r0   s    r*   r  ÚRect.normalizeÌ9  óW   € à�7‰7�T—W‘WÓØ#Ÿw™w¨¯©ÐˆDŒG�T”WØ�7‰7�T—W‘WÓØ#Ÿw™w¨¯©ÐˆDŒG�T”WØˆr,   c                ón   • [        U R                  U R                  U R                  U R                  5      $ ©z!Return Quad version of rectangle.©rÐ  r$  r9  rW  r%  r0   s    r*   rI  Ú	Rect.quadÔ9  ó%   € ô �D—G‘G˜TŸW™W d§g¡g¨t¯w©wÓ7Ð7r,   c                ó*   • [        [        U 5      5      $ )zReturn the IRect.)rq  Úutil_round_rectr0   s    r*   rÉ  Ú
Rect.roundÙ9  s   € ä”_ TÓ*Ó+Ð+r,   c                óB   • [        U R                  U R                  5      $ ©zTop-left corner.©r#  r°  r²  r0   s    r*   r¹  ÚRect.top_leftÝ9  rQ  r,   c                óB   • [        U R                  U R                  5      $ ©zTop-right corner.©r#  r¯  r²  r0   s    r*   r¼  ÚRect.top_rightâ9  rQ  r,   c           	     óÂ  • [        U5      nU R                  (       d3  U R                  (       d"  UR                  (       d  UR                  (       a  [        S5      e[	        SSSSU R
                  * U R                  * 5      [	        UR                  U R                  -  UR                  U R                  -  5      -  [	        SSSSUR
                  UR                  5      -  $ ©z+Return matrix that converts to target rect.z'rectangles must be finite and not emptyr   r   ©	r,  r€  r�  rÄ   r€  r°  r²  r‰  r2  r  s     r*   ÚtorectÚRect.torectç9  s    € ô �‹GˆØ××˜tŸ}Ÿ}°··ÀÇÇÜÐFÓGÐGä�1�a˜˜A §¡˜x¨$¯'©'¨Ó2Ü�Q—W‘W˜tŸz™zÑ)¨1¯8©8°d·k±kÑ+AÓBñCä�Q˜˜1˜a §¡ q§t¡tÓ,ñ-ð	
r,   c                ó‚   • [        U5      S:X  d  [        S5      e[        X5      u  U l        U l        U l        U l        U $ )z1Replace with the transformation by matrix-like m.r§  r¶  )r<   rÄ   Úutil_transform_rectr°  r²  r¯  r±  r¸  s     r*   rÙ  ÚRect.transformó9  s9   € ä�1‹v˜‹{ÜÐ2Ó3Ð3Ü-@ÀÓ-IÑ*ˆŒ�”˜$œ' 4¤7Øˆr,   c                óH   • [        SU R                  U R                  -
  5      $ rŒ   ©r!  r¯  r°  r0   s    r*   r‰  Ú
Rect.widthú9  r^  r,   ru  ©r«  rœ  )5r2   r3   r4   r5   r°  r¹  r!  rê   rz  rÂ  r�  r  r‘   rÏ  rÚ  rÝ  rà  r@  rã  rð   rë  rî  rõ  ry  r½  rº  rX  r2  rc  r>  r?  r   rq  r�  r€  r~  r'  r  r  rI  rÉ  r¹  r¼  rŸ  rÙ  r‰  r  rW  r%  r¢  r$  r9  r6   r/   r,   r*   r,  r,  ä8  sœ  † ò9ò
Tòò1òò"4ò
7ò!ð "&¨$°4¸DÀTÈdõ ò&òò<ò1ò*òò)òòTòð ñ'ó ð'ð ñ'ó ð'ò$ð ñ)ó ð)ô9òòòò"ð ñ8ó ð8ð ñ_ó ð_ð ñ9ó ð9ò%ò3òð ñ8ó ð8ò,ð ñ'ó ð'ð ñ'ó ð'ò

òð ñ)ó ð)ð €Gà	€BØ	€BÙ�U‹O€EØ	€BØ	ƒBr,   r,  c                  ót  • \ rS rSrSr\S 5       rSS jrS rS S jr	S!S jr
          S"S jrS#S	 jrS$S
 jr        S%S jr S&         S'S jjrSS.S(S jjrS)S jr S*       S+S jjr S*     S S jjrSSSSSSSSSSSSSSSSS.                                     S,S jjrSSSSSSSSSSSSSSSSSSS.                                         S-S jjr            S.                         S/S jjrS&S0S jjrSrg)1r  i:  zCreate a new shape.c                óJ  • [        X-
  5      R                  n[        R                  " [	        UR
                  5      5      nUR                  S:  a<  UR
                  S::  a  [        R                  U-
  * nU$ [        R                  U-
  n U$ UR
                  S:¼  a   U$ U* nU$ )zÆReturn the angle to the horizontal for the connection from C to P.
This uses the arcus sine function and resolves its inherent ambiguity by
looking up in which quadrant vector S = P - C is located.
r   )r#  r¾  r¬  Úasinr&  rf  re  Úpi)rþ  rs  rJ
  Úalfas       r*   Úhorizontal_angleÚShape.horizontal_angle
:  s“   € ô �!‘%‹L×ÑˆÜ�yŠyœ˜QŸS™S›Ó"ˆØ�3‰3�‹7Ø�s‰s�a‹xÜŸ™ 4™Ð(�ð ˆô —w‘w ‘~‘ð ˆð	 �s‰s�a‹xØð ˆð �u�Øˆr,   c                óø  • [        U5        Xl        UR                  U l        U R                  R                  (       d  [        S5      eUR                  R                  U l        UR                  R                  U l
        UR                  R                  U l	        UR                  R                  U l        UR                  U l        U R                  ) U l        SU l        SU l        SU l        S U l        S U l        g )Nr}  ra   )rp  r×   rí   r2  r  rÄ   rþ  rf  r2  re  r‰  r’  ru  ÚpctmÚipctmrè  Ú	text_contÚ	totalcontrç  rý   rC  s     r*   r‘   ÚShape.__init__:  s¹   € Ü�DÔØŒ	Ø—;‘;ˆŒØ�x‰x��Ü˜[Ó)Ð)Ø×(Ñ(×*Ñ*ˆŒØ×'Ñ'×)Ñ)ˆŒ
Ø×&Ñ&×(Ñ(ˆŒØ×&Ñ&×(Ñ(ˆŒà×.Ñ.ˆŒ	Ø—i‘i�ZˆŒ
àˆŒØˆŒØˆŒØˆŒØˆ�	r,   c                ó\  • U R                   c1  [        U5      S:X  a  [        X5      U l         g [        U5      U l         g [        U5      S:X  að  [        U5      n[	        U R                   R
                  UR                  5      U R                   l        [	        U R                   R                  UR                  5      U R                   l        [        U R                   R                  UR                  5      U R                   l
        [        U R                   R                  UR                  5      U R                   l        g [        U5      n[	        U R                   R
                  UR
                  5      U R                   l        [	        U R                   R                  UR                  5      U R                   l        [        U R                   R                  UR                  5      U R                   l
        [        U R                   R                  UR                  5      U R                   l        g r™  )rý   r<   r,  r#  rÅ  r°  re  r²  rf  r!  r¯  r±  r:  s     r*   Ú
updateRectÚShape.updateRect2:  s<  € Ø�9‰9ÑÜ�1‹v˜‹{Ü  ›J�•	ä  ›G�•	ô �1‹v˜‹{Ü˜!“H�Ü" 4§9¡9§<¡<°·±Ó5�—	‘	”Ü" 4§9¡9§<¡<°·±Ó5�—	‘	”Ü" 4§9¡9§<¡<°·±Ó5�—	‘	”Ü" 4§9¡9§<¡<°·±Ó5�—	‘	•ä˜“G�Ü" 4§9¡9§<¡<°·±Ó6�—	‘	”Ü" 4§9¡9§<¡<°·±Ó6�—	‘	”Ü" 4§9¡9§<¡<°·±Ó6�—	‘	”Ü" 4§9¡9§<¡<°·±Ó6�—	‘	•r,   c                óš  • [        U5      n[        U5      nU R                  U:X  dM  U =R                  [        [	        XR
                  -  5      5      S-   -  sl        Xl        U R                  U5        U =R                  [        [	        X R
                  -  5      5      S-   -  sl        U R                  U5        X l        U R                  $ )zDraw a line between two points.ú m
ú l
)r#  rç  rè  r·   r7  r±  r¶  )r)   rF  rG  s      r*   rÆ  ÚShape.draw_lineG:  s’   € ä�2‹YˆÜ�2‹YˆØ—‘ 2Ó%Ø�NŠNœi¬°·j±j±Ó(AÓBÀVÑKÑK�NØ ŒOØ�O‰O˜BÔà�Šœ)¤H¨R·*±*©_Ó$=Ó>ÀÑGÑG�Ø�‰˜ÔØŒØ�‰Ðr,   c           
     óê  • [        U5       HÆ  u  p#US:X  aj  U R                  [        U5      :X  dP  U =R                  [	        [        [        U5      U R                  -  5      5      S-   -  sl        [        U5      U l        O@U =R                  [	        [        [        U5      U R                  -  5      5      S-   -  sl        U R                  U5        MÈ     [        US   5      U l        U R                  $ )z%Draw several connected line segments.r   r¹  rº  r¨  )rY  rç  r#  rè  r·   r7  r±  r¶  )r)   rE  rh  r³  s       r*   rÌ  ÚShape.draw_polylineU:  s³   € ä˜fÖ%‰DˆAØ�A‹vØŸ™¬5°«8Ó3Ø—N’N¤i´¼¸q»ÀDÇJÁJÑ9NÓ0OÓ&PÐSYÑ&YÑY•NÜ&+¨A£h�D”Oøà—’¤)¬H´U¸1³XÀÇ
Á
Ñ5JÓ,KÓ"LÈvÑ"UÑU•Ø�O‰O˜AÖñ &ô    r¡
Ó+ˆŒØ�‰Ðr,   c                ót  • [        U5      n[        U5      n[        U5      n[        U5      nU R                  U:X  d6  U =R                  [        [	        XR
                  -  5      5      S-   -  sl        [	        [        X R
                  -  5      [        X0R
                  -  5      -   [        X@R
                  -  5      -   5      nU =R                  [        U5      S-   -  sl        U R                  U5        U R                  U5        U R                  U5        U R                  U5        X@l        U R                  $ )z#Draw a standard cubic Bezier curve.r¹  ú c
)r#  rç  rè  r·   r7  r±  rµ   r¶  )r)   rF  rG  r¸  r¹  r  s         r*   r·  ÚShape.draw_bezierc:  sä   € ô �2‹YˆÜ�2‹YˆÜ�2‹YˆÜ�2‹YˆØ—‘ 2Ó%Ø�NŠNœi¬°·j±j±Ó(AÓBÀVÑKÑK�NÜœ˜R§*¡*™_Ó-´°R¿*¹*±_Ó0EÑEÌÈR×R\ÑR\É_ÓH]Ñ]Ó^ˆØ�Šœ) D›/¨FÑ2Ñ2�Ø�‰˜ÔØ�‰˜ÔØ�‰˜ÔØ�‰˜ÔØŒØ�‰Ðr,   c                óº  • [        U5      S:w  a  [        S5      e[        US   S5      (       a  [        U5      R                  nO[        U5      nUR                  UR                  UR                  -
  S-  -   nUR                  UR                  UR                  -
  S-  -   nUR                  UR                  UR                  -
  S-  -   nUR                  UR                  UR                  -
  S-  -   nU R                  U:X  d<  U =R                  [        [        X`R                  -  5      5      S-   -  sl        X`l
        U R                  XbR                  U5        U R                  XRR                  U5        U R                  XBR                  U5        U R                  X2R                  U5        U R!                  UR"                  5        X`l
        U R                  $ )z"Draw an ellipse inside a tetrapod.rr  zinvalid arg lengthr   r—  rS  r¹  )r<   rÄ   r@   r,  rI  rÐ  rù  rq  rp  ro  rç  rè  r·   r7  r±  rÂ  r¶  rý   )r)   Útetrar+  ÚmtÚmrræ  Úmls          r*   rÉ  ÚShape.draw_ovalz:  sY  € äˆu‹:˜‹?ÜÐ1Ó2Ð2Ü�5˜‘8˜[×)Ñ)Ü�U“× Ñ ‰Aä�U“ˆAà�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'ˆØ—‘ 2Ó%Ø�NŠNœi¬°·j±j±Ó(AÓBÀVÑKÑK�NØ ŒOØ�‰˜ŸD™D "Ô%Ø�‰˜ŸD™D "Ô%Ø�‰˜ŸD™D "Ô%Ø�‰˜ŸD™D "Ô%Ø�‰˜Ÿ™ÔØŒØ�‰Ðr,   c                óp   • U[         :”  d  [        S5      e[        U5      nXS4-
  nU R                  XSSS9$ )r¼  úradius must be positiver   rí  FrÖ  )rÿ  rÄ   r#  rØ  )r)   r¼  r¿  rF  s       r*   r¾  ÚShape.draw_circle’:  sC   € àœÓÜÐ6Ó7Ð7Ü�v“ˆØ˜q�kÑ!ˆØ×Ñ ¨C¸EÐÐBÐBr,   c                ó”   • Sn[        U5      n[        U5      n[        U5      nXU-
  U-  -   nX2U-
  U-  -   nU R                  XXc5      $ )z4Draw a curve between points using one control point.ç7.SQ¬á?)r#  r·  )r)   rF  rG  r¸  ÚkappaÚk1Úk2s          r*   rÂ  ÚShape.draw_curveš:  sY   € ð ˆÜ�2‹YˆÜ�2‹YˆÜ�2‹YˆØ˜‘7˜eÑ#Ñ#ˆØ˜‘7˜eÑ#Ñ#ˆØ×Ñ ¨Ó/Ð/r,   c                óz  • [        U5      n[        U5      nS nS nS n[        R                  " U* 5      n[        R                  " [        R                  " SU5      5      S-  n	[        R                  " [        R                  " SU5      5      n
U
S-  n[	        U5      S[        R
                  -  :”  a&  X‰-  n[	        U5      S[        R
                  -  :”  a  M&  U R                  U:X  d3  U =R                  U" [        X R                  -  5      6 -  sl        X l        [        SS5      nUnUnXí-
  n[	        U5      nU[        :”  d  [        S	5      eU R                  X5      n[	        U5      [	        U
5      :”  GaÌ  UR                  [        R                  " UU
-   5      U-  -   nUR                  [        R                   " UU
-   5      U-  -   n[        UU5      nUR                  [        R                  " UU-   5      U-  [        R                  " U5      -  -   nUR                  [        R                   " UU-   5      U-  [        R                  " U5      -  -   n[        UU5      nS
[        R                  " U5      -
  S-  S-  [	        UU-
  5      -  nU[	        Xì-
  5      -  nUUU-
  U-  -   nUUU-
  U-  -   nU =R                  U" [        [#        UU R                  -  5      [#        UU R                  -  5      -   [#        XÀR                  -  5      -   5      6 -  sl        XŠ-  nUU
-  nUn[	        U5      [	        U
5      :”  a  GMÌ  [	        U5      S:”  GaÅ  US-  nUR                  [        R                  " UU-   5      U-  -   nUR                  [        R                   " UU-   5      U-  -   n[        UU5      nUR                  [        R                  " UU-   5      U-  [        R                  " U5      -  -   nUR                  [        R                   " UU-   5      U-  [        R                  " U5      -  -   n[        UU5      nS
[        R                  " U5      -
  S-  S-  [	        UU-
  5      -  nU[	        Xì-
  5      -  S
[        R                  " U5      -
  -  nUUU-
  U-  -   nUUU-
  U-  -   nU =R                  U" [        [#        UU R                  -  5      [#        UU R                  -  5      -   [#        XÀR                  -  5      -   5      6 -  sl        U(       a‡  U =R                  U" [        X R                  -  5      6 -  sl        U =R                  U" [        XR                  -  5      6 -  sl        U =R                  U" [        XÀR                  -  5      6 -  sl        XÀl        U R                  $ )zDraw a circle sector.c                ó    • [        X45      S-   $ )Nr¹  ©r·   ©r!   r  s     r*   r«
  Ú#Shape.draw_sector.<locals>.<lambda>³:  ó   € œ) Q FÓ+¨fÒ4r,   c                ó$   • [        XX#XE45      S-   $ )Nr¿  rÒ  rÅ  s         r*   r«
  rÔ  ´:  s   € ¤i°°q¸QÐ0BÓ&CÀfÒ&Lr,   c                ó    • [        X45      S-   $ )Nrº  rÒ  rÓ  s     r*   r«
  rÔ  µ:  rÕ  r,   rí  r¨  rî  r   r   rÈ  r   rr  r   çü©ñÒMbP?)r#  r¬  rÈ  Úcopysignr&  r«  rç  rè  r7  r±  rÿ  rÄ   r­  re  rÊ  rf  rË  rµ   )r)   r¼  rj  rÙ  r×  Úl3Úl4Úl5ÚbetarÚw360Úw90Úw45rü   rþ  rs  rJ
  r  r¬  Úq1Úq2rH  rI  rü  ÚkappahrÌ  Úcp1Úcp2Úbeta2s                               r*   rØ  ÚShape.draw_sector©:  sª  € ô �v“ˆÜ�e“ˆÙ4ˆÙLˆÙ4ˆÜ—’˜d˜UÓ#ˆÜ�|Š|œDŸMšM¨#¨uÓ5Ó6¸"Ñ=ˆÜ�lŠlœ4Ÿ=š=¨¨UÓ3Ó4ˆØ�A‰gˆÜ�%‹j˜1œtŸw™w™;Ó&Ø‰MˆEô �%‹j˜1œtŸw™w™;Õ&à—‘ 5Ó(Ø�NŠN™b¤(¨5·:±:Ñ+=Ó">Ð?Ñ?�NØ#ŒOÜ�!�Q‹KˆØˆØˆØ‰EˆÜ�!‹fˆà”W‹}ÜÐ6Ó7Ð7à×$Ñ$ VÓ3ˆÜ�%‹jœ3˜s›8Ô#Ø—‘”t—x’x  s¡
Ó+¨cÑ1Ñ1ˆBØ—‘”t—x’x  s¡
Ó+¨cÑ1Ñ1ˆBÜ�b˜"“ˆAØ—‘”t—x’x  s¡
Ó+¨cÑ1´D·H²H¸S³MÑAÑAˆBØ—‘”t—x’x  s¡
Ó+¨cÑ1´D·H²H¸S³MÑAÑAˆBÜ�b˜"“ˆAØœ$Ÿ(š( 3›-Ñ'¨1Ñ,¨qÑ0´3°q¸1±u³:Ñ=ˆFØœS ¡›ZÑ'ˆEØ�q˜1‘u ‘oÑ%ˆCØ�q˜1‘u ‘oÑ%ˆCØ�NŠN™b¤(Ü�S˜4Ÿ:™:Ñ%Ó&¬¨c°D·J±JÑ.>Ó)?Ñ?Ä$ÀqÏ:É:Á~ÓBVÑVó#ð ñ �Nð ‰LˆEØ�C‰KˆDØˆAô# �%‹jœ3˜s›8Ö#ô& ˆu‹:˜ÔØ˜A‘IˆEØ—‘”t—x’x  u¡Ó-°Ñ3Ñ3ˆBØ—‘”t—x’x  u¡Ó-°Ñ3Ñ3ˆBÜ�b˜"“ˆAØ—‘”t—x’x  u¡Ó-°Ñ3´d·h²h¸u³oÑEÑEˆBØ—‘”t—x’x  u¡Ó-°Ñ3´d·h²h¸u³oÑEÑEˆBÜ�b˜"“ˆAàœ$Ÿ(š( 5›/Ñ)¨QÑ.°Ñ2´S¸¸Q¹³ZÑ?ˆFØœS ¡›ZÑ'¨1¬t¯xªx¸«Ñ+>Ñ?ˆEØ�q˜1‘u ‘oÑ%ˆCØ�q˜1‘u ‘oÑ%ˆCØ�NŠN™b¤(Ü�S˜4Ÿ:™:Ñ%Ó&¬¨c°D·J±JÑ.>Ó)?Ñ?Ä$ÀqÏ:É:Á~ÓBVÑVó#ð ñ �Nö Ø�NŠN™b¤(¨5·:±:Ñ+=Ó">Ð?Ñ?�NØ�NŠN™b¤(¨6·J±JÑ+>Ó"?Ð@Ñ@�NØ�NŠN™b¤(¨1¯z©z©>Ó":Ð;Ñ;�NØŒØ�‰Ðr,   NrÓ  c          
     óŠ  • [        U5      nUc‘  U =R                  [        [        [	        UR
                  U R                  -  5      UR                  UR                  /-   5      5      S-   -  sl        U R                  U5        UR                  U l        U R                  $ [        US5      (       aG  US::  d  US:”  a  [        SU S35      e[        UR                  UR                  5      U-  nUS4nSU4nO�[        US5      (       aa  [        U5      S:X  aR  Uu  pxXsR                  -  S4nSXƒR                  -  4n[        Xx5      S::  d  [!        Xx5      S:”  a  [        SU S35      eO[        SU S35      eU R#                  UR                  U-   UR
                  U-
  5      n	U R%                  X“R
                  UR
                  U-   5      n	U R#                  X“R&                  U-
  5      n	U R%                  X“R&                  UR&                  U-
  5      n	U R#                  X“R(                  U-   5      n	U R%                  X“R(                  UR(                  U-
  5      n	U R#                  X“R                  U-   5      n	U R%                  X“R                  UR                  U-   5      U l        U R                  U5        U R                  $ )	a°  Draw a rectangle.

Args:
    radius: if not None, the rectangle will have rounded corners.
        This is the radius of the curvature, given as percentage of
        the rectangle width or height. Valid are values 0 < v <= 0.5.
        For a sequence of two values, the corners will have different
        radii. Otherwise, the percentage will be computed from the
        shorter side. A value of (0.5, 0.5) will draw an ellipse.
z re
r—  r   rS  zbad radius value r   rÏ  r   )r,  rè  r·   r7  rµ   rW  r±  r‰  r2  r¶  r$  rç  r@   rÄ   rÅ  r<   r!  rÆ  rÂ  r%  r9  )
r)   rý   r¿  r%  rD  rà  ÚpyÚrxÚryrd  s
             r*   r_  ÚShape.draw_rectó:  sM  € ô �‹JˆØ‰>Ø�NŠNœi¬Ü�Q—T‘T˜DŸJ™JÑ&Ó'¨1¯7©7°A·H±HÐ*=Ñ=ó)ó àññ �Nð �O‰O˜AÔØŸd™dˆDŒOØ—?‘?Ð"ô �6˜;×'Ñ'Ø˜‹{˜f s›lÜ Ð#4°V°H¸AÐ!>Ó?Ð?Ü�A—G‘G˜QŸX™XÓ&¨Ñ/ˆAØ�Q�ˆBØ�Q�‰BÜ�V˜Y×'Ñ'¬C°«K¸1Ó,<Ø‰FˆBØ—w‘w‘, Ð"ˆBØ�RŸ(™(‘]Ð#ˆBÜ�2‹{˜aÓ¤3 r£;°Ó#4Ü Ð#4°V°H¸AÐ!>Ó?Ð?ð $5ô Ð0°°¸Ð:Ó;Ð;à�^‰^˜AŸD™D 2™I q§t¡t¨b¡yÓ1ˆØ�_‰_˜R§¡ q§t¡t¨b¡yÓ1ˆà�^‰^˜B§¡ r¡	Ó*ˆØ�_‰_˜R§¡ q§t¡t¨b¡yÓ1ˆà�^‰^˜B§¡ r¡	Ó*ˆØ�_‰_˜R§¡ q§t¡t¨b¡yÓ1ˆà�^‰^˜B§¡ r¡	Ó*ˆØŸ/™/¨"¯d©d°A·D±D¸2±IÓ>ˆŒà�‰˜ÔØ�‰Ðr,   c                ó¨   • [        U5      nU R                  UR                  UR                  UR                  UR
                  UR                  /5      $ )zDraw a Quad.)rÐ  rÌ  rù  ro  rp  rq  )r)   rI  r+  s      r*   rÏ  ÚShape.draw_quad&;  s;   € ä�‹JˆØ×!Ñ! 1§4¡4¨¯©¨q¯t©t°Q·T±T¸1¿4¹4Ð"@ÓAÐAr,   c                óÎ  • [        U5      n[        U5      nX!-
  n[        U5      nS[        [        USU-  -  S5      5      -  nUS:  a  [	        S5      eXV-  n[        [        X5      5      nU) n	/ n
[        SU5       HJ  nUS-  S:X  a  [        US5      U-  nOUS-  S:X  a  [        US5      U-  nOM7  U
R                  XÉ-  5        ML     U R                  U/U
-   U/-   5        U$ )z%Draw a zig-zagged line from p1 to p2.rr  r   úpoints too closer   r¨  r   )
r#  r&  r9   rÉ  rÄ   r€  rn  rT  rp   rÌ  )r)   rF  rG  rÝ  rJ
  r  rÈ  ræ  rð  Úi_matrE  rh  r³  s                r*   râ  ÚShape.draw_zigzag+;  só   € ô �2‹YˆÜ�2‹YˆØ‰GˆÜ�!‹fˆØ”#”e˜C 1 w¡;Ñ/°Ó3Ó4Ñ4ˆØ�‹7ÜÐ/Ó0Ð0Ø‰YˆÜœ¨Ó/Ó0ˆØ�ˆØˆÜ�q˜#–ˆAØ�1‰u˜‹zÜ˜!˜R“L 2Ñ%‘Ø�Q‘˜!“Ü˜!˜Q“K "Ñ$‘áØ�M‰M˜!™)Ö$ñ ð 	×Ñ˜B˜4 &™=¨B¨4Ñ/Ô0Øˆ	r,   c                óV  • [        U5      n[        U5      nX!-
  n[        U5      nS[        [        USU-  -  S5      5      -  nUS:  a  [	        S5      eXV-  n[        [        X5      5      nU) n	Sn
/ n[        SU5       HV  nUS-  S:X  a  [        XÊ* 5      U-  nO'US-  S:X  a  [        XÊ5      U-  nO[        US5      U-  nUR                  XÙ-  5        MX     U/U-   U/-   n[        U5      nSnUS-   U:  a/  U R                  X¼   X¼S-      X¼S-      5        US-  nUS-   U:  a  M/  U$ )z#Draw a squiggly line from p1 to p2.rr  r   rð  gh¼?3OP@r   r   r   )r#  r&  r9   rÉ  rÄ   r€  rn  rT  rp   r<   rÂ  )r)   rF  rG  rÝ  rJ
  r  rÈ  ræ  rð  rñ  rò  rE  rh  r³  s                 r*   rÞ  ÚShape.draw_squiggleH;  sI  € ô �2‹YˆÜ�2‹YˆØ‰GˆÜ�!‹fˆØ”#”e˜C 1 w¡;Ñ/°Ó3Ó4Ñ4ˆØ�‹7ÜÐ/Ó0Ð0Ø‰YˆÜœ¨Ó/Ó0ˆØ�ˆØˆàˆÜ�q˜#–ˆAØ�1‰u˜‹zÜ˜!˜R“L 2Ñ%‘Ø�Q‘˜!“Ü˜!“K "Ñ$‘ä˜!˜Q“K "Ñ$�Ø�M‰M˜!™)Ö$ñ ð �˜‘ " Ñ%ˆÜ�&‹kˆØˆØ�!‰e�c‹kØ�O‰O˜F™I v°!©e¡}°fÀ¹U±mÔDØ�‰FˆAð �!‰e�c�kð ˆ	r,   r¢  r½  r   rÝ  r   )r   rö  rÿ   r  r¿  r  ro  r  rß  rN  rÞ  ra  r'  rµ  r¶  rÚ  c          
     ó"
  • [        U5      (       d  g[        U5      [        [        4;  a  UR	                  5       nOUn[        U5      S:”  d  g[        U5      n [        SR                  U5       Vs/ s H  n[        U5      PM     sn5      nUnUR                  S5      (       a  USS  nU R                  R                  UXhUS9n[        U R                   U5      nUS   nUS   nUS   nUS   nUS	   nUS
   nU(       a  X4-  nOUU-
  S::  a  US-  nOUUU-
  -  nUS:”  a   U R                   R#                  UUS-   5      n OUS   n / n!U H2  n"U(       a	  US;  a  S n#OU n#U!R%                  ['        U"U#UU5      5        M4     U!n[)        U	S5      n$[)        U
S5      n%U
(       d  US:X  a  U	n
[)        U	S5      n%[+        U5      n&Un'U'S-  S:w  a  [-        S5      eU'S:  a  U'S-  n'U'S:  a  M  U'S-  n'S n(S n)Sn*Sn+Sn,U R.                  n-U R0                  n.U&(       ak  [3        SSSSUS   R4                  U R4                  -   U-US   R6                  -
  U R6                  -
  5      n/U/) US   -  U/-  n0[9        [;        U05      5      S-   n1OSn1U-UR6                  -
  U R6                  -
  n2UR4                  U R4                  -   n3U2n4U'S:X  aJ  U-UR6                  -
  U R6                  -
  n3UR4                  * U R4                  -
  n2U1U*-  n1U.[=        U25      -
  n4O±U'S:X  aG  U-* UR6                  -   U R6                  -   n3UR4                  U R4                  -   n2U1U+-  n1[=        U25      n4OdU'S:X  a^  UR4                  * U R4                  -
  n3U-* UR6                  -   U R6                  -   n2U1U,-  n1[=        UR6                  U R6                  -   5      n4U R                  R?                  U5      n5U5b	  SU5 S3n6Sn7OS=n6n7U R                  RA                  UUS 9n8U8c  Sn8OSU8 S!3n8U(" U6U8U1U3U2UU5      n9US:”  a/  U9U S"3-  n9U9[9        XÃ-  5      S#-   -  n9Ub  U9[9        U5      S$-   -  n9U	b  U9U$-  n9U
b  U9U%-  n9U9US   -  n9Sn:[        U5      S:”  a  U9U)" U5      -  n9OU9S%-  n9[C        S[        U5      5       H+  n;U4U:  a    O$U;S:”  a  U9S&-  n9U9UU;   S%-   -  n9U4U-  n4U:S-  n:M-     U9S'U7 S(3-  n9U =RD                  U9-  sl"        U:$ s  snf ! [         a    [        5          gf = f))Nr   r´   rU	  r   ©rÿ   r  r  r¿  rÝ  r  r   r  r  rR  r  r'  ©r&  r%  rö  r  rî  rÓ  rí  c                óP   • SU  U SU S[        X445       SU S[        U5       S3$ )NrŒ  úBT
ú1 0 0 1 z Tm
/r´   ú Tf rÒ  ©r!   r  rö  rD  ri  r  rz  s          r*   r«
  Ú#Shape.insert_text.<locals>.<lambda>Î;  s@   € ¨u°Q°C¸°s¸$¸q¸cÀÌ)ÐUVÐTZÓJ[ÐI\Ð\bÐcdÐbeÐefÔgpÐqrÓgsÐftÐtxÑ-yr,   c                ó    • S[        U 5       S3$ )NzTJ
0 -z TD
rÒ  ©r!   s    r*   r«
  rý  Ï;  s   € ˜W¤Y¨q£\ N°%Ñ8r,   ú0 1 -1 0 0 0 cm
ú0 -1 1 0 0 0 cm
ú-1 0 0 -1 0 0 cm
ú cm
ra   r=  r…  ú/OC /ú BDC
úEMC
r¿  rÀ  ú Tr ú w ú M ÚTJz
T* z
ET
úQ
)#ré   rÉ   rµ   r¶   r  r<   r#  r!  r  r  rl   r{   r8   r×   r¯  r(  r2  r3  rp   ÚgetTJstrrý  Ú
CheckMorphrÄ   r2  r‰  r€  re  rf  r·   r7  r&  rv  rÞ  rT  r²  )<r)   rj  rù	  r   rö  rÿ   r  r¿  r  ro  r  rß  rN  rÞ  ra  r'  rµ  r¶  rÚ  r   rö  Úmaxcoder2  r  r.  r-  rÝ  r  rÛ  r  r  Úlheightr'  ÚtabrÃ  rz  Ú	color_strÚfill_strÚmorphingr|  Útempl1Útempl2Úcmp90Úcmm90Úcm180r2  r‰  rÒ  r�  r·  rÛ
  rH  ÚspaceÚoptcontÚbdcÚemcró  r»  Únlinesrh  s<                                                               r*   rŸ  ÚShape.insert_textp;  s€  € ô0 �F�|‰|Øä�‹<¤¤e˜}Ó,Ø×$Ñ$Ó&‰DàˆDä�4‹y˜1‹}Øä�e“ˆð	Ü¨3¯8©8°D¬>Ó:ª> aœ3˜qž6©>Ñ:Ó;ˆGð ˆØ×Ñ˜C× Ñ Ø˜!˜"�IˆEà�y‰y×$Ñ$Ø XÈZð %ð 
ˆô ! §¡¨4Ó0ˆà˜A‘;ˆØ˜JÑ'ˆØ˜(Ñ#ˆØ˜&Ñ!ˆØ˜JÑ'ˆØ˜[Ñ)ˆ	ÞØÑ+‰GØ˜	Ñ! QÓ&Ø ‘n‰Gà (¨YÑ"6Ñ7ˆGà�S‹=Ø—X‘X×-Ñ-¨d°G¸a±KÓ@‰Fà˜hÑ'ˆFàˆÛˆAÞ˜&Ð(BÓBØ‘à�Ø�J‰J”x  1 f¨hÓ7Ö8ñ ð ˆä˜e SÓ)ˆ	Ü˜T 3Ó'ˆÞ˜ qÓ(ØˆDÜ  ¨Ó,ˆHä˜eÓ$ˆØˆØ�‰8�q‹=ÜÐ/Ó0Ð0à�A‹gØ�3‰JˆCð �A�gà�C‰iˆáyˆÙ8ˆØ#ˆØ#ˆØ$ˆØ—‘ˆØ—
‘
ˆö Ü˜˜1˜a  E¨!¡H§J¡J°·±Ñ$7¸À%ÈÁ(Ç*Á*Ñ9LÈtÏvÉvÑ9UÓVˆBØ�#˜˜a™‘. 2Ñ%ˆCÜœ8 C›=Ó)¨GÑ3‰BàˆBØ�u—w‘wÑ §¡Ñ'ˆØ�w‰w˜Ÿ™ÑˆØˆà�"‹9Ø˜EŸG™GÑ# d§f¡fÑ,ˆDØ—7‘7�(˜TŸV™VÑ#ˆCØ�%‰KˆBØœC ›HÑ$‰Eð �C‹ZØ�7˜UŸW™WÑ$ t§v¡vÑ-ˆDØ—'‘'˜DŸF™FÑ"ˆCØ�%‰KˆBÜ˜“H‰Eð �C‹ZØ—G‘G�8˜dŸf™fÑ$ˆDØ�'˜EŸG™GÑ# d§f¡fÑ,ˆCØ�%‰KˆBÜ˜Ÿ™ $§&¡&Ñ(Ó)ˆEð —)‘)×1Ñ1°"Ó5ˆØÑØ˜'˜ &Ð)ˆCØ‰CàˆNˆC�#à—	‘	×&Ñ&¨.¸\Ð&ÐJˆØ‰=Ø‰Eà˜�w˜eÐ$ˆEÙ�c˜5 " d¨C°¸ÓAˆà˜‹?Ø�{�m 4Ð(Ñ(ˆDØ”I˜lÑ5Ó6¸Ñ>Ñ>ˆDØÑ&Øœ	 +Ó.°Ñ6Ñ6�ØÑØ�IÑˆDØÑØ�HÑˆDð
 	��Q‘‰ˆØˆÜˆt‹9�q‹=Ø‘F˜7“OÑ#‰Dà�D‰LˆDÜ�qœ#˜d›)Ö$ˆAØ�w‹ÙØ�1‹uØ˜‘�Ø�D˜‘G˜d‘NÑ"ˆDØ�WÑˆEØ�a‰KŠFñ %ð 	�&˜˜˜SÐ!Ñ!ˆð 	�Š˜$Ñ�Øˆùòg ;øÜó 	ÜÔÙð	ús$   ÁS7 Á2S2ÂS7 Ó2S7 Ó7TÔT)r  rN  ro  r  râ  r¶  r  r  rÿ   r   rö  rÞ  r'  rÚ  rß  ra  r¿  rµ  c          
     ó@  ^^P^Q• [        U5      nUR                  (       d  UR                  (       a  [        S5      e[	        US5      n[	        U	S5      nU	c  US:X  a  Un	[	        US5      nU R
                  R                  U5      nUb	  SU S3nSnOS	=nnU R
                  R                  UUS
9nUc  S	nOSU S3nUS-  S:w  a  [        S5      eUnUS:  a  US-  nUS:  a  M  US-  n[        U5      (       d  US;   a  UR                  $ UR                  $ SnSnSnU R                  nUn U R                  S5      (       a  U SS n U R
                  R                  U X¦US9n![        U R                  U!5      n"U"S   n#U#S   mQU#S   n$U#S   mPU#S   n%U#S   n&U#S   n'U(       a  Un(OU&U'-
  S::  a  Sn(OU&U'-
  n(TU(-  n)[        U5      [         ["        4;   a  SR%                  U5      n*OUn*['        U* V+s/ s H  n+[)        U+5      PM     sn+5      n,U$(       a9  U,S:”  a3  S	R%                  U* V+s/ s H  n+[)        U+5      S:  a  U+OS PM     sn+5      n*U*R+                  5       n*U R                  R-                  U!U,S-   5      mPU$(       a	  U%S!;  a  Sn-OTPn-UUPUQ4S" jn.TQS:  a  TPS#   S   T-  n/OTn/S	n0[/        U5      (       au  [1        SSSSUS   R2                  U R2                  -   U R                  US   R4                  -
  U R4                  -
  5      n1U1) US   -  U1-  n2[7        [9        U25      5      S$-   n3OS	n3Sn4[;        STU&-  5      n5US:X  a(  UR<                  U5-   n6UR                  n7UR                  n8OÅUS:X  a<  [;        TU&-  S5      n5UR>                  U5-   n6UR                  n7UR                  n8U3U-  n3OƒUS%:X  a?  [;        STU&-  5      * n5UR@                  U5-   n6UR                  n7S&n4UR                  n8U3U-  n3O>[;        TU&-  S5      * n5URB                  U5-   n6UR                  n7S&n4UR                  n8U3U-  n3/ n9[E        U*5       GHa  u  n:n;U;RG                  U5      RI                  S'5      n<[K        U<5      n=S	n>U7n?[M        U=5       H×  n@U<U@   nAU." UA5      nBU?UB:¼  a  U>WAS'-   -  n>U?WBU/-   -  n?M(  U>(       a)  U>RO                  5       S-   n>U0U>-  n0U9RQ                  S(5        S	n>U7n?WBU7::  a  WAS'-   n>U7WB-
  U/-
  n?Mq  [K        U95      S:”  a  S)U9S&'   WA H<  n+U." U>5      U7U." U+5      -
  ::  a  U>U+-  n>M  U>S-  n>U0U>-  n0U9RQ                  S)5        U+n>M>     U>S'-  n>U7U." U>5      -
  n?MÙ     U>(       a$  U0U>RO                  5       -  n0U9RQ                  S)5        U:[K        U*5      S-
  :  d  GM\  U0S-  n0GMd     U0RS                  S5      (       a  U0SS& n0U0RU                  S5      S-   nCU)UC-  U'T-  -
  nDUDU8-
  nEUE[V        :”  a  S&WE-  $ [Y        WE5      nEUE[V        :  a  SnES*U U S+3U3-   nFS, nGU0R+                  5       nHS)U9S&'   [E        UH5       GH#  u  n:nISnJU7U." UI5      -
  nKU6U5U:U(-  -  -   nLUS:X  a2  US;   a  WL[;        WKS--  S5      U4-  -   nLOwWL[;        SWKS--  5      U4-  -
  nLOaUS-:X  a,  US;   a  WL[;        WKS5      U4-  -   nLOBWL[;        SWK5      U4-  -
  nLO/US.:X  a)  WIRU                  S'5      nMUMS:”  a  U9U:   (       a  WKWM-  nJOSnJUWLR4                  -
  U R4                  -
  nNULR2                  U R2                  -   nOUS:X  a7  UWLR4                  -
  U R4                  -
  nOULR2                  * U R2                  -
  nNOzUS/:X  a7  U* WLR4                  -   U R4                  -   nOULR2                  U R2                  -   nNO=US%:X  a7  WLR2                  * U R2                  -
  nOU* ULR4                  -   U R4                  -   nNWFWG" WOWNU T5      -  nFUS:”  a0  WFU S03-  nFUF[7        UT-  5      S1-   -  nFUb  WF[7        U5      S2-   -  nFUS.:X  a  WF[7        WJ5      S3-   -  nFUb  WFU-  nFU	b  WFU-  nFWF[[        WIU-U$TQ5       S43-  nFGM&     WFS5U S63-  nFU =R\                  UF-  sl.        U R_                  U5        WE$ s  sn+f s  sn+f )7aÁ  Insert text into a given rectangle.

Args:
    rect -- the textbox to fill
    buffer -- text to be inserted
    fontname -- a Base-14 font, font name or '/name'
    fontfile -- name of a font file
    fontsize -- font size
    lineheight -- overwrite the font property
    color -- RGB stroke color triple
    fill -- RGB fill color triple
    render_mode -- text rendering control
    border_width -- thickness of glyph borders as percentage of fontsize
    expandtabs -- handles tabulators with string function
    align -- left, center, right, justified
    rotate -- 0, 90, 180, or 270 degrees
    morph -- morph box with a matrix and a fixpoint
Returns:
    unused or deficit rectangle area (float)
z%text box must be finite and not emptyrö  r  Nr   r  r  r  ra   r¿  rU	  rÀ  rî  zrotate must be multiple of 90rí  r„  r   r  r  r   rö  rÝ  r  r'  r   r  r  rR  r&   r  rÓ  Ú?r÷  c           	     ó’   >• TS:  a.  [        U  Vs/ s H  nT[        U5         S   PM     sn5      T-  $ [        U 5      T-  $ s  snf )zCalculate pixel length of x.r   r   )r®  r  r<   )re  rö  r   r'  rÝ  s     €€€r*   ÚpixlenÚ$Shape.insert_textbox.<locals>.pixlen±<  sJ   ø€ à˜!‹|Ü±qÓ9²q°!˜F¤3 q£6™N¨1Ô-±qÑ9Ó:¸XÑEÐEä˜1“v Ñ(Ð(ùò :s   ‘Aé    r  r…  r¨  r´   TFrŒ  rù  c                ó@   • S[        X45       SU S[        U5       S3$ )Nrú  z Tm /r´   rû  rÒ  )r!   r  rö  rD  s       r*   r«
  Ú&Shape.insert_textbox.<locals>.<lambda>6=  s'   €  X¬i¸¸Ó.?Ð-@ÀÀaÀSÈÌ)ÐTUË,ÈÐW[Ñ#\r,   r   r   r=  r  r  r	  z Tw zTJ
zET
r  )0r,  r�  r€  rÄ   rý  r×   rv  rÞ  ré   r2  r‰  r8   r¯  r(  r2  rÉ   rµ   r¶   r  r!  r  r  r3  r  r€  re  rf  r·   r7  r#  r$  rW  r%  r9  rY  râ  r;   r<   rT  r'   rp   r  rÊ  rÿ  r&  r  r²  r¶  )Rr)   rý   rù	  r  rN  ro  r  râ  r¶  r  r  rÿ   r   rö  rÞ  r'  rÚ  rß  ra  r¿  rµ  r  r  r  r  r  ró  r|  r  r  r  r2  r2  r  r.  r-  r  rÛ  r  r  Úlheight_factorr  rß
  rö  r  Ú	tj_glyphsr"  Úblenr   rÒ  r�  r·  ÚprogrÚc_pntrj  ÚmaxwidthÚ	maxheightÚjust_tabrh  rt   Úline_tÚ	num_wordsÚlbuffr  r�  ÚwordÚpl_wÚlb_countÚtext_heightÚmorer»  ÚtemplÚtext_trÃ  rò  Úplr  ÚspacesrÛ
  rH  r'  rÝ  sR               `                                                                   @@r*   ra  ÚShape.insert_textbox-<  s?	  ú€ ôX �D‹zˆØ�=�=˜D×,×,ÜÐDÓEÐEä˜e SÓ)ˆ	Ü˜T 3Ó'ˆØ‰<˜K¨1Ó,ØˆDÜ  ¨Ó,ˆHà—)‘)×1Ñ1°"Ó5ˆØÑØ˜'˜ &Ð)ˆCØ‰CàˆNˆC�#ð —	‘	×&Ñ&¨.¸\Ð&ÐJˆØ‰=Ø‰Eà˜�w˜eÐ$ˆEà�B‰;˜!ÓÜÐ<Ó=Ð=àˆØ�A‹gØ�3‰JˆCð �A�gà�C‰iˆô �F�|‰|Ø"%¨£/�4—;‘;ÐA°t·z±zÐAà#ˆØ#ˆØ$ˆØ—‘ˆàˆØ×Ñ˜C× Ñ Ø˜!˜"�IˆEà�y‰y×$Ñ$Ø XÈZð %ð 
ˆô ! §¡¨4Ó0ˆà˜A‘;ˆØ˜JÑ'ˆØ˜(Ñ#ˆØ˜(Ñ#ˆØ˜&Ñ!ˆØ˜JÑ'ˆØ˜[Ñ)ˆ	æØ'‰NØ˜	Ñ! QÓ&Ø ‰Nà%¨	Ñ1ˆNØ˜^Ñ+ˆô �‹<œD¤%˜=Ó(Ø—‘˜6Ó"‰BàˆBä¡rÓ*¢r !”s˜1–v¡rÑ*Ó+ˆæ�g “mØ—‘¹bÓAºb¸œs 1›v¨›|™!°Ò4¹bÑAÓBˆBà�]‰]‹_ˆà—‘×)Ñ)¨$°¸!±Ó<ˆÞ�fÐ$>Ó>Ø‰IàˆI÷
	)ð �a‹<Ø˜"‘:˜a‘= 8Ñ+‰DàˆDàˆä�e×ÑÜØ�1�a˜˜E !™HŸJ™J¨¯©Ñ/°·±¸uÀQ¹x¿z¹zÑ1IÈDÏFÉFÑ1RóˆBð �#˜˜a™‘. 2Ñ%ˆCÜœ8 C›=Ó)¨GÑ3‰BàˆBð
 ˆÜ�a˜ HÑ,Ó-ˆØ�!‹8Ø—G‘G˜e‘OˆEØ—z‘zˆHØŸ™‰Ià�B‹YÜ˜( XÑ-¨qÓ1ˆEØ—G‘G˜e‘OˆEØ—{‘{ˆHØŸ
™
ˆIØ�%‰K‰Bà�C‹Zä˜1˜h¨Ñ1Ó2Ð2ˆEØ—G‘G˜e‘OˆEØ—z‘zˆHØˆEØ—{‘{ˆIØ�%‰K‰Bô ˜8 hÑ.°Ó2Ð2ˆEØ—G‘G˜e‘OˆEØ—{‘{ˆHØˆEØŸ
™
ˆIØ�%‰KˆBð
 ˆä  —}‰GˆAˆtØ—_‘_ ZÓ0×6Ñ6°sÓ;ˆFÜ˜F›ˆIØˆEØˆDô ˜9Ö%�Ø˜a‘y�Ù˜d“|�Ø˜4“<Ø˜T C™ZÑ'�EØ˜D 4™KÑ'�DÙö Ø!ŸL™L›N¨TÑ1�EØ˜E‘M�DØ—O‘O DÔ)à�Ø�à˜8Ó#Ø  3™J�EØ# d™?¨TÑ1�DÙô �x“= 1Ó$Ø#(�H˜R‘LÛ�AÙ˜e“}¨±6¸!³9Ñ(<Ó<Ø ™
šà ™˜Ø ™˜Ø Ÿ™¨Ô.Ø !šñ ð ˜‘�Ø¡&¨£-Ñ/’ñG &öJ Ø˜Ÿ™›Ñ&�Ø—‘ Ô&à”3�r“7˜Q‘;ŽØ˜‘“ñe %ðj �=‰=˜×ÑØ˜˜�9ˆDØ—:‘:˜dÓ# aÑ'ˆð  Ñ(¨9°xÑ+?Ñ?ˆà˜YÑ&ˆØ”'‹>Ø˜$‘;Ðä�4‹yˆØ”'‹>ØˆDØ�s�e˜E˜7 $Ð'¨"Ñ,ˆÙ\ˆà—‘Ó"ˆØˆ�‰Ü˜f×%‰DˆAˆqØˆGØ™F 1›IÑ%ˆBØ˜% 1 ~Ñ#5Ñ6Ñ6ˆCØ˜‹zØ˜(“?Ø¤ b¨1¡f¨aÓ 0°5Ñ 8Ñ8‘Cà¤ a¨¨a©Ó 0°5Ñ 8Ñ8‘CØ˜!“Ø˜(“?Ø¤ b¨!£¨uÑ 4Ñ4‘Cà¤ a¨£¨uÑ 4Ñ4‘CØ˜!“ØŸ™ ›�Ø˜A“: (¨1§+Ø  6™k‘Gà�GØ˜3Ÿ5™5‘. 4§6¡6Ñ)ˆCØ—5‘5˜4Ÿ6™6‘>ˆDØ�b‹yØ §¡‘~¨¯©Ñ.�Ø—u‘u�f˜tŸv™v‘o‘Ø˜“Ø�w §¡‘¨¯©Ñ/�Ø—e‘e˜dŸf™f‘n‘Ø˜“ØŸ™�v §¡‘�Ø�g §¡‘o¨¯©Ñ.�à‘E˜$  U¨HÓ5Ñ5ˆDà˜Q‹Ø˜;˜- tÐ,Ñ,�Øœ	 ,°Ñ"9Ó:¸UÑBÑB�ØÑ*ØœI kÓ2°UÑ:Ñ:�Dà˜‹zØœ	 'Ó*¨VÑ3Ñ3�àÑ Ø˜	Ñ!�ØÑØ˜Ñ �Ø”x  9¨f°hÓ?Ð@ÀÐEÑE‹Dñ_ &ðb 	�$�s�e˜3�Ñˆà�Š˜$Ñ�Ø�‰˜ÔØˆùò] +ùò Bs   Ç1bÈ)bc           
     ó¶  • U R                   S:X  a  gUS:X  a  SnOUc  Sn[        US5      n[        US5      nU R                  R                  U5      nUb  SU S3U R                   -   U l         SnOSnU R                  R	                  XºS	9nUb  S
U S3U R                   -   U l         US:w  a'  US:w  a!  U =R                   [        U5      S-   -  sl         US:w  a  U S3U R                   -   U l         US:w  a  U S3U R                   -   U l         US;  a  U S3U R                   -   U l         U	(       a  U =R                   S-  sl         SU l        Ub  U =R                   U-  sl         Ub~  U =R                   U-  sl         Ub3  U(       d  U =R                   S-  sl         O^U =R                   S-  sl         OHU(       d  U =R                   S-  sl         O+U =R                   S-  sl         OU =R                   S-  sl         U =R                   U-  sl         [        U5      (       a†  [        SSSSUS   R                  U R                  -   U R                  US   R                  -
  U R                  -
  5      nU) US   -  U-  n[        [        U5      5      S-   U R                   -   U l         U =R                  SU R                   -   S-   -  sl        SU l         SU l        g)z¼Finish the current drawing segment.

Notes:
    Apply colors, opacity, dashes, line style and width, or
    morphing. Also whether to close the path
    by connecting last to first point.
ra   Nr   rö  r  r  r  r  r¿  rU	  rÀ  r   ú w
z J
z j
)Nra   ú[] 0z d
zh
zB
zB*
zf
zf*
zS
r  rŒ  r  )rè  rý  r×   rv  rÞ  r·   rç  r  r€  re  r2  rf  r7  r³  )r)   r‰  ro  r  r²  r³  r‹  r  r'  r´  r¶  rµ  rÚ  r  r  r  r  ró  rÒ  r�  s                       r*   r`  ÚShape.finishq=  s„  € ð, �>‰>˜RÓØà�A‹:Ø‰EØ‰]ØˆEô ˜e SÓ)ˆ	Ü˜T 3Ó'ˆà—)‘)×1Ñ1°"Ó5ˆØÑØ$ W I¨VÐ4°t·~±~ÑEˆDŒNØ‰CàˆCà—	‘	×&Ñ&¨.Ð&ÐJˆØÑØ    uÐ-°·±Ñ>ˆDŒNà�A‹:˜% 1›*Ø�NŠNœi¨Ó.°Ñ7Ñ7�Nà�a‹<Ø '˜y¨Ð-°·±Ñ>ˆDŒNØ�q‹=Ø (˜z¨Ð.°·±Ñ?ˆDŒNàÐ+Ó+Ø &˜x t˜_¨t¯~©~Ñ=ˆDŒNæØ�NŠN˜eÑ#�NØ"ˆDŒOàÑØ�NŠN˜iÑ'�NàÑØ�NŠN˜hÑ&�NØÑ ÞØ—N’N eÑ+–Nà—N’N fÑ,–NæØ—N’N eÑ+–Nà—N’N fÑ,–Nà�NŠN˜eÑ#�Nà�Š˜#Ñ�Ü�e×ÑÜØ�1�a˜˜E !™HŸJ™J¨¯©Ñ/°·±¸uÀQ¹x¿z¹zÑ1IÈDÏFÉFÑ1RóˆBð �#˜˜a™‘. 2Ñ%ˆCÜ&¤x°£}Ó5¸Ñ?À$Ç.Á.ÑPˆDŒNà�Š˜' D§N¡NÑ2°UÑ:Ñ:�ØˆŒØˆŒØr,   c                óà  • [        U R                  5        U =R                  U R                  -  sl        U R                  R	                  5       U l        U R                  (       ag  U(       a  U R                  R                  5         [        R                  U R                  SU5      nU R                  R                  X R                  5        SU l
        SU l        SU l        SU l        SU l        g)z†Update the page's /Contents object with Shape data.

The argument controls whether data appear in foreground (default)
or background.
r  Nra   )rp  r×   r³  r²  rþ  rŒ  r  r?  r2  rR
  rç  rý   rè  )r)   r£  r  s      r*   rb  ÚShape.commitÌ=  s¡   € ô 	�D—I‘IÔØ�Š˜$Ÿ.™.Ñ(�ØŸ™×.Ñ.Ó0ˆŒà�>�>ÞØ—	‘	×'Ñ'Ô)ä×)Ñ)¨$¯)©)°T¸7ÓCˆDà�H‰H×"Ñ" 4¯©Ô8àˆŒØˆŒ	ØˆŒØˆŒØˆ�r,   )r2  rè  r2  r±  rç  r×   r°  rý   r²  r³  r‰  re  rf  r°  )rF  r»   rG  r»   r«  r#  )rE  rµ   r«  r#  )
rF  r»   rG  r»   r¸  r»   r¹  r»   r«  r#  )rÂ  z"typing.Union[quad_like, rect_like]r«  r#  )r¼  r»   r¿  rœ  r«  r#  )rF  r»   rG  r»   r¸  r»   r«  r#  r&  )
r¼  r»   rj  r»   rÙ  rœ  r×  ré   r«  r#  )rý   r½   r«  r#  )rI  r¼   r«  r#  )r   )rF  r»   rG  r»   rÝ  rœ  r«  r#  )&rj  r»   rù	  re  r   rœ  rö  rv  rÿ   rè  r  ru  r¿  ré   r  r9   ro  rw  r  rw  rß  r9   rN  rœ  rÞ  rœ  ra  r9   r'  rw  rµ  rœ  r¶  rœ  rÚ  r9   r«  r9   )*rý   r½   rù	  re  r  r9   rN  rœ  ro  rw  r  r9   râ  r9   r¶  rœ  r  rw  r  ru  rÿ   ru  r   rœ  rö  rv  rÞ  rœ  r'  rw  rÚ  r9   rß  r9   ra  r9   r¿  ré   rµ  rœ  r«  rœ  )r   rq  Nr   r   NFNTr   r   r   )r‰  rœ  ro  rw  r  rw  r²  r9   r³  r9   r‹  ru  r  ré   r'  rw  r´  ré   r¶  rœ  rµ  rœ  rÚ  r9   r«  r²  )r£  ré   r«  r²  )r2   r3   r4   r5   r*  rz  r­  r‘   r¶  rÆ  rÌ  r·  rÉ  r¾  rÂ  rØ  r_  rÏ  râ  rÞ  rŸ  ra  r`  rb  r6   r/   r,   r*   r  r  :  s0  † Ùàñó ðô&ò(7ô*ôðàðð ðð ð	ð
 ðð 
ôô.ô0Cð0àð0ð ð0ð ð	0ð
 
ô0ð(  ðHàðHð ðHð ð	Hð
 ðHð 
õHðT 48÷ 1ôfBð ð	àðð ðð ð	ð
 
õðB ð	#àð#ð ð#ð
 
õ#ðZ Ø#ØØØØØØØØ"ØØØØ !ØØñ)xàðxð (ðxð
 ðxð ðxð ðxð ðxð ðxð ðxð ðxð ðxð ðxð ðxð ðxð  ð!xð" ð#xð$ ð%xð& ð'xð( ð)xð* 
õ+xðD Ø"ØØØØØØØ!ØØ#ØØØØØØØ !ñ-BàðBð (ðBð
 ðBð ðBð ðBð ðBð ðBð ðBð ðBð ðBð ðBð ðBð ðBð  ð!Bð" ð#Bð$ ð%Bð& ð'Bð( ð)Bð* ð+Bð, ð-Bð. 
õ/BðL
 ØØØØØØØØØØ !ØðYàðYð ðYð ð	Yð
 ðYð ðYð ðYð ðYð ðYð ðYð ðYð ðYð ðYð 
õY÷vñ r,   r  c                  óæ   • \ rS rSrSS jrS r\S 5       r\S 5       r	S r
SS jrSS	 jrSS
 jrS rSS jr\SS j5       r\SS j5       rSS jr " S S5      rSS jrSS jrSS jrSS jrSrg)rÁ  iå=  Nc                óŠ  • [         R                  " UR                  S5      5      nU(       a   [        U[        5      (       d  [	        U5      nU(       a  UR
                  O[         R                  " S 5      n[        [         S5      (       a  [         R                  " XRX65      U l        g [         R                  " XRX65      U l        g )Nr  ÚFzStoryS)
r£   rã  rþ  rC   r|  rÅ   Ú	FzArchiver@   rD  ÚFzStory)r)   r·  r¸  Úemr³  r5  Úarchs          r*   r‘   ÚStory.__init__ç=  s{   € Ü×6Ò6¸¿¹ÀGÓ8LÓMˆÞœ: g¬w×7Ñ7Ü˜gÓ&ˆGÞ&ˆw�|Š|¬E¯OªO¸TÓ,BˆÜ”5˜*×%Ñ%ÜŸš¨¸2ÓDˆD�IäŸš w¸"ÓCˆD�Ir,   c                óP  • U R                   nSnUR                  SSS5      nU(       a~  UR                  n[        U5      S:X  aF  US   S:X  a=  US   S;   a4  UR	                  S5      nU(       d  SU 3nUR                  SU5        US-  nUR                  SSS5      nU(       a  M}  gg)	z\
Look for `<h1..6>` items in `self` and adds unique `id`
attributes if not already present.
r   Nr   r!  r   Ú123456r[  Úh_id_)r  r§   rí  r<   r  r  r…  )r)   Údomrh  re  r   ÚattrÚid_s          r*   Úadd_header_idsÚStory.add_header_idsñ=  sž   € ð
 �i‰iˆØˆØ�H‰H�T˜4 Ó&ˆÞØ—9‘9ˆDÜ�4‹y˜A‹~ $ q¡'¨3£,°4¸±7¸hÓ3FØ×,Ñ,¨TÓ2�ÞØ! ! ˜+�Cà—O‘O D¨#Ô.Ø˜‘F�AØ—‘˜D $¨Ó-ˆA÷ Šar,   c                óæ  • [        U [        5      (       a  U nO[        SU 5      n[        5       nU HL  nUR                  S-  (       d  M  UR                  (       d  M,  UR                  U;   a  M>  XCUR                  '   MN     U GH1  nUR                  S-  (       d  M  UR
                  (       d  M-  [        5       n[        UR                  5      US'   UR
                  R                  S5      (       aN  UR
                  SS n X7   n [        US'   UR                  u  p«pÍ[        X«5      US	'   UR                   S-
  US
'   OTUR
                  R                  S5      (       a  ["        US'   UR
                  SS US'   O[$        US'   UR
                  US'   X%R                   S-
     R'                  U5        GM4     U$ ! [         a+  n	[        S:”  a
  [        5         [        SU SU 35      U	eSn	A	ff = f)aF  
Adds links to PDF document.
Args:
    document_or_stream:
        A PDF `Document` or raw PDF content, for example an
        `io.BytesIO` instance.
    positions:
        List of `ElementPosition`'s for `document_or_stream`,
        typically from Story.element_positions(). We raise an
        exception if two or more positions have same id.
Returns:
    `document_or_stream` if a `Document` instance, otherwise a
    new `Document` instance.
We raise an exception if an `href` in `positions` refers to an
internal position `#<name>` but no item in `positions` has `id =
name`.
rb  r   r   r)  NzNo destination with id=z, required by position_from: r  r  r×   zname:r   r   r  )rC   rÂ   r:   Ú
open_closer[  r8  r,  rý   r8   rl   r  r{   rß   r(   r	  r#  Úpage_numrB  r  rA  )Údocument_or_streamÚ	positionsrÊ   Úid_to_positionÚpositionÚposition_fromrš  Ú	target_idÚposition_tori  r°  r²  r¯  r±  s                 r*   Úadd_pdf_linksÚStory.add_pdf_links>  sç  € ô& Ð(¬(×3Ñ3Ø)‰Hä Ð'9Ó:ˆHô
 ›ˆã!ˆHà×#Ñ# a×'Ñ'¨X¯[¯[©[à—;‘; .Ó0áà3; H§K¡KÓ0ñ "ô 'ˆMà×(Ñ(¨1×,Ñ,°-×2D×2DÑ2Dô “v�Ü# M×$6Ñ$6Ó7��V‘à ×%Ñ%×0Ñ0°×5Ñ5à -× 2Ñ 2°1°2Ð 6�IðEØ&4Ñ&@˜ð ô
 $-�D˜‘LØ%0×%5Ñ%5‘N�B˜Bô "' r£�D˜‘JØ#.×#7Ñ#7¸!Ñ#;�D˜’Lð %×)Ñ)×4Ñ4°W×=Ñ=Ü'1˜˜V™Ø'4×'9Ñ'9¸!¸"Ð'=˜˜Všä'/˜˜V™Ø&3×&8Ñ&8˜˜U™ð ×/Ñ/°!Ñ3Ñ4×@Ñ@À×FñQ 'ðT ˆøô; %ó EÜ/°!Ó3¼Ô8HÜ*Ð-DÀYÀKÐOlÐmzÐl{Ð+|Ó}ð  DEð  EûðEús   ÄF;Æ;
G0Ç&G+Ç+G0c                óB   • U R                  5       nUR                  5       $ r.   )rÊ   rf  ©r)   rM  s     r*   r  Ú
Story.bodyY>  s   € à�m‰m‹oˆØ�{‰{‹}Ðr,   c                óX   • [         R                  " U R                  5      n[        U5      $ r.   )r£   Úfz_story_documentrÅ   rØ  r_  s     r*   rÊ   ÚStory.document^>  s    € Ü×%Ò% t§y¡yÓ1ˆÜ�C‹yÐr,   c                ó®   • [        U5      nU(       a  UR                  O[        R                  " S 5      n[        R                  " U R                  XC5        g r.   )rê  rÅ   r£   rK  Úfz_draw_story)r)   rS  rð  Úctm2r…  s        r*   ÚdrawÚ
Story.drawb>  s6   € Ü  &Ó)ˆÞ#ˆf�kŠk¬¯ª¸Ó)>ˆÜ×Ò˜TŸY™Y¨Õ2r,   c                ó†  ^^• [        T5      [        L aN  TR                  5        H9  n[        U5      [        L a  UR	                  5       (       a  M,  [        SU S35      e   O0 m[        T5      (       a  TR                  R                  S:w  a  [        S5      eUU4S jn[        R                  " U R                  U5        g)zE
Trigger a callback function to record where items have been placed.
zinvalid key 'rî   r   z@callback 'function' must be a callable with exactly one argumentc                ó²  >•  " S S5      nU" 5       nU R                   Ul         U R                  Ul        U R                  Ul        [        U R                  5      Ul        U R
                  Ul        U R                  Ul        U R                  Ul        U R                  Ul	        T(       a%  TR                  5        H  u  p4[        X#U5        M     T" U5        g )Nc                  ó   • \ rS rSrSrg)Ú=Story.element_positions.<locals>.function2.<locals>.Position2iu>  r/   N©r2   r3   r4   r5   r6   r/   r,   r*   Ú	Position2rl  u>  s   † Úr,   rn  )r/	  Úheadingr[  rq  rý   r   rS  Úrectangle_numÚrect_numr8  rG   Úsetattr)rX  rn  Ú	position2rò  rK   r  rn   s        €€r*   Ú	function2Ú*Story.element_positions.<locals>.function2t>  s¡   ø€ ÷ñ á!›ˆIØ&Ÿn™nˆIŒOØ (× 0Ñ 0ˆIÔØ#Ÿ;™;ˆIŒLÜ,¨X¯]©]Ó;ˆIŒNØ%Ÿ]™]ˆIŒNØ#+×#6Ñ#6ˆIÔ Ø!)×!7Ñ!7ˆIÔØ%Ÿ]™]ˆIŒNÞØ ŸJ™JžL‘D�AÜ˜Y¨1Ö-ñ )á�iÕ r,   N)rÉ   r:   r{  rè  ÚisidentifierrÄ   rÿ  Ú__code__Úco_argcountr£   Úfz_story_positionsrÅ   )r)   rn   r  rò  rt  s    ``  r*   Úelement_positionsÚStory.element_positionsg>  s˜   ù€ ô �‹:œÒØ—Y‘Y–[�Ü˜Q›¤3š¨1¯>©>×+;Ó+;Ü$ }°Q°C°qÐ%9Ó:Ð:ò !ð ˆDÜ˜×!Ñ! X×%6Ñ%6×%BÑ%BÀaÓ%GÜÐ_Ó`Ð`ö	!ô  	× Ò  $§)¡)¨YÕ7r,   c                ó    • [        U5      n[        R                  " 5       n[        R                  " U R                  XU5      nU[        U5      4$ )z%
Wrapper for fz_place_story_flags().
)r  r£   rr  Úfz_place_story_flagsrÅ   rq  )r)   ÚwhererÑ  rÆ  r6  s        r*   ÚplaceÚStory.place†>  sA   € ô   Ó'ˆÜ—’“ˆÜ×)Ò)¨4¯9©9°eÀUÓKˆØ”_ fÓ-Ð-Ð-r,   c                óD   • [         R                  " U R                  5        g r.   )r£   Úfz_reset_storyrÅ   r0   s    r*   rM
  ÚStory.reset�>  s   € Ü×Ò˜dŸi™iÕ(r,   c                ó(  ^^• S nSmSn[        SSSS5      n U" Xg5      u  p‰n
US-  nU(       a  TS-  mU R                  U	5      u  p·T(       a  UU4S jnU R                  U5        U(       a‹  U(       aJ  U(       a!  U(       a
  U" TX…S5        UR                  5         UR	                  U5      nU(       a
  U" TX…S5        U R                  XZ5        U(       d!  U(       a
  U" TX…S5        UR                  5         OU R                  S U
5        U(       d  g Mü  )Nr   r   c                ó$   >• TU l         T" U 5        g r.   )rT  )rX  rT  Ú
positionfns    €€r*   Úpositionfn2Ú Story.write.<locals>.positionfn2Ÿ>  s   ø€ ð )1�HÔ%Ù˜xÕ(r,   )r,  r  rz  rÞ  r×  rg  )r)   r^  Úrectfnr†  Úpagefnr…  rq  rÆ  r8  rý   rõ  r6  r‡  rT  s      `         @r*   r   ÚStory.write’>  sõ   ù€ ØˆØˆØˆÜ�a˜˜A˜qÓ!ˆØÙ"(¨Ó":ÑˆH˜CØ˜‰MˆHÞà˜A‘�ØŸ:™: tÓ,‰LˆDÞö)ð
 ×&Ñ& {Ô3ÞÞæÞ!Ù" 8¨X¸AÔ>ØŸ™Ô)Ø ×+Ñ+¨XÓ6�CÞÙ˜x¨¸Ô:Ø—	‘	˜3Ô$ÞÞÙ ¨(¸Ô;Ø—O‘OÔ%øà—	‘	˜$ Ô$ÞØñA r,   c	                ó  ^^^• [        5       mS n	 U	n
U" T5      n	SmXš:X  a  SmU	n[        X³XG5      nU(       a  UR                  5         [        5       mUUU4S jnUR                  T(       a  U OS UUU5        T(       a  g Mq  )NFTc                óX   >• TR                  U 5        T(       a  T(       a	  T" U 5        g g g r.   r@
  )rX  r†  rV  Ústables    €€€r*   r‡  Ú+Story.write_stabilized.<locals>.positionfn2Ë>  s%   ø€ à× Ñ  Ô*ÞžjÙ˜xÕ(ð )�6r,   )rµ   rÁ  rP  r   )r^  Ú	contentfnr‰  r¸  rG  r†  rŠ  r³  rP  r§  Úcontent_prevÚcontent2rË  r‡  rV  rŽ  s        `        @@r*   Úwrite_stabilizedÚStory.write_stabilized¹>  sˆ   ú€ ä“Fˆ	ØˆàØ"ˆLÙ Ó+ˆGØˆFØÓ&Ø�ØˆHÜ˜(¨bÓ:ˆEæØ×$Ñ$Ô&ä›ˆI÷)ð
 �K‰KÞ$‘F¨$ØØØô	ö Øñ3 r,   c                óø   ^^• [         R                  " 5       n[        U5      n	/ mUU4S jn
[        R	                  X�XX:XVU5	        U	R                  5         UR                  S5        [        R                  UT5      $ )Nc                óH   >• TR                  U 5        T(       a	  T" U 5        g g r.   r@
  ©rX  r†  rV  s    €€r*   r‡  Ú6Story.write_stabilized_with_links.<locals>.positionfn2ß>  ó!   ø€ à×Ñ˜XÔ&ÞÙ˜8Õ$ð r,   r   )r>   r¨  rÈ  rÁ  r“  rŒ  r
  r\  )r�  r‰  r¸  rG  r†  rŠ  r³  rP  r	   r^  r‡  rV  s       `      @r*   Úwrite_stabilized_with_linksÚ!Story.write_stabilized_with_linksÙ>  se   ù€ ô —’“ˆÜ Ó'ˆØˆ	ö	%ô
 	×Ñ˜v°&ÀBÐU[ÐftÔuØ�‰ŒØ�‰�AŒÜ×"Ñ" 6¨9Ó5Ð5r,   c                óæ   ^^• [         R                  " 5       n[        U5      n/ mUU4S jnU R                  XQXcS9  UR	                  5         UR                  S5        [        R                  UT5      $ )Nc                óH   >• TR                  U 5        T(       a	  T" U 5        g g r.   r@
  r—  s    €€r*   r‡  Ú+Story.write_with_links.<locals>.positionfn2î>  r™  r,   )r†  rŠ  r   )r>   r¨  rÈ  r   rŒ  r
  rÁ  r\  )r)   r‰  r†  rŠ  r	   r^  r‡  rV  s     `    @r*   rÇ  ÚStory.write_with_linksé>  s[   ù€ ä—’“ˆÜ Ó'ˆØˆ	ö	%ð
 	�
‰
�6¨kˆ
ÑIØ�‰ŒØ�‰�AŒÜ×"Ñ" 6¨9Ó5Ð5r,   c                  ó(   • \ rS rSrSrSS jrS rSrg)ÚStory.FitResultiø>  a   
The result from a `Story.fit*()` method.

Members:

`big_enough`:
    `True` if the fit succeeded.
`filled`:
    Tuple (x0, y0, x1, y1) from the last call to `Story.place()`. This
    will be wider than .rect if any single word (which we never split)
    was too wide for .rect.
`more`:
    `False` if the fit succeeded.
`numcalls`:
    Number of calls made to `self.place()`.
`parameter`:
    The successful parameter value, or the largest failing value.
`rect`:
    The pumupdf.Rect created from `parameter`.
Nc                óL   • Xl         X l        X0l        X@l        XPl        X`l        g r.   ©rÄ  rÆ  r6  ÚnumcallsrÅ  rý   )r)   rÄ  rÆ  r6  r¤  rÅ  rý   s          r*   r‘   ÚStory.FitResult.__init__?  s    € Ø(ŒOØ ŒKØŒIØ$ŒMØ&ŒNØ�Ir,   c                ó¢   • SU R                    SU R                   SU R                   SU R                   SU R                   SU R
                   3$ )Nz big_enough=z filled=z more=z
 numcalls=ú parameter=ú rect=r£  r0   s    r*   rð   ÚStory.FitResult.__repr__?  sP   € à" 4§?¡?Ð"3Ø˜tŸ{™{˜mØ˜TŸY™Y˜KØ  §¡ Ø! $§.¡.Ð!1Ø˜TŸY™Y˜Kð)ðr,   r£  rt  )r2   r3   r4   r5   r*  r‘   rð   r6   r/   r,   r*   Ú	FitResultr¡  ø>  s   † ñ	ô(	õ	r,   rª  c                ór  ^ ^^^^^^^^• U4S jm[        T[        [        45      (       d  Tb   e[        T[        [        45      (       d  Tb   e " UUU4S jS5      nU" 5       mT(       a%  T" STR                  < STR                  < S35        T R                  5         UUUU4S jnUUUU UU4S	 jmS
 n	TR                  c8  T(       a  T" S5        U	" TR                  S5      n
 T" U
5      (       d  OCU
S-  n
M  T" TR                  5      (       a%  T(       a  T" STR                  < S35        U" 5       $ TR                  c8  T(       a  T" S5        U	" TR                  S5      n
 T" U
5      (       a  OJU
S-  n
M  T" TR                  5      (       d,  STl        T(       a  T" STR                  < S35        U" 5       $ T(       a%  T" STR                  < STR                  < S35         TR                  TR                  -
  U:  a  U" 5       $ TR                  TR                  -   S-  n
T" U
5        MJ  )aì  
Finds optimal rect that contains the story `self`.

Returns a `Story.FitResult` instance.
    
On success, the last call to `self.place()` will have been with the
returned rectangle, so `self.draw()` can be used directly.

Args:
:arg fn:
    A callable taking a floating point `parameter` and returning a
    `pymupdf.Rect()`. If the rect is empty, we assume the story will
    not fit and do not call `self.place()`.

    Must guarantee that `self.place()` behaves monotonically when
    given rect `fn(parameter`) as `parameter` increases. This
    usually means that both width and height increase or stay
    unchanged as `parameter` increases.
:arg pmin:
    Minimum parameter to consider; `None` for -infinity.
:arg pmax:
    Maximum parameter to consider; `None` for +infinity.
:arg delta:
    Maximum error in returned `parameter`.
:arg verbose:
    If true we output diagnostics.
:arg flags:
    Passed to mupdf.fz_place_story_flags(). e.g.
    zero or `mupdf.FZ_PLACE_STORY_FLAG_NO_OVERFLOW`.
c                ó4   >• T(       d   e[        SU  35        g )Nzfit(): ©rw   )r   rI  s    €r*   r(   ÚStory.fit.<locals>.log>?  s   ø€ ÞˆN�7Ü�g˜d˜VÐ$Õ%r,   Nc                  ó&   >• \ rS rSrU UU4S jrSrg)ÚStory.fit.<locals>.StateiE?  c                ó†   >• TU l         TU l        S U l        S U l        S U l        SU l        T(       a  TU l        TU l        g g rŒ   )ÚpminÚpmaxÚpmin_resultÚpmax_resultr“  r¤  Úpmin0Úpmax0)r)   r³  r²  rI  s    €€€r*   r‘   Ú!Story.fit.<locals>.State.__init__F?  sE   ø€ Ø �”	Ø �”	Ø#'�Ô Ø#'�Ô Ø"�”Ø !�”ÞØ!%�D”JØ!%�D•Jð r,   )r¤  r³  r·  rµ  r²  r¶  r´  r“  Nr“   )r³  r²  rI  s   €€€r*   ÚStater°  E?  s   ø† ÷	&ò 	&r,   r¹  zstarting. state.pmin=ú state.pmax=r   c            
     ó²  >• TR                   bQ  TR                  TR                   :w  a*  T(       a  T" S5        T" TR                   5      n U (       d   eTR                  nO:TR                  (       a  TR                  O[        R                  TR                  S9nT(       a6  T" STR                  < STR                  < STR                   < SU< 35        U$ )NzCCalling update() with pmax, because was overwritten by later calls.)r¤  zfinished. state.pmin0=z state.pmax0=rº  z: returning result=)	r³  Úlast_prµ  r´  rÁ  rª  r¤  r¶  r·  )rÄ  r“  r(   r¶  rJ  rI  s     €€€€r*   rL   ÚStory.fit.<locals>.retW?  sª   ø€ Ø�z‰zÑ%Ø—<‘< 5§:¡:Ó-ÞÙÐaÔcÙ!'¨¯
©
Ó!3�JÞ%Ð%˜:Ø×*Ñ*‘à.3×.?×.?˜×*Ò*ÄUÇ_Á_Ð^c×^lÑ^lÀ_ÐEm�ÞÙÐ- §¡¡¨n°·±©~¸]¸u¿z¹z¹mÐK_ÐX^ÑW`ÐaÔbØˆMr,   c                óB  >• T" U 5      n[        U[        5      (       d   S[        U5      < SU< 35       eUR                  (       a0  Sn[        R                  U T
R                  S9nT(       a  T" S5        O|T	R                  UT5      u  pET
=R                  S-  sl        U(       + n[        R                  UUT
R                  U UUS9nT(       a#  T" ST
R                  S	 S
U< SU < SU< S3	5        U(       a  U T
l        UT
l	        OU T
l
        UT
l        U T
l        U$ )zß
Evaluates `more, _ = self.place(fn(parameter))`. If `more` is
false, then `rect` is big enough to contain `self` and we
set `state.pmax=parameter` and return True. Otherwise we set
`state.pmin=parameter` and return False.
ztype(rect)=r¨  F)rÅ  r¤  z9update(): not calling self.place() because rect is empty.r   )rÆ  r6  r¤  rÅ  rý   rÄ  zupdate(): called self.place(): z>2dz: more=r§  r   )rC   r,  rÉ   r�  rÁ  rª  r¤  r  r³  rµ  r²  r´  r¼  )rÅ  rý   rÄ  r“  r6  rÆ  rÑ  Úfnr(   r)   r¶  rI  s         €€€€€€r*   rJ  ÚStory.fit.<locals>.updatee?  s  ø€ ñ �i“=ˆDÜ˜d¤D×)Ñ)ÐC¨k¬d°4«j©]¸'¸D¹7Ð+CÓCÐ)Ø�}�}Ø"�
ÜŸ™°9ÀuÇ~Á~˜ÐV�ÞÙÐSÔUøà#Ÿz™z¨$°Ó6‘�Ø—’ !Ñ#•Ø!%œX�
ÜŸ™Ø%Ø!Ø!&§¡Ø"+Ø!Ø#-ð )ð �ö ÙÐ9¸%¿.¹.ÈÐ9MÈXÐPTÉwÐVbÐXaÑWcÐcjÐeiÑdkÐklÐmÔnÞØ&�”
Ø$*�Õ!à&�”
Ø$*�Ô!Ø$ˆEŒLØÐr,   c                ó8   • U b  U S:X  a  U$ X-  S:”  a  SU -  $ U * $ )zq
Returns same sign as `direction`, larger or smaller than `p` if
direction is positive or negative respectively.
r   r   r/   )r³  Ú	directions     r*   ÚoppositeÚStory.fit.<locals>.oppositeŠ?  s/   € ð
 ‰y˜A˜q›DØ Ð Ø‰}˜qÓ Ø˜1‘u�Ø�2ˆIr,   zfinding pmin.r¨  r   r   zstate.pmin=z is big enough.zfinding pmax.z No solution possible state.pmax=z$doing binary search with state.pmin=)rC   r9   rœ  r²  r³  rM
  )r)   r¿  r²  r³  r  rI  rÑ  r¹  rL   rÃ  rÅ  r(   r¶  rJ  s   ```` ``    @@@r*   r¼  Ú	Story.fit?  sï  ÿø€ õ>	&ô ˜$¤¤e ×-Ñ-°±Ð=Ð=Ü˜$¤¤e ×-Ñ-°±Ð=Ð=÷
	&ö 
	&ñ “ˆæÙÐ(˜UŸZ™Z™M¨¨5¯:©:©-°qÐ9Ô:à�
‰
Œ÷	ð 	÷#	ò #	òJ		ð �:‰:Ñæ™˜mÔ-Ù  §¡¨RÓ0ˆIØÙ˜i×(Ñ(ØØ˜Q‘�	ñ ñ
 �e—j‘j×!Ñ!Þ™C ; 5§:¡:¡-¨Ð ?Ô@Ù“u�à�:‰:Ñæ™˜mÔ-Ù  §¡¨RÓ0ˆIØÙ˜)×$Ñ$ØØ˜Q‘�	ñ ñ
 ˜%Ÿ*™*×%Ñ%à!�”
Þ™CÐ"C¸¿
¹
±}ÀAÐ FÔGÙ“u�ö ‘CÐ?°E·J±J±=ÀÀ%Ç*Á*ÁÈaÐPÔQØØ�z‰z˜EŸJ™JÑ&¨Ó.Ù“u�ØŸ™ e§j¡jÑ0°AÑ5ˆIÙ�9Ôñ	 r,   c                ób   ^
^^^• Uu  mmpxUT-
  mUT-
  m
U
UUU4S jn	U R                  X’X4XV5      $ )a1  
Finds smallest value `scale` in range `scale_min..scale_max` where
`scale * rect` is large enough to contain the story `self`.

Returns a `Story.FitResult` instance with `.parameter` set to `scale`.

:arg width:
    width of rect.
:arg height:
    height of rect.
:arg scale_min:
    Minimum scale to consider; must be >= 0.
:arg scale_max:
    Maximum scale to consider, must be >= scale_min or `None` for
    infinite.
:arg delta:
    Maximum error in returned scale.
:arg verbose:
    If true we output diagnostics.
:arg flags:
    Passed to Story.place().
c                ó8   >• [        TTTU T-  -   TU T-  -   5      $ r.   rC  )rG  r2  r‰  r°  r²  s    €€€€r*   r¿  ÚStory.fit_scale.<locals>.fnÓ?  s&   ø€ Ü˜˜B  U¨5¡[Ñ 0°"°u¸V±|Ñ2CÓDÐDr,   ©r¼  )r)   rý   r¹  rº  r  rI  rÑ  r¯  r±  r¿  r2  r‰  r°  r²  s             @@@@r*   rÂ  ÚStory.fit_scale¹?  sA   û€ ð. ‰ˆˆB�Ø�R‘ˆØ�b‘ˆ÷	Eð 	Eà�x‰x˜ y¸ÓHÐHr,   c                óR   ^^	^
• Uu  mm
TU-   m	UU	U
4S jnU R                  XrX5U5      $ )a   
Finds smallest height in range `height_min..height_max` where a rect
with size `(width, height)` is large enough to contain the story
`self`.

Returns a `Story.FitResult` instance.

:arg width:
    width of rect.
:arg height_min:
    Minimum height to consider; must be >= 0.
:arg height_max:
    Maximum height to consider, must be >= height_min or `None` for
    infinite.
:arg origin:
    `(x0, y0)` of rect.
:arg delta:
    Maximum error in returned height.
:arg verbose:
    If true we output diagnostics.
c                ó&   >• [        TTTTU -   5      $ r.   rC  )r2  r°  r¯  r²  s    €€€r*   r¿  ÚStory.fit_height.<locals>.fnï?  s   ø€ Ü˜˜B  B v¡IÓ.Ð.r,   rÉ  )r)   r‰  Ú
height_minÚ
height_maxÚoriginr  rI  r¿  r°  r¯  r²  s           @@@r*   Ú
fit_heightÚStory.fit_height×?  s/   ú€ ð, ‰ˆˆBØ�%‰Zˆ÷	/à�x‰x˜¨
¸7ÓCÐCr,   c                óR   ^^	^
• Uu  mm	T	U-   m
UU	U
4S jnU R                  XrX5U5      $ )a  
Finds smallest width in range `width_min..width_max` where a rect with size
`(width, height)` is large enough to contain the story `self`.

Returns a `Story.FitResult` instance.
Returns a `FitResult` instance.

:arg height:
    height of rect.
:arg width_min:
    Minimum width to consider; must be >= 0.
:arg width_max:
    Maximum width to consider, must be >= width_min or `None` for
    infinite.
:arg origin:
    `(x0, y0)` of rect.
:arg delta:
    Maximum error in returned width.
:arg verbose:
    If true we output diagnostics.
c                ó&   >• [        TTTU -   T5      $ r.   rC  )r‰  r°  r²  r±  s    €€€r*   r¿  ÚStory.fit_width.<locals>.fn@  s   ø€ Ü˜˜B  5¡¨"Ó-Ð-r,   rÉ  )r)   r2  Ú	width_minÚ	width_maxrÐ  r  rI  r¿  r°  r²  r±  s           @@@r*   Ú	fit_widthÚStory.fit_widthó?  s/   ú€ ð, ‰ˆˆBØ�&‰[ˆ÷	.à�x‰x˜ y¸ÓAÐAr,   r$  )ra   Nr  Nr.   rq  rô
  )Nr  NNNT)NNrØ  Fr   )r   NrØ  Fr   )r   Nr  rØ  F)r2   r3   r4   r5   r‘   rP  rz  r\  ry  r  rÊ   rg  rz  r  rM
  r   r“  rš  rÇ  rª  r¼  rÂ  rÑ  rØ  r6   r/   r,   r*   rÁ  rÁ  å=  s¨   † ôDò.ð& ñRó ðRðh ñó ðòô3ô
8ô>.ò)ô%ðN óó ðð> ó6ó ð6ô6÷%ñ %ôNXôtIô<D÷8Br,   rÁ  c                  óÞ   • \ rS rSrS rS rS rSS jrS rSSS jjr	SS	 jr
SS
 jrSSS jjrSSS jjrSSS jjrS rSSS jjrS rSS jrSS jrSS jrS r\S 5       rSS jr\rSrg)r  i@  c                ó  • [        U[        R                  5      (       a!  US   n[        R                  " U5      U l        O8[        U[        R                  5      (       a  US   U l        O[        SU 35      eSU l        S U l        g )Nr   úUnrecognised args: T)rJ  r£   rr  r  rÅ   rl   rö   rí   )r)   r  r8  s      r*   r‘   ÚTextPage.__init__@  sm   € Ü�dœEŸL™L×)Ñ)Ø˜A‘wˆHÜ×)Ò)¨8Ó4ˆD�IÜ˜œe×/Ñ/×0Ñ0Ø˜Q™ˆD�IäÐ1°$°Ð8Ó9Ð9ØˆŒØˆ�r,   c                óv  • U R                   n[        R                  " S5      n[        R                  " U5      nUS:X  a  [        R                  " XBS5        OGUS:X  a  [        R
                  " XBS5        O)US:X  a  [        R                  " XBS5        O[        X25        UR                  5         [        U5      nU$ )Nr�  r   r   r   rr  )
rÅ   r£   rö	  r÷	  Úfz_print_stext_page_as_htmlÚfz_print_stext_page_as_xmlÚfz_print_stext_page_as_xhtmlÚJM_print_stext_page_as_textr	  r—  )r)   r¬  Ú
this_tpager&  r	  r   s         r*   Ú_extractTextÚTextPage._extractText@  s“   € Ø—Y‘Yˆ
Ü×!Ò! $Ó'ˆÜ�nŠn˜cÓ"ˆð �a‹<Ü×-Ò-¨c¸qÕAØ˜‹\Ü×,Ò,¨S¸aÕ@Ø˜‹\Ü×.Ò.¨sÀÕBä'¨Ô8Ø×ÑÔÜ% cÓ*ˆØˆr,   c                ó0   • [        U R                  X5        g r.   )ÚJM_make_textpage_dictrÅ   )r)   Ú	page_dictri  s      r*   Ú_getNewBlockListÚTextPage._getNewBlockList2@  s   € Ü˜dŸi™i¨Õ8r,   c                ó‚   • U R                   R                  U R                   R                  S.nU R                  X!5        U$ )Nro	  )rý   r‰  r2  ré  )r)   ri  rè  s      r*   Ú_textpage_dictÚTextPage._textpage_dict5@  s2   € Ø"Ÿi™iŸo™o¸¿¹×9IÑ9IÑJˆ	Ø×Ñ˜iÔ-ØÐr,   c                óD   •  [        R                  " U R                  5      $ )z*Return a list with text block information.)"r  r   ÚextractBLOCKSrÅ   r£   rr  rÍ   r8  rö	  ÚFixed_EMPTYrÉ   ÚFZ_STEXT_BLOCK_TEXTÚfz_clear_bufferÚJM_char_bboxÚJM_rects_overlaprç  ÚJM_append_runerö  Úfz_union_rectræ  Úfz_append_byter—  r7  Úi_imagerò  r=  r   r!  rš  r°  r²  r¯  r±  rp   )r)   Úblock_nrã  Útp_rectr&  rZ  ÚblockÚ	blockrectÚline_nÚ	last_charrt   Úlinerectr  Úcbboxr   r1  rö  Úlitems                     r*   rï  ÚTextPage.extractBLOCKS:@  s   € àÜ×&Ò& t§y¡yÓ1Ð1r,   Nc                ó¦   • U R                  SS9nUb  UR                  US'   UR                  US'   U(       a  US   nUR                  S S9  XCS'   U$ )z>Return page content as a Python dict of images and text spans.F©ri  r‰  r2  Úblocksc                ó"   • U S   S   U S   S   4$ ©Nr7  r   r   r/   ©r  s    r*   r«
  Ú&TextPage.extractDICT.<locals>.<lambda>v@  ó   €  q¨¡y°¡|°Q°v±Y¸q±\Ñ&Br,   rÓ
  ©rì  r‰  r2  r¬  ©r)   r‡  r¬  r  r  s        r*   ÚextractDICTÚTextPage.extractDICTn@  s[   € à×!Ñ! eÐ!Ð,ˆØ‰>ØŸ8™8ˆC�‰LØŸI™IˆC�‰MÞØ˜‘]ˆFØ�K‰KÑBˆKÑCØ"�‰MØˆ
r,   c                ó$   • U R                  S5      $ )z%Return page content as a HTML string.r   ©rä  r0   s    r*   ÚextractHTMLÚTextPage.extractHTMLz@  rZ  r,   c           	     óH  • SnU R                   n/ nU GH
  nUS-  nUR                  R                  [        R                  :X  a  M3  UR                  5       nSnUR                  5       nUR                  (       a  Sn	OSn	[        R                  " U5      n
U
R                  (       a  U
R                  5       nSn
U(       að  [        R                  " [        [        [        [        5      n[        R                  " U5      (       d   e[        R                  " UR                  5       SSUR                  5       SS5      n[        R                   " XkU5      u  pÞn[        R"                  " U5      n[%        U5      nUS:X  a2  UR                  5       UR                  5       -  UR'                  5       -  n[        R(                  " [        R*                  " UR                  R,                  5      5      n[/        5       nUU[0        '   [3        UR                  R4                  5      U[6        '   [9        UR;                  5       5      U[<        '   UR                  5       U[>        '   UR                  5       U[@        '   [        RB                  " U5      U[D        '   [        RF                  " U5      U[H        '   URK                  5       U[L        '   URO                  5       U[P        '   URS                  5       U[T        '   UU[V        '   U(       a  WUS'   U	US'   URY                  U5        GM     U$ )	z*Return a list with image meta information.r¨  r   r   TFNr²  zhas-mask)-rÅ   rÍ   rÉ   r£   rñ  rø  rµ  r™  Úfz_compressed_buffer_sizerp  r†  r‡  rM  r}  r   r!  r…  r�  r   rJ   r.  Úll_fz_keep_colorspacerò  r:   Údictkey_numberrq  r7  Údictkey_bboxr|  Úi_transformÚdictkey_matrixÚdictkey_widthÚdictkey_heightrA  Údictkey_colorspacer=  rë  r¸  Údictkey_xresr¹  Údictkey_yresrš  Údictkey_bpcrÈ  rp   )r)   r#  rù  rã  r¦   rû  r1  Úimg_sizerµ  Úhas_maskÚ
compr_buffr%  rŒ  r÷  r   r!  r²  rö  Ú
block_dicts                      r*   r%  ÚTextPage.extractIMGINFO~@  sa  € àˆØ—Y‘Yˆ
ØˆÜˆEØ�q‰LˆGØ×Ñ×$Ñ$¬×(AÑ(AÓAÙØ—-‘-“/ˆCØˆHØ—8‘8“:ˆDØ��Ø‘à �Ü×9Ò9¸#Ó>ˆJØ×$×$Ø%×?Ñ?ÓA�Ø!�
ÞÜ—M’M¤/´?ÄOÔUdÓe�Ü×1Ò1°!×4Ñ4Ð4Ð4Ü—N’N 3§5¡5£7¨A¨q°#·%±%³'¸1¸aÓ@�Ü!×:Ò:¸3À1ÓE‘	�˜Ü×-Ò-¨cÓ2�Ü˜v›�Ø˜q“=Ø"Ÿu™u›w¨¯©«Ñ0°3·5±5³7Ñ:�HÜ×#Ò#¤E×$?Ò$?ÀÇÁ×@YÑ@YÓ$ZÓ[ˆBÜ›ˆJØ)0ˆJ”~Ñ&Ü'6°u×7GÑ7G×7LÑ7LÓ'MˆJ”|Ñ$Ü):¸5×;LÑ;LÓ;NÓ)OˆJ”~Ñ&Ø(+¯©«ˆJ”}Ñ%Ø),¯©«ˆJ”~Ñ&Ü-2×-BÒ-BÀ2Ó-FˆJÔ)Ñ*Ü*/×*BÒ*BÀ2Ó*FˆJ”Ñ'Ø'*§x¡x£zˆJ”|Ñ$Ø'*§x¡x£zˆJ”|Ñ$Ø&)§g¡g£iˆJ”{Ñ#Ø'/ˆJ”|Ñ$ÞØ'-�
˜8Ñ$Ø%-ˆJ�zÑ"Ø�I‰I�j×!ñQ  ðR ˆ	r,   c                ó  ^• SSK mSSKnU R                  SS9n " U4S jSUR                  5      nUb  UR                  US'   UR
                  US'   U(       a  US	   nUR                  S
 S9  XdS	'   UR                  USUSS9nU$ )z.Return 'extractDICT' converted to JSON format.r   NFr  c                  ó"   >• \ rS rSrU 4S jrSrg)Ú'TextPage.extractJSON.<locals>.b64encodei´@  c                óv   >• [        U5      [        [        4;   a  TR                  U5      R	                  5       $ g r.   ©rÉ   r   r§  Ú	b64encoderÉ  ©r)   rŸ  Úbase64s     €r*   r   Ú/TextPage.extractJSON.<locals>.b64encode.defaultµ@  ó3   ø€ Ü˜“7œu¤iÐ0Ó0Ø!×+Ñ+¨AÓ.×5Ñ5Ó7Ð7ð 1r,   r/   N©r2   r3   r4   r5   r   r6   ©r,  s   €r*   r*  r'  ´@  ó   ø† ÷8ð 8r,   r*  r‰  r2  r  c                ó"   • U S   S   U S   S   4$ r  r/   r  s    r*   r«
  Ú&TextPage.extractJSON.<locals>.<lambda>¾@  r
  r,   rÓ
  ©r   rd   r   ©Ú
separatorsr  r	  ©r,  r`  rì  ÚJSONEncoderr‰  r2  r¬  Údumps©r)   r‡  r¬  r`  r  r*  r  r,  s          @r*   ÚextractJSONÚTextPage.extractJSON®@  sŒ   ø€ ãÛØ×!Ñ! eÐ!Ð,ˆ÷	8˜×(Ñ(ô 	8ð
 ‰>ØŸ8™8ˆC�‰LØŸI™IˆC�‰MÞØ˜‘]ˆFØ�K‰KÑBˆKÑCØ"�‰Mà�j‰j˜¨¸È1ˆjÐMˆØˆ
r,   c                ó¦   • U R                  SS9nUb  UR                  US'   UR                  US'   U(       a  US   nUR                  S S9  XCS'   U$ )zCReturn page content as a Python dict of images and text characters.Tr  r‰  r2  r  c                ó"   • U S   S   U S   S   4$ r  r/   r  s    r*   r«
  Ú)TextPage.extractRAWDICT.<locals>.<lambda>Ì@  r
  r,   rÓ
  r  r  s        r*   ÚextractRAWDICTÚTextPage.extractRAWDICTÄ@  s[   € à×!Ñ! dÐ!Ð+ˆØ‰>ØŸ8™8ˆC�‰LØŸI™IˆC�‰MÞØ˜‘]ˆFØ�K‰KÑBˆKÑCØ"�‰MØˆ
r,   c                ó  ^• SSK mSSKnU R                  SS9n " U4S jSUR                  5      nUb  UR                  US'   UR
                  US'   U(       a  US	   nUR                  S
 S9  XdS	'   UR                  USUSS9nU$ )z1Return 'extractRAWDICT' converted to JSON format.r   NTr  c                  ó"   >• \ rS rSrU 4S jrSrg)Ú*TextPage.extractRAWJSON.<locals>.b64encodeiÖ@  c                óv   >• [        U5      [        [        4;   a  TR                  U5      R	                  5       $ g r.   r)  r+  s     €r*   r   Ú2TextPage.extractRAWJSON.<locals>.b64encode.default×@  r.  r,   r/   Nr/  r0  s   €r*   r*  rD  Ö@  r1  r,   r*  r‰  r2  r  c                ó"   • U S   S   U S   S   4$ r  r/   r  s    r*   r«
  Ú)TextPage.extractRAWJSON.<locals>.<lambda>à@  r
  r,   rÓ
  r4  r   r5  r7  r:  s          @r*   ÚextractRAWJSONÚTextPage.extractRAWJSONÐ@  sŒ   ø€ ãÛØ×!Ñ! dÐ!Ð+ˆ÷	8˜×(Ñ(ô 	8ð
 ‰>ØŸ8™8ˆC�‰LØŸI™IˆC�‰MÞØ˜‘]ˆFØ�K‰KÑBˆKÑCØ"�‰MØ�j‰j˜¨¸È1ˆjÐMˆØˆ
r,   c                óv   • [        U5      n[        U5      n[        R                  " U R                  X4S5      nU$ rŒ   )ró  r£   Úfz_copy_selectionrÅ   )r)   ÚpointaÚpointbr!   r  r±  s         r*   ÚextractSelectionÚTextPage.extractSelectionå@  s3   € Ü˜VÓ$ˆÜ˜VÓ$ˆÜ×'Ò'¨¯	©	°1¸Ó;ˆØˆr,   c                óÊ   • U(       d  U R                  S5      $ U R                  5       SS nUR                  S S9  SR                  U Vs/ s H  o3S   PM	     sn5      $ s  snf )z%Return simple, bare text on the page.r   Nc                ó   • U S   U S   4$ )Nr   r   r/   r  s    r*   r«
  Ú&TextPage.extractText.<locals>.<lambda>ð@  s   €  1 Q¡4¨¨1©¡,r,   rÓ
  ra   rr  )rä  rï  r¬  r  )r)   r¬  r  r  s       r*   ÚextractTextÚTextPage.extractTextë@  s[   € æØ×$Ñ$ QÓ'Ð'Ø×#Ñ#Ó%¡aÐ(ˆØ�‰Ñ.ˆÑ/Ø�w‰w¡fÓ-¢f ˜!œ¡fÑ-Ó.Ð.ùÒ-s   ÁA c                ó¢   • U R                   n[        U[        R                  5      (       d   e[	        U5      n[        X#5      n[        U5      nU$ r.   )rÅ   rC   r£   r  r  ÚJM_copy_rectangleÚ PyUnicode_DecodeRawUnicodeEscape)r)   rý   rã  rn  r±  r¦   s         r*   rŒ  ÚTextPage.extractTextboxó@  sG   € Ø—Y‘Yˆ
Ü˜*¤e×&7Ñ&7×8Ñ8Ð8Ð8Ü˜tÓ$ˆÜ! *Ó3ˆÜ-¨eÓ4ˆØˆ	r,   c                óF   •  [        R                  " U R                  U5      $ )z)Return a list with text word information.)r  r   ÚextractWORDSrÅ   r£   rr  rð  rÍ   r8  rö	  rÉ   rñ  rò  ró  rô  rç  rö  ÚJM_is_word_delimiterÚJM_is_rtl_charræ  ÚJM_append_wordrõ  rö  )r)   Ú
delimitersÚbuflenÚlast_char_rtlrù  Úwbboxrã  rú  rZ  r•  rû  rý  rt   Úword_nr  r   Úword_delimiterÚthis_char_rtls                     r*   r[  ÚTextPage.extractWORDSû@  s   € àÜ×%Ò% d§i¡i°Ó<Ð<r,   c                ó$   • U R                  S5      $ )z&Return page content as a XHTML string.rr  r  r0   s    r*   ÚextractXHTMLÚTextPage.extractXHTML3A  rZ  r,   c                ó$   • U R                  S5      $ )z$Return page content as a XML string.r   r  r0   s    r*   Ú
extractXMLÚTextPage.extractXML7A  rZ  r,   c                ó¬   • U R                   n[        R                  " UR                  R                  5      n[        R
                  " U5      nSUl        U$ )zTextPage current poolsize.N)rÅ   r£   ÚPoolrÍ   ÚpoolÚfz_pool_size)r)   r„  ro  rÊ  s       r*   ÚpoolsizeÚTextPage.poolsize;A  sA   € à—	‘	ˆÜ�zŠz˜%×*Ñ*×/Ñ/Ó0ˆÜ×!Ò! 4Ó(ˆØˆŒØˆr,   c                óv   • U R                   nUR                  R                  n[        U5      n[	        U5      nU$ )zPage rectangle.)rÅ   rÍ   r8  rq  r,  )r)   rã  r8  r  s       r*   rý   ÚTextPage.rectCA  s6   € ð —Y‘Yˆ
Ø×(Ñ(×1Ñ1ˆÜ˜hÓ'ˆÜ�3‹iˆàˆ
r,   c                ó¦  • [        U R                  U5      nU(       d  U$ [        U5      n[        U5       H+  n[	        XF   5      nU(       a  XtU'   M  UR
                  XF'   M-     U(       a  U$ SnXeS-
  :  aY  XF   nXFS-      n	UR                  U	R                  :w  d  X‰-  R                  (       a  US-  nMG  X‰-  XF'   XFS-   	 US-  nXeS-
  :  a  MY  U$ )z)Locate 'needle' returning rects or quads.r   r   )ÚJM_search_stext_pagerÅ   r<   rT  rÐ  rý   r±  r�  )
r)   ÚneedleÚhit_maxrd
  r  rG   rh  r+  Úv1Úv2s
             r*   r  ÚTextPage.searchMA  sÍ   € ä" 4§9¡9¨fÓ5ˆÞØˆJÜ�C“ˆÜ�u–ˆAÜ�S‘V“ˆAÞØ�A“àŸ™�“ñ ö ØˆJØˆØ˜!‘)‹mØ‘ˆBØ˜‘U‘ˆBØ�u‰u˜Ÿ™‹~ "¡'×!3×!3Ø�Q‘�ÙØ‘WˆC‰FØ˜‘E�
Ø�Q‰JˆEð ˜!‘)�mð ˆ
r,   rp  rv  r[  r¾  r­  rq  r.   )r   r   )r2   r3   r4   r5   r‘   rä  ré  rì  rï  r  r  r%  r;  r@  rI  rO  rT  rŒ  r[  rh  rk  rq  ry  rý   r  ÚextractTEXTr6   r/   r,   r*   r  r  @  s   † ò	òò*9ôò
2öh
ô$ô.ö`ö,
öò*ö/òô6ôp$ô$òð ñó ðôð4 ƒKr,   r  c                  óž   • \ rS rSrSS jr\S 5       rSS jrSS jrS r	        S                       SS jjr
SS	 jrS
rg)rY  ijA  Nc                ó’  • [         R                  " 5       U l        X l        X0l        [        U5      U l        [        SSSSSU R                  R                  5      U l	        U R                  ) U l
        [        5       U l        SU R                  l        [        5       U l        SU R                  l        [        5       U l        SU l        g)z;Stores text spans for later output on compatible PDF pages.r   r   r¨  z'Position following last text insertion.zAccumulated area of text spans.TN)r£   Úfz_new_textrÅ   r^  ro  r,  rý   r€  r2  rõ  r,  r#  rç  r*  r[  r«  Ú
used_fontsrö   )r)   Ú	page_rectr^  ro  s       r*   r‘   ÚTextWriter.__init__lA  sŽ   € ä×%Ò%Ó'ˆŒ	àŒØŒ
Ü˜“OˆŒ	Ü˜!˜Q  2 q¨$¯)©)×*:Ñ*:Ó;ˆŒØ—X‘X�IˆŒ	Ü›'ˆŒØ"Kˆ�‰ÔÜ›ˆŒà!Bˆ�‰ÔÜ›%ˆŒØˆ�r,   c                óÀ   • [        [        R                  " U R                  [        R                  " S 5      [        R
                  " 5       5      5      n[        U5      nU$ r.   )rq  r£   Úfz_bound_textrÅ   ÚFzStrokeStater}  r,  rÑ  s     r*   Ú_bboxÚTextWriter._bbox}A  sC   € äœu×2Ò2°D·I±I¼u×?RÒ?RÐSWÓ?XÔZ_×ZhÒZhÓZjÓkÓlˆÜ�3‹iˆØˆ
r,   c           
     ó„  • [        U5      U R                  -  nUc  [        S5      nUR                  (       d   ['        SUR                   S35      eU(       a-  U R)                  U5      nSR+                  [-        U5      5      nSn[.        R0                  " U5      n	[3        U5      n
[.        R4                  " USSXJR6                  U
R8                  5      nSnSnUS:X  a/  [.        R:                  " U R
                  UR
                  X²XÖXÉ5      nO#[=        U R
                  UR
                  X²XÖXÉ5      n[?        U5      n[        USS 5      U R@                  -  U l!        U RD                  U R@                  -  U l#        U RF                  U RB                  4nURH                  S   S	:X  a  U RJ                  RM                  U5        U$ )
z8Store 'text' at point 'pos' using 'font' and 'fontsize'.Nr½  r   zUnsupported font 'rˆ  ra   r  r  r   )'r#  r,  rÚ  rM  r(   rÅ   rÍ   r   Út3matrixr7  r  Úuse_glyph_bboxÚwidth_countÚwidth_defaultÚ
has_digestr¢   rH  rI  Úmupdf_font_namerÄ   Ú	clean_rtlr  r¯  r£   rÁ  ró  Úfz_make_matrixre  rf  Úfz_show_stringÚJM_show_string_csr|  rõ  rç  r†  r[  rÑ  r€  r€  )r)   r.  r   rÜ  r   rK  Úright_to_leftr  rH  rJ  r³  ÚtrmÚ
markup_dirr
  r  s                  r*   rp   ÚTextWriter.appendƒA  sj  € ä�C‹j˜4Ÿ9™9Ñ$ˆà‰<Ü˜“<ˆDØ××Øô Ð1°$·)±)°¸BÐ?Ó@Ð@ÞØ—>‘> $Ó'ˆDØ—7‘7œ8 D›>Ó*ˆDØˆMä×1Ò1°(Ó;ˆÜ˜SÓ!ˆÜ×"Ò" 8¨Q°°8¿S¹SÀ!Ç#Á#ÓFˆØˆ
ØˆØ˜‹?Ü×&Ò&¨¯	©	°4·9±9¸cÈÐ_iÓp‰Cä# T§Y¡Y°·	±	¸3ÀeÐ\fÓmˆCÜ Ó$ˆä  B C ›/¨D¯H©HÑ4ˆŒØŸ™ d§h¡hÑ.ˆŒØ�n‰n˜dŸo™oÐ-ˆØ�:‰:�fÑ Ó"Ø�O‰O×Ñ Ô%Øˆ
r,   c           
     óš   • US-  nU H)  nU R                  XX4XVS9  U=R                  U-  sl        M+     U R                  U R                  4$ )NrR  )rÜ  r   rK  r  )rp   rf  r[  rç  )	r)   r.  r   rÜ  r   rK  r  r  rö  s	            r*   ÚappendvÚTextWriter.appendv¯A  sP   € Ø˜S‘.ˆÛˆAØ�K‰K˜ TØ!ð ñ :à�EŠE�WÑ�Eñ ð �~‰~˜tŸ™Ð.Ð.r,   c           	     óº  • U(       d  U$ UR                  S5      n/ n[        [        U5      5       Hp  nX$   n[        U5      S:  a  M  [        U Vs/ s H  n[	        U5      PM     sn5      S:”  a  MC  SR                  [        U5      5      X$'   UR                  U5        Mr     / n[        [        U5      5       H†  nU/ :X  a  UR                  X4   5        M  X4   US   S-   :”  a7  [        U5      S:”  a!  [        X'S   US   S-    5      X'S   US   S-   & X4   /nMc  X4   US   S-   :X  d  Ms  UR                  X4   5        Mˆ     SR                  U5      nU$ s  snf )aÑ  Revert the sequence of Latin text parts.

Text with right-to-left writing direction (Arabic, Hebrew) often
contains Latin parts, which are written in left-to-right: numbers, names,
etc. For output as PDF text we need *everything* in right-to-left.
E.g. an input like "<arabic> ABCDE FG HIJ <arabic> KL <arabic>" will be
converted to "<arabic> JIH GF EDCBA <arabic> LK <arabic>". The Arabic
parts remain untouched.

Args:
    text: str
Returns:
    Massaged string.
r´   r   r  ra   r¨  r   r   )r;   rT  r<   r!  r  r  r¯  rp   )r)   r   Úwordsrä  rh  r   rö  Úidx2s           r*   r�  ÚTextWriter.clean_rtl·A  s?  € ö ØˆKà—
‘
˜3“ˆØˆÜ”s˜5“zÖ"ˆAØ‘ˆAä˜“F˜Q•J¤#±qÓ&9²q°!¤s¨1¦v±qÑ&9Ó":¸SÕ"@ØŸ7™7¤8¨A£;Ó/�‘Ø—
‘
˜1–ñ #ð ˆÜ”s˜3“x–ˆAØ�r‹zØ—‘˜C™FÖ#à‘˜$˜r™( Q™,Ó&Ü�t“9˜q“=Ü4<Ø 1™g¨¨R©°1©Ð5ó5�E˜q™' D¨¡H¨q¡LÐ1ð ™�x’à‘˜4 ™8 a™<Õ'Ø—‘˜C™FÖ#ñ !ð �x‰x˜‹ˆØˆùò+ ':s   ÁE
c                ó 	  ^ ^^^
^%^&^'^(• [        U5      nUR                  (       a  [        S5      e[        T5      [        La  [	        S5      mUUU
4S jm(UUU
4S jm&UUU
U 4S jm%TS-  nT(" S5      nUR
                  U-
  m'UR                  U-   nU&4S jnU%U'U(4S	 jnTR                  nTR                  nU(       d  UU-
  S
::  a  SnOUU-
  nOUnTU-  nT'nUb  [        U5      nOUR                  UTU-  4-   nX1;  a  [        S5      eU[        :X  a  SnOU[        :X  a  SnOSn[        U5      [        L a  UR                  5       nO*/ nU H"  nUR                  UR                  5       5        M$     [!        UR"                  UR$                  -
  U-  5      S
-   n/ n/ n['        U5       GHy  u  nnUS;   aA  UR)                  UU45        UR
                  U-
  nUR)                  [+        U5      S
-
  5        MN  US:X  a  UR,                  UR.                  -
  nOUR
                  U-
  nU	(       a  T R1                  U5      nT(" U5      nUU::  a2  UR)                  UU45        UR)                  [+        U5      S
-
  5        MÕ  UR3                  S5      nU" UU5      u  nn[+        U5      n SR5                  USU 5      n [7        USU 5      UUS
-
  -  -   n!U!U::  a+  UR)                  U U!45        UUS nUUS n[+        U5      nSn OUS
-  n[+        U5      S:X  a  GMq  U(       d   eM~     [+        U5      n"U"U:”  a.  SU SU" S3n#Uc  O!U(       a  [9        SU#-   5        O[        U#5      e[        5       n$U[+        U5      S
-
  /-  n[;        U5       HÔ  n UR=                  S5      u  nnU	(       a  SR5                  [E        U5      5      nUS:X  a  Un$U[F        :X  a3  UU;  a-  UT':  a'  U" U$U5        UU$l        U$=R$                  U-  sl        M~  US:”  d  UR.                  U:X  a  U$=R.                  UU-
  U-  -  sl        T%" U$U5        UU$l        U$=R$                  U-  sl        MÖ     U$ ! [>         a    [@        S:¼  a
  [C        5            U$ f = f)a  Fill a rectangle with text.

Args:
    writer: pymupdf.TextWriter object (= "self")
    rect: rect-like to receive the text.
    text: string or list/tuple of strings.
    pos: point-like start position of first word.
    font: pymupdf.Font object (default pymupdf.Font('helv')).
    fontsize: the fontsize.
    lineheight: overwrite the font property
    align: (int) 0 = left, 1 = center, 2 = right, 3 = justify
    warn: (bool) text overflow action: none, warn, or exception
    right_to_left: (bool) indicate right-to-left language.
zfill rect must not empty.r½  c                ó&   >• TR                  U TTS9$ )zReturn length of a string.©r   r  )rU  ©re  rÜ  r   r  s    €€€r*   rb  Ú(TextWriter.fill_textbox.<locals>.textlenB  s"   ø€ à×#Ñ#Ø˜H°ð $ð ð r,   c                ó&   >• TR                  U TTS9$ )z5Return list of single character lengths for a string.r   )r  r¡  s    €€€r*   r  Ú-TextWriter.fill_textbox.<locals>.char_lengthsB  s   ø€ à×$Ñ$ Q°ÀjÐ$ÐQÐQr,   c                ó,   >• TR                  XTTTS9nU$ )N)rÜ  r   r  r@
  )r.  r   rL   rÜ  r   r  r^  s      €€€€r*   Úappend_thisÚ,TextWriter.fill_textbox.<locals>.append_thisB  s&   ø€ Ø—-‘-Ø D°8È
ð  ð ˆCð ˆJr,   çš™™™™™É?r´   c                ót  >• / n/ nU H«  nT" U5      n[        U5      nX`::  a$  UR                  U5        UR                  U5        M?  [        U5      nUS:”  d  MR  [        USU 5      nX`::  a9  UR                  USU 5        UR                  U5        XGS nXWS n[        U5      nOUS-  nUS:”  a  MY  M­     X#4$ )z.Cut any word in pieces no longer than 'width'.r   Nr   )r®  rp   r<   )	r‰  r›  ÚnwordsÚword_lengthsr   Úwl_lstÚwlrJ   r  s	           €r*   Ú
norm_wordsÚ+TextWriter.fill_textbox.<locals>.norm_wordsB  sÉ   ø€ àˆFØˆLÛ�Ù% a›�Ü˜“[�Ø“;Ø—M‘M !Ô$Ø ×'Ñ'¨Ô+Ùô ˜“K�Ø˜!•eÜ˜V B Q˜Z›�BØ“{ØŸ™ a¨¨ eÔ,Ø$×+Ñ+¨BÔ/Ø˜b˜E˜Ø!'¨ ˜Ü ›K™à˜Q™˜ð ˜!—eñ ð( Ð'Ð'r,   c                ó^  >• UR                  S5       Vs/ s H  o"S:w  d  M
  UPM     nn[        U5      nUS:X  a  gUS:X  a  T
" XS   5        g[        U Vs/ s H  nT" U5      PM     sn5      nUS-
  nTU-
  U-  nU H!  nT
" X5      u  p‰U	R                  U-   U l        M#     gs  snf s  snf )zJustified output of a line.r´   ra   r   Nr   )r;   r<   r®  re  )rÇ  rt   r   r›  rª  r$  ÚgapsÚgaplr<  rd  r¦  Ú	std_widthrb  s             €€€r*   Úoutput_justifyÚ/TextWriter.fill_textbox.<locals>.output_justify5B  s¶   ø€ ð !%§
¡
¨3¤Ó;¢˜1¸±7—Q¡ˆEÐ;Ü˜“ZˆFØ˜‹{ØØ˜‹{Ù˜E¨¡8Ô,ØÜ©%Ó0ª% Q‘g˜a–j©%Ñ0Ó1ˆBØ˜A‘:ˆDØ ‘N dÑ*ˆDÛ�Ù# EÓ-‘�ØŸ$™$ ™+�–ñ ð ùò <ùò 1s   •	B%¢B%ÁB*r   rR  NzText must start in rectangle.rS  rÔ  r   )ra   r´   zOnly fitting ú of z lines.z	Warning: r   ra   )$r,  r�  rÄ   rÉ   rÚ  r‰  r°  r  r  r#  r$  rÀ  rÁ  rè  r  r¯  r9   r±  rf  rY  rp   r<   r¯  re  r�  r;   r  r®  rw   rT  rU  rž  r  r{   r¯  rÂ  ))r^  rý   r   r.  rÜ  r   rö  r  Úwarnr“  r  Ú	toleranceÚ	space_lenÚ	std_startr®  r´  r0  r1  r  Ú
LINEHEIGHTr‰  r[  Ú	textlinesrt   Ú	max_linesÚ	new_linesÚ
no_justifyrh  r$  r›  r«  rJ   Úline0r­  r  rž   rÇ  r¦  r  r³  rb  s)   `   ``    `                          @@@@r*   Úfill_textboxÚTextWriter.fill_textboxåA  s|  ÿ€ ô6 �D‹zˆØ�=�=ÜÐ8Ó9Ð9Ü�‹:œTÒ!Ü˜“<ˆD÷	÷	R÷	ð 	ð ˜s‘Nˆ	Ù˜C“Lˆ	Ø—J‘J Ñ*ˆ	Ø—G‘G˜iÑ'ˆ	õ	(÷4	ð$ �m‰mˆØ�n‰nˆÞØ�S‰y˜A‹~Ø‘à ™)‘à ˆGà Ñ'ˆ
Øˆð ‰?Ü˜“*‰Cà—'‘'˜Y¨°3©Ð7Ñ7ˆCØ‹?ÜÐ<Ó=Ð=ð Ô%Ó%Ø‰FØÔ&Ó&Ø‰FàˆFô �‹:œÒØŸ™Ó)‰IàˆIÛ�Ø× Ñ  §¡Ó!2Ö3ñ ô ˜Ÿ™ 3§5¡5™¨JÑ6Ó7¸!Ñ;ˆ	àˆ	Øˆ
Ü  ×+‰GˆAˆtØ�yÓ Ø× Ñ  $¨	Ð!2Ô3ØŸ
™
 YÑ.�Ø×!Ñ!¤3 y£>°AÑ#5Ô7ÙØ�A‹vØŸ™ #§%¡%™‘àŸ
™
 YÑ.�æØ×'Ñ'¨Ó-�Ù˜“ˆBØ�U‹{Ø× Ñ  $¨ Ô,Ø×!Ñ!¤3 y£>°AÑ#5Ô7Ùð —J‘J˜s“OˆEñ #-¨U°EÓ":ÑˆE�<ä�E“
ˆAØØŸ™  r¨ Ó+�Ü˜ b qÐ)Ó*¨Y¸!¸a¹%Ñ-@Ñ@�Ø˜“;Ø×$Ñ$ e¨R [Ô1Ø! ! "˜I�EØ#/°°Ð#3�LÜ˜E›
�AØ ‘Eà˜‘F�Aä�u“: “?ÚÞ��qñ ñ5 ,ô^ �Y“ˆØ�IÓØ! ) ¨D°°¸Ð@ˆCØ‰|ØÞÜ˜ cÑ)Õ*ä  “oÐ%ä“ˆØ”s˜9“~¨Ñ)Ð*Ñ*ˆ
Ü�yÖ!ˆAðØ$Ÿ=™=¨Ó+‘��bö
 Ø—w‘wœx¨›~Ó.�à�A‹vØ�àÔ*Ó*¨q¸
Ó/BÀrÈIÃ~Ù˜u dÔ+Ø#�”Ø—’˜:Ñ%•Ùà�1‹u˜Ÿ™ Ó*Ø—’˜E B™J¨&Ñ0Ñ0•á˜˜tÔ$ØˆEŒGØ�GŠG�zÑ!�Gñ1 "ð4 Ðøô/ ó Ü'¨1Ó,´Ô0@Ùð* Ðð/ús   ÎQ*Ñ*RÒRc	                ó°  • [        U5        [        U R                  UR                  -
  5      S:”  a  [        S5      eUbN  [	        U5      [
        [        4;  d*  [	        US   5      [        Ld  [	        US   5      [        La  [        S5      eUb  Ub  [        S5      e[        USS5      b  US	:X  a  U R                  nUc  U R                  n UR                  5       n	Sn
US:¼  a  US:  a  Un
Sn/ S
QnU(       a  [        U5      u  p¼US:X  a  [        R                  " 5       nO1US:X  a  [        R                   " 5       nO[        R"                  " 5       n[        R$                  " U	R'                  5       S5      n[        R(                  " S5      n[        R*                  " U	R'                  5       [        R,                  " 5       Xï5      n[        R.                  " UU R0                  [        R,                  " 5       UUU
[        R2                  " [        R4                  5      5        [        R6                  " U5        [9        Xž5      n[;        U5      nUU4nUnUS   nUS   nUu  nnUR=                  5       nUR?                  U5      nUb	  SU S3nSnOS=nnS/nU(       a  URA                  U5        URB                  nURD                  S;   a.  UR                  RF                  UR                  RH                  -
  nOSnURJ                  n[M        U5      (       d  URN                  S:w  d  US:w  aD  URA                  S[Q        URR                  URT                  URN                  -   U-
  45       S35        U(       aN  US   U RV                  -  n [        SS5      RY                  U RR                  U RT                  5      nU) US   -  U-  nU(       d  U(       a&  URA                  [Q        [[        U5      5      S-   5        U GHÓ  n!U!R]                  S5      (       a  M  U!S:X  a(  URA                  U!5        URA                  US S35        MJ  U!R]                  S5      (       a+  [_        U!Ra                  5       S   SS 5      U-   n"SU"S S3n!GO7U!R]                  S5      (       az  U!Ra                  5       n#[c        U#S   5      n$US:w  a  U$S-  n%OSn%URA                  [Q        U%5      S-   5        [_        U#S   SS 5      U-   n&S Re                  S!U&S 3/U#SS -   5      n!O§U!R]                  S"5      (       a"  URA                  U!Rg                  S#S$5      5        OoU!R]                  S%5      (       a"  URA                  U!Rg                  S%S&5      5        O7U!R]                  S'5      (       a!  URA                  U!Rg                  S'S(5      5        URA                  U!5        GMÖ     U(       a  URA                  U5        URA                  S)5        S*Re                  U5      Ri                  S+5      n[j        Rm                  UUUS,9  SnU Rn                   H  n&[q        UU&5        M     U$ )-a’  Write the text to a PDF page having the TextWriter's page size.

Args:
    page: a PDF page having same size.
    color: override text color.
    opacity: override transparency.
    overlay: put in foreground or background.
    morph: tuple(Point, Matrix), apply a matrix with a fixpoint.
    matrix: Matrix to be used instead of 'morph' argument.
    render_mode: (int) PDF render mode operator 'Tr'.
rØ  zincompatible page rectNr   r   z%morph must be (Point, Matrix) or Nonez$only one of matrix, morph is allowedr—  r¨  r;  r   rr  r   r�  r  z BDCÚEMCra   r+  r>  rú  z cmÚBTrD  z Trz gsz/Alpú TfrÝ  z wr   r´   z/Fz rgr{  ÚRGz gz Gz kz Kr  r&   r  )r£  )9rp  r&  rý   rÄ   rÉ   r¶   rµ   r#  r€  rï   r^  ro  rô  rC  r£   rë  Úfz_device_cmykÚfz_device_grayr[  r2  rö	  Úpdf_new_pdf_devicer}  Úfz_fill_textrÅ   r”  Úfz_default_color_paramsr‚  ÚJM_merge_resourcesr—  r  rv  rp   r’  rx  r2  r‰  r8  ré   r²  r·   re  rf  r,  r  r7  r  r9   r;   rœ  r  r  rþ  r  r?  r€  Úrepair_mono_font)'r)   r×   ro  r^  r£  r'  rð  rß  rÚ  râ  ró  ÚncolÚ	dev_colorrò  rj  r9  r…  Úmax_numsÚcont_stringr“  r  r§  Úmax_alpÚmax_fontÚold_cont_linesr  r  r  Únew_cont_linesr‡  r  ræ  r³  rt   Úalpr  r3  r   rÜ  s'                                          r*   rZ  ÚTextWriter.write_textÇB  sn  € ô 	�DÔÜˆt�y‰y˜4Ÿ9™9Ñ$Ó%¨Ó,ÜÐ5Ó6Ð6ØÑÜ�U“¤E¬4 =Ó0Ü˜E !™H“~¬UÒ2Ü˜E !™H“~¬VÒ3ä Ð!HÓIÐIØÑ %Ñ"3ÜÐCÓDÐDÜ�7˜K¨Ó.Ñ6¸'ÀR»-Ø—l‘lˆGØ‰=Ø—J‘JˆEàØ—n‘nÓ&ˆGØˆEØ˜!‹| ¨!£Ø�ØˆDÚ$ˆIÞÜ"7¸Ó">‘�Ø�q‹yÜ"×0Ò0Ó2‘
Ø˜“Ü"×1Ò1Ó3‘
ä"×1Ò1Ó3�
ä×*Ò*¨7¯;©;«=¸!Ó<ˆIÜ×*Ò*¨4Ó0ˆHÜ×*Ò*¨G¯K©K«M¼5¿>º>Ó;KÈYÓaˆCä×ÒØØ—I‘IÜ—N’NÓ$ØØØÜ×'Ò'¬×(EÑ(EÓFôô ×!Ò! 3Ô'ô *¨7Ó>ˆHÜ0°(Ó;ˆKØ Ð,ˆFØˆCà�q‘6ˆØ�a‘&ˆØ$Ñˆ�Ø ×+Ñ+Ó-ˆà×,Ñ,¨RÓ0ˆØÑØ˜'˜ $Ð'ˆCØ‰CàˆNˆC�#à˜ˆÞØ×!Ñ! #Ô&à×"Ñ"ˆØ�=‰=˜IÓ%Ø—I‘I×$Ñ$ t§y¡y§¡Ñ6‰EàˆEØ�]‰]ˆÜ��8‰8�r—u‘u “z U¨a£ZØ×!Ñ! H¬Y¸¿¹¸b¿d¹dÀRÇUÁU¹lÈUÑ>RÐ7SÓ-TÐ,UÐUXÐ"YÔZæØ�a‘˜4Ÿ9™9Ñ$ˆAÜ˜1˜a“L×-Ñ-¨a¯c©c°1·3±3Ó7ˆEØ�V˜e A™hÑ&¨Ñ.ˆFÞ–FØ×!Ñ!¤)¬H°VÓ,<Ó"=ÀÑ"EÔFä"ˆDØ�}‰}˜U×#Ñ#ÙØ�t‹|Ø×%Ñ% dÔ+Ø×%Ñ%¨°Q¨°sÐ&;Ô<ÙØ�}‰}˜U×#Ñ#Ü˜$Ÿ*™*›, q™/¨!¨"Ð-Ó.°Ñ8�Ø˜c !˜W CÐ(’Ø—‘˜u×%Ñ%Ø—z‘z“|�Ü˜d 1™g›�Ø !Ó#Ø ™‘Aà�AØ×%Ñ%¤i°£l°TÑ&9Ô:Ü˜4 ™7 1 2˜;Ó'¨(Ñ2�Ø—x‘x 2 d¨1 X  °$°q°r°(Ñ :Ó;‘Ø—‘˜u×%Ñ%Ø×%Ñ% d§l¡l°4¸Ó&>Õ?Ø—‘˜t×$Ñ$Ø×%Ñ% d§l¡l°4¸Ó&>Õ?Ø—‘˜t×$Ñ$Ø×%Ñ% d§l¡l°4¸Ó&>Ô?Ø×!Ñ! $×'ñ5 #ö6 Ø×!Ñ! #Ô&Ø×Ñ˜eÔ$Ø—)‘)˜NÓ+×2Ñ2°7Ó;ˆÜ×Ñ˜t W°gÐÑ>ØˆØ—O”OˆDÜ˜T 4Ö(ñ $àˆ
r,   )
ro  rõ  r,  rç  r^  rý   r[  rÅ   rö   r€  r%  )Nr¢  Nr   r   )Nr¢  NF)NNr¢  Nr   NFF)r^  z'TextWriter'rý   r½   r   re  r.  r»   rÜ  ztyping.Optional[Font]r   rœ  rö  rv  r  r9   r·  ré   r“  ré   r  ré   r«  r¶   )Nr¨  r   NNr   r   )r2   r3   r4   r5   r‘   ry  r†  rp   r˜  r�  rÁ  rZ  r6   r/   r,   r*   rY  rY  jA  sÓ   † ôð" ñó ðô
*ôX/ò,ðd #Ø*.Ø Ø#'ØØØ"'Ø$ð`Ø ð`àð`ð *ð`ð ð	`ð
 (ð`ð ð`ð !ð`ð ð`ð ð`ð  ð`ð ð`ð õ`÷DDr,   rY  c                  ó�  • \ rS rSrSrS rS rS rS rS r	S r
S	S	S	S	S	S	S
.S jrS rS rS rS rS rS rS rS rS r\S 5       r\S 5       r\S 5       rS rS,S jrS rS rS rS r\S 5       r\S 5       r \S  5       r!S! r"S" r#S# r$\S$ 5       r%\S% 5       r&\S& 5       r'\S' 5       r(S( r)S) r*\S* 5       r+\r,\r-\'r.\(r/S+r0g	)-rq  iNC  zù
IRect() - all zeros
IRect(x0, y0, x1, y1) - 4 coordinates
IRect(top-left, x1, y1) - point and 2 coordinates
IRect(x0, y0, bottom-right) - 2 coordinates and point
IRect(top-left, bottom-right) - 2 points
IRect(sequ) - new from sequence or rect-like
c                óH   • [         R                  X5      R                  5       $ r.   )r,  r¹  rÉ  r‡  s     r*   r¹  ÚIRect.__add__XC  ó   € Ü�|‰|˜DÓ$×*Ñ*Ó,Ð,r,   c                óH   • [         R                  X5      R                  5       $ r.   )r,  r!  rÉ  r:  s     r*   r!  ÚIRect.__and__[C  rÜ  r,   c                ó,   • [         R                  X5      $ r.   )r,  rz  r:  s     r*   rz  ÚIRect.__contains__^C  s   € Ü× Ñ  Ó)Ð)r,   c                ó
  • [        US5      (       d  g[        U5      S:H  =(       a]    U R                  US   :H  =(       aD    U R                  US   :H  =(       a+    U R                  US   :H  =(       a    U R
                  US   :H  $ rÛ  )r@   r<   r°  r²  r¯  r±  r  s     r*   rÂ  ÚIRect.__eq__aC  sn   € Ü�q˜)×$Ñ$ØÜ�1‹v˜‰{×j˜tŸw™w¨!¨A©$™×j°4·7±7¸aÀ¹d±?×jÀtÇwÁwÐRSÐTUÑRVÁ×jÐ[_×[bÑ[bÐfgÐhiÑfjÑ[jÐjr,   c                ód   • U R                   U R                  U R                  U R                  4U   $ r.   r,  r�  s     r*   r�  ÚIRect.__getitem__fC  rà  r,   c                ó*   • [        [        U 5      5      $ r.   r’  r0   s    r*   r  ÚIRect.__hash__iC  r”  r,   Nr0  c          
     óP   • [        XqX#XEUS.6u  U l        U l        U l        U l        g )Nr0  )Úutil_make_irectr°  r²  r¯  r±  r3  s           r*   r‘   ÚIRect.__init__lC  s%   € Ü-<¸tÈrÐ]_ÐkmÒ-nÑ*ˆŒ�”˜$œ' 4¥7r,   c                ó   • grç  r/   r0   s    r*   rÏ  ÚIRect.__len__oC  r×  r,   c                óH   • [         R                  X5      R                  5       $ r.   )r,  rÚ  rÉ  r¸  s     r*   rÚ  ÚIRect.__mul__rC  rÜ  r,   c                óv   • [        U R                  * U R                  * U R                  * U R                  * 5      $ r.   )rq  r°  r²  r¯  r±  r0   s    r*   rÝ  ÚIRect.__neg__uC  s+   € Ü�d—g‘g�X §¡˜x¨$¯'©'¨°D·G±G°8Ó<Ð<r,   c                óH   • [         R                  X5      R                  5       $ r.   )r,  r@  rÉ  r:  s     r*   r@  ÚIRect.__or__xC  s   € Ü�{‰{˜4Ó#×)Ñ)Ó+Ð+r,   c                ó   • [        U 5      $ r.   )rq  r0   s    r*   rã  ÚIRect.__pos__{C  r  r,   c                ó0   • S[        [        U 5      5      -   $ )Nrq  ræ  r0   s    r*   rð   ÚIRect.__repr__~C  r¥  r,   c                ó–   • [        U5      nUS:X  a  X l        g US:X  a  X l        g US:X  a  X l        g US:X  a  X l        g [        S5      er÷  )r9   r°  r²  r¯  r±  rž  rê  s      r*   rë  ÚIRect.__setitem__�C  s_   € Ü�‹FˆØ�!‹V˜q”Wð ð �!‹V˜q”Wð
 ð	 �!‹V˜q”Wð ð �!‹V˜q”Wð ô Ð1Ó2Ð2r,   c                óH   • [         R                  X5      R                  5       $ r.   )r,  rî  rÉ  r‡  s     r*   rî  ÚIRect.__sub__‹C  rÜ  r,   c                óH   • [         R                  X5      R                  5       $ r.   )r,  rõ  rÉ  r¸  s     r*   rõ  ÚIRect.__truediv__ŽC  s   € Ü×Ñ Ó(×.Ñ.Ó0Ð0r,   c                óB   • [        U R                  U R                  5      $ rN  rO  r0   s    r*   r½  ÚIRect.bottom_left‘C  rQ  r,   c                óB   • [        U R                  U R                  5      $ rS  rT  r0   s    r*   rº  ÚIRect.bottom_right–C  rQ  r,   c                óH   • [        SU R                  U R                  -
  5      $ rŒ   r\  r0   s    r*   r2  ÚIRect.height›C  r^  r,   c                ó$   • U R                  U5      $ )zCheck if x is in the rectangle.rW  r:  s     r*   rX  ÚIRect.containsŸC  rZ  r,   c                óD   • [        U R                  U R                  U5      $ r`  ra  r�  s     r*   rc  ÚIRect.get_area£C  re  r,   c                óP   • U R                   R                  U5      nUR                  $ )z$Extend rectangle to include point p.)rý   r>  r¢  )r)   r³  rý   s      r*   r>  ÚIRect.include_point§C  s    € à�y‰y×&Ñ& qÓ)ˆØ�z‰zÐr,   c                óP   • U R                   R                  U5      nUR                  $ )z(Extend rectangle to include rectangle r.)rý   r?  r¢  )r)   r%  rý   s      r*   r?  ÚIRect.include_rect¬C  s    € à�y‰y×%Ñ% aÓ(ˆØ�z‰zÐr,   c                óH   • [         R                  X5      R                  5       $ )z4Restrict rectangle to intersection with rectangle r.)r,  r   rÉ  r  s     r*   r   ÚIRect.intersect±C  s   € ä�~‰~˜dÓ&×,Ñ,Ó.Ð.r,   c                ó,   • [         R                  X5      $ r.   )r,  rq  r:  s     r*   rq  ÚIRect.intersectsµC  s   € Ü�‰˜tÓ'Ð'r,   c                ót   • U R                   U R                  :¬  =(       d    U R                  U R                  :¬  $ rt  ru  r0   s    r*   r�  ÚIRect.is_empty¸C  rw  r,   c                óÄ   • U R                   U R                  s=:H  =(       a	    [        :H  Os  =(       a-    U R                  U R                  s=:H  =(       a	    [
        :H  $ s  $ )zTrue if rectangle is infinite.ry  r0   s    r*   r€  ÚIRect.is_infinite½C  r{  r,   c                ót   • U R                   U R                  :*  =(       a    U R                  U R                  :*  $ r}  ru  r0   s    r*   r~  ÚIRect.is_validÂC  r€  r,   c                ón   • U R                   (       a
  [        5       $ U R                  R                  X5      $ r‚  rƒ  r„  s      r*   r'  ÚIRect.morphÇC  r†  r,   c           	     óp   • [         R                  " [        U  Vs/ s H  oU-  PM	     sn5      5      $ s  snf r.   r«  r¯  s     r*   r  Ú
IRect.normÏC  r²  r³  c                óú   • U R                   U R                  :  a#  U R                   U R                  sU l        U l         U R                  U R                  :  a#  U R                  U R                  sU l        U l        U $ )z)Replace rectangle with its valid version.rG  r0   s    r*   r  ÚIRect.normalizeÒC  r‹  r,   c                ón   • [        U R                  U R                  U R                  U R                  5      $ r�  rŽ  r0   s    r*   rI  Ú
IRect.quadÚC  r�  r,   c                ó   • [        U 5      $ r.   rC  r0   s    r*   rý   Ú
IRect.rectßC  s   € ä�D‹zÐr,   c                óB   • [        U R                  U R                  5      $ r•  r–  r0   s    r*   r¹  ÚIRect.top_leftãC  rQ  r,   c                óB   • [        U R                  U R                  5      $ r™  rš  r0   s    r*   r¼  ÚIRect.top_rightèC  rQ  r,   c           	     óÂ  • [        U5      nU R                  (       d3  U R                  (       d"  UR                  (       d  UR                  (       a  [        S5      e[	        SSSSU R
                  * U R                  * 5      [	        UR                  U R                  -  UR                  U R                  -  5      -  [	        SSSSUR
                  UR                  5      -  $ r�  rž  r  s     r*   rŸ  ÚIRect.torectíC  sž   € ä�‹GˆØ××˜tŸ}Ÿ}°··ÀÇÇÜÐFÓGÐGä�q˜!˜Q  D§G¡G 8¨d¯g©g¨XÓ6Ü˜Ÿ™ 4§:¡:Ñ-¨q¯x©x¸$¿+¹+Ñ/EÓFñGä˜˜A˜q ! Q§T¡T¨1¯4©4Ó0ñ1ð	r,   c                óH   • [         R                  X5      R                  5       $ r.   )r,  rÙ  rÉ  r¸  s     r*   rÙ  ÚIRect.transformøC  s   € Ü�~‰~˜dÓ&×,Ñ,Ó.Ð.r,   c                óH   • [        SU R                  U R                  -
  5      $ rŒ   r¥  r0   s    r*   r‰  ÚIRect.widthûC  r^  r,   ru  r§  )1r2   r3   r4   r5   r*  r¹  r!  rz  rÂ  r�  r  r‘   rÏ  rÚ  rÝ  r@  rã  rð   rë  rî  rõ  ry  r½  rº  r2  rX  rc  r>  r?  r   rq  r�  r€  r~  r'  r  r  rI  rý   r¹  r¼  rŸ  rÙ  r‰  r%  rW  r$  r9  r6   r/   r,   r*   rq  rq  NC  s“  † ñò-ò-ò*òkò
7ò!ð "&¨$°4¸DÀTÈdõ oòò-ò=ò,òò*òò-ò1ð ñ'ó ð'ð ñ'ó ð'ð ñ)ó ð)ò$ô9òò
ò
/ò(ð ñ8ó ð8ð ñ_ó ð_ð ñ9ó ð9ò%ò3òð ñ8ó ð8ð ñó ðð ñ'ó ð'ð ñ'ó ð'ò	ò/ð ñ)ó ð)ð 
€BØ	€BØ	€BØ	ƒBr,   rq  )ÚPDF_ÚUCDN_SCRIPT_ÚPDF_ENUM_NAME_)ÚCourierúCourier-ObliqueúCourier-BoldúCourier-BoldObliqueÚ	HelveticaúHelvetica-ObliqueúHelvetica-BoldúHelvetica-BoldObliqueúTimes-RomanúTimes-Italicú
Times-BoldúTimes-BoldItalicr&  r%  r/  r½  r0  Úheitr1  Úhebor2  Úhebir+  Úcourr,  Úcoitr-  Úcobor.  Úcobir3  Útiror5  Útibor4  Útiitr6  Útibir&  Úsymbr%  Úzadbr  i   €i€ÿÿÚfitzr   r   rr  r   r   r*  r$  é@   r§  r   r’  é
   r¢  r  é   )r   é   r   )r   rH  r   ÚColorÚ	ColorBurnÚ
ColorDodgeÚDarkenÚ
DifferenceÚ	ExclusionÚ	HardLightÚHueÚLightenrl  ÚMultiplyÚNormalÚOverlayÚ
SaturationÚScreenÚ	Softlightc                ó0   • SU  S[        XU45       SU S3$ )Nz<</A<</S/GoTo/D[z	 0 R/XYZ z	]>>/Rect[ú]/BS<</W 0>>/Subtype/Link>>rÒ  )r!   r  rö  rD  ri  s        r*   r«
  r«
  .E  s2   € Ð)9¸!¸¸IÄiÐQRÐWXÐPYÓFZÐE[Ð[dÐefÐdgð  hCñ  (Dr,   c                ó   • SU  SU S3$ )Nz<</A<</S/GoTo/Dz>>/Rect[rY  r/   rÓ  s     r*   r«
  r«
  /E  s   €  °¨s°(¸1¸#Ð=XÑYr,   c                ó<   • SU  S[        XU45       SU SU SU S3$ )Nz<</A<</S/GoToR/D[z /XYZ z]/F<</F(ú)/UF(ú)/Type/Filespec>>>>/Rect[rY  rÒ  rü  s          r*   r«
  r«
  0E  sP   € Ð0AÀ!ÀÀFÌ9ÐVWÐ\]ÐU^ÓK_ÐJ`Ð`hÐijÐhkÐkpÐqrÐpsð  tMð  NOð  MPð  Pkñ  /lr,   c                ó   • SU  SU SU S3$ )Nz<</A<</S/GoToR/Dz/F(ú	)>>/Rect[rY  r/   ©r!   r  rö  s      r*   r«
  r«
  1E  s   € Ð$4°Q°C°s¸1¸#¸YÀqÀcÐIdÑ"er,   c                ó   • SU  SU SU S3$ )Nz<</A<</S/Launch/F<</F(r\  r]  rY  r/   r`  s      r*   r«
  r«
  2E  s   € Ð$:¸1¸#¸UÀ1À#ÐE^Ð_`Ð^aÐa|Ñ"}r,   c                ó   • SU  SU S3$ )Nz<</A<</S/URI/URI(r_  rY  r/   rÓ  s     r*   r«
  r«
  3E  s   € Ð/°¨s°)¸A¸3Ð>YÑZr,   c                ó   • SU  SU S3$ )Nz<</A<</S/GoTo/D(z)/Type/Action>>/Rect[rY  r/   rÓ  s     r*   r«
  r«
  4E  s   € Ð 0°°Ð3HÈÈÐKfÑgr,   )r  Úgoto2r  r  r  r  rÜ  c                  ó   • \ rS rSrSrSrg)r¸  i7E  z0Raised for documents with file structure issues.r/   N©r2   r3   r4   r5   r*  r6   r/   r,   r*   r¸  r¸  7E  s   † Ù:Úr,   r¸  c                  ó   • \ rS rSrSrSrg)rº  i;E  zRaised if file does not exist.r/   Nrf  r/   r,   r*   rº  rº  ;E  s   † Ù(Úr,   rº  c                  ó   • \ rS rSrSrSrg)r´  i?E  z5Raised when creating documents from zero-length data.r/   Nrf  r/   r,   r*   r´  r´  ?E  s   † Ù?Úr,   r´  r  r  Úbidir7  r  rš  rö  rF  ro  rò  r§  r©  zcs-nameÚdar‹  Údescriptionr  r´  ÚeffectrÜ  rk   r  rÑ  Ú
char_flagsrÜ  rá  r2  r[  r´  rG   rÉ  rZ  rÙ  rª  r   r;  rÐ  rý   rÊ  rì  Úspansr•  rŠ  r«  r   r¨  rÉ   rS  r‰  r
  r  r¸  r¹  )ÚfontdescriptorsÚfontbuffersÚloader(   ©é·   gq=
×£pÝ?rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  )r$  ç      Ð?)rE  çZd;ßOÕ?)é"   ç7‰A`åÐæ?)é#   rS  )rÚ
  çÅ °rh‘á?)é%   ç-²�ï§ê?)é&   gL7‰A`åè?)é'   çj¼t“Ü?)r
  ru  )é)   ru  )é*   rS  )é+   ry  )é,   rt  )é-   ry  )é.   rt  )é/   ç˜nƒÀÊÑ?)é0   rS  )é1   rS  )r¿  rS  )é3   rS  )é4   rS  )é5   rS  )é6   rS  )é7   rS  )é8   rS  )é9   rS  )é:   r†  )é;   r†  )é<   ry  )é=   ry  )é>   ry  )é?   gÑ"Ûù~jÜ?)rE  ry  )éA   ç´Èv¾Ÿç?)éB   çòÒMbXå?)éC   r—  )éD   g/Ý$�•ã?)éE   çZd;ßO�ã?)éF   çÑ"Ûù~jè?)éG   ç²�ï§ÆKã?)rä  r—  )éI   ru  )éJ   çþÔxé&1ä?)éK   r—  )éL   çÁÊ¡E¶óå?)éM   g¦›Ä °rì?)éN   r—  )éO   r—  )éP   çú~j¼t“è?)éQ   gƒÀÊ¡E¶ç?)éR   g˜nƒÀÊá?)éS   g‹lçû©ñâ?)éT   r�  )éU   ç®Gázæ?)éV   r~  )éW   r¬  )éX   g¤p=
×£ä?)éY   çq=
×£pé?)rî  r�  )é[   ru  )é\   gV-²�ë?)é]   ru  )é^   çu“Vå?)r  rS  )é`   rS  )éa   r¤  )éb   ry  )r×  ry  )r¯	  çV-²�ß?)ée   r~  )éf   çyé&1¬à?)ég   ççû©ñÒMÚ?)éh   r¡  )éi   çu“VÕ?)éj   r¡  )ék   ry  )él   ry  )ém   ç;ßO�—nâ?)én   rÃ  )éo   ry  )ép   ry  )éq   rÃ  )ér   ry  )és   r¡  )ét   r~  )éu   rÍ  )év   rw  )éw   r§  )éx   gZd;ßO�ß?)éy   r§  )éz   rÀ  )é{   ç¸…ëQ¸Þ?)é|   r¨  )é}   rÜ  )é~   ry  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  rr  )é    rt  )é¡   g×£p=
×ã?)é¢   gV-²�Ï?)é£   ry  )é¤   gÇK7‰A`Å?)é¥   rw  )é¦   rS  )é§   çj¼t“è?)é¨   rè  )é©   rè  )éª   rè  )é«   çyé&1¬ð?)é¬   rw  )é­   r¡  )é®   ç/Ý$�•ï?)é¯   r¡  )é°   gš™™™™™Ù?)é±   ry  )é²   rÅ  )é³   ry  )r…  ry  )éµ   rÍ  )é¶   rÀ  rr  )é¸   ry  )é¹   ry  )éº   ry  )é»   ry  )é¼   r   )r  r¡  )é¾   r   )é¿   r¼  )éÀ   ç¼t“Vê?)éÁ   r§  )éÂ   r·  )éÃ   rñ  )éÄ   r¬  )éÅ   r¬  )éÆ   r  )éÇ   r¬  )éÈ   r¬  )éÉ   rw  )éÊ   rw  )éË   rw  )éÌ   rw  )éÍ   rw  )éÎ   rw  )éÏ   rw  )éÐ   r¬  )éÑ   rw  )éÒ   çHáz®Gé?)éÓ   r  )éÔ   g{®Gázì?)éÕ   r  )éÖ   ry  )é×   ry  )éØ   rw  )éÙ   r¡  )éÚ   r¡  )éÛ   rí  )éÜ   rñ  )éÝ   r¡  )éÞ   rñ  )éß   r¡  )éà   rÀ  )éá   rÈ  )éâ   r  )éã   r  )éä   çôýÔxé&é?)éå   rw  )éæ   çú~j¼t“Ø?)éç   r*  )éè   r*  )éé   r*  )éê   r*  )éë   r*  )éì   rÀ  )éí   rÀ  )éî   rÀ  )éï   rÀ  rr  )éñ   rÈ  )éò   gð§ÆK7‰Ñ?)éó   r§  )éô   r§  )éõ   r§  )éö   r*  )é÷   ry  )éø   r*  )éù   r*  )éú   r*  )éû   r*  )éü   rÀ  )éý   rÀ  )éþ   rÀ  rr  (   ©rs  çžï§ÆK7é?rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  )r$  r†  )rE  ç^ºI+ï?)rv  g�—nƒÀî?)rx  rD  )rÚ
  g\�Âõ(\ï?)rz  g5^ºIç?)r|  çsh‘í|?é?)r}  r  )r
  çZd;ßOé?)r  r²  )r€  g¸…ëQ¸î?)r�  g?5^ºIî?)r‚  ry  )rƒ  g\�Âõ(\ë?)r„  çôýÔxé&í?)r…  gB`åÐ"Ûí?)r‡  rG  )rˆ  g=
×£p=î?)r¿  rD  )r‰  g)\�Âõ(è?)rŠ  gßO�—në?)r‹  çü©ñÒMbè?)rŒ  ç'1¬Zè?)r�  gƒÀÊ¡Eâ?)rŽ  gD‹lçû©å?)r�  rŸ  )r�  çR¸…ëQè?)r‘  ç}?5^ºIè?)r’  gTã¥›Ä è?)r“  rÀ  )r”  gD‹lçû©á?)r•  gÉv¾Ÿ/á?)rE  gX9´Èvâ?)r–  g¾Ÿ/Ý$æ?)r˜  r'  )rš  rC  )r›  rC  )rœ  r  )rž  gÇK7‰A`é?)r   gœÄ °rhé?)rä  çé&1¬ê?)r¢  r  )r£  rE  )r¥  g¶óýÔxéê?)r¦  r  )r¨  r{  )r©  rL  )rª  çd;ßO�—ê?)r«  gð§ÆK7‰í?)r­  g+‡ÙÎç?)r®  g‰A`åÐ"ç?)r¯  g+‡ÙÎ÷ç?)r°  r  )r±  çòÒMbXé?)r³  g=
×£p=æ?)r´  ç¢E¶óýÔè?)rµ  r¬  )r¶  rN  )rî  rK  )r¸  ç9´Èv¾Ÿæ?)r¹  g-²�ï§æ?)rº  gmçû©ñÒå?)r»  g;ßO�—næ?)r  g;ßO�—nê?)r½  g®Gázê?)r¾  rE  )r¿  rE  )r×  rP  )r¯	  g–C‹lçûå?)rÁ  çƒÀÊ¡Eæ?)rÂ  g?5^ºIæ?)rÄ  r'  )rÆ  gÉv¾Ÿ/é?)rÇ  rw  )rÉ  rF  )rÊ  g…ëQ¸é?)rË  rF  )rÌ  çV-²�ïë?)rÎ  rI  )rÏ  rH  )rÐ  rH  )rÑ  rK  )rÒ  rK  )rÓ  ç%�•C‹ì?)rÔ  rS  )rÕ  rC  )rÖ  gJ+‡é?)r×  gÕxé&1Ü?)rØ  gD‹lçû©Á?)rÙ  gî|?5^ºÑ?)rÚ  g�Âõ(\�Ú?)rÛ  çJ+‡Ù?)rÝ  rT  )rÞ  çÇK7‰A`å?)rß  rU  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  )rá  g�•C‹lç?)râ  çœÄ °rhá?)rã  rV  )rä  g…ëQ¸í?)rå  r™  )ræ  rJ  )rç  rJ  )ré  rO  )rê  g
×£p=
ã?)rë  gh‘í|?5æ?)rì  gÕxé&1ä?)rî  rC  )rï  rC  )rð  rC  )rò  rC  )ró  rC  )rô  rC  )rõ  rC  )rö  rC  )r…  rC  )r÷  rC  )rø  rC  rB  )rù  rC  )rú  rC  )rû  rC  )rü  rC  )rý  rC  )r  rC  )rþ  rC  )rÿ  rC  )r   rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r	  rC  )r
  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  rC  )r  gÏ÷Sã¥›ì?)r  g7‰A`åÐê?)r  g¨ÆK7‰Að?)r  gZd;ßOÝ?)r  çV-²�ïç?)r  çÅ °rh‘í?)r  rW  )r  gÇK7‰A`í?)r  çD‹lçû©í?)r  çV-²í?)r   rZ  )r!  gã¥›Ä °ê?)r"  rR  )r#  gåÐ"Ûù~ê?)r$  rX  )r%  rX  )r&  gòÒMbXí?)r(  gÃõ(\�Âí?)r)  g˜nƒÀÊí?)r+  goƒÀÊ¡Ý?)r,  g¨ÆK7‰Aì?)r-  ç�—nƒÀê?)r.  r[  )r/  çX9´Èv¾ë?)r0  r\  )r1  rQ  )r2  rQ  )r3  ç+‡ÙÎ÷ë?rB  )r4  r]  )r5  rJ  )r6  gƒÀÊ¡Eî?)r7  çyé&1¬è?)r8  g®Gáz®ë?)r9  r^  )r:  çÑ"Ûù~jì?)r;  g‹lçû©ñî?)r<  r_  )r=  rM  )r>  rR  )r?  rY  )r@  g
×£p=
ï?rB  rB  c                ó^   • U(       a  US   OSnSSSSS.nXC   S   XC   S   -  S	-  nXP-  U-  $ )
Nr   rà  )r   r   r±  r³  r´  rµ  r   r   r/   )r‰  r2  r  r¾  r¿  r  s         r*   rb  rb  ™G  sE   € æˆ4�Š7 €DØ˜[°ÀLÑQ€AØ	
‰�‰�a‘g˜a‘jÑ	  QÑ&€AØ‰9�vÑÐr,   c                ó¾   • / nU R                  5       (       d  U$ [        U5       H+  nUR                  [        R                  " XU-   5      5        M-     [        U5      $ r.   )rš  rT  rp   r£   r‚  r   )r¡  rê  rJ   rL   rh  s        r*   Ú_read_samplesrb   G  sN   € ð €CØ�>‰>×Ñàˆ
Ü�AŽYˆØ�
‰
”E×(Ò(¨&¸1±*Ó=Ö>ñ ä�#‹;Ðr,   c                ó    • X:*  =(       a    X:*  $ r.   r/   )rK   ÚlowÚhighs      r*   rÕ  rÕ  ¬G  s   € Ø‰8×!˜™	Ð!r,   c           
     ó,  • [         R                  " U 5      n[        U5       GHn  nUnXA;   a  M  [         R                  " X5      n[         R                  " U[        S5      5      nUR                  (       d  MV  [         R                  " U5      n[        US-
  SS5       GHí  n[         R                  " Xh5      n	[         R                  " [         R                  " U	[        S5      5      [        S5      5      (       d  M_  [         R                  " U	[        S5      5      n
[         R                  " U	[        S5      5      nU
R                  (       ae  [         R                  " [         R                  " U
[        S5      5      [        S	5      5      (       d  Mõ  [         R                  " U
[        S
5      5      nSn[         R                  " U5      (       a.  [         R                  " US5      n[         R                  " X5      nOd[         R                  " U5      (       aI  [         R                  " U R                  5       [         R                  " U5      5      u  n  nUR                   nUS:  a  GMÍ  UnXA;   d  GM×  [         R"                  " Xh5        GMð     GMq     g )Nr§  r   r¨  r¶  rm  rÄ  rÃ  rJ
  ÚGoTorÅ  r   )r£   r  rT  r  r  r  rÍ   r¬  r­  rÖ  r<  Úpdf_lookup_page_numberr€  r½	  rÈ   r	  r×   r®  )rb  r>  Ú	pagecountrh  r  r
  r°  r·  r�  r²  rS  rþ	  ry  ry  r  r<  s                   r*   r=  r=  °G  sß  € Ü×%Ò% cÓ*€IÜ�9×ˆØˆØ‹=Ùä×+Ò+¨SÓ4ˆÜ×#Ò# W¬h°xÓ.@ÓAˆØ× × ÙÜ×"Ò" 6Ó*ˆÜ�t˜a‘x  R×(ˆAÜ×#Ò# VÓ/ˆAÜ×$Ò$¤e×&8Ò&8¸!¼XÀiÓ=PÓ&QÔS[Ð\bÓSc×dÑdÙÜ×'Ò'¨¬H°S«MÓ:ˆFÜ×%Ò% q¬(°6Ó*:Ó;ˆDØ× × Ü×(Ò(¬%×*<Ò*<¸fÄhÈsÃmÓ*TÔV^Ð_eÓVf×gÑgÙÜ×)Ò)¨6´8¸C³=ÓA�ØˆCÜ×!Ò! 4×(Ñ(Ü×,Ò,¨d°AÓ6�Ü×2Ò2°CÓ@‘Ü×$Ò$ d×+Ñ+Ü!&×!6Ò!6¸¿	¹	»ÄU×E]ÒE]Ð_cÓEdÓ!e‘�˜!˜QØ—m‘m�Ø�Q‹wÚØˆBØŽ}Ü×&Ò&¨×2ô+ )ò r,   c                óÒ   • [        U [        R                  [        R                  45      (       d   S[	        U 5      < SU < 35       eU R
                  (       d  [        [        5      eg )Nztype(cond)=z cond=)rC   r£   rÔ   rÇ   rÉ   rÍ   rl   ÚMSG_IS_NO_PDF)Úconds    r*   Ú
ASSERT_PDFrm  ÔG  sT   € Ü�dœUŸ]™]¬E×,=Ñ,=Ð>×?Ñ?ÐYÀKÄDÈÃJÁ=ÐPWÐRVÑQXÐAYÓYÐ?Ø�?�?ÜœÓ&Ð&ð r,   c                 ó>   • [        [        [        [        [        5      $ r.   )rq  r‡  r†  r/   r,   r*   ÚEMPTY_IRECTro  ÚG  ó   € Ü”¤/´?ÄOÓTÐTr,   c                 ó*   • [        5       R                  $ r.   )Ú
EMPTY_RECTrI  r/   r,   r*   Ú
EMPTY_QUADrs  ÞG  s   € Ü‹<×ÑÐr,   c                 ó>   • [        [        [        [        [        5      $ r.   )r,  r‡  r†  r/   r,   r*   rr  rr  âG  ó   € Ü”¤´/Ä?ÓSÐSr,   c                ó:   • [        U 5      (       d  [        S5      eg )Nz No journalling operation started)ÚJM_have_operationrl   ©rb  s    r*   rB  rB  æG  s   € Ü˜S×!Ñ!ÜÐ:Ó;Ð;ð "r,   c                 ó>   • [        [        [        [        [        5      $ r.   )rq  r†  r‡  r/   r,   r*   ÚINFINITE_IRECTrz  ëG  rp  r,   c                 ó*   • [        5       R                  $ r.   )r'  rI  r/   r,   r*   r
  r
  ïG  s   € Ü‹?×ÑÐr,   c                 ó>   • [        [        [        [        [        5      $ r.   )r,  r†  r‡  r/   r,   r*   r'  r'  óG  ru  r,   c                ót   • [        U [        R                  5      (       d   e[        R                  " U 5      nU$ )z+
Turn fz_buffer into a Python bytes object
)rC   r£   r4  r  )r5  rL   s     r*   r$  r$  ÷G  s0   € ô �gœuŸ~™~×.Ñ.Ð.Ð.Ü
×
&Ò
& wÓ
/€CØ€Jr,   c                ó¶   • U c  g[        U [        5      (       d   S[        U 5      < 35       eU R                  SS5      nSnU H  nU[	        U5      -  nM     U$ )Nra   ztype(c)=r  Úsurrogateescape)rC   rè  rÉ   rþ  r+  )rö  r  rL   Úbbs       r*   rÄ  rÄ   H  s`   € ð& 	�yØÜ�aœ×ÑÐ, (¤$ q£'¡˜}Ó,ÐØ	�‰�Ð*Ó+€AØ
€CÛˆØŒs�2‹w‰Šñ à€Jr,   c                óˆ  • [        U [        [        45      (       a  U nO�[        U S5      (       ai  U R	                  5       n[        U[
        5      (       a  UR                  S5      n[        U[        [        45      (       d  [        S[        U5       35      eO[        R                  " 5       $ [        R                  " U5      $ )z‚
Make fz_buffer from a PyBytes, PyByteArray or io.BytesIO object. If a text
io.BytesIO, we convert to binary by encoding as utf8.
rÂ  r  z&.getvalue() returned unexpected type: )rC   r   r§  r@   rÂ  rè  rþ  rl   rÉ   r£   r4  rã  )r	   rÉ  s     r*   r/  r/  H  s�   € ô
 �&œ5¤)Ð,×-Ñ-Ø‰Ü	�˜×	$Ñ	$Ø�‰Ó ˆÜ�dœC× Ñ Ø—;‘;˜wÓ'ˆDÜ˜$¤¬	Ð 2×3Ñ3ÜÐDÄTÈ$ÃZÀLÐQÓRÐRð 4ô �~Š~ÓÐÜ×/Ò/°Ó5Ð5r,   c                ó>   • [        U 5      (       d  g [        X   5      $ r.   )r  rœ  )r  rä  s     r*   ÚJM_FLOAT_ITEMrƒ  /H  s   € Ü˜C× Ñ ØÜ�‘‹?Ðr,   c                óh   • U[        U 5      :  a#  X   n[        U[        [        45      (       a  SU4$ g)Nr   r%  )r<   rC   r9   rœ  )r  rä  r  s      r*   rì  rì  4H  s1   € Ø
ŒS�‹Xƒ~Ø‰xˆÜ�dœS¤%˜L×)Ñ)Ø�d�7ˆNØr,   c                ól  • SnSnSn	Sn
U
(       a  UnOUnSnUn[        U5      n[        R                  " U5      n[        U5      n[        R                  " UU5      n[        R
                  " Xþ5      n[        R                  " U5      n[        R                  " U 5      nUR                  (       aD  [        R                  " U5      [        R                  " U5      :X  a  [        R                  " U5      nX·:w  Ga;  [        R                  " U5      nUR                  (       a�  [        R                  " U5      nX¹:X  a9  [        U5       H)  n[        R                  " UU[        R                  5        M+     OÀ[        U5       H)  n[        R                  " UU[        R                   5        M+     O‡[        R"                  " U5      (       a  [        R$                  " S5      nOUUR                  (       aD  [        R                  " U5      [        R                  " U5      :w  a  [        R$                  " S5      n[        R&                  " UUXÄ5      nU(       a  [        R(                  " U5        O[        R*                  " US5        [        R,                  " UU5      nU(       a@  [        R.                  " UU[        R0                  " 5       [        R2                  " 5       5        O?[        R4                  " UU[        R0                  " 5       [        R2                  " 5       5        [        R6                  " U5        U$ )zZ
Pixmap creation directly using a short-lived displaylist, so we can support
separations.
r   r   r   TNr  )rê  r£   r}  r  Úfz_intersect_rectrà  Úfz_round_rectÚfz_document_output_intentrÍ   rA  Úfz_keep_colorspaceÚfz_page_separationsÚfz_count_separationsrT  Úfz_set_separation_behaviorÚFZ_SEPARATION_SPOTÚFZ_SEPARATION_COMPOSITEÚfz_page_uses_overprintÚfz_new_separationsrr  r¾  r¿  rN  r�  r}  rl  Úfz_run_page_contentsr‚  )r2  r×   rõ  rö  ró  r°  r  Ú
SPOTS_NONEÚSPOTS_OVERPRINT_SIMÚ
SPOTS_FULLÚFZ_ENABLE_SPOT_RENDERINGÚspotsr�  rò  rð  rý   Úrclipr7  ÚoirJ   rh  r÷  r…  s                          r*   rÉ  rÉ  <H  sL  € ð
 €JØÐØ€Jà#ÐÞØ#‰àˆà€DØ€Jä˜sÓ#€FÜ×Ò˜tÓ$€DÜ˜DÓ!€EÜ×"Ò" 4¨Ó/€DÜ×"Ò" 4Ó0€DÜ×Ò˜tÓ$€Dô 
×	(Ò	(¨Ó	-€Bà	‡}‡}Ü× Ò  Ó$¬×(=Ò(=¸bÓ(AÓAÜ×1Ò1°"Ó5ˆJð ÔÜ×(Ò(¨Ó.ˆØ�?�?Ü×*Ò*¨4Ó0ˆAØÓ"Ü˜qž�AÜ×4Ò4°T¸1¼e×>VÑ>VÖWò "ô ˜qž�AÜ×4Ò4°T¸1¼e×>[Ñ>[Ö\ò "ä×)Ò)¨$×/Ñ/ô ×+Ò+¨AÓ.‰DØ�]�]œu×4Ò4°RÓ8¼E×<QÒ<QÐR\Ó<]Ó]ô
 ×+Ò+¨AÓ.ˆDä
×
'Ò
'¨
°D¸$Ó
F€CæÜ×Ò˜cÕ"ä×(Ò(¨¨dÔ3ä
×
"Ò
" 6¨3Ó
/€CÞÜ×Ò˜$ ¤U§^¢^Ó%5´u·~²~Ó7GÕHä×"Ò" 4¨¬e¯nªnÓ.>ÄÇÂÓ@PÔQÜ	×Ò˜#ÔØ€Jr,   c                ó   • U $ r.   r/   r©  s    r*   rS  rS  ‚H  s   € à€Hr,   c                ó.   • [        [        S U 5      5      $ )Nc                ó<   • [        U 5      S:¼  a  [        U S5      $ S$ )Ng-Cëâ6?r   r   ©r&  rÉ  r©  s    r*   r«
  ÚJM_TUPLE.<locals>.<lambda>‰H  ó   € ¬c°!«f¸«nœu Q¨›{ÐCÀ!ÐCr,   ©r¶   r  ©r²  s    r*   r7  r7  ˆH  ó   € Ü”ÑCÀQÓGÓHÐHr,   c                ó.   • [        [        S U 5      5      $ )Nc                ó<   • [        U 5      S:¼  a  [        U S5      $ S$ )NrØ  r   r   rœ  r©  s    r*   r«
  ÚJM_TUPLE3.<locals>.<lambda>�H  rž  r,   rŸ  r   s    r*   Ú	JM_TUPLE3r¥  ŒH  r¡  r,   c                ó´   • U c  g[        U [        5      (       a  U R                  S5      n [        U [        5      (       d   S[	        U 5      < SU < 35       eU $ )Nra   r  ztype(s)=z s=)rC   r   rÉ  rè  rÉ   ©rŸ  s    r*   r
  r
  �H  sS   € Ø�yØÜ�!”U×ÑØ�H‰H�VÓˆÜ�aœ×ÑÐ1 (¤$ q£'¡¨4¨Q©DÐ1Ó1ÐØ€Hr,   c                óœ  • [        U [        R                  5      (       d   e[        U 5      n[        R                  " U 5      n[        U5      nSn [         SU U 3nXd;  a  OUS-  nM  [        U5      n[        R                  " U[        U5      5      n[        R                  " USU5        SUR                  5       R                  l        g)zs
Add a unique /NM key to an annotation or widget.
Append a number to 'stem' such that the result is a unique name.
r   r   Ú-r1  N)rC   r£   rå   rá   r  rB  ÚJM_annot_id_stemrS  Úpdf_new_stringr<   r°  r2  rÍ   rY  )	rà   Ústemr×   r'  rf  rh  Ústem_idÚresponser   s	            r*   r÷  r÷  ™H  s»   € ô
 �eœUŸ^™^×,Ñ,Ð,Ð,Ü˜5Ó!€DÜ×#Ò# UÓ+€IÜ  Ó&€EØ	€AØ
Ü%Ð& a¨ v¨a¨SÐ1ˆØÓØØ	ˆQ‰ˆñ	 ô
 ˜GÓ$€HÜ×Ò ¬3¨x«=Ó9€DÜ	×Ò˜	 4¨Ô.Ø-.€D‡H�HƒJ×ÑÕ*r,   c                óÌ  • [         R                  " XS5      n[         R                  " U5      (       d  [        [        [
        5        [         R                  " U[        S5      5      n[         R                  " U[        S5      5      S:X  d$  [         R                  " U[        S5      5      S:X  a"  [         R                  " U[        S5      U5        g[        [        [
        5        g)z)
Add OC object reference to a dictionary
r   ró  ra  ÚOCMDrØ  N)
r£   r¹  r†  rÂ  ÚMSG_BAD_OC_REFrt	  r  r  rŠ  rV  )rb  r¯  r  Úindobjrc  s        r*   rÏ  rÏ  ®H  s�   € ô ×#Ò# C¨qÓ1€FÜ×Ò˜V×$Ñ$Ü”Ô 0Ô1Ü×Ò˜v¤x°Ó'7Ó8€EÜ×Ò˜¤¨£Ó0°AÓ5Ü×Ò ¤x°Ó'7Ó8¸AÓ=ä×Ò˜3¤¨£°Õ7ä”Ô 0Õ1r,   c                ó¬  • [        5       nS nSnSnS n[        R                  " U [        S5      5      n[        R                  " U5      (       a½  [        R
                  " [        R                  " US5      5      n[        R                  " U5      S:X  ax  [        R                  " US5      n[        [        R                  " U5      5       H>  n[        R                  " [        R                  " Xg5      5      nUR                  U5        M@     [        R                  " U [        S5      5      n	U	R                  (       Ga  [        R
                  " [        R                  " U	[        S5      5      5      n[        R                  " [        R                  " U	[        S5      5      5      nUS	:X  a  S n[        R                  " U	[        S
5      5      nUR                  (       aa  [        [        R                  " U5      5       H>  n[        R                  " [        R                  " XW5      5      nUR                  U5        M@     [        R                  " U [        S5      5      nUR                  (       a4  [        R                  " [        R                  " U[        S5      5      5      n[        5       n
X:[        '   [        U5      U
[         '   X*["        '   XJS'   U
$ )Nr¨  ÚBorderr   rr  r   ÚBSrõ
  rJ
  ra   rÅ  ÚBEÚIrŒ  )rµ   r£   r  r  r<  r  r­  r¬  rT  r  rp   rÍ   r…  r:   r  r¶   Údictkey_dashesÚdictkey_style)r'  Údash_pyrŠ  r‰  rŒ  r  Údashrh  r  Úbs_or&  s              r*   r’  r’  ¾H  s  € Ü‹f€GØ€EØ€EØ€FØ
€Cä
×
Ò
˜i¬°(Ó);Ó
<€CÜ×Ò˜3×ÑÜ×!Ò!¤5×#6Ò#6¸¸QÓ#?Ó@ˆÜ×Ò Ó$¨Ó)Ü×&Ò&¨¨QÓ/ˆDÜœE×/Ò/°Ó6Ö7�Ü×&Ò&¬×(;Ò(;¸TÓ(EÓF�Ø—‘ Ö$ñ 8ô ×Ò˜y¬(°4«.Ó9€DØ‡‡€Ü×!Ò!¤5×#5Ò#5°t¼XÀc»]Ó#KÓLˆÜ×!Ò!¤5×#5Ò#5°t¼XÀc»]Ó#KÓLˆØ�B‹;ØˆEÜ× Ò  $¬°«Ó6ˆØ�>�>ÜœE×/Ò/°Ó5Ö6�Ü×&Ò&¬×(;Ò(;¸SÓ(DÓE�Ø—‘ Ö$ñ 7ô ×
Ò
˜i¬°$«Ó
8€CØ
‡~‡~Ü×!Ò!¤5×#5Ò#5°s¼HÀS»MÓ#JÓKˆä
‹&€CØŒÑÜ  '›?€CŒÑØŒÑØˆ�NØ€Jr,   c                óÒ  • [        5       n[        5       n[        5       n[        R                  " U [        R                  5      n[        R
                  " U5      (       ac  [        R                  " U5      n[        U5       H>  n[        R                  " [        R                  " XF5      5      nUR                  U5        M@     X![        '   [        R                  " U S5      n[        R
                  " U5      (       ac  [        R                  " U5      n[        U5       H>  n[        R                  " [        R                  " XF5      5      nUR                  U5        M@     X1[        '   U$ )Nr;  )r:   rµ   r£   r  ÚPDF_ENUM_NAME_Cr<  r¬  rT  r  r­  rp   Údictkey_stroker  Údictkey_fill)r'  r&  ÚbcÚfcr²  rJ   rh  rg  s           r*   r£  r£  æH  s  € Ü
‹&€CÜ	‹€BÜ‹€BÜ×Ò˜9¤e×&;Ñ&;Ó<€AÜ×Ò˜!×ÑÜ×Ò Ó"ˆÜ�q–ˆAÜ×#Ò#¤U×%8Ò%8¸Ó%>Ó?ˆCØ�I‰I�cŽNñ ð ŒÑä×Ò˜I tÓ,€AÜ×Ò˜!×ÑÜ×Ò Ó"ˆÜ�q–ˆAÜ×#Ò#¤U×%8Ò%8¸Ó%>Ó?ˆCØ�I‰I�cŽNñ ð ŒÑØ€Jr,   c                óÆ  • [        U [        5      (       d   eS nSnU R                  [        5      nU R                  [        5      nU R                  [
        5      nU R                  SS5      n[        U5      n	[        R                  " U[        S5      5        [        R                  " U[        S5      5        [        R                  " U[        S5      5        US:  a  U	R                  [        5      nUc  U	R                  [        5      nUc  U	R                  [
        5      nUS:  a  U	R                  SS5      n[        U[        5      (       ay  [        U5      S:”  aj  [        U5      n[        R                  " X5      n
U H  n[        R                  " X«5        M     [        R                  " X*[        S5      [        S5      5        [        R                  " U[        R                  " U5      [        S5      [        S5      5        US:X  a  [!        U5      nO[        S5      n[        R                  " X#[        S5      [        S	5      5        US:”  a�  [        R"                  " U[        S5      S
5        [        R$                  " U[        S5      5      n[        R&                  " U[        S	5      [        S5      5        [        R(                  " U[        S5      U5        g g )Nr   rŒ  r¨  rµ  r¶  r´  rÅ  rõ
  rJ
  r   rþ  r·  )rC   r:   r=   r  r¸  r¹  r’  r£   rI  r  r¶   r<   rS  Úpdf_array_push_intrR  Úpdf_new_realÚJM_get_border_stylerZ  r  rV  rQ  )r•  r2  r'  r  ÚdashlenÚnwidthÚndashesÚnstyleÚncloudsÚoborderÚdarrrD  s               r*   r�  r�  ýH  s&  € Ü�fœd×#Ñ#Ð#Ð#Ø
€CØ€GØ�Z‰ZœÓ'€FØ�j‰jœ.Ó)€GØ�Z‰ZœÓ'€FØ�z‰z˜8 RÓ(€Gô ˜yÓ)€Gô 
×Ò˜	¤8¨D£>Ô2Ü	×Ò˜	¤8¨D£>Ô2Ü	×Ò˜	¤8¨HÓ#5Ô6ð �ƒzØ—‘œmÓ,ˆØ�Ø—+‘+œ~Ó.ˆØ�~Ø—+‘+œ}Ó-ˆØ�ƒ{Ø—;‘; ¨"Ó-ˆä�7œE×"Ñ"¤s¨G£}°qÓ'8Ü�w“-ˆÜ×"Ò" CÓ1ˆÛˆAÜ×$Ò$ dÖ.ñ ä×Ò˜Y¬h°t«n¼hÀs»mÔLä	×ÒØÜ×Ò Ó'Ü�T‹NÜ�S‹Mô	ð �!ƒ|Ü! 6Ó*‰ä�s‹mˆÜ	×Ò˜¬°$«¼À#»ÔGà�ƒ{Ü×Ò ¬H°T«N¸AÔ>Ü× Ò  )¬X°d«^Ó<ˆÜ×Ò˜C¤¨#£´¸³Ô>Ü×Ò ¤X¨c£]°GÕ<ð	 r,   c                ó”   • U S:X  a  gSU s=::  a  S::  d  O  U S:X  a  [        U 5      $ SU s=::  a  S::  a   g  U S	::  a  S
U S 3$ SU S 3$ )Nr¹  z\u005cr$  é   rF  i Ø  iÿß  z\ufffdéÿÿ  z\ur  z\UÚ08x©r+  ©r  s    r*   Úmake_escaperÔ  3I  s^   € Ø	ˆRƒxØØ	ˆr��S�˜B "›HÜ�2‹wˆØ	�2Õ	˜Ô	Øð 
 à	ˆv‹Ø�R˜�Hˆ~Ðà�R˜�Hˆ~Ðr,   c                óD   • [         R                  " U [        U5      5        g)z?
APPEND non-ascii runes in unicode escape format to fz_buffer.
N)r£   rŸ  rÔ  )r•  r  s     r*   rõ  rõ  @I  s   € ô 
×Ò˜4¤¨R£Õ1r,   c                ó  • [        U5      nUR                  UR                  UR                  UR                  UUUU4nU R                  U5        US-   [        R                  " [        R                  R                  5      4$ )z
Functions for wordlist output
r   )	r—  r°  r²  r¯  r±  rp   r£   rr  rð  )rZ  r•  rb  rù  rý  rc  rŸ  r  s           r*   r^  r^  GI  sm   € ô 	˜tÓ$€Aà�H‰HØ�H‰HØ�H‰HØ�H‰HØØØØð	€Eð 
‡L�L�ÔØ�A‰:”u—|’|¤E§L¡L×$<Ñ$<Ó=Ð=Ð=r,   c                ó˜  • [        U 5      n[        R                  " U[        S5      5      n[        R                  " U5      (       d!  [        R
                  " U[        S5      S5      n[        R                  " U S5      n[        R                  " U[        S5      U5        Ub!  [        R                  " U[        S5      U5        [        R                  " U[        S5      [        S5      5        [        R
                  " U[        S	5      S5      nU(       d  Ož[        R                  " U[        S
5      5      n[        U5      n	[        U	5       Hd  n
Sn[        X:5      u  pËUS:X  a  M  [        R                  " XS5      n[        R                  " X�5      (       d  MN  [        R                  " X}5        Mf     [        R                  " XV5        g)z)
Add OC configuration to the PDF catalog
rk  r   r   r,  Nrg  Ú	BaseStatern  rm  rj  r   )ro  r£   r  r  r<  rK  r[  r¯  rV  r<   rT  rì  r¹  Úpdf_array_containsr>  )rb  r   r\  rm  rz  ÚconfigsrÅ  ÚonarrayrR  rJ   rh  r  ri  Úinds                 r*   rZ  rZ  ZI  sX  € ô ! #Ó
&€CÜ× Ò  #¤x°	Ó':Ó;€GÜ×Ò˜w×'Ñ'Ü×*Ò*¨C´¸)Ó1DÀaÓHˆÜ×Ò˜C Ó#€AÜ	×"Ò" A¤x°Ó'7¸Ô>ØÑÜ×&Ò&¨¬8°IÓ+>ÀÔHÜ	×Ò˜œ8 KÓ0´(¸5³/ÔBÜ×&Ò&¨¬8°D«>¸1Ó=€GÞØä×!Ò! 3¬°Ó(8Ó9ˆÜ�‹GˆÜ�q–ˆAØˆDÜ! "Ó(‰GˆAØ�A‹vÙÜ×(Ò(¨#°QÓ7ˆCÜ×'Ò'¨×3Ó3Ü×$Ò$ gÖ3ñ ô 
×Ò˜'Õ%r,   c                ó4  • [        X5      n[        R                  " U5      nU R                  R                  (       d  U$ UR
                  UR                  UR                  R                  -   :  a(  UR
                  UR                  R                  -
  Ul        U$ )z
return rect of char quad
)ÚJM_char_quadr£   r(  rÍ   r
  r±  r²  rÊ  )rt   r  r+  r%  s       r*   ró  ró  xI  sn   € ô 	�TÓ€AÜ×Ò Ó"€AØ�?‰?× × ØˆØ‡t�tˆa�d‰d�R—]‘]×'Ñ'Ñ'Ó'Ø�t‰t�b—m‘m×(Ñ(Ñ(ˆŒØ€Hr,   c                óB  • SnU(       a  U(       a  U[        X5      -  nU[        R                  " U 5      [        -  -  nU[        R                  " U 5      [
        -  -  nU[        R                  " U 5      [        -  -  nU[        R                  " U 5      [        -  -  nU$ rŒ   )
Údetect_super_scriptr£   r>  ÚTEXT_FONT_ITALICrE  ÚTEXT_FONT_SERIFEDrA  ÚTEXT_FONT_MONOSPACEDr;  ÚTEXT_FONT_BOLD)rÜ  rt   r  rÑ  s       r*   ÚJM_char_font_flagsrå  …I  sŒ   € Ø€EÞ–ØÔ$ TÓ.Ñ.ˆØ	ŒU×$Ò$ TÓ*Ô-=Ñ=Ñ=€EØ	ŒU×#Ò# DÓ)Ô,=Ñ=Ñ=€EØ	ŒU×(Ò(¨Ó.Ô1EÑEÑE€EØ	ŒU×"Ò" 4Ó(¬>Ñ9Ñ9€EØ€Lr,   c                ó0  • [         (       a?  [        R                  " [        R                  " U R
                  UR
                  5      5      $ [        U [        R                  5      (       d   e[        U[        R                  5      (       d   e[        R                  (       a  UR                  $ U R
                  R                  (       a  UR                  $ [        R                  " [        R                  " UR
                  R                  5      5      n[!        U5      n[#        U5      nUR
                  R$                  nX4-
  [&        -   nUS:¼  a>  [        R(                  S:X  a*  [        R                  " UR
                  R                  5      $ UR
                  R$                  n[        R*                  " U5      nUR,                  UR.                  -
  nUS:  a  SnSnSn[        R(                  (       d  US:  a  XF-  nX6-  nX4-
  nX5-  U-  nXE-  U-  nU R
                  R0                  R2                  n	U R
                  R0                  R4                  n
[        R6                  " Xš* X©SS5      n[        R6                  " XšU
* U	SS5      nU	S:X  a  SUl        SUl        [        R6                  " SSSSUR
                  R:                  R2                  * UR
                  R:                  R4                  * 5      n[        R6                  " SSSSUR
                  R:                  R2                  UR
                  R:                  R4                  5      n[        R<                  " [        R                  " UR
                  R                  5      U5      n[        R<                  " Xû5      nU	S:X  a[  UR>                  R4                  S:”  aA  X?R>                  l        X?R@                  l        XORB                  l        XORD                  l        OHU* UR>                  l        U* UR@                  l        U* URB                  l        U* URD                  l        URB                  R2                  S:  a"  SURB                  l        SUR>                  l        URD                  R2                  URB                  R2                  -
  nU[&        :  a¬  [        RF                  " X!R
                  RH                  5      nU(       a{  [        RJ                  " UUU R
                  R                  5      nURB                  R2                  X…-  -   URD                  l        URD                  R2                  UR@                  l        [        R<                  " Xü5      n[        R<                  " Xþ5      nU$ )zA
re-compute char quad if ascender/descender values make no sense
r   r   rØ  çš™™™™™¹¿çÍÌÌÌÌÌì?rÔ  r¨  )&r  r£   rä  r   rÞ  rÍ   rC   ÚFzStextLineÚFzStextCharr~  r�   rI  r
  ÚFzFontÚll_fz_keep_fontrÜ  ÚJM_font_ascenderÚJM_font_descenderrÊ  ÚFLT_EPSILONrŽ   r   r¯  r°  r´  re  rf  r�  rD  rÐ  Úfz_transform_quadrù  rq  ro  rp  rÙ  rö  rÚ  )rt   r  rÜ  r0  r1  r3  Úasc_dscr7  Úfwidthrö  rŸ  Útrm1Útrm2Úxlate1Úxlate2rI  Úcwidthrá  s                     r*   rÞ  rÞ  �I  sò  € ÷ Š[ô �|Š|œE×.Ò.°·±ÀÇÁÓOÓPÐPä�dœE×-Ñ-×.Ñ.Ð.Ð.Ü�bœ%×+Ñ+×,Ñ,Ð,Ð,Ü×%×%Ø�w‰wˆØ‡�××Ø�w‰wˆÜ�<Š<œ×-Ò-¨b¯m©m×.@Ñ.@ÓAÓB€DÜ
˜4Ó
 €CÜ
˜DÓ
!€CØ�M‰M×Ñ€EØ‰iœ+Ñ%€GØ�!ƒ|œ×4Ñ4¸Ó9Ü�|Š|˜BŸM™M×.Ñ.Ó/Ð/ð
 �M‰M×Ñ€EÜ×Ò˜dÓ#€DØ�W‰W�t—w‘wÑ€FØ
ˆTƒzØˆØˆØˆä×#×# w°£{Ø‰mˆØ‰mˆØ‰i€GØ
‰+˜Ñ
€CØ
‰+˜Ñ
€Cð
 	�‰×Ñ×Ñ€AØ�‰×Ñ×Ñ€AÜ×Ò  2 q¨Q°Ó2€DÜ×Ò  q b¨!¨Q°Ó2€DØ	ˆR‹ØˆŒØˆŒÜ×!Ò! ! Q¨¨1¨r¯}©}×/CÑ/C×/EÑ/EÐ.EÈÏÉ×H\ÑH\×H^ÑH^ÐG^Ó_€FÜ×!Ò! ! Q¨¨1¨b¯m©m×.BÑ.B×.DÑ.DÀbÇmÁm×FZÑFZ×F\ÑF\Ó]€Fä×"Ò"¤5§<¢<°·±×0BÑ0BÓ#CÀVÓL€DÜ×"Ò" 4Ó.€Dð 	ˆAƒv�$—'‘'—)‘)˜a“-Ø�‰Œ	Ø�‰Œ	Ø�‰Œ	Ø�‰�	à�Dˆ�‰Œ	Ø�Dˆ�‰Œ	Ø�Dˆ�‰Œ	Ø�Dˆ�‰Œ	ð
 ‡w�w‡y�y�1ƒ}Øˆ�‰Œ	Øˆ�‰Œ	à�W‰W�Y‰Y˜Ÿ™Ÿ™Ñ"€FØ”ÓÜ×)Ò)¨4·±·±ÓAˆÞÜ×+Ò+¨T°5¸$¿/¹/×:OÑ:OÓPˆFØŸ™Ÿ	™	 F¡NÑ2ˆD�G‰GŒIØŸ™Ÿ	™	ˆD�G‰GŒIä×"Ò" 4Ó.€DÜ×"Ò" 4Ó0€DØ€Kr,   c           
     óü  • [         R                  " U R                  5      n[         R                  " U S5      n[	        U5      nUS:X  a  g[         R
                  " U[        S5      5      n/ n[        U5       GH   n[         R                  " [         R                  " XF5      5      nUS:X  a‘  [         R                  " [         R                  " [         R                  " XF5      S5      5      [         R                  " [         R                  " [         R                  " XF5      S5      5      4nUR                  U5        MÅ  [         R                  " [         R                  " XF5      5      nUR                  U5        GM     U$ )z0
return list of choices for list or combo boxes
r   NÚOptr   r   )r£   r  rÅ   Úpdf_choice_widget_options2r<   r  r  rT  r¬  r­  r	  rp   )	rà   r'  rV  rJ   Úoptarrr  rh  rŒ  r  s	            r*   ÚJM_choice_optionsrü  éI  s  € ô ×#Ò# U§Z¡ZÓ0€Iä×+Ò+¨U°AÓ6€DÜˆT‹
€AØˆAƒvØä×Ò ¬H°U«OÓ<€FØ€Eä�A�YˆÜ×Ò¤×!4Ò!4°fÓ!@ÓAˆØ�‹6ä×,Ò,¬e×.AÒ.AÄ5×CVÒCVÐX^ÓCbÐdeÓ.fÓgÜ×,Ò,¬e×.AÒ.AÄ5×CVÒCVÐX^ÓCbÐdeÓ.fÓgðˆCð �L‰L˜#Öä×*Ò*¬E×,?Ò,?ÀÓ,KÓLˆCØ�L‰L˜#×ñ ð €Lr,   c                óð  • [         R                  " U[         R                  " U 5      5      nUR                  UR                  -
  nUR
                  UR                  -
  nUS::  d  US::  a  gU R                  5       nXRR                  U R                  5       -
  -  U R                  5       UR                  U R                  5       -
  -  -   n[         R                  " U R                  5       5      S:X  aÑ  SU-
  n Un[        SU5       H¦  n[         R                  " XS5        US-  n[         R                  " XS5        US-  n[         R                  " XS5        US-  n[         R                  " XU5        US-  nU R                  5       (       d  MŠ  [         R                  " XS5        US-  nM¨     Xe-  nUS:X  a   gUS-  nMË   Un[        U5       H‘  n[        U R                  5       S-
  5       H  n	[         R                  " XU5        US-  nM!     U R                  5       (       a  [         R                  " XS5        US-  nMu  [         R                  " XU5        US-  nM“     Xe-  nUS:X  a   gUS-  nMµ  )zG
Clear a pixmap rectangle - my version also supports non-alpha pixmaps
r   rr  r  r   )r£   Úfz_intersect_irectrá  r¯  r°  r±  r²  r€  rf  rJ   re  rA  rò  rT  r�  ró  )
rþ	  r¹   r  r   rf  ÚdestspanÚdestprŸ  re  rò  s
             r*   rÀ  rÀ  J  s.  € ô 	× Ò  ¤E×$8Ò$8¸Ó$>Ó?€AØ	�‰ˆq�t‰t‰€AØ	�‰ˆq�t‰t‰€AØˆAƒv��a“Øà�{‰{‹}€HØŸ™˜tŸv™v›x™Ñ(¨4¯6©6«8°q·t±t¸d¿f¹f»h±Ñ+GÑG€Eô ×Ò˜TŸ_™_Ó.Ó/°1Ó4Ø�e‘ˆØØˆAÜ˜1˜a–[�Ü×$Ò$ T¨aÔ0Ø�Q‘�Ü×$Ò$ T¨aÔ0Ø�Q‘�Ü×$Ò$ T¨aÔ0Ø�Q‘�Ü×$Ò$ T¨eÔ4Ø�Q‘�Ø—:‘:—<“<Ü×(Ò(¨°#Ô6Ø˜‘F’Añ !ð ÑˆEØ�A‹vØàð �‰FˆAñ# ð( ØˆÜ�q–ˆAÜ˜4Ÿ6™6›8 A™:Ö&�Ü×$Ò$ T¨eÔ4Ø�Q‘’ñ 'ð �z‰z�|‰|Ü×$Ò$ T¨cÔ2Ø�Q‘’ä×$Ò$ T¨eÔ4Ø�Q‘’ñ ð 	ÑˆØ�‹6Øàð 	
ˆQ‰ˆñ r,   c                ó(  • [        U [        [        45      (       a  U /n [        U [        [        45      (       d  S/ 4$ [        U 5      S;  a  S/ 4$ U S S  n[        [        U5      5       H  nX   S:  d
  X   S:”  d  M  SX'   M     [        U5      U4$ )Nr¨  )r   r   r   rr  r   r   )rC   r9   rœ  rµ   r¶   r<   rT  )ro  rL   rh  s      r*   rC  rC  <J  sŒ   € ä�%œ#œu˜×&Ñ&Ø�ˆä�uœt¤U˜m×,Ñ,Ø�2ˆvˆä
ˆ5ƒz˜Ó%Ø�2ˆvˆà
‘ˆ(€CÜ”3�s“8Ž_ˆØ‰6�A‹:˜™ !�ØˆC‹Fñ ô ˆs‹8�Sˆ=Ðr,   c                óF   •  [        R                  " U R                  U5      $ r.   )r  r   Úll_JM_color_countrÍ   r:   r£   rá  rþ  r‡  r  r€  r¯  r°  r±  r²  rJ   rf  re  rb  Úfz_is_empty_irectrT  r=   )rT  r  r¦   rÈ  r¢  r€  r‰  r2  rJ   Ú	substriderŸ  Úoldpixrh  r�  ÚnewpixrÉ  rö  s                    r*   rÃ  rÃ  NJ  s   € ØÜ×&Ò& r§}¡}°dÓ;Ð;r,   c                óð   • [         R                  " U [         R                  5      u  pU(       a  US:X  a  g[         R                  " [         R                  " X5      5      n[         R
                  " X25        U$ )z"
compress char* into a new buffer
r   N)r£   Ú fz_new_deflated_data_from_bufferÚFZ_DEFLATE_BESTr4  Úfz_new_buffer_from_dataÚfz_resize_buffer)ÚinbufferrÉ  Úcompressed_lengthrÔ  s       r*   ÚJM_compress_bufferr  vJ  s_   € ô $×DÒDØÜ×!Ñ!óÑ€Dö
 Ð$¨Ó)ØÜ
�.Š.œ×6Ò6°tÓOÓ
P€CÜ	×Ò˜3Ô2Ø€Jr,   c                óÆ  • Sn[         R                  " 5       nU  H³  nUR                  R                  [        R
                  :w  a  M-  U H€  nSnU Hj  n[        XW5      n[        X5      (       d  M   SnU(       a  UR                  S5        SnUR                  [        UR                  R                  5      5        Ml     U(       d  M~  SnM‚     Mµ     UR                  5       n	U	$ )Nr   r   r&   )r>   ÚStringIOrÍ   rÉ   r£   rñ  ró  rô  r   rÔ  rö  rÂ  )
r×   rn  Úneed_new_linerù	  rû  rt   Úline_had_textr  r%  rŸ  s
             r*   rW  rW  †J  s¸   € Ø€MÜ�[Š[‹]€FÛˆØ×Ñ× Ñ ¤E×$=Ñ$=Ó=ÙÛˆDØˆMÛ�Ü  Ó*�Ü# D×,Ó,Ø$%�MÞ$ØŸ™ TÔ*Ø()˜Ø—L‘L¤¨R¯]©]¯_©_Ó!=Ö>ñ ÷ ˆ}Ø !’ó ñ ð  	�‰Ó€AØ€Hr,   c                óú  • [         R                  " 5       nSnUnUnX:”  a  SnUnUn[        U5      nUn	 [        X–U5      (       d  OÑ[         R                  " X	5      n
[         R
                  " U
5      n[         R                  " XK5      u  pÍn[         R                  " X¬[         R                  " 5       [         R                  " 5       5        [         R                  " U5        Sn[         R                  " XKX�U5      n[         R                  " USU5        X•-  n	Mã  [         R                  " 5       n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        SUl        SUl        [         R2                  " S5      n[         R4                  " U5      n[         R6                  " UUU5        UR9                  5         [         R:                  " U5      n[=        U[>        5      (       d   eU$ )zl
Convert any MuPDF document to a PDF
Returns bytes object containing the PDF, created via 'write' function.
r   r¨  Nrr  r   i    ) r£   rÇ   r/  rÕ  r;	  r}  Úpdf_page_writer�  r}  rl  r‚  r6  r7  r
  r!
  r
  r
  r
  r%
  r
  r
  r 
  r#
  r$
  r"
  rö	  r÷	  r0
  r	  r  rC   r   )r2  rÁ  rU  ra  rÏ  r!  rŸ  ri  r|  rh  r×   r8  r…  rj  r9  r:  rV  r&  r	  rö  s                       r*   r™  r™  �J  s¸  € ô
 ×ÒÓ €FØ€DØ
€AØ
€AØ	ƒwØˆØˆØˆÜ
˜6Ó
"€CØ
€AØ
Ü˜˜a× Ñ ØÜ×!Ò! #Ó)ˆÜ×&Ò& tÓ,ˆÜ#(×#7Ò#7¸Ó#IÑ ˆ˜Ü×Ò˜$¤U§^¢^Ó%5´u·~²~Ó7GÔHÜ×Ò˜cÔ"ØˆÜ×%Ò% f¸ÈÓQˆÜ×Ò˜f b¨(Ô3Ø	‰	ˆñ ô × Ò Ó"€DØ€D„OØ€DÔØ€DÔØ€DÔØ€DÔØ€DÔØ€D„MØ€DÔØ€D„NØ€D„MØ€D„Nä
×
Ò
˜dÓ
#€CÜ
�.Š.˜Ó
€CÜ	×Ò˜V S¨$Ô/Ø×ÑÔÜ×$Ò$ SÓ)€AÜ�aœ×ÑÐÐØ€Hr,   c           
     ó  • [         R                  " [         R                  " [         R                  " U 5      S5      5      n[         R                  " U[         R
                  5      n[         R                  " U5      n [        XU5        [         R                  " U[        S5      U5        U[         R                  :X  am  U[        [        -  -  n[         R                  " [         R                  " U 5      [         R                  " U5      [        S5      [        S5      [        S5      5        [         R                  " [         R                  " U 5      S5      nUR                  (       d`  [         R                   " U S5      n[         R                  " [         R                  " U 5      U[        S5      [        S5      [        S5      5        [         R"                  " X†5        U$ ! [$         až    [&        (       a
  [)        5         [         R*                  " X5        U[         R                  :X  a]  [         R                  " [         R                  " U 5      [         R                  " U5      [        S5      [        S5      [        S5      5        e f = f)	NzRoot/AcroForm/SigFlagsr-  r×  rØ  rŒ  zRoot/AcroForm/Fieldsr   rr  )r£   r  ro  rÛ  Úpdf_create_annot_rawrV  r  ÚJM_set_field_typer¯  r  ÚPDF_WIDGET_TYPE_SIGNATUREÚSigFlag_SignaturesExistÚSigFlag_AppendOnlyrR  rQ  rÍ   rS  r>  rl   r  r{   r«  )	r2  r×   rÉ   Ú	fieldnameÚold_sigflagsrà   r'  r�  rg	  s	            r*   rY  rY  ÒJ  sá  € Ü×#Ò#¤E×$7Ò$7¼×8IÒ8IÈ#Ó8NÐPhÓ$iÓj€Lô
 ×&Ò& t¬U×-CÑ-CÓD€EÜ×#Ò# EÓ*€Ið&Ü˜#¨$Ô/Ü×&Ò& y´(¸3³-ÀÔKà”5×2Ñ2Ó2Ø#Ô'>ÔASÑ'SÑTˆHÜ×ÒÜ×%Ò% cÓ*Ü×%Ò% hÓ/Ü˜VÓ$Ü˜ZÓ(Ü˜ZÓ(ôô ×"Ò"¤5×#4Ò#4°SÓ#9Ð;QÓRˆØ��Ü×&Ò& s¨AÓ.ˆDÜ×ÒÜ×%Ò% cÓ*ØÜ˜VÓ$Ü˜ZÓ(Ü˜XÓ&ôô 	×Ò˜TÔ-ð €Løô ó ßÒ¤NÔ$4Ü×Ò˜tÔ+à”5×2Ñ2Ó2Ü×ÒÜ×%Ò% cÓ*Ü×%Ò% lÓ3Ü˜VÓ$Ü˜ZÓ(Ü˜ZÓ(ôð 	ðús   Á<E G ÇB(Jc                ó²  • [         (       a  [        R                  " U 5      $ [        U 5      n[        R
                  " [        R                  " U [        S5      5      5      n[        R                  " U5      (       d  [        R                  " U5      (       a  UnUR                  UR                  -
  nUR                  UR                  -
  nX2l        XBl
        U$ )z
return a PDF page's CropBox
rá  )r  r   r	  rû  r£   rÎ  r  r  rç  ræ  r±  r²  )r:  r8  r€	  r²  r±  s        r*   r	  r	  K  s¤   € ÷ ‚{Ü×Ò Ó)Ð)ä˜8Ó$€HÜ×ÒÜ×.Ò.¨x¼À)Ó9LÓMó€Gô × Ò  ×)Ñ)¬U×-CÒ-CÀG×-LÑ-LØˆØ	�‰�w—z‘zÑ	!€BØ	�‰�w—z‘zÑ	!€BØ„JØ„JØ€Nr,   c                óÐ   • [        U 5      n[        UR                  UR                  -
  5      n[        UR                  UR
                  -
  5      n[        R                  " X#5      nU$ r.   )r	  r&  r¯  r°  r±  r²  r£   Úfz_make_point)r:  rý   r   r!  rÊ  s        r*   ÚJM_cropbox_sizer!  K  sO   € Ü�hÓ€DÜˆD�G‰G�d—g‘gÑÓ€AÜˆD�G‰G�d—g‘gÑÓ€AÜ×Ò˜qÓ$€DØ€Kr,   c                óD   • [        U 5      n[        R                  " U5      $ )z
just the inverse of rotation
)rß  r£   r  )r×   Úmps     r*   ra  ra   K  s   € ô 
˜tÓ	$€BÜ×!Ò! "Ó%Ð%r,   c                óì  • Sn[         R                  " U S5      n[         R                  " U[        S5      S5        [         R                  " U[        S5      S5      n[         R                  " U[        S5      U5        [         R                  " U[        S5      U5        [         R                  " U[        S5      U5        [         R
                  " U[        S	5      [        S
5      5        Sn	[         R                  " U [         R                  " U	5      [         R                  " 5       S5      n
[         R
                  " U[        S5      U
5        [        X
X5        [         R                  " U5      u  pk[         R                  " U
[        S5      U5        [         R                  " U
[        S5      U5        [         R                  " U
[        S5      S5      n[         R                  " U[        S5      U5        U$ )z=
embed a new file in a PDF (not only /EmbeddedFiles entries)
r   r§  r°  rr  r¸  r¹  r»  r¼  ró  ÚFilespecs     rN  r½  r¾  r¿  )r£   r[  rZ  r  r¯  rV  r  rã  r  r1  rP  rQ  )rb  rÔ  rk   rS  rË  rc  r·  r  ÚefÚbsr  r<  Úparamss                r*   r¨  r¨  (K  sp  € ð €DÜ
×
Ò
˜S !Ó
$€CÜ	×Ò˜C¤¨$£°Ô3Ü	×	 Ò	  ¤h¨t£n°aÓ	8€BÜ	×"Ò" 3¬°«°xÔ@Ü	×"Ò" 3¬°«¸	ÔBÜ	×"Ò" 3¬°Ó(8¸$Ô?Ü	×Ò�sœH VÓ,¬h°zÓ.BÔCØ	€BÜ×ÒØä×0Ò0°Ó4Ü�LŠL‹NØó	€Aô 
×Ò�rœ8 C›=¨!Ô,Ü�S˜SÔ+Ü×%Ò% cÓ*�G€DÜ	×Ò˜1œh t›n¨dÔ3Ü	×Ò˜1œh xÓ0°$Ô7Ü×$Ò$ Q¬°Ó(:¸AÓ>€FÜ	×Ò˜6¤8¨FÓ#3°TÔ:Ø€Jr,   c                ó  • [         R                  " [         R                  " U 5      [        S5      5      n[         R                  " U[        S5      5      nUR                  (       a:  [         R
                  " U5      S:X  a   [         R                  " U[        S5      5        [         R                  " U[        S5      [        S5      [        S5      5      nUR                  (       a"  [         R                  " U[        S5      S5        gg)	zœ
perform some cleaning if we have /EmbeddedFiles:
(1) remove any /Limits if /Names exists
(2) remove any empty /Collection
(3) set /PageMode/UseAttachments
r×  Ú
Collectionr   rš  r›  r’	  rÆ
  N)	r£   r  rÛ  r  rÍ   r‡  rI  r!  r]  )rb  r¹  ÚcollÚefiless       r*   r-
  r-
  MK  sÀ   € ô ×Òœu×0Ò0°#Ó6¼ÀÓ8HÓI€Dô ×Ò˜d¤H¨\Ó$:Ó;€DØ‡‡œ5×-Ò-¨dÓ3°qÓ8Ü×Ò˜4¤¨,Ó!7Ô8ä× Ò ØÜ�WÓÜ�_Ó%Ü�WÓó	€Fð ××Ü×Ò ¤h¨zÓ&:Ð<LÕMð r,   c                ój   • U R                   (       d  g[        R                  " U 5      n[        USS9nU$ )Nra   r  ©Úerrors)rÍ   r£   r  rX  )r•  rŸ  r  s      r*   r—  r—  eK  s-   € Ø�?�?ØÜ×$Ò$ TÓ*€AÜ
*¨1°YÑ
?€CØ€Jr,   c           	     ó,  • [         R                  " [         R                  " U 5      [        S5      5      nUR                  (       dÏ  [         R
                  " S5      nSnU H  nU[        U5      -  nM     [         R                  " [         R                  " U 5      [        S5      S5      n[         R                  " U[         R                  " U[        U5      5      5        [         R                  " U[         R                  " U[        U5      5      5        gg)z
Store ID in PDF trailer
rø  r*  ra   r   N)r£   r  rÛ  r  rÍ   Ú
fz_memrnd2r+  rK  r>  r«  r<   )rb  rO  Úrnd0Úrndrh  s        r*   r.
  r.
  mK  sÅ   € ô ×
Ò
œe×/Ò/°Ó4´h¸t³nÓ
E€CØ�>�>Ü×Ò Ó#ˆð ˆÛˆAØ”3�q“6‰MŠCñ ä×&Ò&¬×(9Ò(9¸3Ó(?ÄÈ$ÃÐQRÓSˆÜ×Ò˜c¤5×#7Ò#7¸¼cÀ#»hÓ#GÔHÜ×Ò˜c¤5×#7Ò#7¸¼cÀ#»hÓ#GÕHð r,   c                ó  • [         R                  " [         R                  " [         R                  " U 5      [        S5      5      [        S5      5      nUR                  (       a  U$ [         R                  " [         R                  " U 5      [        S5      5      n[         R
                  " U[        S5      S5      n[         R                  " U[        S5      S5        [         R
                  " U[        S5      S5      n[         R                  " U[        S5      S5        [         R                  " U[        S	5      S5        [         R                  " U[        S
5      S5        [         R                  " U[        S5      S5        U$ )z/
Ensure OCProperties, return /OCProperties key
r×  r6  r   rj  r   rÅ  r   rm  rn  rl  ÚRBGroups)r£   r  rÛ  r  rÍ   rZ  rK  )rb  rz  r¹  rÅ  s       r*   ro  ro  }K  s  € ô ×
Ò
œU×/Ò/´×0AÒ0AÀ#Ó0FÌÐQWÓHXÓYÔ[cÐdrÓ[sÓ
t€CØ
‡~‡~Øˆ
Ü×Òœe×/Ò/°Ó4´h¸vÓ6FÓG€DÜ
×
!Ò
! $¬°Ó(@À!Ó
D€CÜ	×Ò˜S¤(¨6Ó"2°AÔ6Ü×Ò ¤X¨c£]°AÓ6€AÜ	×Ò˜Q¤¨£°Ô2Ü	×Ò˜Q¤¨£°Ô3Ü	×Ò˜Q¤¨Ó 1°1Ô5Ü	×Ò˜Q¤¨Ó 4°aÔ8Ø€Jr,   c                ó„  • U (       d  gU R                  S5      (       a  gU R                  S5      (       a  gU R                  S5      (       a  gU R                  S5      (       a  gU R                  S5      (       a  g	U R                  S
5      (       a  g	U R                  S5      (       a  gU R                  S5      (       a  gg)z
Make /DA string of annotation
rL  ÚCorj  ÚcoÚTirk  ÚtiÚSyÚSymbr	  ÚZarl  Úza)r8   rù  s    r*   ÚJM_expand_fnamer?  �K  s”   € ö ˜6Ø‡��t×Ñ vØ‡��t×Ñ vØ‡��t×Ñ vØ‡��t×Ñ vØ‡��t×Ñ vØ‡��t×Ñ vØ‡��t×Ñ vØ‡��t×Ñ vØr,   c                ó*  • U [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gU [         R
                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gg)	z
String from widget type
ÚButtonÚCheckBoxÚRadioButtonÚTextÚListBoxÚComboBoxÚ	Signaturer}  )r£   r‚  rƒ  rs  ÚPDF_WIDGET_TYPE_TEXTÚPDF_WIDGET_TYPE_LISTBOXÚPDF_WIDGET_TYPE_COMBOBOXr  )rˆ  s    r*   ÚJM_field_type_textrK  ŸK  s~   € ð ”×,Ñ,Ó,ØØ”×.Ñ.Ó.ØØ”×1Ñ1Ó1ØØ”×*Ñ*Ó*ØØ”×-Ñ-Ó-ØØ”×.Ñ.Ó.ØØ”×/Ñ/Ó/ØØr,   c                ó   • [        U [        R                  5      (       d   e[        R                  " U[        R                  " U 5      5      nUR
                  UR                  -
  nUR                  UR                  -
  nUS::  d  US::  a  gU R                  5       nXRR                  U R                  5       -
  -  U R                  5       UR                  U R                  5       -
  -  -   n Un[        U5       HA  n[        U R                  5       5       H!  n	[        R                  " XX   5        US-  nM#     MC     Xe-  nUS-  nUS:X  a   gMe  r‘  )rC   r£   rs  rþ  rá  r¯  r°  r±  r²  r€  rf  rJ   re  rT  r�  )
rþ	  rg  r  r   rf  rÿ  r   rŸ  re  rh  s
             r*   rW  rW  ´K  s  € Ü�dœEŸN™N×+Ñ+Ð+Ð+ä× Ò  ¤E×$8Ò$8¸$Ó$?Ó@€AØ	�‰ˆq�t‰t‰€AØ	�‰ˆq�t‰t‰€AØˆAƒv��a“ØØ�{‰{‹}€HØŸ™˜tŸv™v›x™Ñ(¨4¯6©6«8°q·t±t¸d¿f¹f»h±Ñ+GÑG€EØ
ØˆÜ�q–ˆAÜ˜DŸF™F›HÖ%�Ü×$Ò$ T¨c©fÔ5Ø�Q‘’ó &ñ ð 	ÑˆØ	ˆQ‰ˆØ�‹6ØØñ r,   c                ó  • [        U [        R                  5      (       d   eSn[        R                  " U 5      nSn[	        U 5      n[        R
                  " U5      n [        U[        R                  5      (       d   eUR                  (       d  Ot[        R                  " U5      n[        R                  " US5      nUR                  (       a  [        R                  " Xb5      (       d  SnO[        R                  " U5      nM§  U(       a  U$ g)z‰
Return the first annotation whose /IRT key ("In Response To") points to
annot. Used to remove the response chain of a given annotation.
Nr   r   r=  )
rC   r£   rå   r  rá   rì  rÍ   r  rŠ  rW  )rà   r¯  r'  r±  r×   Úirt_annot_objr²  s          r*   rª  rª  ËK  sÜ   € ô
 �eœUŸ^™^×,Ñ,Ð,Ð,Ø€IÜ×#Ò# EÓ*€IØ€Eä˜5Ó!€DÜ×%Ò% dÓ+€IØ
Ü˜)¤U§^¡^×4Ñ4Ð4Ð4Ø×#×#ØÜ×+Ò+¨IÓ6ˆÜ×Ò ¨uÓ5ˆØ�<�<Ü×#Ò# A×1Ñ1Ø�ØÜ×(Ò(¨Ó3ˆ	ñ ö ØÐð r,   c                óœ   • [        U [        R                  5      (       d   e[        R                  (       a  g[        R
                  " U 5      $ )ú+
need own versions of ascender / descender
rB  )rC   r£   rë  r~  r�   rü  )rÜ  s    r*   rí  rí  æK  s8   € ô �dœEŸL™L×)Ñ)Ð)Ð)Ü×%×%ØÜ×!Ò! $Ó'Ð'r,   c                ó    • [        U [        R                  5      (       d   e[        R                  (       a  g[        R
                  " U 5      nU$ )rP  gš™™™™™É¿)rC   r£   rë  r~  r�   r  )rÜ  rL   s     r*   rî  rî  ðK  s<   € ô �dœEŸL™L×)Ñ)Ð)Ð)Ü×%×%ØÜ
×
!Ò
! $Ó
'€CØ€Jr,   c                óˆ   •  U S::  d  U S:X  d  SU s=::  a  S::  a   g  OgU(       d  g[        U 5      nU H
  nX2:X  d  M
    g   g)z7Check if ch is an extra word delimiting character.
    r$  rà  i*   i.   TFrÒ  )r  r_  r/  rD  s       r*   r\  r\  ûK  sW   € ð 	
Ø�‹8Ø�‹9Ø�RÕ!˜6Ô!ð ñ	 "ð ÞØÜˆr‹7€DÛˆØ�9Ùñ ð r,   c                ó   • U S:  d  U S:”  a  gg)Ni�  i 	  FTr/   rÓ  s    r*   r]  r]  L  s   € Ø	ˆEƒz�R˜%“ZØØr,   c                óæ   • [        U [        R                  5      (       d   e[        R                  " U 5      nUR	                  S5      n[
        R                  (       d  US:X  d  US:w  a  U$ XS-   S  $ )Nr  r¨  r§  r   )rC   r£   rë  rP  r§   r~  r�   )rÜ  r   rŸ  s      r*   ÚJM_font_namerU  L  s^   € Ü�dœEŸL™L×)Ñ)Ð)Ð)Ü×Ò˜dÓ#€DØ�	‰	�#‹€AÜ× ×  A¨£G¨q°A«vØˆØ�A‘�ˆ<Ðr,   c           	     óº  • Sn[         R                  " U5      n[        U5       GH2  n[         R                  " X5      n[         R                  " X5      n[         R
                  " U5      (       dG  [         R                  " S[         R                  " U5       S[         R                  " U5       S35        M’  [         R                  " U[         R                  5      n	[         R                  " U[         R                  5      n
U
R                  (       a  [         R                  " U
5      (       a&  [         R                  " U[         R                  5      nOU
n[         R                  " U[         R                  5      n[         R
                  " U5      (       a%  [         R                  " U[         R                   5      n[         R                  " U5      nSnU(       a  [#        X5      nUU[         R                  " U	5      [%        [         R                  " U5      5      [         R                  " U5      [         R                  " U5      U4nUR'                  U5        GM5     U$ )Nr   rî   z' is no font dict (ú 0 R)rÕ  )r£   r‡  rT  r‰  rˆ  r†  Úfz_warnr…  r  r  ÚPDF_ENUM_NAME_SubtypeÚPDF_ENUM_NAME_BaseFontrÍ   r×  ÚPDF_ENUM_NAME_NameÚPDF_ENUM_NAME_EncodingÚPDF_ENUM_NAME_BaseEncodingrØ  rÄ  rp   )rb  Údict_ÚfontlistÚstream_xrefr¦   rJ   rh  Úrefnamer-  rÝ  rÞ  r   r  r  rÜ  rœ  s                   r*   ÚJM_gather_fontsrb  L  sº  € Ø	
€BÜ×Ò˜5Ó!€AÜ�1�Xˆä×(Ò(¨Ó2ˆÜ×)Ò)¨%Ó3ˆÜ× Ò  ×*Ñ*Ü�MŠM˜Qœu×0Ò0°Ó9Ð:Ð:MÌe×N^ÒN^Ð_gÓNhÐMiÐinÐoÔpÙä×$Ò$ X¬u×/JÑ/JÓKˆÜ×%Ò% h´×0LÑ0LÓMˆØ×"×"¤e×&7Ò&7¸×&AÑ&AÜ×%Ò% h´×0HÑ0HÓI‰DàˆDÜ×%Ò% h´×0LÑ0LÓMˆÜ×Ò˜X×&Ñ&Ü×)Ò)¨(´E×4TÑ4TÓUˆHÜ×Ò Ó)ˆØˆÞÜ& sÓ1ˆCàØÜ×!Ò! 'Ó*Ü#¤E×$5Ò$5°dÓ$;Ó<Ü×!Ò! 'Ó*Ü×!Ò! (Ó+Øðˆð 	�‰˜×ñ= ð> €Ir,   c           	     ó®  • [        U [        R                  5      (       d   eSn[        R                  " U5      n[	        U5       GH  n[        R
                  " X5      n[        R                  " X5      n[        R                  " U5      (       dG  [        R                  " S[        R                  " U5       S[        R                  " U5       S35        M’  [        R                  " U[        S5      5      n	[        R                  " U	[        S5      5      (       d  MÙ  [        R                  " U[        S5      5      n
[        R                  " U[        S5      5      nUR                  (       a  [        R                  " U5      nO[        R                   " 5       nU
R                  (       a,  [        R"                  " [        R$                  " U
5      U5      nO.[        R&                  " [        R&                  R(                  5      n[        R                  " U5      nU[        R                  " U5      U[+        U5      4nUR-                  U5        GM     U$ )	z.
Store info of a /Form xobject in Python list
r   rî   z' is no form dict (rW  r¶  ÚFormr-  r€  )rC   r£   rÇ   r‡  rT  r‰  rˆ  r†  rX  r…  r  r  r  rÖ  rÍ   Úpdf_to_matrixr}  rà  rÎ  rr  rs  rq  rp   )r2  r^  Ú	imagelistr`  r¦   rJ   rh  ra  Ú	imagedictrc  r²  rŒ  r�  r7  r  rœ  s                   r*   ÚJM_gather_formsrh  CL  sµ  € ô �cœ5×,Ñ,×-Ñ-Ð-Ð-Ø	
€BÜ×Ò˜5Ó!€AÜ�1�XˆÜ×(Ò(¨%Ó3ˆÜ×*Ò*¨5Ó4ˆ	Ü× Ò  ×+Ñ+Ü�MŠM˜Qœu×0Ò0°Ó9Ð:Ð:MÌe×N^ÒN^Ð_hÓNiÐMjÐjoÐpÔqÙä×"Ò" 9¬h°yÓ.AÓBˆÜ× Ò  ¬°Ó(8×9Ñ9Ùä×Ò˜y¬(°6Ó*:Ó;ˆÜ×Ò˜y¬(°8Ó*<Ó=ˆØ�<�<Ü×%Ò% aÓ(‰Cä—.’.Ó"ˆCØ�<�<Ü×*Ò*¬E×,=Ò,=¸aÓ,@À#ÓF‰Dä—<’<¤§¡× ;Ñ ;Ó<ˆDÜ×Ò 	Ó*ˆð Ü×!Ò! 7Ó+ØÜ Ó%ð	ˆð 	×Ñ˜×ñ; ð< €Ir,   c                ó6  • Sn[         R                  " U5      n[        U5       GHð  n[         R                  " X5      n[         R                  " X5      n[         R
                  " U5      (       dG  [         R                  " S[         R                  " U5       S[         R                  " U5       S35        M’  [         R                  " U[        S5      5      n	[         R                  " U	[        S5      5      (       d  MÙ  [         R                  " U5      n
Sn[         R                  " U[        S5      [        S	5      5      nUR                  (       a  [         R                  " U5      n[         R                  " U[        S
5      [        S5      5      n[         R                  " U5      (       a  [         R                  " US5      n[         R                   " S5      n[         R                  " U[        S5      [        S5      5      n[         R                  " U5      (       a¬  Un[         R                  " US5      n[         R                  " U[        S5      5      (       d%  [         R                  " U[        S5      5      (       aI  [         R                  " US5      n[         R                  " U5      (       a  [         R                  " US5      n[         R                  " U[        S5      [        S5      5      n[         R                  " U[        S5      [        S5      5      n[         R                  " U[        S5      [        S5      5      nU
U[         R"                  " U5      [         R"                  " U5      [         R"                  " U5      [%        [         R                  " U5      5      [%        [         R                  " U5      5      [%        [         R                  " U5      5      [%        [         R                  " U5      5      U4
nUR'                  U5        GMó     U$ )z'
Store info of an image in Python list
r   rî   z' is no image dict (rW  r¶  rä  r   rå  ræ  ÚFilterr¹  Ú
ColorSpaceÚCSÚDeviceNÚ
Separationr   r‰  rõ
  rŠ  rB  ÚBitsPerComponentÚBPC)r£   r‡  rT  r‰  rˆ  r†  rX  r…  r  r  r  rÖ  rç  rÍ   r<  r­  r  r  rÄ  rp   )r2  r^  rf  r`  r¦   rJ   rh  ra  rg  rc  r  Úgenrì  rŸ  Úaltcsrö  Úcsesr‰  r2  rš  rœ  s                        r*   ÚJM_gather_imagesrt  kL  s   € ð 
€BÜ×Ò˜EÓ"€AÜ�1�XˆÜ×(Ò(¨Ó2ˆÜ×*Ò*¨5Ó4ˆ	Ü× Ò  ×+Ñ+Ü�MŠM˜Aœe×/Ò/°Ó8Ð9Ð9MÌe×N^ÒN^Ð_hÓNiÐMjÐjoÐpÔqÙä×"Ò" 9¬h°yÓ.AÓBˆÜ× Ò  ¬°Ó(9×:Ñ:Ùä×Ò 	Ó*ˆØˆÜ×#Ò# I¬x¸Ó/@Ä(È6ÓBRÓSˆØ××Ü×"Ò" 5Ó)ˆCä×%Ò% i´¸(Ó1CÄXÈcÃ]ÓSˆÜ×Ò˜g×&Ñ&Ü×)Ò)¨'°1Ó5ˆGä—’˜Q“ˆÜ× Ò  ¬H°\Ó,BÄHÈTÃNÓSˆÜ×Ò˜b×!Ñ!ØˆDÜ×$Ò$ T¨1Ó-ˆBÜ×!Ò! "¤h¨yÓ&9×:Ñ:Ü×(Ò(¨¬X°lÓ-C×DÑDä×+Ò+¨D°!Ó4�Ü×%Ò% e×,Ñ,Ü!×/Ò/°°qÓ9�EÜ×#Ò# I¬x¸Ó/@Ä(È3Ã-ÓPˆÜ×$Ò$ Y´¸Ó0BÄHÈSÃMÓRˆÜ×!Ò! )¬XÐ6HÓ-IÌ8ÐTYË?Ó[ˆð ØÜ× Ò  Ó'Ü× Ò  Ó(Ü× Ò  Ó%Ü#¤E×$5Ò$5°bÓ$9Ó:Ü#¤E×$5Ò$5°eÓ$<Ó=Ü#¤E×$5Ò$5°gÓ$>Ó?Ü#¤E×$5Ò$5°gÓ$>Ó?Øðˆð 	×Ñ˜×ña ðb €Ir,   c                ó^  • [        U [        R                  5      (       d   eSn[        R                  " U 5      n UR                  (       d  OIU[        R
                  " [        R                  " U5      5      :X  a  SnO[        R                  " U5      nM[  U(       d  [        SUS S35      eU$ )z
retrieve annot by its xref
r   r   úxref rD  z is not an annot of this page)	rC   r£   rÔ   rì  rÍ   r  r  rW  rl   )r×   r  r±  rà   s       r*   rÅ  rÅ  ¥L  s›   € ô �dœEŸM™M×*Ñ*Ð*Ð*Ø€Eä×!Ò! $Ó'€EØ
Ø××ØØ”5×#Ò#¤E×$7Ò$7¸Ó$>Ó?Ó?ØˆEØÜ×$Ò$ eÓ,ˆñ ö Ü˜%  Q˜xÐ'DÐEÓFÐFØ€Lr,   c                óœ  • [        U [        R                  5      (       d   eU(       d  gSn[        R                  " U 5      n UR                  (       d  Oa[        R
                  " [        R                  " [        R                  " U5      S5      5      u  pEX:X  a  SnO[        R                  " U5      nMs  U(       d  [        SU S35      eU$ )z"
retrieve annot by name (/NM key)
Nr   r   r1  rî   z' is not an annot of this page)
rC   r£   rÔ   rì  rÍ   Úpdf_to_stringr  r  rW  rl   )r×   r   r±  rà   r®  r·  s         r*   rÄ  rÄ  ¹L  s³   € ô �dœEŸM™M×*Ñ*Ð*Ð*ÞØØ€Eä×!Ò! $Ó'€EØ
Ø××Øä×,Ò,¬U×-@Ò-@Ä×ATÒATÐUZÓA[Ð]aÓ-bÓc‰ˆØÓØˆEØÜ×$Ò$ UÓ+ˆñ ö Ü˜!˜D˜6Ð!?Ð@ÓAÐAØ€Lr,   c                ó¬  • / n[         R                  " U R                  5       [         R                  5      nUR                  (       d  U$ [        [         R                  " U5      5       Hh  n[         R                  " X#5      n[         R                  " US5      nUR                  (       d  MC  UR                  [         R                  " U5      5        Mj     U$ )Nr1  )r£   r  r  ÚPDF_ENUM_NAME_AnnotsrÍ   rT  r¬  r­  r  rp   r	  )r×   rf  r°  rh  r'  r   s         r*   rB  rB  ÑL  s™   € Ø€EÜ×Ò §¡£¬U×-GÑ-GÓH€FØ××ØˆÜ”E×'Ò'¨Ó/Ö0ˆÜ×'Ò'¨Ó2ˆ	Ü×"Ò" 9¨dÓ3ˆØ�?�?‰?Ø�L‰LÜ×(Ò(¨Ó.öñ	 1ð €Lr,   c                óš  • [         (       a  [        R                  " U 5      nU$ / n[        R                  " U [        S5      5      n[        R                  " U5      n[        U5       Hà  n[        R                  " X$5      n[        R                  " U5      n[        R                  " U[        S5      5      nUR                  (       d  Mb  [        R                  " [        R                  " U5      5      nU[        R                  :X  a  M¢  [        R                  " US5      n	UR                  Xh[        R                   " U	5      45        Mâ     U$ )zC
return the xrefs and /NM ids of a page's annots, links and fields
r§  r¶  r1  )r  r   rz	  r£   r  r  r¬  rT  r­  r  rÍ   rº  r…  ÚPDF_ANNOT_UNKNOWNr  rp   r	  )
r:  rf  r°  rJ   rh  r'  r  rÝ  rc  rO  s
             r*   rz	  rz	  ßL  sü   € ÷ ‚{Ü×,Ò,¨hÓ7ˆØˆà€EÜ×Ò ¬8°HÓ+=Ó>€FÜ×Ò˜VÓ$€AÜ�AŽYˆÜ×'Ò'¨Ó3ˆ	Ü×Ò Ó+ˆÜ×$Ò$ i´¸)Ó1DÓEˆØ×!×!ÙÜ×0Ò0´%×2CÒ2CÀWÓ2MÓNˆØ”E×+Ñ+Ó+ÙÜ×!Ò! 9¨dÓ3ˆØ�‰�t¤E×$<Ò$<¸cÓ$BÐCÖDñ ð €Lr,   c                óˆ   • U R                  SS9n U R                  (       d
  [        5       $ [        U R	                  5       5      $ rÍ  )rô  rÍ   rµ   rz	  r  rÖ   s    r*   rG  rG  øL  s1   € Ø�>‰> 5ˆ>Ð)€DØ�?�?Ü‹vˆÜ! 4§8¡8£:Ó.Ð.r,   c                óœ  • [         R                  nU c  U$ U nUR                  S5      (       d  UR                  S5      (       a  [         R                  nU$ UR                  S5      (       d  UR                  S5      (       a  [         R                  nU$ UR                  S5      (       d  UR                  S5      (       a  [         R
                  nU$ UR                  S5      (       d  UR                  S5      (       a  [         R                  nU$ UR                  S	5      (       d  UR                  S
5      (       a  [         R                  nU$ )z/
return pdf_obj "border style" from Python str
r  r   rD  rÅ  rh  r·  r¿  ÚUrŸ  rJ
  )r£   ÚPDF_ENUM_NAME_Sr8   ÚPDF_ENUM_NAME_BÚPDF_ENUM_NAME_DÚPDF_ENUM_NAME_IÚPDF_ENUM_NAME_U)rŠ  r  rŸ  s      r*   rÆ  rÆ  ÿL  s  € ô ×
Ñ
€CØ�}Øˆ
Ø€AØ	
�‰�c×	Ñ	˜aŸl™l¨3×/Ñ/¼%×:OÑ:O°Cð
 €Jð	 
�‰�c×	Ñ	˜aŸl™l¨3×/Ñ/¼%×:OÑ:O°Cð €Jð 
�‰�c×	Ñ	˜aŸl™l¨3×/Ñ/¼%×:OÑ:O°Cð €Jð 
�‰�c×	Ñ	˜aŸl™l¨3×/Ñ/¼%×:OÑ:O°Cà€Jð 
�‰�c×	Ñ	˜aŸl™l¨3×/Ñ/¼%×:OÑ:O°CØ€Jr,   c
                ó¤  ^	• U	4S jn
SnSnU(       a   [         R                  " SXS5      nU
" U5      $ U(       a+  [        U5      n[         R                  " SXÛS5      nU
" U5      $ US:”  a  [         R                  " U5      nU
" U5      $ U (       aN  [         R
                  " U 5      nUR                  (       a  U
" U5      $ [         R                  " XU5      nU
" U5      $ [         R                  " X45      u  pïnSnU(       a  [         R                  " SXïUS5      nUR                  (       a  U
" U5      $ [         R                  " X4X†U5      nU
" U5      $ )z.
return a fz_font from a number of parameters
c                óÀ   >• U R                   (       d  [        [        5      eU R                   R                  R                  (       d  [
        R                  " U T5        U $ r.   )rÍ   rß   ÚMSG_FONT_FAILEDrÑ  r'  r£   Úfz_set_font_embedding)rÜ  rõ  s    €r*   ÚfertigÚJM_get_font.<locals>.fertigM  s=   ø€ Ø��ÜœÓ/Ð/à�‰×$Ñ$×0×0Ü×'Ò'¨¨eÔ4Øˆr,   r   Nr¨  )r£   Úfz_new_font_from_filer/  rØ  Úfz_new_cjk_fontÚfz_new_base14_fontrÍ   Úfz_new_builtin_fontÚfz_lookup_noto_fontrÕ  Úfz_load_fallback_font)rÿ   r  r  rñ  rJ  rÝ  rò  ró  rô  rõ  r‰  r  rÜ  r&  rÉ  rÊ  s            `      r*   rð  rð  M  s'  ø€ õð €EØ€DÞä×*Ò*¨D°(À1ÓEˆÙ�d‹|Ðæä  Ó,ˆÜ×,Ò,¨d°CÀÓBˆÙ�d‹|Ðà�"ƒ}ä×$Ò$ XÓ.ˆÙ�d‹|Ðæô ×'Ò'¨Ó1ˆØ�?�?Ù˜$“<ÐÜ×(Ò(¨¸IÓFˆÙ�d‹|Ðô ×1Ò1°6Ó@Ñ€D�Ø€DÞÜ×,Ò,¨d°DÀÀqÓIˆØ‡‡Ù�d‹|ÐÜ×&Ò&¨°hÈÓS€DÙ�$‹<Ðr,   c                ó  • US:  a  g[         R                  " X5      n[         R                  " U[        S5      5      nUR                  (       aL  [         R
                  " [         R                  " US5      5      n[         R                  " U[        S5      5      nO [         R                  " U[        S5      5      nUR                  (       d  [        S5        gUnSn[         R                  " U[        S5      5      nUR                  (       a  Un[         R                  " U[        S5      5      nUR                  (       a  Un[         R                  " U[        S	5      5      nUR                  (       aï  Un[         R                  " U[        S
5      5      nUR                  (       a'  [         R                  " U5      (       d  [        S5        g[         R                  " U[        S5      5      (       a  Oo[         R                  " U[        S5      5      (       a  OI[         R                  " U[        S5      5      (       a  O#[        S[         R                  " U5      < 35        U(       d  [        S5        g[         R                  " U5      $ )z8
Return the contents of a font file, identified by xref
r   Nró
  r   r  z%invalid font - FontDescriptor missingÚFontFileÚ	FontFile2Ú	FontFile3r¶  úinvalid font descriptor subtypeÚType1CÚCIDFontType0CÚOpenTypezwarning: unhandled font type zwarning: unhandled font type)r£   r=  r  r  rÍ   rè  r­  rw   rõ  rÖ  r…  r#  )r2  r  r²  Údesftr  r	   s         r*   r×  r×  MM  sÙ  € ð ˆaƒxØÜ×Ò˜cÓ(€AÜ×Ò˜q¤(Ð+<Ó"=Ó>€EØ××Ü×(Ò(¬×)<Ò)<¸UÀAÓ)FÓGˆÜ× Ò  ¤hÐ/?Ó&@ÓA‰ä× Ò  ¤HÐ-=Ó$>Ó?ˆà�>�>ÜÐ7Ô9Øà€Aà€Fä
×
Ò
˜Q¤¨Ó 4Ó
5€CØ
‡~‡~Øˆä
×
Ò
˜Q¤¨Ó 5Ó
6€CØ
‡~‡~Øˆä
×
Ò
˜Q¤¨Ó 5Ó
6€CØ
‡~‡~Øˆä× Ò  ¤h¨yÓ&9Ó:ˆØ�>�>¤%×"3Ò"3°C×"8Ñ"8ÜÐ5Ô6Øä×Ò˜S¤(¨8Ó"4×5Ñ5ØÜ×Ò˜s¤H¨_Ó$=×>Ñ>ØÜ×Ò˜s¤H¨ZÓ$8×9Ñ9ØäÐ3´E×4EÒ4EÀcÓ4JÑ3MÐNÔOæÜÐ.Ô/Øä× Ò  Ó(Ð(r,   c                ó´  • [         R                  " U [        S5      [        S5      5      nUR                  (       d  g[         R                  " U5      nUS:  a  g/ n[        U5       Hm  n[         R                  " X5      n[         R                  " X5      n[         R                  " U5      n[         R                  " U5      nUR                  Xx45        Mo     U$ )zy
Return the items of Resources/Properties (used for Marked Content)
Argument may be e.g. a page object or a Form XObject
r=  Ú
Propertiesr/   r   )r£   r!  r  rÍ   r‡  rT  r‰  rˆ  r…  r  rp   )	r¯  Ú
propertiesrJ   r¦   rh  rŽ  r  rö  r  s	            r*   ry  ry  „M  s°   € ô
 ×$Ò$ S¬(°;Ó*?ÄÈ,ÓAWÓX€JØ× × Øä×Ò˜zÓ*ˆØˆq‹5ØØˆÜ�q–ˆAÜ×(Ò(¨Ó7ˆCÜ×(Ò(¨Ó7ˆCÜ×!Ò! #Ó&ˆAÜ×#Ò# CÓ(ˆDØ�I‰I�q�iÖ ñ ð €Ir,   c                óN  • Sn[         R                  " U 5      nUR                  (       a\  [         R                  " U5      nU[         R                  " U5      :X  a  SnO)[         R
                  " U5      nUR                  (       a  M\  U(       d  [        SU S35      e[        U5      $ )z
retrieve widget by its xref
FTrv  z is not a widget of this page)r£   rô  rÍ   r  r  rX  rl   rã   )r×   r  r±  rà   r'  s        r*   r÷  r÷  šM  s�   € ð €EÜ×"Ò" DÓ)€EØ
×
×
Ü×'Ò'¨Ó/ˆ	Ø”5×#Ò# YÓ/Ó/ØˆEØÜ×%Ò% uÓ-ˆð ×
×
Ñ
ö Ü˜5  Ð&CÐDÓEÐEÜ�%‹=Ðr,   c                óú  ^• [         R                  " U R                  5      n[        U R                  5      nUR	                  5       nU nU4S jnS n[         R
                  " UR                  5      nUTl        U[         R                  :X  a/  [         R                  " XB5      (       a
  U" SS5        OU" SS5        O	U" SS5        U" TS[        [         R                  " U5      5      5        U" TS[        [        U5      5      5        [         R                  " U5      n	U" TS	U	5        S
 n
U
" U[        S5      5      nUb
  U" TSU5        SnU[         R                  :X  a–  [         R                  " U[        S5      5      nUR                   (       a  U" TS[         R"                  " U5      5        [         R                  " U[        S5      5      nUR                   (       a  [         R$                  " U5      nU(       d  [         R&                  " U5      nU" TS[        U5      5        U" TS[         R(                  " U5      5        [         R*                  " [         R,                  " U[        S5      [        S5      5      5      nUS:X  a  SnU" TSU5        [         R,                  " U[        S5      [        S5      5      n[         R.                  " U5      (       af  [         R0                  " U5      nS/U-  n[3        U5       H1  n[         R4                  " [         R6                  " UU5      5      UU'   M3     U" TSU5        U" TS[         R8                  " UR                  5      5        U" TS[         R:                  " UR                  5      5        [         R,                  " U[        S5      [        S5      5      n[         R.                  " U5      (       af  [         R0                  " U5      nS/U-  n[3        U5       H1  n[         R*                  " [         R6                  " UU5      5      UU'   M3     U" TSU5        [         R,                  " U[        S5      [        S5      5      n[         R.                  " U5      (       af  [         R0                  " U5      nS/U-  n[3        U5       H1  n[         R*                  " [         R6                  " UU5      5      UU'   M3     U" TSU5        U" TS [=        U 5      5        [         R>                  " [         R@                  " U[        S!5      5      5      nU" TS"[        U5      5        [         R,                  " U[        S5      [        S#5      5      nUR                   (       a'  U" TS$[        [         R>                  " U5      5      5        U" TS%[         RB                  " U5      5        TRE                  5         [         R                  " U[        S&5      5      n[G        U5      nU" TS'U5        U" TS([G        [         R,                  " U[        S)5      [        S*5      5      5      5        U" TS+[G        [         R,                  " U[        S)5      [        S,5      5      5      5        U" TS-[G        [         R,                  " U[        S)5      [        S.5      5      5      5        U" TS/[G        [         R,                  " U[        S)5      [        S05      5      5      5        U" TS1[G        [         R,                  " U[        S)5      [         RH                  " S25      5      5      5        U" TS3[G        [         R,                  " U[        S)5      [         RH                  " S45      5      5      5        g)5zy
Populate a Python Widget object with the values from a PDF form field.
Called by "Page.first_widget" and "Widget.next".
c                ó   >• [        TX5        g r.   ©rr  )rŽ  r¹   r\  s     €r*   ÚSETATTRÚ)JM_get_widget_properties.<locals>.SETATTR·M  s   ø€ Ü�˜Õ#r,   c                ó   • [        XU5        g r.   r   )ÚmodrŽ  r¹   s      r*   ÚSETATTR_DROPÚ.JM_get_widget_properties.<locals>.SETATTR_DROPºM  s   € ô 	�˜%Õ r,   rZ  TFNrM  rX  rR  c                ó¤  • U nSn U R                   (       d  g[        R                  " X5      nUR                   (       a  [        R                  " U5      nU(       a  U$ [        R                  " U [	        S5      5      n U R                   UR                   :X  a  [        S5      eUS-  nUS:X  a"  [        R                  " U[	        S5      5      nSnMÌ  )zâ
This is a modified version of MuPDF's pdf_dict_get_inheritable(), with
some changes:
* Returns string from pdf_to_text_string() or None if not found.
* Recurses to parent if current node exists but with empty string
  value.
r¢  r   Nr©  zcycle in resourcesr   r   )rÍ   r£   r  r	  r  rl   )rð  rŽ  ÚslowÚhalfbeatr  ry  s         r*   Ú'pdf_dict_get_inheritable_nonempty_labelÚIJM_get_widget_properties.<locals>.pdf_dict_get_inheritable_nonempty_labelÑM  s®   € ð ˆØˆØØ—?—?ØÜ×$Ò$ TÓ/ˆCØ�~�~Ü×0Ò0°Ó5�ÞØ �LÜ×%Ò% d¬H°XÓ,>Ó?ˆDØ�‰ $§/¡/Ó1ÜÐ 4Ó5Ð5Ø˜‰MˆHØ˜1‹}Ü×)Ò)¨$´¸Ó0BÓC�Ø�ñ r,   ÚTUrS  r©  rQ  rr  rT  rV  rµ  rõ
  r   r   rN  rÅ  rO  r]  r^  ÚMKÚBGr`  ÚBCr)  rP  r&  r_  r>  rY  rU  rÄ  rñ  r`  rJ  ÚKra  r¹  rb  ÚVrc  rþ  rd  ÚBlre  ÚFo)%r£   r  rÅ   rá   r2  Úpdf_widget_typerW  r  Úpdf_signature_is_signedr
  Úpdf_field_border_stylerK  Úpdf_load_field_namer  rs  r  rÍ   r  r…  Úpdf_field_valueÚpdf_field_displayr  r!  r<  r¬  rT  r  r­  Úpdf_text_widget_max_lenÚpdf_text_widget_formatrü  r	  r  Úpdf_field_flagsr  ÚJM_get_scriptrÜ  )rà   r\  r'  r×   rb  Útwr¡  r¥  rW  rR  rª  ry  Úfvaluer  rN  rJ   rD  rh  rg  rj  rŸ  Ússs    `                    r*   ÚJM_get_widget_propertiesrÁ  «M  sÇ  ø€ ô ×#Ò# E§J¡JÓ/€Iä˜5Ÿ:™:Ó&€DØ
�(‰(‹*€CØ	€Bõ$ò!ô ×&Ò& r§w¡wÓ/€Jà"€FÔØ”U×4Ñ4Ó4Ü×(Ò(¨×8Ñ8Ù�K Õ&á�K Õ&á�˜TÔ"Ù�˜Ô):¼5×;WÒ;WÐXaÓ;bÓ)cÔdÙ�Ð,Ô.?Ô@RÐS]Ó@^Ó._Ô`ä×*Ò*¨9Ó5€JÙ�˜ zÔ2òñ8 4°I¼xÈ»~ÓN€EØÑÙ�V˜]¨EÔ2à€FØ”U×6Ñ6Ó6Ü× Ò  )¬X°hÓ-?Ó@ˆØ�>�>Ù˜ ¬e×.>Ò.>ÀÓ.DÔEÜ× Ò  ¬H°T«NÓ;ˆØ�>�>Ü×&Ò& sÓ+ˆFÞÜ×&Ò& yÓ1ˆÙ�˜Ô(9¸&Ó(AÔBá�˜¬%×*AÒ*AÀ)Ó*LÔMä×$Ò$¤U×%8Ò%8¸ÄHÈTÃNÔT\Ð]`ÓTaÓ%bÓc€LØ�qÓØˆÙ�˜¨Ô6ä
×
Ò
˜i¬°$«¼À#»Ó
G€CÜ×Ò˜#×ÑÜ×Ò Ó$ˆØˆC�!‰GˆÜ�q–ˆAÜ×#Ò#¤E×$7Ò$7¸¸QÓ$?Ó@ˆAˆa‹Dñ á�V˜_¨aÔ0á�˜¬×(EÒ(EÀbÇgÁgÓ(NÔOá�˜¬×(DÒ(DÀRÇWÁWÓ(MÔNä
×
Ò
˜i¬°$«¼À$»Ó
H€CÜ×Ò˜#×ÑÜ×Ò Ó$ˆØˆc�A‰gˆÜ�q–ˆAÜ×&Ò&¤u×':Ò':¸3ÀÓ'BÓCˆC�‹Fñ á�V˜\¨3Ô/ä
×
Ò
˜i¬°$«¼À$»Ó
H€CÜ×Ò˜#×ÑÜ×Ò Ó$ˆØˆc�A‰gˆÜ�q–ˆAÜ×&Ò&¤u×':Ò':¸3ÀÓ'BÓCˆC�‹Fñ á�V˜^¨SÔ1á�˜Ô*;¸EÓ*BÔCä	×	!Ò	!¤%×"@Ò"@ÀÌHÐUYËNÓ"[Ó	\€BÙ�˜Ô%6°rÓ%:Ô;ä
×
Ò
˜i¬°$«¼À$»Ó
H€CØ
‡~‡~Ù�VÐ-Ô/@Ä×AYÒAYÐZ]ÓA^Ó/_Ô`á�˜¬×(=Ò(=¸iÓ(HÔIð ×ÑÔô 	×Ò˜9¤h¨s£mÓ4€AÜ	�qÓ	€BÙ�˜ 2Ô&á�˜Üœ%×-Ò-¨i¼À$»ÌÐRUËÓWÓXôñ �˜Üœ%×-Ò-¨i¼À$»ÌÐRUËÓWÓXôñ �˜Üœ%×-Ò-¨i¼À$»ÌÐRUËÓWÓXôñ �˜Üœ%×-Ò-¨i¼À$»ÌÐRUËÓWÓXôñ �˜Üœ%×-Ò-¨i¼À$»Ì×I[ÒI[Ð\`ÓIaÓbÓcôñ �˜Üœ%×-Ò-¨i¼À$»Ì×I[ÒI[Ð\`ÓIaÓbÓcõr,   c                ó¤  • US:  a  g[         R                  " X5      n[         R                  " U[        S5      5      nUR                  (       aL  [         R
                  " [         R                  " US5      5      n[         R                  " U[        S5      5      nO [         R                  " U[        S5      5      nUR                  (       d  gUn[         R                  " U[        S5      5      nUR                  (       a  g[         R                  " U[        S5      5      nUR                  (       a  g	[         R                  " U[        S
5      5      nUR                  (       aí  [         R                  " U[        S5      5      nUR                  (       a'  [         R                  " U5      (       d  [        S5        g[         R                  " U[        S5      5      (       a  g[         R                  " U[        S5      5      (       a  g[         R                  " U[        S5      5      (       a  g[        S[         R                  " U5       S35        g)z>
Return the file extension of a font file, identified by xref
r   rÕ  ró
  r   r  r’  Úpfar“  r5  r”  r¶  r•  r–  Úcffr—  Úcidr˜  r4  zunhandled font type 'rî   )r£   r=  r  r  rÍ   rè  r­  rõ  rw   rÖ  r…  )r2  r  r²  r™  r  s        r*   rØ  rØ  LN  s§  € ð ˆaƒxØÜ×Ò˜cÓ(€AÜ×Ò˜q¤(Ð+<Ó"=Ó>€EØ××Ü×(Ò(¬×)<Ò)<¸UÀAÓ)FÓGˆÜ× Ò  ¤hÐ/?Ó&@ÓA‰ä× Ò  ¤HÐ-=Ó$>Ó?ˆØ�>�>Øà€Aä
×
Ò
˜Q¤¨Ó 4Ó
5€CØ
‡~‡~Øä
×
Ò
˜Q¤¨Ó 5Ó
6€CØ
‡~‡~Øä
×
Ò
˜Q¤¨Ó 5Ó
6€CØ
‡~‡~Ü× Ò  ¤h¨yÓ&9Ó:ˆØ�>�>¤%×"3Ò"3°C×"8Ñ"8ÜÐ5Ô6ØÜ×Ò˜S¤(¨8Ó"4×5Ñ5ØÜ×Ò˜s¤H¨_Ó$=×>Ñ>ØÜ×Ò˜s¤H¨ZÓ$8×9Ñ9ØäÐ+¬E×,=Ò,=¸cÓ,BÐ+CÀ1ÐEÔFàr,   c                ó(  • [        5       n[        R                  " U 5      (       al  [        R                  " U 5      n[	        U5       HG  n[        R
                  " X5      n[        R                  " U5      nXQ;  d  M6  UR                  U5        MI     U$ )zx
Get OCG arrays from OC configuration
Returns dict {"basestate":name, "on":list, "off":list, "rbg":list, "locked":list}
)rµ   r£   r<  r¬  rT  r­  r  rp   )rs  Úlist_rJ   rh  r  rH   s         r*   ÚJM_get_ocg_arrays_imprÈ  xN  ss   € ô
 ‹F€EÜ×Ò˜3×ÑÜ×Ò Ó%ˆÜ�q–ˆAÜ×%Ò% sÓ.ˆCÜ×#Ò# SÓ)ˆDØÕ Ø—‘˜TÖ"ñ	 ð
 €Lr,   c                óH  • [        5       n[        R                  " U [        S5      5      n[	        U5      nU(       a  X1S'   [        R                  " U [        S5      5      n[	        U5      nU(       a  X1S'   [        R                  " U [        S5      5      n[	        U5      nU(       a  X1S'   [        5       n[        R                  " U [        S5      5      n[        R                  " U5      (       aZ  [        R                  " U5      n[        U5       H5  n[        R                  " X%5      n[	        U5      nUR                  U5        M7     U(       a  X1S'   [        R                  " U [        S	5      5      nUR                  (       a  [        R                  " U5      nX�S
'   U$ )Nrm  r]  rn  r}
  ÚLockedr0	  r5  r~
  rØ  r|
  )r:   r£   r  r  rÈ  rµ   r<  r¬  rT  r­  rp   rÍ   r…  )	Úconfr¦   rs  rÇ  rJ   rh  r  Úlist1r¶  s	            r*   r7  r7  ˆN  sA  € ä	‹€BÜ
×
Ò
˜d¤H¨T£NÓ
3€CÜ! 3Ó'€EÞØˆ4‰Ü
×
Ò
˜d¤H¨U£OÓ
4€CÜ! 3Ó'€EÞØˆ5‰	Ü
×
Ò
˜d¤H¨XÓ$6Ó
7€CÜ! 3Ó'€EÞØˆ8‰Ü‹F€EÜ
×
Ò
˜d¤H¨ZÓ$8Ó
9€CÜ×Ò˜3×ÑÜ×Ò Ó%ˆÜ�q–ˆAÜ×%Ò% sÓ.ˆCÜ)¨3Ó/ˆEØ�L‰L˜Öñ ö Øˆ:‰Ü
×
Ò
˜d¤H¨[Ó$9Ó
:€Cà
‡~‡~Ü×!Ò! 3Ó'ˆØˆ;‰Ø€Ir,   c                óì  • [         R                  " U5      n[        SUS5       HÍ  n[         R                  " [         R                  " X5      5      n[         R
                  " U5      n[         R                  " [         R                  " XS-   5      5      n[        USS5      n[         R                  " U5      n[        U[        5      (       d   eUR                  S5      nU R                  XX45        MÏ     g )Nr   r   r   r  )r£   r¬  rT  rè  r­  r  r�  Úfz_buffer_extractrC   r   rÉ  rp   )	r  rë  rJ   rh  rŽ  ry  r  r&  rö  s	            r*   ré  ré  ©N  s»   € Ü×Ò˜DÓ!€AÜ�1�a˜Ž^ˆÜ×(Ò(¬%×*=Ò*=¸dÓ*FÓGˆÜ×Ò˜sÓ#ˆÜ×(Ò(¬%×*=Ò*=¸dÈÁEÓ*JÓKˆÜ! # q¨!Ó,ˆÜ×#Ò# CÓ(ˆÜ˜!œU×#Ñ#Ð#Ð#Ø�H‰H�WÓˆØ�‰�s�hÖò r,   c                ó  • U R                   (       d  g[        R                  " U [        S5      5      n[        R                  " U5      nUS:X  a3  [        R                  " U [        S5      5      nUR                   (       d  gOg[        R
                  " U5      (       a   [        [        R                  " U5      5      nO>[        R                  " U5      (       a"  [        R                  " U5      n[        U5      nOgU(       a  U$ g)zÌ
JavaScript extractor
Returns either the script source or None. Parameter is a PDF action
dictionary, which must have keys /S and /JS. The value of /S must be
'/JavaScript'. The value of /JS is returned.
NrJ
  Ú
JavaScriptÚJS)rÍ   r£   r  r  r…  r€  r
  r	  r"  r#  r—  )rŽ  r�  ÚjjÚjsrñ  r&  s         r*   r½  r½  ¶N  sÅ   € ð �>�>Øä×Ò˜3¤¨£Ó.€AÜ	×	Ò	˜1Ó	€BØ	ˆ\ÓÜ×Ò ¤X¨d£^Ó4ˆØ�}�}Øð ð 	ä×Ò˜2×ÑÜ"¤5×#;Ò#;¸BÓ#?Ó@‰Ü	×	Ò	˜R×	 Ñ	 Ü×#Ò# BÓ'ˆÜ'¨Ó,‰àÞØˆØ
r,   c                ót   • U R                   R                  (       a  [        R                  " U S5      (       d  gg)z 
Ensure valid journalling state
r   r   )rÍ   r÷  r£   r	  rx  s    r*   rw  rw  ÕN  s)   € ð ‡~�~××¤e×&=Ò&=¸cÀ1×&EÑ&EØØr,   c                óP  • U [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gU [         R
                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  g	U [         R                  :X  a  g
U [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gU [         R                  :X  a  gg)z'
return extension for MuPDF image type
Úfaxri  ÚflateÚlzwÚrldÚbmpÚgifÚjb2r1  ÚjpxÚjxrrµ  r)  ÚtiffrÕ  )r£   ÚFZ_IMAGE_FAXÚFZ_IMAGE_RAWÚFZ_IMAGE_FLATEÚFZ_IMAGE_LZWÚFZ_IMAGE_RLDÚFZ_IMAGE_BMPÚFZ_IMAGE_GIFÚFZ_IMAGE_JBIG2ÚFZ_IMAGE_JPEGÚFZ_IMAGE_JPXÚFZ_IMAGE_JXRÚFZ_IMAGE_PNGÚFZ_IMAGE_PNMÚFZ_IMAGE_TIFF)rc  s    r*   ÚJM_image_extensionrî  ÞN  sç   € ð ”×"Ñ"Ó"¨uØ”×"Ñ"Ó"¨uØ”×$Ñ$Ó$¨wØ”×"Ñ"Ó"¨uØ”×"Ñ"Ó"¨uØ”×"Ñ"Ó"¨uØ”×"Ñ"Ó"¨uØ”×$Ñ$Ó$¨uØ”×#Ñ#Ó#¨vØ”×"Ñ"Ó"¨uØ”×"Ñ"Ó"¨uØ”×"Ñ"Ó"¨uØ”×"Ñ"Ó"¨uØ”×#Ñ#Ó#¨vàr,   c                ór  • [        U[        R                  5      (       d   e[        R                  " [        R                  R                  5      n[        R
                  " [        R                  " U5      U5      n[        R
                  " U[        5      nU[        U5      4n[        R                  U5        g r.   )rC   r£   r}  rr  r3  rð  Úfz_quad_from_rectÚg_img_info_matrixÚJM_py_from_quadÚ
g_img_inforp   )r?  rõ  r   r´  r%  r+  r  s          r*   ÚJM_image_filterrô  øN  s~   € Ü�cœ5Ÿ>™>×*Ñ*Ð*Ð*Ü�Š”U—\‘\×,Ñ,Ó-€AÜ×Ò¤×!8Ò!8¸Ó!;¸SÓA€AÜ×Ò Ô$5Ó6€AØ” Ó#Ð#€DÜ×Ñ�dÕr,   c                óx  • U (       d  g[        U 5      nUS:  a  [        S5        gU n[        R                  " U5      nU[        R                  :X  a  gU(       a  [        R
                  " X25      nO[        R                  " X25      n[        R                  " U5      n[        R                  " U5      n[        R                  " U5      u  p‰[        R                  " U5      n
[        R                  " UR                  5       5      n[        5       nUR                  5       U[        '   UR!                  5       U["        '   X¬S'   [%        U5      U[&        '   XŒ[(        '   Xœ[*        '   UR-                  5       U[.        '   UR1                  5       U[2        '   [5        U5      U[6        '   X¼[8        '   U(       a  Xl[:        '   U$ )z€
Return basic properties of an image provided as bytes or bytearray
The function creates an fz_image and optionally returns it.
Nr   rj  Úorientation)r<   rw   r£   Úfz_recognize_image_formatÚFZ_IMAGE_UNKNOWNrã  Úfz_new_buffer_from_shared_datarB  Úfz_image_orientation_matrixr›  Úfz_image_orientationr=  rò  r:   r   r  r!  r  r|  r  r  r  rJ   r  rš  r  rî  rÙ  rë  Údictkey_image)rœ  Ú
keep_imager·  rö  rc  r&  r´  rõ  r¸  r¹  rö  Úcs_namer“  s                r*   ÚJM_image_profilerÿ  O  s`  € ö
 Øä�	‹?€DØˆaƒxÜÐ!Ô"ØØ€Aä×+Ò+¨QÓ/€EØ”×&Ñ&Ó&ØæÜ×2Ò2°AÓ<‰ä×2Ò2°AÓ<ˆÜ×*Ò*¨CÓ0€EÜ
×
+Ò
+¨UÓ
3€CÜ×*Ò*¨5Ó1�J€DÜ×,Ò,¨eÓ4€KÜ×&Ò&¨×(8Ñ(8Ó(:Ó;€GÜ‹V€FØ"ŸW™W›Y€FŒMÑØ#Ÿg™g›i€FŒNÑØ(ˆMÑÜ/°Ó4€FŒNÑØ ŒLÑØ ŒLÑØ"'§'¡'£)€FÔÑØ Ÿ9™9›;€FŒKÑÜ-¨eÓ4€FŒKÑØ&ŒOÑæØ!&”ÑØ€Mr,   c                ó^  • U R                  5       n[        R                  " 5       q[        R                  " 5       n[        R
                  " X[        5         " S S[        R                  5      nU" 5       n[        SSSSUS9n/ q[        R                  " XU5        [        [        5      n/ qU$ )Nc                  ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )Ú0JM_image_reporter.<locals>.SanitizeFilterOptionsi4O  c                óB   >• [         TU ]  5         U R                  5         g r.   ©rÈ   r‘   Úuse_virtual_image_filter©r)   rÒ  s    €r*   r‘   Ú9JM_image_reporter.<locals>.SanitizeFilterOptions.__init__5O  s   ø€ Ü‰GÑÔØ×)Ñ)Õ+r,   c                óF   • [        S [        R                  " U5      X45        g r.   )rô  r£   r}  )r)   rÖ  rõ  r   r´  r  s         r*   Úimage_filterÚ=JM_image_reporter.<locals>.SanitizeFilterOptions.image_filter8O  s   € Ü˜D¤%§.¢.°Ó"5°tÕCr,   r/   ©r2   r3   r4   r5   r‘   r	  r6   rÜ  ©rÒ  s   @r*   ÚSanitizeFilterOptionsr  4O  s   ø† õ	,÷	Dð 	Dr,   r  r   )r™  rš  rß  r›  rÑ  )r2  r£   r}  rñ  rr  r`  ÚPdfSanitizeFilterOptions2r�  ró  r�  r¶   )r×   r2  r8  r  Úsanitize_filter_optionsÚfilter_optionsr¦   s          r*   rm  rm  -O  s™   € Ø
�(‰(‹*€CäŸšÓ(ÐÜ�|Š|‹~€HÜ	×Ò˜TÔ->Ô?ôD¤× ?Ñ ?ô Dñ 4Ó5Ðä+ØØØØØ)ñ€Nð €Jä	×"Ò" C¨~Ô>ä	ŒzÓ	€BØ€JØ€Ir,   c                 ó  • [        [        S5      (       + n [        [        S5      (       + n[        [        S5      (       + n[        [        S5      (       + n[        [        S5      (       + n[        [        S5      (       + n[        [        S5      (       + n[        [        S5      (       + n[        [        S	5      (       + n[        5       n	XS
'   [        [        R                  5      U	S'   [        [        R
                  5      U	S'   [        [        R                  5      U	S'   [        [        R                  5      U	S'   [        [        R                  5      U	S'   [        [        R                  5      U	S'   [        [        R                  5      U	S'   [        [        R                  5      U	S'   [        [        R                  5      U	S'   [        [        R                  5      U	S'   [        [        R                  5      U	S'   [        [        R                  5      U	S'   [        [         5      U	S'   [        [        R"                  5      U	S'   X	S'   X)S'   X9S'   XIS'   XYS'   XiS'   XyS'   X‰S '   [        [        R$                  5      U	S!'   U	$ )"NÚTOFUÚTOFU_BASE14ÚTOFU_CJKÚTOFU_CJK_EXTÚTOFU_CJK_LANGÚ
TOFU_EMOJIÚTOFU_HISTORICÚTOFU_SILÚTOFU_SYMBOLÚbase14ÚcbzÚepubr·  Úiccr1  rÝ  rÓ  rb  zplotter-cmykz	plotter-gz	plotter-nzplotter-rgbz	py-memoryr£  Útofuztofu-cjkztofu-cjk-extztofu-cjk-langz
tofu-emojiztofu-historicztofu-silztofu-symbolÚxps)r@   r£   r:   ré   ÚFZ_ENABLE_CBZÚFZ_ENABLE_EPUBÚFZ_ENABLE_HTMLÚFZ_ENABLE_ICCÚFZ_ENABLE_IMGÚFZ_ENABLE_JPXÚFZ_ENABLE_JSÚFZ_ENABLE_PDFÚFZ_PLOTTERS_CMYKÚFZ_PLOTTERS_GÚFZ_PLOTTERS_NÚFZ_PLOTTERS_RGBÚ	JM_MEMORYÚFZ_ENABLE_SVGÚFZ_ENABLE_XPS)
Ú	have_TOFUÚhave_TOFU_BASE14Úhave_TOFU_CJKÚhave_TOFU_CJK_EXTÚhave_TOFU_CJK_LANGÚhave_TOFU_EMOJIÚhave_TOFU_HISTORICÚhave_TOFU_SILÚhave_TOFU_SYMBOLrL   s
             r*   ÚJM_fitz_configr9  OO  s  € Ü%¤e¨VÓ4Ô4€IÜ%¤e¨]Ó;Ô;ÐÜ%¤e¨ZÓ8Ô8€MÜ%¤e¨^Ó<Ô<ÐÜ%¤e¨_Ó=Ô=ÐÜ%¤e¨\Ó:Ô:€OÜ%¤e¨_Ó=Ô=ÐÜ%¤e¨ZÓ8Ô8€MÜ%¤e¨]Ó;Ô;Ðä
‹&€CØ.ˆ�MÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#7Ñ#7Ó8€Cˆ�KÜ"¤5×#7Ñ#7Ó8€Cˆ�KÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#5Ñ#5Ó6€Cˆ�IÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#9Ñ#9Ó:€CˆÑÜ"¤5×#6Ñ#6Ó7€CˆÑÜ"¤5×#6Ñ#6Ó7€CˆÑÜ"¤5×#8Ñ#8Ó9€CˆÑÜ"¤9›o€CˆÑÜ"¤5×#6Ñ#6Ó7€Cˆ�JØ'ˆ�KØ+ˆ
�OØ/ˆÑØ0ˆÑØ-ˆÑØ0ˆÑØ+ˆ
�OØ.ˆÑÜ"¤5×#6Ñ#6Ó7€Cˆ�JØ€Jr,   c                óä  • [         R                  " U[        S5      5      n[         R                  " X[         R                  " 5       S5      n[         R
                  " U5      n[         R                  " U5      (       a9  U(       a  [         R                  " XE5        U$ [         R                  " XES5         U$ [         R                  " U S5      nU(       a>  UR                  (       a  [         R                  " Xt5        [         R                  " Xu5        O=[         R                  " Xu5        UR                  (       a  [         R                  " Xt5        [         R                  " U[        S5      U5        U$ )aO  
Insert a buffer as a new separate /Contents object of a page.
1. Create a new stream object from buffer 'newcont'
2. If /Contents already is an array, then just prepend or append this object
3. Else, create new array and put old content obj and this object into it.
   If the page had no /Contents before, just create a 1-item array.
rO  r   r   )r£   r  r  r  r  r  r<  r>  r!  rS  rÍ   rV  )rb  r
  Únewcontr£  r9  Únewcontsr  Úcarrs           r*   r   r   vO  s  € ô ×!Ò! '¬8°JÓ+?Ó@€HÜ×#Ò# C´%·,²,³.À!ÓD€HÜ×Ò˜HÓ%€DÜ×Ò˜(×#Ñ#ÞÜ× Ò  Ô4ð €Kô ×"Ò" 8°qÕ9ð €Kô ×"Ò" 3¨Ó*ˆÞØ×"×"Ü×$Ò$ TÔ4Ü× Ò  Õ0ä× Ò  Ô0Ø×"×"Ü×$Ò$ TÔ4Ü×Ò˜7¤H¨ZÓ$8¸$Ô?Ø€Kr,   c
           
     óÒ  • Sn
SnSnSnSnSnSnSnSnSn[        U 5        U	S:”  a  [        R                  " U	5      u  nnnU(       a7  [        R                  " SUWUS5      n
[        R                  " X
X–U5      nSnSnOýU(       a  [        R
                  " U5      u  nnU(       a5  [        R                  " XWSS5      n
[        R                  " X
U5      nSnSnO¡U(       a  [        R                  " SX%S5      n
OH[        U5      nUR                  (       d  [        [        [        5        [        R                  " SXµS5      n
U(       d  [        R                  " X
5      nSnO[        R                  " X
U5      nSn[        R                  " U5      n[!        [        R"                  " [        R$                  " U['        S5      5      5      5      n[)        [        R"                  " [        R$                  " U['        S5      5      5      5      nU(       d  [)        [+        X5      5      n[        R,                  " U
5      n[        R.                  " U
5      nUUUU[1        U5      U	UUS	./nU$ )
z
Insert a font in a PDF
Nr   r¨  rÕ  r   r   rÔ  r¶  )r   rÉ   rÜ  r  rÝ  r  r  )rB  r£   rÔ  rÕ  Úpdf_add_cjk_fontrÖ  Úpdf_add_simple_fontr‹  r/  rÍ   rÂ  r  rt	  rØ  Úpdf_add_cid_fontr  rÄ  r…  r  r  r
  rØ  rü  r  ré   )rb  rÛ  r  r  r¿  rä  r
  r  r  rÝ  rÜ  r&  rÉ  Úixrefr  r  r¹   r   r¼  ÚextorÊ  rÀ  r0  r1  s                           r*   r  r  ”O  s  € ð €DØ
€CØ€DØ€EØ€EØ€FØ
€EØ	€DØ	€DØ€Dä�SÔà�"ƒ}Ü!×4Ò4°XÓ>Ñˆˆd�EÞÜ×,Ò,¨T°4¸¸uÀaÓHˆÜ×)Ò)¨#°XÀeÓLˆØˆØ‰ö
 Ü×4Ò4°VÓ<‰JˆD�$ÞÜ×0Ò0°¸tÀQÈÓJˆDÜ×0Ò0°¸HÓEˆHØˆDØ‰Fö Ü×2Ò2°4¸ÈÓJ‘ä(¨Ó4�Ø—~—~ÜÔ.Ô0@ÔAÜ×4Ò4°T¸3ÀQÓG�æÜ ×1Ò1°#Ó<�Ø‘ä ×4Ò4°SÀÓI�Ø�ä×Ò˜XÓ&€EÜ¤× 1Ò 1´5×3EÒ3EÀhÔPXÐYcÓPdÓ3eÓ fÓg€Däœe×/Ò/´×1CÒ1CÀXÌxÐXaÓObÓ1cÓdÓe€DæÜ Ô!5°cÓ!AÓBˆä
×
 Ò
  Ó
&€CÜ
×
!Ò
! $Ó
'€CààØØÜ˜v›,Ø$ØØ ñð€Eð €Lr,   c                óþ  • [        U [        R                  5      (       a  U $ [        U [        5      (       aC  [        R                  " U R                  U R
                  U R                  U R                  5      n U $ [        U [        5      (       aY  [        R                  " U R                  U R
                  U R                  U R                  5      n[        R                  " U5      nU$ [        U [        R                  5      (       a  [        R                  " U 5      nU$ U (       a  [        U 5      (       a  [        U 5      S:w  a$  [        R                  " [        R                  5      $ / SQn[        S5       H^  nX   X#'   X#   c&  [        R                  " [        R                  5      s  $ X#   [        :  a  [        X#'   X#   [        :”  d  MV  [        X#'   M`     [        R                   " US   US   US   US   5      $ )z6
PySequence to mupdf.FzIrect. Default: infinite irect
rr  r;  r   r   r   r   )rC   r£   rp  rq  r°  r²  r¯  r±  r,  rr  r  r  rx  rT  r†  r‡  Úfz_make_irect)r%  rL   r  rh  s       r*   rL  rL  áO  sj  € ô �!”U—]‘]×#Ñ#ØˆÜ�!”U×ÑÜ�MŠM˜1Ÿ4™4 §¡ q§t¡t¨Q¯T©TÓ2ˆØˆÜ�!”T×ÑÜ�lŠl˜1Ÿ4™4 §¡ q§t¡t¨Q¯T©TÓ2ˆÜ�mŠm˜CÓ ˆØˆ
Ü�!”U—\‘\×"Ñ"Ü�mŠm˜AÓˆØˆ
ÞÔ$ Q×'Ñ'¬?¸1Ó+=ÀÓ+BÜ�}Š}œU×4Ñ4Ó5Ð5Ú€AÜ�1ŽXˆØ‰tˆ‰Ø‰4‰<Ü—=’=¤×!8Ñ!8Ó9Ò9Ø‰4”/Ó!Ü"ˆA‰DØ‰4”/Õ!Ü"ˆA‹Dñ ô ×Ò˜q ™t Q q¡T¨1¨Q©4°°1±Ó6Ð6r,   c                ó  • [         R                  " U 5      n[         R                  " U[        S5      5      n[         R                  " U5      (       a  [         R
                  " U5      $ [         R                  " U5      n/ n[        U5       Hy  n[         R                  " X%5      n[         R                  " U5      (       a  [         R                  " US5      nUR                  [        [         R
                  " U5      5      5        M{     U$ )z
ListBox retrieve value
r±  r   )r£   r  r  r  r€  r	  r¬  rT  r­  r<  rp   r
  )rà   r'  rû  rJ   r  rh  Úelems          r*   ÚJM_listbox_valuerH  þO  sÊ   € ô
 ×#Ò# UÓ+€IÜ×Ò ¬H°S«MÓ:€FÜ×Ò˜F×#Ñ#Ü×'Ò'¨Ó0Ð0ô 	×Ò˜VÓ$€AØ€Eô �AŽYˆÜ×"Ò" FÓ.ˆÜ×Ò˜t×$Ñ$Ü×&Ò&¨¨aÓ0ˆDØ�‰Ô'¬×)AÒ)AÀ4Ó)HÓIÖJñ	 ð
 €Lr,   c           	     ór  • SnUS:  a  US-  nOZUS:X  a  XRS   S S3-  nOHUS:X  a   eUS:X  a  XRS   S S	US   S S	US   S S
3-  nO XRS   S S	US   S S	US   S S	US   S S3-  nUS[        U5       S	U S3-  n[        R                  " [        R                  " U 5      [        R                  U5        g )Nra   r   z0 g r   rz  z g r   r   r´   z rg z k rU	  rÆ  )r?  r£   r¯  r  ÚPDF_ENUM_NAME_DA)rà   rÏ  rg  rÿ   r   rÔ  s         r*   r  r  P  sñ   € ð
 €CØˆaƒxØ�‰‰Ø	�‹Ø�a‘&˜�˜3ÐÑ‰Ø	�‹ØˆqØ	�‹Ø�a‘&˜�˜1˜S ™V A˜J a¨¨A©¨q z°Ð6Ñ6‰à�a‘&˜�˜1˜S ™V A˜J a¨¨A©¨q z°°3°q±6¸!°*¸CÐ@Ñ@ˆØˆQŒ˜xÓ(Ð)¨¨8¨*°CÐ8Ñ8€CÜ	×"Ò"¤5×#6Ò#6°uÓ#=¼u×?UÑ?UÐWZÕ[r,   c                ó4   •  [        R                  " XX#U5      $ r.   )4r  r   ÚJM_make_spanlistr£   rò  rr  rð  ró  rô  rç  rå  rë  rì  rÍ   rÜ  rc  rÐ  rÊ  rÑ  ÚFZ_STEXT_SYNTHETICrm  rU  Úargbrí  r0  rî  rË  ri  Údictkey_charsr—  r  ÚJM_py_from_pointÚdictkey_originrq  r  rö  rp   r:   rÈ  Údictkey_flagsÚdictkey_bidiÚdictkey_char_flagsrÄ  Údictkey_fontrÇ  r+  rö  Ú	dictkey_cré   rõ  ræ  Údictkey_spans)Ú	line_dictrt   ri  r•  rú  Ú	char_listÚ	span_listÚ	span_rectÚ	line_rectÚ
char_styleÚ	old_stylerŠ  rI  Úspan_originr  r%  rÑ  rÐ  r0  rË  Ú	char_dicts                        r*   rL  rL  *P  s   € ØÜ×%Ò% i°sÀ'ÓJÐJr,   c                óô  • U R                  5       n[        U5      n[        R                  " U R                  5      n U(       a8  U[        R
                  [        R                  4;   d  U[        R                  :  a<  [        R                  " U [        R                  " [        R                  5      5      nSnOŠUS:X  aP  U R                  5       S:X  a<  [        R                  " U [        R                  " [        R                  5      SS5      nO4[        R                  " [        R                  " UR                  5      5      n[!        U5      nU R#                  5       U[$        '   U R'                  5       U[(        '   X1[*        '   U R                  5       U[,        '   U R/                  5       U[0        '   U R3                  5       U[4        '   U R7                  5       U[8        '   [;        U5      U[<        '   Xa[>        '   g)zÆPopulate a dictionary with information extracted from a given image.

Used by 'Document.extract_image' and by 'JM_make_image_block'.
Both of these functions will add some more specific information.
rµ  r1  rr  r  r   N) Úfz_compressed_image_typerî  r£   Úll_fz_compressed_image_bufferrÍ   rç  rø  rå  Úfz_new_buffer_from_image_as_pngr”  rÌ  rJ   Ú fz_new_buffer_from_image_as_jpegr4  r  rù	  r$  r   r  r!  r  rÙ  r  r¸  r  r¹  r  rš  r  r<   rÈ  rü  )r1  Úimg_dictÚimg_typerÜ  Úll_cbufr&  rà  s          r*   ré  ré  ÀP  sv  € ð ×+Ñ+Ó-€HÜ
˜XÓ
&€Cô ×1Ò1°#·.±.ÓA€Gà	ÞØœ×,Ñ,¬e×.DÑ.DÐEÓEØ”e×(Ñ(Ó(ô ×3Ò3ØÜ×'Ò'¬×(EÑ(EÓFóˆð ‰Ø	�‹˜3Ÿ5™5›7 a›<ä×4Ò4Øœ×,Ò,¬U×-JÑ-JÓKÈRÐQRóT‰ô �nŠnœU×4Ò4°W·^±^ÓDÓEˆä˜cÓ"€FØ!Ÿe™e›g€HŒ]ÑØ"Ÿu™u›w€HŒ^ÑØŒ[ÑØ#&§5¡5£7€HÔÑ Ø ŸX™X›Z€HŒ\ÑØ ŸX™X›Z€HŒ\ÑØŸG™G›I€HŒ[ÑÜ  ›[€HŒ\ÑØ$Œ]Òr,   c                óT  • U R                  5       n[        X!5        UR                  5       nUR                  (       aG  UR	                  [
        R                  " [
        R                  5      5      nUR                  5       US'   OS US'   [        U R                  5       5      U[        '   g )Nrµ  )rø  ré  rµ  rÍ   rd  r£   r”  rÌ  rÎ  r|  r  r  )rû  r#  r1  rµ  r•  s        r*   ÚJM_make_image_blockrj  êP  s}   € Ø
�-‰-‹/€CÜ�SÔ%à�8‰8‹:€DØ‡‡Ø×3Ñ3´E×4GÒ4GÌ×HeÑHeÓ4fÓgˆØ!×3Ñ3Ó5ˆ
�6Òà!ˆ
�6ÑÜ!2°5×3DÑ3DÓ3FÓ!G€JŒ~Òr,   c                ór   •  [        R                  " U R                  XUR                  UR                  5      $ r.   )r  r   ÚJM_make_text_blockrÍ   r£   rr  rð  ræ  r†  r7  rç  r:   rL  rö  r
  Údictkey_wmoderP  r´  Údictkey_dirrq  r  rp   Údictkey_lines)
rû  r#  ri  r•  rú  Ú	line_listÚ
block_rectrt   rX  r\  s
             r*   rl  rl  ÷P  s-   € ØÜ×'Ò'¨×(8Ñ(8¸*È4Ï?É?Ð\c×\nÑ\nÓoÐor,   c                óF   •  [        R                  " U R                  X5      $ r.   )r  r   rç  rÍ   r£   rö	  rr  r8  Úfz_contains_rectr7  rç  rÉ   ÚFZ_STEXT_BLOCK_IMAGEræ  r†  r:   r  rÚ  rq  r  rj  rl  rp   Údictkey_blocks)	rU  rè  ri  Útext_bufferÚ
block_listrú  rù  rû  r#  s	            r*   rç  rç  Q  s   € ØÜ×*Ò*¨2¯=©=¸)ÓIÐIr,   c           	     ój  • / SQn[        U [        R                  5      (       a  U $ [        U [        5      (       aW  [        R                  " U R                  U R
                  U R                  U R                  U R                  U R                  5      $ U (       a  [        U 5      (       a  [        U 5      S:w  a  [        R                  " 5       $ [        S5       H,  n[        X5      X'   X   b  M  [        R                  " 5       s  $    [        R                  " US   US   US   US   US   US   5      $ )	N)r   r   r   r   r   r   r§  r   r   r   r   rr  r   )rC   r£   r}  r€  r!   r  rö  rD  ri  r  r  r  rT  rƒ  rr  )rŒ  r!   rh  s      r*   rê  rê  /Q  sâ   € Ú€AÜ�!”U—^‘^×$Ñ$ØˆÜ�!”V×ÑÜ�~Š~˜aŸc™c 1§3¡3¨¯©¨Q¯S©S°!·#±#°q·s±sÓ;Ð;ÞÔ$ Q×'Ñ'¬?¸1Ó+=ÀÓ+BÜ�~Š~ÓÐÜ�1ŽXˆÜ˜QÓ"ˆ‰Ø‰4‹<Ü—<’<“>Ò!ñ ô �>Š>˜!˜A™$  !¡ a¨¡d¨A¨a©D°!°A±$¸¸!¹Ó=Ð=r,   c           	     ó¸  • [         R                  " [         R                  R                  5      n[         R                  " [         R                  " U [        S5      5      5      n[         R                  " U5      (       d  [         R                  " U5      (       a  SUl        SUl	        SUl
        SUl        [         R                  " [         R                  " UR                  UR                  5      [         R                  " UR                  UR                  5      [         R                  " UR                  UR                  5      [         R                  " UR                  UR                  5      5      nUR                  UR                  -
  S:  d  UR                  UR                  -
  S:  a.  [         R                  " [         R                  R                  5      nU$ )z
return a PDF page's MediaBox
r,  r   éd  é  r   )r£   rr  r3  rÎ  r  r  ræ  rç  r°  r²  r¯  r±  Úfz_minÚfz_max)r:  Úpage_mediaboxr8  s      r*   rû  rû  >Q  s8  € ô —L’L¤§¡×!8Ñ!8Ó9€MÜ× Ò Ü×*Ò*¨8´X¸jÓ5IÓJó€Hô ×Ò˜h×'Ñ'¬5×+DÒ+DÀX×+NÑ+NØˆŒØˆŒØˆŒØˆŒä—L’LÜ�LŠL˜Ÿ™ h§k¡kÓ2Ü�LŠL˜Ÿ™ h§k¡kÓ2Ü�LŠL˜Ÿ™ h§k¡kÓ2Ü�LŠL˜Ÿ™ h§k¡kÓ2ó	€Mð 	×Ñ˜=×+Ñ+Ñ+¨aÓ/Ø×Ñ -×"2Ñ"2Ñ2°QÓ6äŸš¤U§\¡\×%<Ñ%<Ó=ˆàÐr,   c
                óÒ  • [         (       a  [        R                  " U UUUUUUUUU	5
      $ Un
Sn[        R                  " X2-
  5      S-   nX#:  aM  UnXÓ::  aE  [        XXÚXVXy5        US-  nUS:”  a  X¸-  S:X  a  [        SU SU S35        US-  nU
S-  n
XÓ::  a  MD  ggUnXÓ:¼  aE  [        XXÚXVXy5        US-  nUS:”  a  X¸-  S:X  a  [        SU SU S35        US-  nU
S-  n
XÓ:¼  a  MD  gg)z§
Copy a range of pages (spage, epage) from a source PDF to a specified
location (apage) of the target PDF.
If spage > epage, the sequence of source pages is reversed.
r   r   z	Inserted r¶  z pages.N)r  r   rÉ  r£   Úfz_absiÚ
page_mergerw   )Údoc_desÚdoc_srcÚspageÚepageÚapagera  r)  r°  r¶  Ú	graft_mapÚ	afterpageÚcounterrX  r×   s                 r*   rÉ  rÉ  [Q  s(  € ÷" ‚{Ü×#Ò#ØØØØØØØØØØóð 	ð €IØ€GÜ�MŠM˜%™-Ó(¨1Ñ,€Eàƒ}ØˆØ‹mÜ�w¨¸&ÈÔ[Ø�q‰LˆGØ˜qÓ  WÑ%<ÀÓ%AÜ˜) G 9¨D°°°wÐ?Ô@Ø�A‰IˆDØ˜‰NˆIð �mð ˆØ‹mÜ�w¨¸&ÈÔ[Ø�q‰LˆGØ˜qÓ  WÑ%<ÀÓ%AÜ˜) G 9¨D°°°wÐ?Ô@Ø�A‰IˆDØ˜‰NˆIð �mr,   c                óÐ  • [         R                  " U R                  5       [        S5      5      nUR                  (       d/  [         R
                  " U R                  5       [        S5      S5      n[         R                  " U[        S5      5      n[         R                  " U[        S5      5      n[         R                  " U[        S5      5      n[         R                  " U[        S5      5      nSnSn[         R                  " U5      (       Gal  [         R                  " U5      n	[         R                  " U5      (       a‹  [        [         R                  " U5      5       Hg  n
[         R                  " [         R                  " X:5      5      nUR                  S5      (       d  ME  [         R                  " USS 5      nXÇ:”  d  Me  UnMi     O![         R
                  " U[        S5      U	5      nUS	-  n[        U	5       H{  n
[         R                  " [         R                  " XZ5      5      n[         R                  " USS 5      U-   nSU 3n[         R                  " XZ5      n[         R                  " X=U5        M}     [         R                  " U5      (       a‹  [        [         R                  " U5      5       Hg  n
[         R                  " [         R                  " XJ5      5      nUR                  S
5      (       d  ME  [         R                  " US	S 5      nXÈ:”  d  Me  UnMi     O![         R
                  " U[        S5      S5      nUS	-  n[        [         R                  " U5      5       H{  n
[         R                  " [         R                  " Xj5      5      n[         R                  " US	S 5      U-   nS
U 3n[         R                  " Xj5      n[         R                  " XMU5        M}     Xx4$ )a?  
Merge the /Resources object created by a text pdf device into the page.
The device may have created multiple /ExtGState/Alp? and /Font/F? objects.
These need to be renamed (renumbered) to not overwrite existing page
objects from previous executions.
Returns the next available numbers n, m for objects /Alp<n>, /F<m>.
r=  r   rA  rÚ  r¨  ÚAlpr   Nr   r¹  r   )r£   r  r  r  rÍ   rZ  r†  r‡  rT  r…  r‰  r8   Úfz_atoirˆ  r°  )r×   Útemp_resrj  Ú	main_extgÚ
main_fontsÚ	temp_extgÚ
temp_fontsrÓ  Ú	max_fontsrJ   rh  r×  r�  r   r  rÜ  s                   r*   rÍ  rÍ  ‘Q  sü  € ô ×"Ò" 4§8¡8£:¬x¸Ó/DÓE€IØ××Ü×+Ò+¨D¯H©H«J¼ÀÓ8MÈqÓQˆ	Ü×"Ò" 9¬h°{Ó.CÓD€IÜ×#Ò# I¬x¸Ó/?Ó@€Jô ×"Ò" 8¬X°kÓ-BÓC€IÜ×#Ò# H¬h°vÓ.>Ó?€Jà€GØ€Iô ×Ò˜×#Ò#Ü×Ò˜yÓ)ˆÜ×Ò˜Y×'Ñ'Üœ5×-Ò-¨iÓ8Ö9�ä×'Ò'¬×)?Ò)?À	Ó)MÓN�Ø—~‘~ e×,Ñ,ÙÜ—M’M # a b 'Ó*�Ø•;Ø’Gò :ô ×/Ò/°	¼8ÀKÓ;PÐRSÓTˆIà�1‰ˆÜ�q–ˆAÜ×#Ò#¤U×%;Ò%;¸YÓ%JÓKˆCÜ—’˜c ! "˜gÓ&¨Ñ0ˆAØ˜˜�9ˆDÜ×(Ò(¨)Ó7ˆCÜ×Ò 	°Ö5ñ ô ×Ò˜×$Ñ$Ü”u×)Ò)¨*Ó5Ö6ˆAÜ×$Ò$¤e×&<Ò&<¸jÓ&LÓMˆDØ—?‘? 3×'Ñ'ÙÜ—’˜d 1 2˜hÓ'ˆAØ�}Ø’	ò 7ô ×,Ò,¨Y¼ÀÓ8HÈ!ÓLˆ
à��N€IÜ”5×%Ò% jÓ1Ö2ˆÜ× Ò ¤%×"8Ò"8¸*Ó"HÓIˆÜ�MŠM˜$˜q˜r˜(Ó# iÑ/ˆØ�1�#ˆwˆÜ×$Ò$ ZÓ3ˆÜ×Ò˜J¨cÖ2ñ 3ð ÐÐr,   c                ób   • [         R                  U 5        [        (       a  [        SU  35        gg)z
redirect MuPDF warnings
zMuPDF warning: N)r˜  rp   ÚJM_mupdf_show_warningsrw   rv   s    r*   ÚJM_mupdf_warningr•  ÓQ  s,   € ô ×"Ñ" 4Ô(ßÒÜ�/ $ Ð(Õ)ð r,   c                ód   • [         R                  U 5        [        (       a  [        SU  S35        g g )NzMuPDF error: r&   )r˜  rp   r¥  rw   rv   s    r*   ÚJM_mupdf_errorr—  ÜQ  s,   € Ü×"Ñ" 4Ô(ßÒÜ�- ˜v RÐ(Õ)ð r,   c                óF   • [        U [        5      (       d   e[        X5      $ r.   )rC   rµ   ÚJM_new_bbox_device_Device)r¦   rú  s     r*   rø  rø  âQ  s    € Ü�bœ$×ÑÐÐÜ$ bÓ5Ð5r,   c           
     ó”  • [        U [        R                  5      (       d   e[        R                  " U R                  R
                  5      n[        R                  " S5      nU  Hà  nUR                  R                  [        R                  :X  d  M-  U H�  nU Hd  n[        U[        XE5      5      (       d  [        R                  " U5      (       d  M:  [        R                  " X%R                  R                  5        Mf     [        R                  " U[        S5      5        M�     [        R                  " U[        S5      5        Mâ     U$ )z)
make a buffer from an stext_page's text
rÓ  r&   )rC   r£   r  rr  rÍ   r8  rö	  rÉ   rñ  rô  ró  rç  Úfz_append_runerö  r÷  r  )r×   rý   rÔ  rû  rt   r  s         r*   ÚJM_new_buffer_from_stext_pagerœ  çQ  sì   € ô �dœE×-Ñ-×.Ñ.Ð.Ð.Ü�<Š<˜Ÿ™×0Ñ0Ó1€DÜ
×
Ò
˜cÓ
"€CÛˆØ×Ñ× Ñ ¤E×$=Ñ$=Õ=Û�Û�BÜ,¨T´<ÀÓ3I×JÑJÜ$)×$=Ò$=¸d×$CÑ$Cá Ü×(Ò(¨¯m©m¯o©oÖ>ñ ô ×$Ò$ S¬#¨d«)Ö4ñ ô × Ò  ¤c¨$£iÖ0ñ ð €Jr,   c                ó¦  • Uc  g[        U5      nUc  g[        R                  " UR                  S5      5      n[        R                  " X[        R
                  " 5       S5      n[        R                  " U S5      n[        R                  " U[        S5      [        R                  " S5      5        [        R                  " U[        S5      U5        U$ )zƒ
make new PDF action object from JavaScript source
Parameters are a PDF document and a Python string.
Returns a PDF action object.
Nr  r   rr  rJ
  rÐ  rÑ  )
rS  r£   rã  rþ  r  r  r5  rV  r  rÜ  )rb  r¹   rÉ  r&  rx  Ú	newactions         r*   ÚJM_new_javascriptrŸ  üQ  s    € ð �}àÜ˜Ó€DØ�|àä
×
.Ò
.¨t¯{©{¸6Ó/BÓ
C€CÜ×!Ò! #¬E¯LªL«N¸AÓ>€FÜ×&Ò& s¨AÓ.€IÜ	×Ò�y¤(¨3£-´×1CÒ1CÀLÓ1QÔRÜ	×Ò�y¤(¨4£.°&Ô9ØÐr,   c                ó   • [        U 5      $ r.   )ÚJM_new_output_fileptr_Output©rk  s    r*   r	  r	  R  s   € Ü'¨Ó-Ð-r,   c                óf   • U S:  a  U S-  n U S:  a  M  U S:¼  a  U S-  n U S:¼  a  M  U S-  S:w  a  gU $ )z:
# return normalized /Rotate value:one of 0, 90, 180, 270
r   rí  rî  r/   )ra  s    r*   r/  r/  R  sJ   € ð �1‹*Ø�#‰ˆð �1�*à
�C‹-Ø�#‰ˆð �C�-à��{�aÓØØ€Mr,   c                óØ   • [         R                  " S5      n[         R                  " U5      n[         R                  " X@X5        UR	                  5         [         R
                  " U5        U$ )Nrõ	  )r£   rö	  r÷	  rø	  r	  Úfz_terminate_buffer)r  rc  rš  r&  r	  s        r*   r�  r�  #R  sO   € Ü
×
Ò
˜cÓ
"€CÜ
�.Š.˜Ó
€CÜ	×Ò˜ 8Ô3Ø×ÑÔÜ	×Ò˜cÔ"Ø€Jr,   c                ó~  • U R                   (       d  U$ U nUR                   (       Ga  [        R                  " U5      nX1;   d/  [        R                  " U[	        S5      5      R                   (       a   U$ UR                  U5        [        R                  " U[	        S5      5      n[        R                  " U5      (       a  [        XA5      n[        R                  " U[	        S5      5      n[        R                  " U[	        S5      5      n[        R                  " U5      (       d  UnUR                   (       a  GM  U$ )zs
Return list of outline xref numbers. Recursive function. Arguments:
'obj' first OL item
'xrefs' empty Python list
ró  ré  ÚNextr©  )rÍ   r£   r  r  r  rp   r†  rê  )r  rí  ÚthisobjÚnewxrefrï  rí   s         r*   rê  rê  ,R  sô   € ð �>�>ØˆØ€GØ
×
×
Ð
Ü×"Ò" GÓ,ˆØÓœu×1Ò1°7¼HÀVÓ<LÓM×X×Xàð €Lð 	�‰�gÔÜ×"Ò" G¬X°gÓ->Ó?ˆÜ×Ò˜e×$Ñ$Ü$ eÓ3ˆEÜ×$Ò$ g¬x¸Ó/?Ó@ˆÜ×#Ò# W¬h°xÓ.@ÓAˆÜ× Ò  '×*Ñ*ØˆGð ×
×
Ò
ð €Lr,   c                ó²   • Sn[         R                  " U R                  5       [         R                  5      n[         R                  " U5      n[        U5      nU$ )z=
return a PDF page's /Rotate value: one of (0, 90, 180, 270)
r   )r£   r  r  rw  r  r/  )r×   ra  r  s      r*   r  r  ER  sF   € ð €Fä
×
(Ò
(¨$¯(©(«*´e×6PÑ6PÓ
Q€CÜ×Ò˜cÓ"€FÜ˜fÓ%€FØ€Mr,   c                óè   • [         R                  " [        US5      5      n[         R                  " U5      n[         R                  " [         R
                  5      n[         R                  " XU5      nU$ )zH
create PDF object from given string (new in v1.14.0: MuPDF dropped it)
r  )r£   rã  r   r   Ú	PdfLexbufÚPDF_LEXBUF_SMALLÚpdf_parse_stm_obj)r2  r3  r5  r	   Úlexbufr“  s         r*   rÝ  rÝ  QR  sV   € ô ×2Ò2´5¸¸fÓ3EÓF€GÜ×!Ò! 'Ó*€FÜ�_Š_œU×3Ñ3Ó4€FÜ×$Ò$ S°&Ó9€FØ€Mr,   c                óÆ  • [        U [        R                  5      (       d   eUc  [        R                  " 5       nUb6  [        U[        R                  5      (       d   S[	        U5      < SU 35       e[        R
                  " U 5      n[        U5      n[        U5      n[        R                  " Xh5      n[        R                  " Xg5      n[        R                  " U5      n	[        U[        R                  5      (       d   e[        R                  " X)XS5      n
U(       a  [        R                  " U
5        O[        R                  " U
S5        [        R                  " U5      (       dW  [        R                   " XzU	5      n[        R"                  " X[        R$                  " 5       U[        R&                  " 5       5        O�[        R(                  " Xz5      n[        R"                  " X[        R$                  " 5       [        R*                  " [        R*                  R,                  5      [        R&                  " 5       5        [        R.                  " U5        [1        SU
5      $ )z„
Version of fz_new_pixmap_from_display_list (util.c) to also support
rendering of only the 'clip' part of the displaylist rectangle
ztype(seps)=r€   r  ri  )rC   r£   rP  rí  rÉ   rh  rê  r  r†  rà  r‡  r.  rr  r¾  r¿  rç  rO  rk  r}  rl  rN  rr  rs  r‚  rî  )rÇ  rõ  rö  ró  r  r�  rý   rð  r—  r¢  r÷  r…  s               r*   rb  rb  _R  s®  € ô �eœU×0Ñ0×1Ñ1Ð1Ð1Ø�|Ü×"Ò"Ó$ˆØ‰<œ: d¬E×,?Ñ,?×@Ñ@ÐZÀ[ÄTÈ$ÃZÁMÐQSÐTXÐSYÐBZÓZÐ@ä×&Ò& uÓ-€DÜ˜sÓ#€FÜ˜DÓ!€EÜ×"Ò" 4Ó/€Dä×"Ò" 4Ó0€DÜ×Ò Ó%€Eä�rœ5×-Ñ-×.Ñ.Ð.Ð.ä
×
'Ò
'¨°4Ó
?€CÞÜ×Ò˜cÕ"ä×(Ò(¨¨dÔ3ä×$Ò$ U×+Ñ+Ü×0Ò0°¸eÓDˆÜ×!Ò! %¬e¯nªnÓ.>ÀÄuÇ~Â~ÓGWÕXä×&Ò& vÓ3ˆÜ×!Ò! %¬e¯nªnÓ.>ÄÇÂÌUÏ\É\×MhÑMhÓ@iÔkp×kyÒkyÓk{Ô|ä	×Ò˜#Ôä�5˜#ÓÐr,   c                ó   • [        U [        R                  5      (       a  U $ [        U [        5      (       a+  [        R                  " U R                  U R
                  5      $ [        (       a  [        R                  " U 5      $ [        R                  " SS5      n[        U S5      n[        U S5      nUb  Uc  U$ [        U[        5      n[        U[        5      n[        U[        5      n[        U[        5      n[        R                  " X#5      $ )zE
PySequence to fz_point. Default: (FZ_MIN_INF_RECT, FZ_MIN_INF_RECT)
r   r   )rC   r£   rc  r#  re  rf  r  r   ró  rƒ  r!  r†  rÅ  r‡  )r³  rc  re  rf  s       r*   ró  ró  ŒR  sË   € ô �!”U—]‘]×#Ñ#ØˆÜ�!”U×ÑÜ�}Š}˜QŸS™S !§#¡#Ó&Ð&ß‚{Ü×%Ò% qÓ)Ð)ä	�Š�q˜!Ó	€BÜ�a˜Ó€AÜ�a˜Ó€AØ�y�A‘IØˆ	ÜˆQ”Ó €AÜˆQ”Ó €AÜˆQ”Ó €AÜˆQ”Ó €AÜ�=Š=˜ÓÐr,   c                ó   • [         (       a  [        R                  " X5      $ [        U [        R
                  5      (       d   e[        U[        R                  5      (       d   e[        R                  " UR                  R                  5      nSnSnSnSn[        U5       Hc  u  pxUR                  R                  [        R                  :X  a2  [        U5       H  u  pš[        U
5       H  u  p¼M     UW-  nM      UW	-  nXG-  nMe     U HÁ  nUR                  R                  [        R                  :X  d  M-  U HŽ  n
SnU
 H\  n[        X¬5      n[        R                  " U5      (       d  [        X-5      (       d  M;  UR                  R                   n[#        X5        M^     US:w  d  Mo  US:”  d  Mw  [        R$                  " U S5        M�     MÃ     g)z¹
Plain text output. An identical copy of fz_print_stext_page_as_text,
but lines within a block are concatenated by space instead a new-line
character (which else leads to 2 new-lines).
r   rF  r&   N)r  r   râ  rC   r£   r4  r  rr  rÍ   r8  rY  rÉ   rñ  ró  rç  rô  rö  rõ  rŸ  )r&  r×   rý   rþ  Ún_blocksÚn_linesÚn_charsÚ	n_blocks2rû  Ún_lines2rt   Ún_chars2r  Úchbboxs                 r*   râ  râ  £R  s€  € ÷ Š[Ü×0Ò0°Ó;Ð;ä�cœ5Ÿ>™>×*Ñ*Ð*Ð*Ü�dœE×-Ñ-×.Ñ.Ð.Ð.Ü�<Š<˜Ÿ™×0Ñ0Ó1€DØ€Ià€HØ€GØ€GÜ% tÖ,Ñˆ	Ø×Ñ× Ñ ¤E×$=Ñ$=Ó=Ü"+¨UÖ"3‘�Ü$-¨tÖ$4‘L�HÙñ %5à˜8Ñ#’ñ #4ð �xÑˆGØÑŠñ -ó ˆØ×Ñ× Ñ ¤E×$=Ñ$=Õ=Û�Ø�	Û�BÜ)¨$Ó3�FÜ×1Ò1°$×7Ñ7Ü/°×=Ó=ð %'§M¡M§O¡O˜	ä& sÖ6ñ ð  •? y°1¥}Ü×*Ò*¨3°Ö5ó ò r,   c                óL  • [         R                  " X5      n[         R                  " U 5      nU(       dS  Ub  UR                  (       d  [         R                  " X5        gUR                  (       a  [         R                  " XB5        gUR                  (       a  UR                  (       d  [        U5      nO[        [         R                  " XB5      5      nX6:w  aL  [        XS5      nUR                  (       d  [         R                  " XU5        g[         R                  " XX5        gg)zì
Create a JavaScript PDF action.
Usable for all object types which support PDF actions, even if the
argument name suggests annotations. Up to 2 key values can be specified, so
JavaScript actions can be stored for '/A' and '/AA/?' keys.
N)	r£   r  rœ  rÍ   rI  r½  rŸ  rV  rR  )r'  Úkey1Úkey2r¹   Úkey1_objrb  rñ  rž  s           r*   ÚJM_put_scriptr¾  ÎR  sÐ   € ô ×!Ò! )Ó2€HÜ
×
&Ò
& yÓ
1€Cö Ø‰<˜tŸŸÜ×Ò˜yÔ/ð 	ð × × Ü×Ò˜xÔ.Øð �?�? (×"5×"5Ü˜xÓ(‰äœu×1Ò1°(ÓAÓBˆð ƒÜ% cÓ1ˆ	Ø��Ü×Ò˜y°	Õ:ä×Ò 	°dÕAð r,   c                ó^   • U R                   U R                  U R                  U R                  4$ r.   r,  rX  s    r*   râ  râ  ïR  ó!   € Ø�4‰4�—‘�q—t‘t˜QŸT™TÐ!Ð!r,   c                óŠ   • U R                   U R                  U R                  U R                  U R                  U R
                  4$ r.   rÅ  )rŒ  s    r*   r|  r|  óR  s-   € Ø�3‰3�—‘�Q—S‘S˜!Ÿ#™#˜qŸs™s A§C¡CÐ'Ð'r,   c                ó2   • U R                   U R                  4$ r.   r�  )r³  s    r*   rP  rP  ÷R  s   € Ø�3‰3�—‘ˆ8€Or,   c                ó^  • U R                   R                  U R                   R                  4U R                  R                  U R                  R                  4U R                  R                  U R                  R                  4U R
                  R                  U R
                  R                  44$ )z
PySequence from fz_quad.
)rù  re  rf  rq  ro  rp  )r+  s    r*   rò  rò  ûR  sn   € ð
 �T‰T�V‰V�Q—T‘T—V‘VÐØ�T‰T�V‰V�Q—T‘T—V‘VÐØ�T‰T�V‰V�Q—T‘T—V‘VÐØ�T‰T�V‰V�Q—T‘T—V‘VÐð	ð r,   c                ó^   • U R                   U R                  U R                  U R                  4$ r.   r,  rX  s    r*   rq  rq  S  rÀ  r,   c           
     óŠ  • [        U [        R                  5      (       a  U $ [        U S5      (       a?  [	        U 5      S:X  a0  [        U S   S5      (       a  [        R
                  " [        U 5      6 n [        U [        R
                  5      (       a  [        R                  " U 5      $ [        U [        5      (       a½  [        R                  " U R                  R                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  5      $ [        R                  " SSSSSSSS5      n/ SQnU (       a*  [        U [        [         45      (       a  [	        U 5      S:w  a  U$ [#        U S5      c  [        R                  " [%        U 5      5      $ ['        S5       GH  nU[	        U 5      :¼  a  Us  $ X   n[)        U5      (       a  [+        U5      S:w  a  Us  $ [#        US5      X#   l        [#        US5      X#   l        X#   R                  b  X#   R                  c  Us  $ [-        X#   R                  [.        5      X#   l        [-        X#   R                  [.        5      X#   l        [1        X#   R                  [2        5      X#   l        [1        X#   R                  [2        5      X#   l        GM     US   Ul
        US   Ul        US   Ul        US   Ul        U$ )	Nr�  rr  r   r—  r;  r   r   r   )rC   r£   rä  r@   r<   rr  r¶   rð  rÐ  Úfz_make_quadrù  re  rf  rq  ro  rp  rµ   rƒ  r  rT  r  r  r!  r†  rÅ  r‡  )r%  r+  r³  rh  r  s        r*   r'  r'  S  sW  € Ü�!”U—\‘\×"Ñ"Øˆäˆq�-× Ñ ¤S¨£V¨q£[´W¸Q¸q¹TÀ;×5OÑ5OÜ�LŠLœ% ›(Ð#ˆÜ�1”e—l‘l×#Ñ#Ü×&Ò&¨Ó*Ð*Ü�1”d×ÑÜ×!Ò!Ø—‘—‘˜Ÿ™Ÿ™Ø—‘—‘˜Ÿ™Ÿ™Ø—‘—‘˜Ÿ™Ÿ™Ø—‘—‘˜Ÿ™Ÿ™ó	ð 	ô 	×Ò˜1˜a  A q¨!¨Q°Ó2€AÚ€AÞ”J˜q¤5¬$ -×0Ñ0´C¸³F¸a³KØˆä�Q˜ÓÑ"Ü×&Ò&¤°qÓ'9Ó:Ð:ä�1�XˆØ”�A“‹;ØŠHØ‰dˆÜ ×$Ñ$¬¸Ó(<ÀÓ(AØŠHä˜s AÓ&ˆ‰ŒÜ˜s AÓ&ˆ‰ŒØ‰4�6‰6‰>˜Q™TŸV™V™^ØŠHÜ�a‘d—f‘fœoÓ.ˆ‰ŒÜ�a‘d—f‘fœoÓ.ˆ‰ŒÜ�a‘d—f‘fœoÓ.ˆ‰ŒÜ�a‘d—f‘fœoÓ.ˆ‰�ñ ð ˆQ‰4€A„DØˆQ‰4€A„DØˆQ‰4€A„DØˆQ‰4€A„DØ€Hr,   c                óØ  • [        U [        R                  5      (       d   [        U 5       5       e[        R                  " U [        R
                  5      n[        R                  " U5      (       aº  [        R                  " S5      n[        [        R                  " U5      5       H  nUS:”  a  [        R                  " US5        [        R                  " X5      n[        R                  " U5      (       d  MS  [        R                  " U5      n[        R                  " X%5        M�     U$ UR                  (       a  [        R                  " U5      nU$ [        R                  " S5      nU$ )zC
Read and concatenate a PDF page's /Contents object(s) in a buffer
r�  r   r$  )rC   r£   r  rÉ   r  rj  r<  r4  rT  r¬  r÷  r­  r"  r#  Úfz_append_bufferrÍ   )r
  r9  r&  rh  r  r»  s         r*   r  r  8S  s  € ô �gœuŸ|™|×,Ñ,Ð@´°g³°Ó@Ð,Ü×!Ò! '¬5×+GÑ+GÓH€HÜ×Ò˜(×#Ñ#Ü�nŠn˜TÓ"ˆÜ”u×*Ò*¨8Ó4Ö5ˆAØ�1‹uÜ×$Ò$ S¨"Ô-Ü×%Ò% hÓ2ˆCÜ×"Ò" 3×'Ó'Ü×,Ò,¨SÓ1�Ü×&Ò& sÖ1ñ 6ð €Jð	 
×	×	Ü×#Ò# HÓ-ˆð €Jô �nŠn˜QÓˆØ€Jr,   c                óü  • [        U [        R                  5      (       a  U $ [        U [        R                  5      (       a  [        R                  " U 5      $ [        U [        5      (       aA  [        R
                  " U R                  U R                  U R                  U R                  5      $ [        U [        5      (       aA  [        R
                  " U R                  U R                  U R                  U R                  5      $ U (       a  [        U 5      (       a  [        U 5      S:w  a.  [        R                  " [        R                  R                  5      $ / SQn[        S5       Ho  n[        X5      X'   X   c0  [        R                  " [        R                  R                  5      s  $ X   [         :  a  [         X'   X   ["        :”  d  Mg  ["        X'   Mq     [        R
                  " US   US   US   US   5      $ )Nrr  r;  r   r   r   r   )rC   r£   rr  rp  r,  rú  r°  r²  r¯  r±  rq  r  r  rs  rT  rƒ  r†  r‡  )r%  r  rh  s      r*   r  r  NS  s\  € Ü�!”U—\‘\×"Ñ"ØˆÜ�!”U—]‘]×#Ñ#Ü�|Š|˜A‹ÐÜ�!”T×ÑÜ×!Ò! !§$¡$¨¯©¨a¯d©d°A·D±DÓ9Ð9Ü�!”U×ÑÜ×!Ò! !§$¡$¨¯©¨a¯d©d°A·D±DÓ9Ð9ÞÔ$ Q×'Ñ'¬?¸1Ó+=ÀÓ+BÜ�|Š|œEŸL™L×7Ñ7Ó8Ð8Ú€AÜ�1ŽXˆÜ˜QÓ"ˆ‰Ø‰4‰<Ü—<’<¤§¡× ;Ñ ;Ó<Ò<Ø‰4”/Ó!Ü"ˆA‰DØ‰4”/Õ!Ü"ˆA‹Dñ ô ×Ò˜a ™d A a¡D¨!¨A©$°°!±Ó5Ð5r,   c                óØ   •  U R                   UR                  :¼  dN  U R                  UR                  :¼  d4  U R                  UR                   ::  d  U R                  UR                  ::  a  ggr‘  ru  rÓ  s     r*   rô  rô  eS  sG   € Ø	Ø�t‰t�q—t‘t‹|Ø�t‰t�q—t‘t‹|Ø�t‰t�q—t‘t‹|Ø�t‰t�q—t‘t‹|àØr,   c                ó&  • U b  U R                   (       d  g[        R                  " U R                  5       [	        S5      5      nUR                   (       a½  U R                  5       n[        R                  " X R                  5       5      n[        R                  " 5       n[        R                  " 5       n[        R                  " XU5        [        R                  " X XU5      n[        R                  " UR                   5      U R                   l        gg)z4
refreshes the link and annotation tables of a page
Nr§  )rÍ   r£   r  r  r  r2  rh  rr  r}  r`  Úpdf_load_link_annotsÚll_fz_keep_linkr)  )r×   r  rb  r;  r~  rg  rš  s          r*   r]  r]  pS  s²   € ð �|˜4Ÿ?Ÿ?ØÜ
×
Ò
˜dŸh™h›j¬(°8Ó*<Ó
=€CØ
‡~‡~Ø�h‰h‹jˆÜ×-Ò-¨s·H±H³JÓ?ˆÜŸš›ˆÜ—>’>Ó#ˆÜ× Ò  $°xÔ@Ü×)Ò)¨3°cÀ8ÓLˆÜ %× 5Ò 5°t·±Ó Gˆ�‰Õð r,   c                óÀ  • U R                   (       d  [        R                  " 5       $ [        U 5      nUS:X  a  [        R                  " 5       $ [	        U R                  5       5      nUR                  nUR                  nUS:X  a  [        R                  " SSSSUS5      nU$ US:X  a  [        R                  " SSSSX45      nU$ [        R                  " SSSSSU5      nU$ )z"
calculate page rotation matrices
r   rî  r   r¨  r…  )	rÍ   r£   r}  r  r!  r  re  rf  r�  )r×   rx  Úcb_sizer   r!  rŒ  s         r*   rß  rß  �S  sÉ   € ð �?�?Ü�~Š~ÓÐÜ Ó%€Hà�1ƒ}Ü�~Š~ÓÐÜ˜dŸh™h›jÓ)€GØ�	‰	€AØ�	‰	€Aà�2ƒ~Ü× Ò   A r¨1¨a°Ó3ˆð €Hð 
�S‹Ü× Ò   Q¨¨2¨qÓ4ˆð €Hô × Ò   B¨¨1¨a°Ó3ˆà€Hr,   c                óF   •  [        R                  " U R                  U5      $ r.   )r  r   rv  rÍ   r£   rr  r8  r<   rd
  ÚhfuzzÚvfuzzrœ  Úfz_string_from_bufferÚfind_stringrÉ   rñ  rç  ró  rô  Úon_highlight_char)r×   rw  rý   rd
  ÚHitsÚhitsr5  Úhaystack_stringÚhaystackÚbeginrÈ  Úinsiderh  rû  rt   r  r%  s                    r*   rv  rv  ™S  s   € ØÜ×)Ò)¨$¯/©/¸6ÓBÐBr,   c           	     óü  • [         R                  " U5      (       a  [         R                  " S5        g [         R                  " U[         R                  5      nUS:X  a2  [         R                  " U[         R
                  5      n[        XX$5        O>US:X  a  [        XX$5        O+US:X  a  [        XX$5        O [         R                  " U5        g[         R                  " U5      n[        U5       HØ  n	[         R                  " Xi5      n
[         R                  " U
5      (       a  [         R                  " U
5      nOSn[         R                  " U
[         R                  5      nUR                   (       d  M…  UnXÕ;  a   UR#                  U5        [%        XX#Xµ5        M¬  [         R                  " S5          [         R                  " U5        g   [         R                  " U5        g! [         R                  " U5        f = f)zH
Step through /Resources, looking up image, xobject or font information
z.Circular dependencies! Consider page cleaning.Nr   r   r   r   )r£   Úpdf_mark_objrX  r  ÚPDF_ENUM_NAME_XObjectÚPDF_ENUM_NAME_Fontrb  rt  rh  Úpdf_unmark_objr‡  rT  rˆ  r"  r  r  rÍ   rp   r  )rb  r  r  r  r`  r  ÚxobjrÜ  rJ   rh  r  ÚsxrefÚsubrsrcÚsxref_ts                 r*   r  r  âS  sz  € ô ×Ò˜$×ÑÜ�ŠÐFÔGØð#Ü×!Ò! $¬×(CÑ(CÓDˆà�1‹9Ü×%Ò% d¬E×,DÑ,DÓEˆDÜ˜C uÕ:Ø�Q‹YÜ˜S¨Õ;Ø�Q‹YÜ˜C uÕ:àô( 	×Ò˜TÕ"ô# ×Ò˜tÓ$ˆÜ�q–ˆAÜ×(Ò(¨Ó1ˆCÜ×"Ò" 3×'Ñ'Ü×(Ò(¨Ó-‘à�Ü×(Ò(¨¬e×.KÑ.KÓLˆGØ×!×!Ñ!Ø�ØÓ(Ø—M‘M 'Ô*Ü% s°UÀ%ÖPä—M’MÐ"RÔSØä×Ò˜TÕ"ñ! ô  	×Ò˜TÕ"øŒ×Ò˜TÕ"ús   ´BG# ÃB"G# Å5>G# Ç
G# Ç#G;c                óÜ  • U(       d  g[        U[        [        45      (       d   e[        U5      nUS:X  a  g[        R
                  " U 5      n[        R                  " U5      n[        R                  " XB5      n[        U5       HÃ  nX   nUn[        U[        5      (       a  [        R                  " XX5        M6  [        U[        [        45      (       a  [        U5      S:X  d   S5       eUu  pšU	(       a  U
(       d   S5       e[        R                  " US5      n[        R                  " X¹5        [        R                  " Xº5        MÅ     [        R                  " U[        S5      U5        g)z
set ListBox / ComboBox values
Nr   r   zbad choice field listrù  )rC   r¶   rµ   r<   r£   r  rœ  rS  rT  rè  Úpdf_array_push_text_stringÚpdf_array_push_arrayrV  r  )rà   r  rJ   r'  rb  rû  rh  r  ÚoptÚopt1Úopt2Ú	optarrsubs               r*   ÚJM_set_choice_optionsrì  T  s  € ö ØÜ�uœu¤d˜m×,Ñ,Ð,Ð,ÜˆU‹€AØˆAƒvØÜ×#Ò# UÓ+€IÜ
×
&Ò
&¨	Ó
2€CÜ× Ò  #Ó)€FÜ�1ŽXˆØ‰hˆØˆÜ�cœ3×ÑÜ×,Ò,¨fÖ:ä˜s¤U¬D M×2Ñ2´s¸C³yÀA³~Ð^ÐG^Ó^ÐEØ‰JˆDÞžDÐ9Ð"9Ó9�=Ü×2Ò2°F¸AÓ>ˆIÜ×,Ò,¨iÔ>Ü×,Ò,¨iÖ>ñ ô 
×Ò˜	¤8¨E£?°FÕ;r,   c                óÊ  • SnSnSnU[         R                  :X  a  [        S5      n[         R                  nGO U[         R                  :X  a,  [        S5      n[         R                  n[         R
                  nOàU[         R                  :X  a-  [        S5      n[         R                  [         R
                  -  nOŸU[         R                  :X  a  [        S5      nOU[         R                  :X  a  [        S5      n[         R                  nOOU[         R                  :X  a  [        S5      n[         R                  nOU[         R                  :X  a  [        S5      nUb2  UR                  (       a!  [         R                  " U[        S5      U5        US:w  d  US:w  aK  [         R                  " U[        S5      5      nXd) -  nXc-  n[         R                  " U[        S5      U5        gg)	z
Set the field type
r   NÚBtnÚTxÚChÚSigrI  rˆ  )r£   r‚  r  ÚPDF_BTN_FIELD_IS_PUSHBUTTONrs  ÚPDF_BTN_FIELD_IS_RADIOrƒ  rH  rI  ÚPDF_CH_FIELD_IS_COMBOrJ  r  rÍ   rV  r"  rQ  )r2  r  rÉ   ÚsetbitsÚ	clearbitsÚtypenamer  s          r*   r  r  'T  st  € ð €GØ€IØ€HØŒu×+Ñ+Ó+Ü˜E“?ˆÜ×3Ñ3ŠØ	”×2Ñ2Ó	2Ü˜E“?ˆÜ×5Ñ5ˆ	Ü×.Ñ.‰Ø	”×/Ñ/Ó	/Ü˜E“?ˆÜ×6Ñ6¼×9UÑ9UÑU‰	Ø	”×+Ñ+Ó	+Ü˜D“>‰Ø	”×.Ñ.Ó	.Ü˜D“>ˆÜ×/Ñ/‰	Ø	”×/Ñ/Ó	/Ü˜D“>ˆÜ×-Ñ-‰Ø	”×0Ñ0Ó	0Ü˜E“?ˆàÑ × 3× 3Ü×Ò˜3¤¨£°Ô9à�!ƒ|�y A“~Ü×%Ò% c¬8°D«>Ó:ˆØ�
ÑˆØ‰ˆÜ×Ò˜s¤H¨T£N°DÕ9ð	 &r,   c                ó   • Sn[         R                  " U 5      nUR                  S5      n[        U5      nUS-
  nXW   nXW	 [        U5      n[         R                  " X5      n	U	R
                  (       d€  US:”  az  SR                  U5      n
[         R                  " [         R                  " U [        U
5      5      5      (       a  [        S[        U5       S35      eXVS-
  	 [        U5      nUS:”  a  Mz  [         R                  " X[         R                  " U5      5        [         R                  " X5      n	[         R                  " U	5      (       d  [        SU S35      e[         R                  " U	5      nX³:w  a  [        SU S35      e[        U SS5      n[        U5      nSU S	U S
3nSU SU 3nUR!                  XïS5      n[#        UU5      nU$ )z"
Set a PDF dict key to some value
zfitz: replace me!rU	  r   r   z	path to 'z' has indirectszcannot insert value for 'rî   rê  rë  r´   )r£   rœ  r;   r<   ro  rÍ   r  rÿ	  rS  rl   Úpdf_dict_putpr±  r€  r	  r�  r—  r  rÝ  )r  rŽ  r¹   Ú
eyecatcherrb  rÇ  r·  rh  ÚskeyÚtestkeyrÃ  r  r&  ÚobjstrÚnullvalÚnewvalÚnewstrrP  s                     r*   rœ  rœ  MT  s´  € ð %€JÜ
×
&Ò
& sÓ
+€Cà�I‰I�c‹N€EÜˆu‹:€DØˆq‰€AØ‰8€DàˆÜˆu‹:€DÜ×!Ò! #Ó+€GØ××ð �Q‹hØ—‘˜“ˆAÜ×$Ò$¤U×%8Ò%8¸¼lÈ1»oÓ%N×OÑOÜ )¬L¸Ó,>Ð+?¸Ð OÓPÐPØ˜Q‘h�Ü�u“:ˆDð �Q�hô 
×Ò˜¤%×";Ò";¸JÓ"GÔHÜ×!Ò! #Ó+€GÜ×Ò˜w×'Ñ'ÜÐ3°C°5¸Ð:Ó;Ð;Ü×#Ò# GÓ,€DØÓÜÐ3°C°5¸Ð:Ó;Ð;ä
˜c 1 aÓ
(€CÜ# CÓ(€Fð �$��q˜˜ AÐ&€GØ���a˜�wÐ€FØ�^‰^˜G¨QÓ/€Fô " # vÓ.€GØ€Nr,   c                óx  • U(       a!  [         R                  " U [        S5      U5        UbS  [         R                  " U [        S5      5        U(       a,  [         R                  " U [        S5      S5      n[        Xb5        UbS  [         R                  " U [        S5      5        U(       a,  [         R                  " U [        S5      S5      n[        Xc5        UbS  [         R                  " U [        S5      5        U(       a,  [         R                  " U [        S5      S5      n[        Xe5        Ub�  [         R                  " U [        S5      5        U(       ae  [         R                  " U [        S5      S5      n[        U5      n[        U5       H)  nXH   n	[         R                  " US5      n
[        X©5        M+     g g g )NrØ  rm  r   rn  rÊ  r5  )	r£   r]  r  rI  rK  ÚJM_set_ocg_arrays_impr<   rT  rç  )rË  r|
  r]  r}
  r~
  r0	  rs  rJ   rh  Úitem0r  s              r*   r{
  r{
  }T  sL  € ÞÜ×Ò ¤x°Ó'<¸iÔHà	�~Ü×Ò˜D¤(¨4£.Ô1ÞÜ×*Ò*¨D´(¸4³.À!ÓDˆCÜ! 3Ô+Ø
�Ü×Ò˜D¤(¨5£/Ô2ÞÜ×*Ò*¨D´(¸5³/À1ÓEˆCÜ! 3Ô,ØÑÜ×Ò˜D¤(¨8Ó"4Ô5ÞÜ×*Ò*¨D´(¸8Ó2DÀaÓHˆCÜ! 3Ô/ØÑÜ×Ò˜D¤(¨:Ó"6Ô7ÞÜ×*Ò*¨D´(¸:Ó2FÈÓJˆCÜ�8‹}ˆAÜ˜1–X�Ø ™�Ü×0Ò0°#°qÓ9�Ü% sÖ2ò ð ð r,   c                óœ   • [         R                  " U 5      nU H0  n[         R                  " X#S5      n[         R                  " X5        M2     g)zu
Set OCG arrays from dict of Python lists
Works with dict like {"basestate":name, "on":list, "off":list, "rbg":list}
r   N)r£   rœ  r¹  r>  )rs  rÇ  rb  r  r  s        r*   r  r  ›T  s>   € ô
 ×
&Ò
& sÓ
+€CÛˆÜ×$Ò$ S°Ó2ˆÜ×Ò˜SÖ&ò r,   c                óH  • [         R                  " U 5      n[         R                  " X2S5      nUR                  (       d  [	        [
        [        5        [         R                  " U [        S5      5      nUR                  (       d!  [         R                  " U [        S5      S5      n[         R                  " U[        S5      5      nUR                  (       d!  [         R                  " U[        S5      S5      n[         R                  " U[         R                  " U5      U5        g)zË
Insert an item into Resources/Properties (used for Marked Content)
Arguments:
(1) e.g. page object, Form XObject
(2) marked content name
(3) xref of the referenced object (insert as indirect reference)
r   r=  r   r›  N)r£   rœ  r¹  rÍ   rÂ  r¸  rt	  r  r  rZ  rV  rÜ  )r¯  r   r  rb  rÜ  rj  rœ  s          r*   rê  rê  ¦T  sÈ   € ô ×
&Ò
& sÓ
+€CÜ
×
 Ò
  ¨AÓ
.€CØ�>�>Ü”Ô.Ô/Ü×"Ò" 3¬°Ó(=Ó>€IØ××Ü×+Ò+¨C´¸+Ó1FÈÓJˆ	Ü×#Ò# I¬x¸Ó/EÓF€JØ× × Ü×,Ò,¨Y¼ÀÓ8NÐPQÓRˆ
Ü	×Ò�z¤5×#5Ò#5°dÓ#;¸SÕAr,   c                ó   ^• [        U [        5      (       a  U R                  n [        U [        R                  5      (       d   S[        U 5      < S[
        < 35       e[        U 5      nUR                  (       d   S5       e[        R                  " U 5      nUR                  5       nU4S jnU" S5      nUnU" S5      n[        U5      n[        U5      n	[        R                  " X‰5      n[        R                  " X5        U" S5      nU(       au  [        U5      (       ae  [        U5      n
[        R                   " XJ5      nSn[#        U
5       H  nXm   n[        R$                  " X¼5        M     [        R&                  " X;5        U" S	5      nU(       a†  [        U5      (       av  [        U5      n
[        R                   " XJ5      n[#        U
5       H  n[        R(                  " XæU   5        M     [        R*                  " X>[-        S
5      [-        S5      5        U" S5      nU(       a‰  [        U5      (       ay  [        U5      n
[        R                   " XJ5      nSn[#        U
5       H  nXm   n[        R$                  " Xü5        M     [        R*                  " X?[-        S5      [-        S5      5        U" S5      nUb,  [/        U5      n[        R0                  " U[-        S5      U5        U" S5      nUbH  [/        U5      n[        R2                  " U5      nUU:w  a!  [        R0                  " U[-        S5      U5        U[        R4                  :X  a2  U" S5      nUnU(       a!  [        R6                  " U[-        S5      U5        U" S5      nUn[        R8                  " UU5        U[        R:                  [        R<                  4;   a  U" S5      n[?        X5        U" S5      n[A        U5      n[        R*                  " UU[-        S
5      [-        S5      5        U" S5      nUn[        R*                  " U[        RB                  " U5      [-        S
5      [-        S5      5        U" S5      n[/        U5      n[        R0                  " U[-        S5      U5        [        RD                  " U[-        S5      5        [        RD                  " U[-        S5      5        U" S 5      nUb˜  U[        R<                  :X  a  U[        RF                  -  nOOU[        RH                  :X  a  U[        RJ                  -  nO'U[        RL                  :X  a  U[        RN                  -  n[        R6                  " U[-        S!5      U5        U" S"5      n[/        U5      nU(       a  [        RP                  " UU5        U" S#5      n[S        U[-        S$5      [        RT                  " 5       U5        U" S%5      n[S        U[-        S&5      [-        S'5      U5        U" S(5      n[S        U[-        S&5      [-        S)5      U5        U" S*5      n[S        U[-        S&5      [-        S+5      U5        U" S,5      n[S        U[-        S&5      [-        S-5      U5        U" S.5      n[S        U[-        S&5      [        RV                  " S/5      U5        U" S05      n[S        U[-        S&5      [        RV                  " S15      U5        U" S25      n[/        U5      nU[        RH                  :X  aä  U(       d;  [        RX                  " XCS3S45        [        RZ                  " U[-        S55      S35        GOë[        R\                  " U5      nUR                  (       aQ  [        R^                  " U5      n[        RX                  " XCUS45        [        RZ                  " U[-        S55      U5        GOsU(       a!  [        RZ                  " U[-        S55      U5        GOIU[        R`                  :X  aÒ  [        R\                  " U5      nUR_                  5       nUS6U4;   d  US7:X  a[  [        RX                  " XCUS45        [        RZ                  " U[-        S55      U5        [        RZ                  " U[-        S+5      U5        O¦[        RZ                  " U[-        S55      S35        [        RZ                  " U[-        S+5      S35        OcU(       a\  [        RX                  " XCUS45        U[        R<                  [        R:                  4;   a   [        RD                  " U[-        S85      5        [        Rb                  " U 5        [        Rd                  " U S45        [        Rf                  " U S45        [        Rh                  " U 5        g)9zƒ
Update the PDF form field with the properties from a Python Widget object.
Called by "Page.add_widget" and "Annot.update_widget".
ztype(annot)=rd  rÝ   c                ó   >• [        TU S 5      $ r.   )rï   )r   r\  s    €r*   ÚGETATTRÚ)JM_set_widget_properties.<locals>.GETATTRÇT  s   ø€ Ü�v˜t TÓ*Ð*r,   rW  rý   r`  r   rO  rµ  rÅ  r)  r­  r¯  rS  Nr¬  rR  r-  r]  ÚMaxLenrV  rP  rM  rJ
  rN  rõ
  r_  r&  r  rú  rU  rˆ  rY  rñ  rÄ  r`  rJ  r°  ra  r¹  rb  r±  rc  rþ  rd  r²  re  r³  rT  rq  r   rr  TÚYesr·  )5rC   rã   rÅ   r£   rå   rÉ   rá   rÍ   r  r2  r  rß  rà  ré  r  r<   rS  rT  rU  Úpdf_field_set_fill_colorrÄ  rR  r  rS  r¯  r·  rH  rQ  Úpdf_field_set_displayrI  rJ  rì  rÆ  rÅ  rI  rô  rs  ró  r‚  rò  Úpdf_field_set_button_captionr¾  r  rÜ  Úpdf_set_field_valuer]  Úpdf_button_field_on_stater…  rƒ  rW  Úpdf_set_annot_hotÚpdf_set_annot_activerX  )rà   r\  r×   r'  rb  r  r¹   rW  rý   Úrot_matrJ   Úfill_colrg  rh  r‹  Ú
border_colry  r   Úold_namer]  rD  r  rN  rj  rU  r?  r   Úonstater]  s    `                           r*   ÚJM_set_widget_propertiesr  »T  sr  ø€ ô
 �5œ%× Ñ Ø—
‘
ˆÜ�uœeŸn™n×-Ñ-ÐH°,´$°u³+±¸wÄÁÐ/HÓHÐ-Ü˜5Ó!€DØ�?�?Ð:Ð:Ó:ˆ?Ü×#Ò# EÓ*€IØ
�(‰(‹*€Cõ+ñ �LÓ!€EØ€Jñ �F‹O€EÜ˜5Ó!€DÜ# DÓ)€GÜ×"Ò" 4Ó1€DÜ	×Ò˜UÔ)ñ �LÓ!€EÞÔ! %×(Ñ(Ü�‹JˆÜ×&Ò& sÓ.ˆØˆÜ�q–ˆAØ‘(ˆCÜ×%Ò% hÖ4ñ ô 	×&Ò& yÔ;ñ �OÓ$€EÞÔ! %×(Ñ(Ü�‹JˆÜ×$Ò$ SÓ,ˆÜ�q–ˆAÜ×$Ò$ V°1©XÖ6ñ ä×Ò˜I¬x¸«~¼xÈ»}ÔMñ �NÓ#€EÞÔ! %×(Ñ(Ü�‹JˆÜ×(Ò(¨Ó0ˆ
ØˆÜ�q–ˆAØ‘(ˆCÜ×%Ò% jÖ6ñ ô 	×Ò˜I´8¸D³>Ä8ÈDÃ>ÔRñ �MÓ"€EØÑÜ˜UÓ#ˆÜ×&Ò& y´(¸4³.À%ÔHñ �LÓ!€EØÑÜ˜EÓ"ˆÜ×,Ò,¨YÓ7ˆØ�8ÓÜ×*Ò*¨9´h¸s³mÀTÔJð ”U×/Ñ/Ó/Ù˜Ó&ˆØˆÞÜ×"Ò" 9¬h°xÓ.@À+ÔNÙ�OÓ$€EØ€AÜ	×Ò 	¨1Ô-ð ”e×3Ñ3´U×5SÑ5SÐTÓTÙ˜Ó(ˆÜ˜eÔ+ñ �NÓ#€EÜ
˜eÓ
$€CÜ	×Ò˜	 3¬°«¼À»ÔFñ �NÓ#€EØ€LÜ	×ÒØÜ×Ò˜|Ó,Ü�T‹NÜ�S‹Mô	ñ �JÓ€EÜ	�eÓ	€BÜ	×"Ò" 9¬h°t«n¸bÔAÜ	×Ò�y¤(¨4£.Ô1Ü	×Ò�y¤(¨4£.Ô1ñ ˜-Ó(€KØÑØœ×7Ñ7Ó7Øœ5×6Ñ6Ñ6‰KØœ5×<Ñ<Ó<Øœ5×7Ñ7Ñ7‰KØœ5×7Ñ7Ó7Øœ5×<Ñ<Ñ<ˆKÜ×Ò 	¬8°D«>¸;ÔGñ Ð$Ó%€EÜ	�eÓ	€BÞ	Ü×*Ò*¨9°bÔ9ñ �HÓ€EÜ�)œX c›]¬E¯LªL«N¸EÔBñ �OÓ$€EÜ�)œX d›^¬X°c«]¸EÔBñ �OÓ$€EÜ�)œX d›^¬X°c«]¸EÔBñ �OÓ$€EÜ�)œX d›^¬X°c«]¸EÔBñ �MÓ"€EÜ�)œX d›^¬X°c«]¸EÔBñ �MÓ"€EÜ�)œX d›^¬U×-?Ò-?ÀÓ-EÀuÔMñ �NÓ#€EÜ�)œX d›^¬U×-?Ò-?ÀÓ-EÀuÔMñ �MÓ"€EÜ˜Ó€DØ”U×6Ñ6Ó6ÞÜ×%Ò% c°e¸QÔ?Ü×#Ò# I¬x¸«~¸uÖEô ×5Ò5°iÓ@ˆGØ×!×!Ü×&Ò& wÓ/�Ü×)Ò)¨#¸"¸aÔ@Ü×'Ò'¨	´8¸D³>À2ÖFÞÜ×'Ò'¨	´8¸D³>À4ÔHùØ	”u×5Ñ5Ó	5Ü×1Ò1°)Ó<ˆØ× Ñ Ó"ˆØ�T˜2�JÓ $¨%£-Ü×%Ò% c°b¸!Ô<Ü×#Ò# I¬x¸«~¸rÔBÜ×#Ò# I¬x¸«}¸bÕAä×#Ò# Y´¸³ÀÔFÜ×#Ò# Y´¸³¸uÕEæÜ×%Ò% c°d¸AÔ>Øœe×<Ñ<¼e×>[Ñ>[Ð\Ó\Ü×"Ò" 9¬h°s«mÔ<Ü	×Ò˜%Ô Ü	×Ò˜E 1Ô%Ü	×Ò˜u aÔ(Ü	×Ò˜5Õ!r,   c                óÈ  • SnU[        U5      :  aÐ  [        R                  " X8S  5      u  pšX‰-  n[        R                  " X5      nUS:X  a  [        R                  " XSU5      u  p¼OUn[        R
                  " XX+X¤XVU5	        [        R                  " XËU5      nUS:X  a  [        R                  " X-S5      nO[        R                  " USU* 5      nU[        U5      :  a  MÐ  U$ rŒ   )r<   r£   Úfz_chartoruner  r	  Úfz_show_glyphrÚ  Úfz_pre_translate)r   Ú	user_fontr”  rŸ  r
  Ú
bidi_levelr•  rK  rh  rT  r\  r  rÜ  râ  s                 r*   r’  r’  }U  sÓ   € ð 	
€AØ
Œc�!‹f‹*Ü×$Ò$ Q r UÓ+‰ˆØ	‰ˆÜ×*Ò*¨9Ó:ˆØ�!‹8Ü×?Ò?À	ÐPQÐS[Ó\‰IˆC�àˆDÜ×Ò˜D¨°#¸jÐV^Ô_Ü×$Ò$ T°Ó6ˆØ�A‹:Ü×(Ò(¨°1Ó5‰Cä×(Ò(¨¨a°#°Ó6ˆCð Œc�!‹f�*ð €Jr,   c                óš   • [         R                  " U 5      nUR                  SS9nUR                  [	        S5      5      nUS:¼  a  US U nU$ )Nr  r.  r   )r£   r  rÉ  r§   r+  )r•  Ú
buff_bytesr  rË  s       r*   rŸ  rŸ  ™U  sN   € Ü×-Ò-¨dÓ3€JØ
×
Ñ
 9Ð
Ð
-€CØ�‰”�Q“Ó€AØˆAƒvØ�"�1ˆgˆØ€Jr,   c                ó    • [        SU  35        g)z
Generate a warning.
z	warning: Nr­  rv   s    r*   r  r  ¢U  s   € ô ˆi˜�vÐÕr,   c                óÌ  • U(       aÅ  [         R                  " U5      u  pEUS:”  a§  [        U5      n[        U[         R                  5      (       d   eUR
                  (       aj  [         R                  " U5      u  puXt:  aM  [         R                  " U[         R                  [         R                  5        [         R                  " XUS5        g[         R                  " XUS5        g)z8
update a stream object
compress stream when beneficial
é   r   Nr   )
r£   rP  r  rC   r4  rÍ   rV  ÚPDF_ENUM_NAME_FilterÚPDF_ENUM_NAME_FlateDecodeÚpdf_update_stream)r2  r  r5  rc  rÉ  r<  Úbuffer_compressedÚlength_compresseds           r*   r1  r1  ©U  s´   € ö
 Ü×+Ò+¨GÓ4‰	ˆØ�B‹;Ü 2°7Ó ;ÐÜÐ/´·±×@Ñ@Ð@Ð@Ø ×+×+Ü',×'>Ò'>Ð?PÓ'QÑ$Ð!Ø$Ó-Ü×&Ò&ØÜ!×6Ñ6Ü!×;Ñ;ôô
 ×+Ò+¨CÐ6GÈÔKØä	×Ò˜C g¨qÕ1r,   c                ó
  • [        U[        R                  5      (       d   S[        U5      < 35       eUS:”  a  [        R                  " XS5      nU$ [        UR                  5      nUR                  5       n[        R                  " [        R                  " U[        S5      5      5      n[        R                  " U[        S5      5      nUR                  (       a  [        R                  " X85      n	O[        R                  " X5      n	[        U5      n
[        R                  " X[        R                   " 5       [        R"                  " S5      U
5      n[%        XU
S5        [        R&                  " U[        S5      U	5        U$ )z`
Make an XObject from a PDF page
For a positive xref assume that its object can be used instead
ztype(gmap)=r   r,  r=  r   )rC   r£   ÚPdfGraftMaprÉ   r¹  rÛ   rÅ   r  rÎ  r  r  rÍ   ry  Úpdf_graft_objectr  rð  r}  r  r1  rV  )rÏ  Úfsrcpager  rE  rô  ÚsrcpageÚspagerefr8  r²  rj  r&  s              r*   rï  rï  ÁU  s(  € ô
 �dœE×-Ñ-×.Ñ.Ð@°;´4¸³:±-Ð0@Ó@Ð.ØˆaƒxÜ×&Ò& v°QÓ7ˆð2 €Lô/ ˜xŸ}™}Ó-ˆØ—;‘;“=ˆÜ×$Ò$¤U×%CÒ%CÀHÌhÐWaÓNbÓ%cÓdˆä×*Ò*¨8´X¸kÓ5JÓKˆØ�?�?ä×5Ò5°dÓ>‰Iä×.Ò.¨vÓ9ˆIô ˜xÓ(ˆô
 ×%Ò% f¼¿ºÓ8HÌ%Ï,Ê,ÐWXË/Ð[^Ó_ˆä˜¨¨QÔ/ô 	×Ò˜5¤(¨;Ó"7¸ÔCØ€Lr,   c                ó.   • [        U [        [        45      $ r.   )rC   r¶   rµ   r§  s    r*   r  r  äU  s   € Ü�aœ%¤˜Ó'Ð'r,   c                ó   • [        U 5      $ r.   )r<   r§  s    r*   r  r  èU  s   € Üˆq‹6€Mr,   zbad annot typezbad or missing annot AP/Nz%arg must be seq of seq of float pairszbad seq of pointszbad type: 'buffer'zbad color sequencer¤  zbad filetypezbad locationzbad config numberzbad layer numberzbad 'oc' referencezbad page idr~  zPDF has no rootzrect is infinite or emptyzbad type: 'text'rX  zcolor count failedzneed font file or bufferzcannot create fontzis no annotationzis no imager}  zobject is no PDF dictzsource pixmap has no alphazpixel(s) outside imagerÄ   c                ó   • [        U 5      er.   )rl   )rž   Úexcs     r*   rÂ  rÂ  V  s   € ô �S‹/Ðr,   c                ó¶   • U (       d  g[        U [        5      (       a  U R                  SUS9nO[        U [        5      (       a  U S S  nWR	                  SUS9nU$ )Nra   r  r.  Úraw_unicode_escape)rC   rè  rþ  r   rÉ  )rŸ  r/  r¦   rL   s       r*   rX  rX  V  sU   € æØÜ�!”S×ÑØ�X‰X�f VˆXÐ,‰Ü	�A”u×	Ñ	Ø‰qˆTˆØ
�)‰)Ð(°ˆ)Ð
8€CØ€Jr,   c                ó¶   • U (       aR  [        U 5      [        [        4;  d-  [        U 5      S;  d  [	        U 5      S:  d  [        U 5      S:”  a  [        S5      eg g )Nr˜  r   r   z/need 1, 3 or 4 color components in range 0 to 1)rÉ   rµ   r¶   r<   rÅ  r!  rÄ   ©rö  s    r*   r�  r�   V  sM   € Þä�‹GœD¤%˜=Ó(Ü�1‹v˜YÓ&Ü�1‹v˜‹zÜ�1‹v˜‹zäÐNÓOÐOð ð 	r,   c                óL   • U R                  5        H  nUS   U:X  d  M  Us  $    g)zGReturn an entry in the page's font list if reference name matches.
    rr  N)ri  )r×   rÿ   r  s      r*   r©  r©  +V  s&   € ð �^‰^ÖˆØˆQ‰4�8ÕØŠHò r,   c                óB   • U R                    H  nXS   :X  d  M  Us  $    g)z3Return a font info if present in the document.
    r   N)r¨  )r2  r  r  s      r*   r(  r(  3V  s    € ð �]Œ]ˆØ�Q‘4�<ØŠHò r,   c                óè   • [        U 5      (       a  [        U 5      nUR                  4$ [        U 5      (       a  U 4$ U  H0  n[        U5      (       a  M  [        U5      (       a  M'  [	        S5      e   U $ )Nzbad quads entry)r×  r,  rI  rØ  rÄ   )rd
  r%  r+  s      r*   r  r  ;V  sb   € Ü�×ÑÜ�‹KˆØ—‘ˆyÐÜ�×ÑØˆxˆÛˆÜ˜!—“¤	¨!§£ÜÐ.Ó/Ð/ñ ð €Lr,   c                ó6  • [        U 5      (       d  g[        U 5      [        [        4;   a  [	        U 5      S:X  d  [        S5      e[	        U S   5      S:X  a  [	        U S   5      S:X  d  [        S5      eU S   S   U S   S	   s=:X  a  S:X  d  O  [        S
5      eg)NFr   z$morph must be a sequence of length 2r   r   r§  zinvalid morph param 0rr  r   zinvalid morph param 1T)ré   rÉ   rµ   r¶   r<   rÄ   r   s    r*   r  r  GV  s‰   € Ü��7‰7ØÜ�‹Gœœe�}Ó$¬¨Q«°1«ÜÐ?Ó@Ð@Ü��!‘‹I˜‹Nœs 1 Q¡4›y¨A›~ÜÐ0Ó1Ð1ØˆQ‰4�‰7�a˜‘d˜1‘gÕ" Õ"ÜÐ0Ó1Ð1Ør,   c                ó   • g r.   )r@   rí   rÄ   rÉ   r   s    r*   rp  rp  SV  s   € Ø
r,   c                óz   •  [        U 5      nUR                  $ ! [         a    [        S:”  a
  [        5          gf = f)zcCheck whether an object is convex, not empty  quad-like.

It must be a sequence of 4 number pairs.
r   F)rÐ  rl   r  r{   rl  )r+  Úq0s     r*   rØ  rØ  YV  s=   € ð
Ü�!‹Wˆð �<‰<Ðøô ó Ü !Ó#¬Ô(8Ùðús   ‚ ™:¹:c                óª   •  [        U 5      n U R                  =(       d    U R
                  (       + $ ! [         a    [        S:”  a
  [        5          gf = f)zZCheck whether an object is non-degenerate rect-like.

It must be a sequence of 4 numbers.
r   F)r,  rl   r  r{   r�  r€  rX  s    r*   r×  r×  fV  sI   € ð
Ü�‹Gˆð —
‘
×+˜aŸm™mÔ,Ð,øô ó Ü !Ó#¬Ô(8Ùðús   ‚1 ±AÁAc                ój  • U (       d  g[        U S5      (       a  U 4n [        U 5        [        U 5      S:X  a!  [        U S   5      S-   nUS:X  a  US-   $ US-   $ [        U 5      S	:X  a'  [        [	        U 5      5      S-   nUS:X  a  US
-   $ US-   $ [        [	        U 5      5      S-   nUS:X  a  US-   $ US-   $ )Nra   r—  r   r   r´   rö  zG zg r   zRG zrg zK zk )r@   r�  r<   r·   r¶   )rö  r  rŸ  s      r*   rý  rý  sV  s¼   € ÞØÜˆq�+×ÑØˆDˆÜˆq„MÜ
ˆ1ƒv�ƒ{Ü�a˜‘d‹O˜cÑ!ˆØ ›8ˆq�4‰xÐ1¨¨T©Ð1ä
ˆ1ƒv�ƒ{Ü”e˜A“hÓ #Ñ%ˆØ ›Hˆq�5‰yÐ3¨!¨e©)Ð3ä”%˜“(Ó˜cÑ!€AØ˜C“xˆ1ˆt‰8Ð- Q¨¡XÐ-r,   c                óø  ^^• U R                  5       m[        T5      mUU4S jn TS:w  a/  [        R                  " TR	                  5       [        S5      S5        [        R                  " TU5      nU H$  n[        U5      n[        R                  " XF5        M&     [        R                  " U5        [        US5        U" 5         [        U5      $ ! [         a    [        (       a
  [        5         U" 5          g f = f)Nc                 ór   >• TS:w  a0  [         R                  " T R                  5       [        S5      T5        g g )Nr   r<  )r£   rQ  r  r  )râ  rx  s   €€r*   r·  Ú$Page__add_text_marker.<locals>.finalˆV  s,   ø€ Ø�q‹=Ü×"Ò" 7§;¡;£=´(¸8Ó2DÀhÕOð r,   r   r<  rÄ  )rô  r  r£   rQ  r  r  rõ  r'  Úpdf_add_annot_quad_pointrX  r÷  rl   r  r{   rã   )	r)   rd
  r,  r·  rà   rH   r+  râ  rx  s	          @@r*   rN  rN  …V  sË   ù€ Ø�n‰nÓ€GÜ Ó(€HöPðØ�q‹=Ü×"Ò" 7§;¡;£=´(¸8Ó2DÀaÔHÜ×&Ò& w°
Ó;ˆÛˆDÜ Ó%ˆAÜ×*Ò*¨5Ö4ñ ô 	×Ò˜uÔ%Ü˜˜sÔ#ÙŒô
 �‹<Ðøô	 ó ßÒ¤NÔ$4ÙŒÙðús   ¦BC Ã&C9Ã8C9c                óZ   • [        U [        5      (       d   e[        [        SU  35      nU$ )Nr*  )rC   rè  rï   r£   )re  rL   s     r*   r  r  œV  s/   € Ü�aœ×ÑÐÐÜ
”%˜>¨!¨Ð-Ó
.€Cð €Jr,   c                óÊ   • US   nSn[        U R                  5       H  u  pEUS   U:X  d  M  Sn  O   U(       a  XR                  W'   g U R                  R                  U5        g )Nr   FT)rY  r¨  rp   )r2  r:  r  r±  rh  Úfis         r*   r,  r,  ªV  s[   € Ø�‰7€DØ€EÜ˜3Ÿ=™=Ö)‰ˆØˆa‰5�D�=ØˆEÙñ *ö Ø�‰�aÒà�‰×Ñ˜TÕ"r,   c                óü   • Sn[        [        U5      5       HR  nX   nU[        U 5      :¼  a  [        U[        5      (       a  SU;   a  M3    gUb  [        X   U5      (       d    gUS-  nMT     U[        U 5      :w  a  gg)zé
Returns true if <args> matches <types>.

Each item in <types> is a type or tuple of types. Any of these types will
match an item in <args>. `None` will match anything in <args>. `type(None)`
will match an arg whose value is `None`.
r   NFr   T)rT  r<   rC   r¶   )r  rM  r�  rh  rc  s        r*   rJ  rJ  ·V  sz   € ð 	
€AÜ”3�u“:ÖˆØ‘ˆØ”�D“	‹>Ü˜%¤×'Ñ'¨D°E«MááØÑ¤Z°±¸×%?Ñ%?ÙØ	ˆQ‰Šñ ð 	ŒC�‹Iƒ~ØØr,   c                óx  • [        U5      n[        R                  " U5      nUR                  UR                  -
  nUR
                  UR                  -
  nUn	Un
U(       a  [        X5      nX-  nX-  nOS=pÍ[        XÍ5      nUS:w  a  US:w  a  UnUnUnUS:  a  X|-  X�-  :”  a  XŽ-  n	Un
O(Un	X~-  n
O!XÍ:w  a  X|-  X�-  :”  a  XŽ-  n	Un
OUn	X~-  n
OUn	Un
[        R                  " UR                  UR                  -   S-  UR                  UR
                  -   S-  5      n[        R                  " SSSSSS5      n[        R                  " UU5      n[        R                  " U[        R                  " Xš5      5      n[        R                  " U[        R                  " UR                  UR                  5      5      nU$ )z"
# compute image insertion matrix
r   r   r…  r   g      à¿)r  r£   Ú	fz_rotater¯  r°  r±  r²  r!  rÅ  r   r�  rb  Úfz_scaleÚfz_translatere  rf  )r‰  r2  r9  ra  rt  rf  r|  ÚtrwÚtrhr   r!  Úlarger=  r>  Úsmallr  r;  r�  s                     r*   rž  rž  ÐV  s˜  € ô ˜BÓ€EÜ
�/Š/˜&Ó
!€CØ
�(‰(�U—X‘XÑ
€CØ
�(‰(�U—X‘XÑ
€CØ€AØ€AÞÜ�EÓ"ˆØ‰]ˆØ‰^‰àˆˆÜ�‹K€EØ�ƒ{�v “}ØˆØˆØˆØ	ˆAƒvØ‰8�c‘hÓØ‘ˆAØ‰AàˆAØ‘‰AØ	‹Ø‰8�c‘hÓØ‘ˆAØ‰AàˆAØ‘‰AàˆØˆÜ
×
Ò
Ø�X‰X˜Ÿ™Ñ  AÑ%Ø�X‰X˜Ÿ™Ñ  AÑ%ó€Cô ×
Ò
˜q ! Q¨¨4°Ó
6€CÜ
�/Š/˜#˜sÓ
#€CÜ
�/Š/˜#œuŸ~š~¨aÓ3Ó
4€CÜ
�/Š/˜#œu×1Ò1°#·%±%¸¿¹Ó?Ó
@€CØ€Jr,   c                ó’  • U R                   R                  S:X  a­  U R                   R                  R                  S:X  a‰  U R                   R                  R                  S:X  ae  UR                   R
                  R                  U R                   R                  R
                  R                  UR                   R                  S-  -
  :  $ g)Nr   r   çš™™™™™¹?)rÍ   r
  r´  re  rf  rÐ  Ú
first_charrÊ  )rt   r  s     r*   rà  rà  W  sŒ   € Ø‡�×Ñ Ó! d§o¡o×&9Ñ&9×&;Ñ&;¸qÓ&@ÀTÇ_Á_×EXÑEX×EZÑEZÐ^_ÓE_Ø�}‰}×#Ñ#×%Ñ%¨¯©×(BÑ(B×(IÑ(I×(KÑ(KÈbÏmÉm×N`ÑN`ÐcfÑNfÑ(fÑfÐfØr,   c           	     óˆ   • U  S[        U 5       S[        [        U 5      5       S3n[        U 5       H  nUSU S3-  nM     U$ )Nr´   ú (z):
rm  r&   )rÉ   r<   r´  )re  rL   rh  s      r*   Údir_strrU  W  sK   € ØˆCˆq”�a“�	˜œC¤ A£›K˜=¨Ð
-€CÜ�ŽVˆØ��a�S˜ˆ|ÑŠñ à€Jr,   c           	     ó®  • U R                  S5      (       a  U R                  S5      (       a  U $ [        U 5      (       d  gU(       aŽ  Uc?  SR                  U  Vs/ s H!  n[	        U5      S:  a  [	        U5      S OSPM#     sn5      nODSR                  U  Vs/ s H'  n[	        U5      S:  a  U[	        U5         S   S OSPM)     sn5      nSU-   S-   $ US:  a3  SR                  U  Vs/ s H  oA[	        U5         S   S	 PM     sn5      nO-SR                  U  Vs/ s H  n[	        U5      S	 PM     sn5      nSU-   S-   $ s  snf s  snf s  snf s  snf )
aÔ  Return a PDF string enclosed in [] brackets, suitable for the PDF TJ
operator.

Notes:
    The input string is converted to either 2 or 4 hex digits per character.
Args:
    simple: no glyphs: 2-chars, use char codes as the glyph
            glyphs: 2-chars, use glyphs instead of char codes (Symbol,
            ZapfDingbats)
    not simple: ordering < 0: 4-chars, use glyphs not char codes
                ordering >=0: a CJK font! 4 chars, use char codes as glyphs
z[<z>]z[<>]ra   rÓ  Ú02xÚb7r   r  )r8   r  ré   r  r  )r   r'  r  rÝ  rö  Úotxts         r*   r  r  W  sD  € ð ‡��t×Ñ §¡¨t×!4Ñ!4Øˆä��:‰:ØæØ‰>Ø—7‘7ÉtÓTÊtÈ!¬s°1«v¸«|œs 1›v c™lÀÒEÉtÑTÓU‰Dà—7‘7ÙOSÓTÊtÈ!¬s°1«v¸«|�Fœ3˜q›6‘N 1Ñ% cÑ*ÀÒEÉtÑTóˆDð �d‰{˜TÑ!Ð!ð �!ƒ|Ø�w‰w¹DÓAºD°q¤# a£&™>¨!Ñ,¨SÐ1Ò2¹DÑAÓB‰à�w‰w±Ó6²¨Aœ3˜q›6 #˜,š±Ñ6Ó7ˆà�$‰;˜ÑÐùò Uùò Uùò Bùâ6s   Á(EÂ.EÃ*EÄEc                ón  • [        U 5      (       d  gS nSnU  H’  n[        U5      nUS:”  a
  U" U 5      s  $ US:”  a  US:  a  US;   a  US-  nX#-  nM;  US:”  a  USUS	 3-  nML  US
:X  a  US-  nMY  US:X  a  US-  nMf  US:X  a  US-  nMs  US:X  a  US-  nM€  US:X  a  US-  nM�  US-  nM”     SU-   S-   $ )a�  Return a PDF string depending on its coding.

    Notes:
        Returns a string bracketed with either "()" or "<>" for hex values.
        If only ascii then "(original)" is returned, else if only 8 bit chars
        then "(original)" with interspersed octal strings 
nn is returned,
        else a string "<FEFF[hexstring]>" is returned, where [hexstring] is the
        UTF-16BE encoding of the original.
    z()c                ób   • [        SS/5      [        U S5      -   nSUR                  5       -   S-   $ )NrA  r  zUTF-16BEÚ<rí  )r§  Úhex)rŸ  r%  s     r*   Úmake_utf16beÚ!get_pdf_str.<locals>.make_utf16be@W  s1   € Ü�s˜C�jÓ!¤I¨a°Ó$<Ñ<ˆØ�Q—U‘U“W‰}˜sÑ"Ð"r,   ra   r  é   rÏ  )rê  rë  rå  rå  Ú03or   z\br’  z\trF  rz  r  z\frG  z\rz\267rê  rë  )ré   r  )rŸ  r^  r%  rö  rÚ  s        r*   r  r  3W  sð   € ô ��7‰7Øò#ð 	€AÛˆÜ�‹VˆØ�‹8Ù “?Ò"à�‹7�r˜C“xØÐ$Ó$Ø�T‘	�Ø‰FˆAÙà�‹8Ø�2�b˜�X�ÑˆAÙð �‹7Ø�‰JŠAØ�1‹WØ�‰JŠAØ�2‹XØ�‰JŠAØ�2‹XØ�‰JŠAØ�2‹XØ�‰JŠAà�‰LŠAñ7 ð: �‰7�S‰=Ðr,   c           	     ó¬  • U (       a  U $ [         R                  " S5      n U (       a  U $ SSKnUR                  SSSSSS9nUR                  S:X  a;  [
        R                  " SUR                  5      nU(       a  UR                  S5      n U $ [        R                  S	:X  aÄ  UR                  S
SSSSS9nUR                  R                  5       nUR                  (       d  U(       d  [        S5      e[         R                  R                  U5      n[         R                  R                  US5      n [         R                  R!                  U 5      (       a  U $ [        SU  S35      e[#        5       nS H³  nUR                  SU 3SSSSS9nUR                  S:X  d  M+  UR                  R                  5       R%                  5       n['        U5      S:X  d  Md  US   nU S3nUR)                  U5        [*        R*                  " U5      n	U	R-                  5         U	(       d  M®  U	S   s  $    U(       a  Sn
U H  nU
SU 3-  n
M     [        U
5      e[        S5      e)a·  Detect Tesseract language support folder.

This function is used to enable OCR via Tesseract even if the language
support folder is not specified directly or in environment variable
TESSDATA_PREFIX.

* If <tessdata> is set we return it directly.

* Otherwise we return `os.environ['TESSDATA_PREFIX']` if set.

* Otherwise we search for a Tesseract installation and return its language
  support folder.

* Otherwise we raise an exception.
ÚTESSDATA_PREFIXr   Nztesseract --list-langsr   T)ÚshellÚcapture_outputrs  r   z%List of available languages in "(.+)"Úwin32zwhere tesseractz4No tessdata specified and Tesseract is not installedrÿ  z8No tessdata specified and Tesseract installation has no z folder)ztesseract-ocrÚ	tesseractzwhereis r   z/*/tessdatar¨  z(No tessdata specified and no match for:
rm  )ri   rš   Ú
subprocessro  Ú
returncoder>  r  Ústdoutr?  rÃ  Úplatformr 
  rß   r
   Údirnamer  r¹  rµ   r;   r<   rp   Úglobr¬  )rÿ  rh  ÚcprŒ  r®  rl  Úattemptsr
   ÚpatternÚ	tessdatasr   Úattempts               r*   rù  rù  hW  s  € ö  ØˆÜ�yŠyÐ*Ó+€HÞØˆó à	�‰Ð0¸È!ÐSTÐ[_ˆÐ	`€BØ	‡}�}˜ÓÜ�IŠIÐ=¸r¿y¹yÓIˆÞØ—w‘w˜q“zˆHØˆOô ‡|�|�wÓØ�^‰^Ð-°QÀqÐPQÐX\ˆ^Ð]ˆØ—9‘9—?‘?Ó$ˆØ�=�=¦ÜÐUÓVÐVÜ—'‘'—/‘/ (Ó+ˆÜ—7‘7—<‘< ¨Ó4ˆÜ�7‰7�>‰>˜(×#Ñ#ØˆOäÐ!YÐZbÐYcÐcjÐkÓlÐlô ‹v€HÛ,ˆØ�^‰^˜h t fÐ-°QÀqÐPQÐX\ˆ^Ð]ˆØ�=‰=˜AÕØ—y‘y—‘Ó(×.Ñ.Ó0ˆHÜ�8‹} Õ!à" 1™+�Ø$˜I [Ð1�Ø—‘ Ô(Ü ŸIšI gÓ.�	Ø—‘Ô ß�9Ø$ R™=Ò(ñ -ö Ø:ˆÛˆGØ�d˜7˜)Ð$Ñ$ŠDñ  ä˜4Ó Ð äÐQÓRÐRr,   )ÚCSSr³  r   c               óâ  • Sn[        U5      [        La  [        S5      eUc  Sn[        R	                  5        Vs/ s H  oUR                  U 5      (       d  M  UPM     nnU/ :X  a  [        SU  S35      e[        U5      S:”  a  [        S5      eUc  U nU HP  n[        U   nUS   n	US	   n
US
   " 5       nUR                  X·5        U	(       a  SOSnU
(       a  SOSnXX7XÍ4-  -  nMR     U$ s  snf )a¡  Create @font-face items for the given fontcode of pymupdf-fonts.

Adds @font-face support for fonts contained in package pymupdf-fonts.

Creates a CSS font-family for all fonts starting with string 'fontcode'.

Note:
    The font naming convention in package pymupdf-fonts is "fontcode<sf>",
    where the suffix "sf" is either empty or one of "it", "bo" or "bi".
    These suffixes thus represent the regular, italic, bold or bold-italic
    variants of a font. For example, font code "notos" refers to fonts
    "notos" - "Noto Sans Regular"
    "notosit" - "Noto Sans Italic"
    "notosbo" - "Noto Sans Bold"
    "notosbi" - "Noto Sans Bold Italic"

    This function creates four CSS @font-face definitions and collectively
    assigns the font-family name "notos" to them (or the "name" value).

All fitting font buffers of the pymupdf-fonts package are placed / added
to the archive provided as parameter.
To use the font in pymupdf.Story, execute 'set_font(fontcode)'. The correct
font weight (bold) or style (italic) will automatically be selected.
Expects and returns the CSS source, with the new CSS definitions appended.

Args:
    fontcode: (str) font code for naming the font variants to include.
              E.g. "fig" adds notos, notosi, notosb, notosbi fonts.
              A maximum of 4 font variants is accepted.
    CSS: (str) CSS string to add @font-face definitions to.
    archive: (Archive, mandatory) where to place the font buffers.
    name: (str) use this as family-name instead of 'fontcode'.
Returns:
    Modified CSS, with appended @font-face statements for each font variant
    of fontcode.
    Fontbuffers associated with "fontcode" will be added to 'archive'.
z1
@font-face {font-family: %s; src: url(%s);%s%s}
z'archive' must be an Archivera   zNo font code 'z' found in pymupdf-fonts.rr  zfontcode too shortrÎ  rè  rq  zfont-weight: bold;zfont-style: italic;)rÉ   r|  rÄ   rì  r{  r8   r<   r€  )Úfontcoders  r³  r   ÚCSSFONTrò  Ú	font_keysÚfkeyrÜ  rÎ  rè  ÚfbuffÚ	bold_textÚitalic_texts                 r*   Úcss_for_pymupdf_fontr|  ®W  s  € ðR D€Gä�‹=œGÒ#ÜÐ7Ó8Ð8Ø
�{Øˆô 1×5Ñ5Ô7ÓRÒ7�q¿<¹<È×;Q—Ñ7€IÐRØ�BƒÜ˜>¨(¨Ð3LÐMÓNÐNÜ
ˆ9ƒ~˜ÓÜÐ-Ó.Ð.Ø�|ØˆãˆÜ# DÑ)ˆØ�F‰|ˆØ�h‘ˆØ�X’Ó ˆØ�‰�EÔ Þ,0Ñ(°bˆ	Þ/5Ñ+¸2ˆØ˜$ iÐ=Ñ=Ñ=Šñ ð €Jùò# Ss   »C,ÁC,c           	     ó¼  • UR                  5       n[        R                  US5      nSnUS:X  a  [        nUS:X  a  [        nUbF  [        U  Vs/ s H+  n[        U5      S:  a  U[        U5         S   OUS   S   PM-     sn5      nXr-  $ U[        R                  5       ;   a  [        U [        U   X#5      $ US;   a  [        U 5      U-  $ [        SU S	35      es  snf )
zåCalculate length of a string for a built-in font.

Args:
    fontname: name of the font.
    fontsize: font size points.
    encoding: encoding to use, 0=Latin (default), 1=Greek, 2=Cyrillic.
Returns:
    (float) length of text.
Nr&  r%  rÓ  r   rs  )rç  ré  rè  r¦  rë  r§  rê  r¨  zFont 'z' is unsupported)ré  rï  r=   r+  r*  r®  r  r{  Úutil_measure_stringr<   rÄ   )r   rÿ   r   r  rÆ  r'  rö  r   s           r*   rT  rT  óW  sô   € ð �~‰~Ó€HÜ×"Ñ" 8¨TÓ2€Hà€FØ�8ÓÜˆØ�>Ó!ÜˆØÑÜÑPTÓUÒPTÈ1¤c¨!£f¨s£l�œ˜A›‘ Ò"¸¸s¹ÀA¹ÒFÑPTÑUÓVˆØ‰|Ðà”?×'Ñ'Ó)Ó)Ü"Ø”/ (Ñ+¨Xó
ð 	
ð ð 	ó 	ô �4‹y˜8Ñ#Ð#ä
�v˜h˜ZÐ'7Ð8Ó
9Ð9ùò) Vs   Á2Cc                ó  • [        U 5      [        R                  L a  U R                  5       nOI[	        U S5      (       a  U R                  5       nO'[        U 5      [        [        4;   a  U nO[        S5      e[        R                  U5      $ )a*  Return basic properties of an image.

Args:
    img: bytes, bytearray, io.BytesIO object or an opened image file.
Returns:
    A dictionary with keys width, height, colorspace.n, bpc, type, ext and size,
    where 'type' is the MuPDF image type (0 to 14) and 'ext' the suitable
    file extension.
r¾  zbad argument 'img')rÉ   r>   r¨  rÂ  r@   r¾  r   r§  rÄ   r  Úimage_profile)r1  r	   s     r*   r€  r€  X  sj   € ô ˆCƒy”B—J‘JÒØ—‘“‰Ü	��f×	Ñ	Ø—‘“‰Ü	ˆc‹”uœiÐ(Ó	(Ø‰äÐ-Ó.Ð.ä×Ñ˜vÓ&Ð&r,   c                óê  ^ • [        T R                  [        5      (       d   e[        T R                  5      (       d  T R                  (       aY  T R                  c   e[        T R                  T R                  5      " T R                  5      nU(       d  [        S5        ST l        gU 4S jn[        T R                  [        5      (       d   e[        T R                  5      nUS:X  a  U" 5       $ T R                  [           nUS:w  a  U" 5       $ T R                  US-
     nU[           nUS:w  a  U" 5       $ U[           nT R                  [           nXx:w  a  U" 5       $  T R                  R                  5        H  u  pšX•;  d  M  X¥U	'   M     SnUS:X  a$  S	U[        '   T R                  R                  5         g[        S
5        U" 5         g! [         a    [        (       a
  [        5         Sn N`f = f)aU  
Append current path to list or merge into last path of the list.
(1) Append if first path, different item lists or not a 'stroke' version
    of previous path
(2) If new path has the same items, merge its content into previous path
    and change path["type"] to "fs".
(3) If "out" is callable, skip the previous and pass dictionary to it.
Nr   z2calling cdrawings callback function/method failed!c                 ó    >• T R                   R                  T R                  R                  5       5        T R                  R	                  5         g r.   )r	  rp   Úpathdictr&  rE  ©r…  s   €r*   rp   Újm_append_merge.<locals>.appendNX  s0   ø€ à�‰�‰�s—|‘|×(Ñ(Ó*Ô+Ø�‰×ÑÕr,   rŸ  r   r  r¨  rÌ  z$could not merge stroke and fill path)rC   r	  rµ   rÿ  r  rï   rƒ  rw   r<   rÚ  Údictkey_itemsrG   rl   r  r{   rE  )r…  Úresprp   r·  Úthistyper  ÚprevtypeÚ	previtemsÚ	thisitemsrò  rK   r¦   s   `           r*   Újm_append_mergerŒ  3X  sž  ø€ ô �c—g‘gœt×$Ñ$Ð$Ð$ô �—
‘
×Ñ˜sŸzŸzà�:‰:Ñà�1ô ˜3Ÿ7™7 C§J¡JÔ/°·±Ó=ˆDÞÜÐHÔIØˆŒØõô �c—g‘gœt×$Ñ$Ð$Ð$Üˆs�w‰w‹<€DàˆqƒyÙ‹xˆà�|‰|œ\Ñ*€Hà�3ƒÙ‹xˆØ�7‰7�D˜‘FÑ€Dà”\Ñ"€Hà�3ƒÙ‹xˆà”mÑ$€IØ—‘œmÑ,€IØÓÙ‹xˆðØ—L‘L×&Ñ&Ö(‰DˆAØ�}Ø�Q“ñ )ð ˆð
 
ˆQƒwØ"ˆŒlÑØ�‰×ÑÕäÐ6Ô7Ù�øô ó ßÒ¤NÔ$4àŠðús   Å!"G Æ
G Ç!G2Ç1G2c                óÖ   • U R                   (       d'  U R                  R                  U[        U5      45        g U R                  R                  U[        U5      U R                  45        g r.   )rù  r“  rp   rq  Ú
layer_name)r…  rÖ  rý   rÿ  s       r*   Újm_bbox_add_rectr�  zX  sG   € Ø�:�:Ø�
‰
×Ñ˜D¤/°$Ó"7Ð8Õ9à�
‰
×Ñ˜D¤/°$Ó"7¸¿¹ÐHÕIr,   c                óÄ   • [         R                  " [         R                  R                  5      n[         R                  " UR	                  5       U5      n[        XUS5        g )Nz
fill-image)r£   rr  r3  Úll_fz_transform_rectr  r�  )r…  rÖ  r´  rõ  ró  Úcolor_paramsr%  s          r*   Újm_bbox_fill_imager“  �X  s>   € Ü�Š”U—\‘\×,Ñ,Ó-€AÜ×"Ò" A§J¡J£L°#Ó6€AÜ�c  <Õ0r,   c                ó®   •  [        X[        R                  " [        R                  U5      S5        g ! [         a    [
        (       a
  [        5         e f = f)Nzfill-imgmask)r�  r£   r‘  Úfz_unit_rectrl   r  r{   )r…  rÖ  r´  rõ  rò  ro  ró  r’  s           r*   Újm_bbox_fill_image_maskr–  ‡X  sE   € ðÜ˜#¤E×$>Ò$>¼u×?QÑ?QÐSVÓ$WÐYgÕhøÜó ßÒ¤NÔ$4Øðús	   ‚03 ³!Ac	           	     óª   • U(       a  SOSn [        X[        R                  " US U5      S5        g ! [         a    [        (       a
  [        5         e f = f)NTFz	fill-path©r�  r£   Úll_fz_bound_pathrl   r  r{   ©	r…  rÖ  r
   r  rõ  rò  ro  ró  r’  s	            r*   Újm_bbox_fill_pathr›  �X  sH   € Þ‰t U€HðÜ˜#¤E×$:Ò$:¸4ÀÀsÓ$KÈ[ÕYøÜó ßÒ¤NÔ$4Øðús	   �#1 ±!Ac                ó�   •  [        X[        R                  " X#5      S5        g ! [         a    [        (       a
  [        5         e f = f)Nz
fill-shade)r�  r£   Úll_fz_bound_shaderl   r  r{   )r…  rÖ  Úshaderõ  ró  r’  s         r*   Újm_bbox_fill_shaderŸ  ˜X  s;   € ðÜ˜#¤E×$;Ò$;¸UÓ$HÈ,ÕWøÜó ßÒ¤NÔ$4Øðús	   ‚!$ ¤!Ac           	     ó’   •  [        X[        R                  " X#U5      S5        g ! [         a    [        (       a
  [        5         e f = f)Nzstroke-text©r�  r£   Úll_fz_bound_textrl   r  r{   )r…  rÖ  r   r•  rõ  r  s         r*   Újm_bbox_stroke_textr£   X  ó>   € ðÜ˜#¤E×$:Ò$:¸DÈ#Ó$NÐP]Õ^øÜó ßÒ¤NÔ$4Øðúó	   ‚"% ¥!Ac           	     ó”   •  [        X[        R                  " US U5      S5        g ! [         a    [        (       a
  [        5         e f = f)Nz	fill-textr¡  )r…  rÖ  r   rõ  r  s        r*   Újm_bbox_fill_textr§  ¨X  s?   € ðÜ˜#¤E×$:Ò$:¸DÀ$ÈÓ$LÈkÕZøÜó ßÒ¤NÔ$4Øðús	   ‚#& ¦!Ac           	     óJ   • [        X[        R                  " US U5      S5        g )Nzignore-text)r�  r£   r¢  )r…  rÖ  r   rõ  s       r*   Újm_bbox_ignore_textr©  °X  s   € Ü�c¤× 6Ò 6°t¸TÀ3Ó GÈÕWr,   c	           	     ó’   •  [        X[        R                  " X#U5      S5        g ! [         a    [        (       a
  [        5         e f = f)Nzstroke-pathr˜  )	r…  rÖ  r
   r•  rõ  rò  ro  ró  r’  s	            r*   Újm_bbox_stroke_pathr«  ´X  r¤  r¥  c                ó  • U R                   [           n[        U5      nS/S-  n[        S5       HN  nXS-
  U-      n[	        US   5      nUR
                  X4S-  '   UR                  X4S-  S-   '   [	        US   5      nMP     WR
                  US   :w  d  UR                  US   :w  a  gSU l        [        R                  " US   US   US   US   US   US   US   US	   5      nS
[        U5      4n	X‘US-
  '   XS-
  U2	 g)a  
Check whether the last 4 lines represent a quad.
Because of how we count, the lines are a polyline already, i.e. last point
of a line equals 1st point of next line.
So we check for a polygon (last line's end point equals start point).
If not true we return 0.
r   r   rr  r   r   r§  r   r   r   r  )rƒ  r†  r<   rT  ró  re  rf  Ú	linecountr£   rÆ  rò  )
r…  rG   r·  r  rh  rt   r  rd  r+  rý   s
             r*   Újm_checkquadr®  ¼X  s  € ð �L‰Lœ-Ñ(€EÜˆu‹:€DØ	
ˆˆa‰€Aä�AŽYˆØ˜Q‘h ‘lÑ#ˆÜ  a¡Ó)ˆØ—6‘6ˆˆa‰%‰Ø—v‘vˆˆa‰%�!‰)‰Ü˜t Q™xÓ(Šñ ð 
‡t�tˆq�‰tƒ|�r—t‘t˜q ™t“|ð ð €C„Mô 	×Ò˜1˜Q™4  1¡ q¨¡t¨Q¨q©T°1°Q±4¸¸1¹¸qÀ¹tÀQÀqÁTÓJ€AØ”/ !Ó$Ð%€Dàˆ4�!‰8ÑØ�a‰x˜$ˆÐØr,   c                ó,  • SU l         SnU R                  [           n[        U5      nX#S-
     n[	        US   5      n[	        US   5      nX#S-
     n[	        US   5      n[	        US   5      n	 UR
                  UR
                  :w  dN  UR                  U	R                  :w  d4  UR
                  U	R
                  :w  d  UR                  UR                  :w  a  gU	R
                  UR
                  :  aD  [        R                  " U	R                  U	R
                  UR                  UR
                  5      n
SnOC[        R                  " UR                  UR
                  UR                  UR
                  5      n
SnS[        U
5      U4nX²US-
  '   X#S-
  U2	 g)zq
Check whether the last 3 path items represent a rectangle.
Returns 1 if we have modified the path, otherwise 0.
r   r   r   r   r¨  r>  )
r­  rƒ  r†  r<   ró  rf  re  r£   rú  rq  )r…  rö  rG   r·  rÀ  ro  rp  Úline2rq  rù  r%  rý   s               r*   Újm_checkrectr±  ãX  sR  € ð €C„MØ€KØ�L‰Lœ-Ñ(€EÜˆu‹:€Dà˜!‘8Ñ€EÜ	˜5 !™9Ó	%€BÜ	˜5 !™9Ó	%€Bð ˜!‘8Ñ€EÜ	˜5 !™9Ó	%€BÜ	˜5 !™9Ó	%€Bð 	
Ø�t‰t�r—t‘t‹|Ø�t‰t�r—t‘t‹|Ø�t‰t�r—t‘t‹|Ø�t‰t�r—t‘t‹|àð 
‡t�tˆb�d‰dƒ{Ü×Ò˜rŸt™t R§T¡T¨2¯4©4°·±Ó6ˆØ‰ä×Ò˜rŸt™t R§T¡T¨2¯4©4°·±Ó6ˆØˆà”? 1Ó% {Ð3€DØˆ4�!‰8ÑØ�a‰x˜$ˆÐØr,   c           
     ód   • UR                   n U(       d  g [        XX#XEXg5        UR                  nM$  r.   )ÚheadÚjm_trace_text_spanr_  )	r…  r   rc  rõ  rò  ro  ró  ÚseqnorI  s	            r*   Újm_trace_textr¶  Y  s0   € Ø�9‰9€DØ
ÞØÜ˜C u°:ÀeÔSØ�y‰yˆñ	 r,   c                ó$  • Sn[        U[        R                  5      (       d   e[        R                  " U5      n[        U[        R                  5      (       d   e[        R
                  " U5      n[        UR                  5       5      n	[        R                  " UR                  5       U5      n
[        R                  " [        R                  " SS5      U
5      n[        R                  " UR                  UR                  -  UR                  UR                  -  -   5      n[        R                   " U5      nSn[#        UR                  5       5      n[%        UR                  5       5      nUS:  a  SnSnXì-  Xï-
  -  nXü-  Xï-
  -  nSn[        R&                  " UR                  5       5      nUU[(        -  -  nU[        R*                  " UR                  5       5      [,        -  -  nU[        R.                  " UR                  5       5      [0        -  -  nU[        R2                  " UR                  5       5      [4        -  -  nSn[        R6                  " 5       n[        R8                  " UR                  UR                  UR                  * UR                  SS5      nUR                  S:X  a  SUl        / n[=        UR>                  R@                  5       GH  nSnURC                  U5      RD                  S:¼  aS  [        RF                  " UR                  5       URC                  U5      RD                  UR>                  RH                  5      nUU-  nUnURC                  U5      RJ                  S:X  a  Un[        R                  " URC                  U5      R                  URC                  U5      R                  5      n[        RL                  " UU5      n[        R8                  " SSSSUR                  * UR                  * 5      n[        R                  " UU5      n[        R                  " U[        R
                  " SSSSUR                  UR                  5      5      nUR                  nUU-   nU
R:                  S:”  a   UR                  S:X  d;  UR                  S:X  d+  U
RN                  S:w  a:  U
RN                  U
RP                  * :X  a  UR                  U-   nUR                  U-   nOUR                  U-
  nUR                  U-
  n[        RR                  " UUUU5      n [        RT                  " U U5      n URW                  URC                  U5      RJ                  URC                  U5      RD                  UR                  UR                  4U RX                  U RZ                  U R\                  U R^                  445        US:”  a  [        R`                  " UU 5      nGM  U nGM     [c        U5      nU(       d‚  U[(        -  (       dr  [        Rd                  " UR                  5       SSS5      u  n!n[        RF                  " UR                  5       U!UR>                  RH                  5      nXÜ-  nU(       d  UnOUn[g        5       n"[i        U5      U"S	'   [k        U	5      U"S
'   UR>                  RH                  U"S'   UU"S'   UR>                  Rl                  U"S'   UR>                  Rn                  U"S'   UU"S'   UU"S'   SU"S'   U(       a�  [        Rp                  " [        Rr                  " [        Rt                  " U5      5      U[        Rv                  " 5       [        Rr                  " 5       [        Rx                  " 5       5      n#U#SS n#OSn#U Rz                  S:”  a  U Rz                  n$OUS-  n$U#U"S'   UU"S'   UU"S'   U$U"S'   UU"S'   UU"S'   [}        U5      U"S'   U R~                  U"S'   UU"S'   UU"S'   U R€                  RW                  U"5        g)z«
jm_trace_text_span(fz_context *ctx, PyObject *out, fz_text_span *span, int type, fz_matrix ctm, fz_colorspace *colorspace, const float *color, float alpha, size_t seqno)
Nr   r   rØ  rç  rè  r¨  r$  r´  rÜ  r
  rÑ  Úbidi_lvlÚbidi_dirr  r  r   rò  rK  rÝ  ro  rÊ  r^  Ú	linewidthÚ
spacewidthrÉ   r7  Úlayerrµ  rF  )ArC   r£   Úfz_text_spanÚ
FzTextSpanÚ	fz_matrixr}  rU  rÜ  rb  r”  Úfz_transform_vectorr   r¬  r­  re  rf  Úfz_normalize_vectorrí  rî  rA  rã  r>  rá  rE  râ  r;  rä  rr  r�  rD  rT  rÍ   r<   rG   r  rÚ  r
  r\  rd  r  rö  rú  rà  rp   r°  r²  r¯  r±  rö  r¶   r	  r:   rP  rÄ  r  r•  Úfz_convert_colorr.  r  rë  r”  rº  rq  rŽ  r	  )%r…  rI  rc  rõ  rò  ro  ró  rµ  Úout_fontrÿ   r�  r´  r3  Ú	space_advr0  r1  ÚascsizeÚdscsizeÚfflagsr  Úlast_advÚ	span_bboxr|  rF  rh  râ  Ú	char_origrÒ  r°  r¯  r²  r±  Ú	char_bboxrö  Ú	span_dictrâ  rº  s%                                        r*   r´  r´  Y  sz  € ð €HÜ�tœU×/Ñ/×0Ñ0Ð0Ð0Ü×Ò˜TÓ"€DÜ�sœEŸO™O×,Ñ,Ð,Ð,Ü
�.Š.˜#Ó
€CÜ˜TŸY™Y›[Ó)€Hô �/Š/˜$Ÿ(™(›* cÓ
*€CÜ
×
#Ò
#¤E×$7Ò$7¸¸1Ó$=¸sÓ
C€CÜ�IŠI�c—e‘e˜cŸe™e‘m c§e¡e¨c¯e©e¡mÑ3Ó4€Eä
×
#Ò
# CÓ
(€Cà€IÜ
˜DŸI™I›KÓ
(€CÜ
˜TŸY™Y›[Ó
)€CØ
ˆTƒzØˆØˆð ‰k˜S™YÑ'€GØ‰k˜S™YÑ'€GØ€FÜ×&Ò&¨¯	©	«Ó4€DØ
ˆdÔ)Ñ)Ñ)€FØ
Œe×%Ò% t§y¡y£{Ó3Ô6FÑFÑF€FØ
Œe×$Ò$ d§i¡i£kÓ2Ô5FÑFÑF€FØ
Œe×#Ò# T§Y¡Y£[Ó1´NÑBÑB€Fà€Hô —’“€IÜ
×
Ò
˜sŸu™u c§e¡e¨c¯e©e¨V°S·U±U¸A¸qÓ
A€CØ
‡u�u�ƒ{ØˆŒà€EÜ�D—O‘O×'Ñ'×(ˆØˆØ�:‰:�a‹=×Ñ Ó!Ü×(Ò(¨$¯)©)«+°t·z±zÀ!³}×7HÑ7HÈ$Ï/É/×J_ÑJ_Ó`ˆCØˆu‰ˆØˆØ�:‰:�a‹=×Ñ Ó"ØˆIÜ×'Ò'¨¯
©
°1«¯©¸¿¹ÀA»¿¹ÓIˆ	Ü×,Ò,¨Y¸Ó<ˆ	Ü×!Ò! ! Q¨¨1¨y¯{©{¨l¸Y¿[¹[¸LÓIˆÜ�_Š_˜R Ó%ˆÜ�_Š_˜R¤§¢°°1°a¸¸I¿K¹KÈÏÉÓ!UÓVˆØ�[‰[ˆØ�#‰Xˆà—‘˜“ §¡¨£
¨c¯e©e°r«kà—‘˜!“ §¡¨#¯%©%¨£à—‘˜wÑ&ˆBØ—‘˜wÑ&‰Bà—‘˜wÑ&ˆBØ—‘˜wÑ&ˆBÜ×&Ò& r¨2¨r°2Ó6ˆ	Ü×+Ò+¨I°rÓ:ˆ	Ø�‰à—J‘J˜q“M×%Ñ%Ø—J‘J˜q“M×%Ñ%à!Ÿ™Ø!Ÿ™ðð
 "Ÿ™Ø!Ÿ™Ø!Ÿ™Ø!Ÿ™ð	ðô	ð  ˆq‹5Ü×+Ò+¨I°yÓA‹Ià!‹Iñ] )ô^ �%‹L€EæØÔ-×-Ü×AÒAÀ4Ç9Á9Ã;ÐPRÐTUÐWXÓY‰KˆAˆxÜ×.Ò.Ø—I‘I“KØØ—O‘O×)Ñ)óˆIð
 ÑˆIÞØ$�	øà ˆIô “€IÜ(¨Ó-€IˆuÑÜ,¨XÓ6€IˆvÑØŸ/™/×/Ñ/€IˆwÑØ€IˆwÑØ ŸO™O×6Ñ6€IˆzÑØ!Ÿ_™_×7Ñ7€IˆzÑØ €IˆzÑØ!€Iˆ{ÑØ €Iˆ|ÑæÜ×$Ò$Ü×"Ò"¤E×$?Ò$?ÀÓ$LÓMØÜ×#Ò#Ó%Ü×"Ò"Ó$Ü×#Ò#Ó%óˆð �"�1ˆg‰àˆà
‡}�}�qÓØ—M‘M‰	à˜D‘Lˆ	ð €IˆwÑØ€IˆvÑØ!€IˆyÑØ'€Iˆ{ÑØ(€Iˆ|ÑØ€IˆvÑÜ(¨Ó3€IˆvÑØŸ.™.€IˆwÑØ€IˆwÑØ€IˆwÑà‡G�G‡N�N�IÕr,   c                óP  • U (       a{   [         R                  " [         R                  R                  5      n[         R                  " 5       n[         R                  " U UUR
                  S UR                  5       5      nUS S $ g! [         a    [        (       a
  [        5         e f = f)Nr   r/   )
r£   r.  r4  r”  Úll_fz_convert_colorrÍ   r  rl   r  r{   )rò  ro  rö  rn  râ  s        r*   Újm_lineart_colorrÏ  µY  sŽ   € æð	ô ×#Ò#¤U×%7Ñ%7×%AÑ%AÓBˆBÜ×$Ò$Ó&ˆBÜ×+Ò+ØØØ—M‘MØØ—K‘K“MóˆCð �2�AˆwˆØøô	 ó 	ß#Ò#¬Ô(8Øð	ús   ‰A5B Â!B%c                ó^   • [        U R                  [        5      (       a  / U l        / U l        g r.   )rC   r	  rµ   Úscissors©r…  rÖ  s     r*   Újm_lineart_drop_devicerÓ  ÑY  s!   € Ü�#—'‘'œ4× Ñ ØˆŒØ€C…Lr,   c	                óø  • U(       a  SOSn [        U[        R                  5      (       d   e[        R                  " U5      U l        [
        U l        [        XU5        U R                  c  g SU R                  [        '   X0R                  S'   XpR                  S'   [        XV5      U R                  S'   [        U R                  5      U R                  [        '   U R                  U R                  S'   U R                  U R                  S'   U R                   (       a  U R"                  U R                  S	'   [%        U 5        U =R                  S
-  sl        g ! [&         a    [(        (       a
  [+        5         e f = f)NTFr  r  r¶  r  rµ  r¼  r   r   )rC   r£   r¿  r}  rõ  Útrace_device_FILL_PATHÚ	path_typeÚjm_lineart_pathrƒ  rÚ  rÏ  rq  ÚpathrectÚdictkey_rectrµ  rŽ  r  r/	  rŒ  rl   r  r{   rš  s	            r*   Újm_lineart_fill_pathrÚ  ×Y  s  € ö  ‰t U€HðÜ˜3¤§¡×0Ñ0Ð0Ð0Ü—.’. #Ó&ˆŒÜ.ˆŒÜ˜ 4Ô(Ø�<‰<ÑØð &)ˆ�‰”lÑ#Ø$,�‰�jÑ!Ø(-�‰�nÑ%ô !1°*Ó Dˆ�‰�fÑÜ&5°c·l±lÓ&Cˆ�‰”lÑ#Ø!$§¡ˆ�‰�gÑà!$§¡ˆ�‰�gÑØ�9�9Ø%(§Y¡YˆC�L‰L˜'Ñ"Ü˜ÔØ�	Š	�Q‰Ž	øäó ßÒ¤NÔ$4Øðús   �A E Á.C)E Å!E9c           
     ób   •  [        XSX4XVU R                  5        U =R                  S-  sl        g r‘  )r(   rÉ   r¶  rµ  )r…  rÖ  r   rõ  rò  ro  ró  r’  s           r*   Újm_lineart_fill_textrÜ  þY  s(   € Øô �#˜Q °¸s¿y¹yÔIØ‡I‚I��N†Ir,   c           
     ód   • [        XSUS S SU R                  5        U =R                  S-  sl        g )Nr   r   ©r¶  rµ  )r…  r   rõ  s      r*   Újm_lineart_ignore_textrß  Z  s'   € ä�#˜Q  T¨4°°C·I±IÔ>Ø‡I‚I��N†Ir,   c                  ó@   ^ • \ rS rSrU 4S jrS rS rS rS rSr	U =r
$ )ÚWalkeriZ  c                ó®   >• [         TU ]  5         U R                  5         U R                  5         U R	                  5         U R                  5         Xl        g r.   )rÈ   r‘   Úuse_virtual_movetoÚuse_virtual_linetoÚuse_virtual_curvetoÚuse_virtual_closepathr…  )r)   r…  rÒ  s     €r*   r‘   ÚWalker.__init__Z  sC   ø€ Ü‰ÑÔØ×ÑÔ!Ø×ÑÔ!Ø× Ñ Ô"Ø×"Ñ"Ô$Ø�r,   c                ó  •  U R                   R                  S:X  a  [        U R                   5      (       a  g SU R                   l        U R                   R                  (       aØ  U R                   R                  U R                   R
                  :w  a�  S[        U R                   R                  5      [        U R                   R
                  5      4nU R                   R                  [           R                  U5        U R                   R
                  U R                   l        SU R                   R                  S'   OSU R                   R                  S'   SU R                   l        g ! [         a    [        (       a
  [        5         e f = f)Nr   r   rT  Fr´  T)r…  r­  r±  ÚhavemoveÚ	lastpointÚ
firstpointrP  rƒ  r†  rp   rl   r  r{   )r)   rÖ  rH   s      r*   Ú	closepathÚWalker.closepathZ  s  € ð	Ø�x‰x×!Ñ! QÓ&Ü §¡×)Ñ)àØ!"ˆD�H‰HÔà�x‰x× × Ø—8‘8×%Ñ%¨¯©×)<Ñ)<Ó<ØÔ!1°$·(±(×2DÑ2DÓ!EÜ!1°$·(±(×2EÑ2EÓ!FðH�Dà—H‘H×%Ñ%¤mÑ4×;Ñ;¸DÔAØ)-¯©×)<Ñ)<�D—H‘HÔ&Ø16�—‘×!Ñ! +Ò.ð 37�—‘×!Ñ! ;Ñ/ð !"ˆD�H‰HÕøäó 	ß#Ò#¬Ô(8Øð	ús   ‚4E& ·D.E& Å&!Fc                óB  •  SU R                   l        [        R                  " X#5      n[        R                  " XE5      n	[        R                  " Xg5      n
[        R                  " X€R                   R
                  5      n[        R                  " X�R                   R
                  5      n	[        R                  " X R                   R
                  5      n
[        R                  " U R                   R                  U5      U R                   l        [        R                  " U R                   R                  U	5      U R                   l        [        R                  " U R                   R                  U
5      U R                   l        S[        U R                   R                  5      [        U5      [        U	5      [        U
5      4nX R                   l	        U R                   R                  [           R                  U5        g ! [         a    [        (       a
  [        5         e f = f)Nr   rö  )r…  r­  r£   r   rd  rõ  Úfz_include_point_in_rectrØ  rP  rê  rƒ  r†  rp   rl   r  r{   )r)   rÖ  r¯  r±  Úx2Úy2Úx3Úy3rF  rG  r¸  rÇ  s               r*   ÚcurvetoÚWalker.curveto8Z  ss  € ð	Ø!"ˆD�H‰HÔÜ×$Ò$ RÓ,ˆBÜ×$Ò$ RÓ,ˆBÜ×$Ò$ RÓ,ˆBÜ×)Ò)¨"¯h©h¯l©lÓ;ˆBÜ×)Ò)¨"¯h©h¯l©lÓ;ˆBÜ×)Ò)¨"¯h©h¯l©lÓ;ˆBÜ %× >Ò >¸t¿x¹x×?PÑ?PÐRTÓ UˆD�H‰HÔÜ %× >Ò >¸t¿x¹x×?PÑ?PÐRTÓ UˆD�H‰HÔÜ %× >Ò >¸t¿x¹x×?PÑ?PÐRTÓ UˆD�H‰HÔð Ü$ T§X¡X×%7Ñ%7Ó8Ü$ RÓ(Ü$ RÓ(Ü$ RÓ(ðˆEð "$�H‰HÔØ�H‰H×Ñœ}Ñ-×4Ñ4°eÕ<øÜó 	ß#Ò#¬Ô(8Øð	ús   ‚G:G= Ç=!Hc                óî  •  [         R                  " [         R                  " X#5      U R                  R                  5      n[         R
                  " U R                  R                  U5      U R                  l        S[        U R                  R                  5      [        U5      4nX@R                  l        U R                  R                  [           nUR                  U5        U R                  =R                  S-  sl        U R                  R                  S:X  a5  U R                  R                  [        :w  a  [        U R                  5        g g g ! [          a    ["        (       a
  [%        5         e f = f)NrT  r   rr  )r£   rd  r   r…  rõ  rï  rØ  rP  rê  rƒ  r†  rp   r­  rÖ  rÕ  r®  rl   r  r{   )r)   rÖ  re  rf  rF  rÇ  rG   s          r*   ÚlinetoÚWalker.linetoSZ  s  € ð	Ü×)Ò)¬5×+>Ò+>¸qÓ+DÀdÇhÁhÇlÁlÓSˆBÜ %× >Ò >ÀÇÁ×@QÑ@QÐSUÓ VˆD�H‰HÔàÜ$ d§h¡h×&8Ñ&8Ó9Ü$ RÓ(ðˆEð
 "$�H‰HÔØ—H‘H×%Ñ%¤}Ñ5ˆEØ�L‰L˜%Ô Ø�H‰H×Ò !Ñ#ÕØ�x‰x×!Ñ! QÓ&¨4¯8©8×+=Ñ+=ÔAWÓ+Wä˜TŸX™XÕ&ð ,XÐ&øô ó 	ß#Ò#¬Ô(8Øð	ús   ‚EE Å!E4c                ó  •   [        R                  " [        R                  " X#5      U R                  R                  5      U R                  l        [        R                  " U R                  R                  5      (       a   [        R                  " U R                  R                  R                   U R                  R                  R"                  U R                  R                  R                   U R                  R                  R"                  5      U R                  l        U R                  R                  U R                  l        SU R                  l        SU R                  l        g ! [*         a    [,        (       a
  [/        5         e f = fr‘  )rC   r…  rƒ  r:   r(   rG   rÉ   r<   r£   rd  r   rõ  rê  rç  rØ  rú  re  rf  rë  ré  r­  rl   r  r{   )r)   rÖ  re  rf  rJ   rK   s         r*   ÚmovetoÚWalker.movetohZ  s  € Øð	ä!&×!9Ò!9Ü×'Ò'¨Ó-Ø—H‘H—L‘Ló"ˆD�H‰HÔô ×(Ò(¨$¯(©(×*;Ñ*;×<Ñ<Ü$)×$6Ò$6ØŸ™×*Ñ*×,Ñ,ØŸ™×*Ñ*×,Ñ,ØŸ™×*Ñ*×,Ñ,ØŸ™×*Ñ*×,Ñ,ó	%�—‘Ô!ð #'§(¡(×"4Ñ"4ˆD�H‰HÔØ !ˆD�H‰HÔØ!"ˆD�H‰HÕøÜó 	ß#Ò#¬Ô(8Øð	ús   ƒE$E( Å(!F	r„  )r2   r3   r4   r5   r‘   rì  rô  r÷  rú  r6   rÜ  r  s   @r*   rá  rá  Z  s!   ø† õòò8ò6÷*ð r,   rá  c                ó&  •  [         R                  " [         R                  R                  5      U l        SU l        [         R
                  " SS5      U l        [        5       U l        / U R                  [        '   [        U 5      n[         R                  " [         R                  " [         R                  " U5      5      X3R                  5        U R                  [           (       d  SU l        gg! [         a    [         (       a
  [#        5         e f = f)a  
Create the "items" list of the path dictionary
* either create or empty the path dictionary
* reset the end point of the path
* reset count of consecutive lines
* invoke fz_walk_path(), which create the single items
* if no items detected, empty path dict again
r   N)r£   rr  rs  rØ  r­  rc  rê  r:   rƒ  r†  rá  Úfz_walk_pathÚFzPathÚll_fz_keep_pathrÍ   rl   r  r{   )r…  rÖ  r
   Úwalkers       r*   r×  r×  …Z  s½   € ðÜ—|’|¤U§\¡\×%@Ñ%@ÓAˆŒØˆŒÜŸš q¨!Ó,ˆŒÜ“vˆŒØ')ˆ�‰”mÑ$ô ˜“ˆô 	×ÒœEŸLšL¬×)>Ò)>¸tÓ)DÓEÀv×O`ÑO`Ôaà�|‰|œ]×+ØˆC�Lð ,øäó ßÒ¤NÔ$4Øðús   ‚C+C/ Ã/!Dc	                ó¬  •  [        U[        R                  5      (       d   e[        R                  " [        UR                  UR                  -  UR                  UR                  -  -
  5      5      U l
        [        R                  " U5      U l        [        U l        [        XU5        U R                   c  g SU R                   ["        '   XpR                   S'   [%        XV5      U R                   S'   U R                  UR&                  -  U R                   [(        '   UR*                  UR,                  UR.                  4U R                   S'   [1        UR2                  5      U R                   S'   SU R                   ;  a  SU R                   S'   UR4                  (       aã  [        R6                  " S5      n	[        R8                  " U	S	5        [;        UR4                  5       HT  n
[        R<                  " UR>                  U
5      n[        R8                  " U	[A        U R                  U-  5       S
35        MV     [        R8                  " U	S[A        U R                  URB                  -  5       35        X�R                   S'   OSU R                   S'   [E        U RF                  5      U R                   [H        '   U RJ                  U R                   S'   U RL                  U R                   S'   U RN                  (       a  U RP                  U R                   S'   [S        U 5        U =RL                  S-  sl&        g ! [T         a    [V        (       a
  [Y        5         e f = f)NrŸ  rµ  ro  r²  r³  r´  FrÓ  z[ r´   z] r‹  r>  r¼  rµ  r   r   )-rC   r£   r¿  r¬  r­  r&  r!   rD  r  rö  Ú
pathfactorr}  rõ  Útrace_device_STROKE_PATHrÖ  r×  rƒ  rÚ  rÏ  rº  r  Ú	start_capÚdash_capÚend_caprœ  ÚlinejoinÚdash_lenrö	  rŸ  rT  Úfloats_getitemÚ	dash_listr·   Ú
dash_phaserq  rØ  rÙ  rŽ  rµ  r  r/	  rŒ  rl   r  r{   )r…  rÖ  r
   r•  rõ  rò  ro  ró  r’  r•  rh  r¹   s               r*   Újm_lineart_stroke_pathr  ©Z  sn  € ð.Ü˜3¤§¡×0Ñ0Ð0Ð0ÜŸš¤3 s§u¡u¨s¯u©u¡}°s·u±u¸s¿u¹u±}Ñ'DÓ#EÓFˆŒÜ—.’. #Ó&ˆŒÜ0ˆŒä˜ 4Ô(Ø�<‰<ÑØØ&)ˆ�‰”lÑ#Ø*/�‰Ð&Ñ'Ü!1°:Ó!Eˆ�‰�gÑØ'*§~¡~¸×8HÑ8HÑ'Hˆ�‰”mÑ$à× Ñ Ø—‘Ø—‘ð$ˆ�‰�iÑ ô
 %*¨&¯/©/Ó$:ˆ�‰�jÑ!Ø˜cŸl™lÓ*à(-ˆC�L‰L˜Ñ%ð �?�?Ü×&Ò&¨Ó,ˆDÜ×"Ò" D¨$Ô/Ü˜FŸO™OÖ,�ô ×,Ò,¨f×.>Ñ.>ÀÓB�Ü×&Ò&¨´¸3¿>¹>ÈEÑ;QÓ1RÐ0SÐSTÐ.UÖVñ	 -ô
 ×"Ò" D¨B¬y¸¿¹È&×J[ÑJ[Ñ9[Ó/\Ð.]Ð*^Ô_Ø&*�L‰L˜(Ò#à&,ˆC�L‰L˜(Ñ#Ü&5°c·l±lÓ&Cˆ�‰”lÑ#Ø #§¡ˆ�‰�WÑØ!$§¡ˆ�‰�gÑØ�9�9Ø%(§Y¡YˆC�L‰L˜'Ñ"Ü˜ÔØ�	Š	�Q‰Ž	øäó ßÒ¤NÔ$4Øðús   ‚B5L2 Â8I9L2 Ì2!Mc                ó"  • U R                   (       d  g [        R                  " U5      U l        [        U l        [        XU5        U R                  c  g SU R                  [        '   [        U5      U R                  S'   SU R                  ;  a  SU R                  S'   [        [        U 5      5      U R                  S'   U R                  U R                  S'   U R                  U R                  S'   [        U 5        U =R                  S-  sl        g )	Nr  r  r´  Fr  r   r¼  r   )r  r£   r}  rõ  Útrace_device_CLIP_PATHrÖ  r×  rƒ  rÚ  ré   rq  Úcompute_scissorr/	  rŽ  rŒ  )r…  rÖ  r
   r  rõ  r  s         r*   Újm_lineart_clip_pathr  ÜZ  sÅ   € Ø�9�9ØÜ�nŠn˜SÓ!€C„GÜ*€C„MÜ�C˜dÔ#Ø
‡|�|ÑØØ"(€C‡L�L”,ÑÜ $ X£€C‡L�L�*ÑØ˜#Ÿ,™,Ó&à$)ˆ�‰�[Ñ!ä-¬o¸cÓ.BÓC€C‡L�L�ÑØŸI™I€C‡L�L�ÑØŸN™N€C‡L�L�ÑÜ�CÔØ‡I‚I��N†Ir,   c                ó  • U R                   (       d  g [        R                  " U5      U l        [        U l        [        XU5        U R                  c  g SU R                  S'   S U R                  S'   SU R                  ;  a  SU R                  S'   [        [        U 5      5      U R                  S'   U R                  U R                  S'   U R                  U R                  S'   [        U 5        U =R                  S	-  sl
        g )
Nr  rÚ  r  r´  Fr  r   r¼  r   )r  r£   r}  rõ  Útrace_device_CLIP_STROKE_PATHrÖ  r×  rƒ  rq  r  r/	  rŽ  rŒ  )r…  rÖ  r
   r•  rõ  r  s         r*   Újm_lineart_clip_stroke_pathr  ñZ  sÁ   € Ø�9�9ØÜ�nŠn˜SÓ!€C„GÜ1€C„MÜ�C˜dÔ#Ø
‡|�|ÑØØ#)€C‡L�L�Ñ Ø#€C‡L�L�ÑØ˜#Ÿ,™,Ó&à$)ˆ�‰�[Ñ!Ü-¬o¸cÓ.BÓC€C‡L�L�ÑØŸI™I€C‡L�L�ÑØŸN™N€C‡L�L�ÑÜ�CÔØ‡I‚I��N†Ir,   c                óh   • U R                   (       d  g [        U 5        U =R                  S-  sl        g r™  ©r  r  r/	  )r…  rÖ  r   r•  rõ  r  s         r*   Újm_lineart_clip_stroke_textr  [  ó!   € Ø�9�9ØÜ�CÔØ‡I‚I��N†Ir,   c                óh   • U R                   (       d  g [        U 5        U =R                  S-  sl        g r™  r  )r…  rÖ  r   rõ  r  s        r*   Újm_lineart_clip_textr  [  r  r,   c                óh   • U R                   (       d  g [        U 5        U =R                  S-  sl        g r™  r  )r…  rÖ  r´  rõ  r  s        r*   Újm_lineart_clip_image_maskr  [  r  r,   c                óÆ   • U R                   (       a  U R                  (       d  g [        U R                  5      nUS:  a  g U R                  S	 U =R                  S-  sl        g )Nr   r¨  )r  rÑ  r<   r/	  )r…  rÖ  r·  s      r*   Újm_lineart_pop_clipr  [  sC   € Ø�9�9˜CŸLŸLØÜˆs�|‰|Ó€DØˆaƒxØØ�‰�RÐØ‡I‚I��N†Ir,   c                ó.   • U(       a  X l         g SU l         g ©Nra   ©rŽ  )r…  rÖ  r   s      r*   Újm_lineart_begin_layerr!  $[  s   € ÞØ�àˆ�r,   c                ó   • SU l         g r  r   rÒ  s     r*   Újm_lineart_end_layerr#  +[  s	   € Ø€C…Nr,   c           	     ó  • U R                   (       d  g S[        U5      [        U5      [        U5      [        R                  " U5      UU R
                  U R                  S.U l        [        U 5        U =R
                  S-  sl        g )Nr?  )rÉ   rý   ÚisolatedÚknockoutr�  r^  r   r¼  r   )	r  rq  ré   r£   Úfz_blendmode_namer/	  rŽ  rƒ  rŒ  )r…  rÖ  r7  rö  r%  r&  r�  ró  s           r*   Újm_lineart_begin_groupr(  /[  sd   € à�9�9ØàÜ# DÓ)Ü˜X›Ü˜X›Ü×0Ò0°Ó;ØØ—Y‘YØ—^‘^ñ	€C„Lô �CÔØ‡I‚I��N†Ir,   c                óR   • U R                   (       d  g U =R                  S-  sl        g r™  )r  r/	  rÒ  s     r*   Újm_lineart_end_groupr*  A[  s   € à�9�9ØØ‡I‚I��N†Ir,   c	           
     ó`   • [        XSXEXgU R                  5        U =R                  S-  sl        g r™  rÞ  )	r…  rÖ  r   r•  rõ  rò  ro  ró  r’  s	            r*   Újm_lineart_stroke_textr,  H[  s#   € Ü�#˜Q °¸s¿y¹yÔIØ‡I‚I��N†Ir,   c	                ó<   • UR                   U l         [        X5        g r.   )rº  Újm_increase_seqno)	r…  rÖ  r
   r•  rð  rò  ro  ró  r’  s	            r*   Újm_dev_linewidthr/  M[  s   € Ø×$Ñ$€C„MÜ�sÕ r,   c                óx   •  U =R                   S-  sl         g ! [         a    [        (       a
  [        5         e f = fr™  )rµ  rl   r  r{   )r…  rÖ  Úvargss      r*   r.  r.  R[  s1   € ðØ�	Š	�Q‰Ž	øÜó ßÒ¤NÔ$4Øðús   ‚ ˜!9c                óV   • [        U 5      n [        U5      n[        [        X5      5      $ )aM  Compute matrix which maps line from p1 to p2 to the x-axis, such that it
maintains its length and p1 * matrix = Point(0, 0).

Args:
    p1, p2: point_like
Returns:
    Matrix which maps p1 to Point(0, 0) and p2 to a point on the x axis at
    the same distance to Point(0,0). Will always combine a rotation and a
    transformation.
)r#  r€  rn  )rF  rG  s     r*   rþ  rþ  Z[  s&   € ô 
ˆr‹€BÜ	ˆr‹€BÜ”/ "Ó)Ó*Ð*r,   c                  ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚJM_image_reporter_Filterij[  c                óB   >• [         TU ]  5         U R                  5         g r.   r  r  s    €r*   r‘   Ú!JM_image_reporter_Filter.__init__k[  s   ø€ Ü‰ÑÔØ×%Ñ%Õ'r,   c                ó    • [        U[        R                  5      (       d   e[        U [        R                  " U5      X45        [
        (       a  gg rŒ   )rC   r£   r¿  rô  r}  r¢   )r)   rÖ  rõ  r   r´  s        r*   r	  Ú%JM_image_reporter_Filter.image_filtero[  s=   € Ü˜#œuŸ™×/Ñ/Ð/Ð/Ü˜œeŸnšn¨SÓ1°4Ô?ßŠ;ð ð r,   r/   r  r  s   @r*   r4  r4  j[  s   ø† õ(÷ð r,   r4  c                  óP   ^ • \ rS rSrU 4S jr\r\r\	r
\r\r\r\r\r\r\rSrU =r$ )r™  ix[  c                óˆ  >• [         TU ]  5         Xl        X l        SU l        U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         g r  )rÈ   r‘   r“  rù  rŽ  Úuse_virtual_fill_pathÚuse_virtual_stroke_pathÚuse_virtual_fill_textÚuse_virtual_stroke_textÚuse_virtual_ignore_textÚuse_virtual_fill_shadeÚuse_virtual_fill_imageÚuse_virtual_fill_image_maskÚuse_virtual_begin_layerÚuse_virtual_end_layer)r)   r“  rù  rÒ  s      €r*   r‘   Ú"JM_new_bbox_device_Device.__init__y[  s—   ø€ Ü‰ÑÔØŒØŒØˆŒØ×"Ñ"Ô$Ø×$Ñ$Ô&Ø×"Ñ"Ô$Ø×$Ñ$Ô&Ø×$Ñ$Ô&Ø×#Ñ#Ô%Ø×#Ñ#Ô%Ø×(Ñ(Ô*à×$Ñ$Ô&Ø×"Ñ"Õ$r,   )rŽ  rù  r“  )r2   r3   r4   r5   r‘   r!  Úbegin_layerr#  Ú	end_layerr›  Ú	fill_pathr«  Ústroke_pathr§  Ú	fill_textr£  Ústroke_textr©  Úignore_textrŸ  Ú
fill_shader“  Ú
fill_imager–  Úfill_image_maskr6   rÜ  r  s   @r*   r™  r™  x[  s<   ø† õ%ð" )€KØ$€Ià!€IØ%€KØ!€IØ%€KØ%€KØ#€JØ#€JØ-†Or,   r™  c                  ó@   ^ • \ rS rSrU 4S jrS rS rS rS rSr	U =r
$ )r¡  i—[  c                ó®   >• [         TU ]  5         Xl        U R                  5         U R	                  5         U R                  5         U R                  5         g r.   )rÈ   r‘   rk  Úuse_virtual_writeÚuse_virtual_seekÚuse_virtual_tellÚuse_virtual_truncate)r)   rk  rÒ  s     €r*   r‘   Ú%JM_new_output_fileptr_Output.__init__˜[  sC   ø€ Ü‰ÑÔØŒØ×ÑÔ Ø×ÑÔØ×ÑÔØ×!Ñ!Õ#r,   c                ó8   • U R                   R                  X#5      $ r.   )rk  r
  )r)   rÖ  rê  Úwhences       r*   r
  Ú!JM_new_output_fileptr_Output.seek [  s   € Ø�x‰x�}‰}˜fÓ-Ð-r,   c                ó:   • U R                   R                  5       nU$ r.   )rk  Útell)r)   rÖ  rL   s      r*   r[  Ú!JM_new_output_fileptr_Output.tell£[  s   € Ø�h‰h�m‰m‹oˆØˆ
r,   c                ó6   • U R                   R                  5       $ r.   )rk  Útruncate)r)   rÖ  s     r*   r^  Ú%JM_new_output_fileptr_Output.truncate§[  s   € Ø�x‰x× Ñ Ó"Ð"r,   c                ód   • [         R                  " X#5      nU R                  R                  U5      $ r.   )r£   Úraw_to_python_bytesrk  r   )r)   rÖ  Údata_rawÚdata_lengthrÉ  s        r*   r   Ú"JM_new_output_fileptr_Output.writeª[  s%   € Ü×(Ò(¨Ó?ˆØ�x‰x�~‰~˜dÓ#Ð#r,   r¢  )r2   r3   r4   r5   r‘   r
  r[  r^  r   r6   rÜ  r  s   @r*   r¡  r¡  —[  s!   ø† õ$ò.òò#÷$ð $r,   r¡  c                óP  • U R                   c  [        5       U l         [        U R                   5      nUS:”  a>  U R                   US-
     n[        U5      n[        R
                  " X0R                  5      nOU R                  nU R                   R                  [        U5      5        U$ )zg
Every scissor of a clip is a sub rectangle of the preceding clip scissor
if the clip level is larger.
r   r   )	rÑ  rµ   r<   r  r£   r†  rØ  rp   rq  )r…  Únum_scissorsÚlast_scissorr  s       r*   r  r  ¯[  s‚   € ð
 ‡|�|ÑÜ“vˆŒÜ�s—|‘|Ó$€LØ�aÓØ—|‘| L°¡NÑ3ˆÜ! ,Ó/ˆÜ×)Ò)¨'·<±<Ó@‰à—,‘,ˆØ‡L�L×Ñœ¨Ó0Ô1Ø€Nr,   c                  ót   ^ • \ rS rSrSrU 4S jr\r\r	\
r\r\r\r\r\r\r\r\r\r\r\r\r\r \!r"\#r$Sr%U =r&$ )r   iÁ[  z7
LINEART device for Python method Page.get_cdrawings()
c                ó2  >• [         TU ]  5         U R                  5         U R                  5         U R	                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                    U R                    U R                    U R                  5         U R                  5         U R                  5         U R                  5         U R!                  5         U R#                  5         U R%                  5         U R'                  5         Xl        SU l        SU l        X l        X0l        S U l        SU l        S U l        SU l        [:        R<                  " 5       U l        [:        R<                  " 5       U l         [:        R<                  " 5       U l!        [:        RD                  " 5       U l#        [:        RD                  " 5       U l$        SU l%        [:        RL                  " 5       U l        SU l'        SU l(        SU l)        g ©Nr   ra   )*rÈ   r‘   r;  r<  Úuse_virtual_clip_pathÚuse_virtual_clip_image_maskÚuse_virtual_clip_stroke_pathÚuse_virtual_clip_stroke_textÚuse_virtual_clip_textr=  r>  r?  r@  rA  rB  Úuse_virtual_pop_clipÚuse_virtual_begin_groupÚuse_virtual_end_grouprC  rD  r	  rµ  r/	  r  r  rÑ  rŽ  rØ  rº  r£   r}  r  rõ  r|  rc  rê  rë  ré  rr  r  r­  rÖ  )r)   r	  r  r  rÒ  s       €r*   r‘   Ú%JM_new_lineart_device_Device.__init__Æ[  s…  ø€ ä‰ÑÔð 	×"Ñ"Ô$Ø×$Ñ$Ô&Ø×"Ñ"Ô$Ø×(Ñ(Ô*Ø×)Ñ)Ô+Ø×)Ñ)Ô+Ø×"Ñ"Ô$à×"Ò"Ø×$Ò$Ø×$Ò$à×#Ñ#Ô%Ø×#Ñ#Ô%Ø×(Ñ(Ô*à×!Ñ!Ô#à×$Ñ$Ô&Ø×"Ñ"Ô$à×$Ñ$Ô&Ø×"Ñ"Ô$àŒØˆŒ
ØˆŒ
ØŒ
ØŒàˆŒØˆŒØˆŒàˆŒÜ—>’>Ó#ˆŒÜ—>’>Ó#ˆŒÜ—>’>Ó#ˆŒÜŸš›ˆŒÜŸ-š-›/ˆŒØˆŒÜŸš›ˆŒØˆŒØˆŒØˆ�r,   )r  rõ  r/	  rë  ré  rê  rŽ  r­  rº  r  r	  rÖ  r  rØ  r  r|  rÑ  rµ  )'r2   r3   r4   r5   r*  r‘   rÚ  rH  r  rI  r  Úclip_image_maskr  Ú	clip_pathr  Úclip_stroke_pathr  Ú	clip_textr  Úclip_stroke_textr.  rJ  rK  rL  rM  rN  rO  r  Úpop_clipr(  Úbegin_groupr*  Ú	end_groupr!  rF  r#  rG  r6   rÜ  r  s   @r*   r   r   Á[  sl   ø† ñõ1ðj /€IØ0€KØ4€OØ.€IØ5ÐØ.€IØ5Ðà+€IØ+€KØ+€Kà+€JØ+€JØ+€Oà-€Hà0€KØ.€Ià0€KØ.†Ir,   r   c                  óT   ^ • \ rS rSrSrU 4S jr\r\r	\
r\r\r\r\r\r\r\rSrU =r$ )r   i\  z:
Trace TEXT device for Python method Page.get_texttrace()
c                ó:  >• [         TU ]  5         U R                  5         U R                  5         U R	                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         U R                  5         Xl        SU l        SU l        SU l        S U l        SU l        [#        5       U l        ['        5       U l        SU l        [,        R.                  " 5       U l        [,        R.                  " 5       U l        [,        R.                  " 5       U l        [,        R6                  " 5       U l        [,        R:                  " 5       U l        SU l        SU l         SU l!        SU l"        g rj  )#rÈ   r‘   r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  r	  rµ  r/	  r  r  r:   rƒ  rµ   rÑ  rº  r£   r}  r  rõ  r|  rc  rê  rr  rØ  r  r­  rÖ  rŽ  )r)   r	  rÒ  s     €r*   r‘   Ú JM_new_texttrace_device.__init__\  s'  ø€ Ü‰ÑÔØ×"Ñ"Ô$Ø×$Ñ$Ô&Ø×"Ñ"Ô$Ø×$Ñ$Ô&Ø×$Ñ$Ô&Ø×#Ñ#Ô%Ø×#Ñ#Ô%Ø×(Ñ(Ô*à×$Ñ$Ô&Ø×"Ñ"Ô$àŒàˆŒ
ØˆŒ
ØˆŒ
ØˆŒàˆŒ
ä›ˆŒÜ›ˆŒØˆŒÜ—>’>Ó#ˆŒÜ—>’>Ó#ˆŒÜ—>’>Ó#ˆŒÜŸš›ˆŒÜŸš›ˆŒØˆŒØˆŒØˆŒØˆ�r,   )r  rõ  r/	  rê  rŽ  r­  rº  r  r	  rÖ  rƒ  r  rØ  r  r|  rÑ  rµ  )r2   r3   r4   r5   r*  r‘   r.  rH  r/  rI  rÜ  rJ  r,  rK  rß  rL  rM  rN  rO  r!  rF  r#  rG  r6   rÜ  r  s   @r*   r   r   \  sB   ø† ñõ"ðH "€IØ"€KØ$€IØ(€KØ(€KØ"€JØ"€JØ'€Oà(€KØ$†Ir,   r   c                ó   • U R                  5       nSS KnUR                  S5      nUR                  SU S35      nUR                  S5      nSnSU S3nUS	:X  a  Un	U	$ US
:X  a  Un	U	$ US:X  a  Un	U	$ US:X  a  Un	U	$ Un	U	$ )Nr   a^  
            <!DOCTYPE html>
            <html>
            <head>
            <style>
            body{background-color:gray}
            div{position:relative;background-color:white;margin:1em auto}
            p{position:absolute;margin:0}
            img{position:absolute}
            </style>
            </head>
            <body>
            z?
            <?xml version="1.0"?>
            <document name="z">
            aÏ  
            <?xml version="1.0"?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <style>
            body{background-color:gray}
            div{background-color:white;margin:1em;padding:1em}
            p{white-space:pre-wrap}
            </style>
            </head>
            <body>
            ra   z{"document": "z", "pages": [
r·  r`  r   Úxhtml)ré  ÚtextwrapÚdedent)
rh  rk   rÃ  r�  r·  r   r€  r   r`  r%  s
             r*   ÚConversionHeaderrƒ  J\  sÏ   € Ø	�‰‹	€AÛØ�?‰?ð ó €Dð �/‰/ð à%˜Jð 'ðó €Cð
 �O‰Oð ó €Eð €DØ˜X˜J oÐ6€DØˆFƒ{Øˆð €Hð 
ˆf‹Øˆð €Hð 
ˆe‹Øˆð €Hð 
ˆg‹Øˆð €Hð ˆà€Hr,   c                óŽ   • U R                  5       nSnSnSnSnUnUS:X  a  UnU$ US:X  a  UnU$ US:X  a  UnU$ US:X  a  UnU$ UnU$ )	Nra   z]
}z</body>
</html>
z</document>
r·  r`  r   r€  )ré  )rh  rÃ  r   r`  r·  r   r€  r%  s           r*   ÚConversionTrailerr…  ~\  s„   € Ø	�‰‹	€AØ€DØ€DØ€DØ
€CØ€EØˆFƒ{Øˆð €Hð 
ˆf‹Øˆð €Hð 
ˆe‹Øˆð €Hð 
ˆg‹Øˆð €Hð ˆà€Hr,   c                ó®   • [        U 5        U R                  R                  (       d  [        S5      eU R                  nUS:w  a  U R                  S5        U$ )zƒPrepare for annotation insertion on the page.

Returns:
    Old page rotation value. Temporarily sets rotation to 0 when required.
r}  r   )rp  rí   r  rÄ   rx  rï  )r×   rý  s     r*   rû  rû  “\  sI   € ô �ÔØ�;‰;××Ü˜Ó%Ð%Ø—=‘=€LØ�qÓØ×Ñ˜!ÔØÐr,   c                ó¨   • [        U [        5      (       d   e[        U[        5      (       d   eXl        XR                  [        U5      '   SUl        g)zmClean up after annotation insertion.

Set ownership flag and store annotation in page annotation dictionary.
TN)rC   rÓ   rã   rí   rZ  r[  rö   )r×   rà   s     r*   rü  rü  ¢\  sH   € ô �tœT×"Ñ"Ð"Ð"Ü�uœe×$Ñ$Ð$Ð$Ø„LØ"'×Ñ”R˜“YÑØ€E…Mr,   c                óN  • [        U [        5      (       d   eU S:X  d  U S:X  d  U S:X  a  [        S5      $ U [        S5      :X  d  U [        S5      :X  d  U [        S5      :X  a  [        S5      $ U [        S5      :¼  a)  U [        S	5      ::  a  U [        S5      -
  [        S
5      -   $ U $ )Nrà  i(   i)   r´   Úr&   Ú	rÄ  ÚZr!   )rC   r9   r  r6  s    r*   ÚcanonrŒ  ¯\  sŒ   € Ü�aœ×ÑÐÐð 	ˆDƒy�A˜“K 1¨£;Ü�3‹xˆØŒC�‹Iƒ~˜œc $›i›¨1´°D³	«>Ü�3‹xˆØŒC�‹Hƒ}˜œc #›h›Ø”3�s“8‰|œc #›hÑ&Ð&Ø€Hr,   c                ó|   • [        U [        5      (       d   e[        R                  " U 5      u  p[	        U5      nX4$ r.   )rC   rè  r£   r  rŒ  )rŸ  rJ   rö  s      r*   ÚchartocanonrŽ  ¼\  s7   € Ü�aœ×ÑÐÐÜ×Ò˜qÓ!�D€AÜˆa‹€AØˆ4€Kr,   c                ó,  • [         R                  " U [        S5      5      n[         R                  " [         R                  " U[        S5      5      [        S5      5      (       a0  [	        [         R                  " U[        S5      5      U5      (       d  g[         R                  " U [        S5      5      nUR
                  (       d   g[         R                  " U5      (       a  [	        XC5      $ [        [         R                  " US5      UU5      (       d  gg)NrÄ  rJ
  rg  rÅ  r   rÃ  r   )	r£   r  r  rÖ  Ústring_in_names_listrÍ   r€  Údest_is_valid_pager­  )r²  rt  Úpage_object_numsÚ
names_listr³  s        r*   Údest_is_validr”  Ã\  sá   € Ü×Ò˜Aœx¨›}Ó-€Aä×ÒÜ×"Ò" A¤x°£}Ó5Ü˜Ó ÷ñ ô )Ü×"Ò" A¤x°£}Ó5Ø÷ñ ð
 ä×Ò˜Aœx¨Ó/Ó0€AØ�<�<Øð ô 
×	Ò	˜a×	 Ñ	 Ü# QÓ3Ð3ÜÜ×Ò  AÓ&ØØ÷ñ ð
 Ør,   c                óv   • [         R                  " U 5      nUS:X  a  g[        U5       H  nX   U:X  d  M    g   gr‘  )r£   r  rT  )r  r’  ri  Únumrh  s        r*   r‘  r‘  ß\  s>   € Ü
×
Ò
˜3Ó
€Cà
ˆaƒxØÜ�9ÖˆØÑ #Õ%Ùñ ð r,   c                óœ   • [        U [        5      (       d   e[        [        U 5      5       H  n[	        XS  U5      nUc  M  X2-  nX#4s  $    g)Nrô
  )rC   rè  rT  r<   Úmatch_string)rŸ  rw  rh  rÈ  s       r*   rÔ  rÔ  ê\  sO   € Ü�aœ×ÑÐÐÜ”3�q“6Ž]ˆÜ˜1˜R˜5 &Ó)ˆØ‹?Ø‰HˆCØ�6ŠMñ	 ð
 r,   c                 ó–  • SSK n [        [        U R                  S-  5      5      R	                  SS5      n[        [        U R                  S-  5      S-  5      R	                  SS5      nU SU S3nU R
                  " SU R                  " 5       5      nU R                  S:”  a
  US	U-   -  nU$ U R                  S:  a
  US
U-   -  nU$  U$ )z
"Now" timestamp in PDF Format
r   Ni  r   r   r’  rî   zD:%Y%m%d%H%M%Sr©  r  )Útimerè  r&  ÚaltzoneÚrjustÚstrftimeÚ	localtime)rš  r!   r  ÚtzÚtstamps        r*   r¸  r¸  ô\  sÍ   € ó ÜŒC�—‘ Ñ$Ó%Ó&×,Ñ,¨Q°Ó4€AÜŒS�—‘ Ñ#Ó$ rÑ)Ó+×1Ñ1°!°SÓ9€AØˆ3ˆa�ˆs�!ˆ€BØ�]Š]Ð+¨T¯^ª^Ó-=Ó>€FØ‡|�|�aÓØ�#˜‘(Ñˆð
 €Mð	 
�‰˜Ó	Ø�#˜‘(Ñˆð €Mð 	Ø€Mr,   c                  ó   • \ rS rSrSrS rSrg)ÚElementPositioni]  zDConvert a dictionary with element position information to an object.c                ó   • g r.   r/   r0   s    r*   r‘   ÚElementPosition.__init__	]  rà  r,   r/   NrH  r/   r,   r*   r¢  r¢  ]  s
   † ÙNõr,   r¢  c                 ó   • [        5       $ r.   )r¢  r/   r,   r*   Úmake_story_elposr¦  ]  s   € ÜÓÐr,   c                ó2  • Uc  U R                   n[        U5      nUc  UR                  nUc  UR                  nUR                  Ul        UR                  Ul        UR                  (       d  UR                  (       a  / $ U R                  SSUS9S   n/ nU H„  n[        US   5      nUR                  (       d  UR                  (       a  M5  US    HF  n[        US   5      nUR                  (       d  UR                  (       a  M5  UR                  U5        MH     M†     U/ :X  a  U$ UR                  S S9  UR                  S5      n	U	R
                  UR                  -
  S	U	R                  -  ::  a`  [        UR                  U	R
                  U	R                  5      n
U
R                  (       d#  U
R                  (       d  UR                  SU
5        OUR                  SU	5        U/ :X  a  U$ UR                  5       nUR                  UR                  -
  S	UR                  -  ::  a`  [        UR                  UR                  UR                  5      n
U
R                  (       d"  U
R                  (       d  UR                  U
5        U$ UR                  U5        U$ )
a—  Return rectangles of text lines between two points.

Notes:
    The default of 'start' is top-left of 'clip'. The default of 'stop'
    is bottom-reight of 'clip'.

Args:
    start: start point_like
    stop: end point_like, must be 'below' start
    clip: consider this rect_like only, default is page rectangle
Returns:
    List of line bbox intersections with the area established by the
    parameters.
r:   r   )rÑ  r  r  r7  rZ  c                ó   • U R                   $ r.   )r±  )r7  s    r*   r«
  Ú)get_highlight_selection.<locals>.<lambda>@]  s   €  §¢r,   rÓ
  rQ  )rý   r,  r$  r%  rf  r²  r±  r�  r€  r  rp   r¬  rU  r2  re  Úinsert)r×   rÇ  rƒ  r  r  rZ  r  r7  rt   Úbboxfr%  Úbboxls               r*   r  r  ]  s   € ð  �|Ø�y‰yˆÜ�‹:€DØ�}Ø—‘ˆØ�|Ø�w‰wˆØ�g‰g€D„GØ�f‰f€D„GØ‡}‡}˜×(×(Øˆ	ð �]‰]Ø�a˜dð ð àñ€Fð €EÛˆÜ�A�f‘I‹ˆØ××˜tŸ}Ÿ}ÙØ�g”JˆDÜ˜˜V™Ó%ˆDØ×× 4§=§=ÙØ�L‰L˜Öó	 ñ	 ð �ƒ{Øˆà	‡J�JÑ'€JÑ(ð �I‰I�a‹L€EØ‡x�x�%—'‘'Ñ˜S 5§<¡<Ñ/Ó/Ü�—‘˜%Ÿ(™( E§H¡HÓ-ˆØ—
—
˜aŸmŸmØ�L‰L˜˜AÔøà�‰�Q˜Ôà�ƒ{Øˆð �I‰I‹K€EØ‡v�v�—‘Ñ˜C %§,¡,Ñ.Ó.Ü�—‘˜4Ÿ6™6 5§8¡8Ó,ˆØ—
—
˜aŸmŸmØ�L‰L˜ŒOð €Lð 	�‰�UÔà€Lr,   c                ój   • SSK n [        UR                  U 5      5      nU$ ! [         a    Sn U$ f = f)z+Convenience function accessing unicodedata.r   Nr  )Úunicodedatar  Úlookuprl   )r   r®  r#  s      r*   r5  r5  Z]  sA   € ãðÜ�+×$Ñ$ TÓ*Ó+ˆð €Jøô ó Ø‰Ø€Jðúó   †" ¢2±2c                óÈ   • UR                   UR                   -
  nUR                  UR                  -
  n[        R                  " X0R                   -  X@R                  -  -   5      $ r.   ©re  rf  r£   Úfz_abs©r´  r!   r  ÚdxÚdys        r*   Úhdistr·  d]  óD   € Ø	
�‰ˆq�s‰s‰€BØ	
�‰ˆq�s‰s‰€BÜ�<Š<˜ŸU™U™
 R¯%©%¡ZÑ/Ó0Ð0r,   c                ó  • [        U 5      n U R                  (       d  U R                  (       a  [        S5      eU R                  nU R
                  U-  nU R                  U-  nUSUS4nSUSU4n[        X3R                  U-   UR                  U-   5      nU/n	[        SU5       H  n
X†-  nU	R                  U5        M     U	/n[        SU5       H9  n
XºS-
     n	/ nU	 H  nUR                  X‡-   5        M     UR                  U5        M;     U$ )a^  Return a list of (rows x cols) equal sized rectangles.

Notes:
    A utility to fill a given area with table cells of equal size.
Args:
    rect: rect_like to use as the table area
    rows: number of rows
    cols: number of columns
Returns:
    A list with <rows> items, where each item is a list of <cols>
    PyMuPDF Rect objects of equal sizes.
rÔ  r   r   )r,  r�  r€  rÄ   r$  r2  r‰  re  rf  rT  rp   )rý   rØ  Úrowsr$  r2  r‰  Údelta_hÚdelta_vr%  Úrowrh  ÚrectsÚnrows                r*   Ú
make_tablerÀ  j]  s  € ô �‹:€DØ‡}‡}˜×(×(ÜÐ<Ó=Ð=Ø	�‰€Bà�[‰[˜4Ñ€FØ�J‰J˜Ñ€EØ�a˜ Ð"€GØ�&˜!˜VÐ$€GäˆR—‘˜‘˜rŸt™t f™}Ó-€Að ˆ#€CÜ�1�dŽ^ˆØ	‰ˆØ�
‰
�1Žñ ð
 ˆE€EÜ�1�dŽ^ˆØ˜‘E‰lˆØˆÛˆAØ�K‰K˜™Ö$ñ à�‰�TÖñ ð €Lr,   c                óö  • [         R                  " U R                  5      n[         R                  " U5      n[         R                  " S5      n[         R
                  " [         R                  " U5      [        S5      [        S5      5      n[         R                  " XC5      n[         R                  " U5      (       d  [         R                  " XCS5      n[         R                  " U5      nSn[         R                  " U5      n[        U5       H6  n	[         R                  " [         R                  " XY5      5      n
XŠ:X  d  M4  Sn  O   U(       d-  [         R                  " U[         R                   " X(S5      5        gg)zD
Ensure that widgets with /AA/C JavaScript are in array AcroForm/CO
r  r×  rØ  r   r   r   N)r£   r  rÅ   rœ  rÜ  r!  rÛ  r  r  r<  rK  r¬  r  rT  r­  r>  r¹  )rà   r'  rb  Ú
PDFNAME_COr  r  rJ   r±  r  rh  r’  s              r*   r¦  r¦  •]  s  € ô ×#Ò# E§J¡JÓ/€IÜ
×
&Ò
& yÓ
1€CÜ×#Ò# DÓ)€JÜ×ÒÜ×Ò˜cÓ"Ü�VÓÜ�ZÓ ó€Dô 
×	Ò	˜DÓ	-€BÜ×Ò˜b×!Ñ!Ü×%Ò% d¸Ó:ˆÜ×Ò˜BÓ€AØ€EÜ×Ò˜IÓ&€DÜ�1ŽXˆÜ× Ò ¤×!4Ò!4°RÓ!;Ó<ˆØ�=ØˆEÙñ	 ö
 Ü×Ò˜R¤×!7Ò!7¸À1Ó!EÕFð r,   r0  c                óœ   ^^^• S mS mUUU4S jnU" 5       u  p‰p«U b
  T" U 5      u  p‰Ub
  T" U5      u  p«Ub  UnUb  Un	Ub  Un
Ub  UnX‰X«4$ )a›  
Helper for initialising rectangle classes.

2022-09-02: This is quite different from PyMuPDF's util_make_rect(), which
uses `goto` in ways that don't easily translate to Python.

Returns (x0, y0, x1, y1) derived from <args>, then override with p0, p1,
x0, y0, x1, y1 if they are not None.

Accepts following forms for <args>:
    () returns all zeros.
    (top-left, bottom-right)
    (top-left, x1, y1)
    (x0, y0, bottom-right)
    (x0, y0, x1, y1)
    (rect)

Where top-left and bottom-right are (x, y) or something with .x, .y
members; rect is something with .x0, .y0, .x1, and .y1 members.

2023-11-18: we now override with p0, p1, x0, y0, x1, y1 if not None.
c                ó  • [        U [        [        45      (       a  [        U 5      S:X  a
  U S   U S   4$ [        U [        [
        R                  [
        R                  45      (       a  U R                  U R                  4$ g)Nr   r   r   rô
  )
rC   rµ   r¶   r<   r#  r£   rc  r–  re  rf  )r�  s    r*   Úget_xyÚutil_make_rect.<locals>.get_xyÈ]  s`   € Ü�sœT¤5˜M×*Ñ*¬s°C«y¸A«~Ø�q‘6˜3˜q™6�>Ð!Ü�sœU¤E§M¡M´5·>±>ÐB×CÑCØ—5‘5˜#Ÿ%™%�<ÐØr,   c                ó˜  • [        U [        5      (       a  U $ [        U [        5      (       a  U R                  U R                  4$ [        U [
        [        [        R                  [        R                  45      (       a.  U R                  U R                  U R                  U R                  4$ [        U [        [        45      (       d  U 4n U $ r.   )rC   r¶   r#  re  rf  r,  rq  r£   rr  Úfz_rectr°  r²  r¯  r±  rµ   rÿ  s    r*   Ú
make_tupleÚ"util_make_rect.<locals>.make_tupleÎ]  sŒ   € Ü�qœ%× Ñ ØˆHÜ�qœ%× Ñ Ø—3‘3˜Ÿ™�8ˆOÜ˜œT¤5¬%¯,©,¼¿¹ÐF×GÑGØ—4‘4˜Ÿ™˜qŸt™t Q§T¡TÐ)Ð)Ü˜1œt¤U˜m×,Ñ,Ø�ˆAØˆr,   c                 ó^  >• [        T5      S:X  a  g[        T5      S:X  aØ  TS   n [        U [        [        45      (       a-  [        U 5      S:X  a  U u  p/ UQUQ7n[        U5      S:X  d   eU$ [        U [        [        45      (       aH  [        U 5      S:X  a9  U u  pEnT" U5      nT" U5      nT" U5      n/ UQUQUQ7n[        U5      S:X  d   eU$ T" U 5      n[        U5      S:X  d   SU < SU< 35       eU$ [        T5      S:X  a*  T" TS   5      T" TS   5      -   n[        U5      S:X  d   eU$ [        T5      S:X  a?  T" TS   5      u  pxXx4S	:w  a  XxTS   TS   4$ T" TS   5      u  pšXš4S	:w  a  TS   TS   Xš4$ O![        T5      S:X  a  TS   TS   TS   TS   4$ [	        S
T 35      e)Nr   r;  r   r   rr  r   zarg=z ret=rô
  rÜ  )r<   rC   rµ   r¶   rl   )r�  rF  rG  rL   r!   r  rö  r°  r²  r¯  r±  r  rÅ  rÉ  s              €€€r*   Úhandle_argsÚ#util_make_rect.<locals>.handle_argsØ]  sæ  ø€ Üˆt‹9˜‹>ØÜ�‹Y˜!‹^Ø�q‘'ˆCÜ˜3¤¤u ×.Ñ.´3¸³9À³>Ø‘�Ø�r�h˜B‘h�Ü˜3“x 1“}Ð$�}Ø�
Ü˜3¤¤u ×.Ñ.´3¸³9À³>Ø‘��aÙ˜q“M�Ù˜q“M�Ù˜q“M�Ø �q�j˜1�j˜q‘j�Ü˜3“x 1“}Ð$�}Ø�
Ù˜cÓ"ˆCÜ�s“8˜q“=Ð2 T S¡F¨&¨C©6Ð"2Ó2�=ØˆJÜ�‹Y˜!‹^Ù˜$˜q™'Ó"¡V¨T°!©WÓ%5Ñ5ˆCÜ�s“8˜q“=Ð �=ØˆJÜ�‹Y˜!‹^Ù˜T !™WÓ%‰FˆBØˆx˜<Ó'Ø˜t A™w¨¨Q©Ð/Ð/Ù˜T !™WÓ%‰FˆBØˆx˜<Ó'Ø˜A‘w  Q¡¨Ð/Ð/ð (ä�‹Y˜!‹^Ø˜‘7˜D ™G T¨!¡W¨d°1©gÐ5Ð5ÜÐ.¨t¨fÐ5Ó6Ð6r,   r/   )rc  rF  r°  r²  r¯  r±  r  rÌ  Úret_x0Úret_y0Úret_x1Úret_y1rÅ  rÉ  s         `     @@r*   r2  r2  ±]  sn   ú€ ò.ò	÷"7ñF &1£]Ñ"€F�FØ	�~©°«™˜Ø	�~©°«™˜Ø	�~ ˜Ø	�~ ˜Ø	�~ ˜Ø	�~ ˜Ø˜6Ð)Ð)r,   c           
     óx   • [        X`XX4US.6u  pxpšS nU" US5      nU" US5      nU" U	S5      n	U" U
S5      n
XxXš4$ )Nr0  c                óŒ   • U(       a  [        [        R                  " U 5      5      $ [        [        R                  " U 5      5      $ r.   )r9   r¬  rV  Úfloor)re  rV  s     r*   ÚconvertÚ util_make_irect.<locals>.convert^  s+   € ÞÜ”t—y’y “|Ó$Ð$ä”t—z’z !“}Ó%Ð%r,   FT)r2  )rc  rF  r°  r²  r¯  r±  r  r!   r  rö  rD  rÕ  s               r*   rè  rè  ^  sW   € Ü $°"ÀÈbÒQ�J€Aˆ!ò&ñ
 	��5Ó€AÙ��5Ó€AÙ��4Ó€AÙ��4Ó€AØ�ˆ:Ðr,   c                óR   • [        [        R                  " [        U 5      5      5      $ r.   )râ  r£   r‡  r  r  s    r*   r’  r’  ^  s   € ÜœE×/Ò/´ÀÓ0EÓFÓGÐGr,   c                ó¨   • [         (       a  [        R                  " X5      $ [        [        R
                  " [        U 5      [        U5      5      5      $ r.   )r  r   r¢  rq  r£   rà  r  rê  )rý   rð  s     r*   r¢  r¢  ^  s<   € ß‚{Ü×(Ò(¨$Ó7Ð7Üœ5×2Ò2´?À4Ó3HÔJ[Ð\bÓJcÓdÓeÐer,   c                óf   • [        [        R                  " [        U 5      [        U5      5      5      $ r.   )rq  r£   r†  r  ©rH  rI  s     r*   rm  rm  ^  s-   € ÜÜ×#Ò#Ü Ó#Ü Ó#óóð r,   c                óT   • [         R                  " [        U 5      [        U5      5      $ r.   )r£   Úfz_is_point_inside_rectró  r  )r³  r%  s     r*   r&  r&  &^  s%   € Ü×(Ò(Ü  Ó#Ü Ó"óð r,   c                óf   • [        [        R                  " [        U 5      [	        U5      5      5      $ r.   )rq  r£   rï  r  ró  )r%  r³  s     r*   rg  rg  ,^  s-   € ÜÜ×*Ò*Ü Ó"Ü  Ó#óóð r,   c                óZ   • [        U 5      n[        U5      n[        R                  " X#5      $ r.   )ró  r'  r£   Úfz_is_point_inside_quad)rs  rü   r³  r+  s       r*   rÖ  rÖ  5^  s'   € Ü˜Ó€AÜ˜Ó€AÜ×(Ò(¨Ó.Ð.r,   c                óf   • [        [        R                  " [        U 5      [	        U5      5      5      $ r.   )rP  r£   rd  ró  rê  )rj  rð  s     r*   rÂ  rÂ  ;^  s-   € ÜÜ×$Ò$Ü  Ó'Ü! &Ó)óóð r,   c                óf   • [        [        R                  " [        U 5      [        U5      5      5      $ r.   )rq  r£   rö  r  rÚ  s     r*   rj  rj  D^  s-   € ÜÜ×ÒÜ Ó#Ü Ó#óóð r,   c                óf   • [        [        R                  " [        U 5      [        U5      5      5      $ r.   )r|  r£   rb  rê  )rÒ  rô  s     r*   rø  rø  M^  s+   € ÜÜ�OŠOÜ! "Ó%Ü! "Ó%óóð r,   c                ó4  •  ['        U 5      nUR                  nX2R                  -  UR                  UR                  -  -
  nU[         R"                  R$                  * :  d  U[         R"                  R$                  :”  Ga  [        R                  " 5       nSU-  nUR                  U-  Ul        UR                  * U-  Ul        UR                  * U-  Ul	        X6-  Ul
        UR                  * UR                  -  UR                  UR                  -  -
  nUR                  * UR                  -  UR                  UR                  -  -
  Ul        X5l        SUR                  UR                  UR                  UR                  UR                  UR                  44$ g)Nr   r   )r   r/   )rC   r¶   rµ   r£   r}  r¿  r€  r!   r  rö  rD  ri  r  rÉ   r  r&  rÃ  Ú
float_infoÚepsilonrê  )rð  rL   r3  r!   Údetri  Úrdets          r*   rò  rò  V^  s-  € Øô( ˜FÓ
#€CØ�‰€AØ
�e‰e‰)�c—e‘e˜cŸe™e‘mÑ
#€CØ
Œc�n‰n×$Ñ$Ð$Ó$¨¬c¯n©n×.DÑ.DÔ(DÜ�nŠnÓˆØ�3‰wˆØ—‘˜‘ˆŒØ—‘�˜‘ˆŒØ—‘�˜‘ˆŒØ‘ˆŒØ�U‰UˆF�S—U‘U‰N˜SŸU™U S§U¡U™]Ñ*ˆØ—‘�˜Ÿ™‘ §¡¨¯©¡Ñ.ˆŒØŒØ�3—5‘5˜#Ÿ%™% §¡¨¯©¨s¯u©u°c·e±eÐ<Ð<Ð<àr,   c                ó  • [         R                  " U5      nSnSnU[        U 5      :  aÔ  [         R                  " XS  5      u  pxXg-  nU[         R                  :X  a  [         R
                  " U5      nOAU[         R                  :X  a  [         R                  " U5      nO[         R                  " U5      nUS:  a  Sn[         R                  " XH5      n	[         R                  " XIS5      n
XZ-  nU[        U 5      :  a  MÔ  XR-  nU$ )Nr   rs  )r£   r�  r<   r  ÚPDF_SIMPLE_ENCODING_GREEKÚfz_iso8859_7_from_unicodeÚPDF_SIMPLE_ENCODING_CYRILLICÚfz_windows_1251_from_unicodeÚfz_windows_1252_from_unicoderÙ  rÚ  )r   rÿ   r   r  rÜ  r   r.  rÃ  rö  rz  rm  rL   s               r*   r~  r~  }^  sà   € Ü×#Ò# HÓ-€DØ	€AØ
€CØ
”�D“	‹/Ü×"Ò" 4¨ :Ó.‰ˆØ‰ˆØ”u×6Ñ6Ó6Ü×/Ò/°Ó2‰AØœ×;Ñ;Ó;Ü×2Ò2°1Ó5‰Aä×2Ò2°1Ó5ˆAØˆq‹5ØˆAÜ×%Ò% dÓ.ˆÜ×#Ò# D¨QÓ/ˆØ	‰ˆð ”�D“	�/ð ‰,€CØ€Jr,   c                ó|  • [        U 5      n[        U5      n[        U5      n[        R                  " [        R                  " UR                  UR                  -
  UR
                  UR
                  -
  5      5      n[        R                  " SSSSUR                  * UR
                  * 5      n[        R                  " UR                  UR
                  * UR
                  UR                  SS5      n[        R                  " Xx5      n[        R                  " X75      n[        R                  " U5      nUR
                  $ )Nr   r   )	ró  r£   rÁ  r   re  rf  r�  rb  rd  )	rþ  rs  rü   rö  r³  r+  rŸ  rÒ  rô  s	            r*   r  r  “^  sÞ   € ä˜Ó€AÜ˜Ó€AÜ˜Ó€AÜ×!Ò!¤%×"5Ò"5°a·c±c¸A¿C¹C±iÀÇÁÀqÇsÁsÁÓ"KÓL€AÜ	×	Ò	˜a  A q¨1¯3©3¨$°·±°Ó	5€BÜ	×	Ò	˜aŸc™c A§C¡C 4¨¯©¨a¯c©c°1°aÓ	8€BÜ	�Š˜Ó	 €BÜ× Ò  Ó'€AÜ×!Ò! !Ó$€AØ�3‰3€Jr,   c                ó  • [        U 5      n[        U5      n[        R                  " [        R                  " UR                  UR                  -
  UR
                  UR
                  -
  5      5      n[        R                  " SSSSUR                  * UR
                  * 5      n[        R                  " UR                  UR
                  * UR
                  UR                  SS5      n[        [        R                  " XV5      5      $ )z{
Return the matrix that maps two points C, P to the x-axis such that
C -> (0,0) and the image of P have the same distance.
r   r   )	ró  r£   rÁ  r   re  rf  r�  r|  rb  )rþ  rs  rö  r³  rŸ  rÒ  rô  s          r*   rn  rn  ¡^  sµ   € ô
 	˜Ó€AÜ˜Ó€Aô 	×!Ò!¤%×"5Ò"5°a·c±c¸A¿C¹C±iÀÇÁÀqÇsÁsÁÓ"KÓL€Aä	×	Ò	˜a  A q¨1¯3©3¨$°·±°Ó	5€BÜ	×	Ò	˜aŸc™c A§C¡C 4¨¯©¨a¯c©c°1°aÓ	8€BÜœUŸ_š_¨RÓ4Ó5Ð5r,   c                óª  • SnSnUn[        XS  5      u  pVX%-  n[        XS  5      u  pxX7-  nXh:X  a™  UnU[        S5      :X  a&   [        XS  5      u  pVX%-  nU[        S5      :w  a  OM%  [        XS  5      u  pVX%-  nU[        S5      :X  a&   [        XS  5      u  pxX7-  nU[        S5      :w  a  OM%  [        XS  5      u  pxX7-  nXh:X  a  M™  US:w  a  S $ U$ )Nr   r´   )rŽ  r  )	Úh0r  r!  rJ   ri  r»  ÚhcÚdelta_nÚncs	            r*   r˜  r˜  ±^  s  € Ø	€AØ	€AØ	€AÜ˜b ˜fÓ%�K€GØ�L€AÜ˜b ˜fÓ%�K€GØ�L€AØ
‹(ØˆØ”�S“‹>ØÜ)¨"¨R¨&Ó1‘�Ø‘�Øœ˜S›“>Øñ	 ô & b¨ fÓ-‰KˆGØ‰LˆAØ”�S“‹>ØÜ)¨"¨R¨&Ó1‘�Ø‘�Øœ˜S›“>Øñ	 ô & b¨ fÓ-‰KˆGØ‰LˆAð' �(ð( ˜“7ˆ4Ð! Ð!r,   c                óF  • U (       d   e[        U[        R                  5      (       d   e[        U[        R                  5      (       d   eUR                  R
                  U R                  -  nUR                  R
                  U R                  -  n[        X5      nU R                  S:”  GaD  U R                  U R                  S-
     n[        U5      n [        UR                  R                  UR                  UR                  5      U:  aã  [!        UR                  R                  UR                  UR                  5      U:  aª  [        UR                  R                  UR"                  UR$                  5      U:  aq  [!        UR                  R                  UR"                  UR$                  5      U:  a8  UR"                  Ul        UR                  Ul        U R                  S   U:X  d   eg U R                  R'                  U5        U =R                  S-  sl	        g rŸ  )rC   r£   ré  rê  rÍ   rÊ  rÒ  rÑ  rÞ  r<   rd
  r'  r·  r´  rp  ro  Úvdistrq  rù  rp   )r×  rt   r  rÒ  rÑ  Úch_quadrI  rÈ  s           r*   rÕ  rÕ  Ð^  s}  € Þ€Kˆ4Ü�dœE×-Ñ-×.Ñ.Ð.Ð.Ü�bœ%×+Ñ+×,Ñ,Ð,Ð,Ø�M‰M×Ñ §¡Ñ+€EØ�M‰M×Ñ §¡Ñ+€EÜ˜4Ó$€GØ‡x�x�!„|à�z‰z˜$Ÿ(™( Q™,Ñ'ˆÜ˜dÓ#ˆØÜ˜$Ÿ/™/×-Ñ-¨s¯v©v°w·z±zÓBÀUÓJÜ˜$Ÿ/™/×-Ñ-¨s¯v©v°w·z±zÓBÀUÓJÜ˜$Ÿ/™/×-Ñ-¨s¯v©v°w·z±zÓBÀUÓJÜ˜$Ÿ/™/×-Ñ-¨s¯v©v°w·z±zÓBÀUÓJà—Z‘ZˆCŒFØ—Z‘ZˆCŒFØ—:‘:˜b‘> SÓ(Ð(Ð(ØØ‡J�J×Ñ�gÔØ‡H‚H��M†Hr,   c                óš  • [         (       a  [        R                  " XX#XEXg5      $ [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S	5      /	n[        R
                  " X5      n	[        R                  " U S
5      n
[        R                  " U
[        S5      [        S5      5        [        [        U5      5       Hh  n[        R                  " X˜U   5      nUR                  (       d  M/  [        R                  " X¨U   [        R                  " UR                  U5      5        Mj     U(       Ga  [        R                  " U	[        S5      5      n[        R                  " U5      nUS:”  GaÛ  [        R                   " U
[        S5      U5      n[        U5       GHª  n[        R"                  " XÛ5      nUR                  (       a  [        R$                  " U5      (       d  MH  [        R&                  " US5      R                  (       a  Mp  [        R                  " U[        S5      5      n[        R(                  " U[        S5      5      (       a  M·  [        R(                  " U[        S5      5      (       a  MÞ  [        R(                  " U[        S5      5      (       a  GM  [        R*                  " U[        S5      5        [        R*                  " U[        S5      5        [        R                  " UR                  U5      n[        R,                  " U [        R.                  " U5      S5      n[        R0                  " UU5        GM­     US:w  a!  [        R2                  " U
[        S5      U5        [        R4                  " X
5      n[        R6                  " XU5        g)z©
Deep-copies a source page to the target.
Modified version of function of pdfmerge.c: we also copy annotations, but
we skip some subtypes. In addition we rotate output.
rO  r=  r,  rá  râ  rã  rä  r<  ÚUserUnitrr  ró  rÓ   r§  r   r=  r¶  rm  r¦  r\  rs  r¨  N)r  r   r�  r  r£   r  r[  rV  rT  r<   r  rÍ   ry  rÅ   r  r¬  rK  r­  r†  r  rÖ  rI  r¹  r  r>  rQ  rL  r7  )r‚  rƒ  Ú	page_fromÚpage_tora  r)  Úcopy_annotsr‡  Úknown_page_objsÚpage_refrè  rh  r  r  rJ   r  r²  rÝ  r  rà   r¯  s                        r*   r�  r�  é^  sÉ  € ÷ ‚{ä×Ò °9ÀvÐVaÓmÐmô 	�ÓÜ�ÓÜ�ÓÜ�ÓÜ�ÓÜ�ÓÜ�ÓÜ�ÓÜ�Óð

€Oô ×(Ò(¨Ó<€Hô ×"Ò" 7¨AÓ.€IÜ	×Ò�y¤(¨6Ó"2´H¸VÓ4DÔEô ”C˜Ó(Ö)ˆÜ×,Ò,¨hÈÑ8JÓKˆØ�>�>‰>ä×Ò 	¸1Ñ+=¼u×?\Ò?\Ð]f×]kÑ]kÐmpÓ?qÖrñ	 *÷ Ü×'Ò'¨´8¸HÓ3EÓFˆ
Ü×Ò Ó,ˆØˆqŒ5Ü×1Ò1°9¼hÀxÓ>PÐRSÓTˆJÜ˜1—X�Ü×'Ò'¨Ó7�Ø—|—|¬5×+<Ò+<¸Q×+?Ñ+?ÙÜ×&Ò&¨¨5Ó1×<×<ÙÜ×,Ò,¨a´¸)Ó1DÓE�Ü×$Ò$ g¬x¸Ó/?×@Ñ@ÙÜ×$Ò$ g¬x¸Ó/@×AÑAÙÜ×$Ò$ W¬h°xÓ.@×AÑAÚÜ×"Ò" A¤x°Ó'8Ô9Ü×"Ò" A¤x°£}Ô5Ü×6Ò6¸	¿¹ÈÓJ�Ü×.Ò.°¼×9IÒ9IÈ6Ó9RÐTUÓV�Ü×$Ò$ j°%×8ñ# ð( �ƒ|Ü×Ò 	¬8°HÓ+=¸vÔFä
×
Ò
 Ó
3€Cô 
×Ò˜7¨SÕ1r,   c                ó6   • [        U 5      u  p[        SSX5      $ )z‰Return a Rect for the paper size indicated in string 's'. Must conform to the argument of method 'PaperSize', which will be invoked.
    rÓ  )Ú
paper_sizer,  )rŸ  r‰  r2  s      r*   Ú
paper_rectr  0_  s   € ô ˜q“M�M€EÜ��S˜%Ó(Ð(r,   c                óî   • U R                  5       nSnUR                  S5      (       a  SnUSS nUR                  S5      (       a  USS n[        5       R                  US5      nUS:X  a  U$ US   US	   4$ )
zÁReturn a tuple (width, height) for a given paper format string.

Notes:
    'A4-L' will return (842, 595), the values for A4 landscape.
    Suffix '-P' and no suffix return the portrait tuple.
r³  z-lrT  Nr  z-pr¼	  r   r   )ré  r  Úpaper_sizesr=   )rŸ  rÊ  r  r¦   s       r*   r   r   7_  s   € ð �7‰7‹9€DØ€AØ‡}�}�T×ÑØˆØ�C�RˆyˆØ‡}�}�T×ÑØ�C�RˆyˆÜ	‹×	Ñ	˜4 Ó	*€BØˆCƒxØˆ	Øˆq‰E�2�a‘5ˆ>Ðr,   c                 óð   • 0 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_0 S#S$_S%S&_S'S(_S)S*_S+S,_S-S._S/S0_S1S2_S3S4_S5S6_S7S8_S9S:_S;S<_S=S>_S?S@_SASB_SCSD_ESESFSGSHSISJSKSLSMSNSO.
E$ )Pa  Known paper formats @ 72 dpi as a dictionary. Key is the format string
like "a4" for ISO-A4. Value is the tuple (width, height).

Information taken from the following web sites:
www.din-formate.de
www.din-formate.info/amerikanische-formate.html
www.directtools.de/wissen/normen/iso.htm
Úa0)éP	  i*  Úa1)é”  r  Úa10)r£  rÇ  Úa2)é§  r  Úa3)r²  r  Úa4)r±  r²  Úa5)é¤  r±  Úa6)é*  r  Úa7)r  r  Úa8)é“   r  Úa9)rÇ  r  Úb0)é  i¨  Úb1)éÔ  r  Úb10)rµ  rÞ  Úb2)é‰  r  Úb3)éé  r  Úb4)éÅ  r  Úb5)éó  r   Úb6)éb  r"  rX  )r<  r$  Úb8)ró  r<  Úb9)rÞ  ró  Úc0)é'
  i]  Úc1)é-  r(  Úc10)rª  rÑ  Úc2)é  r*  Úc3)é–  r-  Úc4)é‰  r/  Úc5)éË  r1  Úc6)éC  r3  Úc7)r)  r5  Úc8)râ  r)  Úc9)rÑ  râ  zcard-4x6)i   i°  )rí  iø  )i)  i¬  )i
  iô  )iŒ  rz  )r{  iÈ  )rz  ið  )rz  i¨  )rz  r{  )i  i  )i`  i  )
zcard-5x7Ú
commercialÚ	executiveÚinvoiceÚledgerÚlegalzlegal-13ÚletterÚmonarchztabloid-extrar/   r/   r,   r*   r  r  K_  sÍ  € ð-
Øˆlð-
àˆlð-
ð 	ˆyð-
ð 	ˆlð	-
ð
 	ˆkð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆlð-
ð 	ˆlð-
ð 	ˆyð-
ð 	ˆlð-
ð  	ˆlð!-
ð" 	ˆkñ#-
ð$ 	ˆjð%-
ð& 	ˆjð'-
ð( 	ˆjð)-
ð* 	ˆjð+-
ð, 	ˆjð--
ð. 	ˆlð/-
ð0 	ˆlð1-
ð2 	ˆyð3-
ð4 	ˆlð5-
ð6 	ˆkð7-
ð8 	ˆjð9-
ð: 	ˆjð;-
ð< 	ˆjð=-
ð> 	ˆjð?-
ð@ 	ˆjðA-
ðB 	ˆjðC-
ðD 	�JñE-
ðF Ø ØØØØØØØØ$òY-
ð -
r,   c                ó.   • [         R                  " X5      $ r.   )r£   r   )r2  rw  s     r*   r   r   ƒ_  s   € Ü×$Ò$ SÓ1Ð1r,   c                ó   •  S5       e)z@
Returns description of mupdf.PdfObj (wrapper for pdf_obj) <o>.
zuse mupdf.pdf_debug_obj() ?)r£   r<  r¬  rT  r­  Úpdfobj_stringra	  Úarray_get_boolr†  r‡  r‰  r  Úpdf_is_embedded_fileÚembedded_file_namerÿ	  r~  r  Úpdf_is_jpx_imagerõ  r…  r×  r  r  r"  r€  rx  )r²  rÌ
  rL   rT  rh  ÚoorŽ  r¹   s           r*   rB  rB  ‡_  s   € ð ,Ð+Ó+ˆ1r,   c                ó$  • UR                   S   (       d  gU R                  nU R                  5       nU Vs/ s HS  nUS   UR                  :X  d  M  US   R	                  S5      (       d  M3  US   R	                  S5      (       d  MN  US   PMU     nnU/ :X  a  g[        U5      n[        [        UR                  S	5      S
-  5      5      nU H<  n[        R                  X'U5      (       a  M   [        SUR                   SUS 35        M>     gs  snf )a¶  Repair character spacing for mono fonts.

Notes:
    Some mono-spaced fonts are displayed with a too large character
    distance, e.g. "a b c" instead of "abc". This utility adds an entry
    "/W[0 65535 w]" to the descendent font(s) of font. The float w is
    taken to be the width of 0x20 (space).
    This should enforce viewers to use 'w' as the character width.

Args:
    page: pymupdf.Page object.
    font: pymupdf.Font object.
r  Nr   rr  r¹  r   r€  r   r$  iè  zCannot set width for 'z
' in xref rD  )rÑ  rí   ri  r   r8   r«  r9   rÉ  r+  r  Úset_font_widthr(   )r×   rÜ  r2  r_  r  rí  r‰  r  s           r*   rÎ  rÎ  ¹_  sü   € ð �:‰:�f×ØØ
�+‰+€CØ�~‰~Ó€Hñ óâˆAØˆa‰D�D—I‘IÑó 	à"# A¡$§/¡/°#×"6ó 	à;<¸Q¹4¿?¹?È:×;Vó 	ˆˆ!ŒÙð 
ð ð
 �ƒ{ØÜ�‹J€EÜ”�t×)Ñ)¨"Ó-°Ñ4Ó6Ó7€EÛˆÜ×#Ñ# C¨u×5Ó5ÜÐ(¨¯©¨°:¸dÀ1¸XÐFÖGò ùòs   ¶DÁDÁ,DÂ	Dc                óF   • [        U 5      nUS   S-  US   S-  US   S-  4$ )a   Convert sRGB color code to a PDF color triple.

There is **no error checking** for performance reasons!

Args:
    srgb: (int) RRGGBB (red, green, blue), each color in range(255).
Returns:
    Tuple (red, green, blue) each item in interval 0 <= item <= 1.
r   g     ào@r   r   )rn  )ÚsrgbrÃ  s     r*   ÚsRGB_to_pdfrL  Ù_  s3   € ô 	�DÓ€AØˆQ‰4�%‰<˜˜1™ ™ q¨¡t¨e¡|Ð3Ð3r,   c                óL   • U S-  n U S-	  nXS-  -
  S-	  nXS-  -
  US-  -
  nXU4$ )a-  Convert sRGB color code to an RGB color triple.

There is **no error checking** for performance reasons!

Args:
    srgb: (int) SSRRGGBB (red, green, blue), each color in range(255).
    With MuPDF < 1.26, `s` is always 0.
Returns:
    Tuple (red, green, blue) each item in interval 0 <= item <= 255.
iÿÿÿ r*  r   r/   )rK  r%  rz  r  s       r*   rn  rn  ç_  sG   € ð 	ˆHÑ€DØ�‰
€AØ	�b‘Ñ	˜aÑ€AØ�R‘Ñ˜A ™FÑ#€AØ�!ˆ9Ðr,   c                óö   • U(       a  [         R                  " U5      OSn[         R                  " U 5      n[        SUS5       H3  n[         R                  " [         R                  " X5      5      U:X  d  M3    g   g)Nr   r   r   )r£   r¬  r	  rT  r­  )r³  r“  rJ   Ústr_rh  s        r*   r�  r�  ù_  s^   € Þ,6Œ×Ò˜ZÔ(¸A€AÜ×#Ò# QÓ'€DÜ�1�a˜Ž^ˆÜ×#Ò#¤U×%8Ò%8¸*Ó%HÓIÈTÕQÙñ ð r,   c                ó¨  • SnSnUnSnUR                   (       Gaµ  [        XX#U5      n	[        XrX45      (       GdA  U	S:X  aÚ  [        R                  " U[        S5      5      n
U
R                   (       d2  UR                   (       a   [        R                  " U[        S5      5        OtUR                   (       aC  [        R                  " U[        S5      U
5        [        R                  " U
[        S5      U5        O [        R                  " U
[        S5      5        U
nO¢[        R                  " U[        S5      5        [        R                  " U[        S5      5        [        R                  " U[        S5      5      nOAU(       a  UR                   (       d  UnUn[        R                  " U[        S5      5      nUS-  nUR                   (       a  GMµ  XeU4$ )z
Returns (count, first, prev).
Nr   r§  ÚPrevrÃ  rÄ  r   )rÍ   Ústrip_outlinesr”  r£   r  r  rI  rV  )r2  Úoutlinesrt  r’  r“  rï  rÊ  Úcurrentr  rô  r_  s              r*   Ústrip_outlinerU  `  sj  € ð €EØ€EØ€GØ€DØ
×
×
Ð
ô ˜C¨*È
ÓSˆä˜WÐ2B×OÒOØ�Q‹wô ×)Ò)¨'´8¸FÓ3CÓD�Ø——à——Ü×*Ò*¨4´¸&Ó1AÔBøØ—_—_Ü×&Ò& t¬X°fÓ-=¸tÔDÜ×&Ò& t¬X°fÓ-=¸tÕDä×&Ò& t¬X°fÓ-=Ô>Ø‘ô ×"Ò" 7¬H°VÓ,<Ô=Ü×"Ò" 7¬H°S«MÔ:Ü×,Ò,¨W´h¸vÓ6FÓG‘ö  × 0× 0Ø�ØˆDÜ×(Ò(¨´(¸6Ó2BÓCˆGØ�Q‰JˆEð? ×
×
Ò
ðB ˜ÐÐr,   c                óê  • UR                   (       d  g[        R                  " U[        S5      5      nUR                   (       d  SnO[	        XX#U5      u  penUS:X  ab  [        R
                  " U[        S5      5        [        R
                  " U[        S5      5        [        R
                  " U[        S5      5        U$ [        R                  " [        R                  " U[        S5      5      5      n[        R                  " U[        S5      U5        [        R                  " U[        S5      W5        [        R                  " U[        S5      [        R                  " US:”  a  UOU* 5      5        U$ )Nr   ré  ÚLastrÂ  )	rÍ   r£   r  r  rU  rI  r  rV  rQ  )	r2  rS  rt  r’  r“  rï  rô  rÙ
  Ú	old_counts	            r*   rR  rR  .`  s  € Ø××Øä×Ò˜x¬°'Ó):Ó;€EØ××Ø‰ä'¨°JÐR\Ó]‰ˆ�4à	ˆQƒwÜ×Ò˜8¤X¨gÓ%6Ô7Ü×Ò˜8¤X¨fÓ%5Ô6Ü×Ò˜8¤X¨gÓ%6Ô7ð €Iô	 ×$Ò$¤U×%7Ò%7¸Ä(È7ÓBSÓ%TÓUˆ	Ü×Ò˜8¤X¨gÓ%6¸Ô>Ü×Ò˜8¤X¨fÓ%5°tÔ<Ü×Ò˜8¤X¨gÓ%6¼×8IÒ8IÐPYÐ\]ÓP]É"ÐdfÐcfÓ8gÔhØ€Ir,   c                ój   • SSK n UR                  [        U 5      5      nU$ ! [         a    Sn U$ f = f)z-
Convenience function accessing unicodedata.
r   Nz.notdef)r®  r   r+  rÄ   )r  r®  r   s      r*   rX  rX  J`  sB   € ó ðØ×Ñ¤ B£Ó(ˆð €Køô ó Ø‰Ø€Kðúr°  c                óÈ   • UR                   UR                   -
  nUR                  UR                  -
  n[        R                  " X0R                  -  X@R                   -  -   5      $ r.   r²  r´  s        r*   rö  rö  V`  r¸  r,   r/   Úsingle)	Úpagefn_argsÚpagefn_kwargsÚinitfnÚinitfn_argsÚinitfn_kwargsrF  r  ÚconcurrencyÚ_statsc       	        óÔ  • U
(       a  [         R                   " 5       nUS:X  ag  U(       a  U" U0 UD6  [        5       n[        U 5      nUc  [        [	        U5      5      nU H$  nXÞ   nU" U/UQ70 UD6nUR                  U5        M&     GOSSKJn  Uc}  U
(       a  [         R                   " 5       n[        U 5       n[	        U5      n[        [        U5      5      nSSS5        U
(       a'  [         R                   " 5       W-
  n[        US S35        U
(       a  [         R                   " 5       nUS:X  a  UR                  U UUUUUUUU	U
5
      nO-US:X  a  UR                  U UUUUUUUU	U
5
      nO S	U< S
35       eU
(       a'  [         R                   " 5       W-
  n[        US S35        U
(       a'  [         R                   " 5       W-
  n[        US S35        U$ ! , (       d  f       GN= f)aô  
Returns list of results from `pagefn()`, optionally using concurrency for
speed.

Args:
    path:
        Path of document.
    pagefn:
        Function to call for each page; is passed (page, *pagefn_args,
        **pagefn_kwargs). Return value is added to list that we return. If
        `method` is not 'single', must be a top-level function - nested
        functions don't work with concurrency.
    pagefn_args
    pagefn_kwargs:
        Additional args to pass to `pagefn`. Must be picklable.
    initfn:
        If true, called once in each worker process; is passed
        (*initfn_args, **initfn_kwargs).
    initfn_args
    initfn_kwargs:
        Args to pass to initfn. Must be picklable.
    pages:
        List of page numbers to process, or None to include all pages.
    method:
        'single'
            Do not use concurrency.
        'mp'
            Operate concurrently using Python's `multiprocessing` module.
        'fork'
             Operate concurrently using custom implementation with
             `os.fork()`. Does not work on Windows.
    concurrency:
        Number of worker processes to use when operating concurrently. If
        None, we use the number of available CPUs.
    _stats:
        Internal, may change or be removed. If true, we output simple
        timing diagnostics.

Note: We require a file path rather than a Document, because Document
instances do not work properly after a fork - internal file descriptor
offsets are shared between the parent and child processes.
r[  Nr   )Ú_apply_pagesz.2fzs: count pages.r#  ÚforkzUnrecognised method=r   zs: work.z	s: total.)rš  rµ   rÂ   rT  r<   rp   ra   rd  r(   Ú_multiprocessingÚ_fork)r
   rŠ  r\  r]  r^  r_  r`  rF  r  ra  rb  rß
  rL   rÊ   ry  r×   r%  rd  rÃ  Ú	num_pagess                       r*   Úapply_pagesri  \`  sÇ  € öp Ü�YŠY‹[ˆà�ÓÞÙ�KÐ1 =Ò1Ü‹fˆÜ˜D“>ˆØ‰=Üœ#˜h›-Ó(ˆEÛˆCØ‘=ˆDÙ�tÐ;˜kÒ;¨]Ñ;ˆAØ�J‰J�qŽMó õ 	#à‰=ÞÜ—I’I“K�Ü˜$” 8Ü ›M�	ÜœU 9Ó-Ó.�÷  ö Ü—I’I“K !‘O�Ü�q˜�g˜_Ð-Ô.æÜ—	’	“ˆAà�T‹>Ø×/Ñ/ØØØØØ!ØØØ!ØØó‰Cð �vÓØ×$Ñ$ØØØØØ!ØØØ!ØØó‰Cð 1Ð- f¡Y¨aÐ0Ó0�1æÜ—	’	“˜a‘ˆAÜ�1�S�'˜Ð"Ô#æÜ�IŠI‹K˜"ÑˆÜˆq�ˆg�YÐÔ Ø€J÷a  –ús   Â: GÇ
G')
rF  r  ra  r„  r  rÑ  r…  r¬  r_  rb  c       
   
     óX   • [        UUUUUU	S9n[        U [        R                  UUUUU
S9$ )aû  
Returns list of results from `Page.get_text()`, optionally using
concurrency for speed.

Args:
    path:
        Path of document.
    pages:
        List of page numbers to process, or None to include all pages.
    method:
        'single'
            Do not use concurrency.
        'mp'
            Operate concurrently using Python's `multiprocessing` module.
        'fork'
             Operate concurrently using custom implementation with
             `os.fork`. Does not work on Windows.
    concurrency:
        Number of worker processes to use when operating concurrently. If
        None, we use the number of available CPUs.
    option
    clip
    flags
    textpage
    sort
    delimiters:
        Passed to internal calls to `Page.get_text()`.
)r„  r  rÑ  r…  r¬  r_  )r]  rF  r  ra  rb  )r:   ri  rÓ   r  )r
   rF  r  ra  r„  r  rÑ  r…  r¬  r_  rb  Ú	args_dicts               r*   r  r  Þ`  sI   € ôX ØØØØØØ!ñ€Iô ØÜ�M‰MØ#ØØØ#Øñð r,   c                  óÒ  • \ rS rSrSrS r\S 5       r\S 5       r\S/S j5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS r\S 5       r\S 5       r\S0S j5       r\S1S j5       r\S1S j5       r\S 5       r\S/S j5       r \S 5       r!\S  5       r"\S1S! j5       r#\S" 5       r$\S# 5       r%\S0S$ j5       r&\S1S% j5       r'\S1S& j5       r(\S1S' j5       r)\S( 5       r*\S) 5       r+\S* 5       r,\S+ 5       r-\S1S, j5       r.S-r/\0" 5       r1S.r2g)2r  ia  zM
We use @staticmethod to avoid the need to create an instance of this class.
c                ó¤   • [        U [        R                  5      (       a  [        [	        U 5      5      $ [        [        R
                  " 5       5      $ r.   )rC   r£   rÔ   r|  ra  r}  rÖ   s    r*   Ú_derotate_matrixÚTOOLS._derotate_matrix#a  s6   € Ü�dœEŸM™M×*Ñ*Ü$Ô%<¸TÓ%BÓCÐCä$¤U§^¢^Ó%5Ó6Ð6r,   c                óð  • [        X5      n[        U R                  5      Ul        U R                  Ul        U R                  Ul        Xl        UR                  (       d  S Ul        UR                  (       d  S Ul        UR                  (       d  S Ul        UR                  (       d  S Ul	        UR                  (       d  S Ul
        UR                  (       d  S Ul        UR                  (       d  S Ul        U$ r.   )rÁ  r,  rý   r  rí   rš  rñ  r`  ra  rb  rc  rd  re  )rà   r^  r  s      r*   r]  ÚTOOLS._fill_widget)a  s°   € ä& uÓ5ˆä˜5Ÿ:™:Ó&ˆŒØ—j‘jˆŒØŸ™ˆŒØŒØ�}�}Ø ˆFŒMØ×#×#Ø#'ˆFÔ Ø×#×#Ø#'ˆFÔ Ø×#×#Ø#'ˆFÔ Ø×!×!Ø!%ˆFÔØ×!×!Ø!%ˆFÔØ×"×"Ø"&ˆFÔØˆ
r,   c                óx   • [        U R                  5      n [        U R                  5       5      n[	        U5      nU$ r.   )rÛ   rÅ   r  r  r$  )r×   r&  r“  s      r*   r  ÚTOOLS._get_all_contentsAa  s/   € ä˜DŸI™IÓ&ˆÜ˜tŸx™x›zÓ*ˆÜ! 3Ó'ˆØˆr,   c                ó‚   • [        U SS9n[        U5      n[        UR                  5       UR	                  5       XB5      nU$ )zDAdd bytes as a new /Contents object for a page, and return its xref.r   rÖ  )rÛ   r/  r   r2  r  )r×   r;  r£  râ  Úcontbufr  s         r*   r?  ÚTOOLS._insert_contentsHa  s9   € ô ˜t¨aÑ0ˆÜ$ WÓ-ˆÜ! '§+¡+£-°·±³ÀÓQˆàˆr,   c                ó¬  • U R                   S   nU R                  S   nU(       d  SnSR                  [        [        U5      5      S-   nU(       a  UnOU R                  S   nU(       d  SnSR                  [        [        U5      5      S-   nUn	Un
[        [        Xš5      5      nU) nX›-  nX«-  nS	U R                  s=::  a  S
:  a  O  OSnOSnX¼XÞXFX�4$ )a+  Get common parameters for making annot line end symbols.

Returns:
    m: matrix that maps p1, p2 to points L, P on the x-axis
    im: its inverse
    L, P: transformed p1, p2
    w: line width
    scol: stroke color string
    fcol: fill color store_shrink
    opacity: opacity string (gs command)
r‰  r•  rK  r´   z RG
r  r'  z rg
r   r   r  ra   )r•  r  r  r  rè  r€  rn  r^  )rà   rF  rG  r`  r   ÚscÚscolrÂ  re  Únp1Únp2rŒ  r.  r\  rü  r^  s                   r*   Ú_le_annot_parmsÚTOOLS._le_annot_parmsQa  sÐ   € ð �L‰L˜Ñ!ˆØ�\‰\˜(Ñ#ˆÞØˆBØ�x‰xœœC ›Ó%¨Ñ/ˆÞØ‰Bà—‘˜fÑ%ˆBÞØˆBØ�x‰xœœC ›Ó%¨Ñ/ˆàˆØˆÜ”? 3Ó,Ó-ˆØˆRˆØ‰GˆØ‰GˆØ�—‘Õ! Ö!Ø‰GàˆGØ�a˜A TÐ2Ð2r,   c                ó`  • [         R                  XX$5      u  pVpxpšp¼SnU[        SU	5      -  nU(       a  UOUnUSU* S-  4-   U-  nUSUS-  4-   U-  nSU UR                  S SUR                  S S3nUUR                  S SUR                  S S	3-  nU[        U	5      S
-   -  nUU
S-   -  nU$ )zaMake stream commands for butt line end symbol. "lr" denotes left (False) or right point.
        r   r   r   r6  rŒ  r  r´   r¹  rº  r=  ús
Q
©r  r|  r!  re  rf  r·   )rà   rF  rG  rp  r`  rŒ  r.  r\  rü  r   ry  re  r^  rñ  rD  r/  rÛ
  Úbotr(  s                      r*   r  ÚTOOLS._le_buttwa  sØ   € ô /4×.CÑ.CÀEÈrÓ.^Ñ+ˆˆq�Q˜dØˆØ”C˜˜1“IÑˆÞ‰A˜ˆØ�A˜�r˜"‘u�:‰~ Ñ#ˆØ�A�q˜‘t�9‰} Ñ"ˆØ�W�I˜cŸe™e A˜Y a¨¯©¨a y°Ð5ˆØ
�—‘�q�	˜˜3Ÿ5™5 ˜) 4Ð(Ñ(ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r,   c                ó�  • [         R                  XX$5      u  pVpxpšp¼SnU[        SU	5      -  nU(       a	  XŽS-  S4-
  OX~S-  S4-   n[        Xÿ5      U* U* Xî4-   nSU-   [         R	                  UR
                  U-  UR                  U-  UR                  U-  UR                  U-  5      -   nU[        U	5      S-   -  nUX«-   S-   -  nU$ )zcMake stream commands for circle line end symbol. "lr" denotes left (False) or right point.
        ç      @r   r6  r   úq
r=  úb
Q
)
r  r|  r!  r,  Ú_oval_stringr$  r9  r%  rW  r·   )rà   rF  rG  rp  r`  rŒ  r.  r\  rü  r   ry  re  r^  rñ  rD  r/  r%  r(  s                     r*   r  ÚTOOLS._le_circle‡a  sÖ   € ô /4×.CÑ.CÀEÈrÓ.^Ñ+ˆˆq�Q˜dØˆØ”C˜˜1“IÑˆÞˆA�2‘�q�	ŠM Q¨B©$°¨¡]ˆÜ�‹J˜1˜"˜q˜b !˜Ñ'ˆØ�W‰_œu×1Ñ1°!·$±$¸±)¸Q¿T¹TÀB¹YÈÏÉÈrÉ	ÐST×SWÑSWÐZ\ÑS\Ó]Ñ]ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd‰k˜HÑ$Ñ$ˆØˆ	r,   c                ó  • [         R                  XX$5      u  pVpxpšp¼SnU[        SU	5      -  nU(       a	  XŽS-  S4-   OX~S-  S4-
  nU(       a  USU-  U* 4-   O
USU-  U* 4-   nU(       a
  USU-  U4-   O	USU-  U4-   nX-  nX&-  nXö-  nSU UR                  S S	UR                  S S
3nUUR                  S S	UR                  S S3-  nUUR                  S S	UR                  S S3-  nU[        U	5      S-   -  nUX«-   S-   -  nU$ )ziMake stream commands for closed arrow line end symbol. "lr" denotes left (False) or right point.
        r„  r   r6  r   r  r   rŒ  r  r´   r¹  rº  r=  r†  r€  ©rà   rF  rG  rp  r`  rŒ  r.  r\  rü  r   ry  re  r^  rñ  rD  r¸  r(  s                    r*   r  ÚTOOLS._le_closedarrow•a  s?  € ô /4×.CÑ.CÀEÈrÓ.^Ñ+ˆˆq�Q˜dØˆØ”C˜˜1“IÑˆÞ ˆQ�B‘$˜�Š] a¨R©4°¨)¡mˆÞ "ˆR�2�a‘4˜!˜�*Š_¨¨a°©c°A°2¨Y©ˆÞ!ˆR�2�a‘4˜�)Š^ r¨Q¨q©S°!¨H¡}ˆØ
‰ˆØ
‰ˆØ
‰ˆØ�W�I˜bŸd™d 1˜X Q r§t¡t¨A h¨dÐ3ˆØ
�—‘�a�˜˜"Ÿ$™$˜q˜ Ð&Ñ&ˆØ
�—‘�a�˜˜"Ÿ$™$˜q˜ Ð&Ñ&ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd‰k˜HÑ$Ñ$ˆØˆ	r,   c                óT  • [         R                  XX$5      u  pVpxpšp¼SnU[        SU	5      -  nU(       a	  XŽS-  S4-
  OX~S-  S4-   n[        Xÿ5      U* U* Xî4-   nUR                  UR
                  UR                  -
  S-  -   U-  nSU UR                  S SUR                  S S	3nUR                  UR                  UR                  -
  S-  -   U-  nUUR                  S SUR                  S S
3-  nUR                  UR                  UR                  -
  S-  -   U-  nUUR                  S SUR                  S S
3-  nUR                  UR
                  UR                  -
  S-  -   U-  nUUR                  S SUR                  S S
3-  nU[        U	5      S-   -  nUX«-   S-   -  nU$ )zdMake stream commands for diamond line end symbol. "lr" denotes left (False) or right point.
        r„  r   r6  r   rS  r…  r  r´   r¹  rº  r=  r†  )r  r|  r!  r,  r$  rW  re  rf  r9  r%  r·   ©rà   rF  rG  rp  r`  rŒ  r.  r\  rü  r   ry  re  r^  rñ  rD  r/  r%  r³  r(  s                      r*   r  ÚTOOLS._le_diamond©a  s¯  € ô /4×.CÑ.CÀEÈrÓ.^Ñ+ˆˆq�Q˜dØˆØ”C˜˜1“IÑˆÞˆA�2‘�q�	ŠM Q¨B©$°¨¡]ˆÜ�‹J˜1˜"˜q˜b !˜Ñ'ˆà�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'¨2Ñ-ˆØ�7�)˜AŸC™C ˜7 ! A§C¡C¨ 7¨$Ð/ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'¨2Ñ-ˆØ
�—‘�Q��q˜Ÿ™˜Q˜˜tÐ$Ñ$ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'¨2Ñ-ˆØ
�—‘�Q��q˜Ÿ™˜Q˜˜tÐ$Ñ$ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'¨2Ñ-ˆØ
�—‘�Q��q˜Ÿ™˜Q˜˜tÐ$Ñ$ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd‰k˜HÑ$Ñ$ˆØˆ	r,   c                ó  • [         R                  XX$5      u  pVpxpšp¼SnU[        SU	5      -  nU(       a	  XŽS-  S4-   OX~S-  S4-
  nU(       a  USU-  U* 4-   O
USU-  U* 4-   nU(       a
  USU-  U4-   O	USU-  U4-   nX-  nX&-  nXö-  nSU UR                  S S	UR                  S S
3nUUR                  S S	UR                  S S3-  nUUR                  S S	UR                  S S3-  nU[        U	5      S-   -  nUU
S-   -  nU$ )zgMake stream commands for open arrow line end symbol. "lr" denotes left (False) or right point.
        r„  r   r6  r   r  r   rŒ  r  r´   r¹  rº  r=  úS
Q
r€  rŠ  s                    r*   r  ÚTOOLS._le_openarrow¿a  s<  € ô /4×.CÑ.CÀEÈrÓ.^Ñ+ˆˆq�Q˜dØˆØ”C˜˜1“IÑˆÞ ˆQ�B‘$˜�Š] a¨R©4°¨)¡mˆÞ "ˆR�2�a‘4˜!˜�*Š_¨¨a°©c°A°2¨Y©ˆÞ!ˆR�2�a‘4˜�)Š^ r¨Q¨q©S°!¨H¡}ˆØ
‰ˆØ
‰ˆØ
‰ˆØ�W�I˜bŸd™d 1˜X Q r§t¡t¨A h¨dÐ3ˆØ
�—‘�a�˜˜"Ÿ$™$˜q˜ Ð&Ñ&ˆØ
�—‘�a�˜˜"Ÿ$™$˜q˜ Ð&Ñ&ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r,   c                ó  • [         R                  XX$5      u  pVpxpšp¼SnU[        SU	5      -  nU(       a
  USU-  S4-
  O	USU-  S4-   nU(       a  USU-  U* 4-   O
USU-  U* 4-   nU(       a
  USU-  U4-   O	USU-  U4-   nX-  nX&-  nXö-  nSU UR                  S SUR                  S S	3nUUR                  S SUR                  S S
3-  nUUR                  S SUR                  S S
3-  nU[        U	5      S-   -  nUX«-   S-   -  nU$ )zoMake stream commands for right closed arrow line end symbol. "lr" denotes left (False) or right point.
        r„  r   r   r   r  rŒ  r  r´   r¹  rº  r=  r†  r€  rŠ  s                    r*   r  ÚTOOLS._le_rclosedarrowÓa  sC  € ô /4×.CÑ.CÀEÈrÓ.^Ñ+ˆˆq�Q˜dØˆØ”C˜˜1“IÑˆÞˆQ�!�A‘#�q�Š\ Q¨!¨A©#¨q¨¡\ˆÞ!ˆR�1�Q‘3˜˜�)Š^ r¨R°©T°A°2¨J¡ˆÞ ˆR�1�Q‘3˜�(Š] b¨B¨q©D°!¨9¡nˆØ
‰ˆØ
‰ˆØ
‰ˆØ�W�I˜bŸd™d 1˜X Q r§t¡t¨A h¨dÐ3ˆØ
�—‘�a�˜˜"Ÿ$™$˜q˜ Ð&Ñ&ˆØ
�—‘�a�˜˜"Ÿ$™$˜q˜ Ð&Ñ&ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd‰k˜HÑ$Ñ$ˆØˆ	r,   c                ó  • [         R                  XX$5      u  pVpxpšp¼SnU[        SU	5      -  nU(       a	  XŽS-  S4-
  OX~S-  S4-   nU(       a  USU-  U* 4-   O
USU-  U* 4-   nU(       a
  USU-  U4-   O	USU-  U4-   nX-  nX&-  nXö-  nSU UR                  S S	UR                  S S
3nUUR                  S S	UR                  S S3-  nUUR                  S S	UR                  S S3-  nU[        U	5      S-   -  nUX«-   S-   -  nU$ )zmMake stream commands for right open arrow line end symbol. "lr" denotes left (False) or right point.
        r„  r   g      @r   r   r  rŒ  r  r´   r¹  rº  r=  r�  r€  rŠ  s                    r*   r  ÚTOOLS._le_ropenarrowça  s?  € ô /4×.CÑ.CÀEÈrÓ.^Ñ+ˆˆq�Q˜dØˆØ”C˜˜1“IÑˆÞ ˆQ�B‘$˜�Š] a¨R©4°¨)¡mˆÞ!ˆR�1�Q‘3˜˜�)Š^ r¨R°©T°A°2¨J¡ˆÞ ˆR�1�Q‘3˜�(Š] b¨B¨q©D°!¨9¡nˆØ
‰ˆØ
‰ˆØ
‰ˆØ�W�I˜bŸd™d 1˜X Q r§t¡t¨A h¨dÐ3ˆØ
�—‘�a�˜˜"Ÿ$™$˜q˜ Ð&Ñ&ˆØ
�—‘�a�˜˜"Ÿ$™$˜q˜ Ð&Ñ&ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd‰k˜HÑ$Ñ$ˆØˆ	r,   c                óø  • [         R                  XX$5      u  pVpxpšp¼S[        SU	5      -  S-  nU(       a  UOUn[        UR                  U-
  UR
                  SU	-  -
  UR                  U-   UR
                  SU	-  -   5      nUR                  U-  nUR                  U-  nSU UR                  S SUR
                  S S3nUUR                  S SUR
                  S S	3-  nU[        U	5      S
-   -  nUU
S-   -  nU$ )zbMake stream commands for slash line end symbol. "lr" denotes left (False) or right point.
        g(µ¦yò?r   rÔ  r   rŒ  r  r´   r¹  rº  r=  r  )	r  r|  r!  r,  re  rf  r$  r%  r·   )rà   rF  rG  rp  r`  rŒ  r.  r\  rü  r   ry  re  r^  Úrwr/  r%  rÛ
  r�  r(  s                      r*   r   ÚTOOLS._le_slashûa  sü   € ô /4×.CÑ.CÀEÈrÓ.^Ñ+ˆˆq�Q˜dØ”c˜!˜Q“iÑ #Ñ%ˆÞ‰A˜ˆÜ�—‘�r‘˜1Ÿ3™3  Q¡™;¨¯©¨b©°!·#±#¸¸A¹±+Ó>ˆØ�d‰d�R‰iˆØ�d‰d�R‰iˆØ�W�I˜cŸe™e A˜Y a¨¯©¨a y°Ð5ˆØ
�—‘�q�	˜˜3Ÿ5™5 ˜) 4Ð(Ñ(ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r,   c                ól  • [         R                  XX$5      u  pVpxpšp¼SnU[        SU	5      -  nU(       a	  XŽS-  S4-
  OX~S-  S4-   n[        Xÿ5      U* U* Xî4-   nUR                  U-  nSU UR
                  S SUR                  S S3nUR                  U-  nUUR
                  S SUR                  S S	3-  nUR                  U-  nUUR
                  S SUR                  S S	3-  nUR                  U-  nUUR
                  S SUR                  S S	3-  nU[        U	5      S
-   -  nUX«-   S-   -  nU$ )zcMake stream commands for square line end symbol. "lr" denotes left (False) or right point.
        r„  r   r6  r   r…  r  r´   r¹  rº  r=  r†  )r  r|  r!  r,  r$  re  rf  r9  r%  rW  r·   r�  s                      r*   r  ÚTOOLS._le_squareb  sS  € ô /4×.CÑ.CÀEÈrÓ.^Ñ+ˆˆq�Q˜dØˆØ”C˜˜1“IÑˆÞˆA�2‘�q�	ŠM Q¨B©$°¨¡]ˆÜ�‹J˜1˜"˜q˜b !˜Ñ'ˆà�D‰D�2‰IˆØ�7�)˜AŸC™C ˜7 ! A§C¡C¨ 7¨$Ð/ˆØ�D‰D�2‰IˆØ
�—‘�Q��q˜Ÿ™˜Q˜˜tÐ$Ñ$ˆØ�D‰D�2‰IˆØ
�—‘�Q��q˜Ÿ™˜Q˜˜tÐ$Ñ$ˆØ�D‰D�2‰IˆØ
�—‘�Q��q˜Ÿ™˜Q˜˜tÐ$Ñ$ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd‰k˜HÑ$Ñ$ˆØˆ	r,   c                óž  • S nSnXU -
  S-  -   nXU -
  S-  -   nXU-
  S-  -   nX2U-
  S-  -   n	X`U-
  U-  -   n
XpU-
  U-  -   nXqU-
  U-  -   nX�U-
  U-  -   nX‚U-
  U-  -   nX’U	-
  U-  -   nX“U	-
  U-  -   nXcU-
  U-  -   nUR                   S SUR                  S S3nUU" X«U5      -  nUU" XÍU5      -  nUU" XïU	5      -  nUU" UUU5      -  nU$ )zQReturn /AP string defining an oval within a 4-polygon provided as points
        c                ó®   • U R                   S SU R                  S SUR                   S SUR                  S SUR                   S SUR                  S S3$ )Nr  r´   r¿  r�  )r³  r+  r%  s      r*   ÚbezierÚ"TOOLS._oval_string.<locals>.bezier%b  sQ   € Ø—c‘c˜!�W˜A˜aŸc™c !˜W A a§c¡c¨! W¨A¨a¯c©c°!¨W°A°a·c±c¸!°W¸A¸a¿c¹cÀ!¸WÀDÐIÐIr,   rË  rS  r  r´   r¹  r�  )rF  rG  r¸  r¹  r�  rÌ  rÅ  ÚmorÄ  ÚmuÚol1Úol2Úor1Úor2Úur1Úur2Úul1Úul2r(  s                      r*   r‡  ÚTOOLS._oval_string!b  s@  € ò	Jð ˆØ˜‘7˜c‘/Ñ!ˆØ˜‘7˜c‘/Ñ!ˆØ˜‘7˜c‘/Ñ!ˆØ˜‘7˜c‘/Ñ!ˆØ˜‘G˜uÑ$Ñ$ˆØ˜‘G˜uÑ$Ñ$ˆØ˜‘G˜uÑ$Ñ$ˆØ˜‘G˜uÑ$Ñ$ˆØ˜‘G˜uÑ$Ñ$ˆØ˜‘G˜uÑ$Ñ$ˆØ˜‘G˜uÑ$Ñ$ˆØ˜‘G˜uÑ$Ñ$ˆà—‘�Qˆx�q˜Ÿ™˜a˜ Ð%ˆØ
‰f�S˜rÓ"Ñ"ˆØ
‰f�S˜rÓ"Ñ"ˆØ
‰f�S˜rÓ"Ñ"ˆØ
‰f�S˜#˜rÓ"Ñ"ˆØˆ	r,   c                ó¶  • [         (       a!  [        R                  " U R                  5      nOS nU" U 5      nU(       d  gSnSnSnUR	                  5       n[        U5       Hæ  u  pxUS:X  a.  XgS-
     SS  n[        XgS-
     5      nS	=Xg'   =XgS-
  '   XgS-
  '   M9  US
:X  a  [        XgS-
     5      /nS	=Xg'   XgS-
  '   M]  US:X  a;  XgS-
  U  V	s/ s H  n	[        U	5      PM     nn	S	=Xg'   =XgS-
  '   =XgS-
  '   XgS-
  '   Mž  US:X  d  M¦  XgS-
  U  V	s/ s H  n	[        U	5      PM     nn	S	=Xg'   =XgS-
  '   =XgS-
  '   =XgS-
  '   XgS-
  '   Mè     XSU4nU$ s  sn	f s  sn	f )Nc                ó&  • U R                   n[        U[        R                  5      (       d   e[        R                  " U5      n[        R
                  " U5      n [        R                  " U[        S5      5      nUR                  (       dJ  [        R                  " U5      n[        R                  " U[        S5      [        S5      [        S5      5      n[        R                  " U5      nU$ ! [         a    [        (       a
  [        5          g f = f)Nr&  r×  rØ  )rÅ   rC   r£   rå   r  rœ  r  r  rÍ   rÛ  r!  r	  rl   r  r{   )rà   rI  Úthis_annot_objrb  rj  rµ  r*  s          r*   ÚTools__parse_daÚ(TOOLS._parse_da.<locals>.Tools__parse_daCb  sÖ   € Ø"ŸZ™Z�
Ü! *¬e¯n©n×=Ñ=Ð=Ð=Ü!&×!4Ò!4°jÓ!A�Ü×2Ò2°NÓC�ðÜ×7Ò7¸ÌÐRVËÓX�BØŸ=Ÿ=Ü"'×"3Ò"3°CÓ"8˜Ü"×0Ò0°Ü (¨Ó 0Ü (¨Ó 4Ü (¨£ó"˜ô
 #×5Ò5°bÓ9�Fð �øô !ó ß+Ò+´Ô0@Ùðús   ÁBC. Ã.DÄD)rq  ra   r   rL  r  rK  ry  r   r   ra   rz  r{  r   rò  rr  )r  r   ÚTools_parse_darÅ   r;   rY  rœ  )
rà   r  r­  rÜ  r3  rg  r|  rh  rH   r  s
             r*   r  ÚTOOLS._parse_da=b  sŸ  € ÷ Š;Ü×&Ò&¨¯
©
Ó3‰Còñ& " %Ó(ˆCæØ ØˆØˆØˆØ�i‰i‹kˆÜ  –~‰GˆAØ�t‹|Ø˜q™5‘z ! "�~�Ü˜c a¡%™jÓ)�Ø/1Ð1�‘Ð1˜˜q™S™ C¨!©¡HÙØ�s‹{Ü˜c a¡%™jÓ)Ð+�Ø$&Ð&�‘˜˜q™S™ÙØ�t‹|Ø),°©U°1©Ó6ª A”u˜Q–x©�Ð6Ø:<Ð<�‘Ð<˜˜q™S™Ð< C¨!©¡H¨s°Q±3©xÙØ�s�{Ø),°©U°1©Ó6ª A”u˜Q–x©�Ð6ØEGÐG�‘ÐG˜˜q™S™ÐG C¨!©¡HÐG¨s°Q±3©x¸#À¹c¹(Ùñ# &ð& ˜%Ð ˆØˆ
ùò 7ùò 7s   ÃEÄEc                óŒ   • U n[         R                  " U5      n[         R                  " U5      n[         R                  " X25        g r.   )r£   r  rœ  Úpdf_field_reset)rà   rI  r¬  rb  s       r*   r¡  ÚTOOLS._reset_widgettb  s5   € àˆ
Ü×,Ò,¨ZÓ8ˆÜ×*Ò*¨>Ó:ˆÜ×Ò˜cÕ2r,   c                ó¦   • U R                  SS9nUR                  (       d  [        [        R                  " 5       5      $ [        [        U5      5      $ rÍ  )rô  rÍ   r|  r£   r}  rß  )r×   râ  s     r*   r  ÚTOOLS._rotate_matrix{b  s>   € à—.‘.¨%�.Ð0ˆØ×!×!Ü$¤U§^¢^Ó%5Ó6Ð6Ü Ô!6°wÓ!?Ó@Ð@r,   c                ó   • [        X5        g r.   )r  )rà   r^  s     r*   r§  ÚTOOLS._save_widget‚b  s
   € ä  Õ/r,   c                ó>  • [         (       a"  [        R                  " U R                  U5        g  U R                  n[	        U[
        R                  5      (       d   e[
        R                  " [
        R                  " U5      [        S5      U5        [
        R                  " [
        R                  " U5      [        S5      5        [
        R                  " [
        R                  " U5      [        S5      5        g ! [         a    [        (       a
  [        5          g f = f)Nr&  r  rú  )r  r   ÚTools_update_darÅ   rC   r£   rå   r¯  r  r  rI  rl   r  r{   )rà   r*  rI  s      r*   Ú
_update_daÚTOOLS._update_da†b  sÇ   € ßŠ;Ü×!Ò! 5§:¡:¨vÕ6ðØ"ŸZ™Z�
Ü! *¬e¯n©n×=Ñ=Ð=Ð=Ü×.Ò.¬u×/BÒ/BÀ:Ó/NÔPXÐY]ÓP^Ð`fÔgÜ×"Ò"¤5×#6Ò#6°zÓ#BÄHÈTÃNÔSÜ×"Ò"¤5×#6Ò#6°zÓ#BÄHÈTÃNÔSð øô ó ß'Ò'¬NÔ,<Ùðús   ¯C
C: Ã:DÄDc                 ó    • [         S-  q [         $ r™  )ÚTOOLS_JM_UNIQUE_IDr/   r,   r*   rÀ  ÚTOOLS.gen_id•b  s   € ô 	˜aÑÐÜ!Ð!r,   c                 ó.   • [         R                  " 5         g)z
Empty the glyph cache.
N)r£   Úfz_purge_glyph_cacher/   r,   r*   Úglyph_cache_emptyÚTOOLS.glyph_cache_empty›b  s   € ô
 	×"Ò"Õ$r,   c                ó   • [        X5      $ )z%
Metadata of an image binary stream.
)rÿ  )r	   rý  s     r*   r€  ÚTOOLS.image_profile¢b  s   € ô
   Ó3Ð3r,   Nc                ó*   • U b  [        U 5      q[        $ )z+
Set MuPDF error display to True or False.
)ré   r¥  ©r]  s    r*   Úmupdf_display_errorsÚTOOLS.mupdf_display_errors©b  s   € ð ‰>Ü#'¨£8Ð Ü#Ð#r,   c                ó*   • U b  [        U 5      q[        $ )z.
Set MuPDF warnings display to True or False.
)ré   r”  rÆ  s    r*   Úmupdf_display_warningsÚTOOLS.mupdf_display_warnings³b  s   € ð ‰>Ü%)¨"£XÐ"Ü%Ð%r,   c                 ó"   • [         R                  $ )z"Get version of MuPDF binary build.)r£   Ú
FZ_VERSIONr/   r,   r*   r  ÚTOOLS.mupdf_version½b  s   € ô ×ÑÐr,   c                ó�   • [         R                  " 5         SR                  [        5      nU (       a  [        R                  5         U$ )z>
Get the MuPDF warnings/errors with optional reset (default).
r&   )r£   Úfz_flush_warningsr  r˜  r  Úreset_mupdf_warnings)rM
  rL   s     r*   r†  ÚTOOLS.mupdf_warningsÂb  s3   € ô 	×ÒÔ!Ø�i‰iÔ0Ó1ˆÞÜ×&Ñ&Ô(Øˆ
r,   c                 ó   • [        5       qg r.   )rµ   r˜  r/   r,   r*   rÑ  ÚTOOLS.reset_mupdf_warningsÎb  s   € ô #'£&Ñr,   c                ó0   • [         R                  " U 5        g)z
Set anti-aliasing level.
N)r£   Úfz_set_aa_level)r   s    r*   Úset_aa_levelÚTOOLS.set_aa_levelÓb  s   € ô
 	×Ò˜eÕ$r,   c                óV   • U c  [         $ [        U 5      S-   nUS:”  a  SnU S S q [         $ )Nr   r¿  )rª  r<   )r¬  r·  s     r*   Úset_annot_stemÚTOOLS.set_annot_stemÚb  s:   € ð ‰<Ü#Ð#Ü�4‹y˜1‰}ˆØ�"‹9ØˆDØ  ˜9ÐÜÐr,   c                óÌ  • [        U SS9nUR                  (       d  g[        R                  " X15      n[        R                  " U[        S5      5      n[        R                  " U5      (       a÷  [        R                  " U5      n[        U5       HÒ  n[        R                  " XW5      n[        R                  " US5      n	[        R                  " U	[        R                  " S5      5        [        R                  " U	[        R                  " S5      5        [        R                  " U	[        R                  " U5      5        [        R                  " U[        S5      U	5        MÔ     g)	Nr   rÖ  Fró
  r   rÐ  rõ
  T)rÏ   rÍ   r£   r=  r  r  r<  r¬  rT  r­  rS  r>  rQ  rV  )
r2  r  r‰  rb  rÜ  ÚdfontsrJ   rh  ÚdfontÚwarrays
             r*   rI  ÚTOOLS.set_font_widthåb  sý   € ä˜s¨QÑ/ˆØ�~�~ØÜ×$Ò$ SÓ/ˆÜ×#Ò# D¬(Ð3DÓ*EÓFˆÜ×Ò˜f×%Ñ%Ü×#Ò# FÓ+ˆAÜ˜1–X�Ü×+Ò+¨FÓ6�Ü×,Ò,¨S°!Ó4�Ü×$Ò$ V¬U×->Ò->¸qÓ-AÔBÜ×$Ò$ V¬U×->Ò->¸uÓ-EÔFÜ×$Ò$ V¬U×->Ò->¸uÓ-EÔFÜ×"Ò" 5¬(°3«-¸Ö@ñ ð r,   c                ó0   • [         R                  " U 5        g)z&
Set the graphics minimum line width.
N)r£   Úfz_set_graphics_min_line_width)Úmin_line_widths    r*   Úset_graphics_min_line_widthÚ!TOOLS.set_graphics_min_line_width÷b  s   € ô
 	×,Ò,¨^Õ<r,   c                óà   • U (       a<  [         R                  (       a  [         R                  " 5         g[        S[        5        g[         R                  (       a  [         R
                  " 5         gg)z!Set ICC color handling on or off.zMuPDF built w/o ICC supportN)r£   r$  Úfz_enable_iccrÂ  rt	  Úfz_disable_iccrÆ  s    r*   Úset_iccÚTOOLS.set_iccþb  sB   € ö Ü×"×"Ü×#Ò#Õ%äÐ6Ô7GÕHÜ× × Ü× Ò Õ"ð !r,   c                óP   • U b  [        U 5      [        l        [        R                  $ )z!Set / unset MuPDF device caching.)ré   r~  r�   rÆ  s    r*   Úset_low_memoryÚTOOLS.set_low_memory	c  s!   € ð ‰>Ü)-¨b«ŒHÔ&Ü×)Ñ)Ð)r,   c                ó®   • U bC  [        U 5      [        l        [        (       a$  [        R
                  " [        R                  5        [        R                  $ )z Set / unset small glyph heights.)ré   r~  rŽ   r  r   Úset_small_glyph_heightsrÆ  s    r*   rï  ÚTOOLS.set_small_glyph_heightsc  s:   € ð ‰>Ü+/°«8ŒHÔ(ßŠ{Ü×-Ò-¬h×.JÑ.JÔKÜ×+Ñ+Ð+r,   c                ó®   • U bC  [        U 5      [        l        [        (       a$  [        R
                  " [        R                  5        [        R                  $ )z;
Set / unset returning fontnames with their subset prefix.
)ré   r~  r�   r  r   Úset_subset_fontnamesrÆ  s    r*   rò  ÚTOOLS.set_subset_fontnamesc  s:   € ð
 ‰>Ü(,¨R«ŒHÔ%ßŠ{Ü×*Ò*¬8×+DÑ+DÔEÜ×(Ñ(Ð(r,   c                 óŠ   • [        [        R                  " 5       [        R                  " 5       [        R                  " 5       S9$ )z
Show anti-aliasing values.
)rb  r   Úgraphics_min_line_width)r:   r£   Úfz_graphics_aa_levelÚfz_text_aa_levelÚfz_graphics_min_line_widthr/   r,   r*   Úshow_aa_levelÚTOOLS.show_aa_level$c  s5   € ô
 Ü ×5Ò5Ó7Ü×-Ò-Ó/Ü*/×*JÒ*JÓ*Lñð 	r,   c                 ó   • g)z
MuPDF store size limit.
Nr/   r/   r,   r*   Ústore_maxsizeÚTOOLS.store_maxsize/c  ó   € ð r,   c                ó|   • U S:¼  a  [         R                  " 5         gU S:”  a  [         R                  " SU -
  5        gg)z'
Free 'percent' of current store size.
r¯	  r   N)r£   Úfz_empty_storeÚfz_shrink_store)Úpercents    r*   r±	  ÚTOOLS.store_shrink7c  s8   € ð
 �c‹>Ü× Ò Ô"ØØ�Q‹;Ü×!Ò! 3¨¡=Õ1ð r,   c                 ó   • g)z
MuPDF current store size.
Nr/   r/   r,   r*   Ú
store_sizeÚTOOLS.store_sizeCc  rþ  r,   c                ó®   • U bC  [        U 5      [        l        [        (       a$  [        R
                  " [        R                  5        [        R                  $ )z1
Set ascender / descender corrections on or off.
)ré   r~  r�   r  r   Úset_skip_quad_correctionsrÆ  s    r*   Úunset_quad_correctionsÚTOOLS.unset_quad_correctionsKc  s:   € ð
 ‰>Ü-1°"«XŒHÔ*ßŠ{Ü×/Ò/´×0NÑ0NÔOÜ×-Ñ-Ð-r,   rD  r/   rr  rq  r.   )3r2   r3   r4   r5   r*  rn  rz  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Ú  rI  rä  ré  rì  rï  rò  rù  rü  r±	  r  r	  rª  r9  Úfitz_configr6   r/   r,   r*   r  r  a  s1  † ñò7ð ñó ðð. ñó ðð óó ðð ñ#3ó ð#3ðJ ñó ðð ñó ðð ñó ðð& ñó ðð* ñó ðð& ñó ðð& ñó ðð& ñó ðð ñó ðð* ñó ðð6 ñ4ó ð4ðl ñ3ó ð3ð ñAó ðAð ñ0ó ð0òð ñ"ó ð"ð
 ñ%ó ð%ð ó4ó ð4ð ó$ó ð$ð ó&ó ð&ð ñ ó ð ð ó	ó ð	ð ñ)ó ð)ð ñ%ó ð%ð ó ó ð ð ñó ðð" ñ=ó ð=ð ó#ó ð#ð ó*ó ð*ð ó,ó ð,ð ó)ó ð)ð ñó ðð ñó ðð ñ2ó ð2ð ñó ðð ó.ó ð.ð Ðá Ó"ƒKr,   r  c                 ó†   • [         R                  " 5         [         R                  " S 5        [         R                  " S 5        g r.   )r£   rÐ  Úfz_set_warning_callbackÚfz_set_error_callbackr/   r,   r*   Ú_atexitr  sc  s*   € ä	×ÒÔÜ	×!Ò! $Ô'Ü	×Ò Õ%r,   ©Ú	_wxcolorsr  c                 ó   • [         $ )z}
Returns dict mapping from name to (red, green, blue).
    name: lower-case name.
    red, green, blue: float in range 0..1.
)Úpdfcolorr/   r,   r*   Úcolors_pdf_dictr  �c  s	   € ô €Or,   c                 ó   • [         $ )z}
Returns list of (name, red, green, blue) tuples:
    name: upper-case name.
    red, green, blue: integers in range 0..255.
r  r/   r,   r*   Úcolors_wx_listr  –c  s
   € ô Ðr,   c                óŠ  • SSK n[        S[        < 35        [        R                  R                  [         S35      nU S3nUR                  5       S:X  a  U S3nOUn[        S5        [        S	U< 35        [        S
U< 35        [        R                  R                  U5      (       d   SU< S35       e[        R                  R                  U5      (       d   SU< S35       eUR                  5       S:w  GaE  U (       Ga=  [        SU< S[         S35        [        R                  S5      SS nSR                  U5      nSU S3n[        SU< S35        [        R                  " U5       HÍ  n[        R                  " Xg5      nU(       d  M"  U SUR                  S5       3n	[        R                  R                  U	5      (       d$  [        R                  R!                  U	5      (       a&  [        SU	< S35        [        R"                  " U	5        [        SU	 SU 35        [        R$                  " Xy5        MÏ     X44$ )a­  
Allows PyMuPDF installation to be used to compile and link programmes that
use the MuPDF C/C++ API.

Args:
    make_links:
        If true, then on non-windows we also create softlinks to any shared
        libraries that are supplied with a version suffix; this allows them
        to be used in a link command.

        For example we create links such as:

        site-packages/pymupdf/
            libmupdf.so -> libmupdf.so.26.7
            libmupdfcpp.so -> libmupdfcpp.so.26.7

Returns: (mupdf_include, mupdf_lib).
    mupdf_include:
        Path of MuPDF include directory within PyMuPDF install.
    mupdf_lib
        Path of MuPDF library directory within PyMuPDF install.
r   Nzmupdf_version=z/..z/mupdf-devel/includeÚWindowsz/mupdf-devel/libzWithin installed PyMuPDF:z    mupdf_include=z    mupdf_lib=zNot a directory: mupdf_include=r   zNot a directory: mupdf_lib=zCreating symlinks in mupdf_lib=z for MuPDF-z .so files.r   r   z[.]z^(lib[^.]+[.]so)[.]Ú$zmupdf_lib_regex=rU	  zRemoving existing link pfrom=zCreating symlink: z -> )rk  r(   r  ri   r
   ÚnormpathÚ__file__Úsystemr»  r;   r  r¼  r>  r�  r?  Úislinkr¹  r²  Úsymlink)
Ú
make_linksrk  r³  Úmupdf_includeÚ	mupdf_libÚregex_suffixÚmupdf_lib_regexÚleafrŒ  Úpfroms
             r*   Ú_mupdf_develr&  Ÿc  sý  € ó. äˆ>Œ=Ñ
ÐÔä
�‰×ÑœH˜: SÐ)Ó*€Aà�cÐ-Ð.€Mà‡�Ó˜IÓ%à�cÐ)Ð*‰	ð ˆ	ÜÐ
#Ô%ÜÐ
ˆ}ÑÐÔ Üˆ/ˆy‰lÐÔä�7‰7�=‰=˜×'Ñ'ÐNÐ+K¸]Ñ<LÈAÐ)NÓNÐ'Ü�7‰7�=‰=˜×#Ñ#ÐFÐ'C¸¹ÀAÐ%FÓFÐ#à‡�Ó˜IÔ%¯*ô 	Ð. I¡<¨{¼=¸/ÈÐUÔVÜ$×*Ñ*¨3Ó/°°!Ð4ˆØ—z‘z ,Ó/ˆØ/°¨~¸QÐ?ˆÜÐˆÑ  Ð"Ô#Ü—J’J˜yÖ)ˆDÜ—’˜Ó/ˆAßˆqØ$˜+ Q q§w¡w¨q£z lÐ3�ô —7‘7—>‘> %×(Ñ(¬B¯G©G¯N©N¸5×,AÑ,AÜÐ8°%±¸Ð;Ô<Ü—I’I˜eÔ$ÜÐ(¨¨¨t°D°6Ð:Ô;Ü—
’
˜4Ö'ñ *ð Ð#Ð#r,   )r  )rè  c                  ó   • \ rS rSrSrg)ÚFitzDeprecationiüc  r/   Nrm  r/   r,   r*   r(  r(  üc  s   † Úr,   r(  c                 ó  • [         R                  " S[        S9  SþS jn U [         l        SÿS jnU" [        SS5        U" [        S5        U" [        SS	5        U" [        S
5        U" [        S5        U" [        SS5        U" [        S5        U" [        SS5        U" [        S5        U" [        S5        U" [        S5        U" [        S5        U" [        S5        U" [        S5        U" [        SS5        U" [        S5        U" [        S5        U" [        SS5        U" [
        S5        U" [
        SS5        U" [        S5        U" [        S5        U" [        SS 5        U" [        S!5        U" [        S"5        U" [        S#S$5        U" [        S%S&5        U" [        S'S(5        U" [        S)S*5        U" [        S+S,5        U" [        S-S.5        U" [        S/S05        U" [        S1S25        U" [        S35        U" [        S45        U" [        S55        U" [        S65        U" [        S75        U" [        S8S95        U" [        S:S;5        U" [        S<S=5        U" [        S>5        U" [        S?5        U" [        S@SA5        U" [        SBSC5        U" [        SDSE5        U" [        SF5        U" [        SG5        U" [        SHSI5        U" [        SJ5        U" [        SKSL5        U" [        SMSN5        U" [        SO5        U" [        SP5        U" [        SQ5        U" [        SR5        U" [        SS5        U" [        ST5        U" [        SU5        U" [        SV5        U" [        SW5        U" [        SX5        U" [        SYSZ5        U" [        S[5        U" [        S\S]5        U" [        S^S_5        U" [        S`Sa5        U" [        Sb5        U" [        Sc5        U" [        Sd5        U" [        Se5        U" [        SfSg5        U" [        Sh5        U" [        Si5        U" [        Sj5        U" [        SkSl5        U" [        Sm5        U" [        Sn5        U" [        So5        U" [        Sp5        U" [        SqSr5        U" [        Ss5        U" [        SsSt5        U" [        Su5        U" [        Sv5        U" [        Sw5        U" [        Sx5        U" [        Sy5        U" [        S5        U" [        S5        U" [        Sz5        U" [        S{S|5        U" [        S}S~5        U" [        SS€5        U" [        S�S‚5        U" S SƒS„5        U" S S…S†5        U" S S‡5        U" S S‡Sˆ5        U" S S‰SŠ5        U" S S‹SŒ5        U" S S�SŽ5        U" S S�5        U" S S�5        U" [        Sy5        U" [        S‘5        U" [        S’5        U" [        S“5        U" [        S”5        U" [        S•5        U" [        S–5        U" [        S—5        U" [        S˜5        U" [        S™5        U" [        Sš5        U" [        S›5        U" [        Sœ5        U" [        S�5        U" [        Sž5        U" [        SŸ5        U" [        S 5        U" [        S¡5        U" [        S¢5        U" [        S£5        U" [        S¤S¥5        U" [        S¦S§5        U" [        S¨5        U" [        S©5        U" [        Sª5        U" [        S«5        U" [        S¬5        U" [        S­5        U" [        S®5        U" [        S¯5        U" [        S°5        U" [        S±5        U" [        S²5        U" [        S³5        U" [        S´5        U" [        Sµ5        U" [        S¶5        U" [        S·5        U" [        S¸5        U" [        S¹5        U" [        Sº5        U" [        S»S¼5        U" [        S½5        U" [        S¾S¿5        U" [        SÀ5        U" [        SÁSÂ5        U" [        SÃ5        U" [        S5        U" [        SÄSÅ5        U" [        S
5        U" [        SÆ5        U" [        SÇ5        U" [        S5        U" [        SS5        U" [        SÈ5        U" [        SÉ5        U" [        SÊ5        U" [        SË5        U" [        SÌ5        U" [        SÍSÎ5        U" [        SÏ5        U" [        SÐ5        U" [        SÑSÒ5        U" [        SÓSÔ5        U" [        SÕ5        U" [        SÖ5        U" [        S×5        U" [        SØ5        U" [        SÙSÚ5        U" [        SÛSÜ5        U" [        SÝ5        U" [        SÞSß5        U" [        Sà5        U" [        Sá5        U" [        Sâ5        U" [        Sã5        U" [        Sä5        U" [        SåSæ5        U" [        Sç5        U" [        SèSé5        U" [        SêSë5        U" [        SìSí5        U" [        SîSï5        U" [        SîSð5        U" [        Sñ5        U" [        SòSó5        U" [        Sô5        U" [        Sõ5        U" [        S5        U" [        Sö5        U" [        S÷Sø5        U" [        S÷Sù5        U" [        S÷Sú5        U" [        Sû5        U" [        Sw5        U" [        Sü5        U" [        Ss5        U" [        SsSt5        U" [        Su5        U" [        Sv5        U" [        Sw5        U" [        Sx5        U" [        Sý5        U" [        Sã5        U" [         S¬5        U" [         S­5        U" [         S®5        U" [         S¯5        U" [         S°5        U" [         S±5        U" [         S²5        U" [         S³5        U" [         S´5        U" [         Sµ5        U" [         S¶5        U" [         SË5        U" [         SÌ5        g (   NÚonce©Úcategoryc                ó¼   • [         R                  " XX#US9nUR                  S5      nUS:  a  [        U5        g XgS  R	                  5       S   SS  n[        U5        g )N)rt   r(  r   rr  )ÚwarningsÚformatwarningr§   r(   r  )rž   Úcatrk   rm   rf   rt   r   rŸ  s           r*   ÚshowthisÚ!restore_aliases.<locals>.showthisd  s[   € Ü×%Ò% c°ÀtÑLˆØ�I‰IÐ'Ó(ˆØˆq‹5Ü�ŒIØØ�Bˆx×"Ñ"Ó$ QÑ'¨¨Ð+ˆÜˆD�	r,   c                ó®  ^ ^^^• T c  [         R                  [           m T(       d:  SmSnT H0  nUS:X  a  SnM  U(       a  TUR                  5       -  mSnM+  TU-  mM2     [	        T T5      m[	        T TS5      (       a   ST  ST 35       e[        T5      (       a.  U UUU4S jn[        T TU5        S	T S
TR                   3Ul        g[        T TT5        g)ai  
Adds an alias for a class_ or module item clled <class_>.<new>.

class_:
    Class/module to modify; use None for the current module.
new_name:
    String name of existing item, e.g. name of method.
legacy_name:
    Name of legacy object to create in <class_>. If None, we generate
    from <item> by removing underscores and capitalising the next
    letter.
Nra   Fr<  Tzclass z already has c            	     ó\   >• [         R                  " ST< ST ST S3[        S9  T" U 0 UD6$ )Nz"legacy_name=z" removed from z after v1.19.0 - use "z".r+  )r.  r·  r(  )r  r  Úclass_Úlegacy_nameÚnew_nameÚ
new_objects     €€€€r*   Údeprecated_functionÚ<restore_aliases.<locals>._alias.<locals>.deprecated_function*d  s@   ø€ Ü—’Ø(˜K™>¨¸¸Ð@VÐW_ÐV`Ð`bÐcÜ!0òñ " DÐ3¨FÑ3Ð3r,   z;*** Deprecated and removed in version after v1.19.0 - use "z". ***
)rÃ  Úmodulesr2   rz
  rï   rÿ  rr  r*  )r5  r7  r6  Úcapitalise_nextrö  r9  r8  s   ```   @r*   Ú_aliasÚrestore_aliases.<locals>._aliasd  së   û€ ð ‰>Ü—[‘[¤Ñ*ˆFÞØˆKØ#ˆOÛ�Ø˜“8Ø&*’OÞ$Ø 1§7¡7£9Ñ,�KØ&+’Oà 1Ñ$’Kñ ô ˜f hÓ/ˆ
Ü˜F K°×6Ñ6Ðc¸&ÀÀÈÐVaÐUbÐ8cÓcÐ6Ü�Z× Ñ ÷4ð 4ô �V˜[Ð*=Ô>àQÐRZÐQ[Ð[cØ!×)Ñ)Ð*ð,ð  Õ'ô
 �V˜[¨*Õ5r,   rÕ  ÚfileGetrø  r	  ÚsoundGetr  r  r&  ÚgetTextPagerS  r…  ÚsetBlendModer‘  r   r¤  r³  rÉ  rÌ  rÐ  ÚsetOCrØ  rê  rU  ÚfileUpdru  rv  rÄ  ÚconvertToPDFr¢  r€  r�  ÚdeletePageRangerº  ÚembeddedFileAddr½  ÚembeddedFileCountrÁ  ÚembeddedFileDelrÄ  ÚembeddedFileGetrË  ÚembeddedFileInfor¢  ÚembeddedFileNamesrÐ  ÚembeddedFileUpdrá  rí  r  r  r3  rU  ÚgetOCGsrm  ÚgetPageFontListrq  ÚgetPageImageListr�  r†  r‰  ÚgetPageXObjectListr�  ÚgetSigFlagsr®  ÚgetToCr¡  rÁ  r¹  Ú	insertPDFrÕ  rw  Ú	isFormPDFr  ÚisPDFrå  ré  r*	  rŸ  rK	  r[	  rÂ  rÀ  rw	  rt  r�	  ÚpageCropBoxr  rK  Ú
PDFCatalogrÛ  Ú
PDFTrailerr¬	  ÚpreviousLocationr”  rj
  rÃ  rL
  ræ
  ÚsetToCrï
  rM  rR
  rv  ÚisStreamr_  rL  rQ
  rw  r¦  ÚmetadataXMLrc  ÚgetRectArear>  r?  r�  r€  r“  r   r  Ú	preRotater
  ÚpreScaler  ÚpreShearr  ÚpreTranslater¸  Ú	getPDFnowr  Ú	getPDFstrrT  ÚgetTextlengthr€  ÚImagePropertiesr  Ú	PaperRectr   Ú	PaperSizer  rþ  rC  rþ  r  r  r  r  r  r  r  r!  r$  r)  r.  r1  r5  r8  r<  r?  r   r€	  rá  r’  ÚCropBoxPositionr–  rN
  rª  rv  r·  r¾  rÂ  rÆ  rÉ  rÌ  rÏ  r_  rØ  rÞ  râ  rí  rñ  rõ  rP
  r  ÚgetDisplayListr  ri  ÚgetFontListrv  r&  ÚgetImageListr  rˆ  ÚgetSVGimager‘  r—  r¯  r×  rA  rŸ  ra  r‹  Ú
_isWrappedrK  rð  r8  r,  rþ  ÚMediaBoxSizer^  r  r{  ri
  r&  Ú
setCropBoxr@  ÚsetMediaBoxrï  rÈ  ÚshowPDFpageru  rN  rŒ  rZ  rš  r&  Ú
copyPixmapr×  rÞ  ÚinvertIRectr  ÚpillowWriter  Ú
pillowDatar  Ú
writeImageÚwritePNGrG  rï  ÚsetResolutionrP  rS  rg  r¸  ÚgetImageDataÚ
getPNGDataÚ
getPNGdatarl  r  rÁ  rô
  r.   )r.  Úfilterwarningsr(  Úshowwarningrã   rY  rÂ   rq  rm  r€  r  rÓ   rî  rÐ  r,  rY  r  )r1  r=  s     r*   Úrestore_aliasesr  ÿc  s‹	  € Ü×Ò˜V¬oÒ>ôð $„HÔô)6ñV ŒE�:¨IÔ6Ù
ŒE�<Ô Ù
ŒE�;¨JÔ7Ù
ŒE�:ÔÙ
ŒE�=Ô!Ù
ŒE�>¨MÔ:Ù
ŒE�;ÔÙ
ŒE�?¨NÔ;Ù
ŒE�<Ô Ù
ŒE�<Ô Ù
ŒE�;ÔÙ
ŒE�:ÔÙ
ŒE�?Ô#Ù
ŒE�:ÔÙ
ŒE�8˜WÔ%Ù
ŒE�=Ô!Ù
ŒE�:ÔÙ
ŒE�=¨IÔ6Ù
ŒK˜Ô&Ù
ŒK˜¨MÔ:Ù
ŒH�oÔ&Ù
ŒHÐ*Ô+Ù
ŒHÐ&¨NÔ;Ù
ŒH�kÔ"Ù
ŒH�mÔ$Ù
ŒH�nÐ,=Ô>Ù
ŒH�mÐ,=Ô>Ù
ŒH�oÐ,?Ô@Ù
ŒH�mÐ,=Ô>Ù
ŒH�mÐ,=Ô>Ù
ŒH�nÐ,>Ô?Ù
ŒH�oÐ,?Ô@Ù
ŒH�mÐ,=Ô>Ù
ŒH�nÔ%Ù
ŒH�oÔ&Ù
ŒH�oÔ&Ù
ŒH�oÔ&Ù
ŒHÐ'Ô(Ù
ŒH�j¨IÔ6Ù
ŒHÐ&Ð,=Ô>Ù
ŒHÐ'Ð,>Ô?Ù
ŒHÐ'Ô(Ù
ŒH�oÔ&Ù
ŒHÐ)Ð,@ÔAÙ
ŒH�n¨MÔ:Ù
ŒH�i Ô*Ù
ŒHÐ(Ô)Ù
ŒH�mÔ$Ù
ŒH�l¨KÔ8Ù
ŒH�jÔ!Ù
ŒH�m¨KÔ8Ù
ŒH�h Ô(Ù
ŒH�oÔ&Ù
ŒH�mÔ$Ù
ŒH�oÔ&Ù
ŒH�kÔ"Ù
ŒH�oÔ&Ù
ŒH�kÔ"Ù
ŒH�lÔ#Ù
ŒH�jÔ!Ù
ŒH�oÔ&Ù
ŒH�lÔ#Ù
ŒH�n¨MÔ:Ù
ŒH�kÔ"Ù
ŒH�m¨LÔ9Ù
ŒH�m¨LÔ9Ù
ŒH�oÐ,>Ô?Ù
ŒH�nÔ%Ù
ŒHÐ'Ô(Ù
ŒH�nÔ%Ù
ŒH�nÔ%Ù
ŒH�i Ô*Ù
ŒHÐ(Ô)Ù
ŒH�oÔ&Ù
ŒH�oÔ&Ù
ŒHÐ&¨JÔ7Ù
ŒH�mÔ$Ù
ŒH�mÔ$Ù
ŒH�mÔ$Ù
ŒHÐ'Ô(Ù
ŒHÐ)¨MÔ:Ù
ŒE�:ÔÙ
ŒE�:¨MÔ:Ù
ŒE�?Ô#Ù
ŒE�>Ô"Ù
ŒE�:ÔÙ
ŒE�=Ô!Ù
ŒD�-Ô Ù
ŒD�,ÔÙ
ŒD�,ÔÙ
ŒFÐ$Ô%Ù
ŒF�K¨KÔ8Ù
ŒF�J¨JÔ7Ù
ŒF�J¨JÔ7Ù
ŒF�N¨NÔ;Ù
ˆD�-¨KÔ8Ù
ˆD�-¨KÔ8Ù
ˆDÐ#Ô$Ù
ˆDÐ#¨OÔ<Ù
ˆD�/Ð,=Ô>Ù
ˆD�,¨KÔ8Ù
ˆD�,¨KÔ8Ù
ˆD�-Ô Ù
ˆD�.Ô!Ù
ŒG�]Ô#Ù
ŒG�YÔÙ
ŒDÐ#Ô$Ù
ŒDÐ$Ô%Ù
ŒDÐ"Ô#Ù
ŒDÐ&Ô'Ù
ŒDÐ'Ô(Ù
ŒD�/Ô"Ù
ŒDÐ"Ô#Ù
ŒDÐ%Ô&Ù
ŒDÐ&Ô'Ù
ŒDÐ"Ô#Ù
ŒDÐ$Ô%Ù
ŒDÐ&Ô'Ù
ŒDÐ#Ô$Ù
ŒDÐ'Ô(Ù
ŒDÐ"Ô#Ù
ŒDÐ'Ô(Ù
ŒD�,ÔÙ
ŒDÐ"Ô#Ù
ŒD�)¨IÔ6Ù
ŒDÐ$Ð,=Ô>Ù
ŒD�.Ô!Ù
ŒD�-Ô Ù
ŒD�/Ô"Ù
ŒDÐ%Ô&Ù
ŒD�-Ô Ù
ŒD�-Ô Ù
ŒD�,ÔÙ
ŒD�+ÔÙ
ŒD�+ÔÙ
ŒD�/Ô"Ù
ŒD�+ÔÙ
ŒD�+ÔÙ
ŒD�-Ô Ù
ŒD�/Ô"Ù
ŒD�-Ô Ù
ŒD�-Ô Ù
ŒD�,ÔÙ
ŒD�.Ô!Ù
ŒD�.Ô!Ù
ŒDÐ#Ð,<Ô=Ù
ŒD�.Ô!Ù
ŒD�+¨MÔ:Ù
ŒDÐ"Ô#Ù
ŒD�,¨NÔ;Ù
ŒD�+ÔÙ
ŒD�,ÔÙ
ŒD�/¨MÔ:Ù
ŒD�*ÔÙ
ŒDÐ#Ô$Ù
ŒDÐ"Ô#Ù
ŒD�-Ô Ù
ŒD�.¨MÔ:Ù
ŒD�-Ô Ù
ŒD�.Ô!Ù
ŒD�-Ô Ù
ŒD�-Ô Ù
ŒDÐ"Ô#Ù
ŒD�,¨LÔ9Ù
ŒD�,ÔÙ
ŒD�,ÔÙ
ŒD�*¨JÔ7Ù
ŒD�/¨NÔ;Ù
ŒD�+ÔÙ
ŒD�/Ô"Ù
ŒDÐ#Ô$Ù
ŒD�,ÔÙ
ŒD�-¨LÔ9Ù
ŒD�.¨MÔ:Ù
ŒD�.Ô!Ù
ŒD�/¨MÔ:Ù
ŒDÐ)Ô*Ù
ŒD�-Ô Ù
ŒD�/Ô"Ù
ŒD�,ÔÙ
ŒF�LÔ!Ù
ŒF�F¨LÔ9Ù
ŒF�LÔ!Ù
ŒF�N¨MÔ:Ù
ŒF�J¨MÔ:Ù
ŒF�M¨LÔ9Ù
ŒF�F¨LÔ9Ù
ŒF�F¨JÔ7Ù
ŒF�KÔ Ù
ŒF�I¨OÔ<Ù
ŒF�LÔ!Ù
ŒF�KÔ Ù
ŒF�JÔÙ
ŒF�KÔ Ù
ŒF�I¨NÔ;Ù
ŒF�I¨LÔ9Ù
ŒF�I¨LÔ9Ù
ŒD�+ÔÙ
ŒD�*ÔÙ
ŒDÐ"Ô#Ù
ŒD�*ÔÙ
ŒD�*¨MÔ:Ù
ŒD�/Ô"Ù
ŒD�.Ô!Ù
ŒD�*ÔÙ
ŒD�-Ô Ù
ŒJ˜Ô'Ù
ŒJ˜Ô%Ù
ŒE�=Ô!Ù
ŒE�=Ô!Ù
ŒE�<Ô Ù
ŒE�;ÔÙ
ŒE�;ÔÙ
ŒE�?Ô#Ù
ŒE�;ÔÙ
ŒE�;ÔÙ
ŒE�=Ô!Ù
ŒE�?Ô#Ù
ŒE�=Ô!Ù
ŒE�=Ô!Ù
ŒEÐ#Õ$r,   zPyMuPDF z : Python bindings for the MuPDF z library.
Python z running on rT  l        z-bit).
)ra   r   rà  r&  )r   r   r   r   r   N)r²  útyping.Sequencer«  r¶   )r^  úmupdf.PdfObjr`  r9   )r2  zmupdf.PdfDocumentr^  r�  r`  r9   )Ústrict)rö  rw  )r×   rÓ   rÿ   rè  r«  r¶   )r2  rÂ   r  r9   r«  rµ   )rd
  r¼  r«  r¶   )r²  r¼  r«  ré   )r²  r¼  )r+  r¼  r«  ré   )r%  r¼  r«  ré   )rö  z&typing.Union[list, tuple, float, None]r  rè  r«  rè  )r2  rÂ   r:  r€  )
r   rè  r'  ztyping.Union[list, tuple, None]r  ré   rÝ  r9   r«  rè  )rŸ  rè  r«  rè  r.   )
ru  rè  rs  ru  r³  ÚAnyTyper   ru  r«  rè  )r½  r¢  r   )
r   rè  rÿ   rè  r   rœ  r  r9   r«  rœ  )r1  r´  r«  r:   )rF  r»   rG  r»   r«  r€  )r}  )rh  rè  rk   ru  )rh  rè  )r×   rc  r«  r9   )r×   rc  rà   z'Annot'r«  r²  r­  rs  )rÇ  r»   rƒ  r»   r  r½   r«  rµ   )r   rè  r«  r9   )r™  r   r   )rý   r½   rØ  r9   rº  r9   r«  rµ   )rŸ  rè  r«  r,  )rŸ  rè  r«  r¶   )r×   rc  rÜ  z'Font'r«  r²  )rK  r9   r«  r¶   )r  r9   r«  rè  (Ì  r*  Ú
__future__r   Úatexitrù  Úcollectionsrm  Úimportlib.utilr›   rg   r>   r¬  ri   r¹  r>  r  rÃ  rÄ  rš  rÁ  r.  r   r¿  ra   r   rM   r‚   r=   rj  r\   r_   rµ   rR   rU   rS   rW   rY   r]   r`   r(   rw   r{   r«  r(  r+  rš  r„   r†   r  r  rŠ   r~  r”   Ú__annotations__r–   r—   rŸ   r¢   r  Ú	machineryÚSourceFileLoaderÚload_modulerH  rI  r£   rl   r@   r¤   Úreinit_singlethreadedr¨   Ú_buildr©   rª   r«   r¬   r­   r®   r¯   r°   rÍ  r  Úpymupdf_dater¶   r;   rO  ÚFZ_VERSION_MAJORÚFZ_VERSION_MINORÚFZ_VERSION_PATCHÚversionÚVersionFitzÚVersionBindÚVersionDater·   Úformat_gr´  rÞ  r   r§  r³  ÚOptionalr¶  r:   r¸  rœ  rv  ÚUnionr9   rº  ÚSequencerw  rè  ru  rº   r»   r¼   r½   rË   rÏ   rØ   rÛ   rá   r-  rã   r|  rØ  r,  rH  rY  ÚFzDocument_insert_pdfrÈ  rÂ   r?   rÈ  rÚ  rÇ  rm  r€  r  r€  r�  r\  rª  r  r�  rÓ   rî  r#  rÐ  r,  r  rÁ  r  rY  rq  r;  r2   Ú_selfr¨  rG   r>  Ú_valuer8   rr  Ú
getmembersÚPDF_SIGNATURE_SHOW_LABELSÚPDF_SIGNATURE_SHOW_DNÚPDF_SIGNATURE_SHOW_DATEÚPDF_SIGNATURE_SHOW_TEXT_NAMEÚPDF_SIGNATURE_SHOW_GRAPHIC_NAMEÚPDF_SIGNATURE_SHOW_LOGOÚ PDF_SIGNATURE_DEFAULT_APPEARANCEÚUCDN_EAST_ASIAN_HÚPDF_TX_FIELD_IS_MULTILINEÚUCDN_SCRIPT_ADLAMÚAnyrƒ  ÚBase14_fontnamesrï  r  ré  rÿ  rï  r†  r‡  rª  r˜  r¥  r”  ÚFZ_RECOMPRESS_NEVERÚFZ_RECOMPRESS_SAMEÚFZ_RECOMPRESS_LOSSLESSrÊ	  ÚFZ_RECOMPRESS_J2KrÃ	  rÅ	  ÚFZ_SUBSAMPLE_BICUBICÚ	PDF_OC_ONÚPDF_OC_TOGGLEÚ
PDF_OC_OFFrÜ
  r	  r  r  rB  r  r@  rA  ÚLINK_FLAG_R_VALIDÚLINK_FLAG_B_VALIDÚLINK_FLAG_FIT_HÚLINK_FLAG_FIT_VÚLINK_FLAG_R_IS_ZOOMr  r  ÚSTAMP_ApprovedÚ
STAMP_AsIsÚSTAMP_ConfidentialÚSTAMP_DepartmentalÚSTAMP_ExperimentalÚSTAMP_ExpiredÚSTAMP_FinalÚSTAMP_ForCommentÚSTAMP_ForPublicReleaseÚSTAMP_NotApprovedÚSTAMP_NotForPublicReleaseÚ
STAMP_SoldÚSTAMP_TopSecretÚSTAMP_Draftr¿  rÀ  rÁ  rÂ  ÚTEXT_FONT_SUPERSCRIPTrá  râ  rã  rä  ÚTEXT_OUTPUT_TEXTÚTEXT_OUTPUT_HTMLÚTEXT_OUTPUT_JSONÚTEXT_OUTPUT_XMLÚTEXT_OUTPUT_XHTMLÚFZ_STEXT_PRESERVE_LIGATURESrf
  ÚFZ_STEXT_PRESERVE_WHITESPACErg
  ÚFZ_STEXT_PRESERVE_IMAGESr$  ÚFZ_STEXT_INHIBIT_SPACESÚTEXT_INHIBIT_SPACESÚFZ_STEXT_DEHYPHENATEre
  ÚFZ_STEXT_PRESERVE_SPANSÚTEXT_PRESERVE_SPANSÚFZ_STEXT_MEDIABOX_CLIPrh
  Ú$FZ_STEXT_USE_CID_FOR_UNKNOWN_UNICODEÚ TEXT_USE_CID_FOR_UNKNOWN_UNICODEÚFZ_STEXT_COLLECT_STRUCTUREÚTEXT_COLLECT_STRUCTUREÚFZ_STEXT_ACCURATE_BBOXESÚTEXT_ACCURATE_BBOXESÚFZ_STEXT_COLLECT_VECTORSÚTEXT_COLLECT_VECTORSÚFZ_STEXT_IGNORE_ACTUALTEXTÚTEXT_IGNORE_ACTUALTEXTÚFZ_STEXT_SEGMENTÚTEXT_SEGMENTÚFZ_STEXT_CLIPÚ	TEXT_CLIPÚFZ_STEXT_LAZY_VECTORSÚTEXT_LAZY_VECTORSÚFZ_STEXT_FUZZY_VECTORSÚTEXT_FUZZY_VECTORSÚFZ_STEXT_PARAGRAPH_BREAKÚTEXT_PARAGRAPH_BREAKÚFZ_STEXT_TABLE_HUNTÚTEXT_TABLE_HUNTÚFZ_STEXT_COLLECT_STYLESÚTEXT_COLLECT_STYLESÚ$FZ_STEXT_USE_GID_FOR_UNKNOWN_UNICODEÚ TEXT_USE_GID_FOR_UNKNOWN_UNICODEr  ÚTEXT_CLIP_RECTÚFZ_STEXT_ACCURATE_ASCENDERSÚTEXT_ACCURATE_ASCENDERSÚFZ_STEXT_ACCURATE_SIDE_BEARINGSÚTEXT_ACCURATE_SIDE_BEARINGSÚTEXT_STEXT_SEGMENTÚTEXT_CID_FOR_UNKNOWN_UNICODEÚTEXTFLAGS_WORDSÚTEXTFLAGS_BLOCKSÚTEXTFLAGS_DICTÚTEXTFLAGS_RAWDICTÚTEXTFLAGS_SEARCHÚTEXTFLAGS_HTMLÚTEXTFLAGS_XHTMLÚTEXTFLAGS_XMLÚTEXTFLAGS_TEXTÚTEXT_ENCODING_LATINÚTEXT_ENCODING_GREEKÚTEXT_ENCODING_CYRILLICr½  r3  r/  r1  ÚPDF_BM_ColorÚPDF_BM_ColorBurnÚPDF_BM_ColorDodgeÚPDF_BM_DarkenÚPDF_BM_DifferenceÚPDF_BM_ExclusionÚPDF_BM_HardLightÚ
PDF_BM_HueÚPDF_BM_LightenÚPDF_BM_LuminosityÚPDF_BM_MultiplyÚPDF_BM_NormalÚPDF_BM_OverlayÚPDF_BM_SaturationÚPDF_BM_ScreenÚPDF_BM_SoftLightr
  rß   r¸  rº  r´  ræ  rå  rç  r  Údictkey_ascrS  r  ru  r  rV  rO  rÇ  r  r3  r6  rë  Ú
dictkey_dar¸  rÆ  Údictkey_descrn  Údictkey_effectrÙ  rÅ  rÀ  rR  rT  rU  Údictkey_glyphr  r9  rü  r†  rÇ  ro  r  r7  r4  r  rQ  rÙ  rÈ  rê  rW  r¿  r¹  r8  r  r5  rÚ  r²  r  rm  r  r  r  rí  ro  rp  r&  rì  r{  rò  r  r+  r*  rb  rb  rÕ  r=  rm  ro  rs  rr  rB  rz  r
  r'  r$  rÄ  r/  rƒ  rì  rÉ  rS  r7  r¥  r
  r÷  rÏ  r’  r£  r�  rÔ  rõ  r^  rZ  ró  rå  rÞ  rü  rÀ  rC  rÃ  r  rW  r™  rY  r	  r!  ra  r¨  r-
  r—  r.
  ro  r?  rK  rW  rª  rí  rî  r\  r]  rU  rb  rh  rt  rÅ  rÄ  rB  rz	  rG  rÆ  rð  r×  ry  r÷  rÁ  rØ  rÈ  r7  ré  r½  rw  rî  ró  rô  rÿ  rm  r9  r   r  rL  rH  r  rL  ré  rj  rl  rç  rê  rû  rÉ  rÍ  r•  r—  rø  rœ  rŸ  r	  r/  r�  rê  r  rÝ  rb  ró  râ  r¾  râ  r|  rP  rò  rq  r'  r  r  rô  r]  rß  rv  r  rì  r  rœ  r{
  r  rê  r  r’  rŸ  r  r1  rï  r  r  rÁ  r.  r  r!  r0  rT  ÚMSG_BAD_DOCUMENTÚMSG_BAD_FILETYPEÚMSG_BAD_LOCATIONrp  rU  r±  rs	  r  rî
  rè  rS  r¸  ÚMSG_COLOR_COUNT_FAILEDr  r‡  r»  r�  rk  ra  rv  r  rÃ  rt	  rÂ  rX  r�  r©  r(  r  r  rp  rØ  r×  rý  rN  r  r,  rJ  rž  rà  rU  r  r  rù  r|  rT  r€  rŒ  r�  r“  r–  r›  rŸ  r£  r§  r©  r«  r®  r±  r¶  r´  rÏ  rÓ  rÚ  rÜ  rß  ÚFzPathWalker2rá  r×  r  r  r  r  r  r  r  r!  r#  r(  r*  r,  r/  r.  rþ  ÚPdfFilterOptions2r4  Ú	FzDevice2r™  Ú	FzOutput2r¡  r  r   r   rƒ  r…  rû  rü  rŒ  rŽ  r”  r‘  rÔ  r¸  r  r¢  r¦  r  r5  r·  rÀ  r¦  r2  rè  r’  r¢  rm  r&  rg  rÖ  rÂ  rj  rø  rò  r~  r  rn  r˜  rÕ  r�  r  r   r  r   rB  rÎ  rL  rn  r�  rU  rR  rÕ  r  r  r  rX  rö  ri  r  r  r  r  r  Úregisterr  r  r   r%  rz  r  r  r  r&  r  Úrecover_bbox_quadÚrecover_char_quadÚrecover_line_quadÚrecover_quadÚrecover_span_quadrè  ÚDeprecationWarningr(  r  Ú__version__rÄ  rk  Úmaxsize)rh  s   0r*   Ú<module>r'     s  ðòõ #ó Û Û Û Û Û Û 	Û Û 	Û Û 	Û Û 
Û Û Û Û Û Û å ð ØØØØØØØØØõsñl  2§:¡:§>¡>Ð2CÓ#DÈcÏjÉjÑY€ñ ˜rŸz™zŸ~™~¨mÓ<ÀcÇjÁjÑQ€
ñ ‹v€ØÐ òò!òð ØØØØØØØØõð> ØØØØØØØØõõ<.õ22ò ñ ˜×*Ñ*¨\Ñ9¹CÀ»FÑBÓCÐ òò$ñ  #Ð$@À!ÓDÐ ñ Ð/°Ó6€÷'ñ 'ñ ‹:€à04€Ð-Ó 4ð Ð òò"ð. �j‰j�n‰n˜mÓ,€ØÑáˆHˆ:�_ [¡OÐ3XÐ	YÔZÙˆHˆ:�^ B§J¡J¨|Ñ$<Ð#=Ð	>Ô?Ø�bÓÜãØ×)Ñ)×:Ñ:ØØó÷ ‘+“-ð 	ð ×Ñ×!Ñ!×'Ñ'�EðÝñ ˆuÐ-×.Ñ.Ø×#Ò#Ô%Ø	×ÒÔ!òõ #Ý &Ý $Ý #Ý #Ý )Ý  Ý &à× Ñ €ð €ñ °-×2EÑ2EÀcÔ2JÓKÒ2J¨Q™g ažjÑ2JÑKÓLÐ à˜u×5Ñ5°u×7MÑ7MÈu×OeÑOeÐfÓfð UØ
CÐ/BÑ.Dð  ESÈ%×J`ÑJ`Ðbg×bxÑbxÐz÷  {Qñ  {Qð  JRñ  ITð  	UóUÐfð
 ˜M¨4Ð
0€Ø€Ø€Ø€ð
 !õ 2ð$ €ð0Ø×"Ñ"€Jð
 �?‰?˜:Ñ&€Ø
�/‰/˜$Ñ
€Ø�?‰?˜5Ñ!€Ø	�‰�c˜4�iÑ	 €Ø	�‰˜Ÿ™Ñ	)€Ø	�‰˜Ñ	€à€Ø€
Ø€	Ø€	ò4õ$4ò.0õ0ò*ð  €	÷
Z<ñ Z<÷z*c'ñ c'÷LP	ñ P	÷fñ ÷BOñ O÷.+ñ +öZ Ø"'×"=Ò"=Ð÷ISñ ISðVf €÷)&ñ )&÷X|"ñ |"÷~ñ ÷tñ t÷noñ oôd:�Vô :ñ. Ó€÷e,ñ e,÷NNñ Nõb
 ÷Oñ Oðf ØØØØØõ;÷|j:ñ j:÷Zus'ñ s'÷lxñ x÷veXñ eX÷P`ñ `÷F	[ñ [÷|hBñ hB÷VWñ W÷t
añ a÷Htñ tðt Ø�KŠK˜Ñ!€EØØ"Ÿ^š^×1Ò1Ö3‰MˆE�6Ø×ÒÐ 8×9Ó9Ø×#Ò#Ð$4×5Ñ5áñ ˜E 5¨&Ö1ñ 4ð2 )*Ø×-Ò-ñ).à×)Ò)ñ)*ð ×+Ò+ñ),ð ×0Ò0ñ	)1ð
 ×3Ò3ñ)4ð ×+Ò+ñ),Ð$ð ×"Ò" aÓ'Ð'Ð'ð %¨×(GÒ(GÓGÐGÐGØ × 7Ò 7Ó7Ð7Ð7Øˆu�fà
�*Š*€ðÐ ð" €Û	€AØ!"€O�A—G’G“IÓñ 
à%€�Ñ Ø-€�Ñ Ø*€�Ñ Ø1€�Ñ Ø#€�Ñ Ø+€�Ñ Ø(€�Ñ Ø/€�Ñ Ø'€�Ñ Ø&€�Ñ Ø(€�Ñ Ø,€�Ñ Ø"€�Ñ Ø(€�Ñ à
€Ø€ð €Ø€àÐ ØÐ ØÐ ØÐ ð ×/Ò/Ð Ø×-Ò-Ð Ø×5Ò5Ð Ø×-Ò-Ð Ø×+Ò+Ð Ø×+Ò+Ð Ø×1Ò1Ð Ø×1Ò1Ð ð
 €	Ø€Ø€
ð
 €	Ø€	Ø€Ø€Ø€
Ø€
ØÐ ØÐ ØÐ ØÐ Ø€Ø€ØÐ àÐ ØÐ à€Ø€
ØÐ ØÐ ØÐ Ø€Ø€ØÐ ØÐ ØÐ ØÐ Ø€
Ø€Ø€à€ØÐ ØÐ ØÐ àÐ ØÐ ØÐ ØÐ Ø€àÐ ØÐ ØÐ Ø€ØÐ à×;Ò;Ð Ø ×=Ò=Ð Ø×5Ò5Ð Ø×3Ò3Ð Ø×-Ò-Ð Ø×3Ò3Ð Ø×1Ò1Ð Ø#(×#MÒ#MÑ  Ø×9Ò9Ñ Ø×5Ò5Ñ Ø×5Ò5Ñ Ø×9Ò9Ñ Ø×%Ò%�Ø×Ò�	Ø˜*Ó$Ø×3Ò3ÑØ˜*Ó$Ø×5Ò5Ñà×5Ò5Ñ Ø×+Ò+�Ø×3Ò3Ñ Ø#(×#MÒ#MÑ  Ø×)Ò)�Ø×;Ò;Ñ Ø#×CÒCÑ ñ "Ñ Ù?Ñ àØ
!ñ"à
"ñ#ð ññ +ñ	+�ð Ø
!ñ"à
"ñ#ð ññ +ñ	+Ñ ð Ø
!ñ"à
"ñ#ð ñð ñ	ñ
 +ñ+�ñ #Ñ àØ
"ñ#à
ñð ññ +ñ	+Ñ ð Ø
!ñ"à
"ñ#ð ñð ñ	ñ
 +ñ+�ð Ø
!ñ"à
"ñ#ð ñð ñ	ñ
 +ñ+�ð Ø
!ñ"à
"ñ#ð ññ +ñ	+�ð Ø
!ñ"à
"ñ#ð ññ +ñ	+�ð Ñ ØÑ ØÑ àÑ ð 
�Ø
�Ø
�ð �ØÑ Ø Ñ Ø�Ø Ñ ØÑ ØÑ Ø�
Ø�Ø Ñ Ø�Ø�Ø�Ø Ñ Ø�ØÑ ñ DÙYñ lÙeÙ}ÙZÙgñ
�
ô	‘Lõ 	ô	™õ 	ô	‘]õ 	ñ 	‘6Ó�Ù	‘GÓ	�Ù	‘GÓ	�ð
 �Ø�Ø�Ø�Ø�Ø�Ø�	Ø�Ø�Ø!Ñ Ø�Ø%Ñ Ø�Ø�
Ø�Ø�Ø�Ø�Ø�Ø�ØÑ Ø�Ø�Ø!Ñ Ø�Ø�Ø�Ø�
Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�ØÑ Ø�Ø�Ø�Ø�Ø�ðß:Ô:á*×/Ó/Ó1ÑÙ!×&Ò&Ö(‰Ù,7¹©NÑ™QÑ¡Ó)ñ )á™ñA
�ñHA
�ôNô	ô"ô!3ôH'ôUôôTô<ô
Uô ôTôôô:6ô$ô
ôCôL÷I÷Iôô/ô*2ô %ôPô.3=ôl
ô2ô>ô&&ô<
ôôVôrô84ônô$%ôPô ô.0ôj/ôdô(ô&ô"ôJNô0ôIô ô$ô ô*ô.ô6(ôôô(ôô"÷J%÷P7ôtô(ô0ôô2/ôô ;ô|4)ônô,ô"^ôB)ôXô ôB
 ôô>ôð. �
ôô)ôXôD$ôNô<KôZ7ô:ô0\ô(Tôl(%ôT
Hô*ô.+ôB>ôô:3ôl? ôD*ô*ô6ô
ô*ô,.ô
ôôô2	ôô*ôZô.(6ôVBôB"ô(ôô	ô"ô*ôZô,6ô.ôHô"ô0FôR&#ôR<ô8#:ôL-ô`3ô<'ôBô*"ôDô8ô ô2ô0 ôF(ôñ &Ñ Ù)�Ù?Ñ Ù(Ñ Ù%�Ù(Ñ Ù0Ñ Ù!Ñ Ù!Ñ Ù'Ñ Ù%Ñ Ù%�Ù�Ù%�Ù#�Ù*�Ù!�Ù�Ù-Ñ Ù/Ñ Ù&�Ù$�Ù�Ù�Ù(�Ù.�Ù,Ñ ð 'Ñ ÙÑ ô÷	÷P÷÷÷	÷	÷H÷
÷
-÷.ô$ô.÷
#ôô2.ôbô÷"÷J2÷jCSðN %)¸TÐRVòBØðBØ!ðBØ3:ðBØIOðBà÷Bð B÷J':ò ':÷T'ô,DôNJô1ôôôôôôXôô$ôN.ôbôUôpô8ôôNôöpˆU× Ò õ pôf!ôH0ôfô*ô(ôôôôôôô$ôô
!ô
÷+ö ˜u×6Ò6õ ö. §¢õ .ö>$ 5§?¢?õ $ô0ö$P/ 5§?¢?õ P/öf3%˜eŸošoõ 3%÷l1ò 1÷h÷*÷
ô
ôôô8ô÷ö$‘fõ ô÷Fò F÷Rô1÷(ò (ôVGð8 # t°¸À$È4÷ Q*ð Q*ðh  $¨°¸$À4ÈD÷ ð ôHôfôôôô/ôôôô$ôNô,ô6ô "ô>ô2D2÷N)÷ô(6
ôp2÷/÷dH÷@4÷ô$ô)ôXð, Ñ ØÑ ØÑ Ø !Ñ ÷	ô1ñ Ù“fØÙÙ“fØÙØØ÷ð ðJ ÙØàØØØØØà÷=ð =÷@{#ô {#ö~ Ø	×!Ó!Ñ"2Ô3Ø	×Ó¡Ô/ô(&ð ‡ƒ‘Ô ÷ Ð Ù×Ò�	ñ ‹6�Ü�M�D‰!‰Q‘Ù¡™e¡Q¡s¡U©A©c©EÐ2�H‰T�ZŠZ‹\Óñ ôô÷I$÷^ Ð ñ
 $×5Ò5Ñ Ù#×5Ò5Ñ Ù#×5Ò5Ñ Ù#×0Ò0�Ù#×5Ò5Ñ ç Ð ö	Ñ(õ 	ôU%ðn ð �á
�;�-Ñ?À¸}ñ MØ×"Ò" 1Ñ%Ð& a¨×(8Ò(8¸Ñ(;Ð'<¹LÈÏÊÈÑVXÐ_b×_jÒ_jÑmrÓ_rÑY[ÐxzÐX{ñ  |Dð	Eñ øð]\ ó ÞðüòH LøðN ó 0Ø˜Ñ" ZÑ/ƒJð0ûñh] ó ØÔðúsM   Ç7AK$ ÊAK5ÌAK: è3AAL ÁK$
AK2ÁK1AK2ÁK:ALÁLALÁL
ALÁLAL