v\=<      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:; None :Using a key to generate an infinite stream of crypt bytes.An encryption/decryption key.< The way both the new and old DTB encryption algorithms work is by using the key to generate a stream of bytes. Each of these bytes is then XOR'd with the corresponding bytes in the source file. The same algorithm is both the decryption and encryption; this is because (A xor B) xor B == A.VTake the first four bytes of the string as the key, and decrypt the rest of the file.HEncrypt a string with a key, and append the key to the encrypted string.;Decrypt an encrypted DTB file using the given crypt method.EEncrypt an unencrypted DTB file using the given crypt method and key.1Decrypt an encrypted DTB file across two handles.4Encrypt an unencrypted DTB files across two handles.==The key iteration function for new DTB encryption/decryption.?The lazy infinite list of crypt bytes for new-style encryption. ?The lazy infinite list of crypt bytes for old-style encryption.>?@AB<=CD  >?@AB<=CD None;EBEncode a Haskell String to a list of Word8 values, in UTF8 format.FFReads a single-quoted string, by converting it to a double-quoted one.QGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmEnopqrstuvwxFyz{|}~VWXYZ[\]^_`abcdefghijky2GJIHKNMLOSRQPTUVihgfedcba`_^]\[ZYXWjklmEnopqrstuvwxFyz{|}~None+ {A data value, which may be a subtree. The constructors are ordered by their chunk identification tag in the binary format.=A list of chunks, for either the top-level tree or a subtree.A top-level file.;DTB string format: 4-byte length, then a string in latin-1.;DTB string format: 4-byte length, then a string in latin-1.#XAssign new sequential node IDs to each tree in a DTA, starting with the top-level tree.  !"#  !"#   !"#None *+-./02345689:;=?BCDGHJKMvIf instead of this error, "Internal Happy error" is sometimes printed, make sure you are using Happy 1.18.7 or later.hc   NonevAutomatically chooses between horizontal and vertical arrangements, depending on what kind of chunks are in the tree.(Produces a single-quoted string literal.$$$None.B% Stored as a  , unlike the  ByteString instance which is a String.(YA value which is DTA-stored as a parenthesized subtree around the normal representation.+7A key-value structure which is stored as a sequence of  (tag rest...) chunks..1Values which can be read from one or many chunks.0zValues which are stored as one or many chunks. Scalar types become one chunk, while lists and record types can make more.7First tries to read the  type, then  if that fails.8Uses whichever 10 is applicable. Does not tag which type is used.;.Each value is stored as one chunk in the list.<.Each value is stored as one chunk in the list.= Represents   with an empty chunk list.> Represents   with an empty chunk list.?<Stored as two chunks. Each subtype should be a single chunk.@<Stored as two chunks. Each subtype should be a single chunk.AA String, not a .BA String, not a .G,An integer 0 or 1, or keyword TRUE or FALSE.HAn integer 0 or 1.,%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP%&'()*+,-./0123456,2301./PONM+,-LK456()*JIHGFEDCBA@?>=<;%&':987$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPNone QRSTUVW XY Z[&  !"#$QRSTUVWXYZ[& !"  QTSRVUWXY$Z[# QRSTUVW XY Z[None1 is no dots, 7 is devils. Normal = 2300. Fast = 2000. MSlow (under 100bpm) = 16. Medium (100-160bpm) = 32. Fast (over 160bpm) = 64. \]^_`abcdefghijklmnopqrstuvwxyz{|}~p\]^_`abcdefghijklmnopqrstuvwxyz{|}~ˎ}~wxyz{|stuvhijklmnopqrcgfed\]^_`ab-\]^_`abcgfedh ijklmnopqrstuvwxyz{|} ~  NoneR      !"#$%&'()*+,-./0123456789:;F      !"#$%&'()*+,-./R/   !"#$%&'()*+,-.;:   9876543210      "  !"#$%&'()*+,-./0123456789:;       !"#$$%&''()* +,,-../00123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_``abcdefghijkklmnopqrstuuvwxxyz{|}~     | !"#$%&'(()*+,-./010234356789:;<=>?@ABC  !"#DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxxyz{{|}}~    dtab-1.0Data.DTA.CryptData.DTAData.DTA.SerializeData.DTA.Serialize.MagmaData.DTA.Serialize.RB3 Data.DTA.Lex Data.DTA.BaseData.DTA.ParseData.DTA.PrettyPrintCryptKeydecryptencrypt decryptFile encryptFile decryptHandle encryptHandlenewCryptoldCryptChunkIfNDefMergeIncludeDefineBracketsStringBracesParensEndIfElseIfDef UnhandledVarFloatIntTreenodeID treeChunksDTAbyteZerotopTree renumberFromsToDTAKeyword fromKeywordInParens fromInParensDictfromDict FromChunks fromChunksToChunkstoChunks unserialize serializegetDictmakeDict dictLookup$fFromChunksEither$fToChunksEither$fFromChunksKeyword$fToChunksKeyword$fFromChunks[] $fToChunks[]$fFromChunksMaybe$fToChunksMaybe$fFromChunks(,) $fToChunks(,)$fFromChunksByteString$fToChunksByteString$fFromChunksFloat$fToChunksFloat$fFromChunksInteger$fToChunksInteger$fFromChunksBool$fToChunksBool$fFromChunksInParens$fToChunksInParens$fFromChunksDict$fToChunksDict$fFromChunksChunk$fToChunksChunk$fFromChunksDTA $fToChunksDTAlFromDTBlToDTBfromDTBhFromDTBtoDTBhToDTBsFromDTAhFromDTAfromDTAhToDTAtoDTA AudioFile audioEnabledchannelspanvol audioFile DrumLayout KitKickSnareKitKickKitSnareKitTracks drumLayoutdrumKitdrumKick drumSnarebassguitarvocalskeysbacking DryVoxPart dryVoxFile dryVoxEnabledDryVoxpart0part1part2tuningOffsetCents AutogenThemeSynthPopSlowJam PsychJamRockGaragePunkRockFeelGoodPopRock EdgyProgRock DustyVintage DarkHeavyRock ArenaRockAggressiveMetal DefaultThemeMidimidiFile autogenThemeMetadatasongName artistNamegenresubGenre yearReleased albumNameauthor releaseLabelcountryprice trackNumberhasAlbum PercussionHandclapCowbell TambourineGenderFemaleMaleGamedatapreviewStartMs rankGuitarrankBassrankDrum rankVocalsrankKeys rankProKeysrankBandvocalScrollSpeed animTempo vocalGendervocalPercussion vocalPartsguidePitchVolume LanguagesenglishfrenchitalianspanishgermanjapaneseAlbumArt albumArtFileProject toolVersionprojectVersionmetadatagamedata languagesdestinationFilemididryVoxalbumArttracksRBProjproject$fFromChunksAudioFile$fToChunksAudioFile$fFromChunksDrumLayout$fToChunksDrumLayout$fFromChunksTracks$fToChunksTracks$fFromChunksDryVoxPart$fToChunksDryVoxPart$fFromChunksDryVox$fToChunksDryVox$fFromChunksAutogenTheme$fToChunksAutogenTheme$fFromChunksMidi$fToChunksMidi$fFromChunksMetadata$fToChunksMetadata$fFromChunksPercussion$fToChunksPercussion$fFromChunksGender$fToChunksGender$fFromChunksGamedata$fToChunksGamedata$fFromChunksLanguages$fToChunksLanguages$fFromChunksAlbumArt$fToChunksAlbumArt$fFromChunksProject$fToChunksProject$fFromChunksRBProj$fToChunksRBProj DrumSoundsseqsSong tracksCountpansvolscoresdrumSolo drumFreestyle AnimTempo KTempoFast KTempoMedium KTempoSlowTonalityMinorMajorPitchBASharpAGSharpGFSharpFEDSharpDCSharpC SongPackagenameartistmastersongIdsongbankdrumBank bandFailCuesongScrollSpeedpreview songLengthranksoloformatversion gameOriginrating shortVersionalbumTrackNumbervocalTonicNote songTonalityrealGuitarTuningrealBassTuningencodingPath$fFromChunksDrumSounds$fToChunksDrumSounds$fFromChunksSong$fToChunksSong$fFromChunksAnimTempo$fToChunksAnimTempo$fFromChunksTonality$fToChunksTonality$fFromChunksPitch$fToChunksPitch$fFromChunksSongPackage$fToChunksSongPackagecrypt dtbXor360 CryptTableidx1idx2table cryptTableoldNext utf8Encode getKeywordAlexAcc AlexAccSkip AlexAccNone AlexLastAcc AlexLastSkipAlexNone AlexReturn AlexTokenAlexSkip AlexErrorAlexEOFAlexAddrAlexA#TokenRBracketLBracketRBraceLBraceRParenLParenAlexPosnAlexPn AlexInputByteignorePendingBytesalexInputPrevChar alexGetByte alexStartPosalexMovealexScanTokens alex_base alex_table alex_check alex_deflt alex_acceptscan alex_action_2 alex_action_3 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8 alex_action_9alex_action_10alex_action_11alex_action_12alex_action_13alex_action_14alex_action_15alex_action_16alex_action_17alex_action_18alex_action_19alex_action_20alex_action_21alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkniUnbox$fFunctorAlexLastAcc putLenStr getLenStr $fBinaryChunk $fBinaryTree $fBinaryDTA parseError HappyAddrHappyA#HappyStk Happy_IntList HappyCons HappyIdentityHappyAny HappyAbsSynhappyIn4 happyOut4happyIn5 happyOut5happyIn6 happyOut6happyIn7 happyOut7 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms happyReduce_1happyReduction_1 happyReduce_2happyReduction_2 happyReduce_3happyReduction_3 happyReduce_4happyReduction_4 happyReduce_5happyReduction_5 happyReduce_6happyReduction_6 happyReduce_7happyReduction_7 happyReduce_8happyReduction_8 happyReduce_9happyReduction_9happyReduce_10happyReduction_10happyReduce_11happyReduction_11happyReduce_12happyReduction_12happyReduce_13happyReduction_13happyReduce_14happyReduction_14happyReduce_15happyReduction_15happyReduce_16happyReduction_16happyReduce_17happyReduction_17happyReduce_18happyReduction_18happyReduce_19happyReduction_19happyReduce_20happyReduction_20 happyNewToken happyError_ happyIdentityhappyRunIdentity happyThen happyReturn happyThen1 happyReturn1 happyError'parsehappySeq happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeq$fMonadHappyIdentity$fApplicativeHappyIdentity$fFunctorHappyIdentityppTreeppKeyppChunkppDTAbase Data.EitherLeftRight Data.MaybeNothingbFromDTAbToDTA