§
    Æ‡tjê[  ã                   ó\  — U d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZ ddlmZmZ erddlmZ ddlZddlZdZeej        eej        f         Zeeef         Z G d	„ d
¦  «        Z dede!fd„Z"de#defd„Z$dede%defd„Z&	 	 d]de!ez  dededefd„Z'de%de%de%de%fd„Z(de%de%de%d e!de!f
d!„Z)d"e%de%de%de%d e!de!fd#„Z*e+e,e,f         Z-e+e,e,e,e,f         Z.e+e,e,e,e,e,e,f         Z/ee+e         e+ee,e,f         e+ee,e,e,e,f         e+ee,e,e,e,e,e,f         f         Z0d$Z1e/e2d%<   dede.fd&„Z3d'e/d(e/de/fd)„Z4d*e/d+e-de/fd,„Z5d*e/d+e-de-fd-„Z6d*e/d.e.de.fd/„Z7d*e/d+e-de-fd0„Z8d1e#de9fd2„Z: ed3¦  «        Z;d4ee;         dee;         fd5„Z<d"ee;ge9f         d4ee;         de+e=e;         e=e;         f         fd6„Z>d7e,d8e,d9e%de?fd:„Z@d;ee-         de.fd<„ZA	 d^d=ee;         d>ee;ge,f         d?e;dz  de;dz  fd@„ZBdAe%d=ee;         dee+e;dBf                  fdC„ZCd_de!dDe%de%fdE„ZDdF E                    dG„ dHD ¦   «         ¦  «        ZFde!defdI„ZGd1edefdJ„ZHdKe.defdL„ZId*e/defdM„ZJdNdOdPdOde-fdQ„ZK edRdO¬S¦  «        ZL G dT„ dUeeL         ¦  «        ZMg dV¢ZNg dW¢ZOdXe%defdY„ZPdXe%defdZ„ZQd[e!de!fd\„ZRdS )`zMiscellaneous Routines.é    N)ÚCallableÚIterableÚIterator)Úescape)ÚTYPE_CHECKINGÚAnyÚBinaryIOÚGenericÚTextIOÚTypeVarÚUnionÚcast)ÚPDFTypeErrorÚPDFValueError)ÚLTComponentiÿÿÿc                   óN   — e Zd ZdZdedededdfd„Zdefd„Zd	e	d
e	de	ddfd„Z
dS )Úopen_filenamezºContext manager that allows opening a filename
    (str or pathlib.PurePath type is supported) and closes it on exit,
    (just like `open`), but does nothing for file-like objects.
    ÚfilenameÚargsÚkwargsÚreturnNc                 ór  — t          |t          j        ¦  «        rt          |¦  «        }t          |t          ¦  «        rt	          |g|¢R i |¤Ž| _        d| _        d S t          |t          j        ¦  «        r#t          t          |¦  «        | _        d| _        d S t          dt          |¦  «        › �¦  «        ‚)NTFzUnsupported input type: )Ú
isinstanceÚpathlibÚPurePathÚstrÚopenÚfile_handlerÚclosingÚioÚIOBaser   ÚAnyIOr   Útype)Úselfr   r   r   s       úL/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pdfminer/utils.pyÚ__init__zopen_filename.__init__*   s¯   € Ý�h¥Ô 0Ñ1Ô1ð 	%Ý˜8‘}”}ˆHÝ�h¥Ñ$Ô$ð 	LÝ'+¨HÐ'F°tÐ'FÐ'FÐ'F¸vÐ'FÐ'FˆDÔØˆDŒLˆLˆLÝ˜¥"¤)Ñ,Ô,ð 	LÝ $¥U¨HÑ 5Ô 5ˆDÔØ ˆDŒLˆLˆLåÐJ½$¸x¹.¼.ÐJÐJÑKÔKÐKó    c                 ó   — | j         S ©N)r   ©r$   s    r%   Ú	__enter__zopen_filename.__enter__6   s   € ØÔ Ð r'   Úexc_typeÚexc_valÚexc_tbc                 óJ   — | j         r| j                             ¦   «          d S d S r)   )r   r   Úclose)r$   r,   r-   r.   s       r%   Ú__exit__zopen_filename.__exit__9   s1   € ØŒ<ð 	&ØÔ×#Ò#Ñ%Ô%Ð%Ð%Ð%ð	&ð 	&r'   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
FileOrNamer   r&   r"   r+   Úobjectr1   © r'   r%   r   r   $   s¡   € € € € € ðð ð

L ð 
L°Cð 
LÀ3ð 
LÈ4ð 
Lð 
Lð 
Lð 
Lð!˜5ð !ð !ð !ð !ð& ð &°&ð &À&ð &ÈTð &ð &ð &ð &ð &ð &r'   r   Úin_strr   c                 óœ   — t          | t          ¦  «        s$J t          t          | ¦  «        ¦  «        ¦   «         ‚|                      ¦   «         S )z'Converts to bytes, encoding to unicode.)r   r   r#   Úencode)r9   s    r%   Úmake_compat_bytesr<   >   s<   € å�f�cÑ"Ô"Ð5Ð5¥C­¨V©¬Ñ$5Ô$5Ñ5Ô5Ð"Ø�=Š=‰?Œ?Ðr'   Úoc                 ó  — t          | t          ¦  «        rft          j        | ¦  «        }|d         €t	          | ¦  «        S 	 |                      |d         ¦  «        S # t          $ r t	          | ¦  «        cY S w xY wt	          | ¦  «        S )z>Converts everything to string, if bytes guessing the encoding.Úencoding)r   ÚbytesÚcharset_normalizerÚdetectr   ÚdecodeÚUnicodeDecodeError)r=   Úencs     r%   Úmake_compat_strrF   D   s‹   € å�!•UÑÔð 	Ý Ô'¨Ñ*Ô*ˆØˆzŒ?Ð"Ý�q‘6”6ˆMð	Ø—8’8˜C 
œOÑ,Ô,Ð,øÝ!ð 	ð 	ð 	Ý�q‘6”6ˆMˆMˆMð	øøøõ �1‰vŒvˆs   ÁA ÁA9Á8A9ÚsÚsizec                 óŒ   — |dk     r
| d |…         S t          | ¦  «        |k    r |dz
  dz  }| d |…         › d| | d …         › �S | S )Né   é   é   z ... )Úlen)rG   rH   Úlengths      r%   Úshorten_strrO   R   s_   € Øˆa‚x€xØ��$�ŒxˆÝ
ˆ1�v„v�‚}€}Ø˜‘(˜q‘ˆØ�G�V�G”*Ð0Ð0 1 f W X X¤;Ð0Ð0Ð0àˆr'   úutf-8ÚignoreÚbytesorstringr?   Ú	erractionc                 óÎ   — t          | t          ¦  «        r| S t          | t          ¦  «        s$J t          t          | ¦  «        ¦  «        ¦   «         ‚|                      ||¦  «        S )z^When Py2 str.encode is called, it often means bytes.encode in Py3.

    This does either.
    )r   r   r@   r#   rC   )rR   r?   rS   s      r%   Úcompatible_encode_methodrU   \   s`   € õ �-¥Ñ%Ô%ð ØÐÝ�m¥UÑ+Ô+ÐEÐE­Sµ°mÑ1DÔ1DÑ-EÔ-EÑEÔEÐ+Ø×Ò ¨)Ñ4Ô4Ð4r'   ÚleftÚaboveÚ
upper_leftc                 ó®   — | |z   |z
  }t          || z
  ¦  «        }t          ||z
  ¦  «        }t          ||z
  ¦  «        }||k    r||k    r| S ||k    r|S |S r)   )Úabs)rV   rW   rX   ÚpÚpaÚpbÚpcs          r%   Úpaeth_predictorr_   k   sm   € ð 	ˆu‰�zÑ!€Aå	ˆQ�‰X‰Œ€BÝ	ˆQ�‰Y‰Œ€BÝ	ˆQ�‰^Ñ	Ô	€Bð 
ˆR‚x€x�B˜"’H�HØˆØ	ˆrŠˆØˆàÐr'   ÚcolorsÚcolumnsÚbitspercomponentÚdatac                 óx  — |dk    rd|› �}t          |¦  «        ‚| |dz  z  }||z  }g }t          dt          |¦  «        |¦  «        D ]d}g }	t          |¦  «        D ];}
|||
z            }|
|k    r||	|
|z
           z  }|dz  }|	                     |¦  «         Œ<|                     |	¦  «         Œet          |¦  «        S )zŸReverse the effect of the TIFF predictor 2

    Documentation:
    https://www.itu.int/itudoc/itu-t/com16/tiff-fx/docs/tiff6.pdf
    (Section 14, page 64)
    é   ú Unsupported `bitspercomponent': r   é   )r   ÚrangerM   ÚappendÚextendr@   )r`   ra   rb   rc   Ú	error_msgÚbppÚnbytesÚbufÚ
scanline_iÚrawÚiÚ	new_values               r%   Úapply_tiff_predictorrs   }   sé   € ð ˜1ÒÐØIÐ7GÐIÐIˆ	Ý˜IÑ&Ô&Ð&Ø
Ð$¨Ñ)Ñ
*€CØ�s‰]€FØ€CÝ˜A�s 4™yœy¨&Ñ1Ô1ð ð ˆ
ØˆÝ�v‘”ð 	"ð 	"ˆAØ˜Z¨!™^Ô,ˆIØ�CŠxˆxØ˜S  S¡œ\Ñ)�	Ø˜SÑ �	Ø�JŠJ�yÑ!Ô!Ð!Ð!Ø�
Š
�3‰Œˆˆå�‰:Œ:Ðr'   Úpredc                 ó   — |dvrd|› �}t          |¦  «        ‚||z  |z  dz  }||z  dz  }g }t          d|z  ¦  «        }	t          dt          |¦  «        |dz   ¦  «        D �]}
||
         }||
dz   |
dz   |z   …         }g }|dk    rt          |¦  «        }�nÀ|dk    rWt	          |¦  «        D ]E\  }}||z
  dk     rdnt          |||z
           ¦  «        }||z   dz  }|                     |¦  «         ŒF�nc|dk    r7t          ||	d	¬
¦  «        D ]"\  }}||z   dz  }|                     |¦  «         Œ#�n&|dk    rqt	          |¦  «        D ]`\  }}||z
  dk     rdnt          |||z
           ¦  «        }t          |	|         ¦  «        }|||z   dz  z   dz  }|                     |¦  «         Œan¯|dk    r—t	          |¦  «        D ]†\  }}||z
  dk     rd}d}n0t          |||z
           ¦  «        }t          |	||z
           ¦  «        }t          |	|         ¦  «        }t          |||¦  «        }||z   dz  }|                     |¦  «         Œ‡nt          d|› �¦  «        ‚| 	                    |¦  «         |}	�Œt          |¦  «        S )zxReverse the effect of the PNG predictor

    Documentation: http://www.libpng.org/pub/png/spec/1.2/PNG-Filters.html
    )re   é   rf   re   ó    r   rv   éÿ   rL   F)Ústricté   é   zUnsupported predictor value: )r   Úlistrh   rM   Ú	enumerateÚintri   Úzipr_   rj   r@   )rt   r`   ra   rb   rc   Úmsgrm   rl   rn   Ú
line_abovero   Úfilter_typeÚline_encodedrp   ÚjÚsub_xÚ	raw_x_bppÚraw_xÚup_xÚprior_xÚ	average_xÚpaeth_xÚprior_x_bppÚpaeths                           r%   Úapply_png_predictorrŽ   ™   s(  € ð ˜vÐ%Ð%ØCÐ1AÐCÐCˆÝ˜CÑ Ô Ð à�gÑÐ 0Ñ0°AÑ5€FØ
Ð#Ñ
# qÑ
(€CØ
€CÝ�g Ñ'Ñ(Ô(€JÝ˜A�s 4™yœy¨&°1©*Ñ5Ô5ð Hñ Hˆ
Ø˜:Ô&ˆØ˜J¨™N¨Z¸!©^¸fÑ-DÐDÔEˆØˆà˜!ÒÐå�|Ñ$Ô$ˆC‰Cà˜AÒÐõ & lÑ3Ô3ð "ð "‘��5Ø!" S¡¨1¢ ˜A˜Aµ#°c¸!¸c¹'´lÑ2CÔ2C�	Ø Ñ*¨cÑ1�Ø—
’
˜5Ñ!Ô!Ð!Ð!ñ"ð
 ˜AÒÐõ "% \°:ÀeÐ!LÑ!LÔ!Lð "ð "‘��gØ ™¨3Ñ.�Ø—
’
˜5Ñ!Ô!Ð!Ð!ñ"ð ˜AÒÐõ !*¨,Ñ 7Ô 7ð "ð "‘��9Ø!" S¡¨1¢ ˜A˜Aµ#°c¸!¸c¹'´lÑ2CÔ2C�	Ý˜j¨œmÑ,Ô,�Ø" i°'Ñ&9¸aÑ%?Ñ?À3ÑF�Ø—
’
˜5Ñ!Ô!Ð!Ð!ð	"ð ˜AÒÐõ (¨Ñ5Ô5ð 
"ð 
"‘
��7Ø�s‘7˜Q’;�;Ø !�IØ"#�K�Kå # C¨¨C©¤LÑ 1Ô 1�IÝ"% j°°S±Ô&9Ñ":Ô":�KÝ˜j¨œmÑ,Ô,�Ý'¨	°7¸KÑHÔH�Ø  5™¨CÑ/�Ø—
’
˜5Ñ!Ô!Ð!Ð!ð
"õ  Ð MÀÐ MÐ MÑNÔNÐNà�
Š
�3‰ŒˆØˆ
‰
Ý�‰:Œ:Ðr'   )rv   r   r   rv   r   r   ÚMATRIX_IDENTITYc                 óÊ   — 	 | \  }}}}t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        fS # t          $ r}t          d¦  «        |‚d }~ww xY w)NzCould not parse rectangle)ÚfloatÚ
ValueErrorr   )r=   Úx0Úy0Úx1Úy1Úerrs         r%   Ú
parse_rectr˜     sq   € ðBØÑˆˆR��RÝ�R‰yŒy�% ™)œ)¥U¨2¡Y¤Yµ°b±	´	Ð9Ð9øÝð Bð Bð BÝÐ7Ñ8Ô8¸cÐAøøøøðBøøøs   ‚A A Á
A"ÁAÁA"Úm1Úm0c                 ó°   — | \  }}}}}}|\  }}	}
}}}	 ||z  |
|z  z   |	|z  ||z  z   ||z  |
|z  z   |	|z  ||z  z   ||z  |
|z  z   |z   |	|z  ||z  z   |z   fS r)   r8   )r™   rš   Úa1Úb1Úc1Úd1Úe1Úf1Úa0Úb0Úc0Úd0Úe0Úf0s                 r%   Úmult_matrixr¨     s�   € Ø!Ñ€RˆˆR��R˜Ø!Ñ€RˆˆR��R˜Ø5à
ˆR‰�"�r‘'ÑØ
ˆR‰�"�r‘'ÑØ
ˆR‰�"�r‘'ÑØ
ˆR‰�"�r‘'ÑØ
ˆR‰�"�r‘'Ñ˜BÑØ
ˆR‰�"�r‘'Ñ˜BÑðð r'   ÚmÚvc                 ó^   — | \  }}}}}}|\  }}	||||||z  |	|z  z   |z   ||z  |	|z  z   |z   fS )zùTranslates a matrix by (x, y) inside the projection.

    The matrix is changed so that its origin is at the specified point in its own
    coordinate system. Note that this is different from translating it within the
    original coordinate system.r8   ©
r©   rª   ÚaÚbÚcÚdÚeÚfÚxÚys
             r%   Útranslate_matrixrµ     sT   € ð Ñ€Qˆˆ1ˆa��AØ�F€QˆØˆa��A�q˜1‘u˜q 1™u‘} qÑ(¨!¨a©%°!°a±%©-¸!Ñ*;Ð;Ð;r'   c                 óV   — | \  }}}}}}|\  }}	||z  ||	z  z   |z   ||z  ||	z  z   |z   fS )zApplies a matrix to a point.r8   r¬   s
             r%   Úapply_matrix_ptr·   '  sJ   € àÑ€Qˆˆ1ˆa��AØ�F€QˆØˆq‰5�1�q‘5‰=˜1Ñ˜a !™e a¨!¡e™m¨aÑ/Ð/Ð/r'   Úrectc           	      óT  — |\  }}}}||f}||f}||f}||f}	t          | |¦  «        \  }
}t          | |¦  «        \  }}t          | |¦  «        \  }}t          | |	¦  «        \  }}t          |
|||¦  «        t          ||||¦  «        t          |
|||¦  «        t          ||||¦  «        fS )aŸ  Applies a matrix to a rectangle.

    Note that the result is not a rotated rectangle, but a rectangle with the same
    orientation that tightly fits the outside of the rotated content.

    :param m: The rotation matrix.
    :param rect: The rectangle coordinates (x0, y0, x1, y1), where x0 < x1 and y0 < y1.
    :returns a rectangle with the same orientation, but that would fit the rotated
        content.
    )r·   ÚminÚmax)r©   r¸   r“   r”   r•   r–   Úleft_bottomÚright_bottomÚ	right_topÚleft_topÚleft1Úbottom1Úright1Úbottom2Úright2Útop1Úleft2Útop2s                     r%   Úapply_matrix_rectrÈ   .  sÔ   € ð Ñ€RˆˆR�Ø�r�(€KØ˜�8€LØ�R�€IØ�Bˆx€Hå& q¨+Ñ6Ô6Ñ€UˆGÝ'¨¨<Ñ8Ô8Ñ€VˆWÝ$ Q¨	Ñ2Ô2�N€VˆTÝ# A xÑ0Ô0�M€UˆDõ 	ˆE�5˜& &Ñ)Ô)ÝˆG�W˜d DÑ)Ô)ÝˆE�5˜& &Ñ)Ô)ÝˆG�W˜d DÑ)Ô)ð	ð r'   c                 óJ   — | \  }}}}}}|\  }}	||z  ||	z  z   ||z  ||	z  z   fS )zCEquivalent to apply_matrix_pt(M, (p,q)) - apply_matrix_pt(M, (0,0))r8   )
r©   rª   r­   r®   r¯   r°   Ú_eÚ_fr[   Úqs
             r%   Úapply_matrix_normrÍ   L  s@   € àÑ€Qˆˆ1ˆa��RØ�F€QˆØˆq‰5�1�q‘5‰=˜!˜a™% ! a¡%™-Ð'Ð'r'   r³   c                 ó:   — t          | t          t          f¦  «        S r)   )r   r~   r‘   ©r³   s    r%   ÚisnumberrÐ   V  s   € Ý�a�#�u˜Ñ&Ô&Ð&r'   Ú_TÚobjsc              #   ól   K  — t          ¦   «         }| D ] }||v rŒ|                     |¦  «         |V — Œ!dS )zEliminates duplicated elements.N)ÚsetÚadd)rÒ   ÚdoneÚobjs      r%   ÚuniqrØ   ]  sN   è è € å‰5Œ5€DØð ð ˆØ�$ˆ;ˆ;ØØ�Š�‰ŒˆØˆ	ˆ	ˆ	ˆ	ð	ð r'   c                 óˆ   — g }g }|D ]8} | |¦  «        r|                      |¦  «         Œ#|                      |¦  «         Œ9||fS )z9Split a list into two classes according to the predicate.)ri   )rt   rÒ   Útr²   r×   s        r%   ÚfsplitrÛ   g  sV   € à
€AØ
€AØð ð ˆØˆ4�‰9Œ9ð 	Ø�HŠH�S‰MŒMˆMˆMà�HŠH�S‰MŒMˆMˆMØˆaˆ4€Kr'   Úv0Úv1r°   c                 óh   — t          t          | ¦  «        |z  t          ||z   ¦  «        |z  ¦  «        S )zReturns a discrete range.)rh   r~   )rÜ   rÝ   r°   s      r%   Údrangerß   s  s+   € å•�R‘”˜A‘�s 2¨¡6™{œ{¨aÑ/Ñ0Ô0Ð0r'   Úptsc                 óä   — t           t           t            t            f}|\  }}}}| D ]E\  }}t          ||¦  «        }t          ||¦  «        }t          ||¦  «        }t          ||¦  «        }ŒF||||fS )z7Compute a minimal rectangle that covers all the points.)ÚINFrº   r»   )rà   Úlimitr“   r”   r•   r–   r³   r´   s           r%   Ú	get_boundrä   x  sy   € å��c˜T¥C 4Ð(€EØÑ€RˆˆR�Øð ð ‰ˆˆ1Ý��Q‰ZŒZˆÝ��Q‰ZŒZˆÝ��Q‰ZŒZˆÝ��Q‰ZŒZˆˆØˆr�2�rˆ>Ðr'   ÚseqÚfuncÚmaxobjc                 óB   — d}| D ]} ||¦  «        }|�||k     r||}}Œ|S )z;Picks the object obj where func(obj) has the highest value.Nr8   )rå   ræ   rç   Úmaxscorer×   Úscores         r%   Úpickrë   „  sD   € ð €HØð .ð .ˆØ��S‘	”	ˆØÐ˜x¨%Ò/Ð/Ø"'¨�vˆXøØ€Mr'   Ún.c              #   óŽ   K  — g }|D ]=}|                      |¦  «         t          |¦  «        | k    rt          |¦  «        V — g }Œ>dS )z$Groups every n elements of the list.N)ri   rM   Útuple)rì   rå   Úrr³   s       r%   Úchoplistrð   ’  sW   è è € à
€AØð ð ˆØ	�Š�‰ŒˆÝˆq‰6Œ6�QŠ;ˆ;Ý˜‘(”(ˆNˆNˆNØˆAøð	ð r'   Údefaultc                 ób   — t          | ¦  «        }|s|S t                               | dd¬¦  «        S )z7Unpacks variable-length unsigned integers (big endian).ÚbigF)Ú	byteorderÚsigned)rM   r~   Ú
from_bytes)rG   rñ   rN   s      r%   Únunpackr÷   œ  s3   € å�‰VŒV€FØð @Øˆå�~Š~˜a¨5¸ˆ~Ñ?Ô?Ð?r'   Ú c              #   ó4   K  — | ]}t          |¦  «        V — Œd S r)   )Úchr)Ú.0r³   s     r%   ú	<genexpr>rü   ¥  sD   è è € ð Dð Dà	õ ˆ�F„FðDð Dð Dð Dð Dð Dr'   (   r   rv   rL   rz   r{   rK   é   rJ   re   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   r  iØ  iÇ  iÆ  iÙ  iÝ  iÛ  iÚ  iÜ  é    é!   é"   é#   é$   é%   é&   é'   é(   é)   é*   é+   é,   é-   é.   é/   é0   é1   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   é<   é=   é>   é?   é@   éA   éB   éC   éD   éE   éF   éG   éH   éI   éJ   éK   éL   éM   éN   éO   éP   éQ   éR   éS   éT   éU   éV   éW   éX   éY   éZ   é[   é\   é]   é^   é_   é`   éa   éb   éc   éd   ée   éf   ég   éh   éi   éj   ék   él   ém   én   éo   ép   éq   ér   és   ét   éu   év   éw   éx   éy   éz   é{   é|   é}   é~   r   i"   i    i!   i&   i   i   i’  iD   i9   i:   i"  i0   i   i   i   i   i   i   i"!  iû  iû  iA  iR  i`  ix  i}  i1  iB  iS  ia  i~  r   i¬   é¡   é¢   é£   é¤   é¥   é¦   é§   é¨   é©   éª   é«   é¬   r   é®   é¯   é°   é±   é²   é³   é´   éµ   é¶   é·   é¸   é¹   éº   é»   é¼   é½   é¾   é¿   éÀ   éÁ   éÂ   éÃ   éÄ   éÅ   éÆ   éÇ   éÈ   éÉ   éÊ   éË   éÌ   éÍ   éÎ   éÏ   éÐ   éÑ   éÒ   éÓ   éÔ   éÕ   éÖ   é×   éØ   éÙ   éÚ   éÛ   éÜ   éÝ   éÞ   éß   éà   éá   éâ   éã   éä   éå   éæ   éç   éè   éé   éê   éë   éì   éí   éî   éï   éð   éñ   éò   éó   éô   éõ   éö   é÷   éø   éù   éú   éû   éü   éý   éþ   rx   c                 óœ   — |                       d¦  «        rt          | dd…         dd¦  «        S d                     d„ | D ¦   «         ¦  «        S )z+Decodes a PDFDocEncoding string to Unicode.s   þÿrL   Nzutf-16berQ   rø   c              3   ó0   K  — | ]}t           |         V — Œd S r)   )ÚPDFDocEncoding)rû   r¯   s     r%   rü   zdecode_text.<locals>.<genexpr>±  s'   è è € Ð4Ð4¨Q•~ aÔ(Ð4Ð4Ð4Ð4Ð4Ð4r'   )Ú
startswithr   Újoin)rG   s    r%   Údecode_textrÍ  ¬  sQ   € à‡|‚|�KÑ Ô ð 5Ý�1�Q�R�R”5˜* hÑ/Ô/Ð/à�wŠwÐ4Ð4°!Ð4Ñ4Ô4Ñ4Ô4Ð4r'   c                 óN   — t          | t          ¦  «        rdS t          | ¦  «        S )z"Encodes a string for SGML/XML/HTMLrø   )r   r@   r   rÏ   s    r%   rE   rE   ´  s%   € å�!•UÑÔð ØˆrÝ�!‰9Œ9Ðr'   Úbboxc                 ó2   — | \  }}}}|d›d|d›d|d›d|d›�S )Nz.3fú,r8   )rÏ  r“   r”   r•   r–   s        r%   Úbbox2strrÒ  »  s@   € ØÑ€RˆˆR�ØÐ1Ð1Ð1�rÐ1Ð1Ð1 Ð1Ð1Ð1¨Ð1Ð1Ð1Ð1r'   c                 óJ   — | \  }}}}}}d|d›d|d›d|d›d|d›d|d›d|d›d�S )Nú[z.2frÑ  z, (z)]r8   )r©   r­   r®   r¯   r°   r±   r²   s          r%   Ú
matrix2strrÕ  À  s_   € ØÑ€Qˆˆ1ˆa��AØBˆqÐBÐBÐB�qÐBÐBÐB˜qÐBÐBÐB qÐBÐBÐB°ÐBÐBÐB¸ÐBÐBÐBÐBÐBr'   Úobj1r   Úobj2c                 ó*  — t          | j        |j        ¦  «        t          | j        |j        ¦  «        }}t          | j        |j        ¦  «        t          | j        |j        ¦  «        }}||z
  ||z
  }}|| j        z
  |j        z
  || j        z
  |j        z
  }	}|dk     rX|	dk     rR| j        | j        z   dz  | j        | j        z   dz  }}
|j        |j        z   dz  |j        |j        z   dz  }}|
|z
  ||z
  fS t          d|¦  «        t          d|	¦  «        fS )a�  A distance function between two TextBoxes.

    Consider the bounding rectangle for obj1 and obj2.
    Return vector between 2 boxes boundaries if they don't overlap, otherwise
    returns vector between boxes centers

             +------+..........+ (x1, y1)
             | obj1 |          :
             +------+www+------+
             :          | obj2 |
    (x0, y0) +..........+------+
    r   rL   )rº   r“   r”   r»   r•   r–   ÚwidthÚheight)rÖ  r×  r“   r”   r•   r–   ÚowÚohÚiwÚihÚxc1Úyc1Úxc2Úyc2s                 r%   ÚvecBetweenBoxesrã  Å  s  € õ �D”G˜TœWÑ%Ô%¥s¨4¬7°D´GÑ'<Ô'<ˆ€RÝ�D”G˜TœWÑ%Ô%¥s¨4¬7°D´GÑ'<Ô'<ˆ€RØ�R‘˜˜b™ˆ€RØ�T”Z‘ $¤*Ñ,¨b°4´;Ñ.>ÀÄÑ.Lˆ€RØ	ˆA‚v€v�"�q’&�&à”w ¤Ñ(¨AÑ-°´¸$¼'Ñ0AÀQÑ/FˆcˆØ”w ¤Ñ(¨AÑ-°´¸$¼'Ñ0AÀQÑ/FˆcˆØ�S‰y˜# ™)Ð#Ð#å�1�b‰zŒz�3˜q "™:œ:Ð%Ð%r'   ÚLTComponentT)Úboundc                   óÜ   — e Zd ZdZddededdfd„Zdefd„Zde	e
         fd	„Zdefd
„Zdedefd„Zdede	e         fd„Zdee
         ddfd„Zde
ddfd„Zde
ddfd„Zdede	e
         fd„ZdS )ÚPlanezäA set-like data structure for objects placed on a plane.

    Can efficiently find objects in a certain rectangular area.
    It maintains two parallel lists of objects, each of
    which is sorted by its x or y coordinate.
    r  rÏ  Úgridsizer   Nc                 óŒ   — g | _         t          ¦   «         | _        i | _        || _        |\  | _        | _        | _        | _        d S r)   )	Ú_seqrÔ   Ú_objsÚ_gridrè  r“   r”   r•   r–   )r$   rÏ  rè  s      r%   r&   zPlane.__init__ê  s<   € Ø(*ˆŒ	Ý(+©¬ˆŒ
Ø68ˆŒ
Ø ˆŒØ/3Ñ,ˆŒ�$”'˜4œ7 D¤G G Gr'   c                 ó(   — dt          | ¦  «        ›d�S )Nz<Plane objs=ú>)r|   r*   s    r%   Ú__repr__zPlane.__repr__ñ  s   € Ø-�d 4™jœjÐ-Ð-Ð-Ð-r'   c                 ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc              3   ó.   •K  — | ]}|‰j         v ¯|V — Œd S r)   ©rë  )rû   r×   r$   s     €r%   rü   z!Plane.__iter__.<locals>.<genexpr>õ  s/   øè è € Ð>Ð>˜¨C°4´:Ð,=Ð,=�Ð,=Ð,=Ð,=Ð,=Ð>Ð>r'   )rê  r*   s   `r%   Ú__iter__zPlane.__iter__ô  s   ø€ Ø>Ð>Ð>Ð>˜tœyÐ>Ñ>Ô>Ð>r'   c                 ó*   — t          | j        ¦  «        S r)   )rM   rë  r*   s    r%   Ú__len__zPlane.__len__÷  s   € Ý�4”:‰ŒÐr'   r×   c                 ó   — || j         v S r)   rò  )r$   r×   s     r%   Ú__contains__zPlane.__contains__ú  s   € Ø�d”jÐ Ð r'   c              #   óŒ  K  — |\  }}}}|| j         k    s!| j        |k    s|| j        k    s| j        |k    rd S t	          | j         |¦  «        }t	          | j        |¦  «        }t          | j        |¦  «        }t          | j        |¦  «        }t          ||| j        ¦  «        D ]!}t          ||| j        ¦  «        D ]}||fV — Œ	Œ"d S r)   )r“   r•   r”   r–   r»   rº   rß   rè  )r$   rÏ  r“   r”   r•   r–   Úgrid_yÚgrid_xs           r%   Ú	_getrangezPlane._getrangeý  sã   è è € ØÑˆˆR��RØ�”Š=ˆ=˜DœG ršM˜M¨R°4´7ª]¨]¸d¼gÈºm¸mØˆFÝ�”˜"ÑÔˆÝ�”˜"ÑÔˆÝ�”˜"ÑÔˆÝ�”˜"ÑÔˆÝ˜R  T¤]Ñ3Ô3ð 	'ð 	'ˆFÝ   R¨¬Ñ7Ô7ð 'ð '�Ø˜vÐ&Ð&Ð&Ð&Ð&ð'ð	'ð 	'r'   rÒ   c                 ó:   — |D ]}|                       |¦  «         Œd S r)   )rÕ   )r$   rÒ   r×   s      r%   rj   zPlane.extend	  s,   € Øð 	ð 	ˆCØ�HŠH�S‰MŒMˆMˆMð	ð 	r'   c                 ó>  — |                       |j        |j        |j        |j        f¦  «        D ]:}|| j        vrg }|| j        |<   n| j        |         }|                     |¦  «         Œ;| j                             |¦  «         | j         	                    |¦  «         dS )zPlace an object.N)
rû  r“   r”   r•   r–   rì  ri   rê  rë  rÕ   )r$   r×   Úkrï   s       r%   rÕ   z	Plane.add  s™   € à—’ ¤¨¬°´¸¼Ð @ÑAÔAð 	ð 	ˆAØ˜œ
Ð"Ð"Ø(*�Ø !�”
˜1‘�à”J˜q”M�Ø�HŠH�S‰MŒMˆMˆMØŒ	×Ò˜ÑÔÐØŒ
�Š�sÑÔÐÐÐr'   c                 óH  — |                       |j        |j        |j        |j        f¦  «        D ]Y}t          j        t          t          ¦  «        5  | j	        |          
                    |¦  «         ddd¦  «         n# 1 swxY w Y   ŒZ| j         
                    |¦  «         dS )zDisplace an object.N)rû  r“   r”   r•   r–   Ú
contextlibÚsuppressÚKeyErrorr’   rì  Úremoverë  )r$   r×   rþ  s      r%   r  zPlane.remove  sÍ   € à—’ ¤¨¬°´¸¼Ð @ÑAÔAð 	*ð 	*ˆAÝÔ$¥X­zÑ:Ô:ð *ð *Ø”
˜1”×$Ò$ SÑ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *øàŒ
×Ò˜#ÑÔÐÐÐs   Á!A<Á<B 	ÂB 	c              #   ó.  K  — |\  }}}}t          ¦   «         }|                      |¦  «        D ]g}|| j        vrŒ| j        |         D ]M}||v rŒ|                     |¦  «         |j        |k    s!||j        k    s|j        |k    s||j        k    rŒI|V — ŒNŒhdS )z)Finds objects that are in a certain area.N)rÔ   rû  rì  rÕ   r•   r“   r–   r”   )	r$   rÏ  r“   r”   r•   r–   rÖ   rþ  r×   s	            r%   Úfindz
Plane.find   s¾   è è € àÑˆˆR��RÝ‰uŒuˆØ—’ Ñ%Ô%ð 		ð 		ˆAØ˜œ
Ð"Ð"ØØ”z !”}ð ð �Ø˜$�;�;ØØ—’˜‘”�Ø”6˜R’<�< 2¨¬¢< <°3´6¸R²<°<À2ÈÌÂ<À<ØØ�	�	�	�	ðð		ð 		r'   )r  )r2   r3   r4   r5   ÚRectr~   r&   r   rï  r   rä  ró  rõ  r7   Úboolr÷  ÚPointrû  r   rj   rÕ   r  r  r8   r'   r%   rç  rç  â  s|  € € € € € ðð ð4ð 4˜Tð 4¨Sð 4¸$ð 4ð 4ð 4ð 4ð.˜#ð .ð .ð .ð .ð?˜( <Ô0ð ?ð ?ð ?ð ?ð˜ð ð ð ð ð! ð !¨4ð !ð !ð !ð !ð
'˜dð 
' x°¤ð 
'ð 
'ð 
'ð 
'ð˜8 LÔ1ð °dð ð ð ð ð
�|ð 
¨ð 
ð 
ð 
ð 
ð˜,ð ¨4ð ð ð ð ð˜ð  (¨<Ô"8ð ð ð ð ð ð r'   rç  )rq   r³   r¯   r©   )rª   Úlr°   Úvaluec                 óx  — d| cxk     rdk     sn J ‚g }d}| dk    �r
t          | d¦  «        \  } }|dk    rF|                     dt          |         ¦  «         |                     dt          |dz            ¦  «         nŸ|dk    rC|                     dt          |         ¦  «         |                     dt          |         ¦  «         nV|dk    }|r&|                     dt          |         ¦  «         |dz  }|                     |rdndt          |         |z  ¦  «         |dz  }| dk    �°
d                     |¦  «        S )	z,Format a number as lowercase Roman numerals.r   i   rÿ   rþ   rv   r{   rK   rø   )ÚdivmodÚinsertÚ
ROMAN_ONESÚROMAN_FIVESrÌ  )r
  ÚresultÚindexÚ	remainderÚ	over_fives        r%   Úformat_int_romanr  4  sN  € àˆuÐÐÒÐ�tÒÐÐÐÐÐØ€FØ€Eà
�1Š*‰*Ý! %¨Ñ,Ô,ÑˆˆyØ˜Š>ˆ>Ø�MŠM˜!�Z¨Ô.Ñ/Ô/Ð/Ø�MŠM˜!�Z¨°©	Ô2Ñ3Ô3Ð3Ð3Ø˜!Š^ˆ^Ø�MŠM˜!�Z¨Ô.Ñ/Ô/Ð/Ø�MŠM˜!�[¨Ô/Ñ0Ô0Ð0Ð0à! QšˆIØð Ø—’˜a¥¨UÔ!3Ñ4Ô4Ð4Ø˜Q‘�	Ø�MŠM˜yÐ/˜!˜!¨aµ¸EÔ1BÀYÑ1NÑOÔOÐOØ�‰
ˆð �1Š*‰*ð  �7Š7�6‰?Œ?Ðr'   c                 ó$  — | dk    sJ ‚g }| dk    rXt          | dz
  t          t          j        ¦  «        ¦  «        \  } }|                     t          j        |         ¦  «         | dk    °X|                     ¦   «          d                     |¦  «        S )z5Format a number as lowercase letters a-z, aa-zz, etc.r   rv   rø   )r  rM   ÚstringÚascii_lowercaseri   ÚreverserÌ  )r
  r  r  s      r%   Úformat_int_alphar  M  s‡   € à�1Š9ˆ9ˆ9ˆ9Ø€Fà
�1Š*ˆ*Ý! %¨!¡)­SµÔ1GÑ-HÔ-HÑIÔIÑˆˆyØ�Š•fÔ,¨YÔ7Ñ8Ô8Ð8ð �1Š*ˆ*ð ‡N‚NÑÔÐØ�7Š7�6‰?Œ?Ðr'   Úpaddedc                 óÚ   ‡— t          | ¦  «        dk    r| S | d         Š‰dk    r| S ‰t          | ¦  «        k    r| S t          ˆfd„| ‰ d…         D ¦   «         ¦  «        r| d‰ …         S | S )a1  Remove block padding as described in PDF 1.7 section 7.6.2:

    > For an original message length of M, the pad shall consist of 16 -
    (M mod 16) bytes whose value shall also be 16 - (M mod 16).
    > Note that the pad is present when M is evenly divisible by 16;
    it contains 16 bytes of 0x10.
    r   éÿÿÿÿr  c              3   ó$   •K  — | ]
}|‰k    V — Œd S r)   r8   )rû   r³   Úpaddings     €r%   rü   zunpad_aes.<locals>.<genexpr>l  s'   øè è € Ð
3Ð
3˜Aˆ1�Š<Ð
3Ð
3Ð
3Ð
3Ð
3Ð
3r'   N)rM   Úall)r  r  s    @r%   Ú	unpad_aesr   Z  sŽ   ø€ õ ˆ6�{„{�aÒÐØˆà�RŒj€GØ�‚|€|Øˆà•�V‘”ÒÐØˆå
Ð
3Ð
3Ð
3Ð
3 ¨¨¨	¨	Ô!2Ð
3Ñ
3Ô
3Ñ3Ô3ð !Ø�i˜�x�iÔ Ð Ø€Mr'   )rP   rQ   r)   )r   )Sr5   r    r   r  Úcollections.abcr   r   r   Úhtmlr   Útypingr   r   r	   r
   r   r   r   r   Úpdfminer.pdfexceptionsr   r   Úpdfminer.layoutr   r   rA   râ   r   r   r!   r6   r"   r   r@   r<   r7   rF   r~   rO   rU   r_   rs   rŽ   rî   r‘   r  r  ÚMatrixÚPathSegmentr�   Ú__annotations__r˜   r¨   rµ   r·   rÈ   rÍ   r  rÐ   rÑ   rØ   r|   rÛ   rh   rß   rä   rë   rð   r÷   rÌ  rÊ  rÍ  rE   rÒ  rÕ  rã  rä  rç  r  r  r  r  r   r8   r'   r%   ú<module>r)     sò  ðØ Ð Ð à 	€	€	€	Ø €€€Ø €€€Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ?Ð >Ð >Ð >Ð >Ð >Ð >Ð >àð ,Ø+Ð+Ð+Ð+Ð+Ð+à Ð Ð Ð à Ð Ð Ð ð €à�7Ô# S¨"¬)Ð3Ô4€
Øˆf�hÐÔ€ð&ð &ð &ð &ð &ñ &ô &ð &ð4˜cð  eð ð ð ð ð�vð  #ð ð ð ð ð�3ð ˜cð  cð ð ð ð ð Øð5ð 5Ø˜3‘;ð5àð5ð ð5ð 	ð	5ð 5ð 5ð 5ð˜#ð  cð °sð ¸sð ð ð ð ð$ØðØðØ14ðØ<Aðà
ðð ð ð ð8\Ø
ð\àð\ð ð\ð ð	\ð
 ð\ð ð\ð \ð \ð \ð~ 	ˆe�UˆlÔ€ØˆU�E˜5 %Ð'Ô(€Ø	ˆu�e˜U E¨5°%Ð7Ô	8€ØØ	ˆ#„JØ	ˆ#ˆu�eÐ
ÔØ	ˆ#ˆu�e˜U EÐ
)Ô*Ø	ˆ#ˆu�e˜U E¨5°%Ð
7Ô8ð:ô€ð -€�Ð ,Ð ,Ñ ,ðB�#ð B˜$ð Bð Bð Bð Bð�Fð  ð ¨6ð ð ð ð ð<˜ð < 5ð <¨Vð <ð <ð <ð <ð0�vð 0 %ð 0¨Eð 0ð 0ð 0ð 0ð˜ð  tð °ð ð ð ð ð<(˜ð ( Eð (¨eð (ð (ð (ð (ð'�ð '˜4ð 'ð 'ð 'ð 'ð €WˆT�]„]€ðˆx˜Œ|ð  ¨¤ð ð ð ð ð	�˜2˜$ ˜*Ô%ð 	¨X°b¬\ð 	¸eÀDÈÄHÈdÐSUÌhÐDVÔ>Wð 	ð 	ð 	ð 	ð1ˆuð 1˜%ð 1 Cð 1¨Eð 1ð 1ð 1ð 1ð
	�8˜E”?ð 	 tð 	ð 	ð 	ð 	ð ðð Ø	�"Œðà
�B�4˜�;Ô
ðð �‰Iðð ˆ$�Yð	ð ð ð ð�ð ˜( 2œ,ð ¨8°E¸"¸c¸'´NÔ+Cð ð ð ð ð@ð @ˆuð @˜sð @¨3ð @ð @ð @ð @ð —’ð Dð DðAðDñ Dô Dñ Dô D€ðN5�5ð 5˜Sð 5ð 5ð 5ð 5ðˆ3ð �3ð ð ð ð ð2�4ð 2˜Cð 2ð 2ð 2ð 2ð
C�&ð C˜Sð Cð Cð Cð Cð
&˜-ð &¨}ð &Àð &ð &ð &ð &ð4 ˆw�~¨]Ð;Ñ;Ô;€ðKð Kð Kð Kð KˆG�LÔ!ñ Kô Kð Kð\ "Ð!Ð!€
Øˆoˆo€ð˜Cð  Cð ð ð ð ð2
˜Cð 
 Cð 
ð 
ð 
ð 
ð�eð  ð ð ð ð ð ð r'   