Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ©«jë§ã @s dZdZddlZddlZddlmZddlmZmZm Z m Z m Z m Z m Z mZddlmZmZmZmZmZmZmZmZmZddlmZmZdd lmZdd lmZdd lmZ dd lm!Z"dd lm#Z$ddl%m&Z&m'Z'm(Z(ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1ddlm2Z2m3Z3ej4e5ƒZ6dZ7ej8dƒZ9Gdd„de:e0ƒZ;Gdd„deeddœdd„Z?Gdd„de=ƒZ@Gdd „d e@ƒZAGd!d"„d"e@ƒZBGd#d$„d$eAƒZCd,eee deDe eDeeEeDffe e0eEeDeCfd%œd&d'„ZFGd(d)„d)e>ƒZGGd*d+„d+e>ƒZHdS)-zMathieu Fenniakzbiziqe@mathieu.fenniak.netéN)ÚBytesIO)ÚAnyÚDictÚIterableÚListÚOptionalÚTupleÚUnionÚcasté) Ú WHITESPACESÚ StreamTypeÚb_Údeprecate_with_replacementÚhex_strÚlogger_warningÚread_non_whitespaceÚread_until_regexÚskip_over_comment)ÚCheckboxRadioButtonAttributesÚFieldDictionaryAttributes)Ú FilterTypes)ÚOutlineFontFlag)ÚStreamAttributes)Ú TypArguments)ÚTypFitArguments)ÚSTREAM_TRUNCATED_PREMATURELYÚ PdfReadErrorÚPdfStreamErroré)Ú BooleanObjectÚ FloatObjectÚIndirectObjectÚ NameObjectÚ NullObjectÚ NumberObjectÚ PdfObjectÚTextStringObject)Úread_hex_string_from_streamÚread_string_from_streams+-s[+-]?(\d+)\s+(\d+)\s+R[^a-zA-Z]c @sžeZdZeedœdd„Zeedee fddœdd„Z eedee fddœdd „Z e deeedee eeeeffdd œd d „ƒZe eedd œdd„ƒZdS)Ú ArrayObject)ÚreturncCst|ƒS)zS Emulate DictionaryObject.items for a list (index, object) )Ú enumerate)Úself©r.úA/tmp/pip-build-vnmlutbd/PyPDF2/PyPDF2/generic/_data_structures.pyÚitemsLszArrayObject.itemsN)ÚstreamÚencryption_keyr+cCs<|jdƒx"|D]}|jdƒ|j||ƒqW|jdƒdS)Nó[ó s ])ÚwriteÚwrite_to_stream)r-r1r2Údatar.r.r/r6Ss    zArrayObject.write_to_streamcCstddƒ|j||ƒdS)NÚ writeToStreamr6)rr6)r-r1r2r.r.r/r8\s zArrayObject.writeToStream)r1ÚpdfÚforced_encodingr+cCsŠtƒ}|jdƒ}|dkr tdƒ‚xd|jdƒ}x|jƒrB|jdƒ}q.W|jddƒ|jdƒ}|dkrdP|jddƒ|jt|||ƒƒq"W|S)Nrr3zCould not read arrayó]éÿÿÿÿr<)r*ÚreadrÚisspaceÚseekÚappendÚ read_object)r1r9r:ZarrÚtmpÚtokZ peekaheadr.r.r/Úread_from_streambs      zArrayObject.read_from_stream)r1r9r+cCstddƒtj||ƒS)NÚreadFromStreamrD)rr*rD)r1r9r.r.r/rE{s zArrayObject.readFromStream)N)Ú__name__Ú __module__Ú __qualname__rrr0r r ÚstrÚbytesr6r8Ú staticmethodrrÚintrDrEr.r.r.r/r*Ks r*c @seZdZeedœdd„Zeeedœdd„Zdeeeedœdd „Zeedœd d „Z e eed œd d„ƒZ eed œdd„Z e eed œdd„ƒZ eedeefddœdd„Zeedeefddœdd„Zedeeedeeeeeeffddœdd„ƒZeeeddœdd„ƒZdS) ÚDictionaryObject)Úkeyr+cCs tj||ƒS)N)ÚdictÚ __getitem__)r-rNr.r.r/Úraw_get„szDictionaryObject.raw_get)rNÚvaluer+cCs2t|tƒstdƒ‚t|tƒs$tdƒ‚tj|||ƒS)Nzkey must be PdfObjectzvalue must be PdfObject)Ú isinstancer&Ú ValueErrorrOÚ __setitem__)r-rNrRr.r.r/rU‡s   zDictionaryObject.__setitem__NcCs2t|tƒstdƒ‚t|tƒs$tdƒ‚tj|||ƒS)Nzkey must be PdfObjectzvalue must be PdfObject)rSr&rTrOÚ setdefault)r-rNrRr.r.r/rVŽs   zDictionaryObject.setdefaultcCstj||ƒjƒS)N)rOrPÚ get_object)r-rNr.r.r/rP•szDictionaryObject.__getitem__)r+cCsNddlm}|jddƒ}|dkr$dS|jƒ}t||ƒsJ||ƒ}||tdƒ<|S)a  Retrieve XMP (Extensible Metadata Platform) data relevant to the this object, if available. Stability: Added in v1.12, will exist for all future v1.x releases. @return Returns a {@link #xmp.XmpInformation XmlInformation} instance that can be used to access XMP metadata from the document. Can also return None if no metadata was found on the document root. r )ÚXmpInformationz /MetadataN)ÚxmprXÚgetrWrSr#)r-rXÚmetadatar.r.r/Ú xmp_metadata˜s    zDictionaryObject.xmp_metadatacCstddƒ|jS)zW .. deprecated:: 1.28.3 Use :meth:`xmp_metadata` instead. ÚgetXmpMetadatar\)rr\)r-r.r.r/r]¯s zDictionaryObject.getXmpMetadatacCstddƒ|jS)zW .. deprecated:: 1.28.3 Use :meth:`xmp_metadata` instead. Ú xmpMetadatar\)rr\)r-r.r.r/r^ºs zDictionaryObject.xmpMetadata)r1r2r+cCs^|jdƒxDt|jƒƒD]4\}}|j||ƒ|jdƒ|j||ƒ|jdƒqW|jdƒdS)Ns<< r4ó s>>)r5Úlistr0r6)r-r1r2rNrRr.r.r/r6Äs    z DictionaryObject.write_to_streamcCstddƒ|j||ƒdS)Nr8r6)rr6)r-r1r2r.r.r/r8Ïs zDictionaryObject.writeToStream)r1r9r:r+cs‚ttttttdœ‡fdd„ ‰tttdœ‡fdd„ }|jdƒ}|dkr^td t|jƒƒ›d �ƒ‚i}�xBt |ƒ}|d krzqfn|d kr˜|j d#d ƒt |ƒqf|s¤t t ƒ‚|dkr¸|jd ƒP|j d$d ƒy.t||ƒ}t |ƒ}|j d%d ƒt|||ƒ}Wn^tk �rP} z@|dk �r$|j�r$t| jƒƒ‚t| jƒtƒtƒ} | j|ƒ| Sd} ~ XnX|j|ƒ�sh|||<qfdt|jƒƒ›d|›�} |dk �rš|j�ršt| ƒ‚t| tƒqfW|jƒ} t |ƒ} | dk�rJ|jdƒdk�rJ|jd ƒ}x|dk�rö|jd ƒ}�qÞW|d&k�r t dƒ‚|dk�r0|jd ƒdk�r0|j d'd ƒtj|k�rDt dƒ‚|tj}t|tƒ�rx|jƒ}|j|ƒ}|j |dƒ|jƒ}|j|ƒ|d<t |ƒ}|jdƒ}||dk�rV|jƒ} |j d(d ƒ|jdƒ}|dk�rì|ddd)…|d<n\|j�s|j |dƒ|||ƒ|d<|jƒ} n0|j | dƒtdt|jƒƒ›d |›d!|›d"�ƒ‚n |j | dƒd|k�rjtj|ƒStƒ} | j|ƒ| SdS)*N)ÚpÚp1Úrem_gensr9r+csf|j|d}x,|D]$}|||kr|||kr||}qWt|ƒdkrL|Sˆ|||dd…|ƒSdS)Nrr)ÚxrefÚlen)rarbrcr9ÚlÚo)Úget_next_obj_posr.r/rhÛs   z;DictionaryObject.read_from_stream..get_next_obj_pos)r1r9r+cszˆ|jƒd t|jƒ|ƒd}|jƒ}|j||jƒƒ}|jdƒ}|dkrXtd|›d�ƒ‚|j||dƒ|d|d…S) Nr é rs endstreamrz6Unable to find 'endstream' marker for obj starting at Ú.é l)Útellr`rdr=Úfindrr?)r1r9ZeonÚcurrÚrwra)rhr.r/Úread_unsized_from_steamçs zBDictionaryObject.read_from_stream..read_unsized_from_steamr s<z+Multiple definitions in dictionary at byte z for key óséstreamr4r_ó z)Stream data must be followed by a newlinezStream length not definedrÚ__streamdata__és endstreamé rkz7Unable to find 'endstream' marker after stream at byte z (nd='z', end='z').r<r<r<)r_rvr<iöÿÿÿr<)rLrrr rJr=rrrlrr?rrrrAÚ ExceptionÚstrictÚ__repr__rrFrMÚupdaterZÚSAÚLENGTHrSr"rWÚ StreamObjectÚinitialize_from_dictionary)r1r9r:rprBr7rCrNrRÚexcÚretvalÚmsgÚposÚsÚeolÚlengthÚtZpstartÚeZndstreamÚendr.)rhr/rDÕs¢                             $    z!DictionaryObject.read_from_stream)r1r9r+cCstddƒtj||ƒS)NrErD)rrMrD)r1r9r.r.r/rE]s zDictionaryObject.readFromStream)N)N)rFrGrHrrQrUrrVr&rPÚpropertyr\r]r^r r rIrJr6r8rKrrrLrDrEr.r.r.r/rMƒs(    rMc@sÚeZdZddœdd„Zedœdd„Zedœdd„Zedœd d „Ze edœd d „Z eedd œdd„Z eedd œdd„Z eddœdd„Z eeeeddœdd„Zeddœdd„Zddœdd„Zddœdd„Zddœdd„ZdS) Ú TreeObjectN)r+cCstj|ƒdS)N)rMÚ__init__)r-r.r.r/rŽfszTreeObject.__init__cCstdddƒ|jƒS)NÚ hasChildrenÚ has_childrenz4.0.0)rr�)r-r.r.r/r�is zTreeObject.hasChildrencCsd|kS)Nz/Firstr.)r-r.r.r/r�mszTreeObject.has_childrencCs|jƒS)N)Úchildren)r-r.r.r/Ú__iter__pszTreeObject.__iter__ccsf|jƒs dS|tdƒ}|jƒ}x@|V||tdƒkrtj|krtƒ}ntƒ}|d|_|d=|tj=|j|ƒ|S)Nrw)r~ÚFILTERr®r«r©rr})r7rƒr.r.r/r�Es   z'StreamObject.initialize_from_dictionarycCstddƒ|jƒS)NÚ flateEncodeÚ flate_encode)rr²)r-r.r.r/r±Ts zStreamObject.flateEncodecCs�ddlm}tj|krb|tj}t|tƒr>|jdttj ƒƒqjtƒ}|j tdƒƒ|j |ƒ|}ntdƒ}t ƒ}||ttjƒ<|j |j ƒ|_ |S)Nr )Ú FlateDecoderz /FlateDecode)Úfiltersr³r~r°rSr*Úinsertr#ÚFTZ FLATE_DECODEr@r®Úencoder©)r-r³ÚfZnewfrƒr.r.r/r²Xs     zStreamObject.flate_encode)r®r«)r®r«)rFrGrHrŽrJr¨rŒrr¬Úsetterrr©r r rIr6rKrr¯r�r±r²Ú __classcell__r.r.)rªr/r€s(    r€c@sHeZdZedœdd„Zeedœdd„Zedœdd„Zed dœd d „Zd S) r«)r+cCs|jS)N)r©)r-r.r.r/Úget_datamszDecodedStreamObject.get_data)r7r+cCs ||_dS)N)r©)r-r7r.r.r/Úset_datapszDecodedStreamObject.set_datacCstddƒ|jS)NÚgetDatar»)rr©)r-r.r.r/r½ss zDecodedStreamObject.getDataNcCstddƒ|j|ƒdS)NÚsetDatar¼)rr¼)r-r7r.r.r/r¾ws zDecodedStreamObject.setData)rFrGrHrr»r¼r½r¾r.r.r.r/r«lsr«c@s–eZdZddœdd„Zeeddœdd„ƒZejeddœd d„ƒZe de e fdœd d „Z e de e fdœd d „Z eddœdd„Zeddœdd„ZdS)r®N)r+cCs d|_dS)N)r¦)r-r.r.r/rŽ}szEncodedStreamObject.__init__r«cCstddƒ|jS)Nr¬r¦)rr¦)r-r.r.r/r¬€s zEncodedStreamObject.decodedSelf)rRr+cCstddƒ||_dS)Nr¬r¦)rr¦)r-rRr.r.r/r¬…s cCsvddlm}|jdk r |jjƒStƒ}||ƒ|_x4t|jƒƒD]$\}}|tj tj tj fkr>|||<q>W||_|jSdS)Nr )Údecode_stream_data) r´r¿r¦r»r«r©r`r0r~rr°Z DECODE_PARMS)r-r¿ÚdecodedrNrRr.r.r/r»Šs     zEncodedStreamObject.get_datacCstddƒ|jƒS)Nr½r»)rr»)r-r.r.r/r½›s zEncodedStreamObject.getData)r7r+cCs tdƒ‚dS)Nz7Creating EncodedStreamObject is not currently supported)r)r-r7r.r.r/r¼ŸszEncodedStreamObject.set_datacCstddƒ|j|ƒS)Nr¾r¼)rr¼)r-r7r.r.r/r¾¢s zEncodedStreamObject.setData)rFrGrHrŽrŒrr¬r¹r«r rIrJr»r½rr¼r¾r.r.r.r/r®|sr®c @s’eZdZdeeedeeeeeeffddœdd„Z e ddœdd„Z e eeefdœdd „Z e ed œd d „ƒZejeeefdd œdd „ƒZdS)Ú ContentStreamN)r1r9r:r+c Cs¦||_g|_|jƒ}t|tƒrnd}x@|D]8}|t|jƒjƒƒ7}t|ƒdksX|ddkr(|d7}q(Wt|ƒ}n$|jƒ}|dk s‚t ‚t|ƒ}t|ƒ}||_ |j |ƒdS)Nórrr_r<) r9Ú operationsrWrSr*rr»rerr–r:Ú$_ContentStream__parse_content_stream) r-r1r9r:r7r†Z stream_bytesZ stream_dataZstream_data_bytesr.r.r/rލs      zContentStream.__init__)r1r+cCsÚ|jddƒg}xÄt|ƒ}|dks*|dkr,P|jd dƒ|jƒsH|d krœt|tjdƒ}|dkr†|gksjt‚|j|ƒ}|jj |dfƒqÒ|jj ||fƒg}q|d kr¾x,|dkrº|j dƒ}q¦Wq|j t |d|j ƒƒqWdS)NrrÂró'ó"TsBIs INLINE IMAGErrrvr_r<)rÅrÆ)rvr_) r?rÚisalpharr#Zdelimiter_patternr–Ú_read_inline_imagerÃr@r=rAr:)r-r1ÚoperandsÚpeekÚoperatorÚiir.r.r/Z__parse_content_streamÇs&     z$ContentStream.__parse_content_streamcCs¨tƒ}xVt|ƒ}|jd dƒ|dkr&Pt||jƒ}t|ƒ}|jddƒt||jƒ}|||<qW|jdƒ}|dd…dks|t‚tƒ}�x|jdƒ}|sœtdƒ‚|j dƒ} | dkrº|j |ƒq†|j |d | …ƒ|j| t |ƒdƒ|jdƒ}|jdƒ} | dk�r€|| d| …t k�r€|jdƒ} || } d } x&| t k�rPd } | | 7} |jdƒ} �q,W| �rh|jddƒPn|jddƒ|j | ƒq†|jddƒ|j |ƒq†W||j ƒd œS)NróIér sIDi zUnexpected end of streamóErFT)Úsettingsr7r<r<r<r<r<r<)rMrr?rAr9r=r–rrrmr5rer Úgetvalue)r-r1rÐrCrNrRrBr7ÚbufÚlocZtok2Ztok3ÚinfoZhas_q_whitespacer.r.r/rÈåsR                  z ContentStream._read_inline_image)r+cCsÀtƒ}x°|jD]¦\}}|dkrx|jdƒtƒ}|dj|dƒ|j|jƒdd …ƒ|jdƒ|j|dƒ|jdƒn2x"|D]}|j|dƒ|jdƒq~W|jt|ƒƒ|jd ƒqW|jƒS) Ns INLINE IMAGEsBIrÐr sID r7sEIr4r_éþÿÿÿ)rrÃr5r6rÑr)r-ÚnewdatarÉrËZdicttextÚopr.r.r/r©!s      zContentStream._data)rRr+cCs|jtt|ƒƒƒdS)N)rÄrr)r-rRr.r.r/r©5s)N)rFrGrHrr rIrrrLrŽr rÄrÈrŒrJr©r¹r.r.r.r/rÁ§s <rÁ)r1r9r:r+cCsÌ|jdƒ}|jddƒ|dkr*tj||ƒS|dkrl|jdƒ}|jddƒ|dkr^tj|||ƒSt||ƒS�n\|dkr‚tj|||ƒS|dks’|dkrœtj|ƒS|d kr®t||ƒS|d krÖ|jd ƒd krÖ|jddƒt ƒS|d k�rêt j|ƒS|dk�rFx0|dk�r$|jdƒ}t |ƒdk�röt dƒ‚�qöWt |ƒ}|jddƒt |||ƒS|dk�r”|jdƒ}|jt |ƒ dƒtj|ƒdk �rˆtj||ƒStj|ƒSn4|jddƒtd|›d|jƒ›d|jdƒjƒ›�ƒ‚dS)Nró/ó` N)r7r+c CsVtj|ƒtjƒtjƒ}x6|D].}y|||t|ƒ<Wq tk rLYq Xq WdS)N)rMrŽrÚ attributesrr#ÚKeyError)r-r7Zfield_attributesÚattrr.r.r/rŽys   zField.__init__)r+cCs |jtjƒS)z4Read-only property accessing the type of this field.)rZrr¶)r-r.r.r/Ú field_type†szField.field_typecCstddƒ|jS)zX .. deprecated:: 1.28.3 Use :py:attr:`field_type` instead. Ú fieldTyperè)rrè)r-r.r.r/ré‹s zField.fieldTypecCs |jtjƒS)z6Read-only property accessing the parent of this field.)rZrZParent)r-r.r.r/Úparent•sz Field.parentcCs |jtjƒS)z4Read-only property accessing the kids of this field.)rZrZKids)r-r.r.r/Úkidsšsz Field.kidscCs |jtjƒS)z4Read-only property accessing the name of this field.)rZrÚT)r-r.r.r/ÚnameŸsz Field.namecCs |jtjƒS)z>Read-only property accessing the alternate name of this field.)rZrZTU)r-r.r.r/Úalternate_name¤szField.alternate_namecCstddƒ|jS)z\ .. deprecated:: 1.28.3 Use :py:attr:`alternate_name` instead. ÚaltNamerî)rrî)r-r.r.r/rï©s z Field.altNamecCs |jtjƒS)zÓ Read-only property accessing the mapping name of this field. This name is used by PyPDF2 as a key in the dictionary returned by :meth:`get_fields()` )rZrZTM)r-r.r.r/Ú mapping_name³szField.mapping_namecCstddƒ|jS)zZ .. deprecated:: 1.28.3 Use :py:attr:`mapping_name` instead. Ú mappingNamerð)rrð)r-r.r.r/rñ¼s zField.mappingNamecCs |jtjƒS)z¢ Read-only property accessing the field flags, specifying various characteristics of the field (see Table 8.70 of the PDF 1.7 reference). )rZrZFf)r-r.r.r/ÚflagsÆsz Field.flagscCs |jtjƒS)zr Read-only property accessing the value of this field. Format varies based on field type. )rZrÚV)r-r.r.r/rRÎsz Field.valuecCs |jtjƒS)z=Read-only property accessing the default value of this field.)rZrZDV)r-r.r.r/Ú default_valueÖszField.default_valuecCstddƒ|jS)z[ .. deprecated:: 1.28.3 Use :py:attr:`default_value` instead. Ú defaultValuerô)rrô)r-r.r.r/rõÛs zField.defaultValuecCs |jtjƒS)zÙ Read-only property accessing the additional actions dictionary. This dictionary defines the field's behavior in response to trigger events. See Section 8.5.2 of the PDF 1.7 reference. )rZrZAA)r-r.r.r/Úadditional_actionsåszField.additional_actionscCstddƒ|jS)z` .. deprecated:: 1.28.3 Use :py:attr:`additional_actions` instead. ÚadditionalActionsrö)rrö)r-r.r.r/r÷îs zField.additionalActions)rFrGrHÚ__doc__rrIrrŽrŒrr#rèrérMrêr*rërírîrïrðrñrLròrRrôrõrör÷r.r.r.r/räqs@     räc@sheZdZdZeeeeee feeefe ddœdd„Z e e dœdd„ƒZe dœd d „Zeedeefdd œd d „Ze eedœdd„ƒZe eedœdd„ƒZe eedœdd„ƒZe eedœdd„ƒZe eedœdd„ƒZe eedœdd„ƒZe eedœdd„ƒZe eedœdd„ƒZe ee dœdd„ƒZe eedœd d!„ƒZ e eedœd"d#„ƒZ!dS)$Ú DestinationaÄ A class representing a destination within a PDF file. See section 8.2.1 of the PDF 1.6 reference. :param str title: Title of this destination. :param IndirectObject page: Reference to the page of this destination. Should be an instance of :class:`IndirectObject`. :param str typ: How the destination is displayed. :param args: Additional arguments may be necessary depending on the type. :raises PdfReadError: If destination type is invalid. .. list-table:: Valid ``typ`` arguments (see PDF spec for details) :widths: 50 50 * - /Fit - No additional arguments * - /XYZ - [left] [top] [zoomFactor] * - /FitH - [top] * - /FitV - [left] * - /FitR - [left] [bottom] [right] [top] * - /FitB - No additional arguments * - /FitBH - [top] * - /FitBV - [left] N)ÚtitleÚpageÚtypÚargsr+c Gsftj|ƒt|ƒ|tdƒ<||tdƒ<||tdƒ<|dkrd|\|ttjƒ<|ttjƒ<|tdƒ<�nþ|tjkr¤|\|ttjƒ<|ttj ƒ<|ttj ƒ<|ttjƒ<n¾|tj tj gkrðy|\|ttjƒ<Wn$t k rìtƒ|ttjƒ<YnXnr|tjtjgk�r@y|\|ttjƒ<Wn&t k �r<tƒ|ttjƒ<YnXn"|tjtjgk�rTntd|›�ƒ‚dS)Nz/Titlez/Pagez/Typez/XYZz/ZoomzUnknown Destination Type: )rMrŽr'r#ÚTAÚLEFTZTOPÚTFZFIT_RZBOTTOMÚRIGHTZFIT_HZFIT_BHrzr$ZFIT_VZFIT_BVZFITZFIT_Br)r-rúrûrürýr.r.r/rŽs*   * 6zDestination.__init__)r+cs(tˆjdƒˆdg‡fdd„d DƒƒS) Nz/Pagez/Typecsg|]}|ˆkrˆ|‘qSr.r.)Ú.0Úx)r-r.r/ú Hsz*Destination.dest_array..ú/Leftú/Bottomú/Rightú/Topú/Zoom)rrrrr )r*rQ)r-r.)r-r/Ú dest_arrayCs zDestination.dest_arraycCstddƒ|jS)zX .. deprecated:: 1.28.3 Use :py:attr:`dest_array` instead. Ú getDestArrayr )rr )r-r.r.r/r Ns zDestination.getDestArray)r1r2r+cCs„|jdƒtdƒ}|j||ƒ|jdƒ|j}|j||ƒtdƒ}|j||ƒ|jdƒtdƒ}|j||ƒ|jdƒ|jdƒdS)Ns<< z/Dr4z/Sz/GoTor_s>>)r5r#r6r )r-r1r2rNrRZvalue_sr.r.r/r6Ws        zDestination.write_to_streamcCs |jdƒS)z3Read-only property accessing the destination title.z/Title)rZ)r-r.r.r/rújszDestination.titlecCs |jdƒS)z9Read-only property accessing the destination page number.z/Page)rZ)r-r.r.r/rûoszDestination.pagecCs |jdƒS)z2Read-only property accessing the destination type.z/Type)rZ)r-r.r.r/rütszDestination.typcCs |jddƒS)z-Read-only property accessing the zoom factor.z/ZoomN)rZ)r-r.r.r/ÚzoomyszDestination.zoomcCs |jddƒS)zsD (,      (   8c# X+ 3