§
    dÒ³g,  ã                   ó®  — d dl Z d dlZd dlmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZ g d¢ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdededefd„Zdededefd„Zdededefd„Z dededefd„Z!de"de#defd„Z$ee"eeef         f         Z%ee"eee
e         e
e         f         f         Z&ee"eeee#e%e&f         f         Z' G d„ d¦  «        Z( G d„ d ¦  «        Z)dS )!é    N)ÚpackÚunpackÚcalcsize)ÚBinaryIOÚDictÚIterableÚListÚOptionalÚTupleÚUnionÚcast))ú>LÚnumber)ú>BÚflags)r   Úretention_flags)r   Ú
page_assoc)r   Údata_lengthé€   é@   é?   éà   iÿÿÿé   l   ÿÿ é&   é1   é3   s   —JB2

é   Úbit_posÚvalueÚreturnc                 ó,   — t          || z	  dz  ¦  «        S )Nr   ©Úbool)r   r   s     úL/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pdfminer/jbig2.pyÚbit_setr%   %   s   € Ý�˜'Ñ! QÑ&Ñ'Ô'Ð'ó    Úflagc                 ó&   — t          | |z  ¦  «        S ©Nr"   )r'   r   s     r$   Ú
check_flagr*   )   s   € Ý��u‘ÑÔÐr&   Úmaskc                 óz   — t          dd¦  «        D ]}t          || ¦  «        r
|| z  |z	  c S Œt          d¦  «        ‚©Nr   é   zInvalid mask or value©Úranger%   Ú	Exception©r+   r   r   s      r$   Úmasked_valuer3   -   sV   € Ý˜˜B‘<”<ð -ð -ˆÝ�7˜DÑ!Ô!ð 	-Ø˜D‘L WÑ,Ð,Ð,Ð,ð	-õ Ð+Ñ
,Ô
,Ð,r&   c                 ó€   — t          dd¦  «        D ]}t          || ¦  «        r|| |z	  z  |z  c S Œ t          d¦  «        ‚r-   r/   r2   s      r$   Ú
mask_valuer5   5   s[   € Ý˜˜B‘<”<ð :ð :ˆÝ�7˜DÑ!Ô!ð 	:Ø˜T W™_Ñ-°'Ñ9Ð9Ð9Ð9ð	:õ Ð+Ñ
,Ô
,Ð,r&   ÚformatÚbufferc                 ór   — | dv sJ ‚t          t          t                   t          | |¦  «        ¦  «        \  }|S )N>   r   ú>Ir   )r   r   Úintr   )r6   r7   Úresults      r$   Ú
unpack_intr<   =   s8   € ØÐ'Ð'Ð'Ð'Ð'Ý•E�#”J¥ v¨vÑ 6Ô 6Ñ7Ô7�H€VØ€Mr&   c                   ó¦   — e Zd ZdZdeddfd„Zdee         fd„Zde	fd„Z
de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fd„Zdeded
edefd„ZdS )ÚJBIG2StreamReaderz&Read segments from a JBIG2 byte streamÚstreamr    Nc                 ó   — || _         d S r)   ©r?   ©Úselfr?   s     r$   Ú__init__zJBIG2StreamReader.__init__M   ó   € ØˆŒˆˆr&   c                 óÜ  — g }|                       ¦   «         sÕi }t          D ]�\  }}t          |¦  «        }| j                             |¦  «        }t          |¦  «        |k     rd|d<    nFt          ||¦  «        }t          | d|z  d ¦  «        }t          |¦  «        r ||||¦  «        }|||<   ŒŽ| 	                    d¦  «        s| 
                    |¦  «         |                       ¦   «         ¯Õ|S )NTÚ_errorzparse_%s)Úis_eofÚ
SEG_STRUCTr   r?   ÚreadÚlenr<   ÚgetattrÚcallableÚgetÚappend)	rC   ÚsegmentsÚsegmentÚfield_formatÚnameÚ	field_lenÚfieldr   Úparsers	            r$   Úget_segmentszJBIG2StreamReader.get_segmentsP   s  € Ø')ˆØ—+’+‘-”-ð 	)Ø$&ˆGÝ&0ð 
&ð 
&Ñ"�˜dÝ$ \Ñ2Ô2�	Øœ×(Ò(¨Ñ3Ô3�Ý�u‘:”: 	Ò)Ð)Ø(,�G˜HÑ%Ø�EÝ" <°Ñ7Ô7�Ý   z°DÑ'8¸$Ñ?Ô?�Ý˜FÑ#Ô#ð :Ø"˜F 7¨E°5Ñ9Ô9�EØ %�˜‘�à—;’;˜xÑ(Ô(ð )Ø—’ Ñ(Ô(Ð(ð —+’+‘-”-ð 	)ð  ˆr&   c                 ó�   — | j                              d¦  «        dk    rdS | j                              dt          j        ¦  «         dS )Nr   r&   TéÿÿÿÿF)r?   rJ   ÚseekÚosÚSEEK_CUR)rC   s    r$   rH   zJBIG2StreamReader.is_eofd   sA   € ØŒ;×Ò˜AÑÔ #Ò%Ð%Ø�4àŒK×Ò˜R¥¤Ñ-Ô-Ð-Ø�5r&   rQ   r   rU   c                 ó€   — t          t          |¦  «        t          t          |¦  «        t          t          |¦  «        dœS )N)ÚdeferredÚpage_assoc_longÚtype)r*   ÚHEADER_FLAG_DEFERREDÚHEADER_FLAG_PAGE_ASSOC_LONGr3   ÚSEG_TYPE_MASK)rC   rQ   r   rU   s       r$   Úparse_flagszJBIG2StreamReader.parse_flagsk   s<   € õ #Õ#7¸Ñ?Ô?Ý)Õ*EÀuÑMÔMÝ ¥°Ñ6Ô6ð
ð 
ð 	
r&   c                 ó˜  — t          t          |¦  «        }g }g }|t          k     r6t          d¦  «        D ]%}|                     t          ||¦  «        ¦  «         Œ&nØ|| j                             d¦  «        z  }t          d|¦  «        }t          t          |¦  «        }t          t          j        |dz   dz  ¦  «        ¦  «        }t          |¦  «        D ]_}	t          d| j                             d¦  «        ¦  «        }
t          d¦  «        D ]%}|                     t          ||
¦  «        ¦  «         Œ&Œ`|d         }t          |t          ¦  «        sJ ‚|d	k    rd}n|d
k    rd}nd}t          |¦  «        }t          |¦  «        D ]A}| j                             |¦  «        }t          ||¦  «        }|                     |¦  «         ŒB|||dœS )Né   é   r   r   é   r   r   r   é   é   r9   )Ú	ref_countÚretain_segmentsÚref_segments)r3   ÚREF_COUNT_SHORT_MASKÚREF_COUNT_LONGr0   rO   r%   r?   rJ   r<   ÚREF_COUNT_LONG_MASKr:   ÚmathÚceilÚ
isinstancer   )rC   rQ   r   rU   rk   rl   rm   r   Úret_bytes_countÚret_byte_indexÚret_byteÚseg_numÚ
ref_formatÚref_sizeÚ	ref_indexÚref_dataÚrefs                    r$   Úparse_retention_flagsz'JBIG2StreamReader.parse_retention_flagst   sú  € õ !Õ!5°uÑ=Ô=ˆ	ØˆØˆà•~Ò%Ð%Ý  ™8œ8ð @ð @�Ø×&Ò&¥w¨w¸Ñ'>Ô'>Ñ?Ô?Ð?Ð?ð@ð �T”[×%Ò% aÑ(Ô(Ñ(ˆEÝ" 4¨Ñ/Ô/ˆIÝ$Õ%8¸)ÑDÔDˆIÝ!¥$¤)¨Y¸©]¸aÑ,?Ñ"@Ô"@ÑAÔAˆOÝ"'¨Ñ"8Ô"8ð Gð G�Ý% d¨D¬K×,<Ò,<¸QÑ,?Ô,?Ñ@Ô@�Ý$ Q™xœxð Gð G�GØ#×*Ò*­7°7¸HÑ+EÔ+EÑFÔFÐFÐFðGð ˜(Ô#ˆÝ˜'¥3Ñ'Ô'Ð'Ð'Ð'Ø�cŠ>ˆ>ØˆJˆJØ˜ÒÐØˆJˆJàˆJå˜JÑ'Ô'ˆå˜yÑ)Ô)ð 	%ð 	%ˆIØ”{×'Ò'¨Ñ1Ô1ˆHÝ˜Z¨Ñ2Ô2ˆCØ×Ò Ñ$Ô$Ð$Ð$ð #Ø.Ø(ð
ð 
ð 	
r&   Úpagec                 ó¢   — t          t          |d         ¦  «        d         r-|| j                             d¦  «        z  }t	          d|¦  «        }|S )Nr   r_   rg   r   )r   ÚJBIG2SegmentFlagsr?   rJ   r<   )rC   rQ   r~   rU   s       r$   Úparse_page_assocz"JBIG2StreamReader.parse_page_assocž   sN   € ÝÕ! 7¨7Ô#3Ñ4Ô4Ð5FÔGð 	+Ø�T”[×%Ò% aÑ(Ô(Ñ(ˆEÝ˜d EÑ*Ô*ˆDØˆr&   Úlengthc                 óÌ   — |rat          t          |d         ¦  «        d         t          k    r|t          k    rt	          d¦  «        ‚| j                             |¦  «        |d<   |S )Nr   r`   z:Working with unknown segment length is not implemented yetÚraw_data)r   r€   ÚSEG_TYPE_IMMEDIATE_GEN_REGIONÚDATA_LEN_UNKNOWNÚNotImplementedErrorr?   rJ   )rC   rQ   r‚   rU   s       r$   Úparse_data_lengthz#JBIG2StreamReader.parse_data_length¤   ss   € ð ð 
	?åÕ&¨°Ô(8Ñ9Ô9¸&ÔAÝ0ò1ð 1àÕ-Ò-Ð-å)ØSñô ð ð '+¤k×&6Ò&6°vÑ&>Ô&>�˜
Ñ#àˆr&   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rD   r	   ÚJBIG2SegmentrW   r#   rH   r:   Úbytesr€   rd   ÚJBIG2RetentionFlagsr}   r�   rˆ   © r&   r$   r>   r>   J   sE  € € € € € Ø0Ð0ð˜xð ¨Dð ð ð ð ð˜d <Ô0ð ð ð ð ð(˜ð ð ð ð ð
Ø#ð
Ø,/ð
Ø8=ð
à	ð
ð 
ð 
ð 
ð(
Ø#ð(
Ø,/ð(
Ø8=ð(
à	ð(
ð (
ð (
ð (
ðT¨ð ¸Cð Èð ÐRUð ð ð ð ðØ#ðØ-0ðØ9>ðà	ðð ð ð ð ð r&   r>   c                   ó2  — e Zd ZU dZd eee         g ¦  «         eee         g ¦  «        dœZe	e
d<   deddfd„Z	 dd
ee         dedefd„Z	 dd
ee         dedefd„Zdedefd„Zdededefd„Zde	dedefd„Zdededefd„Zdededefd„Zdedefd„ZdS )ÚJBIG2StreamWriterz.Write JBIG2 segments to a file in JBIG2 formatr   )rk   rm   rl   ÚEMPTY_RETENTION_FLAGSr?   r    Nc                 ó   — || _         d S r)   rA   rB   s     r$   rD   zJBIG2StreamWriter.__init__¿   rE   r&   TrP   Úfix_last_pagec                 ó`  — d}d }d }|D ]Ä}|                       |¦  «        }| j                             |¦  «         |t          |¦  «        z  }t	          t
          t                   |d         ¦  «        }|rYt	          t          |                     d¦  «        ¦  «        }t	          t          |d         ¦  «        d         t          k    rd }ŒÀ|r|}ŒÅ|r^|r\|�Z|  
                    |dz   |¦  «        }|                       |¦  «        }| j                             |¦  «         |t          |¦  «        z  }|S )Nr   r   r   r   r`   r   )Úencode_segmentr?   ÚwriterK   r   r
   r:   rN   r€   ÚSEG_TYPE_END_OF_PAGEÚget_eop_segment)	rC   rP   r•   Údata_lenÚcurrent_pagerw   rQ   ÚdataÚseg_pages	            r$   Úwrite_segmentsz JBIG2StreamWriter.write_segmentsÂ   s?  € ð ˆØ&*ˆØ!%ˆàð 	,ð 	,ˆGØ×&Ò& wÑ/Ô/ˆDØŒK×Ò˜dÑ#Ô#Ð#Ø�˜D™	œ	Ñ!ˆHå�8¥Cœ=¨'°(Ô*;Ñ<Ô<ˆGàð 	,Ý¥ W§[¢[°Ñ%>Ô%>Ñ?Ô?�õ Õ*¨G°GÔ,<Ñ=Ô=¸fÔEÝ+ò,ð ,ð $(�L�LØð ,Ø#+�Løàð 	"˜\ð 	"¨wÐ/BØ×*Ò*¨7°Q©;¸ÑEÔEˆGØ×&Ò& wÑ/Ô/ˆDØŒK×Ò˜dÑ#Ô#Ð#Ø�˜D™	œ	Ñ!ˆHàˆr&   c                 óú  — t           }t          }|t          d|¦  «        z  }t          dd¦  «        }||z  }| j                             |¦  «         t          |¦  «        }||                      ||¦  «        z  }d}|D ]}t          t          |d         ¦  «        }Œ|rd}	nd}	|  	                    ||	z   ¦  «        }
|  
                    |
¦  «        }| j                             |¦  «         |t          |¦  «        z  }|S )Nr   r   r   r   r   é   )ÚFILE_HEADER_IDÚFILE_HEAD_FLAG_SEQUENTIALr   r?   r˜   rK   rŸ   r   r:   Úget_eof_segmentr—   )rC   rP   r•   ÚheaderÚheader_flagsÚnumber_of_pagesr›   rw   rQ   Úseg_num_offsetÚeof_segmentr�   s               r$   Ú
write_filezJBIG2StreamWriter.write_fileã   s
  € õ  ˆÝ0ˆØ•$�t˜\Ñ*Ô*Ñ*ˆõ ˜t Q™-œ-ˆØ�/Ñ!ˆØŒ×Ò˜&Ñ!Ô!Ð!Ý�v‘;”;ˆà�D×'Ò'¨°-Ñ@Ô@Ñ@ˆàˆØð 	3ð 	3ˆGÝ�3 ¨Ô 1Ñ2Ô2ˆGˆGàð 	ØˆNˆNàˆNØ×*Ò*¨7°^Ñ+CÑDÔDˆØ×"Ò" ;Ñ/Ô/ˆàŒ×Ò˜$ÑÔÐØ•C˜‘I”IÑˆàˆr&   rQ   c                 óØ   — d}t           D ]_\  }}|                     |¦  «        }t          | d|z  d ¦  «        }t          |¦  «        r |||¦  «        }nt	          ||¦  «        }||z  }Œ`|S )Nr&   z	encode_%s)rI   rN   rL   rM   r   )rC   rQ   r�   rR   rS   r   ÚencoderrU   s           r$   r—   z JBIG2StreamWriter.encode_segment  s„   € ØˆÝ",ð 	ð 	ÑˆL˜$Ø—K’K Ñ%Ô%ˆEÝ˜d K°$Ñ$6¸Ñ=Ô=ˆGÝ˜Ñ Ô ð 2Ø˜  wÑ/Ô/��å˜\¨5Ñ1Ô1�Ø�E‰MˆDˆDØˆr&   r   c                 óD  — d}|                      d¦  «        r
|t          z  }d|v r||d         rt          n|z  }n9|t          t          |                      dd¦  «        ¦  «        dk    rt          n|z  }|t          t          |d         ¦  «        z  }t          d|¦  «        S )Nr   r^   r_   r~   éÿ   r`   r   )rN   ra   rb   r   r:   r5   rc   r   )rC   r   rQ   r   s       r$   Úencode_flagszJBIG2StreamWriter.encode_flags  s±   € ØˆØ�9Š9�ZÑ Ô ð 	*ØÕ)Ñ)ˆEà Ð%Ð%Ø°EÐ:KÔ4LÐWÕ0Ð0ÐRWÑWˆEˆEàå�˜WŸ[š[¨°Ñ3Ô3Ñ4Ô4°sÒ:Ð:õ ,Ð+àñˆEð 	•�M¨5°¬=Ñ9Ô9Ñ9ˆå�D˜%Ñ Ô Ð r&   c                 óÐ  — g }d}|d         }t          |t          ¦  «        sJ ‚t          t          t                   |                     dg ¦  «        ¦  «        }|dk    rJt          t          |¦  «        }t          |¦  «        D ]\  }}	|	r|d|z  z  }Œ| 	                    |¦  «         n±t          j        |dz   dz  ¦  «        }
dd|
z  z   }t          t          t          ¦  «        d	z  }| 	                    |¦  «         t          |
¦  «        D ]M}d
}||dz  |dz  dz   …         }t          |¦  «        D ]\  }}||rd|z  n|z  }Œ| 	                    |¦  «         ŒNt          t          t                   |                     dg ¦  «        ¦  «        }t          t          |d         ¦  «        }|dk    rd}n|dk    rd}nd}|D ]}||z  }| 	                    |¦  «         Œt          |g|¢R Ž S )Nr   rk   rl   é   r   rh   r   ÚBé   r   rm   r   ri   rj   ÚIÚL)rs   r:   r   r	   r#   rN   r5   rn   Ú	enumeraterO   rq   rr   ro   r0   r   )rC   r   rQ   r   Úflags_formatrk   rl   Ú
flags_byterz   Ú
ref_retainÚbytes_countÚflags_dwordÚ
byte_indexrv   Úret_partr   Úret_segrm   rw   rx   r|   s                        r$   Úencode_retention_flagsz(JBIG2StreamWriter.encode_retention_flags   s#  € ð ˆØˆØ˜+Ô&ˆ	Ý˜)¥SÑ)Ô)Ð)Ð)Ð)Ý�t¥Dœz¨5¯9ª9Ð5FÈÑ+KÔ+KÑLÔLˆà˜Š>ˆ>Ý#Õ$8¸)ÑDÔDˆJÝ)2°?Ñ)CÔ)Cð 1ð 1Ñ%�	˜:Øð 1Ø ! y¡.Ñ0�JøØ�LŠL˜Ñ$Ô$Ð$Ð$åœ) Y°¡]°aÑ$7Ñ8Ô8ˆKØ 3¨Ñ#4Ñ5ˆLÝ$Õ%9½>ÑJÔJÈbÑPˆKØ�LŠL˜Ñ%Ô%Ð%å# KÑ0Ô0ð 'ð '�
Ø�Ø*¨:¸©>¸JÈ¹NÈQÑ<NÐ+NÔO�Ý(1°(Ñ(;Ô(;ð Fð FÑ$�G˜WØ°Ð E  W¡ ¸XÑE�H�Hà—’˜XÑ&Ô&Ð&Ð&å�D¥œI u§y¢y°ÀÑ'DÔ'DÑEÔEˆå•s˜G HÔ-Ñ.Ô.ˆØ�cŠ>ˆ>ØˆJˆJØ˜ÒÐØˆJˆJàˆJàð 	ð 	ˆCØ˜JÑ&ˆLØ�LŠL˜ÑÔÐÐå�LÐ) 5Ð)Ð)Ð)Ð)r&   c                 ób   — t          d|¦  «        }|t          t          |d         ¦  «        z  }|S )Nr   r„   )r   r   rŽ   )rC   r   rQ   r�   s       r$   Úencode_data_lengthz$JBIG2StreamWriter.encode_data_lengthM  s/   € Ý�D˜%Ñ Ô ˆØ••U˜G JÔ/Ñ0Ô0Ñ0ˆØˆr&   Ú
seg_numberÚpage_numberc                 ó8   — ddt           dœ||dt          j        dœS ©Nr   F)r^   r`   r&   )r   r   r   r   r„   r   )r™   r’   r“   )rC   rÂ   rÃ   s      r$   rš   z!JBIG2StreamWriter.get_eop_segmentR  s/   € àØ"'Õ1EÐFÐFØ Ø%ØÝ0ÔFð
ð 
ð 	
r&   c                 ó8   — ddt           dœ|ddt          j        dœS rÅ   )ÚSEG_TYPE_END_OF_FILEr’   r“   )rC   rÂ   s     r$   r¤   z!JBIG2StreamWriter.get_eof_segment\  s/   € àØ"'Õ1EÐFÐFØ ØØÝ0ÔFð
ð 
ð 	
r&   )T)r‰   rŠ   r‹   rŒ   r   r	   r:   r#   r“   r�   Ú__annotations__r   rD   r   r�   rŸ   rª   rŽ   r—   r€   r¯   r¿   rÁ   rš   r¤   r�   r&   r$   r’   r’   ¶   sð  € € € € € € Ø8Ð8ð Ø˜˜T #œY¨Ñ+Ô+Ø˜4  T¤
¨BÑ/Ô/ð2ð 2ÐÐ.ð ð ñ ð˜xð ¨Dð ð ð ð ð GKðð Ø  Ô.ðØ?Cðà	ðð ð ð ðD GKðð Ø  Ô.ðØ?Cðà	ðð ð ð ð>
 lð 
°uð 
ð 
ð 
ð 
ð!Ð"3ð !¸lð !Èuð !ð !ð !ð !ð$+*Ø(ð+*Ø3?ð+*à	ð+*ð +*ð +*ð +*ðZ¨ð °lð Àuð ð ð ð ð

¨#ð 
¸Cð 
ÀLð 
ð 
ð 
ð 
ð
¨#ð 
°,ð 
ð 
ð 
ð 
ð 
ð 
r&   r’   )*rq   r[   Ústructr   r   r   Útypingr   r   r   r	   r
   r   r   r   rI   ra   rb   rc   rn   rp   ro   r†   r…   r™   rÇ   r¢   r£   r:   r#   r%   r*   r3   r5   ÚstrrŽ   r<   r€   r�   r�   r>   r’   r�   r&   r$   ú<module>rÌ      sj  ðØ €€€Ø 	€	€	€	Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ Oðð ð €
ð "Ð Ø(Ð à€à!Ð Ø Ð Ø€àÐ ð !#Ð ØÐ ØÐ ð 5€Ø&Ð ð(�Sð ( ð (¨ð (ð (ð (ð (ð�Sð  ð ¨ð ð ð ð ð-�sð - 3ð -¨3ð -ð -ð -ð -ð-�Sð - ð -¨ð -ð -ð -ð -ð�sð  Eð ¨cð ð ð ð ð ˜˜e C¨ IÔ.Ð.Ô/Ð Ø˜3  c¨4°¬9°d¸4´jÐ&@Ô AÐAÔBÐ ØØˆˆt�S˜%Ð!2Ð4GÐGÔ	HÐHô€ð
ið ið ið ið iñ iô ið iðXn
ð n
ð n
ð n
ð n
ñ n
ô n
ð n
ð n
ð n
r&   