V:pF      ! "#$%&'()*+,- ./0123456 7 8 9 : ; <=>?@ABCDE  Safe-InferredLFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:None Rectangle+Create rectangle form an array of 4 numbersNoneDecrypt input streamQEncryption handler may specify different encryption keys for strings and streams !Decrypt object with the decryptor The default user password Standard decryptor. RC4;<= >? document trailerencryption dictionaryFuser password (32 bytes exactly, see 7.6.3.3 Encryption Key Algorithm)@AB    ;=<  >? @ABNone $Interface to the underlying PDF filefind object by it's referencedecoded stream content Note: the C' returned is valid only until the next , or any other operation, that requares seekCurrent decryptor@Get random access input stream for direct access to the PDF fileGet all stream filters Recursively load indirect object    NoneFont dictionaryInformation dictionaryPdf document page-Page tree node, contains pages or other nodes Page treeDocument catalog! PDF documentIt is a trailer under the hood !" !"!"  !"NoneB #Convenient type alias$!Basic implementation of pdf monad%xPerform action without adding objects to cache. Note: the existent cache is not flushed, and is used within the action&Remove all objects from cache'Execute PDF action with D(Execute PDF action with E)Get PDF document*%Whether the PDF document it encrypted+*Set the password to be user for decryption(Returns False when the password is wrong,-Decrypt PDF object using user password is set#$FGHIJKLMNOPQRSTUVW%&'(X)*+,Y #$%&'()*+,#$'()&%*+ ,#$FGHIJKLMNOPQRSTUVW%&'(X)*+,Y None-Document title----None. Font subtypes4Get font subtype5Load font info for the font ./012345Z[\] ./012345 .3210/45.3210/45Z[\] None68Check that the dictionary has the specified "Type" filed7'Get dictionary type, name at key "Type"67676767 None8Get the document catalog9Document encryption dictionary:'Infornation dictionary for the document89:!89:!89:89: None;Get root node of page tree;;;;None<9Total number of child leaf nodes, including deep children=Parent page node>Referencies to all kids? Load page tree node by reference@Find page by it's numberNote: it is not efficient for PDF files with a lot of pages, because it performs traversal through the page tree each time. Use <, > and ? for efficient traversal.<=>?@ <=>?@ <=>?@<=>?@NoneAPage's parent nodeB,List of references to page's content streamsCMedia box, inheritableDFont dictionaries for the pageEExtract text from the pagecIt tries to add spaces between chars if they don't present as actual characters in content stream.^9Convert glyphs to text, trying to add spaces and newlinesIt takes list of spans. Each span is a list of glyphs that are outputed in one shot. So we don't need to add space inside span, only between them.ABC_DE^ABCDEABCDEABC_DE^None`abcdefghi"jklmnopqrstuvwxyz{|}~      !"#$%&'( !#$%&'()*+,-./01234589:;<=>?@ABCDE) !"#$%&&''(())*+,--../012345678 9:;<=>?@A B C D E F GHIJKLMNOPQRSTRUVRSWXYZR[\R[]R[^R_`RabRacRSdRSeRSfRUgRhiRhjRklRmnRmoRmpRmqXrsXrtRhuRSvRSwRSxRSyRSzRk{Rk|Rk}Rk~RRRmRmXrRRkRkRSRSRhXrRRkRRkRRXXXXXXRkXRRSXXRRXXXRRRRRRR R_R_R_R_R_R_R_R_R_R_R_R_RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRkRkRkRkRkRkRkRkRkRkRkRkRkRk Rk Rk Rk Rk RkRmRmRmRmRmRmRRRRRRRRRR R!R"R#R$R[%R[&R['R[(R[)R[*R[+R[,R[-R[.R[/R[0R[1R[2R[3R[4R[5R[6R[7R[8R[9R[:R[;R[<R[=R[>R[?R[@R[AR[BR[CR[DR[ER[FR[GR[HR[IR[JRKRLRaMRaNRhORhPRhQRhRRhSRSTRSURSVRSWRSXRSYXrZXr[Xr\Xr]Xr^Xr_Xr`XraXrbXrcdefghijklmlnRop0qqrstuvwxyz{|}~RRRRRRRRRR        !"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!23435363737383839393:3:3;3;3<3<3=3=3>3?3@3A3B3C3D3E3F3GHIHJHKHLHHMHNHOHPQpdf-toolbox-document-0.0.5.1Pdf.Toolbox.Document.PdfPdf.Toolbox.Document.TypesPdf.Toolbox.Document.EncryptionPdf.Toolbox.Document.MonadPdf.Toolbox.Document.FontDict#Pdf.Toolbox.Document.Internal.TypesPdf.Toolbox.Document.PagePdf.Toolbox.Document.PageNodePdf.Toolbox.Document.CatalogPdf.Toolbox.Document.DocumentPdf.Toolbox.Document.Info"Pdf.Toolbox.Document.Internal.UtilPreludePdf.Toolbox.Documenttransformers-0.4.3.0Control.Monad.IO.ClassliftIOMonadIOpdf-toolbox-core-0.0.3.3Pdf.Toolbox.Core.Stream knownFilters RectanglerectangleFromArray DecryptorDecryptorScope DecryptStream DecryptString decryptObjectdefaultUserPasswordmkStandardDecryptorMonadPdf lookupObject streamContent getDecryptorgetRISgetStreamFiltersderefFontDictInfoPagePageNodePageTree PageTreeLeaf PageTreeNodeCatalogDocumentPdfPdf'withoutObjectCacheflushObjectCacherunPdfrunPdfWithHandledocument isEncryptedsetUserPassworddecrypt infoTitle FontSubtype FontTrueType FontType3 FontMMType1 FontType1 FontType0fontDictSubtypefontDictLoadInfo ensureTypedictionaryTypedocumentCatalogdocumentEncryption documentInfocatalogPageNode pageNodeNKidspageNodeParent pageNodeKids loadPageNodepageNodePageByNumpageParentNode pageContents pageMediaBox pageFontDictspageExtractTextbaseGHC.Base++GHC.Errerrorfoldrghc-primGHC.PrimseqGHC.Listconcatfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$ undefinedGHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negatefail>>=>>fmapreturn fromIntegral realToFrac toInteger toRationalControl.Applicative<*>pureBoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShow Applicative GHC.TypesBoolCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerOrderingRationalIO Data.EitherEitherStringFalseTrueLeftRightLTEQGT<**> Text.Readread Data.MaybeMaybeNothing Data.Functor<$>$!readIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.ExceptionioError Data.Listunwordswordsunlineslinesproductsumfoldl1minimummaximumGHC.IOFilePath userErrorIOErrorreads Data.MonoidmconcatmappendmemptyMonoideitherlex readParenreadList readsPrecacoshatanhasinhcoshtanhsinhacosatanasincostansinlogBase**logsqrtexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixlcmgcd^^^oddevendivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsuccText.ParserCombinators.ReadPReadS showParen showStringshowCharshowsShowSshowListshow showsPrec Control.MonadmapM_mapM sequence_sequence=<<unzip3unzipzipWith3zipWithzip3!! concatMaplookupnotElemelemallanyorandreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrfoldr1scanl1scanlfoldllengthnullinitlasttailheadmaybeJustuncurrycurrysubtractsignumabs*+asTypeOfuntilflip.constid/=compare<=&&||not<>maxmin AlgorithmAESV2V2 decryptStr decryptDictmkKey verifyKey mkDecryptorPdf.Toolbox.Core.IO.RISISRISGHC.IO.Handle.TypesHandlePdfStatestRIS stFilters stLastXRefstAddToObjectCache stObjectCachestXRefStreamCache stDecryptorreadObjectForEntry getXRefStreamlookupEntryReclookupXRefEntrytakeStreamContent getLastXRef getFromCacheaddObjectToCacherunPdf'$fMonadPdfPdf'loadFontInfoCompositeloadFontInfoSimpleloadEncodingDifferencesloadUnicodeCMap glyphsToTextmediaBoxpartitionEithersrightsleftsmapMaybe catMaybes listToMaybe maybeToList fromMaybe isNothingisJust either-4.3.4Control.Monad.Trans.Either hoistEither mapEitherT bimapEitherTrightlefteitherT runEitherTEitherTControl.Monad.Trans.MaybeMaybeT runMaybeT mapMaybeT liftCallCC liftCatch liftListenliftPass safe-0.3.9SafetailMaytailDeftailSafeinitMayinitDefinitSafeheadMaylastMayheadDeflastDef minimumMay maximumMay minimumDef maximumDef foldr1May foldl1May' foldr1Def foldl1Def' fromJustDefatMayatDefreadMayreadDef lookupJustDef findJustDef errors-1.4.7Control.Error.SaferightZjustZassertZreadZatZfoldl1Z'foldl1Zfoldr1ZmaximumZminimumZlastZheadZinitZtailZtryRighttryJust tryAsserttryReadtryAt tryFoldl1' tryFoldl1 tryFoldr1 tryMaximum tryMinimumtryLasttryHeadtryInittryTailjustErr assertErrreadErratErr foldl1Err' foldl1Err foldr1Err maximumErr minimumErrlastErrheadErrinitErrtailErrrightMay assertMayControl.Error.ScriptscriptIO runScriptScriptControl.Error.UtilsyncIOtryIOerrLnerrfmapRTisRightTisLeftTfmapRisRightisLeft isNothingTisJustTnothingjustmaybeTbool failWithMfailWith?:!??? hoistMaybenoteTnotehushThushrunAllEAllErunAnyEAnyE Data.EitherRflipETfmapLThandleTcatchTthrowTsucceedTflipEfmapLhandleEcatchEthrowEsucceed runEitherREitherR runEitherRTEitherRTPdf.Toolbox.Core.Object.Util mapObjecttoStreamtoArraytoReftoStrtoDicttoName toBooleantoNumber realValueintValuesetValueForKeydeleteValueForKey lookupDict' lookupDict fromObject FromObjectPdf.Toolbox.Core.Object.TypesNumIntNumRealNumberBooleanNameDictArrayStrStreamRefONumberOBooleanONameODictOArrayOStrOStreamORefONullObjectPdf.Toolbox.Core.ErrortryPdfIOannotatingError annotateError ParseErrorAnnotatedErrorUnexpectedErrorPdfErrorPdfE