ó
    �®žjdF  ã                   óæ  • S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJrJr  SS	KJrJrJr  SS
KJrJrJrJrJr  SSKJr  SSKJr  SSKJr  SSK J!r!J"r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  \(       a  SSK)J*r*  \RV                  " \,5      r-S\S\4S jr. " S S\"5      r/ " S S\0\5      r1\ " S S5      5       r2\ " S S5      5       r3S\0S\S-  4S jr4S\0S\54S jr6 " S  S!\!5      r7g)"z$Backend for GBS Google Books schema.é    N)ÚIterable)Ú	dataclass)ÚEnum)ÚBytesIO)ÚPath)ÚTYPE_CHECKINGÚcast)ÚBoundingBoxÚCoordOriginÚSize)ÚBoundingRectangleÚPdfPageBoundaryTypeÚPdfPageGeometryÚSegmentedPdfPageÚTextCell)Úetree)ÚImage)ÚPdfDocumentBackendÚPdfPageBackend)ÚMetsGbsBackendOptions)ÚInputFormat)ÚDocumentLoadError)ÚInputDocumentÚsizeÚreturnc                 óè   • [         R                  nSSU R                  U R                  4n[        R
                  " U[        R                  5      n[        S[        R                  " U5      UUUUUUS9$ )Nr   g        )ÚangleÚrectÚboundary_typeÚart_bboxÚ
bleed_bboxÚ	crop_bboxÚ
media_bboxÚ	trim_bbox)r   ÚCROP_BOXÚwidthÚheightr
   Ú
from_tupler   ÚTOPLEFTr   r   Úfrom_bounding_box)r   r   Ú
bbox_tupleÚbboxs       Ú]/home/mande/repo/quber/.venv/lib/python3.13/site-packages/docling/backend/mets_gbs_backend.pyÚ_get_pdf_page_geometryr.   &   sm   € ô *=×)EÑ)E€Mà�Q˜Ÿ
™
 D§K¡KÐ0€JÜ×!Ò! *¬k×.AÑ.AÓB€DäØÜ×0Ò0°Ó6Ø#ØØØØØñ	ð 	ó    c                   ó  • \ rS rSrS\S-  S\S-  S\4S jr\S\4S j5       r	S\
4S	 jrS\4S
 jrS\4S jrS\S\4S jrS\S-  4S jrS\\   4S jrSS\S\\   4S jjr SS\S\S-  S\R.                  4S jjrS\4S jrSS jrSrg)ÚMetsGbsPageBackendé:   Úparsed_pageNÚpage_imÚpage_noc                 óP   • X l         Xl        X0l        US L=(       a    US LU l        g ©N)Ú_imÚ_dpageÚ_page_noÚvalid)Úselfr3   r4   r5   s       r-   Ú__init__ÚMetsGbsPageBackend.__init__;   s)   € ð ŒØ!ŒØŒØ ¨Ð,×D°ÀÐ1Dˆ�
r/   r   c                 ó    • U R                   S-   $ )Né   )r:   ©r<   s    r-   r5   ÚMetsGbsPageBackend.page_noF   s   € à�}‰}˜qÑ Ð r/   c                 ó   • U R                   $ r7   )r;   rA   s    r-   Úis_validÚMetsGbsPageBackend.is_validJ   s   € Ø�z‰zÐr/   c                 óJ   • U R                   c  [        S5      eU R                   $ )zúReturn the parsed page, raising RuntimeError if the backend is invalid or unloaded.

Raises:
    RuntimeError: If the page was not successfully parsed or has been unloaded.
        Callers must check :meth:`is_valid` before calling accessor methods.
ú_Page backend is invalid or was unloaded. Check is_valid() before calling page accessor methods.)r9   ÚRuntimeErrorrA   s    r-   Ú_require_pageÚ MetsGbsPageBackend._require_pageM   s-   € ð �;‰;ÑÜðIóð ð �{‰{Ðr/   c                 óJ   • U R                   c  [        S5      eU R                   $ )zÿReturn the page image, raising RuntimeError if the backend is invalid or unloaded.

Raises:
    RuntimeError: If the page image was not successfully loaded or has been unloaded.
        Callers must check :meth:`is_valid` before calling accessor methods.
rG   )r8   rH   rA   s    r-   Ú_require_imageÚ!MetsGbsPageBackend._require_image[   s,   € ð �8‰8ÑÜðIóð ð �x‰xˆr/   r,   c                 ó€  • U R                  5       nSnU R                  5       nSn[        UR                  5       H€  u  pgUR                  R                  5       R                  UR                  S9R                  U5      nUR                  U5      n	U	S:”  d  M^  [        U5      S:”  a  US-  nX7R                  -  nM‚     U$ )NÚ r@   )Úpage_heightg      à?r   Ú )rI   Úget_sizeÚ	enumerateÚtextline_cellsr   Úto_bounding_boxÚto_top_left_originr'   ÚscaledÚintersection_over_selfÚlenÚtext)
r<   r,   ÚdpageÚ
text_pieceÚ	page_sizeÚscaleÚiÚcellÚ	cell_bboxÚoverlap_fracs
             r-   Úget_text_in_rectÚ#MetsGbsPageBackend.get_text_in_recti   s¹   € Ø×"Ñ"Ó$ˆàˆ
Ø—M‘M“Oˆ	ð ð 	ô ! ×!5Ñ!5Ö6‰GˆAà—	‘	×)Ñ)Ó+ß#Ñ#°	×0@Ñ0@Ð#ÐAß‘˜“ð ð %×;Ñ;¸DÓAˆLà˜cÕ!Ü�z“? QÓ&Ø #Ñ%�JØŸi™iÑ'’
ñ 7ð Ðr/   c                 ó   • U R                   $ r7   )r9   rA   s    r-   Úget_segmented_pageÚ%MetsGbsPageBackend.get_segmented_pageƒ   s   € Ø�{‰{Ðr/   c                 ó6   • U R                  5       R                  $ r7   )rI   rT   rA   s    r-   Úget_text_cellsÚ!MetsGbsPageBackend.get_text_cells†   s   € Ø×!Ñ!Ó#×2Ñ2Ð2r/   r^   c              #   ó.  #   • U R                  5       nSnUR                  nU Hm  nUR                  R                  5       R	                  U R                  5       R                  5      nUR                  5       U:”  d  MZ  UR                  US9nUv •  Mo     g 7f)Nr   ©r^   )	rI   Úbitmap_resourcesr   rU   rV   rR   r'   ÚarearW   )r<   r^   r[   ÚAREA_THRESHOLDÚimagesÚimgÚcropboxs          r-   Úget_bitmap_rectsÚ#MetsGbsPageBackend.get_bitmap_rects‰   s~   é € Ø×"Ñ"Ó$ˆØˆà×'Ñ'ˆãˆCØ—h‘h×.Ñ.Ó0×CÑCØ—‘“×&Ñ&óˆGð �|‰|‹~ Õ.Ø!Ÿ.™.¨u˜.Ð5�à”ò ùs   ‚A7BÁ=Brr   c           	      óZ  • U R                  5       nU R                  5       nUR                  UR                  S   :w  d  UR                  UR                  S   :w  a3  [        SUR                   SUR                   SUR                   S35      eU(       d/  [        SUR                  SUR                  [        R                  S9nUR                  [        UR                  U-  5      [        UR                  U-  5      4S9R                  UR                  US	9R                  5       5      nU$ )
Nr   r@   zPage image dimensions z do not match page geometry (Úxz).)ÚlÚrÚtÚbÚcoord_origin©r   rl   )rL   rR   r&   r   r'   rH   r
   r   r)   ÚresizeÚroundÚcroprW   Úas_tuple)r<   r^   rr   Úimr]   Úimages         r-   Úget_page_imageÚ!MetsGbsPageBackend.get_page_image™   s  € ð × Ñ Ó"ˆØ—M‘M“Oˆ	Ø�?‰?˜bŸg™g a™jÓ(¨I×,<Ñ,<ÀÇÁÈÁ
Ó,JÜØ(¨¯©¨	ð 2Ø—O‘OÐ$ A i×&6Ñ&6Ð%7°rð;óð ö
 Ü!ØØ—/‘/ØØ×"Ñ"Ü(×0Ñ0ñˆGð —	‘	Ü˜	Ÿ™¨%Ñ/Ó0´%¸	×8HÑ8HÈ5Ñ8PÓ2QÐRð ð 
ç
‰$ˆw�~‰~ Eˆ~Ð*×3Ñ3Ó5Ó
6ð 	ð ˆr/   c                 ó†   • U R                  5       n[        UR                  R                  UR                  R                  S9$ )N©r&   r'   )rI   r   Ú	dimensionr&   r'   )r<   r[   s     r-   rR   ÚMetsGbsPageBackend.get_size²   s1   € Ø×"Ñ"Ó$ˆÜ˜%Ÿ/™/×/Ñ/¸¿¹×8NÑ8NÑOÐOr/   c                 ó    • S U l         S U l        g r7   )r8   r9   rA   s    r-   ÚunloadÚMetsGbsPageBackend.unload¶   s   € ØˆŒØˆ�r/   )r9   r8   r:   r;   )r@   )r@   N©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   ÚPILImageÚintr=   Úpropertyr5   ÚboolrD   rI   rL   r
   Ústrrc   rf   r   r   ri   Úfloatrs   r   rƒ   r   rR   rŠ   Ú__static_attributes__© r/   r-   r1   r1   :   sý   † ð	Eà%¨Ñ,ð	Eð ˜D‘ð	Eð ô		Eð ð!˜ó !ó ð!ð˜$ô ðÐ/ô ð ô ð [ð °Sô ð4Ð$4°tÑ$;ô ð3 ¨Ñ 2ô 3ñ eð °H¸[Ñ4Iõ ð" ?CñØðØ)4°tÑ);ðà	�‰õð2P˜$ô P÷r/   r1   c                   ó    • \ rS rSrSrSrSrSrg)Ú_UseTypeé»   r‚   ÚOCRÚcoordOCRr˜   N)r�   rŽ   r�   r�   ÚIMAGErœ   Ú	COORD_OCRr—   r˜   r/   r-   rš   rš   »   s   † Ø€EØ
€CØƒIr/   rš   c                   ó>   • \ rS rSr% \\S'   \\S'   \\S'   \\S'   Srg)Ú	_FileInfoéÁ   Úfile_idÚmimetypeÚpathÚuser˜   N)r�   rŽ   r�   r�   r•   Ú__annotations__rš   r—   r˜   r/   r-   r¡   r¡   Á   s   ‡ àƒLØƒMØ
ƒIØ	†Mr/   r¡   c                   óR   • \ rS rSr% Sr\S-  \S'   Sr\S-  \S'   Sr\S-  \S'   Sr	g)Ú
_PageFileséÉ   Nr‚   Úocrr�   r˜   )
r�   rŽ   r�   r�   r‚   r¡   r§   r«   r�   r—   r˜   r/   r-   r©   r©   É   s/   ‡ à"€Eˆ9�tÑÓ"Ø €Cˆ�TÑ	Ó Ø!%€Hˆi˜$ÑÖ%r/   r©   Ú	title_strc                 ón  • U R                  S5      nU H�  nUR                  5       nUR                  S5      (       d  M+   UR                  5       SS n[        R                  " [
        R                  " [        [        [        U5      5      [        R                  S9S9nUs  $    g! [         a       gf = f)zH
Extracts bbox from title string like 'bbox 279 177 306 214;x_wconf 97'
Ú;zbbox r@   N)Úorigin)r,   )ÚsplitÚstripÚ
startswithr   r*   r
   r(   ÚtupleÚmapr’   r   r)   Ú	Exception)r¬   ÚpartsÚpartÚcoordsr   s        r-   Ú_extract_rectr¹   Ð   s¢   € ð �O‰O˜CÓ €EÛˆØ�z‰z‹|ˆØ�?‰?˜7×#Ó#ð	ØŸ™› a bÐ)�Ü(×:Ò:Ü$×/Ò/Üœc¤# vÓ.Ó/¼×8KÑ8Kññ�ð
 ’ñ ð øô ó Úðús   Á A B&Â&
B4Â3B4c                 óæ   • U R                  S5       HK  nUR                  5       nUR                  S5      (       d  M+   [        UR                  5       S   5      S-  s  $    g! [         a       gf = f)z:Extracts x_wconf (OCR confidence) value from title string.r®   Úx_wconfr@   g      Y@)r°   r±   r²   r–   rµ   )r¬   r·   s     r-   Ú_extract_confidencer¼   å   sg   € à—‘ Ö$ˆØ�z‰z‹|ˆØ�?‰?˜9×%Ó%ðÜ˜TŸZ™Z›\¨!™_Ó-°Ñ5Ò5ñ	 %ð øô ó Úðús   ¾A"Á"
A0Á/A0c                   ó  ^ • \ rS rSr SSSS\\-  S\S-  4U 4S jjjrS\S	\	R                  S-  4S
 jrS\S	\\S-  \S-  4   4S jrS	\4S jrS\S	\4S jrS	\4S jr\S	\\   4S j5       r\S	\4S j5       rSU 4S jjrSrU =r$ )ÚMetsGbsDocumentBackendéñ   NÚin_docr   Úpath_or_streamÚoptionsc           	      ó   >• Uc
  [        5       n[        TU ]	  XU5        U   [        U R                  [
        5      (       a  [        R                  " U R                  SS9O[        R                  " U R                  SS9U l        S U l	        0 U l
        SU l        SnU R                  R                  5        GH‹  nUS-  nX@R                  R                  :”  a"  [        SU R                  R                   35      eUR                   R#                  S5      (       d  Mf  U R                  R%                  U5      nUc  M†  UR'                  U R                  R(                  S-   5      n[+        U5      U R                  R(                  :”  a0  [        SUR                    S	U R                  R(                   S
35      eU =R                  [+        U5      -  sl        U R                  U R                  R,                  :”  a#  [        SU R                  R,                   S
35      eU R/                  U5      U l	        U R                  c  GMŒ    O   U R                  c  [1        SU R2                   S35      eSSSSSSS.n0 n	U R                  R5                  SUS9 H‘  n
U
R7                  S5      n [9        U5      nU
R5                  SUS9 H]  nUR7                  S5      nUR7                  S5      nUR;                  SUS9nUb  UR7                  S5      OS nUc  MP  [=        XïUUS9Xž'   M_     M“     [8        R>                  S[8        R@                  S[8        RB                  S 0nU R                  R5                  S!US9 H¸  nUR7                  S"5      nU(       d  M   [E        U5      S-
  n[G        5       nUR5                  S#US9 H_  nUR7                  S$5      nU	R7                  U5      nU(       d  M.  UR7                  URH                  5      nU(       d  MR  [K        UUU5        Ma     UU R                  U'   Mº     g ! [         a     GM¬  f = f! [         a     MÜ  f = f)%Nzr:gz)ÚnameÚmode)ÚfileobjrÅ   r   r@   z.Archive exceeds maximum member count limit of z.xmlz	XML file z exceeds size limit of ú bytesz1Archive exceeds maximum total extraction size of z)METS GBS backend could not load document Ú.zhttp://www.loc.gov/METS/zhttp://www.w3.org/1999/xlinkz)http://www.w3.org/2001/XMLSchema-instancezhttp://books.google.com/gbszinfo:lc/xmlns/premis-v2zhttp://www.loc.gov/MARC21/slim)ÚmetsÚxlinkÚxsiÚgbsÚpremisÚmarcz.//mets:fileGrp)Ú
namespacesÚUSEz./mets:fileÚIDÚMIMETYPEzmets:FLocatz"{http://www.w3.org/1999/xlink}href)r£   r¤   r¥   r¦   r‚   r«   r�   z.//mets:div[@TYPE="page"]ÚORDERz./mets:fptrÚFILEID)&r   Úsuperr=   Ú
isinstancerÁ   r   ÚtarfileÚopenÚ_tarÚ	root_metsÚpage_mapÚ_total_bytes_extractedÚ
getmembersrÂ   Úmax_member_countÚ
ValueErrorrÄ   ÚendswithÚextractfileÚreadÚmax_file_bytesrY   Úmax_total_bytesÚ_validate_mets_xmlr   Údocument_hashÚxpathÚgetrš   Úfindr¡   rž   rœ   rŸ   r’   r©   r¦   Úsetattr)r<   rÀ   rÁ   rÂ   Úmember_countÚmemberÚfileÚcontentÚnsÚfile_info_by_idÚfilegrpÚuse_rawr¦   Ú	file_elemr£   r¤   Úflocat_elemÚhrefÚUSE_TO_ATTRÚdivÚ	order_strr5   Ú
page_filesÚfptrÚ	file_infoÚattrÚ	__class__s                             €r-   r=   ÚMetsGbsDocumentBackend.__init__ò   s  ø€ ð ‰?Ü+Ó-ˆGÜ‰Ñ˜°Ô9Ùô ˜$×-Ñ-¬t×4Ñ4ô �LŠL˜d×1Ñ1¸Ò?ä—’ d×&9Ñ&9ÀÑGð 	Œ	ð
 15ˆŒØ/1ˆŒØ&'ˆÔ#Øˆà—i‘i×*Ñ*×,ˆFØ˜AÑˆLØŸl™l×;Ñ;Ó;Ü ØDÀTÇ\Á\×EbÑEbÐDcÐdóð ð �{‰{×#Ñ# F×+Ó+Ø—y‘y×,Ñ,¨VÓ4�ØÓ#Ø"Ÿi™i¨¯©×(CÑ(CÀaÑ(GÓH�GÜ˜7“| d§l¡l×&AÑ&AÓAÜ(Ø'¨¯© }Ð4KÈDÏLÉL×LgÑLgÐKhÐhnÐoóð ð ×/Ò/´3°w³<Ñ?Õ/Ø×2Ñ2°T·\±\×5QÑ5QÓQÜ(ØOÐPT×P\ÑP\×PlÑPlÐOmÐmsÐtóð ð &*×%<Ñ%<¸WÓ%E�D”NØ—~‘~Ô1Ùñ1 -ð4 �>‰>Ñ!Ü#Ø;¸D×<NÑ<NÐ;OÈqÐQóð ð
 /Ø3Ø>Ø0Ø/Ø4ñ
ˆð 13ˆà—~‘~×+Ñ+Ð,=È"Ð+ÓMˆGØ—k‘k %Ó(ˆGðÜ˜wÓ'�ð %Ÿ]™]¨=ÀR˜]ÓH�	Ø#Ÿ-™-¨Ó-�Ø$Ÿ=™=¨Ó4�Ø'Ÿn™n¨]Àr˜nÐJ�ð #Ñ.ð  —O‘OÐ$HÔIàð ð
 ‘<Ùä+4Ø#¸TÀsñ,�Ó(ó Iñ Nô0 �N‰N˜GÜ�L‰L˜%Ü×Ñ 
ð
ˆð —>‘>×'Ñ'Ð(CÐPRÐ'ÓSˆCØŸ™ Ó(ˆIÞÙðÜ˜i›.¨1Ñ,�ô $›ˆJàŸ	™	 -¸B˜	Ó?�ØŸ(™( 8Ó,�Ø+×/Ñ/°Ó8�	ç�9Ø&Ÿ?™?¨9¯=©=Ó9�Dß�tÜ 
¨D°)Ö<ñ @ð &0ˆD�M‰M˜'Ó"ò) Tøô3 ó Ûðûô> ó Úðús$   Ê$P-ÎP?Ð-
P<Ð;P<Ð?
QÑQÚ
xml_stringr   c                 óÖ   • [         R                  " SSSS9n[         R                  " XS9nUR                  S:X  a  UR	                  S5      S:X  a  U$ [
        R                  SU 35        g )	NFT)Úresolve_entitiesÚload_dtdÚ
no_network©Úparserz{http://www.loc.gov/METS/}metsÚPROFILErÌ   z8The root element is not <mets:mets> with PROFILE='gbs': )r   Ú	XMLParserÚ
fromstringÚtagrè   Ú_logÚwarning)r<   rÿ   r  Úroots       r-   rå   Ú)MetsGbsDocumentBackend._validate_mets_xmlc  sd   € ä—’Ø"¨U¸tñ
ˆô  %×/Ò/°
ÑJˆà�H‰HÐ8Ó8Ø—‘˜Ó# uÓ,àˆKä�‰ÐOÐPTÈvÐVÔWØr/   r5   c                 óà
  • U R                   U   R                  nU R                   U   R                  nUb  Uc  [        R	                  SU S35        gU R
                  R                  UR                  5      nUc  [        SUR                   S35      e[        [        R                  U5      nUR                  U R                  R                  S-   5      n[        U5      U R                  R                  :”  a0  [!        SUR                   SU R                  R                   S	35      eU =R"                  [        U5      -  sl        U R"                  U R                  R$                  :”  a#  [!        S
U R                  R$                   S	35      e['        U5      n[(        R*                  " U5      nU R
                  R                  UR                  5      nUc  [        SUR                   S35      e[        [        R                  U5      nUR                  U R                  R                  S-   5      n	[        U	5      U R                  R                  :”  a0  [!        SUR                   SU R                  R                   S	35      eU =R"                  [        U	5      -  sl        U R"                  U R                  R$                  :”  a#  [!        S
U R                  R$                   S	35      e[,        R.                  " SS9n
[,        R0                  " XšS9n/ n/ nUR3                  S5      n[5        UR6                  S   UR6                  S   S9nU(       aP  US   R8                  R;                  SS5      n[=        U5      nU(       a  [5        UR>                  UR@                  S9nO[        RC                  SU 35        URE                  [G        UR>                  5      [G        UR@                  5      4S9nURI                  S5      n[K        UR3                  S5      5       H‹  u  nnSRM                  URO                  5       5      RQ                  5       nUR8                  R;                  SS5      n[=        U5      n[S        U5      nU(       d  Mn  URU                  [W        UUUUSUS95        M�     [K        UR3                  S5      5       H‹  u  nnSRM                  URO                  5       5      RQ                  5       nUR8                  R;                  SS5      n[=        U5      n[S        U5      nU(       d  Mn  URU                  [W        UUUUSUS95        M�     [Y        [[        U5      U/ USSSS9nUU4$ )NzPage z= is missing an 'image' or 'coordOCR' fileGrp entry; skipping.)NNzArchive member 'z6' is not a regular file (directory or symlink in tar).r@   zImage file z' exceeds individual file size limit of rÇ   z.Total extracted data exceeds maximum limit of z	OCR file T)r  r  z//div[@class='ocr_page']r   r†   ÚtitlerO   z!Could not find ocr_page for page r|   ÚRGBz//span[@class='ocrx_word'])ÚindexrZ   Úorigr   Úfrom_ocrÚ
confidencez//span[@class='ocr_line']F)r‡   rT   Ú
char_cellsÚ
word_cellsÚhas_textlinesÚ	has_wordsÚ	has_chars).rÛ   r‚   r�   r
  r  rÙ   rá   r¥   rH   r	   r×   ÚExFileObjectrâ   rÂ   rã   rY   rß   rÜ   rä   r   r   rØ   r   Ú
HTMLParserr  rç   r   r   Úattribrè   r¹   r&   r'   Úerrorr}   r~   ÚconvertrS   ÚjoinÚitertextr±   r¼   Úappendr   r   r.   )r<   r5   Ú
image_infoÚocr_infoÚ
image_fileÚ
image_dataÚbufr�   Úocr_fileÚocr_contentr  Úocr_rootÚ
line_cellsr  Úpage_divr   r  r   ÚixÚwordrZ   ÚconfÚlineÚpages                           r-   Ú_parse_pageÚ"MetsGbsDocumentBackend._parse_pager  sÊ  € ð —]‘] 7Ñ+×1Ñ1ˆ
Ø—=‘= Ñ)×2Ñ2ˆØÑ Ñ!1Ü�L‰LØ˜�yð !ð ôð ð —Y‘Y×*Ñ*¨:¯?©?Ó;ˆ
ØÑÜØ" :§?¡?Ð"3ð 41ð 1óð ô œ'×.Ñ.°
Ó;ˆ
Ø—_‘_ T§\¡\×%@Ñ%@À1Ñ%DÓEˆ
Üˆz‹?˜TŸ\™\×8Ñ8Ó8ÜØ˜jŸo™oÐ.Ð.UÐVZ×VbÑVb×VqÑVqÐUrÐrxÐyóð ð
 	×#Ò#¤s¨:£Ñ6Õ#Ø×&Ñ&¨¯©×)EÑ)EÓEÜØ@ÀÇÁ×A]ÑA]Ð@^Ð^dÐeóð ô �jÓ!ˆÜ—z’z #“ˆà—9‘9×(Ñ(¨¯©Ó7ˆØÑÜØ" 8§=¡= /ð 21ð 1óð ô œ×,Ñ,¨hÓ7ˆØ—m‘m D§L¡L×$?Ñ$?À!Ñ$CÓDˆÜˆ{Ó˜dŸl™l×9Ñ9Ó9ÜØ˜HŸM™M˜?Ð*QÐRV×R^ÑR^×RmÑRmÐQnÐntÐuóð ð
 	×#Ò#¤s¨;Ó'7Ñ7Õ#Ø×&Ñ&¨¯©×)EÑ)EÓEÜØ@ÀÇÁ×A]ÑA]Ð@^Ð^dÐeóð ô ×!Ò!¨TÑ2ˆÜ#(×#3Ò#3°KÑ#Oˆà%'ˆ
Ø%'ˆ
à—>‘>Ð"<Ó=ˆä˜"Ÿ'™' !™*¨R¯W©W°Q©ZÑ8ˆÞØ˜Q‘K×&Ñ&×*Ñ*¨7°BÓ7ˆEÜ  Ó'ˆDÞÜ $§*¡*°T·[±[ÑA�øä�J‰JÐ:¸7¸)ÐDÔEà�Y‰YœU 4§:¡:Ó.´°d·k±kÓ0BÐCˆYÐDˆØ�Z‰Z˜Óˆô " (§.¡.Ð1MÓ"NÖO‰HˆB�Ø—7‘7˜4Ÿ=™=›?Ó+×1Ñ1Ó3ˆDØ—K‘K—O‘O G¨RÓ0ˆEÜ  Ó'ˆDÜ& uÓ-ˆDßˆtØ×!Ñ!ÜØ Ø!Ø!Ø!Ø!%Ø#'ñö	ñ Pô& " (§.¡.Ð1LÓ"MÖN‰HˆB�Ø—7‘7˜4Ÿ=™=›?Ó+×1Ñ1Ó3ˆDØ—K‘K—O‘O G¨RÓ0ˆEÜ  Ó'ˆDÜ& uÓ-ˆDßˆtØ×!Ñ!ÜØ Ø!Ø!Ø!Ø!%Ø#'ñö	ñ Oô"  Ü,¨TÓ2Ø%ØØ!ØØØñ
ˆð �Rˆxˆr/   c                 ó,   • [        U R                  5      $ r7   )rY   rÛ   rA   s    r-   Ú
page_countÚ!MetsGbsDocumentBackend.page_countô  s   € Ü�4—=‘=Ó!Ð!r/   c                 ó<   • U R                  U5      u  p#[        X#US9$ )N)r3   r4   r5   )r1  r1   )r<   r5   r0  r�   s       r-   Ú	load_pageÚ MetsGbsDocumentBackend.load_page÷  s!   € à×#Ñ# GÓ,‰ˆÜ!¨dÈÑPÐPr/   c                 óR   • U R                   S L=(       a    U R                  5       S:„  $ )Nr   )rÚ   r4  rA   s    r-   rD   ÚMetsGbsDocumentBackend.is_validü  s"   € Ø�~‰~ TÐ)×C¨d¯o©oÓ.?À!Ñ.CÐCr/   c                 ó$   • [         R                  1$ r7   )r   ÚMETS_GBS©Úclss    r-   Úsupported_formatsÚ(MetsGbsDocumentBackend.supported_formatsÿ  s   € ä×$Ñ$Ð%Ð%r/   c                 ó   • g)NTr˜   r=  s    r-   Úsupports_paginationÚ*MetsGbsDocumentBackend.supports_pagination  s   € àr/   c                 óV   >• [         TU ]  5         U R                  R                  5         g r7   )rÕ   rŠ   rÙ   Úclose)r<   rý   s    €r-   rŠ   ÚMetsGbsDocumentBackend.unload  s   ø€ Ü‰‰ÔØ�	‰	�‰Õr/   )rÙ   rÜ   rÛ   rÚ   r7   rŒ   )r�   rŽ   r�   r�   r   r   r   r=   Úbytesr   Ú_Elementrå   r’   r³   r   r‘   r1  r4  r1   r7  r”   rD   ÚclassmethodÚsetr   r?  rB  rŠ   r—   Ú__classcell__)rý   s   @r-   r¾   r¾   ñ   sü   ø† ð
 15ñ	o0àðo0ð   $™ðo0ð '¨Ñ-÷	o0ð o0ðb¨Uð °u·~±~ÈÑ7Lô ð@Øð@à	Ð $Ñ&¨°4©Ð7Ñ	8ô@ðD"˜Cô "ðQ ð QÐ);ô Qð
D˜$ô Dð ð& # kÑ"2ó &ó ð&ð ð Dó ó ð÷õ r/   r¾   )8Ú__doc__Úloggingr×   Úcollections.abcr   Údataclassesr   Úenumr   Úior   Úpathlibr   Útypingr   r	   Údocling_core.types.docr
   r   r   Údocling_core.types.doc.pager   r   r   r   r   Úlxmlr   ÚPILr   Ú	PIL.Imager‘   Údocling.backend.pdf_backendr   r   Ú!docling.datamodel.backend_optionsr   Údocling.datamodel.base_modelsr   Údocling.exceptionsr   Údocling.datamodel.documentr   Ú	getLoggerr�   r
  r.   r1   r•   rš   r¡   r©   r¹   r–   r¼   r¾   r˜   r/   r-   Ú<module>r_     sþ   ðñ +ã Û Ý $Ý !Ý Ý Ý ß &ç AÑ A÷õ õ Ý Ý 'ç JÝ CÝ 5Ý 0æÝ8à×Ò˜Ó"€ðØ
ðàôô(~˜ô ~ôBˆs�Dô ð ÷ð ó ðð ÷&ð &ó ð&ð˜Sð Ð%6¸Ñ%=ô ð*	 3ð 	¨5ô 	ôXÐ/õ Xr/   