úÎ(²$ 1      !"#$%&'()*+,-./0$#Represents Distinguished Name (DN) BRepresents ChangeModify operations upon one entry within given DN  2Represents one LDAP operation within changes LDIF BRepresents one change record within LDIF file with DN and content @Represents one data record within LDIF file with DN and content ERepresents LDIF structure, it can be either simply LDIF data dump or & | changes LDIF with LDAP operations &Type of LDIF Files (Content, Changes)  !"#$  !"#)    #"!$      !"#($;Parse string as LDIF content and return LDIF or ParseError %;Read and parse provided file and return LDIF or ParseError 1>Read and parse provided string and return LDIF or ParserError F | If LDIF type is specified than given type is expected for parsing % | and mismatch generates ParseError &'4Parse string as DN and return DN type or ParseError 2@Preprocessing for concat wrapped lines and remove comment lines 3Remove Comment Lines 4FUnwrap lines, lines with space at begin is continue of previous line 567Parsec ldif parser 89:;<=>?@ABCDEFGHIJKLMNOPQRST$%&'$&%'$%&' (Serialize LDIF in LDIF Format U'Serialize version to LDIF Format Lines )Serialize DN to LDIF Format *(Serialize Content Record in LDIF Format +'Serialize Change Record in LDIF Format VWXY()*+()+*()*+,Find all Changes with given DN - Find all Contents with given DN .!Find first Content with given DN /4Create Change LDIF between to LDIF contents. If any = | of input argument is not LDIFContent it returns Nothing. 9 | If there is not difference the Change LDIF with empty  | change list is returned.  |  | Unsing following strategy:  | 1. Iterate over L1 DN' s and Modify / Remove Content 0 | 2. Iterate over L2 and Add Content not in L1 0.Diff two AttrVal Records if any of provided. a | Implementation uses inefficient algorithm for large count of attributes within ContentRecord. Z!Change record without any impact ,-./0,-./0,-./01  !"#$%&'()*+,-./0[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ ldif-0.0.4Text.LDIF.TypesText.LDIF.ParserText.LDIF.PrinterText.LDIF.Proc Text.LDIFDN dnAttrValsModify ModReplace ModDeleteModAddmodAttr modAttrValsChange ChangeModDN ChangeModifychMods ChangeDelete ChangeAdd chAttrVals ChangeRecordchDNchOp ContentRecordcoDN coAttrValsLDIF LDIFChanges lcChanges LDIFContent lcVersion lcEntriesLDIFTypeLDIFChangesTypeLDIFContentType AttrValueValue Attribute parseLDIFStr parseLDIFFileparseLDIFStrAs parseDNStrldif2Strdn2Str content2Str change2StrfindChangesByDNfindContentsByDNfindContentByDNdiffLDIF diffRecordparseLDIFStrAs'preproc stripCommentsunwrap takeLinestakeLinepLdif pLdifChanges pLdifContent pAttrValRec pChangeRec pChangeAdd pChangeDel pChangeMod pChangeModDNpRDNpDNSpecpDN pAttrEqValue pAttrValueDN pVersionSpecpModSpecmkModpModTypepAttributeDescriptionpAttributeType pAttrValSpec pValueSpecpURL pSafeString pBase64StringpAttrTypeCharspLdapOidpFILLpSEPpSEPsver2Str attrVals2Ln attrVal2Lnmods2Lnmod2LnisDummyChangeRecord