zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
U
T±dëŠã*@s`ddlZddlZddlZddlZddlZddlZddlZddlZdd„Zdddddd    d
d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-œ)Z    d.d/„Z
Gd0d1„d1e ƒZ d2d3„Z Gd4d5„d5e d6d7d8g¡ƒZGd9d:„d:eƒZGd;d<„d<ƒZGd=d>„d>ƒZGd?d@„d@eƒZGdAdB„dBejƒZGdCdD„dDƒZGdEdF„dFƒZdGdH„ZGdIdJ„dJƒZdS)KéNcCstj| d¡S)NÚ    utf_16_be)ÚcodecsÚ BOM_UTF16_BEÚencode)Ús©rúDd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PIL/PdfParser.pyÚ encode_text sr    úu˘uˇuˆu˙u˝u˛u˚u˜u•u†u‡u…u—u–uƒu⁄u‹u›u−u‰u„u“u”u‘u’u‚u™ufiufluŁuŒuÅ uŸuŽuıułuœuÅ¡užu€))éééééééééé€éé‚éƒé„é…é†é‡éˆé‰éŠé‹éŒééŽééé‘é’é“é”é•é–é—é˜é™éšé›éœééžé cCsH|dttjƒ…tjkr0|ttjƒd… d¡Sd dd„|Dƒ¡SdS)NrÚcss|]}t |t|ƒ¡VqdS©N)ÚPDFDocEncodingÚgetÚchr)Ú.0ÚbyterrrÚ    <genexpr>Bszdecode_text.<locals>.<genexpr>)ÚlenrrÚdecodeÚjoin)ÚbrrrÚ decode_text>sr@c@seZdZdZdS)ÚPdfFormatErrorz\An error that probably indicates a syntactic or semantic error in the
    PDF file structureN)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrrrrAEsrAcCs|s t|ƒ‚dSr5)rA)Ú    conditionÚ error_messagerrrÚcheck_format_conditionLsrHc@s4eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd S) ÚIndirectReferencecCsd|S)Nz%s %s Rr©ÚselfrrrÚ__str__TszIndirectReference.__str__cCs| ¡ d¡S©Núus-ascii)rLrrJrrrÚ    __bytes__WszIndirectReference.__bytes__cCs$|j|jko"|j|jko"|j|jkSr5)Ú    __class__Ú    object_idÚ
generation©rKÚotherrrrÚ__eq__Zs
 
ÿ
ýzIndirectReference.__eq__cCs
||k Sr5rrSrrrÚ__ne__aszIndirectReference.__ne__cCst|j|jfƒSr5)ÚhashrQrRrJrrrÚ__hash__dszIndirectReference.__hash__N)rBrCrDrLrOrUrVrXrrrrrIQs
rIZIndirectReferenceTuplerQrRc@seZdZdd„ZdS)ÚIndirectObjectDefcCsd|S)Nz    %s %s objrrJrrrrLiszIndirectObjectDef.__str__N)rBrCrDrLrrrrrYhsrYc@sLeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dS)Ú    XrefTablecCs i|_i|_ddi|_d|_dS)NriF)Úexisting_entriesÚ new_entriesÚdeleted_entriesÚreading_finishedrJrrrÚ__init__ns
zXrefTable.__init__cCs2|jr||j|<n
||j|<||jkr.|j|=dSr5)r^r\r[r]©rKÚkeyÚvaluerrrÚ __setitem__ts
 
 
zXrefTable.__setitem__cCs0z |j|WStk
r*|j|YSXdSr5)r\ÚKeyErrorr[©rKrarrrÚ __getitem__|s zXrefTable.__getitem__cCsŠ||jkr0|j|dd}|j|=||j|<nV||jkrX|j|dd}||j|<n.||jkrn|j|}ndt|ƒd}t|ƒ‚dS)Néz
object ID z+ cannot be deleted because it doesn't exist)r\r]r[ÚstrÚ
IndexError)rKrarRÚmsgrrrÚ __delitem__‚s
 
 
 ÿzXrefTable.__delitem__cCs||jkp||jkSr5)r[r\rerrrÚ __contains__’szXrefTable.__contains__cCs.tt|j ¡ƒt|j ¡ƒBt|j ¡ƒBƒSr5)r<Úsetr[Úkeysr\r]rJrrrÚ__len__•s  ÿ þÿzXrefTable.__len__cCs*t|j ¡ƒt|j ¡ƒt|j ¡ƒBSr5)rmr[rnr]r\rJrrrrnœs þzXrefTable.keysc     CsLtt|j ¡ƒt|j ¡ƒBƒ}tt|j ¡ƒƒ}| ¡}| d¡|rHd}t|ƒD]>\}}|dksr|d|krx|}qV|d|…}||d…}qžqV|}d}| d|dt|ƒf¡|D]ˆ}    |    |jkrà| d|j|    ¡q¼|     d¡}
t
|    |
kd|    ›d|
›ƒz |d} Wnt k
r*d} YnX| d| |j|    f¡q¼qD|S)    Nsxref
rgs%d %d
rs%010d %05d n 
z*expected the next deleted object ID to be z, instead found s%010d %05d f 
) Úsortedrmr\rnr]ÚtellÚwriteÚ    enumerater<ÚpoprHri) rKÚfrnZ deleted_keysZ    startxrefÚprevÚindexraZcontiguous_keysrQZthis_deleted_object_idZnext_in_linked_listrrrrr¡sB 
 
 
þ 
 ÿÿzXrefTable.writeN) rBrCrDr_rcrfrkrlrornrrrrrrrZmsrZc@sdeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zed d „ƒZ    e
e d dƒƒdd„dDƒZ dd„Z dS)ÚPdfNamecCs6t|tƒr|j|_nt|tƒr&||_n | d¡|_dSrM)Ú
isinstancerxÚnameÚbytesr)rKrzrrrr_Ês
 
 
 
zPdfName.__init__cCs |j d¡SrM)rzr=rJrrrÚ name_as_strÒszPdfName.name_as_strcCs t|tƒr|j|jkp||jkSr5)ryrxrzrSrrrrUÕsÿþzPdfName.__eq__cCs
t|jƒSr5)rWrzrJrrrrXÚszPdfName.__hash__cCsdt|jƒ›dS)NzPdfName(ú))ÚreprrzrJrrrÚ__repr__ÝszPdfName.__repr__cCs|t |¡ƒSr5)Ú    PdfParserÚinterpret_name)ÚclsÚdatarrrÚfrom_pdf_streamàszPdfName.from_pdf_streamé!écCsh|] }t|ƒ’qSr)Úord)r9ÚcrrrÚ    <setcomp>äszPdfName.<setcomp>z #%/()<>[]{}cCs@tdƒ}|jD](}||jkr(| |¡q| d|¡qt|ƒS)Nó/s#%02X)Ú    bytearrayrzÚ allowed_charsÚappendÚextendr{)rKÚresultr?rrrrOæs 
 
 zPdfName.__bytes__N)rBrCrDr_r|rUrXrÚ classmethodr„rmÚrangerŒrOrrrrrxÉs
rxc@seZdZdd„ZdS)ÚPdfArraycCsdd dd„|Dƒ¡dS)Ns[ ó css|]}t|ƒVqdSr5)Úpdf_repr)r9Úxrrrr;òsz%PdfArray.__bytes__.<locals>.<genexpr>s ])r>rJrrrrOñszPdfArray.__bytes__N)rBrCrDrOrrrrr’ðsr’c@s$eZdZdd„Zdd„Zdd„ZdS)ÚPdfDictcCs,|dkrtj |||¡n||| d¡<dS)NrƒrN)Ú collectionsÚUserDictÚ __setattr__rr`rrrr™öszPdfDict.__setattr__c
Cs,z|| d¡}Wn,tk
r>}zt|ƒ|‚W5d}~XYnXt|tƒrRt|ƒ}| d¡r(| d¡rt|dd…}d}t|ƒdkrÀ|d}t    |dd…ƒd    }t|ƒd
krÀ|t    |d d
…ƒ7}d dt|ƒd…}t
  |dt|ƒd…|¡}|d kr(|d    9}|dkr|d9}t
  t  |¡|¡}|S)NrNÚDatezD:éÚZéééé<ééz %Y%m%d%H%M%S)ú+ú-r£éÿÿÿÿ)rrdÚAttributeErrorryr{r@ÚendswithÚ
startswithr<ÚintÚtimeÚstrptimeÚgmtimeÚcalendarÚtimegm)rKrarbÚeZ relationshipÚoffsetÚformatrrrÚ __getattr__üs.
 
 
 
zPdfDict.__getattr__cCsntdƒ}| ¡D]J\}}|dkr"qt|ƒ}| d¡| tt|ƒƒ¡| d¡| |¡q| d¡t|ƒS)Nó<<ó
r“s
>>)r‹Úitemsr”rŽr{rx)rKÚoutrarbrrrrOs
 
 
zPdfDict.__bytes__N)rBrCrDr™r²rOrrrrr–õsr–c@seZdZdd„Zdd„ZdS)Ú    PdfBinarycCs
||_dSr5)rƒ)rKrƒrrrr_&szPdfBinary.__init__cCsdd dd„|jDƒ¡S)Ns<%s>ócss|]}d|VqdS)s%02XNr©r9r?rrrr;*sz&PdfBinary.__bytes__.<locals>.<genexpr>)r>rƒrJrrrrO)szPdfBinary.__bytes__N)rBrCrDr_rOrrrrr·%sr·c@seZdZdd„Zdd„ZdS)Ú    PdfStreamcCs||_||_dSr5)Ú
dictionaryÚbuf)rKr»r¼rrrr_.szPdfStream.__init__cCsŽz |jj}Wntk
r&|jYSX|dkrnz |jj}Wntk
rX|jj}YnXtj|jt|ƒdSdt    |jjƒ›d}t
|ƒ‚dS)Ns FlateDecode)Úbufsizezstream filter z unknown/unsupported) r»ÚFilterr¦r¼ZDLÚLengthÚzlibÚ
decompressr©r~ÚNotImplementedError)rKÚfilterZexpected_lengthrjrrrr=2s   zPdfStream.decodeN)rBrCrDr_r=rrrrrº-srºcCs
|dkr dS|dkrdS|dkr$dSt|ttttfƒr>t|ƒSt|ttfƒrZt|ƒ     d¡St|t
j ƒr€dt
  d|¡     d¡d    St|t ƒr–tt|ƒƒSt|tƒr¬tt|ƒƒSt|tƒrÂtt|ƒƒSt|tƒrþ| d
d ¡}| d d ¡}| d    d¡}d |d    St|ƒSdS)NTstrueFsfalsesnullrNs(D:z %Y%m%d%H%M%SZó)ó\s\\ó(ó\(s\))ryrxr–r’r·r{r©ÚfloatrhrrªÚ struct_timeÚstrftimeÚdictÚlistr”r    Úreplace)r•rrrr”Bs0 
 
 
      r”c @sîeZdZdZdrdd„Zdd„Zd    d
„Zd d „Zd d„Zdd„Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdsdd„Zdd„Zdd „Zd!d"„Zed#d$„ƒZd%d&„Zdtd'd(„Zd)Zd*Zd+Zd,Zed-Zed.Zd/Zd0ZeeeZe  !ed1ed2ed3ed4ed5ed6e j"¡Z#e  !ed1ed7ed3ed4ed5ee j"¡Z$d8d9„Z%d:d;„Z&e  !e¡Z'e  !ed<ed=¡Z(e  !ed>¡Z)e  !ed?e¡Z*e+d@dA„ƒZ,e  !dB¡Z-e+dudDdE„ƒZ.e  !edFed=¡Z/e  !edGed=¡Z0e  !edHed=¡Z1e  !edIed=¡Z2e  !edJed=¡Z3e  !edK¡Z4e  !edL¡Z5e  !edMedN¡Z6e  !edO¡Z7e  !edPedPedQed=¡Z8e  !edPedPedRed=¡Z9e  !edSed=¡Z:e  !dTedUedV¡Z;e  !edW¡Z<e  !edXed=¡Z=e+dvdZd[„ƒZ>e  !d\¡Z?d]d^d_d`dadbdcdddedfdTdTd=d=dgdge@d]ƒd^e@d_ƒd`e@daƒdbe@dcƒdde@deƒdfe@dTƒdTe@d=ƒd=e@dgƒdgiZAe+dhdi„ƒZBe  !edje¡ZCe  !ed4ed4ee¡ZDe  !dk¡ZEdldm„ZFdwdndo„ZGdxdpdq„ZHdS)yr€z|Based on
    https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
    Supports PDF up to 1.4
    NrÚrbcCs|r|rd}t|ƒ‚||_||_||_||_d|_d|_|dk    r^|dkr^t||ƒ|_}d|_|dk    r’| |¡|_}d|_|s’t    |dƒr’|j
|_i|_ |r¦|  ¡nTd|_ |_tƒ|_d|_tƒ|_d|_i|_g|_g|_d|_d|_i|_tƒ|_d|j_|r| ¡dS)Nz4specify buf or f or filename, but not both buf and fFTrzr)Ú RuntimeErrorÚfilenamer¼ruÚ start_offsetÚshould_close_bufÚshould_close_fileÚopenÚget_buf_from_fileÚhasattrrzÚcached_objectsÚ read_pdf_infoÚfile_size_totalÚfile_size_thisr–ÚrootÚroot_refÚinfoÚinfo_refÚpage_tree_rootÚpagesÚ
orig_pagesÚ    pages_refÚlast_xref_section_offsetÚ trailer_dictrZÚ
xref_tabler^Úseek_end)rKrÐrur¼rÑÚmoderjrrrr_esF
 zPdfParser.__init__cCs|Sr5rrJrrrÚ    __enter__‹szPdfParser.__enter__cCs | ¡dS)NF)Úclose)rKÚexc_typeÚ    exc_valueÚ    tracebackrrrÚ__exit__ŽszPdfParser.__exit__cCs| ¡| ¡dSr5)Ú    close_bufrærJrrrÚ start_writing’szPdfParser.start_writingcCs.z|j ¡Wntk
r"YnXd|_dSr5)r¼rér¦rJrrrrî–s
zPdfParser.close_bufcCs2|jr| ¡|jdk    r.|jr.|j ¡d|_dSr5)rÒrîrurÓrérJrrrrés
 
zPdfParser.closecCs|j dtj¡dS)Nr)ruÚseekÚosÚSEEK_ENDrJrrrræ¤szPdfParser.seek_endcCs|j d¡dS)Ns    %PDF-1.4
)rurrrJrrrÚ write_header§szPdfParser.write_headercCs|j d|›d ¡¡dS)Nz% Ú
)rurrr)rKrrrrÚ write_commentªszPdfParser.write_commentcCsl| ¡| |j ¡¡|_| d¡|_| ¡|j|jtdƒ|jd|j|jtdƒt    |j
ƒ|j
d|jS)NróCatalog)ÚTypeZPagesóPages)r÷ZCountZKids) Údel_rootÚnext_object_idrurqrÜrâÚ rewrite_pagesÚ    write_objrxr<ràrJrrrÚ write_catalog­s üzPdfParser.write_catalogc Csîg}t|jƒD]˜\}}|j|}|j|j=| |tdƒ¡||jkrHqi}| ¡D]\}}|||     ¡<qT|j
|d<|j d|Ž}t|jƒD]\}    }
|
|krŠ||j|    <qŠq|D]6} | r¬|j| } | j|jkrÔ|j| j=|   dd¡} q°q¬g|_dS)NsParentÚParent)N) rsrár×rårQrrxràrµr|râÚ
write_pager7) rKZpages_tree_nodes_to_deleteÚiZpage_refZ    page_infoZstringified_page_inforarbZ new_page_refÚjZ cur_page_refZpages_tree_node_refZpages_tree_noderrrrû»s,
 
 
 
 
 
zPdfParser.rewrite_pagescCsš|r| ¡||_|jr(| d|j¡|_|j |j¡}t|jƒ}|j|dœ}|j    dk    r`|j    |d<|jrp|j|d<||_    |j dt
t |ƒƒd|¡dS)N)óRootóSizeóPrevóInfostrailer
s
startxref
%d
%%%%EOF) rùrÜrÝrürÞrårrrur<rãr{r–)rKZ new_root_refZ
start_xrefZ num_entriesrärrrÚwrite_xref_and_trailerØs(
 
 
 
 
ÿþÿz PdfParser.write_xref_and_trailercOsLt|tƒr|j|}d|kr(tdƒ|d<d|kr:|j|d<|j|f|ž|ŽS)Nr÷óPagerþ)ryr©ràrxrârü)rKÚrefÚobjsÚdict_objrrrrÿìs
 
 
zPdfParser.write_pagecOsÄ|j}|dkr| | ¡¡}n| ¡|jf|j|j<| tt|Žƒ¡|     dd¡}|dk    rft
|ƒ|d<|rx| t |ƒ¡|D]}| t |ƒ¡q||dk    r¶| d¡| |¡| d¡| d¡|S)NÚstreamr¿sstream
s
endstream
sendobj
) rurúrqrRrårQrrr{rYrtr<r”)rKrr    r
rur Úobjrrrrüõs$  
 
 
 
zPdfParser.write_objcCs.|jdkrdS|j|jj=|j|jdj=dS)Nrø)rÜrårQrÛrJrrrrù
s
 zPdfParser.del_rootcCsXt|dƒr| ¡St|dƒr$| ¡Sztj| ¡dtjdWStk
rRYdSXdS)NÚ    getbufferÚgetvaluer)Úaccessr¸)rÖr rÚmmapÚfilenoZ ACCESS_READÚ
ValueError)rurrrrÕs
 
zPdfParser.get_buf_from_filecCsüt|jƒ|_|j|j|_| ¡|jd|_|j dd¡|_    t
|  |j¡ƒ|_ |j    dkrdt
ƒ|_ nt
|  |j    ¡ƒ|_ td|j kdƒt|j ddkdƒtd|j kdƒtt|j dtƒd    ƒ|j d|_|  |j¡|_| |j¡|_|jdd…|_dS)
NrróTypez/Type missing in Rootröz/Type in Root is not /Catalogrøz/Pages missing in Rootz+/Pages in Root is not an indirect reference)r<r¼rÙrÑrÚÚ read_trailerrärÜr7rÞr–Ú read_indirectrÛrÝrHryrIrârßÚlinearize_page_treeràrárJrrrrØs.  
 
 ÿþ zPdfParser.read_pdf_infocCsXztt|j ¡ƒddƒ}Wntk
r:tddƒ}YnX|dk    rT|df|j|j<|S)Nrgr)rIÚmaxrårnrrQ)rKr°Ú    referencerrrrú8szPdfParser.next_object_ids [][()<>{}/%]s$[][()<>{}/%\000\011\012\014\015\040]s[\000\011\012\014\015\040]s#[\000\011\012\014\015\0400-9a-fA-F]ó*ó+s[\000\011\014\040]*s[\r\n]+strailers<<(.*>>)s    startxrefs([0-9]+)s%%EOFó$s    <<(.*?>>)cCsÀt|jƒd}||jkr|j}|j |j|¡}t|dƒ|}|r^|}|j |j| ¡d¡}q<|sf|}| d¡}t| d¡ƒ|_    | 
|¡|_ t ƒ|_ |j|j    dd|j kr¼| |j d¡dS)Né@ztrailer end not foundérgr›©Úxref_section_offsetr)r<r¼rÑÚre_trailer_endÚsearchrHÚstartÚgroupr©rãÚinterpret_trailerrärZråÚread_xref_tableÚread_prev_trailer)rKZsearch_start_offsetÚmZ
last_matchÚ trailer_datarrrrjs$
 
 
 
zPdfParser.read_trailercCsv|j|d}|j |j||d…¡}t|dƒ| d¡}tt| d¡ƒ|kdƒ| |¡}d|krr| |d¡dS)Nrrzprevious trailer not foundrgr›zGxref section offset in previous trailer doesn't match what was expectedr)    r%Úre_trailer_prevr!r¼rHr#r©r$r&)rKrZtrailer_offsetr'r(rärrrr&s ÿ
 
þ
zPdfParser.read_prev_trailers/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=rÄr³s>>cCs¾i}d}|j ||¡}|sT|j ||¡}t|o<| ¡t|ƒkdt||d…ƒƒq‚| | d¡¡}|     || ¡¡\}}|||<qtd|ko˜t
|dt ƒdƒtd|ko´t
|dt ƒdƒ|S)Nrz+name not found in trailer, remaining data: rgrz&/Size not in trailer or not an integerrz1/Root not in trailer or not an indirect reference) Úre_nameÚmatchÚ re_dict_endrHÚendr<r~rr#Ú    get_valueryr©rI)r‚r(Útrailerr°r'rarbrrrr$˜s0ÿþ
þþzPdfParser.interpret_trailers([^#]*)(#([0-9a-fA-F]{2}))?FcCsnd}|j |¡D]B}| d¡rD|| d¡t | d¡ d¡¡7}q|| d¡7}q|rb| d¡St|ƒSdS)Nr¸érgrNzutf-8)Úre_hashes_in_nameÚfinditerr#r‹Úfromhexr=r{)r‚ÚrawZas_textrzr'rrrrµs
&
zPdfParser.interpret_namesnull(?=strue(?=sfalse(?=s([-+]?[0-9]+)(?=s)([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=s\[ó]s<(s*)>rÇs ([-+]?[0-9]+)sR(?=sobj(?=s    endobj(?=rÆs    %[^\r\n]*s)*s stream\r?\ns endstream(?=r¥c
Csè|dkr dS|j ||¡}|r&| ¡}|j ||¡}|rètt| d¡ƒdkdƒtt| d¡ƒdkdƒt|dkp’|tt| d¡ƒt| d¡ƒƒkdƒ|j|| ¡|dd\}}|dkrÄ|dfS|j     ||¡}t|d    ƒ|| ¡fSt| d
ƒ|j
 ||¡}|r^tt| d¡ƒdkd ƒtt| d¡ƒdkd ƒtt| d¡ƒt| d¡ƒƒ| ¡fS|j  ||¡}|rÒ| ¡}i}|j  ||¡}|s|j|||dd\}}|dkr¼|dfS|j|||dd\}    }|    ||<|dkrî|dfS|j  ||¡}qŒ| ¡}|j  ||¡}|rÂzt|d ƒ}
WnDtttfk
rp} zd| d d¡} t| ƒ| ‚W5d} ~ XYnX|| ¡| ¡|
…} |j || ¡|
¡}t|dƒ| ¡}tt|ƒ| ƒ}nt|ƒ}||fS|j ||¡}|rX| ¡}g}|j ||¡}|sL|j|||dd\}    }| |    ¡|dkr:|dfS|j ||¡}q|| ¡fS|j ||¡}|rxd| ¡fS|j ||¡}|r˜d| ¡fS|j ||¡}|r¸d| ¡fS|j ||¡}|rèt| | d¡¡ƒ| ¡fS|j ||¡}|rt| d¡ƒ| ¡fS|j  ||¡}|r<t!| d¡ƒ| ¡fS|j" ||¡}|r t#dd„| d¡Dƒƒ}t$|ƒddkrˆ| t%dƒ¡t# &| 'd¡¡| ¡fS|j( ||¡}|rÄ| )|| ¡¡Sdt*|||d…ƒ} t| ƒ‚dS)Nr)NNrgz<indirect object definition: object ID must be greater than 0r›z;indirect object definition: generation must be non-negativez2indirect object definition different than expected)Ú max_nestingz(indirect object definition end not foundz$indirect object definition not foundz;indirect object reference: object ID must be greater than 0z:indirect object reference: generation must be non-negativesLengthz)bad or missing Length in stream dict (%r)zstream end not foundTFcss|]}|dkr|VqdS)s0123456789abcdefABCDEFNrr¹rrrr;`sz&PdfParser.get_value.<locals>.<genexpr>ó0rNzunrecognized object: é )+Ú
re_commentr+r-Úre_indirect_def_startrHr©r#rIr.Úre_indirect_def_endÚre_indirect_referenceÚ re_dict_startr,Úre_stream_startÚ    TypeErrorrdrr7rAÚ re_stream_endrºr–Úre_array_startÚ re_array_endrÚre_nullÚre_trueÚre_falser*rxrÚre_intÚre_realrÈÚ re_string_hexr‹r<r‡r3r=Ú re_string_litÚget_literal_stringr~)r‚rƒr°Úexpect_indirectr6r'ÚobjectrrarbZ
stream_lenr¯rjZ stream_dataZ
hex_stringrrrr.ósìþþÿü
 ÿþþ&
 
ÿ
 
 
    ÿzPdfParser.get_valuesF(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))ónr´óró ótó    óbóófó rÅcCsd}tƒ}|j ||¡D]ê}| ||| ¡…¡| d¡rX| |j| d¡d¡n¢| d¡r‚| t| d¡dd…dƒ¡nx| d¡rŽnl| d¡r¤| d¡nV| d¡rÂ| d    ¡|d7}n8| d
¡rú|dkrèt    |ƒ| 
¡fS| d ¡|d8}| 
¡}qd }t |ƒ‚dS) Nrrgr›ér0ér´érÆérÄzunfinished literal string) r‹Úre_lit_str_tokenr2rŽr"r#Ú escaped_charsrr©r{r-rA)r‚rƒr°Z nesting_depthrr'rjrrrrJ„s.
 
 
 
 
 
 
 
 
 
zPdfParser.get_literal_stringsxrefs+([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)c Cs d}|j |j||j¡}t|dƒ| ¡}|j |j|¡}|sNt|dƒqd}| ¡}t| d¡ƒ}t| d¡ƒ}t    |||ƒD]€}|j
 |j|¡}t|dƒ| ¡}| d¡d    k}t| d¡ƒ}    |s„t| d¡ƒ|    f}
t||j kpô|j ||
kd
ƒ|
|j |<q„q,|S) NFzxref section start not foundzxref subsection start not foundTrgr›zxref entry not foundr0rTz)xref entry duplicated (and not identical)) Úre_xref_section_startr+r¼rÑrHr-Úre_xref_subsection_startr©r#r‘Ú re_xref_entryrå) rKrZsubsection_foundr'r°Z first_objectÚ num_objectsrZis_freerRZ    new_entryrrrr%©s@ÿ
ÿ
þzPdfParser.read_xref_tablec
Cst|j|d\}}t||dkd|d›d|d›d|›d|›ƒ|j|j||jt|Ž|dd}||j|<|S)Nrrgzexpected to find generation z for object ID z) in xref table, instead found generation z  at offset )rKr6)rårHr.r¼rÑrIr×)rKrr6r°rRrbrrrrÊs
"þüû
zPdfParser.read_indirectcCsj|dkr|j}t|ddkdƒg}|dD]8}| |¡}|ddkrR| |¡q,| |j|d¡q,|S)Nrrøz%/Type of page tree node is not /PagessKidsr)Únode)rßrHrrrŽr)rKr`ràZkidZ
kid_objectrrrrÚs
ÿ 
  zPdfParser.linearize_page_tree)NNNrrÎ)N)N)F)Nr¥)r¥)N)IrBrCrDrEr_rèrírïrîrérærórõrýrûrrÿrürùÚ staticmethodrÕrØrúÚ    delimiterZdelimiter_or_wsÚ
whitespaceZwhitespace_or_hexZwhitespace_optionalZwhitespace_mandatoryZwhitespace_optional_no_nlZ newline_onlyÚnewlineÚreÚcompileÚDOTALLr r)rr&Zre_whitespace_optionalr*r=r,rr$r1rrCrDrErFrGrArBrHrIr<r:r;r9r>r@r.rZr‡r[rJr\r]r^r%rrrrrrr€_sº
&
    
 
 
 ÿþýüûúùø    ÷
ö õ óÿþýüûúùø    ÷
ö ô
ÿþýÿ
 
 ÿÿþýÿÿÿþýüûúùÿ
ÿþýüûúùÿ
ÿÿÿ zÿð
ÿþýüûÿ
!
r€)r­rr—rrñrerªrÀr    r6r@rÏrArHÚ
namedtuplerIrYrZrxrÌr’r˜r–r·rºr”r€rrrrÚ<module>s‚×-
ÿ\'0