, ow      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv$Common utility functions for parsing(c) Callum Lowcay, 2017BSD3cwslowcay@gmail.com experimentalGHCNone,  Parsers from w# using the default error component.Flipped version of x$Replace failure with a default value1Trim leading and trailing whitespace off a stringConvert h:m:s.fs time to y9Parse a GEDCOM exact time value into (h, m, s, fs) formatTParse a GEDCOM exact date into (day, month, year). Months are number from 1 to 12.Parse a Gregorian/Julian monthParse a French calendar month Parse a Hebrew calendar month Parse a Gregorian year. GEDCOM allows one to specify two versions of the same year for cases where the historical year started in March instead of January. This function attempts to return the modern year number (assuming the year starts in January.   1+Common utility functions for parsing GEDCOM(c) Callum Lowcay, 2017BSD3cwslowcay@gmail.com experimentalGHCNoneK:N The level field  The tag fieldA cross reference IDAn escape sequence Line textThe value field A GEDCOM lineA GEDCOM subtreeA raw GEDCOM syntax tree A reference to another structureAlready dereferenced. The  to look up!A parse error."A badly formatted GEDCOM line#,A reference where a reference wasn't allowed$2Missing a reference where a reference was required%"Two targets for the same reference&A badly formatted field' The wrong tag(&An error arising from dereferencing a )%The referred structure doesn't exist.*)Dereferenced structure had the wrong type+Extract the line text,<Trim white space off the start an end of a GEDCOM line text.-Ignore escape sequences.Ignore certain escape sequences$  !"#$%&'()*+,-.$()*!"#$%&'   +,-.   !"#$%&'()*Low-level GEDCOM parser(c) Callum Lowcay, 2017BSD3cwslowcay@gmail.com experimentalGHCNoneNHzParse any_char.{ Parse non_at.|Parse alphanum.J Parse delim.} Parse escape.~Parse escape_text. Parse level.Parse line_item.Parse pointer.Parse line_valueParse optional_line_value.Parse optional_xref_ID. Parse tag.parse terminator.Parse xref_ID.Parse gedcom_line. Convert local ids to global ids. Convert local ids to global ids.Parse a line at a fixed levelParse a GEDCOM subtreeK!Parse the raw GEDCOM syntax tree.The parent structure's ID The local ID. A global ID.The parent structure's ID.The line to update.7An updated line where local ID's have been made global.The parent ID The level to parse the line at The parent ID%The level where the subtree is rootedJKKJ!Monads for parsing GEDCOM records(c) Callum Lowcay, 2017BSD3cwslowcay@gmail.com experimentalGHCNoneKW LMA monad for parsing an instance of a GEDCOM structure from a GEDCOM subtree.MGA Monad for parsing GEDCOM structures out of a list of GEDCOM subtrees.N@A parser that extracts a GEDCOM structure from a GEDCOM subtree.ORun a M into a L.P'Parse multiple instances of a structureQ)Parse an optional instance of a structureR(Parse a required instance of a structureS-Add a reference to the cross reference table.TRun a LG, returning either an error or a value, and the cross reference table.NThe subtree to parse.lEither parsed structure, or the subtree itself if the subtree doesn't contain the expected GEDCOM structure.O)The subtrees to parse the structure from.%The MultiMonad that does the parsing.R/The tag that identifies the required structure.SThe cross reference to add.(The value the reference will resolve to. LMNOPQRST NMOPQRLSTLMGEDCOM data structures(c) Callum Lowcay, 2017BSD3cwslowcay@gmail.com experimentalGHCNones]GPart of the GEDCOM standard, but only for LDS use so far as I am aware._GPart of the GEDCOM standard, but only for LDS use so far as I am aware.a/Automated Record ID. From the GEDCOM standard:"This number is intended to serve as a more sure means of identification of a record for reconciling differences in data between two interfacing systems."c*A year in some calendar. May be negative.eAssessment of the quality of a source. A number from 0 to 3 with 0 indicating unreliable information and 3 being direct primary evidence.g LongitudeiLatitudekA natural language.mgCustom reference added by the creator of this file. The format of this reference is not standardized.oDescription of a source. The first field contains a description of the source. The second field contains sections of text from the source.qSex.u"The type of Roman transliteration.vChinese PinyinwJapanese RomajixChinese Wade-GilesySomething elsez(A Roman transliteration of a place name.|.Privacy restrictions associated with a record.#The type of phonetic transcription. Japanese kanaKorean hanguelSomething else)A phonetic transcription of a place name..How a child is associated with his/her family. Which parent?A personal name. The first field is the full name of the individual. The second field contains just the surname of the individual (or Nothing if unspecified),A global location in longitude and latitude.A range of dates9A range of dates with a start date and optional end date.2A range of dates with only the end date specified.nA date. The format is day / month / year and months are numbered 1 to 12 (or 1 to 13 for certain calendars).Metadata about a child linkRA character set and optional version (the version is unused so far as I am aware)"The date a record was last changedA call number for citations A calendarxInformation about an adoption, including the family the subject was adopted into and which parent(s) adopted the child.Recognised event types.Family of individual census.A family eventAn individual eventSome other kind of event.2Recognised types of events concerning individuals.Any other kind of event./Recognised types of events concerning families.Any other kind of event.A range of dates.(A date that is only approximately known.3Dates, including date ranges and approximate dates.iA date in a format that doesn't fit the other categories. May include an interpretation in the optional  field. Name types.Any other kind of name.9The kind of multimedia (not necessarily a computer file).Any other kind of multimedia."Supported multimedia file formats.Any other file type.&Information about a multimedia format.#Information about a multimedia file#Contact details associated with an    An address,Citation of a repository of source material.Citation of source material.8Either a description of the source, or a reference to a 3 record which describes the source in more detail.!8Classification of extra information about an individual."Caste.#'Physical description of the individual.$Scholastic achievement.%National id number.&National or tribal origin.'Number of children.(Number of marriages.) Occupation.*Property the individual owned.+Religious affiliation.,Place of residence.-Social security number..Title of nobility./None of the above.0&Extra information about an individual.2Parts of a person's name.4pParts of the name that precede the other names. Example from the GEDCOM standard (prefix highlighted in bold): Lt. Cmndr. Joseph Allen jr.5 Given names6 Nicknames7ZSurname prefixes. Example from the GEDCOM standard (surname prefix highlighted in bold):de la Cruz8Surname or family names9rParts of the name that come after all other names. Example from the GEDCOM standard (suffix highlighted in bold)Lt. Cmndr. Joseph Allen jr.<+A Roman transliteration of a person's name.A,A phonetic transcription of a person's name.FThe name of a person.MA physical place.U"An event concerning an individual.Y"Details about an individual event.]An event concerning a family.aDetails about a family event.fDetails about an event.sTA link from an individual to a family record where they are registered as a spouse.wSA link from an individual to a family record where they are registered as a child.}#An association between individuals.7Information about what events are recorded in a source.Extra data about a source.VThe submitter record. Information about someone who submitted data to this database.4The submission record. Information about this file.PThe source record. A source of information that may be cited by other records.yThe repository record. Represents a repository of sources (for example a collection of documents or a physical library)6The note record (for attaching notes to other records)4The multimedia record (for linking multimedia files)The individual recordThe family record0Information about the source of this GEDCOM dataInformation about a corporationOWhere the GEDCOM data is sourced from (e.g. the program that created the file)IThe actual database format. Only the default LineageLinked is supported.&The database format and version number The headerThe root structure]^_`abcdefghijklmnopqrstuyvwxz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          }~wxyz{|stuvfghijklmnopqrabcde]^_`YZ[\UVWXMNOPQRSTFGHIJKLABCDE<=>?@23456789:;01!"#$%&'()*+,-./      |}~z{uvwxyqrstopmn_`klijghef]^abcdK]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./012 3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef ghijklmnopqrstuvwxyz{|}~          GEDCOM high level parsers(c) Callum Lowcay, 2017BSD3cwslowcay@gmail.com experimentalGHCNoneKLN_=A function that adds references to the cross reference table.Handler for general tags.6Handler for tags that cannot contain cross references.hParse a ' value from the raw GEDCOM syntax tree.iParse a .Parse a .Parse a .Parse a .Parse a . Parse an .Parse a Node.Parse a .Parse a .Parse a .Parse a .Parse a |.Parse a list of ]s.Parse a FamiltyEventDetail. Parse an f.Parse an AGE tag.Parse a .Parse a M.Parse a .Parse a z.Parse a .Parse a u.Parse a .Parse a g or i value.Parse a F. Extract a  from a string.Parse a .Parse a 2 structure.Parse a A.Parse a <.Parse a q.Parse a list of 0s.Parse a list of Us Parse an Y.Parse a w.Parse a .Parse a .Parse a s. Parse an }.Parse a .Parse a .Parse a .Parse a .Parse a .Parse a .Parse a .Parse a .Parse . Parse an  .Parse a .'Decode a calendar escape sequence to a .Prepare text for parsing a .Attempt to extract a % from a string with escape sequences.Attempt to extract a % from a string with escape sequences.Attempt to extract a % from a string with escape sequences.Attempt to extract a % from a string with escape sequences.Attempt to extract a % from a string with escape sequences.Parse a ( from a given string assuming the given .Parse an exact date.Parse an exact date and time.Parse a  record.Parse a  link.Actual parser for  values.Parse a .Parse a .Parse a .Parse a . Parse an . Parse an .Parse a place form structure.Parse a m.Parse a version structure.Parse a NAME tag.Parse a copyright tag.Parse a file name. Parse an _.Parse a ].Parse a a.Parse a k.Parse a e.jParse a boolean value.kParse a Word value.lExtract the text from a tag.m4Extract a list of comma separated values from a tag.Don't add any references.Add direct references only.naParse a tag which is either a GEDCOM structure, or a reference to the expected GEDCOM structure.oParse a tag which cannot contain a cross reference (i.e. the tag must contain the structure itself, not a reference to another structure).paParse a tag which must contain a cross reference to another structure, not the structure itself.&The most general tag parsing function.Handle CONT and CONC tags.The tag to parse>The single character prefix that indicates a positive value. <The single character prefix that indicates a negative value.nThe tag to parse.A handler for the tagoThe tag to parse.A handler for the tag.The tag to parse.!How to register cross references./How to convert the tag into a GEDCOM structure.The value of the first line The sub treeVThe concatenation of the values of all the CONT and CONC tags, and the remaining tags. hijklmnop hijklmnpo(Decoder for the ANSEL character encoding(c) Callum Lowcay, 2017BSD3cwslowcay@gmail.com experimentalGHCNone:q!Decode an ANSEL string to UnicodeqThe string to encode Unicode textqq&Parser for the GEDCOM genealogy format(c) Callum Lowcay, 2017BSD3cwslowcay@gmail.com experimentalGHCNoneVrA table of cross referencess2Lookup up a reference in the cross reference tablet#Parse Gedcom data from a ByteStringuParse Gedcom data from a filesThe reference to look upThe table to look up inThe value or an errort+The filename from which the string was readThe string to parse6The Gedcom data and cross reference table, or an erroruThe file to read6The Gedcom data and cross reference table, or an error!"#$%&'()*]^_`abcdefghijklmnopqrstuyvwxz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     rstutu!"#$%&'sr()*r      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^__``aabbccddeeffgghijklmnolppqrstuvwuxxyz{|}~       !"#$$%&'()**+,-./0112344567789::;<=>>?@ABCDEFGHIJJKLMMNOPQRRSTUVWWXYZ[[\]^__`abcdefghhijklmnopqrrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVMNWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6%gedcom-0.2.0.0-C8TCvcU7xub8UnSUIIW7sAData.Gedcom.Internal.CommonData.Gedcom.Internal.CoreTypesData.Gedcom.Internal.LineParser Data.Gedcom.Internal.ParseMonadsData.Gedcom.StructureData.Gedcom.Internal.ParserData.Text.Encoding.ANSEL Data.GedcomParser<&> withDefaulttrim timeToPicos timeValue dateExactmonthmonthFrmonthHebyearGregGDLevelGDTagGDXRefIDGDEscape GDLineItem GDLineValue GDLineItemV GDXRefIDVGDLineGDTreeGDRootGDRef GDStructureGDXRefGDErrorLineFormatError UnexpectedRef RequiredRef DuplicateRef FormatErrorTagError GDRefError RefNotPresent WrongRefType gdLineDatagdTrimLineItemgdIgnoreEscapesgdFilterEscapes$fMonoidGDLineItem$fShowGDRefError $fShowGDError$fShowGDEscape $fEqGDEscape$fShowGDLineItem$fEqGDLineItem$fShowGDXRefID $fEqGDXRefID $fOrdGDXRefID$fShowGDLineValue$fEqGDLineValue $fShowGDRef $fEqGDRef $fShowGDTag $fEqGDTag $fOrdGDTag $fShowGDLevel $fEqGDLevel $fOrdGDLevel $fNumGDLevel $fShowGDLine $fEqGDLine $fShowGDTree $fEqGDTree $fShowGDRoot $fEqGDRootgdDelimgdRootStructureMonad MultiMonadStructureParser runMultiMonad parseMulti parseOptional parseRequired addReference runStructure$fMonadStructureMonad$fFunctorStructureMonad$fApplicativeStructureMonad$fMonadErrorStructureMonad$fMonadMultiMonad$fFunctorMultiMonad$fApplicativeMultiMonad$fMonadErrorMultiMonadRFNAFNRINYearQualityAssessment LongitudeLatitudeLanguage UserReferenceSourceDescriptionSexMaleFemale Undetermined RomanTypePinyinRomaji WadeGilesRomanPlaceNameRestrictionNotice ConfidentialLockedPrivacy PhoneticTypeKanaHangulPhoneticPlaceNamePedigreeAdoptedByBirthFosterSealingParentHusbandWife BothParentsNameMapCoord DatePeriodDateFromDateToDateChildLinkStatus Challenged DisprovedProvenCharset ChangeDate CallNumberCalendar GregorianJulianHebrewFrenchAdoptionDetail EventTypeCensusFamilyEventTypeVIndividualEventTypeVIndividualEventTypeBirth ChristeningDeathBurial CremationAdoptionBaptism BarMitzvah BasMitzvahBlessingChristeningAdult ConfirmationFirstCommunion OrdinationNaturalization Emigration Immigration IndvCensusProbateWill Graduation RetirementFamilyEventTypeAnnuled FamCensusDivorce DivorceFiled Engagement MarriageBannMarriageContractMarriageMarriageLicenseMarriageSettlement Residence DateRange DateBefore DateAfter DateBetween DateApprox DateAboutDateCalculated DateEstimated DateValueDateV DateApproxV DatePeriodV DateRangeV DatePhraseNameTypeAKA BirthName ImmigrantMaidenMarriedMultimediaTypeMT_AUDIOMT_BOOKMT_CARD MT_ELECTRONICMT_FICHEMT_FILM MT_MAGAZINE MT_MANUSCRIPTMT_MAP MT_NEWSPAPERMT_PHOTO MT_TOMBSTONEMT_VIDEOMT_OTHERMultimediaFileFormatMF_BMPMF_GIFMF_JPGMF_OLEMF_PCXMF_TIFMF_WAVMF_OTHERMultimediaFormatMultimediaFilemultimediaFileLinkmultimediaFileFormatmultimediaTitleContactDetails addressPhone addressEmail addressFax addressWWWAddress addressLines addressCity addressStateaddressPostcodeaddressCountryaddressContactRepositoryCitationrepoCiteRepository repoCiteNoterepoCiteCallNumberSourceCitation citeSourcecitePageciteMultimediaciteNote citeQualityIndividualAttributeTypeCastePhysicalDescription Education NationalIDNationalOrigin NChildren NMarriages Occupation PossessionsReligion ResidesAtSocialSecurityTitleFactIndividualAttributePersonalNamePiecesnamePiecePrefixnamePieceGivennamePieceNicknamenamePieceSurnamePrefixnamePieceSurnamenamePieceSuffixnamePieceNameNotenamePirceSourceCitation RomanizedName romanziedName romanziedTyperomanziedPieces PhoneticName phoneticName phoneticTypephoneticPieces PersonalNamepersonalNameNamepersonalNameTypepersonalNamePiecespersonalNamePhoneticpersonalNameRomanPlace placeName placeForm placePhonetic placeRomanplaceMap placeNoteIndividualEventindividualEventTypeindividualEventDetailIndividualEventDetailindividualEventDetailDetailindividualEventDetailAge FamilyEventfamilyEventTypefamilyEventDetailFamilyEventDetailfamilyEventDetailAgeHusbandfamilyEventDetailAgeWifefamilyEventDetailDetail EventDetaileventDetailTypeeventDetailDateeventDetailPlaceeventDetailAddresseventDetailAgencyeventDetailReligioneventDetailCauseeventDetailRestrictionNoticeeventDetailNoteeventDetailSourceCitationeventDetailMultimediaSpouseToFamilyLinkspouseToFamilyLinkFamilyspouseToFamilyLinkNoteChildToFamilyLinkchildLinkFamilychildLinkPedigreechildLinkStatus childLinkNote AssociationassociationIndividualassociationRelationassociationCitationassociationNoteSourceRecordedEventsourceRecordedEventTypesourceRecordedDatesourceRecordedPlace SourceDatasourceDataEventsRecordedsourceDataAgencysourceDataNote Submitter submitterNamesubmitterAddresssubmitterMedia submitterLang submitterRFN submitterRIN submitterNotesubmitterChangeDate SubmissionsubmissionSubmittersubmissionFamilyFilesubmissionTempleCodesubmissionAncestorGenerationssubmissionDescendentGenerationssubmissionOrdinanceProcessing submissionRINsubmissionNotesubmissionChangeDateSource sourceData sourceAuthor sourceTitlesourceShortTitlesourcePublicationFacts sourceTextsourceRepositoryCitationssourceUserReference sourceRINsourceChangeDate sourceNotesourceMultimedia RepositoryrepositoryNamerepositoryAddressrepositoryNoterepositoryUserReference repositoryRINrepositoryChangeDateNotenoteTextnoteUserReferencenoteRINnoteSourceCitationnoteChangeDate MultimediamultimediaFilemultimediaTitlmultimediaUserReference multimediaRINmultimediaNotemultimediaSourceCitationmultimediaChangeDate IndividualindividualRestrictionNoticeindividualName individualSexindividualEventindividualAttributeindividualChildToFamilyLinkindividualSpouseToFamilyLinkindividualSubmitterindividualAssociationindividualAliasindividualAncestorInterestindividualDescendantInterest individualRFN individualAFNindividualUserReference individualRINindividualChangeDateindividualNoteindividualSourceCitationindividualMultimediaFamilyfamilyRestrictionNotice familyEvent familyHusband familyWifefamilyChildrenfamilyTotalChildrenfamilySubitterfamilyUserReference familyRINfamilyChangeDate familyNotefamilySourceCitationfamilyMultimediaHeaderSourceDataheaderSourceDataNameheaderSourceDataDateheaderSourceDataCopyrightCorpcorpName corpAddress HeaderSourceheaderSourceSystemIDheaderSourceVersionheaderSourceNameheaderSourceCorpheaderSourceData GedcomFormGedcomLineageLinkedGedcomUnsupported GedcomFormat gedcomVersion gedcomFormHeader headerSourceheaderDestination headerDateheaderSubmitterheaderSubmission headerFileheaderCopyrightheaderGedcomFormat headerCharset headerLangheaderPlaceForm headerNoteGedcom gedcomHeader gedcomFamilygedcomIndividualgedcomMultimedia gedcomNotegedcomRepository gedcomSourcegedcomSubmitter$fShowGedcomForm$fEqGedcomForm$fShowGedcomFormat$fShowHeaderSourceData$fShowIndividualAttributeType$fShowContactDetails $fShowAddress $fShowCorp$fShowHeaderSource$fShowMultimediaFileFormat$fShowMultimediaType$fShowMultimediaFormat$fShowMultimediaFile$fShowNameType$fShowFamilyEventType$fShowCalendar$fShowCallNumber $fShowCharset$fShowChildLinkStatus $fShowName $fShowParent$fShowPedigree$fShowPhoneticType$fShowPhoneticPlaceName$fShowRestrictionNotice$fShowRomanType$fShowRomanPlaceName $fShowSex$fShowSourceDescription$fShowUserReference$fShowLanguage$fShowLatitude$fShowLongitude$fShowMapCoord$fShowQualityAssessment $fShowYear $fShowDate$fShowDatePeriod$fShowDateRange$fShowDateApprox$fShowDateValue $fShowRIN $fShowAFN $fShowRFN$fShowIndividual$fShowChangeDate $fShowNote$fShowSourceCitation $fShowSource$fShowRepositoryCitation$fShowRepository$fShowSourceData$fShowSourceRecordedEvent$fShowEventType$fShowIndividualEventType$fShowAdoptionDetail $fShowFamily$fShowFamilyEvent$fShowFamilyEventDetail$fShowEventDetail $fShowPlace$fShowMultimedia$fShowSubmitter$fShowIndividualAttribute$fShowIndividualEventDetail$fShowPersonalName$fShowPersonalNamePieces$fShowRomanizedName$fShowPhoneticName$fShowIndividualEvent$fShowSpouseToFamilyLink$fShowChildToFamilyLink$fShowAssociation$fShowSubmission $fShowHeader $fShowGedcom parseGedcom parseHeader parseBoolTag parseWordTag parseTextTag parseListTagparseTagparseNoLinkTag parseLinkTag decodeANSEL XRefTablegdLookupparseGedcomStringparseGedcomFile$fShowXRefTable#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalTextbase Data.Functor<$> time-1.8.0.2!Data.Time.Clock.Internal.DiffTimeDiffTime gdAnyChargdNonAt gdAlphaNumgdEscape gdEscapeTextgdLevel gdLineItem gdPointer gdLineValuegdOptionalLineValuegdOptionalXRefIDgdTag gdTerminatorgdXRefIDgdLine gdExpandIDgdExpandPointer gdLineLevelgdTree RegisterRef TagHandler NoLinkHandlerparseHeaderSource parseCorpparseHeaderSourceData parseFamilyparseIndividual parseNoteparseRepository parseSourceparseSubmitterparseSubmissionparseRestrictionNoticeparseFamilyEventparseFamilyEventDetailparseEventDetailparseAgeparseSourceData parsePlaceparsePhoneticPlaceNameparseRomanPlaceNameparsePhoneticTypeparseRomanType parseMapCoord parseLongLatparsePersonalNamegetPersonalName parseNameTypeparseNamePiecesparsePhoneticNameparseRomanNameparseSexparseIndividualAttributeparseIndividualEventparseIndividualEventDetailparseChildToFamilyLink parsePedigreeparseChildLinkStatusparseSpouseToFamilyLinkparseAssociationparseSourceRecordedEventparseRepositoryCitationparseCallNumberparseSourceCitationparseGedcomFormatparseGedcomForm parseCharsetparseChangeDateparseContactDetails parseAddressparseDateValuedecodeCalendarEscapeprepareDateTextparseDatePeriodparseDateRangeparseDateApproxparseDatePhrase parseDategetDateparseExactDateparseExactDateTimeparseMultimediaRecordparseMultimediaparseMultimediaRawparseMultimediaFileparseMultimediaFormatparseMultimediaTypegetFamilyEventTypegetIndividualEventType getEventTypeparsePlaceFormparseUserReference parseVersion parseNameparseCopyright parseFileparseAFNparseRFNparseRIN parseLanguage parseQualitynullrrefdefrref parseTagFull parseCont