diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/.gitignore b/.gitignore index 92f05c038b..6b0ba5b129 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ xcuserdata /.direnv +.beads/ damus/TestingPrivate.swift damus.xcodeproj/xcshareddata/xcbaselines .DS_Store diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..f1d2897935 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "nostrdb"] + path = nostrdb + url = https://github.com/alltheseas/nostrdb.git + branch = spm diff --git a/nostrdb/parser.h b/damus-c/parser.h similarity index 99% rename from nostrdb/parser.h rename to damus-c/parser.h index cb42402c66..604e352f4e 100644 --- a/nostrdb/parser.h +++ b/damus-c/parser.h @@ -1,4 +1,3 @@ - #ifndef CURSOR_PARSER #define CURSOR_PARSER @@ -39,4 +38,3 @@ static inline int consume_u32(struct cursor *cursor, unsigned int match) } #endif /* CURSOR_PARSER */ - diff --git a/damus.xcodeproj/project.pbxproj b/damus.xcodeproj/project.pbxproj index 7129ae7eb7..defb5414b7 100644 --- a/damus.xcodeproj/project.pbxproj +++ b/damus.xcodeproj/project.pbxproj @@ -8,13 +8,16 @@ /* Begin PBXBuildFile section */ 0E8A4BB72AE4359200065E81 /* NostrFilter+Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E8A4BB62AE4359200065E81 /* NostrFilter+Hashable.swift */; }; + 18F9BEAD5C2AF2F13AB29C73 /* NIP17.swift in Sources */ = {isa = PBXBuildFile; fileRef = 171FF9F8F1CF2BD23C8A489F /* NIP17.swift */; }; 2710433D2E6BFE340005C3B0 /* PostingTimelineSwitcherView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2710433C2E6BFE2A0005C3B0 /* PostingTimelineSwitcherView.swift */; }; 2710433E2E6BFE340005C3B0 /* PostingTimelineSwitcherView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2710433C2E6BFE2A0005C3B0 /* PostingTimelineSwitcherView.swift */; }; 2710433F2E6BFE340005C3B0 /* PostingTimelineSwitcherView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2710433C2E6BFE2A0005C3B0 /* PostingTimelineSwitcherView.swift */; }; + 3165648B295B70D500C64604 /* LinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3165648A295B70D500C64604 /* LinkView.swift */; }; 3169CAE6294E69C000EE4006 /* EmptyTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3169CAE5294E69C000EE4006 /* EmptyTimelineView.swift */; }; 3169CAED294FCCFC00EE4006 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3169CAEC294FCCFC00EE4006 /* Constants.swift */; }; 31D2E847295218AF006D67F8 /* Shimmer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31D2E846295218AF006D67F8 /* Shimmer.swift */; }; + 3A0A30BB2C21397A00F8C9BC /* EmojiPicker in Frameworks */ = {isa = PBXBuildFile; productRef = 3A0A30BA2C21397A00F8C9BC /* EmojiPicker */; }; 3A23838E2A297DD200E5AA2E /* ZapButtonModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A23838D2A297DD200E5AA2E /* ZapButtonModel.swift */; }; 3A2BAC5A2DD7E4C400EBB4CC /* NIP05DomainTimelineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A2BAC592DD7E4C400EBB4CC /* NIP05DomainTimelineHeaderView.swift */; }; @@ -67,6 +70,7 @@ 3AE45AF6297BB2E700C1D842 /* LibreTranslateServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE45AF5297BB2E700C1D842 /* LibreTranslateServer.swift */; }; 3CCD1E6A2A874C4E0099A953 /* Nip98HTTPAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CCD1E692A874C4E0099A953 /* Nip98HTTPAuth.swift */; }; 3RRUR7Z6M0UHAOFZTGU9GRU0 /* KingfisherImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAY65YZMB3VK8HOZYGCNV2YJ /* KingfisherImageProvider.swift */; }; + 43A7C4B7EFD83C35D749C4C1 /* NIP17.swift in Sources */ = {isa = PBXBuildFile; fileRef = 171FF9F8F1CF2BD23C8A489F /* NIP17.swift */; }; 4C011B5E2BD0A56A002F2F9B /* ChatEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C011B5C2BD0A56A002F2F9B /* ChatEventView.swift */; }; 4C011B5F2BD0A56A002F2F9B /* ChatroomThreadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C011B5D2BD0A56A002F2F9B /* ChatroomThreadView.swift */; }; 4C011B612BD0B25C002F2F9B /* ReplyQuoteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C011B602BD0B25C002F2F9B /* ReplyQuoteView.swift */; }; @@ -157,38 +161,10 @@ 4C32B95E2A9AD44700DC3548 /* FlatBufferObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B9492A9AD44700DC3548 /* FlatBufferObject.swift */; }; 4C32B95F2A9AD44700DC3548 /* Enum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B94A2A9AD44700DC3548 /* Enum.swift */; }; 4C32B9602A9AD44700DC3548 /* Struct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B94B2A9AD44700DC3548 /* Struct.swift */; }; - 4C36245B2D5E9B2F00DD066E /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FFE2B631C0100F2B2C0 /* NdbProfile.swift */; }; 4C36245D2D5E9B4400DD066E /* NdbBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480582B633F3800F2B2C0 /* NdbBlock.swift */; }; 4C36245F2D5E9B5F00DD066E /* NdbBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480582B633F3800F2B2C0 /* NdbBlock.swift */; }; - 4C3624602D5E9EB800DD066E /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FFE2B631C0100F2B2C0 /* NdbProfile.swift */; }; 4C3624612D5E9FFD00DD066E /* wasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480532B631C4F00F2B2C0 /* wasm.c */; }; - 4C3624622D5EA00300DD066E /* nostrdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */; }; - 4C3624632D5EA01100DD066E /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDF2B631C0100F2B2C0 /* block.c */; }; - 4C3624642D5EA01600DD066E /* tal.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E72CAB688500989CEF /* tal.c */; }; - 4C3624652D5EA06400DD066E /* bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801E2B631C0100F2B2C0 /* bech32.c */; }; - 4C3624662D5EA07000DD066E /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9A42CAB688500989CEF /* sha256.c */; }; - 4C3624672D5EA0B100DD066E /* take.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9D82CAB688500989CEF /* take.c */; }; - 4C3624682D5EA0BC00DD066E /* nostr_bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */; }; - 4C3624692D5EA0C200DD066E /* list.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9BF2CAB688500989CEF /* list.c */; }; - 4C36246A2D5EA0CB00DD066E /* content_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FF62B631C0100F2B2C0 /* content_parser.c */; }; - 4C36246B2D5EA0D700DD066E /* invoice.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480372B631C0100F2B2C0 /* invoice.c */; }; - 4C36246C2D5EA0E500DD066E /* bolt11.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480102B631C0100F2B2C0 /* bolt11.c */; }; - 4C36246E2D5EA10400DD066E /* hash_u5.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */; }; - 4C36246F2D5EA16A00DD066E /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E22CAB688500989CEF /* str.c */; }; - 4C3624702D5EA17700DD066E /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9F02CAB688500989CEF /* utf8.c */; }; - 4C3624712D5EA18300DD066E /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480262B631C0100F2B2C0 /* error.c */; }; - 4C3624722D5EA18E00DD066E /* amount.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480252B631C0100F2B2C0 /* amount.c */; }; - 4C3624732D5EA1BE00DD066E /* nostrdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */; }; 4C3624742D5EA1D700DD066E /* wasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480532B631C4F00F2B2C0 /* wasm.c */; }; - 4C3624752D5EA1E000DD066E /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDF2B631C0100F2B2C0 /* block.c */; }; - 4C3624762D5EA1F600DD066E /* content_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FF62B631C0100F2B2C0 /* content_parser.c */; }; - 4C3624772D5EA1FA00DD066E /* nostr_bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */; }; - 4C3624782D5EA1FE00DD066E /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480262B631C0100F2B2C0 /* error.c */; }; - 4C3624792D5EA20200DD066E /* bolt11.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480102B631C0100F2B2C0 /* bolt11.c */; }; - 4C36247A2D5EA20C00DD066E /* bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801E2B631C0100F2B2C0 /* bech32.c */; }; - 4C36247B2D5EA21200DD066E /* hash_u5.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */; }; - 4C36247C2D5EA21F00DD066E /* amount.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480252B631C0100F2B2C0 /* amount.c */; }; - 4C36247D2D5EA22300DD066E /* invoice.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480372B631C0100F2B2C0 /* invoice.c */; }; 4C363A8428233689006E126D /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8328233689006E126D /* Parser.swift */; }; 4C363A8C28236B92006E126D /* PubkeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8B28236B92006E126D /* PubkeyView.swift */; }; 4C363A8E28236FE4006E126D /* NoteContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8D28236FE4006E126D /* NoteContentView.swift */; }; @@ -223,12 +199,6 @@ 4C42812C298C848200DBF26F /* TranslateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C42812B298C848200DBF26F /* TranslateView.swift */; }; 4C45E5022BED4D000025A428 /* ThreadReply.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C45E5012BED4D000025A428 /* ThreadReply.swift */; }; 4C463CBF2B960B96008A8C36 /* PurpleBackdrop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C463CBE2B960B96008A8C36 /* PurpleBackdrop.swift */; }; - 4C4793012A993CDA00489948 /* mdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793002A993B9A00489948 /* mdb.c */; settings = {COMPILER_FLAGS = "-w"; }; }; - 4C4793042A993DC000489948 /* midl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793032A993DB900489948 /* midl.c */; settings = {COMPILER_FLAGS = "-w"; }; }; - 4C4793052A993E3200489948 /* builder.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792942A9939BD00489948 /* builder.c */; }; - 4C4793062A993E5300489948 /* json_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792C82A9939BD00489948 /* json_parser.c */; }; - 4C4793072A993E6200489948 /* emitter.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792CF2A9939BD00489948 /* emitter.c */; }; - 4C4793082A993E8900489948 /* refmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D12A9939BD00489948 /* refmap.c */; }; 4C4DD3DB2A6CA7E8005B4E85 /* ContentParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4DD3DA2A6CA7E8005B4E85 /* ContentParsing.swift */; }; 4C4E137B2A76D5FB00BDD832 /* MuteThreadNotify.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4E137A2A76D5FB00BDD832 /* MuteThreadNotify.swift */; }; 4C4E137D2A76D63600BDD832 /* UnmuteThreadNotify.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4E137C2A76D63600BDD832 /* UnmuteThreadNotify.swift */; }; @@ -243,6 +213,11 @@ 4C5D5C992A6AF8F80024563C /* NdbNote.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C90548A2A6AEDEE00811EEC /* NdbNote.swift */; }; 4C5D5C9A2A6AF8F80024563C /* NdbTagIterator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9054882A6AED4700811EEC /* NdbTagIterator.swift */; }; 4C5D5C9D2A6B2CB40024563C /* AsciiCharacter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5D5C9C2A6B2CB40024563C /* AsciiCharacter.swift */; }; + 88376E8680AC944DA766BDCB /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7B68B6E8F76A701CEA774FC /* NdbProfile.swift */; }; + 290F05EDB7338BC4B1ED117C /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7B68B6E8F76A701CEA774FC /* NdbProfile.swift */; }; + 4A6650EC945AE052A5DFB8E3 /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7B68B6E8F76A701CEA774FC /* NdbProfile.swift */; }; + 8B3C93FC8441BAE04DBDC92B /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7B68B6E8F76A701CEA774FC /* NdbProfile.swift */; }; + A4156FF015948D02363885D0 /* NdbMeta.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4A373115E56DFC3F19EC8CD /* NdbMeta.swift */; }; 4C5E54032A9522F600FF6E60 /* UserStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5E54022A9522F600FF6E60 /* UserStatus.swift */; }; 4C5E54062A9671F800FF6E60 /* UserStatusSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5E54052A9671F800FF6E60 /* UserStatusSheet.swift */; }; 4C5F9114283D694D0052CD1C /* FollowTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5F9113283D694D0052CD1C /* FollowTarget.swift */; }; @@ -346,18 +321,6 @@ 4CB8FC232A41ABA800763C51 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB8FC222A41ABA500763C51 /* AboutView.swift */; }; 4CB9D4A72992D02B00A9A7E4 /* ProfileNameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB9D4A62992D02B00A9A7E4 /* ProfileNameView.swift */; }; 4CBB6F672B72B5E8000477A4 /* NdbBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480582B633F3800F2B2C0 /* NdbBlock.swift */; }; - 4CBB6F682B72B5F0000477A4 /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FFE2B631C0100F2B2C0 /* NdbProfile.swift */; }; - 4CBB6F6A2B730EF1000477A4 /* nostrdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */; }; - 4CBB6F6E2B731113000477A4 /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDF2B631C0100F2B2C0 /* block.c */; }; - 4CBB6F6F2B73116B000477A4 /* content_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FF62B631C0100F2B2C0 /* content_parser.c */; }; - 4CBB6F702B731179000477A4 /* invoice.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480372B631C0100F2B2C0 /* invoice.c */; }; - 4CBB6F712B731184000477A4 /* bolt11.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480102B631C0100F2B2C0 /* bolt11.c */; }; - 4CBB6F742B7311AA000477A4 /* hash_u5.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */; }; - 4CBB6F772B7311AA000477A4 /* bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801E2B631C0100F2B2C0 /* bech32.c */; }; - 4CBB6F782B7311AA000477A4 /* amount.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480252B631C0100F2B2C0 /* amount.c */; }; - 4CBB6F792B7311AA000477A4 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480262B631C0100F2B2C0 /* error.c */; }; - 4CBB6F7A2B7311AA000477A4 /* bech32_util.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480282B631C0100F2B2C0 /* bech32_util.c */; }; - 4CBB6F7C2B7312A7000477A4 /* nostr_bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */; }; 4CBCA930297DB57F00EC6B2F /* WebsiteLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CBCA92F297DB57F00EC6B2F /* WebsiteLink.swift */; }; 4CC14FEF2A73FCCB007AEB17 /* IdType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC14FEE2A73FCCB007AEB17 /* IdType.swift */; }; 4CC14FF12A73FCDB007AEB17 /* Pubkey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC14FF02A73FCDB007AEB17 /* Pubkey.swift */; }; @@ -365,39 +328,6 @@ 4CC14FF92A741939007AEB17 /* Referenced.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC14FF82A741939007AEB17 /* Referenced.swift */; }; 4CC6193A29DC777C006A86D1 /* RelayBootstrap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6193929DC777C006A86D1 /* RelayBootstrap.swift */; }; 4CC6A9772CAB650F00989CEF /* CommentItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D773BC5E2C6D538500349F0A /* CommentItem.swift */; }; - 4CC6A9FA2CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E22CAB688500989CEF /* str.c */; }; - 4CC6A9FB2CAB688500989CEF /* tal.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E72CAB688500989CEF /* tal.c */; }; - 4CC6A9FD2CAB688500989CEF /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9C42CAB688500989CEF /* mem.c */; }; - 4CC6A9FE2CAB688500989CEF /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9A42CAB688500989CEF /* sha256.c */; }; - 4CC6AA002CAB688500989CEF /* likely.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9BA2CAB688500989CEF /* likely.c */; }; - 4CC6AA042CAB688500989CEF /* htable.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9B32CAB688500989CEF /* htable.c */; }; - 4CC6AA0B2CAB688500989CEF /* list.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9BF2CAB688500989CEF /* list.c */; }; - 4CC6AA0C2CAB688500989CEF /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9F02CAB688500989CEF /* utf8.c */; }; - 4CC6AA0E2CAB688500989CEF /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CB2CAB688500989CEF /* debug.c */; }; - 4CC6AA0F2CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CE2CAB688500989CEF /* str.c */; }; - 4CC6AA122CAB688500989CEF /* take.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9D82CAB688500989CEF /* take.c */; }; - 4CC6AA752CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E22CAB688500989CEF /* str.c */; }; - 4CC6AA762CAB688500989CEF /* tal.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E72CAB688500989CEF /* tal.c */; }; - 4CC6AA782CAB688500989CEF /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9C42CAB688500989CEF /* mem.c */; }; - 4CC6AA792CAB688500989CEF /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9A42CAB688500989CEF /* sha256.c */; }; - 4CC6AA7B2CAB688500989CEF /* likely.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9BA2CAB688500989CEF /* likely.c */; }; - 4CC6AA7F2CAB688500989CEF /* htable.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9B32CAB688500989CEF /* htable.c */; }; - 4CC6AA862CAB688500989CEF /* list.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9BF2CAB688500989CEF /* list.c */; }; - 4CC6AA872CAB688500989CEF /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9F02CAB688500989CEF /* utf8.c */; }; - 4CC6AA892CAB688500989CEF /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CB2CAB688500989CEF /* debug.c */; }; - 4CC6AA8A2CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CE2CAB688500989CEF /* str.c */; }; - 4CC6AA8D2CAB688500989CEF /* take.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9D82CAB688500989CEF /* take.c */; }; - 4CC6AABF2CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E22CAB688500989CEF /* str.c */; }; - 4CC6AAC02CAB688500989CEF /* tal.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9E72CAB688500989CEF /* tal.c */; }; - 4CC6AAC22CAB688500989CEF /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9C42CAB688500989CEF /* mem.c */; }; - 4CC6AAC32CAB688500989CEF /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9A42CAB688500989CEF /* sha256.c */; }; - 4CC6AAC52CAB688500989CEF /* likely.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9BA2CAB688500989CEF /* likely.c */; }; - 4CC6AAC92CAB688500989CEF /* htable.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9B32CAB688500989CEF /* htable.c */; }; - 4CC6AAD02CAB688500989CEF /* list.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9BF2CAB688500989CEF /* list.c */; }; - 4CC6AAD12CAB688500989CEF /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9F02CAB688500989CEF /* utf8.c */; }; - 4CC6AAD32CAB688500989CEF /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CB2CAB688500989CEF /* debug.c */; }; - 4CC6AAD42CAB688500989CEF /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9CE2CAB688500989CEF /* str.c */; }; - 4CC6AAD72CAB688500989CEF /* take.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6A9D82CAB688500989CEF /* take.c */; }; 4CC7AAE7297EFA7B00430951 /* Zap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7AAE6297EFA7B00430951 /* Zap.swift */; }; 4CC7AAEB297F0AEC00430951 /* BuilderEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7AAEA297F0AEC00430951 /* BuilderEventView.swift */; }; 4CC7AAED297F0B9E00430951 /* Highlight.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7AAEC297F0B9E00430951 /* Highlight.swift */; }; @@ -443,7 +373,6 @@ 4CEE2AF5280B29E600AB5EEF /* TimeAgo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEE2AF4280B29E600AB5EEF /* TimeAgo.swift */; }; 4CEE2AF7280B2DEA00AB5EEF /* ProfileName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEE2AF6280B2DEA00AB5EEF /* ProfileName.swift */; }; 4CEE2B02280B39E800AB5EEF /* EventActionBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEE2B01280B39E800AB5EEF /* EventActionBar.swift */; }; - 4CEF958D2A9CE650000F901B /* verifier.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D42A9939BD00489948 /* verifier.c */; }; 4CF0ABD42980996B00D66079 /* Report.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0ABD32980996B00D66079 /* Report.swift */; }; 4CF0ABD629817F5B00D66079 /* ReportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0ABD529817F5B00D66079 /* ReportView.swift */; }; 4CF0ABD82981980C00D66079 /* Lists.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0ABD72981980C00D66079 /* Lists.swift */; }; @@ -458,21 +387,6 @@ 4CF0ABF029857E9200D66079 /* Bech32Object.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0ABEF29857E9200D66079 /* Bech32Object.swift */; }; 4CF0ABF62985CD5500D66079 /* UserSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0ABF52985CD5500D66079 /* UserSearch.swift */; }; 4CF38C882A9442DC00BE01B6 /* UserStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF38C872A9442DC00BE01B6 /* UserStatusView.swift */; }; - 4CF480382B631C0100F2B2C0 /* nostrdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */; }; - 4CF480392B631C0100F2B2C0 /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FDF2B631C0100F2B2C0 /* block.c */; }; - 4CF4803A2B631C0100F2B2C0 /* nostr_bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */; }; - 4CF4803D2B631C0100F2B2C0 /* content_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FF62B631C0100F2B2C0 /* content_parser.c */; }; - 4CF4803F2B631C0100F2B2C0 /* ndb_profile.rs in Resources */ = {isa = PBXBuildFile; fileRef = 4CF47FFA2B631C0100F2B2C0 /* ndb_profile.rs */; }; - 4CF480402B631C0100F2B2C0 /* ndb_meta.rs in Resources */ = {isa = PBXBuildFile; fileRef = 4CF47FFB2B631C0100F2B2C0 /* ndb_meta.rs */; }; - 4CF480412B631C0100F2B2C0 /* NdbMeta.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FFD2B631C0100F2B2C0 /* NdbMeta.swift */; }; - 4CF480422B631C0100F2B2C0 /* NdbProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF47FFE2B631C0100F2B2C0 /* NdbProfile.swift */; }; - 4CF480442B631C0100F2B2C0 /* bolt11.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480102B631C0100F2B2C0 /* bolt11.c */; }; - 4CF480472B631C0100F2B2C0 /* hash_u5.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */; }; - 4CF4804A2B631C0100F2B2C0 /* bech32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4801E2B631C0100F2B2C0 /* bech32.c */; }; - 4CF4804D2B631C0100F2B2C0 /* amount.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480252B631C0100F2B2C0 /* amount.c */; }; - 4CF4804E2B631C0100F2B2C0 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480262B631C0100F2B2C0 /* error.c */; }; - 4CF4804F2B631C0100F2B2C0 /* bech32_util.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480282B631C0100F2B2C0 /* bech32_util.c */; }; - 4CF480522B631C0100F2B2C0 /* invoice.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480372B631C0100F2B2C0 /* invoice.c */; }; 4CF480552B631C4F00F2B2C0 /* wasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480532B631C4F00F2B2C0 /* wasm.c */; }; 4CF480592B633F3800F2B2C0 /* NdbBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF480582B633F3800F2B2C0 /* NdbBlock.swift */; }; 4CFD502F2A2DA45800A229DB /* MediaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFD502E2A2DA45800A229DB /* MediaView.swift */; }; @@ -496,6 +410,8 @@ 50B5685329F97CB400A23243 /* CredentialHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50B5685229F97CB400A23243 /* CredentialHandler.swift */; }; 50C3E08A2AA8E3F7006A4BC0 /* AVPlayer+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50C3E0892AA8E3F7006A4BC0 /* AVPlayer+Additions.swift */; }; 50DA11262A16A23F00236234 /* Launch.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 50DA11252A16A23F00236234 /* Launch.storyboard */; }; + 5134E51E1A288235039554E7 /* NIP17.swift in Sources */ = {isa = PBXBuildFile; fileRef = 171FF9F8F1CF2BD23C8A489F /* NIP17.swift */; }; + 5C0567532C8B5F9C0073F23A /* PostingTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C8711DD2C460C06007879C2 /* PostingTimelineView.swift */; }; 5C0567552C8B60C20073F23A /* OffsetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C0567542C8B60C20073F23A /* OffsetExtension.swift */; }; 5C0567562C8B60E60073F23A /* OffsetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C0567542C8B60C20073F23A /* OffsetExtension.swift */; }; @@ -625,6 +541,7 @@ 5CF2DCCC2AA3AF0B00984B8D /* RelayPicView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CF2DCCB2AA3AF0B00984B8D /* RelayPicView.swift */; }; 5CF2DCCE2AABE1A500984B8D /* DamusLightGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CF2DCCD2AABE1A500984B8D /* DamusLightGradient.swift */; }; 5CF72FC229B9142F00124A13 /* ShareAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CF72FC129B9142F00124A13 /* ShareAction.swift */; }; + 5D6232CED3C4F6C195A46E87 /* DMRelayListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BA4360989775E4F20F83611 /* DMRelayListView.swift */; }; 5CFDE6E52EF4F782004E8661 /* TenorModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFDE6E42EF4F77E004E8661 /* TenorModels.swift */; }; 5CFDE6E62EF4F782004E8661 /* TenorModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFDE6E42EF4F77E004E8661 /* TenorModels.swift */; }; 5CFDE6E72EF4F782004E8661 /* TenorModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFDE6E42EF4F77E004E8661 /* TenorModels.swift */; }; @@ -665,11 +582,6 @@ 82D6FAB62CD99F7900C925F4 /* String+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B9472A9AD44700DC3548 /* String+extension.swift */; }; 82D6FAB72CD99F7900C925F4 /* FlatBufferObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B9492A9AD44700DC3548 /* FlatBufferObject.swift */; }; 82D6FAB82CD99F7900C925F4 /* Enum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B94A2A9AD44700DC3548 /* Enum.swift */; }; - 82D6FAB92CD99F7900C925F4 /* builder.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792942A9939BD00489948 /* builder.c */; }; - 82D6FABA2CD99F7900C925F4 /* json_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792C82A9939BD00489948 /* json_parser.c */; }; - 82D6FABB2CD99F7900C925F4 /* emitter.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792CF2A9939BD00489948 /* emitter.c */; }; - 82D6FABC2CD99F7900C925F4 /* refmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D12A9939BD00489948 /* refmap.c */; }; - 82D6FABD2CD99F7900C925F4 /* verifier.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D42A9939BD00489948 /* verifier.c */; }; 82D6FABF2CD99F7900C925F4 /* NdbTagIterator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9054882A6AED4700811EEC /* NdbTagIterator.swift */; }; 82D6FAC02CD99F7900C925F4 /* NdbNote.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C90548A2A6AEDEE00811EEC /* NdbNote.swift */; }; 82D6FAC12CD99F7900C925F4 /* AsciiCharacter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5D5C9C2A6B2CB40024563C /* AsciiCharacter.swift */; }; @@ -677,8 +589,6 @@ 82D6FAC32CD99F7900C925F4 /* Ndb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C478E242A9932C100489948 /* Ndb.swift */; }; 82D6FAC42CD99F7900C925F4 /* NdbTagsIterator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CDD1AE12A6B3074001CD4DF /* NdbTagsIterator.swift */; }; 82D6FAC52CD99F7900C925F4 /* NdbTxn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3DCC752A9FC2030091E592 /* NdbTxn.swift */; }; - 82D6FAC72CD99F7900C925F4 /* midl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793032A993DB900489948 /* midl.c */; }; - 82D6FAC82CD99F7900C925F4 /* mdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793002A993B9A00489948 /* mdb.c */; }; 82D6FAC92CD99F7900C925F4 /* NdbNote+.swift in Sources */ = {isa = PBXBuildFile; fileRef = D798D2272B085CDA00234419 /* NdbNote+.swift */; }; 82D6FACA2CD99F7900C925F4 /* NostrScript.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C19AE4C2A5CEF7C00C90DB7 /* NostrScript.swift */; }; 82D6FACB2CD99F7900C925F4 /* nostrscript.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4F14A92A2A71AB0045A0B9 /* nostrscript.c */; }; @@ -1091,8 +1001,10 @@ 82D6FC882CD9A4DE00C925F4 /* EmojiPicker in Frameworks */ = {isa = PBXBuildFile; productRef = 82D6FC872CD9A4DE00C925F4 /* EmojiPicker */; }; 82D6FC8A2CD9A54600C925F4 /* SwipeActions in Frameworks */ = {isa = PBXBuildFile; productRef = 82D6FC892CD9A54600C925F4 /* SwipeActions */; }; 9609F058296E220800069BF3 /* BannerImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9609F057296E220800069BF3 /* BannerImageView.swift */; }; + 9C8272144F5382FF33503BA1 /* DMRelayListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BA4360989775E4F20F83611 /* DMRelayListView.swift */; }; 9C83F89329A937B900136C08 /* TextViewWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C83F89229A937B900136C08 /* TextViewWrapper.swift */; }; 9CA876E229A00CEA0003B9A3 /* AttachMediaUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CA876E129A00CE90003B9A3 /* AttachMediaUtility.swift */; }; + ADBBFE60E62F69CF7EC0AC78 /* NIP44.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7DB1FDD2D5A78CE00CF06DA /* NIP44.swift */; }; ADFE73552AD4793100EC7326 /* QRScanNSECView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFE73542AD4793100EC7326 /* QRScanNSECView.swift */; }; B501062D2B363036003874F5 /* AuthIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501062C2B363036003874F5 /* AuthIntegrationTests.swift */; }; B51C1CEA2B55A60A00E312A9 /* AddMuteItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51C1CE82B55A60A00E312A9 /* AddMuteItemView.swift */; }; @@ -1115,8 +1027,10 @@ BA3759972ABCCF360018D73B /* CameraPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA3759962ABCCF360018D73B /* CameraPreview.swift */; }; BA693074295D649800ADDB87 /* UserSettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA693073295D649800ADDB87 /* UserSettingsStore.swift */; }; BAB68BED29543FA3007BA466 /* SelectWalletView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAB68BEC29543FA3007BA466 /* SelectWalletView.swift */; }; + D2277EEA2A089BD5006C3807 /* Router.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2277EE92A089BD5006C3807 /* Router.swift */; }; D2585C7839C411EB3E0D79D6 /* RepostNotificationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0A2B0F048CC8D494945E6 /* RepostNotificationTests.swift */; }; + D38DA39D28DBB3923E538B5C /* NIP17.swift in Sources */ = {isa = PBXBuildFile; fileRef = 171FF9F8F1CF2BD23C8A489F /* NIP17.swift */; }; D5C1AFBF2E5DF7E60092F72F /* ContactCardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C1AFBE2E5DF7E60092F72F /* ContactCardManager.swift */; }; D5C1AFC02E5DF7E60092F72F /* ContactCardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C1AFBE2E5DF7E60092F72F /* ContactCardManager.swift */; }; D5C1AFC12E5DF7E60092F72F /* ContactCardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C1AFBE2E5DF7E60092F72F /* ContactCardManager.swift */; }; @@ -1211,13 +1125,6 @@ D703D7902C670D1600A400EA /* NewEventsBits.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7CB5D4D2B11728000AD4105 /* NewEventsBits.swift */; }; D703D7912C670D1E00A400EA /* DisplayName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BB83029C0ED4F00FC4E37 /* DisplayName.swift */; }; D703D7922C670D2900A400EA /* RelayURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7FF93FF2AC7AC5200FD969D /* RelayURL.swift */; }; - D703D7A42C670E3C00A400EA /* midl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793032A993DB900489948 /* midl.c */; }; - D703D7A52C670E3E00A400EA /* mdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793002A993B9A00489948 /* mdb.c */; }; - D703D7A62C670E5200A400EA /* builder.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792942A9939BD00489948 /* builder.c */; }; - D703D7A72C670E5500A400EA /* json_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792C82A9939BD00489948 /* json_parser.c */; }; - D703D7A82C670E5800A400EA /* emitter.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792CF2A9939BD00489948 /* emitter.c */; }; - D703D7A92C670E5A00A400EA /* refmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D12A9939BD00489948 /* refmap.c */; }; - D703D7AA2C670E5D00A400EA /* verifier.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D42A9939BD00489948 /* verifier.c */; }; D703D7AB2C670F6900A400EA /* UnmuteThreadNotify.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4E137C2A76D63600BDD832 /* UnmuteThreadNotify.swift */; }; D703D7AF2C670FB700A400EA /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = D703D7AE2C670FB700A400EA /* MarkdownUI */; }; D703D7B02C6710A500A400EA /* Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B9422A9AD44700DC3548 /* Root.swift */; }; @@ -1511,7 +1418,7 @@ D73E5EFB2C6A97F4007EB227 /* ProfilePicturesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C30AC7F29A6A53F00E2BD5A /* ProfilePicturesView.swift */; }; D73E5EFC2C6A97F4007EB227 /* DamusAppNotificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D78CD5972B8990300014D539 /* DamusAppNotificationView.swift */; }; D73E5EFD2C6A97F4007EB227 /* InnerTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE0E2B529A3ED5500DB4CA2 /* InnerTimelineView.swift */; }; - D73E5EFE2C6A97F4007EB227 /* (null) in Sources */ = {isa = PBXBuildFile; }; + D73E5EFE2C6A97F4007EB227 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; D73E5EFF2C6A97F4007EB227 /* ZapsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE879572996C45300F758CC /* ZapsView.swift */; }; D73E5F002C6A97F4007EB227 /* CustomizeZapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9F18E129AA9B6C008C55EC /* CustomizeZapView.swift */; }; D73E5F012C6A97F4007EB227 /* ZapTypePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA3FA0F29F593D000FDB3C3 /* ZapTypePicker.swift */; }; @@ -1849,13 +1756,6 @@ D7CCFC162B05894300323D86 /* Pubkey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC14FF02A73FCDB007AEB17 /* Pubkey.swift */; }; D7CCFC192B058A3F00323D86 /* Block.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7527271D2A93FF0100214108 /* Block.swift */; }; D7CD35132B1A72B800D63139 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3169CAEC294FCCFC00EE4006 /* Constants.swift */; }; - D7CE1B182B0BDFDD002EDAD4 /* mdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793002A993B9A00489948 /* mdb.c */; }; - D7CE1B192B0BE132002EDAD4 /* builder.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792942A9939BD00489948 /* builder.c */; }; - D7CE1B1A2B0BE135002EDAD4 /* json_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792C82A9939BD00489948 /* json_parser.c */; }; - D7CE1B1B2B0BE144002EDAD4 /* emitter.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792CF2A9939BD00489948 /* emitter.c */; }; - D7CE1B1C2B0BE147002EDAD4 /* refmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D12A9939BD00489948 /* refmap.c */; }; - D7CE1B1D2B0BE14A002EDAD4 /* verifier.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4792D42A9939BD00489948 /* verifier.c */; }; - D7CE1B1E2B0BE190002EDAD4 /* midl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C4793032A993DB900489948 /* midl.c */; }; D7CE1B312B0BE69D002EDAD4 /* Ndb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C478E242A9932C100489948 /* Ndb.swift */; }; D7CE1B322B0BE6C3002EDAD4 /* NdbTxn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3DCC752A9FC2030091E592 /* NdbTxn.swift */; }; D7CE1B332B0BE6DE002EDAD4 /* Nostr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C75EFA527FF87A20006080F /* Nostr.swift */; }; @@ -1971,6 +1871,7 @@ E0E024112B7C19C20075735D /* TranslationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E024102B7C19C20075735D /* TranslationTests.swift */; }; E0EE9DD42B8E5FEA00F3002D /* ImageProcessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0EE9DD32B8E5FEA00F3002D /* ImageProcessing.swift */; }; E4FA1C032A24BB7F00482697 /* SearchSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4FA1C022A24BB7F00482697 /* SearchSettingsView.swift */; }; + E8BF79671959B03A1F5FCE36 /* NIP17Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C3DFE64B6C64EE965623103 /* NIP17Tests.swift */; }; E990020F2955F837003BBC5A /* EditMetadataView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E990020E2955F837003BBC5A /* EditMetadataView.swift */; }; EBCC3486DE53D8DB2532B98E /* LoadableNostrEventViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0AE7EE3216D7983A50BE2D9 /* LoadableNostrEventViewModelTests.swift */; }; F71694EA2A662232001F4053 /* OnboardingSuggestionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71694E92A662232001F4053 /* OnboardingSuggestionsView.swift */; }; @@ -1987,6 +1888,7 @@ F7F0BA25297892BD009531F3 /* SwipeToDismiss.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F0BA24297892BD009531F3 /* SwipeToDismiss.swift */; }; F7F0BA272978E54D009531F3 /* ParticipantsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F0BA262978E54D009531F3 /* ParticipantsView.swift */; }; F944F56E29EA9CCC0067B3BF /* DamusParseContentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F944F56D29EA9CCC0067B3BF /* DamusParseContentTests.swift */; }; + FB063AA7677A20F389C6CC9A /* DMRelayListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BA4360989775E4F20F83611 /* DMRelayListView.swift */; }; FQ9UEENWE218BBQDVQXU3RA9 /* KingfisherImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAY65YZMB3VK8HOZYGCNV2YJ /* KingfisherImageProvider.swift */; }; K9G5YXAZ4Y19GSLH8TWS8CO1 /* KingfisherImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAY65YZMB3VK8HOZYGCNV2YJ /* KingfisherImageProvider.swift */; }; /* End PBXBuildFile section */ @@ -2047,6 +1949,9 @@ /* Begin PBXFileReference section */ 0E8A4BB62AE4359200065E81 /* NostrFilter+Hashable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NostrFilter+Hashable.swift"; sourceTree = ""; }; + 1361F9433ED717C010790C65 /* giftwrap.c */ = {isa = PBXFileReference; includeInIndex = 1; path = giftwrap.c; sourceTree = ""; }; + 171FF9F8F1CF2BD23C8A489F /* NIP17.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NIP17.swift; sourceTree = ""; }; + 1C3DFE64B6C64EE965623103 /* NIP17Tests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NIP17Tests.swift; sourceTree = ""; }; 2710433C2E6BFE2A0005C3B0 /* PostingTimelineSwitcherView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostingTimelineSwitcherView.swift; sourceTree = ""; }; 3165648A295B70D500C64604 /* LinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkView.swift; sourceTree = ""; }; 3169CAE5294E69C000EE4006 /* EmptyTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyTimelineView.swift; sourceTree = ""; }; @@ -2171,6 +2076,7 @@ 3AF6336829884C6B0005672A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/InfoPlist.strings"; sourceTree = ""; }; 3AF6336929884C6B0005672A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = ""; }; 3AF6336A29884C6B0005672A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-PT"; path = "pt-PT.lproj/Localizable.stringsdict"; sourceTree = ""; }; + 3BA4360989775E4F20F83611 /* DMRelayListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DMRelayListView.swift; path = DMRelayListView.swift; sourceTree = ""; }; 3CCD1E692A874C4E0099A953 /* Nip98HTTPAuth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Nip98HTTPAuth.swift; sourceTree = ""; }; 4C011B5C2BD0A56A002F2F9B /* ChatEventView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatEventView.swift; sourceTree = ""; }; 4C011B5D2BD0A56A002F2F9B /* ChatroomThreadView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatroomThreadView.swift; sourceTree = ""; }; @@ -2196,7 +2102,7 @@ 4C1253652A76D0FF0004F4B8 /* OnlyZapsNotify.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnlyZapsNotify.swift; sourceTree = ""; }; 4C1253672A76D2470004F4B8 /* MuteNotify.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MuteNotify.swift; sourceTree = ""; }; 4C1253692A76D3850004F4B8 /* RelaysChangedNotify.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelaysChangedNotify.swift; sourceTree = ""; }; - 4C15224A2B8D499F007CDC17 /* parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parser.h; sourceTree = ""; }; + 4C15C7142A55DE7A00D0A0DB /* ReactionsSettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionsSettingsView.swift; sourceTree = ""; }; 4C190F1F2A535FC200027FD5 /* CustomizeZapModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomizeZapModel.swift; sourceTree = ""; }; 4C190F242A547D2000027FD5 /* LoadScript.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadScript.swift; sourceTree = ""; }; @@ -2297,85 +2203,6 @@ 4C45E5012BED4D000025A428 /* ThreadReply.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadReply.swift; sourceTree = ""; }; 4C463CBE2B960B96008A8C36 /* PurpleBackdrop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PurpleBackdrop.swift; sourceTree = ""; }; 4C478E242A9932C100489948 /* Ndb.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Ndb.swift; sourceTree = ""; }; - 4C47928E2A9939BD00489948 /* flatcc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc.h; sourceTree = ""; }; - 4C47928F2A9939BD00489948 /* flatcc_version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_version.h; sourceTree = ""; }; - 4C4792902A9939BD00489948 /* flatcc_emitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_emitter.h; sourceTree = ""; }; - 4C4792912A9939BD00489948 /* flatcc_alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_alloc.h; sourceTree = ""; }; - 4C4792922A9939BD00489948 /* flatcc_json_printer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_json_printer.h; sourceTree = ""; }; - 4C4792932A9939BD00489948 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 4C4792942A9939BD00489948 /* builder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = builder.c; sourceTree = ""; }; - 4C4792952A9939BD00489948 /* flatcc_verifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_verifier.h; sourceTree = ""; }; - 4C4792962A9939BD00489948 /* flatcc_refmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_refmap.h; sourceTree = ""; }; - 4C4792972A9939BD00489948 /* flatcc_unaligned.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_unaligned.h; sourceTree = ""; }; - 4C4792992A9939BD00489948 /* grisu3_print.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = grisu3_print.h; sourceTree = ""; }; - 4C47929A2A9939BD00489948 /* pprintfp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pprintfp.h; sourceTree = ""; }; - 4C47929B2A9939BD00489948 /* pbase64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pbase64.h; sourceTree = ""; }; - 4C47929C2A9939BD00489948 /* punaligned.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = punaligned.h; sourceTree = ""; }; - 4C47929D2A9939BD00489948 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - 4C47929E2A9939BD00489948 /* pdiagnostic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pdiagnostic.h; sourceTree = ""; }; - 4C47929F2A9939BD00489948 /* pinttypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pinttypes.h; sourceTree = ""; }; - 4C4792A02A9939BD00489948 /* pinline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pinline.h; sourceTree = ""; }; - 4C4792A12A9939BD00489948 /* pprintint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pprintint.h; sourceTree = ""; }; - 4C4792A22A9939BD00489948 /* pdiagnostic_pop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pdiagnostic_pop.h; sourceTree = ""; }; - 4C4792A52A9939BD00489948 /* stdalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdalign.h; sourceTree = ""; }; - 4C4792A62A9939BD00489948 /* inttypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inttypes.h; sourceTree = ""; }; - 4C4792A72A9939BD00489948 /* stdbool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdbool.h; sourceTree = ""; }; - 4C4792A82A9939BD00489948 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; - 4C4792A92A9939BD00489948 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; - 4C4792AB2A9939BD00489948 /* endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = endian.h; sourceTree = ""; }; - 4C4792AC2A9939BD00489948 /* pversion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pversion.h; sourceTree = ""; }; - 4C4792AD2A9939BD00489948 /* pstdalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pstdalign.h; sourceTree = ""; }; - 4C4792AE2A9939BD00489948 /* pdiagnostic_push.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pdiagnostic_push.h; sourceTree = ""; }; - 4C4792AF2A9939BD00489948 /* pendian_detect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pendian_detect.h; sourceTree = ""; }; - 4C4792B02A9939BD00489948 /* paligned_alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = paligned_alloc.h; sourceTree = ""; }; - 4C4792B12A9939BD00489948 /* pendian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pendian.h; sourceTree = ""; }; - 4C4792B22A9939BD00489948 /* pstatic_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pstatic_assert.h; sourceTree = ""; }; - 4C4792B32A9939BD00489948 /* pwarnings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pwarnings.h; sourceTree = ""; }; - 4C4792B42A9939BD00489948 /* pparsefp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pparsefp.h; sourceTree = ""; }; - 4C4792B52A9939BD00489948 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 4C4792B62A9939BD00489948 /* portable_basic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = portable_basic.h; sourceTree = ""; }; - 4C4792B72A9939BD00489948 /* portable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = portable.h; sourceTree = ""; }; - 4C4792B82A9939BD00489948 /* grisu3_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = grisu3_math.h; sourceTree = ""; }; - 4C4792B92A9939BD00489948 /* pattributes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pattributes.h; sourceTree = ""; }; - 4C4792BA2A9939BD00489948 /* pstdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pstdint.h; sourceTree = ""; }; - 4C4792BB2A9939BD00489948 /* pstdbool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pstdbool.h; sourceTree = ""; }; - 4C4792BC2A9939BD00489948 /* pcrt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcrt.h; sourceTree = ""; }; - 4C4792BD2A9939BD00489948 /* pstatic_assert_scope.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pstatic_assert_scope.h; sourceTree = ""; }; - 4C4792BE2A9939BD00489948 /* grisu3_parse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = grisu3_parse.h; sourceTree = ""; }; - 4C4792BF2A9939BD00489948 /* pparseint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pparseint.h; sourceTree = ""; }; - 4C4792C02A9939BD00489948 /* flatcc_endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_endian.h; sourceTree = ""; }; - 4C4792C12A9939BD00489948 /* flatcc_iov.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_iov.h; sourceTree = ""; }; - 4C4792C22A9939BD00489948 /* flatcc_rtconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_rtconfig.h; sourceTree = ""; }; - 4C4792C32A9939BD00489948 /* flatcc_accessors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_accessors.h; sourceTree = ""; }; - 4C4792C42A9939BD00489948 /* flatcc_epilogue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_epilogue.h; sourceTree = ""; }; - 4C4792C52A9939BD00489948 /* flatcc_identifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_identifier.h; sourceTree = ""; }; - 4C4792C62A9939BD00489948 /* flatcc_prologue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_prologue.h; sourceTree = ""; }; - 4C4792C72A9939BD00489948 /* flatcc_builder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_builder.h; sourceTree = ""; }; - 4C4792C82A9939BD00489948 /* json_parser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = json_parser.c; sourceTree = ""; }; - 4C4792CA2A9939BD00489948 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; - 4C4792CB2A9939BD00489948 /* readfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = readfile.h; sourceTree = ""; }; - 4C4792CC2A9939BD00489948 /* cdump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdump.h; sourceTree = ""; }; - 4C4792CD2A9939BD00489948 /* elapsed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elapsed.h; sourceTree = ""; }; - 4C4792CE2A9939BD00489948 /* hexdump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hexdump.h; sourceTree = ""; }; - 4C4792CF2A9939BD00489948 /* emitter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = emitter.c; sourceTree = ""; }; - 4C4792D02A9939BD00489948 /* flatcc_json_parser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_json_parser.h; sourceTree = ""; }; - 4C4792D12A9939BD00489948 /* refmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = refmap.c; sourceTree = ""; }; - 4C4792D22A9939BD00489948 /* flatcc_flatbuffers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_flatbuffers.h; sourceTree = ""; }; - 4C4792D32A9939BD00489948 /* flatcc_portable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_portable.h; sourceTree = ""; }; - 4C4792D42A9939BD00489948 /* verifier.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = verifier.c; sourceTree = ""; }; - 4C4792D52A9939BD00489948 /* flatcc_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_types.h; sourceTree = ""; }; - 4C4792D62A9939BD00489948 /* json_printer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = json_printer.c; sourceTree = ""; }; - 4C4792D72A9939BD00489948 /* flatcc_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatcc_assert.h; sourceTree = ""; }; - 4C4792D92A9939BD00489948 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; - 4C4792DA2A9939BD00489948 /* reflection_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reflection_reader.h; sourceTree = ""; }; - 4C4792DB2A9939BD00489948 /* flatbuffers_common_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatbuffers_common_reader.h; sourceTree = ""; }; - 4C4792DC2A9939BD00489948 /* reflection_builder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reflection_builder.h; sourceTree = ""; }; - 4C4792DD2A9939BD00489948 /* reflection_verifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reflection_verifier.h; sourceTree = ""; }; - 4C4792DE2A9939BD00489948 /* flatbuffers_common_builder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flatbuffers_common_builder.h; sourceTree = ""; }; - 4C4792FF2A993B9A00489948 /* lmdb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lmdb.h; sourceTree = ""; }; - 4C4793002A993B9A00489948 /* mdb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mdb.c; sourceTree = ""; }; - 4C4793022A993D9300489948 /* midl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midl.h; sourceTree = ""; }; - 4C4793032A993DB900489948 /* midl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = midl.c; sourceTree = ""; }; 4C4A3A5A288A1B2200453788 /* damus.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = damus.entitlements; sourceTree = ""; }; 4C4DD3DA2A6CA7E8005B4E85 /* ContentParsing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentParsing.swift; sourceTree = ""; }; 4C4E137A2A76D5FB00BDD832 /* MuteThreadNotify.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MuteThreadNotify.swift; sourceTree = ""; }; @@ -2390,6 +2217,8 @@ 4C5C7E67284ED36500A22DF5 /* SearchHomeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHomeModel.swift; sourceTree = ""; }; 4C5C7E69284EDE2E00A22DF5 /* SearchResultsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultsView.swift; sourceTree = ""; }; 4C5D5C9C2A6B2CB40024563C /* AsciiCharacter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsciiCharacter.swift; sourceTree = ""; }; + B7B68B6E8F76A701CEA774FC /* NdbProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NdbProfile.swift; sourceTree = ""; }; + F4A373115E56DFC3F19EC8CD /* NdbMeta.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NdbMeta.swift; sourceTree = ""; }; 4C5E54022A9522F600FF6E60 /* UserStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserStatus.swift; sourceTree = ""; }; 4C5E54052A9671F800FF6E60 /* UserStatusSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserStatusSheet.swift; sourceTree = ""; }; 4C5F9113283D694D0052CD1C /* FollowTarget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowTarget.swift; sourceTree = ""; }; @@ -2417,10 +2246,6 @@ 4C75EFB628049D990006080F /* RelayPool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayPool.swift; sourceTree = ""; }; 4C75EFB82804A2740006080F /* EventView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventView.swift; sourceTree = ""; }; 4C75EFBA2804A34C0006080F /* ProofOfWork.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProofOfWork.swift; sourceTree = ""; }; - 4C78EFD72A707C4D007E8197 /* secp256k1_schnorrsig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = secp256k1_schnorrsig.h; sourceTree = ""; }; - 4C78EFD82A707C4D007E8197 /* secp256k1_ecdh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = secp256k1_ecdh.h; sourceTree = ""; }; - 4C78EFD92A707C4D007E8197 /* secp256k1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = secp256k1.h; sourceTree = ""; }; - 4C78EFDA2A707C67007E8197 /* secp256k1_extrakeys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = secp256k1_extrakeys.h; sourceTree = ""; }; 4C7D09582A05BEAD00943473 /* KeyboardVisible.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardVisible.swift; sourceTree = ""; }; 4C7D095C2A098C5D00943473 /* ConnectWalletView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectWalletView.swift; sourceTree = ""; }; 4C7D095D2A098C5D00943473 /* WalletView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletView.swift; sourceTree = ""; }; @@ -2503,40 +2328,6 @@ 4CC14FF42A740BB7007AEB17 /* NoteId.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoteId.swift; sourceTree = ""; }; 4CC14FF82A741939007AEB17 /* Referenced.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Referenced.swift; sourceTree = ""; }; 4CC6193929DC777C006A86D1 /* RelayBootstrap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayBootstrap.swift; sourceTree = ""; }; - 4CC6A97E2CAB688500989CEF /* alignof.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = alignof.h; sourceTree = ""; }; - 4CC6A9822CAB688500989CEF /* array_size.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = array_size.h; sourceTree = ""; }; - 4CC6A9862CAB688500989CEF /* build_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = build_assert.h; sourceTree = ""; }; - 4CC6A98A2CAB688500989CEF /* check_type.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = check_type.h; sourceTree = ""; }; - 4CC6A98E2CAB688500989CEF /* compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compiler.h; sourceTree = ""; }; - 4CC6A9922CAB688500989CEF /* container_of.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = container_of.h; sourceTree = ""; }; - 4CC6A9962CAB688500989CEF /* cppmagic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cppmagic.h; sourceTree = ""; }; - 4CC6A9A32CAB688500989CEF /* sha256.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sha256.h; sourceTree = ""; }; - 4CC6A9A42CAB688500989CEF /* sha256.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha256.c; sourceTree = ""; }; - 4CC6A9A82CAB688500989CEF /* endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = endian.h; sourceTree = ""; }; - 4CC6A9B22CAB688500989CEF /* htable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = htable.h; sourceTree = ""; }; - 4CC6A9B32CAB688500989CEF /* htable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = htable.c; sourceTree = ""; }; - 4CC6A9B42CAB688500989CEF /* htable_type.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = htable_type.h; sourceTree = ""; }; - 4CC6A9B92CAB688500989CEF /* likely.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = likely.h; sourceTree = ""; }; - 4CC6A9BA2CAB688500989CEF /* likely.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = likely.c; sourceTree = ""; }; - 4CC6A9BE2CAB688500989CEF /* list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = ""; }; - 4CC6A9BF2CAB688500989CEF /* list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = list.c; sourceTree = ""; }; - 4CC6A9C32CAB688500989CEF /* mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = ""; }; - 4CC6A9C42CAB688500989CEF /* mem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mem.c; sourceTree = ""; }; - 4CC6A9C82CAB688500989CEF /* short_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = short_types.h; sourceTree = ""; }; - 4CC6A9CB2CAB688500989CEF /* debug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debug.c; sourceTree = ""; }; - 4CC6A9CD2CAB688500989CEF /* str.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = str.h; sourceTree = ""; }; - 4CC6A9CE2CAB688500989CEF /* str.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = str.c; sourceTree = ""; }; - 4CC6A9CF2CAB688500989CEF /* str_debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = str_debug.h; sourceTree = ""; }; - 4CC6A9D32CAB688500989CEF /* structeq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = structeq.h; sourceTree = ""; }; - 4CC6A9D72CAB688500989CEF /* take.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = take.h; sourceTree = ""; }; - 4CC6A9D82CAB688500989CEF /* take.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = take.c; sourceTree = ""; }; - 4CC6A9E12CAB688500989CEF /* str.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = str.h; sourceTree = ""; }; - 4CC6A9E22CAB688500989CEF /* str.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = str.c; sourceTree = ""; }; - 4CC6A9E62CAB688500989CEF /* tal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tal.h; sourceTree = ""; }; - 4CC6A9E72CAB688500989CEF /* tal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tal.c; sourceTree = ""; }; - 4CC6A9EB2CAB688500989CEF /* typesafe_cb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = typesafe_cb.h; sourceTree = ""; }; - 4CC6A9EF2CAB688500989CEF /* utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf8.h; sourceTree = ""; }; - 4CC6A9F02CAB688500989CEF /* utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utf8.c; sourceTree = ""; }; 4CC7AAE6297EFA7B00430951 /* Zap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Zap.swift; sourceTree = ""; }; 4CC7AAEA297F0AEC00430951 /* BuilderEventView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuilderEventView.swift; sourceTree = ""; }; 4CC7AAEC297F0B9E00430951 /* Highlight.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Highlight.swift; sourceTree = ""; }; @@ -2601,60 +2392,6 @@ 4CF0ABF52985CD5500D66079 /* UserSearch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSearch.swift; sourceTree = ""; }; 4CF38C872A9442DC00BE01B6 /* UserStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserStatusView.swift; sourceTree = ""; }; 4CF47FDA2B631BA500F2B2C0 /* damus-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "damus-Bridging-Header.h"; sourceTree = ""; }; - 4CF47FDD2B631C0100F2B2C0 /* lmdb_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lmdb_util.h; sourceTree = ""; }; - 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nostrdb.c; sourceTree = ""; }; - 4CF47FDF2B631C0100F2B2C0 /* block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block.c; sourceTree = ""; }; - 4CF47FE02B631C0100F2B2C0 /* str_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = str_block.h; sourceTree = ""; }; - 4CF47FE22B631C0100F2B2C0 /* threadpool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = threadpool.h; sourceTree = ""; }; - 4CF47FE32B631C0100F2B2C0 /* typedefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typedefs.h; sourceTree = ""; }; - 4CF47FE42B631C0100F2B2C0 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; - 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nostr_bech32.c; sourceTree = ""; }; - 4CF47FE72B631C0100F2B2C0 /* jsmn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jsmn.h; sourceTree = ""; }; - 4CF47FE82B631C0100F2B2C0 /* memchr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memchr.h; sourceTree = ""; }; - 4CF47FEA2B631C0100F2B2C0 /* invoice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = invoice.h; sourceTree = ""; }; - 4CF47FEB2B631C0100F2B2C0 /* cursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cursor.h; sourceTree = ""; }; - 4CF47FEC2B631C0100F2B2C0 /* nostrdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nostrdb.h; sourceTree = ""; }; - 4CF47FED2B631C0100F2B2C0 /* hex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hex.h; sourceTree = ""; }; - 4CF47FEE2B631C0100F2B2C0 /* io.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = io.h; sourceTree = ""; }; - 4CF47FF02B631C0100F2B2C0 /* nostr_bech32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nostr_bech32.h; sourceTree = ""; }; - 4CF47FF12B631C0100F2B2C0 /* cpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = ""; }; - 4CF47FF22B631C0100F2B2C0 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; - 4CF47FF32B631C0100F2B2C0 /* print_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = print_util.h; sourceTree = ""; }; - 4CF47FF42B631C0100F2B2C0 /* block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block.h; sourceTree = ""; }; - 4CF47FF62B631C0100F2B2C0 /* content_parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = content_parser.c; sourceTree = ""; }; - 4CF47FFA2B631C0100F2B2C0 /* ndb_profile.rs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ndb_profile.rs; sourceTree = ""; }; - 4CF47FFB2B631C0100F2B2C0 /* ndb_meta.rs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ndb_meta.rs; sourceTree = ""; }; - 4CF47FFD2B631C0100F2B2C0 /* NdbMeta.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NdbMeta.swift; sourceTree = ""; }; - 4CF47FFE2B631C0100F2B2C0 /* NdbProfile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NdbProfile.swift; sourceTree = ""; }; - 4CF480002B631C0100F2B2C0 /* profile_json_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profile_json_parser.h; sourceTree = ""; }; - 4CF480012B631C0100F2B2C0 /* profile_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profile_reader.h; sourceTree = ""; }; - 4CF480022B631C0100F2B2C0 /* meta_json_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = meta_json_parser.h; sourceTree = ""; }; - 4CF480032B631C0100F2B2C0 /* profile_builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profile_builder.h; sourceTree = ""; }; - 4CF480042B631C0100F2B2C0 /* meta_builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = meta_builder.h; sourceTree = ""; }; - 4CF480052B631C0100F2B2C0 /* profile_verifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profile_verifier.h; sourceTree = ""; }; - 4CF480072B631C0100F2B2C0 /* meta_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = meta_reader.h; sourceTree = ""; }; - 4CF480082B631C0100F2B2C0 /* flatbuffers_common_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flatbuffers_common_reader.h; sourceTree = ""; }; - 4CF480092B631C0100F2B2C0 /* meta_verifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = meta_verifier.h; sourceTree = ""; }; - 4CF4800A2B631C0100F2B2C0 /* flatbuffers_common_builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flatbuffers_common_builder.h; sourceTree = ""; }; - 4CF4800C2B631C0100F2B2C0 /* amount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amount.h; sourceTree = ""; }; - 4CF4800E2B631C0100F2B2C0 /* error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; - 4CF480102B631C0100F2B2C0 /* bolt11.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bolt11.c; sourceTree = ""; }; - 4CF480132B631C0100F2B2C0 /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; - 4CF480142B631C0100F2B2C0 /* bech32_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bech32_util.h; sourceTree = ""; }; - 4CF480172B631C0100F2B2C0 /* overflows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = overflows.h; sourceTree = ""; }; - 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hash_u5.c; sourceTree = ""; }; - 4CF4801B2B631C0100F2B2C0 /* node_id.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = node_id.h; sourceTree = ""; }; - 4CF4801E2B631C0100F2B2C0 /* bech32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bech32.c; sourceTree = ""; }; - 4CF480222B631C0100F2B2C0 /* bolt11.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bolt11.h; sourceTree = ""; }; - 4CF480252B631C0100F2B2C0 /* amount.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amount.c; sourceTree = ""; }; - 4CF480262B631C0100F2B2C0 /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; - 4CF480282B631C0100F2B2C0 /* bech32_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bech32_util.c; sourceTree = ""; }; - 4CF4802B2B631C0100F2B2C0 /* hash_u5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash_u5.h; sourceTree = ""; }; - 4CF480302B631C0100F2B2C0 /* bech32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bech32.h; sourceTree = ""; }; - 4CF480342B631C0100F2B2C0 /* node_id.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = node_id.c; sourceTree = ""; }; - 4CF480352B631C0100F2B2C0 /* protected_queue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protected_queue.h; sourceTree = ""; }; - 4CF480362B631C0100F2B2C0 /* random.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = random.h; sourceTree = ""; }; - 4CF480372B631C0100F2B2C0 /* invoice.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = invoice.c; sourceTree = ""; }; 4CF480532B631C4F00F2B2C0 /* wasm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wasm.c; sourceTree = ""; }; 4CF480542B631C4F00F2B2C0 /* wasm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wasm.h; sourceTree = ""; }; 4CF480582B633F3800F2B2C0 /* NdbBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NdbBlock.swift; sourceTree = ""; }; @@ -2975,6 +2712,7 @@ D7C48C0B2D12DE0C00A3BACF /* SwiftyCrop in Frameworks */, D78DB8592C1CE9CA00F0AB12 /* SwipeActions in Frameworks */, 4C649881286E0EE300EAE2B3 /* secp256k1 in Frameworks */, + 4C27C9322A64766F007DBC75 /* MarkdownUI in Frameworks */, D7E5B2DB2EA080BE00CF47AC /* Negentropy in Frameworks */, ); @@ -3010,6 +2748,7 @@ 82D6FC882CD9A4DE00C925F4 /* EmojiPicker in Frameworks */, 82D6FC842CD9A48500C925F4 /* Kingfisher in Frameworks */, 82D6FC812CD99FC500C925F4 /* secp256k1 in Frameworks */, + D7E5B2E32EA0A69900CF47AC /* Negentropy in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3027,6 +2766,7 @@ D7E5B2E12EA0A69200CF47AC /* Negentropy in Frameworks */, D7C48C0F2D12E35600A3BACF /* SwiftyCrop in Frameworks */, D703D7492C6709B100A400EA /* secp256k1 in Frameworks */, + D70D909C2CDED7B200CD0534 /* CodeScanner in Frameworks */, D73E5F9B2C6AA8B0007EB227 /* Kingfisher in Frameworks */, ); @@ -3038,6 +2778,7 @@ files = ( 4C5726BA2D72C6FA00E7FF82 /* Kingfisher in Frameworks */, D789D1202AFEFBF20083A7AB /* secp256k1 in Frameworks */, + D7EDED312B1290B80018B19C /* MarkdownUI in Frameworks */, D7DB1FEA2D5A9F5A00CF06DA /* CryptoSwift in Frameworks */, D7E5B2DF2EA0A68600CF47AC /* Negentropy in Frameworks */, @@ -3047,6 +2788,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 12C11D80638215BAB362E851 /* NIP17 */ = { + isa = PBXGroup; + children = ( + 171FF9F8F1CF2BD23C8A489F /* NIP17.swift */, + ); + name = NIP17; + path = NIP17; + sourceTree = ""; + }; 3169CAE4294E699400EE4006 /* Empty Views */ = { isa = PBXGroup; children = ( @@ -3173,136 +2923,6 @@ path = NIP10; sourceTree = ""; }; - 4C47928D2A9939BD00489948 /* flatcc */ = { - isa = PBXGroup; - children = ( - 4C47928E2A9939BD00489948 /* flatcc.h */, - 4C47928F2A9939BD00489948 /* flatcc_version.h */, - 4C4792902A9939BD00489948 /* flatcc_emitter.h */, - 4C4792912A9939BD00489948 /* flatcc_alloc.h */, - 4C4792922A9939BD00489948 /* flatcc_json_printer.h */, - 4C4792932A9939BD00489948 /* CMakeLists.txt */, - 4C4792942A9939BD00489948 /* builder.c */, - 4C4792952A9939BD00489948 /* flatcc_verifier.h */, - 4C4792962A9939BD00489948 /* flatcc_refmap.h */, - 4C4792972A9939BD00489948 /* flatcc_unaligned.h */, - 4C4792982A9939BD00489948 /* portable */, - 4C4792C02A9939BD00489948 /* flatcc_endian.h */, - 4C4792C12A9939BD00489948 /* flatcc_iov.h */, - 4C4792C22A9939BD00489948 /* flatcc_rtconfig.h */, - 4C4792C32A9939BD00489948 /* flatcc_accessors.h */, - 4C4792C42A9939BD00489948 /* flatcc_epilogue.h */, - 4C4792C52A9939BD00489948 /* flatcc_identifier.h */, - 4C4792C62A9939BD00489948 /* flatcc_prologue.h */, - 4C4792C72A9939BD00489948 /* flatcc_builder.h */, - 4C4792C82A9939BD00489948 /* json_parser.c */, - 4C4792C92A9939BD00489948 /* support */, - 4C4792CF2A9939BD00489948 /* emitter.c */, - 4C4792D02A9939BD00489948 /* flatcc_json_parser.h */, - 4C4792D12A9939BD00489948 /* refmap.c */, - 4C4792D22A9939BD00489948 /* flatcc_flatbuffers.h */, - 4C4792D32A9939BD00489948 /* flatcc_portable.h */, - 4C4792D42A9939BD00489948 /* verifier.c */, - 4C4792D52A9939BD00489948 /* flatcc_types.h */, - 4C4792D62A9939BD00489948 /* json_printer.c */, - 4C4792D72A9939BD00489948 /* flatcc_assert.h */, - 4C4792D82A9939BD00489948 /* reflection */, - ); - path = flatcc; - sourceTree = ""; - }; - 4C4792982A9939BD00489948 /* portable */ = { - isa = PBXGroup; - children = ( - 4C4792992A9939BD00489948 /* grisu3_print.h */, - 4C47929A2A9939BD00489948 /* pprintfp.h */, - 4C47929B2A9939BD00489948 /* pbase64.h */, - 4C47929C2A9939BD00489948 /* punaligned.h */, - 4C47929D2A9939BD00489948 /* LICENSE */, - 4C47929E2A9939BD00489948 /* pdiagnostic.h */, - 4C47929F2A9939BD00489948 /* pinttypes.h */, - 4C4792A02A9939BD00489948 /* pinline.h */, - 4C4792A12A9939BD00489948 /* pprintint.h */, - 4C4792A22A9939BD00489948 /* pdiagnostic_pop.h */, - 4C4792A32A9939BD00489948 /* include */, - 4C4792AC2A9939BD00489948 /* pversion.h */, - 4C4792AD2A9939BD00489948 /* pstdalign.h */, - 4C4792AE2A9939BD00489948 /* pdiagnostic_push.h */, - 4C4792AF2A9939BD00489948 /* pendian_detect.h */, - 4C4792B02A9939BD00489948 /* paligned_alloc.h */, - 4C4792B12A9939BD00489948 /* pendian.h */, - 4C4792B22A9939BD00489948 /* pstatic_assert.h */, - 4C4792B32A9939BD00489948 /* pwarnings.h */, - 4C4792B42A9939BD00489948 /* pparsefp.h */, - 4C4792B52A9939BD00489948 /* README.md */, - 4C4792B62A9939BD00489948 /* portable_basic.h */, - 4C4792B72A9939BD00489948 /* portable.h */, - 4C4792B82A9939BD00489948 /* grisu3_math.h */, - 4C4792B92A9939BD00489948 /* pattributes.h */, - 4C4792BA2A9939BD00489948 /* pstdint.h */, - 4C4792BB2A9939BD00489948 /* pstdbool.h */, - 4C4792BC2A9939BD00489948 /* pcrt.h */, - 4C4792BD2A9939BD00489948 /* pstatic_assert_scope.h */, - 4C4792BE2A9939BD00489948 /* grisu3_parse.h */, - 4C4792BF2A9939BD00489948 /* pparseint.h */, - ); - path = portable; - sourceTree = ""; - }; - 4C4792A32A9939BD00489948 /* include */ = { - isa = PBXGroup; - children = ( - 4C4792A42A9939BD00489948 /* std */, - 4C4792A92A9939BD00489948 /* README */, - 4C4792AA2A9939BD00489948 /* linux */, - ); - path = include; - sourceTree = ""; - }; - 4C4792A42A9939BD00489948 /* std */ = { - isa = PBXGroup; - children = ( - 4C4792A52A9939BD00489948 /* stdalign.h */, - 4C4792A62A9939BD00489948 /* inttypes.h */, - 4C4792A72A9939BD00489948 /* stdbool.h */, - 4C4792A82A9939BD00489948 /* stdint.h */, - ); - path = std; - sourceTree = ""; - }; - 4C4792AA2A9939BD00489948 /* linux */ = { - isa = PBXGroup; - children = ( - 4C4792AB2A9939BD00489948 /* endian.h */, - ); - path = linux; - sourceTree = ""; - }; - 4C4792C92A9939BD00489948 /* support */ = { - isa = PBXGroup; - children = ( - 4C4792CA2A9939BD00489948 /* README */, - 4C4792CB2A9939BD00489948 /* readfile.h */, - 4C4792CC2A9939BD00489948 /* cdump.h */, - 4C4792CD2A9939BD00489948 /* elapsed.h */, - 4C4792CE2A9939BD00489948 /* hexdump.h */, - ); - path = support; - sourceTree = ""; - }; - 4C4792D82A9939BD00489948 /* reflection */ = { - isa = PBXGroup; - children = ( - 4C4792D92A9939BD00489948 /* README */, - 4C4792DA2A9939BD00489948 /* reflection_reader.h */, - 4C4792DB2A9939BD00489948 /* flatbuffers_common_reader.h */, - 4C4792DC2A9939BD00489948 /* reflection_builder.h */, - 4C4792DD2A9939BD00489948 /* reflection_verifier.h */, - 4C4792DE2A9939BD00489948 /* flatbuffers_common_builder.h */, - ); - path = reflection; - sourceTree = ""; - }; 4C54AA0829A55416003E4487 /* Notifications */ = { isa = PBXGroup; children = ( @@ -3407,10 +3027,7 @@ D733F9E42D92C75C00317B11 /* UnownedNdbNote.swift */, D7F5630F2DEE71BB008509DE /* NdbFilter.swift */, D74DEC892DA0A19800E69FA6 /* Ndb+.swift */, - 4CC6A9F92CAB688500989CEF /* ccan */, - 4C15224A2B8D499F007CDC17 /* parser.h */, 4CF47FDC2B631C0100F2B2C0 /* src */, - 4C47928D2A9939BD00489948 /* flatcc */, 4CE9FBBB2A6B3D9C007E485C /* Test */, 4C9054882A6AED4700811EEC /* NdbTagIterator.swift */, 4C90548A2A6AEDEE00811EEC /* NdbNote.swift */, @@ -3419,19 +3036,13 @@ 4C478E242A9932C100489948 /* Ndb.swift */, 4CDD1AE12A6B3074001CD4DF /* NdbTagsIterator.swift */, 4C3DCC752A9FC2030091E592 /* NdbTxn.swift */, - 4C4793032A993DB900489948 /* midl.c */, - 4C4793002A993B9A00489948 /* mdb.c */, - 4C4793022A993D9300489948 /* midl.h */, - 4C4792FF2A993B9A00489948 /* lmdb.h */, - 4C78EFD82A707C4D007E8197 /* secp256k1_ecdh.h */, - 4C78EFD72A707C4D007E8197 /* secp256k1_schnorrsig.h */, - 4C78EFDA2A707C67007E8197 /* secp256k1_extrakeys.h */, - 4C78EFD92A707C4D007E8197 /* secp256k1.h */, D798D2272B085CDA00234419 /* NdbNote+.swift */, 4CF480582B633F3800F2B2C0 /* NdbBlock.swift */, + B7B68B6E8F76A701CEA774FC /* NdbProfile.swift */, + F4A373115E56DFC3F19EC8CD /* NdbMeta.swift */, D774A5CD2F4FBDEA006A4D64 /* NdbDatabase+UI.swift */, ); - path = nostrdb; + path = "damus/Nostrdb"; sourceTree = ""; }; 4C9B0DEC2A65A74000CBDA21 /* Util */ = { @@ -3554,231 +3165,6 @@ path = Ids; sourceTree = ""; }; - 4CC6A9802CAB688500989CEF /* alignof */ = { - isa = PBXGroup; - children = ( - 4CC6A97E2CAB688500989CEF /* alignof.h */, - ); - path = alignof; - sourceTree = ""; - }; - 4CC6A9842CAB688500989CEF /* array_size */ = { - isa = PBXGroup; - children = ( - 4CC6A9822CAB688500989CEF /* array_size.h */, - ); - path = array_size; - sourceTree = ""; - }; - 4CC6A9882CAB688500989CEF /* build_assert */ = { - isa = PBXGroup; - children = ( - 4CC6A9862CAB688500989CEF /* build_assert.h */, - ); - path = build_assert; - sourceTree = ""; - }; - 4CC6A98C2CAB688500989CEF /* check_type */ = { - isa = PBXGroup; - children = ( - 4CC6A98A2CAB688500989CEF /* check_type.h */, - ); - path = check_type; - sourceTree = ""; - }; - 4CC6A9902CAB688500989CEF /* compiler */ = { - isa = PBXGroup; - children = ( - 4CC6A98E2CAB688500989CEF /* compiler.h */, - ); - path = compiler; - sourceTree = ""; - }; - 4CC6A9942CAB688500989CEF /* container_of */ = { - isa = PBXGroup; - children = ( - 4CC6A9922CAB688500989CEF /* container_of.h */, - ); - path = container_of; - sourceTree = ""; - }; - 4CC6A9982CAB688500989CEF /* cppmagic */ = { - isa = PBXGroup; - children = ( - 4CC6A9962CAB688500989CEF /* cppmagic.h */, - ); - path = cppmagic; - sourceTree = ""; - }; - 4CC6A9A52CAB688500989CEF /* sha256 */ = { - isa = PBXGroup; - children = ( - 4CC6A9A32CAB688500989CEF /* sha256.h */, - 4CC6A9A42CAB688500989CEF /* sha256.c */, - ); - path = sha256; - sourceTree = ""; - }; - 4CC6A9A62CAB688500989CEF /* crypto */ = { - isa = PBXGroup; - children = ( - 4CC6A9A52CAB688500989CEF /* sha256 */, - ); - path = crypto; - sourceTree = ""; - }; - 4CC6A9AA2CAB688500989CEF /* endian */ = { - isa = PBXGroup; - children = ( - 4CC6A9A82CAB688500989CEF /* endian.h */, - ); - path = endian; - sourceTree = ""; - }; - 4CC6A9B62CAB688500989CEF /* htable */ = { - isa = PBXGroup; - children = ( - 4CC6A9B22CAB688500989CEF /* htable.h */, - 4CC6A9B32CAB688500989CEF /* htable.c */, - 4CC6A9B42CAB688500989CEF /* htable_type.h */, - ); - path = htable; - sourceTree = ""; - }; - 4CC6A9BB2CAB688500989CEF /* likely */ = { - isa = PBXGroup; - children = ( - 4CC6A9B92CAB688500989CEF /* likely.h */, - 4CC6A9BA2CAB688500989CEF /* likely.c */, - ); - path = likely; - sourceTree = ""; - }; - 4CC6A9C02CAB688500989CEF /* list */ = { - isa = PBXGroup; - children = ( - 4CC6A9BE2CAB688500989CEF /* list.h */, - 4CC6A9BF2CAB688500989CEF /* list.c */, - ); - path = list; - sourceTree = ""; - }; - 4CC6A9C52CAB688500989CEF /* mem */ = { - isa = PBXGroup; - children = ( - 4CC6A9C32CAB688500989CEF /* mem.h */, - 4CC6A9C42CAB688500989CEF /* mem.c */, - ); - path = mem; - sourceTree = ""; - }; - 4CC6A9C92CAB688500989CEF /* short_types */ = { - isa = PBXGroup; - children = ( - 4CC6A9C82CAB688500989CEF /* short_types.h */, - ); - path = short_types; - sourceTree = ""; - }; - 4CC6A9D02CAB688500989CEF /* str */ = { - isa = PBXGroup; - children = ( - 4CC6A9CB2CAB688500989CEF /* debug.c */, - 4CC6A9CD2CAB688500989CEF /* str.h */, - 4CC6A9CE2CAB688500989CEF /* str.c */, - 4CC6A9CF2CAB688500989CEF /* str_debug.h */, - ); - path = str; - sourceTree = ""; - }; - 4CC6A9D42CAB688500989CEF /* structeq */ = { - isa = PBXGroup; - children = ( - 4CC6A9D32CAB688500989CEF /* structeq.h */, - ); - path = structeq; - sourceTree = ""; - }; - 4CC6A9D92CAB688500989CEF /* take */ = { - isa = PBXGroup; - children = ( - 4CC6A9D72CAB688500989CEF /* take.h */, - 4CC6A9D82CAB688500989CEF /* take.c */, - ); - path = take; - sourceTree = ""; - }; - 4CC6A9E32CAB688500989CEF /* str */ = { - isa = PBXGroup; - children = ( - 4CC6A9E12CAB688500989CEF /* str.h */, - 4CC6A9E22CAB688500989CEF /* str.c */, - ); - path = str; - sourceTree = ""; - }; - 4CC6A9E82CAB688500989CEF /* tal */ = { - isa = PBXGroup; - children = ( - 4CC6A9E32CAB688500989CEF /* str */, - 4CC6A9E62CAB688500989CEF /* tal.h */, - 4CC6A9E72CAB688500989CEF /* tal.c */, - ); - path = tal; - sourceTree = ""; - }; - 4CC6A9EC2CAB688500989CEF /* typesafe_cb */ = { - isa = PBXGroup; - children = ( - 4CC6A9EB2CAB688500989CEF /* typesafe_cb.h */, - ); - path = typesafe_cb; - sourceTree = ""; - }; - 4CC6A9F12CAB688500989CEF /* utf8 */ = { - isa = PBXGroup; - children = ( - 4CC6A9EF2CAB688500989CEF /* utf8.h */, - 4CC6A9F02CAB688500989CEF /* utf8.c */, - ); - path = utf8; - sourceTree = ""; - }; - 4CC6A9F22CAB688500989CEF /* ccan */ = { - isa = PBXGroup; - children = ( - 4CC6A9802CAB688500989CEF /* alignof */, - 4CC6A9842CAB688500989CEF /* array_size */, - 4CC6A9882CAB688500989CEF /* build_assert */, - 4CC6A98C2CAB688500989CEF /* check_type */, - 4CC6A9902CAB688500989CEF /* compiler */, - 4CC6A9942CAB688500989CEF /* container_of */, - 4CC6A9982CAB688500989CEF /* cppmagic */, - 4CC6A9A62CAB688500989CEF /* crypto */, - 4CC6A9AA2CAB688500989CEF /* endian */, - 4CC6A9B62CAB688500989CEF /* htable */, - 4CC6A9BB2CAB688500989CEF /* likely */, - 4CC6A9C02CAB688500989CEF /* list */, - 4CC6A9C52CAB688500989CEF /* mem */, - 4CC6A9C92CAB688500989CEF /* short_types */, - 4CC6A9D02CAB688500989CEF /* str */, - 4CC6A9D42CAB688500989CEF /* structeq */, - 4CC6A9D92CAB688500989CEF /* take */, - 4CC6A9E82CAB688500989CEF /* tal */, - 4CC6A9EC2CAB688500989CEF /* typesafe_cb */, - 4CC6A9F12CAB688500989CEF /* utf8 */, - ); - path = ccan; - sourceTree = ""; - }; - 4CC6A9F92CAB688500989CEF /* ccan */ = { - isa = PBXGroup; - children = ( - 4CC6A9F22CAB688500989CEF /* ccan */, - ); - path = ccan; - sourceTree = ""; - }; 4CC7AAEE297F11B300430951 /* Events */ = { isa = PBXGroup; children = ( @@ -3975,6 +3361,7 @@ 64D0A2B0F048CC8D494945E6 /* RepostNotificationTests.swift */, 4C0ED07E2D7A1E260020D8A2 /* Benchmarking.swift */, 3A92C1012DE17ACA00CEEBAC /* NIP05DomainTimelineHeaderViewTests.swift */, + 1C3DFE64B6C64EE965623103 /* NIP17Tests.swift */, C0AE7EE3216D7983A50BE2D9 /* LoadableNostrEventViewModelTests.swift */, ); path = damusTests; @@ -4067,103 +3454,10 @@ 4CF47FDC2B631C0100F2B2C0 /* src */ = { isa = PBXGroup; children = ( - 4CF47FDD2B631C0100F2B2C0 /* lmdb_util.h */, - 4CF47FDE2B631C0100F2B2C0 /* nostrdb.c */, - 4CF47FDF2B631C0100F2B2C0 /* block.c */, - 4CF47FE02B631C0100F2B2C0 /* str_block.h */, - 4CF47FE22B631C0100F2B2C0 /* threadpool.h */, - 4CF47FE32B631C0100F2B2C0 /* typedefs.h */, - 4CF47FE42B631C0100F2B2C0 /* config.h */, - 4CF47FE52B631C0100F2B2C0 /* nostr_bech32.c */, - 4CF47FE72B631C0100F2B2C0 /* jsmn.h */, - 4CF47FE82B631C0100F2B2C0 /* memchr.h */, - 4CF47FEA2B631C0100F2B2C0 /* invoice.h */, - 4CF47FEB2B631C0100F2B2C0 /* cursor.h */, - 4CF47FEC2B631C0100F2B2C0 /* nostrdb.h */, - 4CF47FED2B631C0100F2B2C0 /* hex.h */, - 4CF47FEE2B631C0100F2B2C0 /* io.h */, - 4CF47FF02B631C0100F2B2C0 /* nostr_bech32.h */, - 4CF47FF12B631C0100F2B2C0 /* cpu.h */, - 4CF47FF22B631C0100F2B2C0 /* util.h */, - 4CF47FF32B631C0100F2B2C0 /* print_util.h */, - 4CF47FF42B631C0100F2B2C0 /* block.h */, - 4CF47FF62B631C0100F2B2C0 /* content_parser.c */, - 4CF47FF72B631C0100F2B2C0 /* bindings */, - 4CF4800B2B631C0100F2B2C0 /* bolt11 */, - 4CF480352B631C0100F2B2C0 /* protected_queue.h */, - 4CF480362B631C0100F2B2C0 /* random.h */, - 4CF480372B631C0100F2B2C0 /* invoice.c */, - ); - path = src; - sourceTree = ""; - }; - 4CF47FF72B631C0100F2B2C0 /* bindings */ = { - isa = PBXGroup; - children = ( - 4CF47FF82B631C0100F2B2C0 /* rust */, - 4CF47FFC2B631C0100F2B2C0 /* swift */, - 4CF47FFF2B631C0100F2B2C0 /* c */, - ); - path = bindings; - sourceTree = ""; - }; - 4CF47FF82B631C0100F2B2C0 /* rust */ = { - isa = PBXGroup; - children = ( - 4CF47FFA2B631C0100F2B2C0 /* ndb_profile.rs */, - 4CF47FFB2B631C0100F2B2C0 /* ndb_meta.rs */, - ); - path = rust; - sourceTree = ""; - }; - 4CF47FFC2B631C0100F2B2C0 /* swift */ = { - isa = PBXGroup; - children = ( - 4CF47FFD2B631C0100F2B2C0 /* NdbMeta.swift */, - 4CF47FFE2B631C0100F2B2C0 /* NdbProfile.swift */, - ); - path = swift; - sourceTree = ""; - }; - 4CF47FFF2B631C0100F2B2C0 /* c */ = { - isa = PBXGroup; - children = ( - 4CF480002B631C0100F2B2C0 /* profile_json_parser.h */, - 4CF480012B631C0100F2B2C0 /* profile_reader.h */, - 4CF480022B631C0100F2B2C0 /* meta_json_parser.h */, - 4CF480032B631C0100F2B2C0 /* profile_builder.h */, - 4CF480042B631C0100F2B2C0 /* meta_builder.h */, - 4CF480052B631C0100F2B2C0 /* profile_verifier.h */, - 4CF480072B631C0100F2B2C0 /* meta_reader.h */, - 4CF480082B631C0100F2B2C0 /* flatbuffers_common_reader.h */, - 4CF480092B631C0100F2B2C0 /* meta_verifier.h */, - 4CF4800A2B631C0100F2B2C0 /* flatbuffers_common_builder.h */, - ); - path = c; - sourceTree = ""; - }; - 4CF4800B2B631C0100F2B2C0 /* bolt11 */ = { - isa = PBXGroup; - children = ( - 4CF4800C2B631C0100F2B2C0 /* amount.h */, - 4CF4800E2B631C0100F2B2C0 /* error.h */, - 4CF480102B631C0100F2B2C0 /* bolt11.c */, - 4CF480132B631C0100F2B2C0 /* debug.h */, - 4CF480142B631C0100F2B2C0 /* bech32_util.h */, - 4CF480172B631C0100F2B2C0 /* overflows.h */, - 4CF4801A2B631C0100F2B2C0 /* hash_u5.c */, - 4CF4801B2B631C0100F2B2C0 /* node_id.h */, - 4CF4801E2B631C0100F2B2C0 /* bech32.c */, - 4CF480222B631C0100F2B2C0 /* bolt11.h */, - 4CF480252B631C0100F2B2C0 /* amount.c */, - 4CF480262B631C0100F2B2C0 /* error.c */, - 4CF480282B631C0100F2B2C0 /* bech32_util.c */, - 4CF4802B2B631C0100F2B2C0 /* hash_u5.h */, - 4CF480302B631C0100F2B2C0 /* bech32.h */, - 4CF480342B631C0100F2B2C0 /* node_id.c */, + 1361F9433ED717C010790C65 /* giftwrap.c */, ); - path = bolt11; - sourceTree = ""; + path = nostrdb/src; + sourceTree = SOURCE_ROOT; }; 4CFF8F5729C9FD07008DB934 /* Purple */ = { isa = PBXGroup; @@ -4215,6 +3509,7 @@ D71527FD2E0A3D5800C893D6 /* NIP51 */, D7DB93082D69478400DA1EE5 /* NIP65 */, 5C78A7772E22FAA700CF177D /* NIP98 */, + 12C11D80638215BAB362E851 /* NIP17 */, ); path = NIPs; sourceTree = ""; @@ -4460,6 +3755,7 @@ 4CB55EF4295E679D007FD187 /* UserRelaysView.swift */, 643EA5C7296B764E005081BB /* RelayFilterView.swift */, 4CE4F9E228528C5200C00DD9 /* AddRelayView.swift */, + 3BA4360989775E4F20F83611 /* DMRelayListView.swift */, ); path = Views; sourceTree = ""; @@ -5486,6 +4782,7 @@ ); name = damus; packageProductDependencies = ( + AAAA00002F50000000000002 /* Nostrdb */, 4C649880286E0EE300EAE2B3 /* secp256k1 */, 4C06670328FC7EC500038D2A /* Kingfisher */, 4C27C9312A64766F007DBC75 /* MarkdownUI */, @@ -5556,6 +4853,7 @@ ); name = ShareExtension; packageProductDependencies = ( + AAAA00002F50000000000003 /* Nostrdb */, 82D6FC802CD99FC500C925F4 /* secp256k1 */, 82D6FC832CD9A48500C925F4 /* Kingfisher */, 82D6FC852CD9A4A600C925F4 /* MarkdownUI */, @@ -5587,6 +4885,7 @@ ); name = HighlighterActionExtension; packageProductDependencies = ( + AAAA00002F50000000000004 /* Nostrdb */, D703D7482C6709B100A400EA /* secp256k1 */, D703D7AE2C670FB700A400EA /* MarkdownUI */, D73E5F752C6A997E007EB227 /* EmojiPicker */, @@ -5617,6 +4916,7 @@ ); name = DamusNotificationService; packageProductDependencies = ( + AAAA00002F50000000000005 /* Nostrdb */, D789D11F2AFEFBF20083A7AB /* secp256k1 */, D7EDED302B1290B80018B19C /* MarkdownUI */, D7DB1FE92D5A9F5A00CF06DA /* CryptoSwift */, @@ -5700,7 +5000,8 @@ ); mainGroup = 4CE6DEDA27F7A08100C66700; packageReferences = ( - 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1" */, + AAAA00002F50000000000001 /* XCLocalSwiftPackageReference "nostrdb" */, + 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1.swift" */, 4C06670228FC7EC500038D2A /* XCRemoteSwiftPackageReference "Kingfisher" */, 4CCF9AB02A1FE80B00E03CFB /* XCRemoteSwiftPackageReference "GSPlayer" */, 4C27C9302A64766F007DBC75 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */, @@ -5713,6 +5014,7 @@ 3ACF94362DA9A52F00971A4E /* XCRemoteSwiftPackageReference "FaviconFinder" */, D7E5B2D92EA080BE00CF47AC /* XCRemoteSwiftPackageReference "negentropy-swift" */, D74723EA2F15B0C3002DA12A /* XCRemoteSwiftPackageReference "nostr-sdk-swift" */, + ); productRefGroup = 4CE6DEE427F7A08100C66700 /* Products */; projectDirPath = ""; @@ -5743,8 +5045,6 @@ 4CE6DEEB27F7A08200C66700 /* Assets.xcassets in Resources */, 4C198DF129F88C6B004C165C /* License.txt in Resources */, 4C198DF029F88C6B004C165C /* Readme.md in Resources */, - 4CF4803F2B631C0100F2B2C0 /* ndb_profile.rs in Resources */, - 4CF480402B631C0100F2B2C0 /* ndb_meta.rs in Resources */, 3A4325A82961E11400BFCD9D /* Localizable.stringsdict in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -5827,21 +5127,16 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 88376E8680AC944DA766BDCB /* NdbProfile.swift in Sources */, + A4156FF015948D02363885D0 /* NdbMeta.swift in Sources */, 4C3DCC762A9FE9EC0091E592 /* NdbTxn.swift in Sources */, - 4CEF958D2A9CE650000F901B /* verifier.c in Sources */, D73BDB0E2D6FF5F600D69970 /* NostrNetworkManager.swift in Sources */, 5C8F97262EB460CA009399B1 /* LiveStreamBanner.swift in Sources */, 4C32B9332A99845B00DC3548 /* Ndb.swift in Sources */, D7ADD3E22B538E3500F104C4 /* DamusPurpleVerifyNpubView.swift in Sources */, - 4C4793082A993E8900489948 /* refmap.c in Sources */, 5C8F972D2EB46116009399B1 /* LiveStreamStatus.swift in Sources */, - 4C4793072A993E6200489948 /* emitter.c in Sources */, - 4C4793062A993E5300489948 /* json_parser.c in Sources */, - 4C4793052A993E3200489948 /* builder.c in Sources */, D7CB5D5F2B11770C00AD4105 /* FollowState.swift in Sources */, - 4C4793042A993DC000489948 /* midl.c in Sources */, 0E8A4BB72AE4359200065E81 /* NostrFilter+Hashable.swift in Sources */, - 4C4793012A993CDA00489948 /* mdb.c in Sources */, ADFE73552AD4793100EC7326 /* QRScanNSECView.swift in Sources */, 4C3AC79D2833036D00E1F516 /* FollowingView.swift in Sources */, 5CF72FC229B9142F00124A13 /* ShareAction.swift in Sources */, @@ -5880,18 +5175,7 @@ 4C75EFB728049D990006080F /* RelayPool.swift in Sources */, F757933A29D7AECD007DEAC1 /* MediaPicker.swift in Sources */, D5C1AFBF2E5DF7E60092F72F /* ContactCardManager.swift in Sources */, - 4CC6AA752CAB688500989CEF /* str.c in Sources */, - 4CC6AA762CAB688500989CEF /* tal.c in Sources */, - 4CC6AA782CAB688500989CEF /* mem.c in Sources */, - 4CC6AA792CAB688500989CEF /* sha256.c in Sources */, - 4CC6AA7B2CAB688500989CEF /* likely.c in Sources */, - 4CC6AA7F2CAB688500989CEF /* htable.c in Sources */, D75154C02EC5910A00BF2CB2 /* NdbUseLock.swift in Sources */, - 4CC6AA862CAB688500989CEF /* list.c in Sources */, - 4CC6AA872CAB688500989CEF /* utf8.c in Sources */, - 4CC6AA892CAB688500989CEF /* debug.c in Sources */, - 4CC6AA8A2CAB688500989CEF /* str.c in Sources */, - 4CC6AA8D2CAB688500989CEF /* take.c in Sources */, 4CF0ABEE29844B5500D66079 /* AnyEncodable.swift in Sources */, B57B4C662B312C3700A232C0 /* NostrAuth.swift in Sources */, D7DB930B2D69486700DA1EE5 /* NIP65.swift in Sources */, @@ -5937,7 +5221,6 @@ 5C0567552C8B60C20073F23A /* OffsetExtension.swift in Sources */, 4CB883B6297730E400DC99E7 /* LNUrls.swift in Sources */, 4C7FF7D52823313F009601DB /* Mentions.swift in Sources */, - 4CF4803D2B631C0100F2B2C0 /* content_parser.c in Sources */, 4C32B94D2A9AD44700DC3548 /* Offset.swift in Sources */, 4C633350283D40E500B1C9C3 /* HomeModel.swift in Sources */, 4C987B57283FD07F0042CE38 /* FollowersModel.swift in Sources */, @@ -5947,7 +5230,6 @@ 3AB72AB9298ECF30004BB58C /* Translator.swift in Sources */, 4C363A9028247A1D006E126D /* NostrLink.swift in Sources */, 4C3D52B6298DB4E6001C5831 /* ZapEvent.swift in Sources */, - 4CF4804D2B631C0100F2B2C0 /* amount.c in Sources */, 647D9A8D2968520300A295DE /* SideMenuView.swift in Sources */, 5CFDE6EF2EF4F7B2004E8661 /* GIFPickerView.swift in Sources */, D7AAD0012E0387B800FB7699 /* LnurlAmountView.swift in Sources */, @@ -6022,7 +5304,6 @@ 4C45E5022BED4D000025A428 /* ThreadReply.swift in Sources */, D74AAFD42B155ECB006CF0F4 /* Zaps+.swift in Sources */, 4C75EFB128049D510006080F /* NostrResponse.swift in Sources */, - 4CF480472B631C0100F2B2C0 /* hash_u5.c in Sources */, 4C7D09592A05BEAD00943473 /* KeyboardVisible.swift in Sources */, 4CEE2AF7280B2DEA00AB5EEF /* ProfileName.swift in Sources */, 4CC7AAEB297F0AEC00430951 /* BuilderEventView.swift in Sources */, @@ -6044,7 +5325,6 @@ D71AC4CC2BA8E3480076268E /* VisibilityTracker.swift in Sources */, 4CE8794829941DA700F758CC /* RelayFilters.swift in Sources */, 4CEE2B02280B39E800AB5EEF /* EventActionBar.swift in Sources */, - 4CF480522B631C0100F2B2C0 /* invoice.c in Sources */, 4C3BEFE0281DE1ED00B3DE84 /* DamusState.swift in Sources */, D7DB93062D66A44100DA1EE5 /* Undistractor.swift in Sources */, D72E12782BEED22500F4F781 /* Array.swift in Sources */, @@ -6054,7 +5334,6 @@ BA3759932ABCCEBA0018D73B /* CameraModel.swift in Sources */, D7FA46E72DBDAA7E002C9BB0 /* ImageCacheMigrations.swift in Sources */, D7100C5A2B76FD5100C59298 /* LogoView.swift in Sources */, - 4CF480442B631C0100F2B2C0 /* bolt11.c in Sources */, 4C0A3F8F280F640A000448DE /* ThreadModel.swift in Sources */, 4C3AC79F2833115300E1F516 /* FollowButtonView.swift in Sources */, 3A515C502DF4E100002D3B34 /* TrustedNetworkRepliesTip.swift in Sources */, @@ -6067,7 +5346,6 @@ 4CA352AA2A76BF3A003BB08B /* LocalNotificationNotify.swift in Sources */, D7315A2A2ACDF3B70036E30A /* DamusCacheManager.swift in Sources */, D7373BA82B68974500F7783D /* DamusPurpleNewUserOnboardingView.swift in Sources */, - 4CF4804E2B631C0100F2B2C0 /* error.c in Sources */, 4C7D09682A0AE9B200943473 /* NWCScannerView.swift in Sources */, D74E64152DC95CC7004C7892 /* HumanReadableErrors.swift in Sources */, D7CB5D452B116FE800AD4105 /* Contacts+.swift in Sources */, @@ -6082,7 +5360,6 @@ 5C8F97502EBD704A009399B1 /* LabsToggleView.swift in Sources */, BAB68BED29543FA3007BA466 /* SelectWalletView.swift in Sources */, 3169CAE6294E69C000EE4006 /* EmptyTimelineView.swift in Sources */, - 4CF4803A2B631C0100F2B2C0 /* nostr_bech32.c in Sources */, 4C32B9602A9AD44700DC3548 /* Struct.swift in Sources */, 4CC7AAF0297F11C700430951 /* SelectedEventView.swift in Sources */, 4CC7AAF8297F1CEE00430951 /* EventProfile.swift in Sources */, @@ -6143,7 +5420,6 @@ F71694F82A6983AF001F4053 /* GrayGradient.swift in Sources */, 4C1D4FB12A7958E60024F453 /* VersionInfo.swift in Sources */, D7FF94002AC7AC5300FD969D /* RelayURL.swift in Sources */, - 4CF480412B631C0100F2B2C0 /* NdbMeta.swift in Sources */, 4C64305C2A945AFF00B0C0E9 /* MusicController.swift in Sources */, 5053ACA72A56DF3B00851AE3 /* DeveloperSettingsView.swift in Sources */, F79C7FAD29D5E9620000F946 /* EditPictureControl.swift in Sources */, @@ -6162,7 +5438,6 @@ 3A515C562DF5371D002D3B34 /* TrustedNetworkButtonTipViewStyle.swift in Sources */, 5CC8529D2BD741CD0039FFC5 /* HighlightEvent.swift in Sources */, 4C75EFAF28049D350006080F /* NostrFilter.swift in Sources */, - 4CF480422B631C0100F2B2C0 /* NdbProfile.swift in Sources */, 4CA9276C2A2910D10098A105 /* ReplyPart.swift in Sources */, 5C8F97102EB45F7C009399B1 /* LiveChatHomeView.swift in Sources */, D7C6787E2B2D34CC00BCEAFB /* NIP98AuthenticatedRequest.swift in Sources */, @@ -6257,7 +5532,6 @@ D7CB5D5C2B1176B200AD4105 /* MediaUploader.swift in Sources */, 5C4FA7FD2DC29C3800CE658C /* FollowPackView.swift in Sources */, 4C1253562A76C8C60004F4B8 /* BroadcastNotify.swift in Sources */, - 4CF480392B631C0100F2B2C0 /* block.c in Sources */, 4C3BEFD42819DE8F00B3DE84 /* NostrKind.swift in Sources */, 5C8F973F2EB46197009399B1 /* LiveStreamPreview.swift in Sources */, B533694E2B66D791008A805E /* MutelistManager.swift in Sources */, @@ -6332,7 +5606,6 @@ E990020F2955F837003BBC5A /* EditMetadataView.swift in Sources */, 4CB8FC232A41ABA800763C51 /* AboutView.swift in Sources */, D74AAFCC2B155D07006CF0F4 /* MakeZapRequest.swift in Sources */, - 4CF480382B631C0100F2B2C0 /* nostrdb.c in Sources */, 5C513FBA297F72980072348F /* CustomPicker.swift in Sources */, 4C1253622A76D00B0004F4B8 /* PostNotify.swift in Sources */, 4CACA9D5280C31E100D9BBE8 /* ReplyView.swift in Sources */, @@ -6358,7 +5631,6 @@ 4CE879502996B2BD00F758CC /* RelayStatusView.swift in Sources */, 4CC7AAF4297F18B400430951 /* ReplyDescription.swift in Sources */, 4C75EFA427FA577B0006080F /* PostView.swift in Sources */, - 4CF4804A2B631C0100F2B2C0 /* bech32.c in Sources */, 4C30AC7229A5677A00E2BD5A /* NotificationsView.swift in Sources */, 4C1A9A2129DDD3E100516EAC /* KeySettingsView.swift in Sources */, D723C38E2AB8D83400065664 /* ContentFilters.swift in Sources */, @@ -6386,7 +5658,6 @@ 4C1A9A1F29DDD24B00516EAC /* AppearanceSettingsView.swift in Sources */, 3AA59D1D2999B0400061C48E /* DraftsModel.swift in Sources */, 3169CAED294FCCFC00EE4006 /* Constants.swift in Sources */, - 4CF4804F2B631C0100F2B2C0 /* bech32_util.c in Sources */, 4C9AA14A2A4587A6003F49FD /* NotificationStatusModel.swift in Sources */, D7100C5C2B77016700C59298 /* IAPProductStateView.swift in Sources */, 4CB9D4A72992D02B00A9A7E4 /* ProfileNameView.swift in Sources */, @@ -6399,6 +5670,8 @@ 4C9B0DF32A65C46800CBDA21 /* ProfileEditButton.swift in Sources */, 4C32B95F2A9AD44700DC3548 /* Enum.swift in Sources */, 4C2859622A12A7F0004746F7 /* GoldSupportGradient.swift in Sources */, + 43A7C4B7EFD83C35D749C4C1 /* NIP17.swift in Sources */, + FB063AA7677A20F389C6CC9A /* DMRelayListView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6470,6 +5743,7 @@ 4C684A552A7E91FE005E6031 /* LargeEventTests.swift in Sources */, E02B54182B4DFADA0077FF42 /* Bech32ObjectTests.swift in Sources */, 3A92C1022DE17ACA00CEEBAC /* NIP05DomainTimelineHeaderViewTests.swift in Sources */, + E8BF79671959B03A1F5FCE36 /* NIP17Tests.swift in Sources */, EBCC3486DE53D8DB2532B98E /* LoadableNostrEventViewModelTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6487,28 +5761,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 290F05EDB7338BC4B1ED117C /* NdbProfile.swift in Sources */, 5C4FA7FB2DC29C3800CE658C /* FollowPackView.swift in Sources */, - 4C3624722D5EA18E00DD066E /* amount.c in Sources */, - 4C3624712D5EA18300DD066E /* error.c in Sources */, 5CB645A92EAC01430018BD91 /* DamusLabsExperiments.swift in Sources */, - 4C3624702D5EA17700DD066E /* utf8.c in Sources */, - 4C36246F2D5EA16A00DD066E /* str.c in Sources */, - 4C36246E2D5EA10400DD066E /* hash_u5.c in Sources */, - 4C36246C2D5EA0E500DD066E /* bolt11.c in Sources */, D77135D52E7B766B00E7639F /* DataExtensions.swift in Sources */, - 4C36246B2D5EA0D700DD066E /* invoice.c in Sources */, - 4C36246A2D5EA0CB00DD066E /* content_parser.c in Sources */, - 4C3624692D5EA0C200DD066E /* list.c in Sources */, - 4C3624682D5EA0BC00DD066E /* nostr_bech32.c in Sources */, - 4C3624672D5EA0B100DD066E /* take.c in Sources */, - 4C3624662D5EA07000DD066E /* sha256.c in Sources */, - 4C3624652D5EA06400DD066E /* bech32.c in Sources */, - 4C3624642D5EA01600DD066E /* tal.c in Sources */, - 4C3624632D5EA01100DD066E /* block.c in Sources */, - 4C3624622D5EA00300DD066E /* nostrdb.c in Sources */, 4C3624612D5E9FFD00DD066E /* wasm.c in Sources */, 4C36245D2D5E9B4400DD066E /* NdbBlock.swift in Sources */, - 4C36245B2D5E9B2F00DD066E /* NdbProfile.swift in Sources */, D7F360262CEBBD8B009D34DA /* PresentFullScreenItemNotify.swift in Sources */, 82D6FA9A2CD9820500C925F4 /* ShareViewController.swift in Sources */, 82D6FAA92CD99F7900C925F4 /* FbConstants.swift in Sources */, @@ -6529,11 +5787,6 @@ 3A515C552DF5371D002D3B34 /* TrustedNetworkButtonTipViewStyle.swift in Sources */, 82D6FAB72CD99F7900C925F4 /* FlatBufferObject.swift in Sources */, 82D6FAB82CD99F7900C925F4 /* Enum.swift in Sources */, - 82D6FAB92CD99F7900C925F4 /* builder.c in Sources */, - 82D6FABA2CD99F7900C925F4 /* json_parser.c in Sources */, - 82D6FABB2CD99F7900C925F4 /* emitter.c in Sources */, - 82D6FABC2CD99F7900C925F4 /* refmap.c in Sources */, - 82D6FABD2CD99F7900C925F4 /* verifier.c in Sources */, D78F08112D7F78F900FC6C75 /* Response.swift in Sources */, 82D6FABF2CD99F7900C925F4 /* NdbTagIterator.swift in Sources */, 82D6FAC02CD99F7900C925F4 /* NdbNote.swift in Sources */, @@ -6543,8 +5796,6 @@ D72B6FA92E7E06AD0050CD1D /* ProfileObserver.swift in Sources */, 82D6FAC42CD99F7900C925F4 /* NdbTagsIterator.swift in Sources */, 82D6FAC52CD99F7900C925F4 /* NdbTxn.swift in Sources */, - 82D6FAC72CD99F7900C925F4 /* midl.c in Sources */, - 82D6FAC82CD99F7900C925F4 /* mdb.c in Sources */, 82D6FAC92CD99F7900C925F4 /* NdbNote+.swift in Sources */, 82D6FACA2CD99F7900C925F4 /* NostrScript.swift in Sources */, 82D6FACB2CD99F7900C925F4 /* nostrscript.c in Sources */, @@ -7045,6 +6296,8 @@ 82D6FC7B2CD99F7900C925F4 /* TestData.swift in Sources */, 82D6FC7C2CD99F7900C925F4 /* ContentParsing.swift in Sources */, 82D6FC7D2CD99F7900C925F4 /* NotificationFormatter.swift in Sources */, + 18F9BEAD5C2AF2F13AB29C73 /* NIP17.swift in Sources */, + 5D6232CED3C4F6C195A46E87 /* DMRelayListView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7052,21 +6305,11 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4C36247D2D5EA22300DD066E /* invoice.c in Sources */, + 4A6650EC945AE052A5DFB8E3 /* NdbProfile.swift in Sources */, 5C8F974E2EBD704A009399B1 /* LabsToggleView.swift in Sources */, - 4C36247C2D5EA21F00DD066E /* amount.c in Sources */, - 4C36247B2D5EA21200DD066E /* hash_u5.c in Sources */, - 4C36247A2D5EA20C00DD066E /* bech32.c in Sources */, - 4C3624792D5EA20200DD066E /* bolt11.c in Sources */, - 4C3624782D5EA1FE00DD066E /* error.c in Sources */, D776BE422F232B17002DA1C9 /* EntityPreloader.swift in Sources */, D774A5D12F4FBDEA006A4D64 /* NdbDatabase+UI.swift in Sources */, - 4C3624772D5EA1FA00DD066E /* nostr_bech32.c in Sources */, - 4C3624762D5EA1F600DD066E /* content_parser.c in Sources */, - 4C3624752D5EA1E000DD066E /* block.c in Sources */, 4C3624742D5EA1D700DD066E /* wasm.c in Sources */, - 4C3624732D5EA1BE00DD066E /* nostrdb.c in Sources */, - 4C3624602D5E9EB800DD066E /* NdbProfile.swift in Sources */, 4C36245F2D5E9B5F00DD066E /* NdbBlock.swift in Sources */, D5C1AFD52E5EE2820092F72F /* FavoriteButtonView.swift in Sources */, D73E5E202C6A97F4007EB227 /* AttachedWalletNotify.swift in Sources */, @@ -7236,18 +6479,7 @@ D73E5EA82C6A97F4007EB227 /* DirectMessageModel.swift in Sources */, D78F08132D7F78F900FC6C75 /* Response.swift in Sources */, D73E5EA92C6A97F4007EB227 /* Report.swift in Sources */, - 4CC6A9FA2CAB688500989CEF /* str.c in Sources */, - 4CC6A9FB2CAB688500989CEF /* tal.c in Sources */, - 4CC6A9FD2CAB688500989CEF /* mem.c in Sources */, D7F563102DEE71C0008509DE /* NdbFilter.swift in Sources */, - 4CC6A9FE2CAB688500989CEF /* sha256.c in Sources */, - 4CC6AA002CAB688500989CEF /* likely.c in Sources */, - 4CC6AA042CAB688500989CEF /* htable.c in Sources */, - 4CC6AA0B2CAB688500989CEF /* list.c in Sources */, - 4CC6AA0C2CAB688500989CEF /* utf8.c in Sources */, - 4CC6AA0E2CAB688500989CEF /* debug.c in Sources */, - 4CC6AA0F2CAB688500989CEF /* str.c in Sources */, - 4CC6AA122CAB688500989CEF /* take.c in Sources */, D73E5EAA2C6A97F4007EB227 /* ZapsModel.swift in Sources */, D73E5EAB2C6A97F4007EB227 /* DraftsModel.swift in Sources */, D73E5F932C6AA743007EB227 /* SetupView.swift in Sources */, @@ -7344,7 +6576,7 @@ D78778282F49478200DA73E4 /* StorageSettingsView.swift in Sources */, D73E5EFC2C6A97F4007EB227 /* DamusAppNotificationView.swift in Sources */, D73E5EFD2C6A97F4007EB227 /* InnerTimelineView.swift in Sources */, - D73E5EFE2C6A97F4007EB227 /* (null) in Sources */, + D73E5EFE2C6A97F4007EB227 /* BuildFile in Sources */, D7EB00B02CD59C8D00660C07 /* PresentFullScreenItemNotify.swift in Sources */, D73E5EFF2C6A97F4007EB227 /* ZapsView.swift in Sources */, D73E5F002C6A97F4007EB227 /* CustomizeZapView.swift in Sources */, @@ -7520,7 +6752,6 @@ D703D7B22C6710AF00A400EA /* ContentParsing.swift in Sources */, D703D7522C670A1400A400EA /* Log.swift in Sources */, D73E5E1B2C6A9672007EB227 /* LikeCounter.swift in Sources */, - D703D7A92C670E5A00A400EA /* refmap.c in Sources */, D73C7EDC2DE51699001F9392 /* OnboardingContentSettings.swift in Sources */, 5CFDE6F72EF4F93D004E8661 /* Secrets.swift in Sources */, D703D77B2C670BF000A400EA /* TableVerifier.swift in Sources */, @@ -7529,7 +6760,6 @@ D703D75D2C670A8E00A400EA /* ReferencedId.swift in Sources */, D703D7772C670BCE00A400EA /* Verifiable.swift in Sources */, D703D7642C670AE300A400EA /* StringCodable.swift in Sources */, - D703D7A52C670E3E00A400EA /* mdb.c in Sources */, D703D76B2C670B3100A400EA /* Referenced.swift in Sources */, D73BDB192D71311900D69970 /* UserRelayListErrors.swift in Sources */, 5CB645A12EA31E410018BD91 /* LabsLogoView.swift in Sources */, @@ -7539,7 +6769,6 @@ D78BA6672DD7DFB9000AE62C /* InterestSelectionView.swift in Sources */, D703D7692C670B2600A400EA /* Block.swift in Sources */, D703D77D2C670C0300A400EA /* FlatbuffersErrors.swift in Sources */, - D703D7A62C670E5200A400EA /* builder.c in Sources */, 5C8F974B2EB4620A009399B1 /* Glow.swift in Sources */, D703D78D2C670CAF00A400EA /* UpdateStatsNotify.swift in Sources */, D703D75C2C670A8400A400EA /* NdbNote.swift in Sources */, @@ -7552,8 +6781,6 @@ D703D7462C67091A00A400EA /* Keys.swift in Sources */, D703D7882C670C8200A400EA /* FriendFilter.swift in Sources */, D703D7562C670A4C00A400EA /* TranslationService.swift in Sources */, - D703D7A72C670E5500A400EA /* json_parser.c in Sources */, - D703D7A42C670E3C00A400EA /* midl.c in Sources */, D7DB1FE02D5A78CE00CF06DA /* NIP44.swift in Sources */, D706C5B02D5D31C20027C627 /* AutoSaveIndicatorView.swift in Sources */, 2710433E2E6BFE340005C3B0 /* PostingTimelineSwitcherView.swift in Sources */, @@ -7585,13 +6812,11 @@ D703D74E2C6709DA00A400EA /* Pubkey.swift in Sources */, D7D09AB62DADCA5C00AB170D /* CoinosDeterministicAccountClient.swift in Sources */, D703D7802C670C2500A400EA /* NIP05.swift in Sources */, - D703D7AA2C670E5D00A400EA /* verifier.c in Sources */, D73E5E1D2C6A9680007EB227 /* PreviewCache.swift in Sources */, D703D78E2C670CEF00A400EA /* Table.swift in Sources */, D73E5F892C6AA670007EB227 /* BuilderEventView.swift in Sources */, D703D7452C67090200A400EA /* MutelistManager.swift in Sources */, D703D7B42C6710F200A400EA /* Int+extension.swift in Sources */, - D703D7A82C670E5800A400EA /* emitter.c in Sources */, D703D76F2C670B5200A400EA /* NostrResponse.swift in Sources */, D703D7902C670D1600A400EA /* NewEventsBits.swift in Sources */, D703D75E2C670A9A00A400EA /* NdbTagElem.swift in Sources */, @@ -7617,6 +6842,8 @@ D703D75B2C670A7F00A400EA /* Contacts.swift in Sources */, D703D7812C670C2B00A400EA /* Bech32.swift in Sources */, D73E5E1E2C6A9694007EB227 /* RelayFilters.swift in Sources */, + 5134E51E1A288235039554E7 /* NIP17.swift in Sources */, + 9C8272144F5382FF33503BA1 /* DMRelayListView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7624,22 +6851,11 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8B3C93FC8441BAE04DBDC92B /* NdbProfile.swift in Sources */, 4CC6A9772CAB650F00989CEF /* CommentItem.swift in Sources */, 4C8FA7242BED58A900798A6A /* ThreadReply.swift in Sources */, D733F9E52D92C76100317B11 /* UnownedNdbNote.swift in Sources */, - 4CBB6F7C2B7312A7000477A4 /* nostr_bech32.c in Sources */, - 4CBB6F742B7311AA000477A4 /* hash_u5.c in Sources */, - 4CBB6F772B7311AA000477A4 /* bech32.c in Sources */, - 4CBB6F782B7311AA000477A4 /* amount.c in Sources */, - 4CBB6F792B7311AA000477A4 /* error.c in Sources */, - 4CBB6F7A2B7311AA000477A4 /* bech32_util.c in Sources */, - 4CBB6F712B731184000477A4 /* bolt11.c in Sources */, D74EC84F2E1856B70091DC51 /* NonCopyableLinkedList.swift in Sources */, - 4CBB6F702B731179000477A4 /* invoice.c in Sources */, - 4CBB6F6F2B73116B000477A4 /* content_parser.c in Sources */, - 4CBB6F6E2B731113000477A4 /* block.c in Sources */, - 4CBB6F6A2B730EF1000477A4 /* nostrdb.c in Sources */, - 4CBB6F682B72B5F0000477A4 /* NdbProfile.swift in Sources */, 4CBB6F672B72B5E8000477A4 /* NdbBlock.swift in Sources */, D74DEC8F2DA0C65F00E69FA6 /* Ndb+.swift in Sources */, D798D21F2B0858D600234419 /* MigratedTypes.swift in Sources */, @@ -7650,10 +6866,8 @@ D7CCFC192B058A3F00323D86 /* Block.swift in Sources */, D7CCFC112B05884E00323D86 /* AsciiCharacter.swift in Sources */, D798D2202B08592000234419 /* NdbTagIterator.swift in Sources */, - D7CE1B1D2B0BE14A002EDAD4 /* verifier.c in Sources */, D7CB5D4F2B11728000AD4105 /* NewEventsBits.swift in Sources */, D7CB5D412B116F0900AD4105 /* StringCodable.swift in Sources */, - D7CE1B1B2B0BE144002EDAD4 /* emitter.c in Sources */, D7EDED342B12ACAE0018B19C /* DamusUserDefaults.swift in Sources */, D74AAFC72B155BD0006CF0F4 /* Zap.swift in Sources */, D7CB5D562B11759900AD4105 /* MuteThreadNotify.swift in Sources */, @@ -7670,20 +6884,8 @@ D74DEC912DA0CA2400E69FA6 /* Array.swift in Sources */, D7CB5D602B11770C00AD4105 /* FollowState.swift in Sources */, D7CB5D402B116E8A00AD4105 /* UserSettingsStore.swift in Sources */, - D7CE1B1C2B0BE147002EDAD4 /* refmap.c in Sources */, D74AAFC92B155CA5006CF0F4 /* UpdateStatsNotify.swift in Sources */, - 4CC6AABF2CAB688500989CEF /* str.c in Sources */, - 4CC6AAC02CAB688500989CEF /* tal.c in Sources */, - 4CC6AAC22CAB688500989CEF /* mem.c in Sources */, - 4CC6AAC32CAB688500989CEF /* sha256.c in Sources */, - 4CC6AAC52CAB688500989CEF /* likely.c in Sources */, - 4CC6AAC92CAB688500989CEF /* htable.c in Sources */, - 4CC6AAD02CAB688500989CEF /* list.c in Sources */, D75154BF2EC5910A00BF2CB2 /* NdbUseLock.swift in Sources */, - 4CC6AAD12CAB688500989CEF /* utf8.c in Sources */, - 4CC6AAD32CAB688500989CEF /* debug.c in Sources */, - 4CC6AAD42CAB688500989CEF /* str.c in Sources */, - 4CC6AAD72CAB688500989CEF /* take.c in Sources */, D79C4C172AFEB061003A41B4 /* NotificationService.swift in Sources */, D7CB5D522B1174D100AD4105 /* FriendFilter.swift in Sources */, D7CE1B362B0BE702002EDAD4 /* FbConstants.swift in Sources */, @@ -7699,7 +6901,6 @@ D7CE1B422B0BE719002EDAD4 /* Offset.swift in Sources */, D7FB10A72B0C371A00FA8D42 /* Log.swift in Sources */, D7F563112DEE71C0008509DE /* NdbFilter.swift in Sources */, - D7CE1B182B0BDFDD002EDAD4 /* mdb.c in Sources */, D7CCFC162B05894300323D86 /* Pubkey.swift in Sources */, D7EDED2C2B128CFA0018B19C /* DamusColors.swift in Sources */, D74AAFC52B1538DF006CF0F4 /* NotificationExtensionState.swift in Sources */, @@ -7722,7 +6923,6 @@ D7CE1B3C2B0BE719002EDAD4 /* TableVerifier.swift in Sources */, D7EDED2F2B128E8A0018B19C /* CollectionExtension.swift in Sources */, D7CCFC082B05834500323D86 /* NoteId.swift in Sources */, - D7CE1B1A2B0BE135002EDAD4 /* json_parser.c in Sources */, D7EDED2A2B128CB40018B19C /* Nip98HTTPAuth.swift in Sources */, D7CB5D592B11764000AD4105 /* NewUnmutesNotify.swift in Sources */, D798D2252B0859D700234419 /* Post.swift in Sources */, @@ -7747,7 +6947,6 @@ D78F081A2D7F803100FC6C75 /* NIP04.swift in Sources */, D7B76C912C82507F003A16CB /* NIP98AuthenticatedRequest.swift in Sources */, D7CE1B492B0BE729002EDAD4 /* DisplayName.swift in Sources */, - D7CE1B192B0BE132002EDAD4 /* builder.c in Sources */, D7EDED1F2B11797D0018B19C /* LongformEvent.swift in Sources */, D7CCFC122B05886D00323D86 /* IdType.swift in Sources */, D7CE1B312B0BE69D002EDAD4 /* Ndb.swift in Sources */, @@ -7772,9 +6971,10 @@ D7CE1B482B0BE719002EDAD4 /* Message.swift in Sources */, D7CB5D462B11703D00AD4105 /* Notify.swift in Sources */, D7EDED262B117FC80018B19C /* StringUtil.swift in Sources */, - D7CE1B1E2B0BE190002EDAD4 /* midl.c in Sources */, D7CB5D3C2B1130C600AD4105 /* LocalNotification.swift in Sources */, B59CAD4D2B688D1000677E8B /* MutelistManager.swift in Sources */, + D38DA39D28DBB3923E538B5C /* NIP17.swift in Sources */, + ADBBFE60E62F69CF7EC0AC78 /* NIP44.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7983,8 +7183,6 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", - "MDB_SHORT_SEMNAMES=1", - "MDB_SEM_NAME_PREFIX=\"group.com.damus\"", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -7994,10 +7192,13 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/nostrdb", + "$(PROJECT_DIR)/damus-c", + "$(PROJECT_DIR)/nostrdb/src", + "$(PROJECT_DIR)/nostrdb/src/bolt11", + "$(PROJECT_DIR)/nostrdb/deps/lmdb", "$(PROJECT_DIR)/nostrdb/ccan", "$(PROJECT_DIR)/nostrdb/ccan/ccan/short_types", - "$(PROJECT_DIR)/damus-c", + "$(PROJECT_DIR)/nostrdb/ccan/ccan/array_size", ); IPHONEOS_DEPLOYMENT_TARGET = 16.0; MACOSX_DEPLOYMENT_TARGET = 12.3; @@ -8055,8 +7256,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( - "MDB_SHORT_SEMNAMES=1", - "MDB_SEM_NAME_PREFIX=\"group.com.damus\"", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -8065,10 +7264,13 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/nostrdb", + "$(PROJECT_DIR)/damus-c", + "$(PROJECT_DIR)/nostrdb/src", + "$(PROJECT_DIR)/nostrdb/src/bolt11", + "$(PROJECT_DIR)/nostrdb/deps/lmdb", "$(PROJECT_DIR)/nostrdb/ccan", "$(PROJECT_DIR)/nostrdb/ccan/ccan/short_types", - "$(PROJECT_DIR)/damus-c", + "$(PROJECT_DIR)/nostrdb/ccan/ccan/array_size", ); IPHONEOS_DEPLOYMENT_TARGET = 16.0; MACOSX_DEPLOYMENT_TARGET = 12.3; @@ -8118,8 +7320,6 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", - "$(PROJECT_DIR)/nostrdb/src/bolt11", - "$(PROJECT_DIR)/nostrdb/ccan", ); PRODUCT_BUNDLE_IDENTIFIER = com.jb55.damus2; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -8172,8 +7372,6 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", - "$(PROJECT_DIR)/nostrdb/src/bolt11", - "$(PROJECT_DIR)/nostrdb/ccan", ); PRODUCT_BUNDLE_IDENTIFIER = com.jb55.damus2; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -8522,6 +7720,13 @@ }; /* End XCConfigurationList section */ +/* Begin XCLocalSwiftPackageReference section */ + AAAA00002F50000000000001 /* XCLocalSwiftPackageReference "nostrdb" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = nostrdb; + }; +/* End XCLocalSwiftPackageReference section */ + /* Begin XCRemoteSwiftPackageReference section */ 3A0A30B92C21397A00F8C9BC /* XCRemoteSwiftPackageReference "EmojiPicker" */ = { isa = XCRemoteSwiftPackageReference; @@ -8555,7 +7760,7 @@ kind = branch; }; }; - 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1" */ = { + 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1.swift" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/jb55/secp256k1.swift"; requirement = { @@ -8571,6 +7776,7 @@ minimumVersion = 0.2.26; }; }; + D70D90962CDED61800CD0534 /* XCRemoteSwiftPackageReference "CodeScanner" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/twostraws/CodeScanner.git"; @@ -8630,6 +7836,7 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 3A0A30BA2C21397A00F8C9BC /* EmojiPicker */ = { isa = XCSwiftPackageProductDependency; package = 3A0A30B92C21397A00F8C9BC /* XCRemoteSwiftPackageReference "EmojiPicker" */; @@ -8667,12 +7874,13 @@ }; 4C649880286E0EE300EAE2B3 /* secp256k1 */ = { isa = XCSwiftPackageProductDependency; - package = 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1" */; + package = 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1.swift" */; productName = secp256k1; }; + 82D6FC802CD99FC500C925F4 /* secp256k1 */ = { isa = XCSwiftPackageProductDependency; - package = 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1" */; + package = 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1.swift" */; productName = secp256k1; }; 82D6FC832CD9A48500C925F4 /* Kingfisher */ = { @@ -8695,9 +7903,10 @@ package = D78DB8572C1CE9CA00F0AB12 /* XCRemoteSwiftPackageReference "SwipeActions" */; productName = SwipeActions; }; + D703D7482C6709B100A400EA /* secp256k1 */ = { isa = XCSwiftPackageProductDependency; - package = 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1" */; + package = 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1.swift" */; productName = secp256k1; }; D703D7AC2C670FA700A400EA /* MarkdownUI */ = { @@ -8747,7 +7956,7 @@ }; D789D11F2AFEFBF20083A7AB /* secp256k1 */ = { isa = XCSwiftPackageProductDependency; - package = 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1" */; + package = 4C64987F286E0EE300EAE2B3 /* XCRemoteSwiftPackageReference "secp256k1.swift" */; productName = secp256k1; }; D78DB8582C1CE9CA00F0AB12 /* SwipeActions */ = { @@ -8835,6 +8044,22 @@ package = D70D90962CDED61800CD0534 /* XCRemoteSwiftPackageReference "CodeScanner" */; productName = CodeScanner; }; + AAAA00002F50000000000002 /* Nostrdb */ = { + isa = XCSwiftPackageProductDependency; + productName = Nostrdb; + }; + AAAA00002F50000000000003 /* Nostrdb */ = { + isa = XCSwiftPackageProductDependency; + productName = Nostrdb; + }; + AAAA00002F50000000000004 /* Nostrdb */ = { + isa = XCSwiftPackageProductDependency; + productName = Nostrdb; + }; + AAAA00002F50000000000005 /* Nostrdb */ = { + isa = XCSwiftPackageProductDependency; + productName = Nostrdb; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 4CE6DEDB27F7A08100C66700 /* Project object */; diff --git a/damus.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/damus.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index cc319010a7..eef8c640be 100644 --- a/damus.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/damus.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "c718c1e7dcc1a07671694b2d7d7311e11804fbbaf22f4b81e49523a3df816ad6", + "originHash" : "e3fa2e69a7248291a597dd263dde967d1c817578d70bd81445f76ef4d548ec12", "pins" : [ { "identity" : "codescanner", @@ -114,6 +114,15 @@ "version" : "1.14.1" } }, + { + "identity" : "swift-sodium", + "kind" : "remoteSourceControl", + "location" : "https://github.com/jedisct1/swift-sodium.git", + "state" : { + "revision" : "e7e799cd1eaa4d0f6d3eab56832e7f4b377f4a4f", + "version" : "0.10.0" + } + }, { "identity" : "swift-syntax", "kind" : "remoteSourceControl", diff --git a/damus/ContentView.swift b/damus/ContentView.swift index e27f4bd105..f9127780b2 100644 --- a/damus/ContentView.swift +++ b/damus/ContentView.swift @@ -695,6 +695,9 @@ struct ContentView: View { } func connect() async { + // Check for and swap in a compacted database before opening + let _ = Ndb.try_swap_compacted_db() + // nostrdb var mndb = Ndb() if mndb == nil { @@ -747,7 +750,8 @@ struct ContentView: View { ) home.damus_state = self.damus_state! - + self.damus_state?.initializeNip17KeysIfNeeded() + await damus_state.snapshotManager.startPeriodicSnapshots() if let damus_state, damus_state.purple.enable_purple { @@ -778,6 +782,8 @@ struct ContentView: View { } } await damus_state.nostrNetwork.connect() + // Subscribe to our own DM relays (kind:10050) for receiving inbound NIP-17 messages + self.damus_state?.subscribeToOwnDMRelays() // TODO: Move this to a better spot. Not sure what is the best signal to listen to for sending initial filters DispatchQueue.main.asyncAfter(deadline: .now() + 0.25, execute: { self.home.send_initial_filters() diff --git a/damus/Core/NIPs/NIP17/NIP17.swift b/damus/Core/NIPs/NIP17/NIP17.swift new file mode 100644 index 0000000000..bbece935a6 --- /dev/null +++ b/damus/Core/NIPs/NIP17/NIP17.swift @@ -0,0 +1,456 @@ +// +// NIP17.swift +// damus +// +// NIP-17 Private Direct Messages implementation +// Uses NIP-44 encryption and NIP-59 gift wrap structure +// +// Reference: https://github.com/damus-io/notedeck/blob/master/crates/notedeck_messages/src/nip17/mod.rs +// + +import Foundation + +/// NIP-17 Private Direct Message utilities +/// +/// Message structure: rumor (kind 14) → seal (kind 13) → gift_wrap (kind 1059) +/// - Rumor: Unsigned event containing the actual message +/// - Seal: Sender-signed event containing encrypted rumor +/// - Gift wrap: Ephemeral-key-signed event containing encrypted seal +struct NIP17 { + + // MARK: - Errors + + enum Error: Swift.Error { + case encryptionFailed + case decryptionFailed + case invalidSeal + case invalidRumor + case invalidGiftWrap + case missingPrivateKey + case jsonEncodingFailed + case jsonDecodingFailed + case signatureFailed + } + + // MARK: - Message Creation + + /// Creates a gift-wrapped NIP-17 direct message + /// + /// Creates two gift wraps: one for recipient (to receive) and one for sender (for cross-device recovery). + /// Runs expensive keypair generation off the main thread. + /// + /// - Parameters: + /// - content: The message content + /// - recipient: The recipient's public key + /// - sender: The sender's full keypair + /// - replyTo: Optional note ID being replied to + /// - Returns: Tuple of (recipientWrap, senderWrap) or nil on failure + static func createMessage( + content: String, + to recipient: Pubkey, + from sender: FullKeypair, + replyTo: NoteId? = nil + ) async -> (recipientWrap: NostrEvent, senderWrap: NostrEvent)? { + + // Build participant tags (recipient + sender for group context) + var tags: [[String]] = [["p", recipient.hex()]] + if let replyTo = replyTo { + tags.append(["e", replyTo.hex(), "", "reply"]) + } + + // 1. Create rumor (unsigned kind 14) + guard let rumorJson = buildRumorJson( + content: content, + senderPubkey: sender.pubkey, + tags: tags + ) else { + return nil + } + + // 2. Create seal for recipient + guard let recipientWrap = await createGiftWrap( + rumorJson: rumorJson, + sender: sender, + recipient: recipient + ) else { + return nil + } + + // 3. Create seal for sender (self-wrap for recovery) + guard let senderWrap = await createGiftWrap( + rumorJson: rumorJson, + sender: sender, + recipient: sender.pubkey + ) else { + return nil + } + + return (recipientWrap, senderWrap) + } + + /// Creates a single gift wrap for a recipient. + /// Generates ephemeral keypair on background thread to avoid blocking main thread. + private static func createGiftWrap( + rumorJson: String, + sender: FullKeypair, + recipient: Pubkey + ) async -> NostrEvent? { + + // Encrypt rumor with NIP-44 (sender → recipient) + guard let encryptedRumor = try? NIP44v2Encryption.encrypt( + plaintext: rumorJson, + privateKeyA: sender.privkey, + publicKeyB: recipient + ) else { + return nil + } + + // Create seal (kind 13) + let sealCreatedAt = randomizedTimestamp() + guard let sealJson = buildSealJson( + encryptedContent: encryptedRumor, + sender: sender, + createdAt: sealCreatedAt + ) else { + return nil + } + + // Generate ephemeral keypair on background thread (secp256k1 key generation is expensive) + let wrapKeys = await Task.detached(priority: .userInitiated) { + generate_new_keypair() + }.value + + // Encrypt seal with NIP-44 (ephemeral → recipient) + guard let encryptedSeal = try? NIP44v2Encryption.encrypt( + plaintext: sealJson, + privateKeyA: wrapKeys.privkey, + publicKeyB: recipient + ) else { + return nil + } + + // Create gift wrap (kind 1059) + let wrapCreatedAt = randomizedTimestamp() + return buildGiftWrap( + encryptedContent: encryptedSeal, + wrapKeys: wrapKeys, + recipient: recipient, + createdAt: wrapCreatedAt + ) + } + + // MARK: - Message Unwrapping + + /// Unwraps a gift-wrapped message, returning the decrypted rumor + /// + /// - Parameters: + /// - giftWrap: The kind 1059 gift wrap event + /// - recipientKeypair: The recipient's keypair (must have private key) + /// - Returns: The unwrapped rumor event, or nil on failure + static func unwrap( + giftWrap: NostrEvent, + recipientKeypair: FullKeypair + ) -> NostrEvent? { + + guard giftWrap.kind == NostrKind.gift_wrap.rawValue else { + #if DEBUG + print("[DM-DEBUG] unwrap: not a gift_wrap (kind \(giftWrap.kind))") + #endif + return nil + } + + // Get wrap sender pubkey (ephemeral key) + let wrapSenderPubkey = giftWrap.pubkey + + // Decrypt seal from gift wrap + let sealJson: String + do { + sealJson = try NIP44v2Encryption.decrypt( + payload: giftWrap.content, + privateKeyA: recipientKeypair.privkey, + publicKeyB: wrapSenderPubkey + ) + } catch { + #if DEBUG + print("[DM-DEBUG] unwrap: seal decrypt FAILED: \(error)") + #endif + return nil + } + + // Parse seal event + guard let seal = NostrEvent.owned_from_json(json: sealJson) else { + #if DEBUG + print("[DM-DEBUG] unwrap: seal JSON parse FAILED") + #endif + return nil + } + + guard seal.kind == NostrKind.seal.rawValue else { + #if DEBUG + print("[DM-DEBUG] unwrap: seal wrong kind \(seal.kind), expected 13") + #endif + return nil + } + + // SECURITY: Verify seal signature to prevent spoofed sender pubkeys + // Without this, an attacker could forge messages appearing to come from anyone + guard validate_event(ev: seal) == .ok else { + #if DEBUG + print("[DM-DEBUG] unwrap: seal signature INVALID") + #endif + return nil + } + + // Get real sender pubkey from seal (now trusted after signature verification) + let senderPubkey = seal.pubkey + + // Decrypt rumor from seal + let rumorJson: String + do { + rumorJson = try NIP44v2Encryption.decrypt( + payload: seal.content, + privateKeyA: recipientKeypair.privkey, + publicKeyB: senderPubkey + ) + } catch { + #if DEBUG + print("[DM-DEBUG] unwrap: rumor decrypt FAILED: \(error)") + #endif + return nil + } + + // Parse rumor event - rumors may not have id field, so parse manually + guard let rumor = parseRumorJson(rumorJson, senderPubkey: senderPubkey) else { + #if DEBUG + print("[DM-DEBUG] unwrap: rumor JSON parse FAILED, content: \(rumorJson.prefix(200))...") + #endif + return nil + } + + // SECURITY: Verify rumor.pubkey matches seal.pubkey + // Per NIP-17, the seal pubkey is the authoritative sender. If the rumor + // contains a different pubkey, it could be an attempt to spoof the sender. + guard rumor.pubkey == senderPubkey else { + #if DEBUG + print("[DM-DEBUG] unwrap: SECURITY - rumor pubkey mismatch (rumor: \(rumor.pubkey.hex().prefix(16)), seal: \(senderPubkey.hex().prefix(16)))") + #endif + return nil + } + + // Rumors should be kind 14 (dm_chat) and unsigned + guard rumor.kind == NostrKind.dm_chat.rawValue else { + #if DEBUG + print("[DM-DEBUG] unwrap: rumor wrong kind \(rumor.kind), expected 14") + #endif + return nil + } + + #if DEBUG + print("[DM-DEBUG] unwrap: SUCCESS rumor from:\(rumor.pubkey.npub.prefix(16)) content:'\(rumor.content.prefix(30))'") + #endif + return rumor + } + + // MARK: - JSON Building + + /// Builds the JSON for an unsigned rumor event (kind 14) + /// Per NIP-17: "A rumor is a regular nostr event, but is not signed" + /// This means it needs an id (computed hash) but no signature + private static func buildRumorJson( + content: String, + senderPubkey: Pubkey, + tags: [[String]] + ) -> String? { + let createdAt = UInt32(Date().timeIntervalSince1970) + let kind = NostrKind.dm_chat.rawValue + + // Compute the event id (SHA256 of serialized event per NIP-01) + let eventId = calculate_event_id( + pubkey: senderPubkey, + created_at: createdAt, + kind: kind, + tags: tags, + content: content + ) + + // Rumor has id but no signature + let event: [String: Any] = [ + "id": eventId.hex(), + "pubkey": senderPubkey.hex(), + "created_at": createdAt, + "kind": kind, + "tags": tags, + "content": content + ] + + guard let data = try? JSONSerialization.data(withJSONObject: event), + let json = String(data: data, encoding: .utf8) else { + return nil + } + + return json + } + + /// Builds the JSON for a signed seal event (kind 13) + private static func buildSealJson( + encryptedContent: String, + sender: FullKeypair, + createdAt: UInt32 + ) -> String? { + // Seal has no tags, just the encrypted rumor as content + guard let seal = NostrEvent( + content: encryptedContent, + keypair: sender.to_keypair(), + kind: NostrKind.seal.rawValue, + tags: [], + createdAt: createdAt + ) else { + return nil + } + + return event_to_json(ev: seal) + } + + /// Builds the gift wrap event (kind 1059) + private static func buildGiftWrap( + encryptedContent: String, + wrapKeys: FullKeypair, + recipient: Pubkey, + createdAt: UInt32 + ) -> NostrEvent? { + // Gift wrap has only p-tag for recipient + let tags: [[String]] = [["p", recipient.hex()]] + + return NostrEvent( + content: encryptedContent, + keypair: wrapKeys.to_keypair(), + kind: NostrKind.gift_wrap.rawValue, + tags: tags, + createdAt: createdAt + ) + } + + // MARK: - Timestamp Randomization + + /// Returns a randomized timestamp up to 2 days in the past + /// This adds temporal privacy by obscuring when messages were actually sent + private static func randomizedTimestamp() -> UInt32 { + let maxSkewSeconds: UInt32 = 2 * 24 * 60 * 60 // 2 days + let now = UInt32(Date().timeIntervalSince1970) + let skew = UInt32.random(in: 0...maxSkewSeconds) + return now - skew + } + + // MARK: - DM Relay List (kind 10050) + + /// Creates a kind 10050 DM relay list event + /// + /// - Parameters: + /// - relays: List of relay URLs where DMs should be sent + /// - keypair: The user's keypair to sign the event + /// - Returns: Signed kind 10050 event, or nil on failure + static func createDMRelayList(relays: [RelayURL], keypair: Keypair) -> NostrEvent? { + // Build relay tags: [["relay", "wss://..."], ["relay", "wss://..."]] + let tags = relays.map { ["relay", $0.absoluteString] } + + return NostrEvent( + content: "", + keypair: keypair, + kind: NostrKind.dm_relay_list.rawValue, + tags: tags + ) + } + + /// Extracts relay URLs from a kind 10050 DM relay list event + /// + /// - Parameter event: The kind 10050 event + /// - Returns: List of relay URLs, or empty if invalid/none found + static func parseDMRelayList(event: NostrEvent) -> [RelayURL] { + guard event.kind == NostrKind.dm_relay_list.rawValue else { + return [] + } + + var relays: [RelayURL] = [] + for tag in event.tags { + guard tag.count >= 2, + tag[0].string() == "relay", + let url = RelayURL(tag[1].string()) else { + continue + } + relays.append(url) + } + return relays + } + + // MARK: - Rumor JSON Parsing + + /// Parses a rumor JSON that may not have an id field. + /// NIP-17 rumors are unsigned events, and some implementations omit the id. + /// We calculate the id ourselves if missing. + /// + /// - Parameters: + /// - json: The rumor JSON string + /// - senderPubkey: The sender's pubkey from the seal (used as fallback) + /// - Returns: A NostrEvent representing the rumor, or nil on failure + private static func parseRumorJson(_ json: String, senderPubkey: Pubkey) -> NostrEvent? { + guard let data = json.data(using: .utf8), + let dict = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else { + return nil + } + + // Extract required fields + guard let content = dict["content"] as? String, + let kind = dict["kind"] as? Int, + let createdAt = dict["created_at"] as? Int else { + #if DEBUG + print("[DM-DEBUG] parseRumorJson: missing required fields") + #endif + return nil + } + + // Get pubkey - use from JSON if present, otherwise use seal sender + let pubkeyHex = dict["pubkey"] as? String + let pubkey: Pubkey + if let hex = pubkeyHex, let pk = Pubkey(hex: hex) { + pubkey = pk + } else { + pubkey = senderPubkey + } + + // Parse tags + let tagsArray = dict["tags"] as? [[String]] ?? [] + + // Try standard parsing first (for rumors with id) + if let event = NostrEvent.owned_from_json(json: json) { + return event + } + + // Calculate id if not present (NIP-01 event id = SHA256 of serialized event) + let eventId = calculate_event_id( + pubkey: pubkey, + created_at: UInt32(createdAt), + kind: UInt32(kind), + tags: tagsArray, + content: content + ) + + // Create event using keypair initializer with empty signature + // We need to construct the event manually since it's unsigned + let rumorJson: [String: Any] = [ + "id": eventId.hex(), + "pubkey": pubkey.hex(), + "created_at": createdAt, + "kind": kind, + "tags": tagsArray, + "content": content, + "sig": String(repeating: "0", count: 128) // Placeholder sig for parsing + ] + + guard let rumorData = try? JSONSerialization.data(withJSONObject: rumorJson), + let rumorJsonStr = String(data: rumorData, encoding: .utf8) else { + return nil + } + + return NostrEvent.owned_from_json(json: rumorJsonStr) + } +} diff --git a/damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift b/damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift index 959bbdbdc4..a6d8b63b74 100644 --- a/damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift +++ b/damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift @@ -263,7 +263,95 @@ class NostrNetworkManager { .map { $0.url } .filter { !filters.is_filtered(timeline: .search, relay_id: $0) } } - + + // MARK: - DM Outbox (On-demand relay connection) + + /// Sends an event to recipient's DM relays with proper ephemeral relay lifecycle management. + /// This acquires leases, connects, sends via PostBox (with retries), and releases leases when done. + /// + /// - Parameters: + /// - event: The event to send (typically a gift wrap) + /// - relayURLs: The relay URLs to send to (from recipient's kind 10050) + /// - timeout: Maximum time to wait for connections (default 5 seconds) + /// - Returns: The relays that were connected (empty if all connections failed) + func sendToEphemeralRelays(_ event: NostrEvent, to relayURLs: [RelayURL], timeout: Duration = .seconds(5)) async -> [RelayURL] { + guard !relayURLs.isEmpty else { return [] } + + // Acquire leases to prevent premature cleanup + await self.pool.acquireEphemeralRelays(relayURLs) + + // Connect to relays + let connectedRelays = await self.pool.ensureConnected(to: relayURLs, timeout: timeout) + + guard !connectedRelays.isEmpty else { + // No relays connected - release leases immediately + await self.pool.releaseEphemeralRelays(relayURLs) + return [] + } + + // Capture relayURLs for the closure + let urlsToRelease = relayURLs + + // Send via PostBox for retry/backoff reliability + // Release leases only after PostBox has flushed all relays + await self.postbox.send( + event, + to: connectedRelays, + skip_ephemeral: false, + on_flush: .all { [weak self] posted in + Task { [weak self] in + guard let self else { return } + + // Only release once all relays have flushed + if posted.remaining.isEmpty { + await self.pool.releaseEphemeralRelays(urlsToRelease) + } + } + } + ) + + // Safety timeout: release leases if no ACKs ever arrive + Task { [weak self] in + try? await Task.sleep(for: .seconds(20)) + await self?.pool.releaseEphemeralRelays(urlsToRelease) + // Cancel retries so PostBox doesn't keep trying removed relays + let cancelled = await self?.postbox.force_cancel_send(evid: event.id) ?? false + #if DEBUG + if !cancelled { + print("[DM-DEBUG] sendToEphemeralRelays: No pending PostBox entry to cancel for id:\(event.id.hex().prefix(8))") + } + #endif + } + + return connectedRelays + } + + /// Ensures connection to the specified relays, connecting on-demand if needed. + /// Note: For DM sending, prefer sendToEphemeralRelays() which handles lease lifecycle. + /// + /// - Parameters: + /// - relayURLs: The relay URLs to connect to (typically from recipient's kind 10050) + /// - timeout: Maximum time to wait for connections (default 5 seconds for DMs) + /// - Returns: The subset of relays that are now connected + func ensureConnected(to relayURLs: [RelayURL], timeout: Duration = .seconds(5)) async -> [RelayURL] { + await self.pool.ensureConnected(to: relayURLs, timeout: timeout) + } + + /// Acquires leases on ephemeral relays to prevent premature cleanup. + /// Call releaseEphemeralRelays when done with the relays. + /// + /// - Parameter relayURLs: The relay URLs to acquire leases for + func acquireEphemeralRelays(_ relayURLs: [RelayURL]) async { + await self.pool.acquireEphemeralRelays(relayURLs) + } + + /// Releases leases on ephemeral relays, allowing cleanup when no longer needed. + /// + /// - Parameter relayURLs: The relay URLs to release leases for + func releaseEphemeralRelays(_ relayURLs: [RelayURL]) async { + await self.pool.releaseEphemeralRelays(relayURLs) + } + // MARK: NWC // TODO: Move this to NWCManager diff --git a/damus/Core/Networking/NostrNetworkManager/SubscriptionManager.swift b/damus/Core/Networking/NostrNetworkManager/SubscriptionManager.swift index fbb0a089ed..3d46106d15 100644 --- a/damus/Core/Networking/NostrNetworkManager/SubscriptionManager.swift +++ b/damus/Core/Networking/NostrNetworkManager/SubscriptionManager.swift @@ -293,8 +293,14 @@ extension NostrNetworkManager { case .sinceOptimization(let latestNoteTimestampSeen): let optimizedFilters = filters.map { var optimizedFilter = $0 - // Shift the since filter 2 minutes (120 seconds) before the last note timestamp - optimizedFilter.since = latestNoteTimestampSeen > 120 ? latestNoteTimestampSeen - 120 : 0 + // Skip since optimization for gift_wrap (kind 1059) filters. + // NIP-17 randomizes gift_wrap created_at up to 2 days in the past, + // so applying a recent `since` filter would miss new messages. + let containsGiftWrap = optimizedFilter.kinds?.contains(.gift_wrap) ?? false + if !containsGiftWrap { + // Shift the since filter 2 minutes (120 seconds) before the last note timestamp + optimizedFilter.since = latestNoteTimestampSeen > 120 ? latestNoteTimestampSeen - 120 : 0 + } return optimizedFilter } return await self.pool.subscribe(filters: optimizedFilters, to: desiredRelays, id: id) diff --git a/damus/Core/Nostr/NostrKind.swift b/damus/Core/Nostr/NostrKind.swift index 0fff7b1c8c..1069462a09 100644 --- a/damus/Core/Nostr/NostrKind.swift +++ b/damus/Core/Nostr/NostrKind.swift @@ -17,11 +17,19 @@ enum NostrKind: UInt32, Codable { case delete = 5 case boost = 6 case like = 7 + // NIP-59: Gift Wrap - seal containing encrypted rumor + case seal = 13 + // NIP-17: Private Direct Messages - unsigned rumor inside seal + case dm_chat = 14 case chat = 42 + // NIP-59: Gift Wrap - outer wrapper with ephemeral key + case gift_wrap = 1059 case live_chat = 1311 case mute_list = 10000 case relay_list = 10002 case interest_list = 10015 + // NIP-17: Preferred relays for receiving DMs + case dm_relay_list = 10050 case list_deprecated = 30000 case draft = 31234 case longform = 30023 diff --git a/damus/Core/Storage/DamusState.swift b/damus/Core/Storage/DamusState.swift index e49682632d..7039d1c0ae 100644 --- a/damus/Core/Storage/DamusState.swift +++ b/damus/Core/Storage/DamusState.swift @@ -102,6 +102,10 @@ class DamusState: HeadlessDamusState, ObservableObject { let sub_id = UUID().uuidString guard let ndb = mndb else { return nil } + + // NIP-17 key initialization is done in initializeNip17KeysIfNeeded() + // which runs on a background thread to avoid blocking main thread + let pubkey = keypair.pubkey let model_cache = RelayModelCache() @@ -185,6 +189,180 @@ class DamusState: HeadlessDamusState, ObservableObject { } } + /// Initializes NIP-17 gift wrap decryption by registering the user's private key + /// and reprocessing stored gift wraps. Runs on a background task to avoid blocking main thread. + func initializeNip17KeysIfNeeded() { + guard let privkey = keypair.privkey else { + #if DEBUG + print("[NIP17] No private key available") + #endif + return + } + + Task.detached(priority: .utility) { [ndb, keypair] in + #if DEBUG + // Only show truncated pubkey in debug builds + let truncatedPubkey = String(keypair.pubkey.hex().prefix(8)) + print("[NIP17] Initializing for pubkey: \(truncatedPubkey)...") + #endif + + let keyAdded = ndb.addKey(privkey) + + #if DEBUG + print("[NIP17] Key registration: \(keyAdded ? "success" : "failed")") + #endif + + do { + let result = try ndb.processGiftWraps() + + #if DEBUG + print("[NIP17] Gift wrap processing: \(result ? "initiated" : "failed")") + + // Wait a moment for async processing to complete + try await Task.sleep(nanoseconds: 500_000_000) // 0.5s + + // Debug: Query nostrdb for kind:14 and kind:1059 counts + let dm_chat_filter = NostrFilter(kinds: [.dm_chat]) + let giftwrap_filter = NostrFilter(kinds: [.gift_wrap]) + + let dm_chat_keys = try ndb.query(filters: [NdbFilter(from: dm_chat_filter)], maxResults: 1000) + let giftwrap_keys = try ndb.query(filters: [NdbFilter(from: giftwrap_filter)], maxResults: 1000) + + print("[NIP17] nostrdb: \(dm_chat_keys.count) rumors, \(giftwrap_keys.count) gift_wraps") + #endif + } catch { + #if DEBUG + print("[NIP17] Error: \(error)") + #endif + } + } + } + + /// Task handle for the DM relay subscription + private var dmRelaySubscriptionTask: Task? + + /// Subscribes to the user's own kind:10050 DM relays for receiving inbound NIP-17 messages. + /// + /// Per NIP-17, senders publish gift wraps to the recipient's 10050 relays. This function + /// fetches our own 10050 relay list and subscribes for kind:1059 (gift_wrap) events + /// on those relays so we can receive inbound DMs. + /// + /// Should be called after the network is connected. + func subscribeToOwnDMRelays() { + guard keypair.privkey != nil else { + #if DEBUG + print("[NIP17-Inbound] No private key, skipping DM relay subscription") + #endif + return + } + + // Cancel any existing subscription task + dmRelaySubscriptionTask?.cancel() + + dmRelaySubscriptionTask = Task { [weak self] in + guard let self else { return } + + #if DEBUG + print("[NIP17-Inbound] Fetching own kind:10050 DM relay list...") + #endif + + // Wait for network to be ready + await self.nostrNetwork.awaitConnection(timeout: .seconds(10)) + + // Fetch our own kind:10050 event + let dmRelays = await self.fetchOwnDMRelayList() + + guard !dmRelays.isEmpty else { + #if DEBUG + print("[NIP17-Inbound] No DM relays found in 10050, will use regular relays for DMs") + #endif + return + } + + #if DEBUG + print("[NIP17-Inbound] Found \(dmRelays.count) DM relays: \(dmRelays.map { $0.absoluteString })") + #endif + + // Connect to these relays as ephemeral relays + await self.nostrNetwork.acquireEphemeralRelays(dmRelays) + let connectedRelays = await self.nostrNetwork.ensureConnected(to: dmRelays, timeout: .seconds(10)) + + guard !connectedRelays.isEmpty else { + #if DEBUG + print("[NIP17-Inbound] Failed to connect to any DM relays") + #endif + await self.nostrNetwork.releaseEphemeralRelays(dmRelays) + return + } + + #if DEBUG + print("[NIP17-Inbound] Connected to \(connectedRelays.count)/\(dmRelays.count) DM relays, subscribing for gift wraps...") + #endif + + // Subscribe for gift wraps (kind:1059) addressed to us on these relays + var giftwrapFilter = NostrFilter(kinds: [.gift_wrap]) + giftwrapFilter.pubkeys = [self.keypair.pubkey] + + // Stream indefinitely from these DM relays + // The events will be ingested into nostrdb and processed like any other gift wrap + for await lender in self.nostrNetwork.reader.streamIndefinitely( + filters: [giftwrapFilter], + to: connectedRelays, + streamMode: .ndbAndNetworkParallel(networkOptimization: .none) + ) { + // Check for cancellation + if Task.isCancelled { + break + } + + // The event is automatically ingested into nostrdb by the subscription + // nostrdb will unwrap it and make the kind:14 rumor available + #if DEBUG + lender.justUseACopy { event in + print("[NIP17-Inbound] Received gift wrap id:\(event.id.hex().prefix(8)) from DM relay") + } + #endif + + // Trigger gift wrap processing + do { + let _ = try self.ndb.processGiftWraps() + } catch { + #if DEBUG + print("[NIP17-Inbound] processGiftWraps error: \(error)") + #endif + } + } + + // Clean up when task is cancelled + await self.nostrNetwork.releaseEphemeralRelays(dmRelays) + #if DEBUG + print("[NIP17-Inbound] DM relay subscription ended") + #endif + } + } + + /// Fetches the user's own kind:10050 DM relay list + func fetchOwnDMRelayList() async -> [RelayURL] { + let filter = NostrFilter(kinds: [.dm_relay_list], authors: [keypair.pubkey]) + + var latestEvent: NostrEvent? = nil + + for await lender in nostrNetwork.reader.streamExistingEvents( + filters: [filter], + timeout: .seconds(5) + ) { + lender.justUseACopy { event in + // Keep the most recent event (replaceable event semantics) + if latestEvent == nil || event.created_at > latestEvent!.created_at { + latestEvent = event.to_owned() + } + } + } + + guard let event = latestEvent else { return [] } + return NIP17.parseDMRelayList(event: event) + } + @MainActor static var empty: DamusState { let empty_pub: Pubkey = .empty diff --git a/damus/Features/DMs/Views/DMChatView.swift b/damus/Features/DMs/Views/DMChatView.swift index 50d13ccce2..dcff7bc7a8 100644 --- a/damus/Features/DMs/Views/DMChatView.swift +++ b/damus/Features/DMs/Views/DMChatView.swift @@ -12,11 +12,14 @@ struct DMChatView: View, KeyboardReadable { let damus_state: DamusState @FocusState private var isTextFieldFocused: Bool @ObservedObject var dms: DirectMessageModel - + @State private var showRelayWarning = false + @State private var pendingMessageContent: String? = nil + @State private var isSending = false + var pubkey: Pubkey { dms.pubkey } - + var Messages: some View { ScrollViewReader { scroller in ScrollView { @@ -28,26 +31,28 @@ struct DMChatView: View, KeyboardReadable { EndBlock(height: 1) } .padding(.horizontal) - } .dismissKeyboardOnTap() .onAppear { scroll_to_end(scroller) - }.onChange(of: dms.events.count) { _ in + } + .onChange(of: dms.events.count) { _ in scroll_to_end(scroller, animated: true) } - - Footer - .onReceive(keyboardPublisher) { visible in - guard visible else { - return - } - DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { - scroll_to_end(scroller, animated: true) - } + .onReceive(keyboardPublisher) { visible in + guard visible else { + return + } + // Note: Simulator hardware keyboards can bypass keyboard insets; the iOS software keyboard behaves correctly. + DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { + scroll_to_end(scroller, animated: true) } + } + } + .safeAreaInset(edge: .bottom, spacing: 0) { + Footer + .padding(.bottom, isTextFieldFocused ? 0 : tabHeight) } - .padding(.bottom, isTextFieldFocused ? 0 : tabHeight) } func scroll_to_end(_ scroller: ScrollViewProxy, animated: Bool = false) { @@ -61,7 +66,7 @@ struct DMChatView: View, KeyboardReadable { } var Header: some View { - return NavigationLink(value: Route.ProfileByKey(pubkey: pubkey)) { + NavigationLink(value: Route.ProfileByKey(pubkey: pubkey)) { HStack { ProfilePicView(pubkey: pubkey, size: 24, highlight: .none, profiles: damus_state.profiles, disable_animation: damus_state.settings.disable_animation, damusState: damus_state) @@ -99,50 +104,339 @@ struct DMChatView: View, KeyboardReadable { } } + /// Whether we'll send using NIP-17 (requires private key) + private var willSendNIP17: Bool { + damus_state.keypair.privkey != nil + } + var Footer: some View { - - HStack(spacing: 0) { - InputField - - if !dms.draft.isEmpty { - Button( - role: .none, - action: { - Task { await send_message() } + VStack(spacing: 0) { + HStack(spacing: 0) { + InputField + + if !dms.draft.isEmpty || isSending { + // Keep the tap target at least 44x44 per HIG. + Button( + role: .none, + action: { + guard !isSending else { return } + let draftContent = dms.draft + dms.draft = "" // Clear immediately for responsive feel + isSending = true + Task { + await send_message(content: draftContent) + await MainActor.run { isSending = false } + } + } + ) { + if isSending { + ProgressView() + .frame(width: 24, height: 24) + } else { + Label("", image: "send") + .font(.title) + } } - ) { - Label("", image: "send") - .font(.title) + .disabled(isSending) + .frame(minWidth: 44, minHeight: 44) + .contentShape(Rectangle()) } } } - - /* - Text(dms.draft).opacity(0).padding(.all, 8) - .fixedSize(horizontal: false, vertical: true) - .frame(minHeight: 70, maxHeight: 150, alignment: .bottom) - */ } - func send_message() async { - let tags = [["p", pubkey.hex()]] - guard let post_blocks = parse_post_blocks(content: dms.draft)?.blocks else { + func send_message(content draftContent: String) async { + guard let post_blocks = parse_post_blocks(content: draftContent)?.blocks else { return } let content = post_blocks.map({ pb in pb.asString }).joined(separator: "") + // Try NIP-17 first (more private), fall back to NIP-04 + if let fullKeypair = damus_state.keypair.to_full() { + // Check for recipient's DM relay list (kind 10050) + let recipientDMRelays = await fetchDMRelayList(for: pubkey) + + if recipientDMRelays.isEmpty { + // No DM relay list - show warning and ask user + pendingMessageContent = content + showRelayWarning = true + } else { + // DM Outbox: Send to recipient's DM relays + // sendToEphemeralRelays handles connect, send, and lease lifecycle + #if DEBUG + print("[DM-DEBUG] DM Outbox: Attempting to send to \(recipientDMRelays.count) DM relays") + #endif + let success = await send_nip17_message(content: content, sender: fullKeypair, toRelays: recipientDMRelays) + + if !success { + // Failed to connect to any of recipient's DM relays - show warning + #if DEBUG + print("[DM-DEBUG] DM Outbox: Connection failed, showing fallback warning") + #endif + pendingMessageContent = content + showRelayWarning = true + } + } + } else { + // Read-only mode or no private key - try NIP-04 + await send_nip04_message(content: content) + end_editing() + } + } + + /// Fetches the DM relay list (kind 10050) for a pubkey. + /// Returns the most recent relay list (by created_at) to handle replaceable events correctly. + /// Performs a quick local lookup, then does a bounded network fetch if needed. + private func fetchDMRelayList(for target: Pubkey) async -> [RelayURL] { + let filter = NostrFilter(kinds: [.dm_relay_list], authors: [target]) + + // Step 1: Check local cache first (fast path) + if let localEvent = await fetchLatestEvent(filter: filter, timeout: .seconds(1), streamMode: .ndbOnly, targetRelays: nil) { + #if DEBUG + print("[DM-DEBUG] DM Relay List: Found local kind:10050 for \(target.npub)") + #endif + return NIP17.parseDMRelayList(event: localEvent) + } + + // Step 2: Try network via best-effort relays + await damus_state.nostrNetwork.awaitConnection(timeout: .seconds(5)) + let bestEffortRelays = await MainActor.run { + Array(damus_state.nostrNetwork.userRelayList.getBestEffortRelayList().relays.keys) + } + + if !bestEffortRelays.isEmpty { + let _ = await damus_state.nostrNetwork.ensureConnected(to: bestEffortRelays, timeout: .seconds(5)) + if let networkEvent = await fetchLatestEvent(filter: filter, timeout: .seconds(6), streamMode: .ndbAndNetworkParallel(networkOptimization: nil), targetRelays: bestEffortRelays) { + #if DEBUG + print("[DM-DEBUG] DM Relay List: Found network kind:10050 for \(target.npub)") + #endif + return NIP17.parseDMRelayList(event: networkEvent) + } + } + + // Step 3: Try relay hints from NIP-65 + let relayHints = await fetchNIP65RelayHints(for: target) + guard !relayHints.isEmpty else { + #if DEBUG + print("[DM-DEBUG] DM Relay List: No kind:10050 found for \(target.npub)") + #endif + return [] + } + + await damus_state.nostrNetwork.acquireEphemeralRelays(relayHints) + defer { Task { await damus_state.nostrNetwork.releaseEphemeralRelays(relayHints) } } + + let connectedRelays = await damus_state.nostrNetwork.ensureConnected(to: relayHints, timeout: .seconds(5)) + let targetRelays = connectedRelays.isEmpty ? nil : connectedRelays + + if let hintedEvent = await fetchLatestEvent(filter: filter, timeout: .seconds(6), streamMode: .ndbAndNetworkParallel(networkOptimization: nil), targetRelays: targetRelays) { + #if DEBUG + print("[DM-DEBUG] DM Relay List: Found hinted kind:10050 for \(target.npub)") + #endif + return NIP17.parseDMRelayList(event: hintedEvent) + } + + #if DEBUG + print("[DM-DEBUG] DM Relay List: No kind:10050 found for \(target.npub)") + #endif + return [] + } + + /// Fetches relay hints (kind 10002) to locate a user's DM relay list. + private func fetchNIP65RelayHints(for target: Pubkey) async -> [RelayURL] { + let filter = NostrFilter(kinds: [.relay_list], authors: [target]) + + guard let relayListNote = await fetchLatestEvent(filter: filter, timeout: .seconds(6), streamMode: .ndbAndNetworkParallel(networkOptimization: nil), targetRelays: nil), + let relayList = try? NIP65.RelayList(event: relayListNote) else { + #if DEBUG + print("[DM-DEBUG] DM Relay List: No relay hints found for \(target.npub)") + #endif + return [] + } + + let relays = Array(relayList.relays.keys) + #if DEBUG + print("[DM-DEBUG] DM Relay List: Found \(relays.count) relay hint(s) for \(target.npub)") + #endif + return relays + } + + /// Finds the most recent replaceable event matching the filter within the given timeout. + /// Works for any replaceable event kind (10050, 10002, etc.). + private func fetchLatestEvent( + filter: NostrFilter, + timeout: Duration, + streamMode: NostrNetworkManager.StreamMode, + targetRelays: [RelayURL]? + ) async -> NdbNote? { + var latestEvent: NdbNote? = nil + var latestTimestamp: UInt32 = 0 + + for await lender in damus_state.nostrNetwork.reader.streamExistingEvents( + filters: [filter], + to: targetRelays, + timeout: timeout, + streamMode: streamMode + ) { + lender.justUseACopy { event in + if event.created_at > latestTimestamp { + latestTimestamp = event.created_at + latestEvent = event + } + } + } + + return latestEvent + } + + /// Ensures our own DM relay list (kind 10050) is published + private func ensureOwnDMRelayListPublished(sender: FullKeypair) async { + // Check if we've already published + let filter = NostrFilter(kinds: [.dm_relay_list], authors: [sender.pubkey]) + var hasExisting = false + + for await lender in damus_state.nostrNetwork.reader.streamExistingEvents( + filters: [filter], + timeout: .seconds(2) + ) { + lender.justUseACopy { _ in hasExisting = true } + if hasExisting { break } + } + + if hasExisting { return } + + // Get 2-3 of our relays to use as DM relays + let relayList = await MainActor.run { + damus_state.nostrNetwork.userRelayList.getBestEffortRelayList() + } + let ourRelays = Array(relayList.relays.keys.prefix(3)) + + guard !ourRelays.isEmpty, + let dmRelayList = NIP17.createDMRelayList(relays: ourRelays, keypair: sender.to_keypair()) else { + return + } + + // Publish our DM relay list + await damus_state.nostrNetwork.postbox.send(dmRelayList) + } + + /// Send a NIP-17 private direct message (kind 14 wrapped in kind 1059) + /// - Returns: true if message was sent successfully, false if connection to relays failed + @discardableResult + private func send_nip17_message(content: String, sender: FullKeypair, toRelays: [RelayURL]?) async -> Bool { + #if DEBUG + print("[DM-DEBUG] NIP-17: Starting send to \(pubkey.npub)") + #endif + + // Ensure our own DM relay list is published (for receiving replies) + await ensureOwnDMRelayListPublished(sender: sender) + + // Create gift-wrapped message (one for recipient, one for sender) + guard let (recipientWrap, senderWrap) = await NIP17.createMessage( + content: content, + to: pubkey, + from: sender + ) else { + #if DEBUG + print("[DM-DEBUG] NIP-17: Failed to create gift wraps, falling back to NIP-04") + #endif + await send_nip04_message(content: content) + return true // NIP-04 fallback succeeded + } + + #if DEBUG + print("[DM-DEBUG] NIP-17: Created gift wraps - recipient:\(recipientWrap.id.hex().prefix(8)) sender:\(senderWrap.id.hex().prefix(8))") + #endif + + // Send recipient's gift wrap to their DM relays (with proper ephemeral relay lifecycle) + if let targetRelays = toRelays, !targetRelays.isEmpty { + #if DEBUG + print("[DM-DEBUG] NIP-17: Sending to recipient's DM relays: \(targetRelays.map { $0.absoluteString })") + #endif + let sentTo = await damus_state.nostrNetwork.sendToEphemeralRelays(recipientWrap, to: targetRelays) + #if DEBUG + print("[DM-DEBUG] NIP-17: Connected to \(sentTo.count)/\(targetRelays.count) relays") + #endif + + if sentTo.isEmpty { + #if DEBUG + print("[DM-DEBUG] NIP-17: Failed to connect to any DM relays") + #endif + return false + } + } else { + #if DEBUG + print("[DM-DEBUG] NIP-17: Sending to our relays (fallback)") + #endif + await damus_state.nostrNetwork.postbox.send(recipientWrap) + } + + dms.draft = "" + + // Send sender's self-wrap to our own DM relays for cross-device recovery + // Fetch our own 10050 relay list (should exist after ensureOwnDMRelayListPublished) + let senderDMRelays = await fetchDMRelayList(for: sender.pubkey) + if !senderDMRelays.isEmpty { + #if DEBUG + print("[DM-DEBUG] NIP-17: Sending self-wrap to our DM relays: \(senderDMRelays.map { $0.absoluteString })") + #endif + let sentTo = await damus_state.nostrNetwork.sendToEphemeralRelays(senderWrap, to: senderDMRelays) + #if DEBUG + print("[DM-DEBUG] NIP-17: Self-wrap sent to \(sentTo.count)/\(senderDMRelays.count) DM relays") + #endif + } else { + #if DEBUG + print("[DM-DEBUG] NIP-17: No DM relays found for self, sending to regular relays") + #endif + await damus_state.nostrNetwork.postbox.send(senderWrap) + } + + // Note: We don't create a local display event here because the self-wrap + // will be received back from our DM relays very quickly. Creating a display + // event with a different ID than the actual rumor causes duplicate messages. + // The self-wrap flow ensures the message appears in the UI with the correct ID. + + end_editing() + return true + } + + /// Called when user confirms sending without DM relay list + private func sendWithFallback() async { + guard let content = pendingMessageContent, + let sender = damus_state.keypair.to_full() else { + return + } + pendingMessageContent = nil + await send_nip17_message(content: content, sender: sender, toRelays: nil) + } + + /// Send a NIP-04 direct message (legacy, kind 4) + private func send_nip04_message(content: String) async { + #if DEBUG + print("[DM-DEBUG] NIP-04: Starting send to \(pubkey.npub)") + #endif + + let tags = [["p", pubkey.hex()]] + guard let dm = NIP04.create_dm(content, to_pk: pubkey, tags: tags, keypair: damus_state.keypair) else { - print("error creating dm") + #if DEBUG + print("[DM-DEBUG] NIP-04: Failed to create DM") + #endif return } + #if DEBUG + print("[DM-DEBUG] NIP-04: Created DM id:\(dm.id.hex().prefix(8))") + #endif + dms.draft = "" await damus_state.nostrNetwork.postbox.send(dm) - - handle_incoming_dm(ev: dm, our_pubkey: damus_state.pubkey, dms: damus_state.dms, prev_events: NewEventsBits()) + #if DEBUG + print("[DM-DEBUG] NIP-04: Sent to relays") + #endif - end_editing() + handle_incoming_dm(ev: dm, our_pubkey: damus_state.pubkey, dms: damus_state.dms, prev_events: NewEventsBits()) } var body: some View { @@ -158,6 +452,23 @@ struct DMChatView: View, KeyboardReadable { } .navigationTitle(NSLocalizedString("DMs", comment: "Navigation title for DMs view, where DM is the English abbreviation for Direct Message.")) .toolbar { Header } + .alert( + NSLocalizedString("No DM Relay List", comment: "Alert title when recipient has no kind 10050"), + isPresented: $showRelayWarning + ) { + Button(NSLocalizedString("Cancel", comment: "Cancel button"), role: .cancel) { + pendingMessageContent = nil + end_editing() + } + Button(NSLocalizedString("Send Anyway", comment: "Send message despite privacy warning")) { + Task { await sendWithFallback() } + } + } message: { + Text(NSLocalizedString( + "This user hasn't published DM relay preferences. Sending to your connected relays may reduce privacy as metadata will be visible to those relays.", + comment: "Privacy warning when recipient lacks kind 10050 DM relay list" + )) + } .onDisappear { if dms.draft.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { dms.draft = "" @@ -186,4 +497,3 @@ extension View { .background(content()) } } - diff --git a/damus/Features/DMs/Views/DMView.swift b/damus/Features/DMs/Views/DMView.swift index bebea4becc..b38d6c67da 100644 --- a/damus/Features/DMs/Views/DMView.swift +++ b/damus/Features/DMs/Views/DMView.swift @@ -14,6 +14,11 @@ struct DMView: View { var is_ours: Bool { event.pubkey == damus_state.pubkey } + + /// Whether this message uses NIP-17 (kind 14) or NIP-04 (kind 4) + var isNIP17: Bool { + event.kind == NostrKind.dm_chat.rawValue + } var Mention: some View { Group { @@ -37,6 +42,7 @@ struct DMView: View { var DM: some View { HStack { + let _ = debugPrintDM() if is_ours { Spacer(minLength: UIScreen.main.bounds.width * 0.2) } @@ -44,7 +50,7 @@ struct DMView: View { let should_blur_img = should_blur_images(settings: damus_state.settings, contacts: damus_state.contacts, ev: event, our_pubkey: damus_state.pubkey) VStack(alignment: .trailing) { - NoteContentView(damus_state: damus_state, event: event, blur_images: should_blur_img, size: .normal, options: dm_options) + NoteContentView(damus_state: damus_state, event: event, blur_images: should_blur_img, size: .normal, options: dm_options, textColor: is_ours ? .white : .primary) .fixedSize(horizontal: false, vertical: true) .padding([.top, .leading, .trailing], 10) .padding([.bottom], 10) @@ -54,6 +60,15 @@ struct DMView: View { .cornerRadius(8.0) .tint(is_ours ? Color.white : Color.accentColor) + HStack(spacing: 4) { + // Encryption indicator with label + Image(systemName: isNIP17 ? "lock.shield.fill" : "lock.open.fill") + .font(.caption) + Text(isNIP17 ? "private" : "legacy") + .font(.caption) + } + .foregroundColor(isNIP17 ? .green : .gray.opacity(0.7)) + Text(format_relative_time(event.created_at)) .font(.footnote) .foregroundColor(.gray) @@ -66,12 +81,18 @@ struct DMView: View { } } + private func debugPrintDM() { + #if DEBUG + print("[DM-DEBUG] DMView: kind=\(event.kind) content_len=\(event.content_len) content='\(event.content.prefix(50))' get_content='\(event.get_content(damus_state.keypair).prefix(50))'") + #endif + } + var body: some View { VStack { Mention DM } - + } } diff --git a/damus/Features/Events/EventView.swift b/damus/Features/Events/EventView.swift index f60b73957c..b019226f8d 100644 --- a/damus/Features/Events/EventView.swift +++ b/damus/Features/Events/EventView.swift @@ -7,6 +7,7 @@ import Foundation import SwiftUI +import UIKit enum EventViewKind { case small @@ -119,19 +120,31 @@ func make_actionbar_model(ev: NoteId, damus: DamusState) -> ActionBarModel { return model } +/// Returns a Dynamic Type-aware font for the given event view size and user font multiplier. func eventviewsize_to_font(_ size: EventViewKind, font_size: Double) -> Font { + let baseSize: CGFloat + let textStyle: UIFont.TextStyle + switch size { case .small: - return Font.system(size: 12.0 * font_size) + baseSize = 12.0 * font_size + textStyle = .caption1 case .normal: - return Font.system(size: 17.0 * font_size) // Assuming .body is 17pt by default + baseSize = 17.0 * font_size + textStyle = .body case .selected: - return .custom("selected", size: 21.0 * font_size) + baseSize = 21.0 * font_size + textStyle = .title2 case .title: - return Font.system(size: 24.0 * font_size) // Assuming .title is 24pt by default + baseSize = 24.0 * font_size + textStyle = .title1 case .subheadline: - return Font.system(size: 14.0 * font_size) // Assuming .subheadline is 14pt by default + baseSize = 14.0 * font_size + textStyle = .subheadline } + + let scaledUIFont = UIFontMetrics(forTextStyle: textStyle).scaledFont(for: UIFont.systemFont(ofSize: baseSize)) + return Font(scaledUIFont) } func eventviewsize_to_uifont(_ size: EventViewKind) -> UIFont { diff --git a/damus/Features/Events/Models/LoadableNostrEventView.swift b/damus/Features/Events/Models/LoadableNostrEventView.swift index 6eae587e03..77cc98634a 100644 --- a/damus/Features/Events/Models/LoadableNostrEventView.swift +++ b/damus/Features/Events/Models/LoadableNostrEventView.swift @@ -78,7 +78,7 @@ class LoadableNostrEventViewModel: ObservableObject { case .zap, .zap_request: guard let zap = await get_zap(from: ev, state: damus_state) else { return .not_found } return .loaded(route: Route.Zaps(target: zap.target)) - case .contacts, .metadata, .delete, .boost, .chat, .mute_list, .list_deprecated, .draft, .nwc_request, .nwc_response, .http_auth, .status, .relay_list, .follow_list, .interest_list, .contact_card, .live, .live_chat: + case .contacts, .metadata, .delete, .boost, .chat, .mute_list, .list_deprecated, .draft, .nwc_request, .nwc_response, .http_auth, .status, .relay_list, .follow_list, .interest_list, .contact_card, .live, .live_chat, .seal, .dm_chat, .gift_wrap, .dm_relay_list: return .unknown_or_unsupported_kind } case .naddr(let naddr): diff --git a/damus/Features/Events/Models/NoteContent.swift b/damus/Features/Events/Models/NoteContent.swift index 51d5ba2fed..6ad02c3086 100644 --- a/damus/Features/Events/Models/NoteContent.swift +++ b/damus/Features/Events/Models/NoteContent.swift @@ -67,18 +67,47 @@ func note_artifact_is_separated(kind: NostrKind?) -> Bool { } func render_immediately_available_note_content(ndb: Ndb, ev: NostrEvent, profiles: Profiles, keypair: Keypair) -> NoteArtifacts { + #if DEBUG + let isDM = ev.known_kind == .dm_chat || ev.known_kind == .dm + if isDM { + print("[DM-DEBUG] render_artifacts: kind=\(ev.kind) id=\(ev.id.hex().prefix(8)) contentLen=\(ev.content_len) content='\(ev.content.prefix(30))'") + } + #endif + if ev.known_kind == .longform { return .longform(LongformContent(ev.content)) } - + do { return try NdbBlockGroup.borrowBlockGroup(event: ev, using: ndb, and: keypair, borrow: { blocks in - return .separated(render_blocks(blocks: blocks, profiles: profiles, can_hide_last_previewable_refs: true)) + let result = render_blocks(blocks: blocks, profiles: profiles, can_hide_last_previewable_refs: true) + #if DEBUG + if isDM { + print("[DM-DEBUG] render_artifacts: SUCCESS via blocks, charCount=\(result.content.attributed.characters.count)") + } + #endif + // Fallback: if blocks render empty but event has content, use just_content + if result.content.attributed.characters.count == 0 && ev.content_len > 0 { + let content = ev.get_content(keypair) + #if DEBUG + if isDM { + print("[DM-DEBUG] render_artifacts: blocks empty but content exists, using just_content='\(content.prefix(30))'") + } + #endif + return .separated(.just_content(content)) + } + return .separated(result) }) } catch { // TODO: Improve error handling in the future, bubbling it up so that the view can decide how display errors. Keep legacy behavior for now. - return .separated(.just_content(ev.get_content(keypair))) + let content = ev.get_content(keypair) + #if DEBUG + if isDM { + print("[DM-DEBUG] render_artifacts: FALLBACK due to error: \(error), using content='\(content.prefix(30))'") + } + #endif + return .separated(.just_content(content)) } } diff --git a/damus/Features/Events/NoteContentView.swift b/damus/Features/Events/NoteContentView.swift index 3983c4eccc..4c69a40250 100644 --- a/damus/Features/Events/NoteContentView.swift +++ b/damus/Features/Events/NoteContentView.swift @@ -51,6 +51,7 @@ struct NoteContentView: View { let preview_height: CGFloat? let options: EventViewOptions let highlightTerms: [String] + let textColor: Color? @State var isAppleTranslationPopoverPresented: Bool = false @@ -62,16 +63,26 @@ struct NoteContentView: View { if damus_state.settings.undistractMode { return .separated(.just_content(Undistractor.makeGibberish(text: event.get_content(damus_state.keypair)))) } - return self.artifacts_model.state.artifacts ?? .separated(.just_content(event.get_content(damus_state.keypair))) + let artifacts = self.artifacts_model.state.artifacts ?? .separated(.just_content(event.get_content(damus_state.keypair))) + #if DEBUG + // Debug logging for DM content + if event.known_kind == .dm_chat || event.known_kind == .dm { + if case .separated(let sep) = artifacts { + print("[DM-DEBUG] NoteContentView: kind=\(event.kind) charCount=\(sep.content.attributed.characters.count) content='\(String(sep.content.attributed.characters.prefix(50)))'") + } + } + #endif + return artifacts } - init(damus_state: DamusState, event: NostrEvent, blur_images: Bool, size: EventViewKind, options: EventViewOptions, highlightTerms: [String] = []) { + init(damus_state: DamusState, event: NostrEvent, blur_images: Bool, size: EventViewKind, options: EventViewOptions, highlightTerms: [String] = [], textColor: Color? = nil) { self.damus_state = damus_state self.event = event self.blur_images = blur_images self.size = size self.options = options self.highlightTerms = highlightTerms + self.textColor = textColor self.preview_height = lookup_cached_preview_size(previews: damus_state.previews, evid: event.id) let cached = damus_state.events.get_cache_data(event.id) self._preview_model = ObservedObject(wrappedValue: cached.preview_model) @@ -131,13 +142,16 @@ struct NoteContentView: View { if truncate_very_short { TruncatedText(text: content, maxChars: 140, show_show_more_button: !options.contains(.no_show_more)) .font(eventviewsize_to_font(size, font_size: damus_state.settings.font_size)) + .foregroundStyle(textColor ?? Color.primary) } else if truncate { TruncatedText(text: content, show_show_more_button: !options.contains(.no_show_more)) .font(eventviewsize_to_font(size, font_size: damus_state.settings.font_size)) + .foregroundStyle(textColor ?? Color.primary) } else { content.text .font(eventviewsize_to_font(size, font_size: damus_state.settings.font_size)) + .foregroundStyle(textColor ?? Color.primary) } } } @@ -173,6 +187,13 @@ struct NoteContentView: View { func MainContent(artifacts: NoteArtifactsSeparated) -> some View { let contentToRender = highlightedContent(artifacts.content) + #if DEBUG + // Debug: log rendering path for DMs + if event.known_kind == .dm_chat || event.known_kind == .dm { + print("[DM-DEBUG] MainContent: size=\(size) charCount=\(artifacts.content.attributed.characters.count) truncate=\(truncate) with_padding=\(with_padding)") + } + #endif + return VStack(alignment: .leading) { if artifacts.content.attributed.characters.count != 0 { if size == .selected { @@ -260,7 +281,7 @@ struct NoteContentView: View { if artifacts.media.count > 1 { Text("\(artifacts.media.count)") - .font(.system(size: 10, weight: .semibold)) + .font(.system(size: 11, weight: .semibold)) .foregroundStyle(.white) .padding(.horizontal, 4) .padding(.vertical, 2) diff --git a/damus/Features/Posting/Models/PostBox.swift b/damus/Features/Posting/Models/PostBox.swift index 97edaaeda6..62de40cf63 100644 --- a/damus/Features/Posting/Models/PostBox.swift +++ b/damus/Features/Posting/Models/PostBox.swift @@ -87,6 +87,13 @@ actor PostBox { events.removeValue(forKey: evid) return nil } + + /// Force-cancels a pending send regardless of delay settings. + /// - Parameter evid: The event id to remove from the retry queue. + /// - Returns: true if the event was removed, false if it was not found. + func force_cancel_send(evid: NoteId) -> Bool { + return events.removeValue(forKey: evid) != nil + } func try_flushing_events() async { let now = Int64(Date().timeIntervalSince1970) @@ -190,4 +197,3 @@ actor PostBox { } } - diff --git a/damus/Features/Relays/Views/DMRelayListView.swift b/damus/Features/Relays/Views/DMRelayListView.swift new file mode 100644 index 0000000000..bc4a62ffcd --- /dev/null +++ b/damus/Features/Relays/Views/DMRelayListView.swift @@ -0,0 +1,329 @@ +// +// DMRelayListView.swift +// damus +// +// Created for NIP-17 DM relay list (kind:10050) management +// + +import SwiftUI + +/// View for managing the user's DM relay list (kind:10050) +/// +/// Per NIP-17, users publish a kind:10050 event listing relays where they receive DMs. +/// This view allows users to view, add, and remove relays from that list. +struct DMRelayListView: View { + let state: DamusState + + @State private var dmRelays: [RelayURL] = [] + @State private var isLoading = true + @State private var showAddRelay = false + @State private var newRelayURL = "" + @State private var isSaving = false + @State private var errorMessage: String? = nil + @State private var hasExistingList = false + + var body: some View { + ScrollView(showsIndicators: false) { + VStack(alignment: .leading, spacing: 16) { + // Header + HStack { + Text("DM Relays", comment: "Title for DM relay list section") + .font(.system(size: 32, weight: .bold)) + + Spacer() + + if state.keypair.privkey != nil { + Button(action: { showAddRelay = true }) { + Text("Add relay", comment: "Button to add a DM relay") + .padding(10) + } + .buttonStyle(NeutralButtonStyle()) + } + } + .padding(.top, 5) + + // Explanation text + Text("Relays where you receive encrypted private messages (NIP-17)", comment: "Explanation of what DM relays are for") + .font(.subheadline) + .foregroundColor(.secondary) + + if isLoading { + HStack { + Spacer() + ProgressView() + .padding() + Spacer() + } + } else if dmRelays.isEmpty { + VStack(spacing: 12) { + Text("No DM relays configured", comment: "Message when user has no DM relays") + .font(.headline) + .foregroundColor(.secondary) + + Text("Add relays to receive encrypted DMs from other NIP-17 compatible apps.", comment: "Hint to add DM relays") + .font(.subheadline) + .foregroundColor(.secondary) + .multilineTextAlignment(.center) + + if state.keypair.privkey != nil { + Button(action: setupDefaultRelays) { + Text("Use default relays", comment: "Button to set up default DM relays") + .padding(.horizontal, 16) + .padding(.vertical, 8) + } + .buttonStyle(GradientButtonStyle(padding: 10)) + .padding(.top, 8) + } + } + .frame(maxWidth: .infinity) + .padding(.vertical, 40) + } else { + // Relay list + ForEach(dmRelays, id: \.absoluteString) { relay in + DMRelayRowView( + state: state, + relay: relay, + onRemove: { removeRelay(relay) } + ) + Divider() + } + } + + if let error = errorMessage { + Text(error) + .font(.caption) + .foregroundColor(.red) + .padding(.top, 8) + } + + Spacer() + .padding(25) + } + .padding(.horizontal) + } + .sheet(isPresented: $showAddRelay) { + AddDMRelaySheet( + newRelayURL: $newRelayURL, + onAdd: addRelay, + onCancel: { showAddRelay = false } + ) + .presentationDetents([.height(300)]) + .presentationDragIndicator(.visible) + } + .onAppear { + Task { await loadDMRelays() } + } + } + + // MARK: - Actions + + private func loadDMRelays() async { + isLoading = true + errorMessage = nil + + let relays = await state.fetchOwnDMRelayList() + + await MainActor.run { + self.dmRelays = relays + self.hasExistingList = !relays.isEmpty + self.isLoading = false + } + } + + private func addRelay() { + guard !newRelayURL.isEmpty else { return } + + var urlString = newRelayURL.trimmingCharacters(in: .whitespacesAndNewlines) + if !urlString.hasPrefix("wss://") && !urlString.hasPrefix("ws://") { + urlString = "wss://" + urlString + } + + guard let url = RelayURL(urlString) else { + errorMessage = NSLocalizedString("Invalid relay URL", comment: "Error when relay URL is invalid") + return + } + + // Check for duplicates + if dmRelays.contains(where: { $0.absoluteString == url.absoluteString }) { + errorMessage = NSLocalizedString("Relay already in list", comment: "Error when relay is already added") + return + } + + dmRelays.append(url) + newRelayURL = "" + showAddRelay = false + errorMessage = nil + + Task { await publishDMRelayList() } + } + + private func removeRelay(_ relay: RelayURL) { + dmRelays.removeAll { $0.absoluteString == relay.absoluteString } + Task { await publishDMRelayList() } + } + + private func setupDefaultRelays() { + // Use same defaults as bootstrap relays, but subset for DMs + let defaultDMRelays = [ + "wss://relay.damus.io", + "wss://nos.lol", + "wss://nostr.wine" + ].compactMap { RelayURL($0) } + + dmRelays = defaultDMRelays + Task { await publishDMRelayList() } + } + + private func publishDMRelayList() async { + guard let keypair = state.keypair.to_full()?.to_keypair() else { + await MainActor.run { + errorMessage = NSLocalizedString("Cannot publish: no private key", comment: "Error when user has no private key") + } + return + } + + await MainActor.run { isSaving = true } + + guard let event = NIP17.createDMRelayList(relays: dmRelays, keypair: keypair) else { + await MainActor.run { + errorMessage = NSLocalizedString("Failed to create relay list event", comment: "Error creating kind:10050 event") + isSaving = false + } + return + } + + // Publish to our relays + await state.nostrNetwork.postbox.send(event) + + await MainActor.run { + isSaving = false + hasExistingList = true + errorMessage = nil + } + + #if DEBUG + print("[DM-Relays] Published kind:10050 with \(dmRelays.count) relays") + #endif + } +} + +// MARK: - DMRelayRowView + +struct DMRelayRowView: View { + let state: DamusState + let relay: RelayURL + let onRemove: () -> Void + + @ObservedObject private var modelCache: RelayModelCache + + init(state: DamusState, relay: RelayURL, onRemove: @escaping () -> Void) { + self.state = state + self.relay = relay + self.onRemove = onRemove + self.modelCache = state.relay_model_cache + } + + var body: some View { + HStack { + let meta = modelCache.model(with_relay_id: relay)?.metadata + + RelayPicView(relay: relay, icon: meta?.icon, size: 55, highlight: .none, disable_animation: false) + + VStack(alignment: .leading) { + HStack { + Text(meta?.name ?? relay.url.host() ?? relay.url.absoluteString) + .font(.headline) + .padding(.bottom, 2) + .lineLimit(1) + + if relay.absoluteString.hasSuffix(".onion") { + Image("tor") + .resizable() + .interpolation(.none) + .frame(width: 20, height: 20) + } + } + Text(relay.absoluteString) + .font(.subheadline) + .foregroundColor(.gray) + .lineLimit(1) + } + + Spacer() + + if state.keypair.privkey != nil { + Button(action: onRemove) { + Image("minus-circle") + .resizable() + .frame(width: 20, height: 20) + .foregroundColor(.red) + } + } + } + .contentShape(Rectangle()) + } +} + +// MARK: - AddDMRelaySheet + +struct AddDMRelaySheet: View { + @Binding var newRelayURL: String + let onAdd: () -> Void + let onCancel: () -> Void + + var body: some View { + VStack { + Text("Add DM Relay", comment: "Title for add DM relay sheet") + .font(.system(size: 20, weight: .bold)) + .padding(.vertical) + + Divider() + .padding(.bottom) + + HStack { + Label("", image: "copy2") + .onTapGesture { + if let pasted = UIPasteboard.general.string { + newRelayURL = pasted + } + } + + TextField( + NSLocalizedString("wss://some.relay.com", comment: "Placeholder for relay URL"), + text: $newRelayURL + ) + .autocorrectionDisabled(true) + .textInputAutocapitalization(.never) + + Label("", image: "close-circle") + .foregroundColor(.accentColor) + .opacity(newRelayURL.isEmpty ? 0.0 : 1.0) + .onTapGesture { newRelayURL = "" } + } + .padding(10) + .background(.secondary.opacity(0.2)) + .cornerRadius(10) + + Button(action: onAdd) { + HStack { + Text("Add relay", comment: "Button to add relay") + .bold() + } + .frame(minWidth: 300, maxWidth: .infinity, alignment: .center) + } + .buttonStyle(GradientButtonStyle(padding: 10)) + .padding(.vertical) + + Spacer() + } + .padding() + } +} + +// MARK: - Preview + +struct DMRelayListView_Previews: PreviewProvider { + static var previews: some View { + DMRelayListView(state: test_damus_state) + } +} diff --git a/damus/Features/Relays/Views/RelayConfigView.swift b/damus/Features/Relays/Views/RelayConfigView.swift index cc82ad1b4e..5bbb79b4fa 100644 --- a/damus/Features/Relays/Views/RelayConfigView.swift +++ b/damus/Features/Relays/Views/RelayConfigView.swift @@ -9,12 +9,15 @@ import SwiftUI enum RelayTab: Int, CaseIterable{ case myRelays = 0 + case dmRelays case recommended - + var title: String{ switch self { case .myRelays: return NSLocalizedString("My Relays", comment: "Title of the tab that shows the user's list of their own relays.") + case .dmRelays: + return NSLocalizedString("DM Relays", comment: "Title of the tab that shows the user's DM relay list for receiving encrypted messages.") case .recommended: return NSLocalizedString("Recommended", comment: "Title of the tab that shows the list of relays recommended by Damus.") } @@ -51,8 +54,11 @@ struct RelayConfigView: View { RelayList(title: RelayTab.myRelays.title, relayList: relays, recommended: false) .tag(0) - RelayList(title: RelayTab.recommended.title, relayList: recommended, recommended: true) + DMRelayListView(state: state) .tag(1) + + RelayList(title: RelayTab.recommended.title, relayList: recommended, recommended: true) + .tag(2) } ZStack{ HStack{ @@ -65,7 +71,7 @@ struct RelayConfigView: View { } } } - .frame(width: 235, height: 35) + .frame(width: 320, height: 35) .background(.damusNeutral3) .cornerRadius(30) .padding(.horizontal, 26) @@ -153,7 +159,7 @@ extension RelayConfigView{ .font(.system(size: 12, weight: isActive ? .bold : .regular)) .foregroundColor(isActive ? .damusAdaptableBlack : .damusAdaptableBlack.opacity(0.7)) } - .frame(width: 110, height: 30) + .frame(width: 100, height: 30) .background(isActive ? .damusAdaptableWhite.opacity(0.9) : .clear) .cornerRadius(30) } diff --git a/damus/Features/Settings/Views/StorageSettingsView.swift b/damus/Features/Settings/Views/StorageSettingsView.swift index c2a03afc49..dd460a5321 100644 --- a/damus/Features/Settings/Views/StorageSettingsView.swift +++ b/damus/Features/Settings/Views/StorageSettingsView.swift @@ -18,6 +18,20 @@ fileprivate enum CacheClearingState { case cleared } +/// Tracks the state of database compaction +fileprivate enum CompactionState { + case idle + case confirming + case compacting + case success + case failed(String) + + var isIdle: Bool { + if case .idle = self { return true } + return false + } +} + /// Storage category for display in list and chart struct StorageCategory: Identifiable { let id: String @@ -46,7 +60,8 @@ struct StorageSettingsView: View { @State private var isPreparingExport: Bool = false @State fileprivate var cache_clearing_state: CacheClearingState = .not_cleared @State var showing_cache_clear_alert: Bool = false - + @State fileprivate var compaction_state: CompactionState = .idle + /// Storage categories with cumulative ranges for angle selection (iOS 17+) private var categoryRanges: [(category: String, range: Range)] { guard let stats = stats else { return [] } @@ -165,6 +180,11 @@ struct StorageSettingsView: View { Section { self.ClearCacheButton } + + // Compact Database Section + Section(footer: Text("Compaction keeps all profiles and your own notes, removing everything else to free up space. The app will need to restart to apply.", comment: "Explanation of database compaction")) { + self.CompactDatabaseButton + } } // Loading state @@ -338,6 +358,85 @@ struct StorageSettingsView: View { secondaryButton: .cancel()) } } + + var CompactDatabaseButton: some View { + Button(action: { + if case .idle = compaction_state { + compaction_state = .confirming + } + }, label: { + HStack(spacing: 6) { + switch compaction_state { + case .idle, .confirming: + Image(systemName: "arrow.triangle.2.circlepath") + Text("Compact Database", comment: "Button to compact the NostrDB database.") + case .compacting: + ProgressView() + Text("Compacting...", comment: "Loading message indicating database compaction is in progress.") + case .success: + Image(systemName: "checkmark.circle.fill") + .foregroundColor(.green) + Text("Compaction complete. Restart to apply.", comment: "Message indicating compaction succeeded.") + case .failed(let msg): + Image(systemName: "xmark.circle.fill") + .foregroundColor(.red) + Text(msg) + } + } + }) + .disabled(!compaction_state.isIdle) + .alert( + Text("Compact Database", comment: "Compact database confirmation title"), + isPresented: Binding( + get: { if case .confirming = compaction_state { return true } else { return false } }, + set: { if !$0 { compaction_state = .idle } } + ) + ) { + Button(NSLocalizedString("Compact", comment: "Confirm compact button"), role: .destructive) { + compact_database() + } + Button(NSLocalizedString("Cancel", comment: "Cancel button"), role: .cancel) { + compaction_state = .idle + } + } message: { + Text("This will remove all notes except your own and keep all profiles. The app will need to restart to apply the changes.", comment: "Compact database confirmation message") + } + } + + func compact_database() { + compaction_state = .compacting + + let ndb = damus_state.ndb + let pubkey = damus_state.pubkey + + Task.detached { + guard let db_path = Ndb.db_path else { + await MainActor.run { compaction_state = .failed("Could not find database path") } + return + } + + let compact_path = "\(db_path)/compact" + let fm = FileManager.default + + // Create the compact output directory + try? fm.createDirectory(atPath: compact_path, withIntermediateDirectories: true) + + do { + let ok = try ndb.compact(output_path: compact_path, pubkeys: [pubkey]) + await MainActor.run { + if ok { + compaction_state = .success + } else { + compaction_state = .failed("Compaction failed") + } + } + } catch { + await MainActor.run { + compaction_state = .failed("Compaction error: \(error.localizedDescription)") + } + } + } + } } /// Pie chart displaying storage usage distribution (iOS 17+) diff --git a/damus/Features/Timeline/Models/HomeModel.swift b/damus/Features/Timeline/Models/HomeModel.swift index 86f25fa7e0..e1769063e2 100644 --- a/damus/Features/Timeline/Models/HomeModel.swift +++ b/damus/Features/Timeline/Models/HomeModel.swift @@ -288,6 +288,28 @@ class HomeModel: ContactsDelegate, ObservableObject { break // Don't care for now case .live, .live_chat: break + case .seal: + break // Seals are processed as part of gift wrap unwrapping + case .dm_chat: + // NIP-17: Handle unwrapped private DM rumors (kind 14) same as NIP-04 DMs + handle_dm(ev) + case .gift_wrap: + // NIP-17/NIP-59: Gift wraps are processed automatically by nostrdb + // when ingested. The unwrapped rumors (kind 14) are streamed separately. + #if DEBUG + // Debug fallback: try Swift-side unwrap to diagnose nostrdb issues + if let fullKeypair = damus_state.keypair.to_full() { + if let rumor = NIP17.unwrap(giftWrap: ev, recipientKeypair: fullKeypair) { + print("[DM-DEBUG] process_event: Swift unwrapped gift_wrap id:\(ev.id.hex().prefix(8)) -> rumor content:'\(rumor.content.prefix(30))'") + handle_dm(rumor) + } else { + print("[DM-DEBUG] process_event: Swift FAILED to unwrap gift_wrap id:\(ev.id.hex().prefix(8))") + } + } + #endif + break + case .dm_relay_list: + break // TODO: Handle NIP-17 DM relay preferences (kind 10050) } } @@ -548,15 +570,28 @@ class HomeModel: ContactsDelegate, ObservableObject { var our_blocklist_filter = NostrFilter(kinds: [.mute_list]) our_blocklist_filter.authors = [damus_state.pubkey] + // NIP-04 DMs (kind 4) sent to us var dms_filter = NostrFilter(kinds: [.dm]) + dms_filter.limit = 500 + dms_filter.pubkeys = [damus_state.pubkey] + // NIP-04 DMs (kind 4) we sent var our_dms_filter = NostrFilter(kinds: [.dm]) + our_dms_filter.authors = [damus_state.pubkey] - // friends only?... - //dms_filter.authors = friends - dms_filter.limit = 500 - dms_filter.pubkeys = [ damus_state.pubkey ] - our_dms_filter.authors = [ damus_state.pubkey ] + // NIP-17 gift wraps (kind 1059) - nostrdb unwraps these to kind 14 rumors + var giftwrap_filter = NostrFilter(kinds: [.gift_wrap]) + giftwrap_filter.pubkeys = [damus_state.pubkey] + giftwrap_filter.limit = 500 + + // NIP-17 DM rumors (kind 14) - unwrapped by nostrdb from gift wraps + var dm_chat_filter = NostrFilter(kinds: [.dm_chat]) + dm_chat_filter.pubkeys = [damus_state.pubkey] + dm_chat_filter.limit = 500 + + // NIP-17 DMs we sent (kind 14 from us) + var our_dm_chat_filter = NostrFilter(kinds: [.dm_chat]) + our_dm_chat_filter.authors = [damus_state.pubkey] var notifications_filter_kinds: [NostrKind] = [ .text, @@ -574,7 +609,8 @@ class HomeModel: ContactsDelegate, ObservableObject { let contacts_filter_chunks = contacts_filter.chunked(on: .authors, into: MAX_CONTACTS_ON_FILTER) let low_volume_important_filters = [our_contacts_filter, our_blocklist_filter, our_old_blocklist_filter, contact_cards_filter] let contacts_filters = contacts_filter_chunks + low_volume_important_filters - let dms_filters = [dms_filter, our_dms_filter] + // Include both NIP-04 (kind 4) and NIP-17 (kind 14 + kind 1059) DM filters + let dms_filters = [dms_filter, our_dms_filter, giftwrap_filter, dm_chat_filter, our_dm_chat_filter] //print_filters(relay_id: relay_id, filters: [home_filters, contacts_filters, notifications_filters, dms_filters]) @@ -608,17 +644,60 @@ class HomeModel: ContactsDelegate, ObservableObject { } self.dmsHandlerTask?.cancel() self.dmsHandlerTask = Task { + #if DEBUG + print("[DM-DEBUG] dmsHandlerTask: Starting DM stream") + #endif for await item in damus_state.nostrNetwork.reader.advancedStream(filters: dms_filters, streamMode: .ndbAndNetworkParallel(networkOptimization: .sinceOptimization)) { switch item { case .event(let lender): - await lender.justUseACopy({ await process_event(ev: $0, context: .other) }) + await lender.justUseACopy({ ev in + #if DEBUG + let kindName: String + switch ev.kind { + case NostrKind.dm.rawValue: kindName = "NIP-04" + case NostrKind.dm_chat.rawValue: kindName = "NIP-17" + case NostrKind.gift_wrap.rawValue: kindName = "gift_wrap" + default: kindName = "kind:\(ev.kind)" + } + if ev.kind == NostrKind.gift_wrap.rawValue { + let pTag = ev.tags.first(where: { $0.count >= 2 && $0[0].string() == "p" }) + let recipient = pTag.map { $0[1].string().prefix(16) } ?? "none" + print("[DM-DEBUG] dmsStream: Received gift_wrap id:\(ev.id.hex().prefix(8)) from:\(ev.pubkey.npub.prefix(16)) pTag:\(recipient)") + } else { + print("[DM-DEBUG] dmsStream: Received \(kindName) id:\(ev.id.hex().prefix(8)) from:\(ev.pubkey.npub.prefix(16))") + } + #endif + // Trigger nostrdb to reprocess gift wraps + if ev.kind == NostrKind.gift_wrap.rawValue { + let ndb = self.damus_state.ndb + Task.detached { + do { + let _ = try ndb.processGiftWraps() + } catch { + #if DEBUG + print("[DM-DEBUG] dmsStream: processGiftWraps error: \(error)") + #endif + } + } + } + await process_event(ev: ev, context: .other) + }) case .eose: + #if DEBUG + print("[DM-DEBUG] dmsStream: EOSE received") + #endif var dms = dms.dms.flatMap { $0.events } dms.append(contentsOf: incoming_dms) case .ndbEose: + #if DEBUG + print("[DM-DEBUG] dmsStream: ndbEOSE received, loading from local DB") + #endif var dms = dms.dms.flatMap { $0.events } dms.append(contentsOf: incoming_dms) - case .networkEose: break + case .networkEose: + #if DEBUG + print("[DM-DEBUG] dmsStream: networkEOSE received") + #endif } } } @@ -932,17 +1011,32 @@ class HomeModel: ContactsDelegate, ObservableObject { /// /// This method requests full DM history with negentropy. func fetchFullDMHistory() async { - // DMs sent to us (limit to prevent runaway pulls; user can pull again for more) + // NIP-04: DMs sent to us var dms_filter = NostrFilter(kinds: [.dm]) dms_filter.pubkeys = [damus_state.pubkey] dms_filter.limit = 500 - // DMs we sent + // NIP-04: DMs we sent var our_dms_filter = NostrFilter(kinds: [.dm]) our_dms_filter.authors = [damus_state.pubkey] our_dms_filter.limit = 500 - let filters = [dms_filter, our_dms_filter] + // NIP-17: Gift wraps sent to us (nostrdb unwraps to kind 14) + var giftwrap_filter = NostrFilter(kinds: [.gift_wrap]) + giftwrap_filter.pubkeys = [damus_state.pubkey] + giftwrap_filter.limit = 500 + + // NIP-17: DM rumors sent to us + var dm_chat_filter = NostrFilter(kinds: [.dm_chat]) + dm_chat_filter.pubkeys = [damus_state.pubkey] + dm_chat_filter.limit = 500 + + // NIP-17: DMs we sent + var our_dm_chat_filter = NostrFilter(kinds: [.dm_chat]) + our_dm_chat_filter.authors = [damus_state.pubkey] + our_dm_chat_filter.limit = 500 + + let filters = [dms_filter, our_dms_filter, giftwrap_filter, dm_chat_filter, our_dm_chat_filter] let timeoutSeconds: UInt64 = 20 for await lender in self.damus_state.nostrNetwork.reader.streamExistingEvents(filters: filters, timeout: .seconds(timeoutSeconds), streamMode: .ndbAndNetworkParallel(networkOptimization: .negentropy)) { @@ -953,11 +1047,22 @@ class HomeModel: ContactsDelegate, ObservableObject { @MainActor func handle_dm(_ ev: NostrEvent) { + #if DEBUG + let kindName = ev.kind == NostrKind.dm_chat.rawValue ? "NIP-17" : "NIP-04" + print("[DM-DEBUG] handle_dm: Received \(kindName) kind:\(ev.kind) id:\(ev.id.hex().prefix(8)) from:\(ev.pubkey.npub.prefix(16)) contentLen:\(ev.content.count) content:'\(ev.content.prefix(30))'") + #endif + guard should_show_event(state: damus_state, ev: ev) else { + #if DEBUG + print("[DM-DEBUG] handle_dm: Filtered out by should_show_event") + #endif return } - + damus_state.events.insert(ev) + #if DEBUG + print("[DM-DEBUG] handle_dm: Inserted into event cache") + #endif if !should_debounce_dms { self.incoming_dms.append(ev) @@ -1160,11 +1265,24 @@ func fetch_relay_metadata(relay_id: RelayURL) async throws -> RelayMetadata? { return nip11 } +/// Inserts a DM event into the appropriate conversation, applying basic sanity checks. @discardableResult func handle_incoming_dm(ev: NostrEvent, our_pubkey: Pubkey, dms: DirectMessagesModel, prev_events: NewEventsBits) -> (Bool, NewEventsBits?) { + // Guardrail: drop empty NIP-17 rumors to avoid blank bubbles from bad artifacts. + if ev.kind == NostrKind.dm_chat.rawValue, ev.content.isEmpty { + #if DEBUG + print("[DM-DEBUG] Dropping empty NIP-17 rumor id:\(ev.id)") + #endif + return (false, nil) + } + #if DEBUG + let kindName = ev.kind == NostrKind.dm_chat.rawValue ? "NIP-17" : "NIP-04" + print("[DM-DEBUG] handle_incoming_dm: Processing \(kindName) kind:\(ev.kind) id:\(ev.id.hex().prefix(8))") + #endif + var inserted = false var found = false - + let ours = ev.pubkey == our_pubkey var i = 0 @@ -1172,10 +1290,15 @@ func handle_incoming_dm(ev: NostrEvent, our_pubkey: Pubkey, dms: DirectMessagesM if ours { if let ref_pk = ev.referenced_pubkeys.first { the_pk = ref_pk - } else { - // self dm!? - print("TODO: handle self dm?") + #if DEBUG + print("[DM-DEBUG] handle_incoming_dm: Our outgoing DM to \(the_pk.npub.prefix(16))") + #endif } + // else: self dm - no logging needed + } else { + #if DEBUG + print("[DM-DEBUG] handle_incoming_dm: Incoming DM from \(the_pk.npub.prefix(16))") + #endif } for model in dms.dms { @@ -1184,7 +1307,9 @@ func handle_incoming_dm(ev: NostrEvent, our_pubkey: Pubkey, dms: DirectMessagesM inserted = insert_uniq_sorted_event(events: &(dms.dms[i].events), new_ev: ev) { $0.created_at < $1.created_at } - + #if DEBUG + print("[DM-DEBUG] handle_incoming_dm: Found existing conversation, inserted=\(inserted)") + #endif break } i += 1 @@ -1194,13 +1319,19 @@ func handle_incoming_dm(ev: NostrEvent, our_pubkey: Pubkey, dms: DirectMessagesM let model = DirectMessageModel(events: [ev], our_pubkey: our_pubkey, pubkey: the_pk) dms.dms.append(model) inserted = true + #if DEBUG + print("[DM-DEBUG] handle_incoming_dm: Created new conversation model") + #endif } - + var new_bits: NewEventsBits? = nil if inserted { new_bits = handle_last_events(new_events: prev_events, ev: ev, timeline: .dms, shouldNotify: !ours) + #if DEBUG + print("[DM-DEBUG] handle_incoming_dm: Event inserted successfully") + #endif } - + return (inserted, new_bits) } diff --git a/nostrdb/AsciiCharacter.swift b/damus/Nostrdb/AsciiCharacter.swift similarity index 100% rename from nostrdb/AsciiCharacter.swift rename to damus/Nostrdb/AsciiCharacter.swift diff --git a/nostrdb/Ndb+.swift b/damus/Nostrdb/Ndb+.swift similarity index 100% rename from nostrdb/Ndb+.swift rename to damus/Nostrdb/Ndb+.swift diff --git a/nostrdb/Ndb.swift b/damus/Nostrdb/Ndb.swift similarity index 92% rename from nostrdb/Ndb.swift rename to damus/Nostrdb/Ndb.swift index cd5f920b77..6ec4a34688 100644 --- a/nostrdb/Ndb.swift +++ b/damus/Nostrdb/Ndb.swift @@ -325,9 +325,80 @@ class Ndb { }) } + // MARK: Database compaction + + func compact(output_path: String, pubkeys: [Pubkey]) throws -> Bool { + return try withNdb({ + // Build a contiguous buffer of 32-byte pubkeys + var raw_pubkeys: [UInt8] = [] + raw_pubkeys.reserveCapacity(pubkeys.count * 32) + for pk in pubkeys { + pk.id.withUnsafeBytes { buf in + raw_pubkeys.append(contentsOf: buf) + } + } + + let result = output_path.withCString { path_cstr in + raw_pubkeys.withUnsafeBufferPointer { buf -> Int32 in + guard let base = buf.baseAddress else { return 0 } + return base.withMemoryRebound(to: (UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8).self, capacity: pubkeys.count) { ptr in + ndb_compact(self.ndb.ndb, path_cstr, ptr, Int32(pubkeys.count)) + } + } + } + + return result == 1 + }) + } + + /// Swaps a compacted database into place, replacing the current database. + /// Call this at startup before opening ndb. + /// Returns true if a swap was performed. + static func try_swap_compacted_db() -> Bool { + guard let db_path = Self.db_path else { return false } + + let fm = FileManager.default + let compact_db = "\(db_path)/compact/\(main_db_file_name)" + let current_db = "\(db_path)/\(main_db_file_name)" + let old_db = "\(db_path)/\(main_db_file_name).old" + + guard fm.fileExists(atPath: compact_db) else { return false } + + Log.info("Found compacted database, swapping into place...", for: .storage) + + do { + // Rename current -> old + if fm.fileExists(atPath: current_db) { + if fm.fileExists(atPath: old_db) { + try fm.removeItem(atPath: old_db) + } + try fm.moveItem(atPath: current_db, toPath: old_db) + } + + // Move compacted -> current + try fm.moveItem(atPath: compact_db, toPath: current_db) + + // Clean up old db and compact directory + if fm.fileExists(atPath: old_db) { + try? fm.removeItem(atPath: old_db) + } + try? fm.removeItem(atPath: "\(db_path)/compact") + + Log.info("Successfully swapped compacted database", for: .storage) + return true + } catch { + Log.error("Failed to swap compacted database: %@", for: .storage, String(describing: error)) + // Try to restore the old db if something went wrong + if !fm.fileExists(atPath: current_db) && fm.fileExists(atPath: old_db) { + try? fm.moveItem(atPath: old_db, toPath: current_db) + } + return false + } + } + // MARK: Thread safety mechanisms // Use these for all externally accessible methods that interact with the nostrdb database to prevent race conditions with app lifecycle events (i.e. NostrDB opening and closing) - + internal func withNdb(_ useFunction: () throws -> T, maxWaitTimeout: DispatchTimeInterval = .milliseconds(500)) throws -> T { guard !self.is_closed else { throw NdbStreamError.ndbClosed } return try self.ndbAccessLock.keepNdbOpen(during: { @@ -815,7 +886,38 @@ class Ndb { return pks } } - + + // MARK: Gift Wrap Support (NIP-17/NIP-59) + + /// Add a private key for gift wrap decryption. + /// Keys are dispatched to all ingester threads for automatic unwrapping of kind 1059 events. + /// Thread-safe: uses withNdb wrapper to ensure proper synchronization. + /// - Parameter privkey: The 32-byte private key to add + /// - Returns: true if the key was successfully added, false if ndb is closed or addition failed + func addKey(_ privkey: Privkey) -> Bool { + guard let result = try? withNdb({ + privkey.id.withUnsafeBytes { bytes in + guard let ptr = bytes.baseAddress else { return false } + let mutablePtr = UnsafeMutablePointer(mutating: ptr.assumingMemoryBound(to: UInt8.self)) + return ndb_add_key(ndb.ndb, mutablePtr) != 0 + } + }) else { + return false + } + return result + } + + /// Reprocess stored gift wraps with available keys. + /// Call this after adding a new key to decrypt previously received gift wraps. + /// - Returns: true if reprocessing was initiated successfully + func processGiftWraps() throws -> Bool { + return try withNdb({ + guard let txn = NdbTxn(ndb: self) else { return false } + var mutableTxn = txn.txn + return ndb_process_giftwraps(ndb.ndb, &mutableTxn) != 0 + }) + } + // MARK: NdbFilter queries and subscriptions func query(filters: [NdbFilter], maxResults: Int) throws -> [NoteKey] { diff --git a/nostrdb/NdbBlock.swift b/damus/Nostrdb/NdbBlock.swift similarity index 98% rename from nostrdb/NdbBlock.swift rename to damus/Nostrdb/NdbBlock.swift index 74e214e6e2..d92c32ad9e 100644 --- a/nostrdb/NdbBlock.swift +++ b/damus/Nostrdb/NdbBlock.swift @@ -192,7 +192,7 @@ extension NdbBlockGroup { private let blocks_ptr: ndb_blocks_ptr private let buffer: UnsafeMutableRawPointer? - init(ptr: OpaquePointer?, buffer: UnsafeMutableRawPointer? = nil) { + init(ptr: UnsafeMutablePointer?, buffer: UnsafeMutableRawPointer? = nil) { self.blocks_ptr = ndb_blocks_ptr(ptr: ptr) self.buffer = buffer } @@ -204,7 +204,7 @@ extension NdbBlockGroup { /// Gets the opaque pointer /// /// **Implementation note:** This is marked `fileprivate` because we want to minimize the exposure of raw pointers to Swift code outside these wrapper structs. - fileprivate func as_ptr() -> OpaquePointer? { + fileprivate func as_ptr() -> UnsafeMutablePointer? { return self.blocks_ptr.ptr } @@ -217,7 +217,7 @@ extension NdbBlockGroup { return nil } - var blocks: OpaquePointer? = nil + var blocks: UnsafeMutablePointer? = nil // Call the C parsing function and check its success status let success = content.withCString { contentPtr -> Bool in diff --git a/nostrdb/NdbDatabase+UI.swift b/damus/Nostrdb/NdbDatabase+UI.swift similarity index 100% rename from nostrdb/NdbDatabase+UI.swift rename to damus/Nostrdb/NdbDatabase+UI.swift diff --git a/nostrdb/NdbFilter.swift b/damus/Nostrdb/NdbFilter.swift similarity index 100% rename from nostrdb/NdbFilter.swift rename to damus/Nostrdb/NdbFilter.swift diff --git a/nostrdb/src/bindings/swift/NdbMeta.swift b/damus/Nostrdb/NdbMeta.swift similarity index 99% rename from nostrdb/src/bindings/swift/NdbMeta.swift rename to damus/Nostrdb/NdbMeta.swift index 1d81494aff..85655bc8e0 100644 --- a/nostrdb/src/bindings/swift/NdbMeta.swift +++ b/damus/Nostrdb/NdbMeta.swift @@ -66,4 +66,3 @@ public struct NdbEventMeta: FlatBufferObject, Verifiable { _v.finish() } } - diff --git a/nostrdb/NdbNote+.swift b/damus/Nostrdb/NdbNote+.swift similarity index 100% rename from nostrdb/NdbNote+.swift rename to damus/Nostrdb/NdbNote+.swift diff --git a/nostrdb/NdbNote.swift b/damus/Nostrdb/NdbNote.swift similarity index 98% rename from nostrdb/NdbNote.swift rename to damus/Nostrdb/NdbNote.swift index 5a932adcda..295ddc058f 100644 --- a/nostrdb/NdbNote.swift +++ b/damus/Nostrdb/NdbNote.swift @@ -136,6 +136,17 @@ class NdbNote: Codable, Equatable, Hashable { ndb_note_kind(note.ptr) } + /// Returns true if this note is a rumor (unwrapped from a gift wrap) + var isRumor: Bool { + ndb_note_is_rumor(note.ptr) != 0 + } + + /// Returns the note flags (NDB_NOTE_FLAG_RUMOR, NDB_NOTE_FLAG_UNWRAPPED, etc.) + var flags: UInt16 { + guard let flagsPtr = ndb_note_flags(note.ptr) else { return 0 } + return flagsPtr.pointee + } + var tags: TagsSequence { .init(note: self) } diff --git a/nostrdb/src/bindings/swift/NdbProfile.swift b/damus/Nostrdb/NdbProfile.swift similarity index 99% rename from nostrdb/src/bindings/swift/NdbProfile.swift rename to damus/Nostrdb/NdbProfile.swift index 62e66347b6..0b7a3757cf 100644 --- a/nostrdb/src/bindings/swift/NdbProfile.swift +++ b/damus/Nostrdb/NdbProfile.swift @@ -226,4 +226,3 @@ extension NdbProfileRecord: Encodable { try container.encodeIfPresent(lnurl, forKey: .lnurl) } } - diff --git a/nostrdb/NdbTagElem.swift b/damus/Nostrdb/NdbTagElem.swift similarity index 100% rename from nostrdb/NdbTagElem.swift rename to damus/Nostrdb/NdbTagElem.swift diff --git a/nostrdb/NdbTagIterator.swift b/damus/Nostrdb/NdbTagIterator.swift similarity index 100% rename from nostrdb/NdbTagIterator.swift rename to damus/Nostrdb/NdbTagIterator.swift diff --git a/nostrdb/NdbTagsIterator.swift b/damus/Nostrdb/NdbTagsIterator.swift similarity index 100% rename from nostrdb/NdbTagsIterator.swift rename to damus/Nostrdb/NdbTagsIterator.swift diff --git a/nostrdb/NdbTxn.swift b/damus/Nostrdb/NdbTxn.swift similarity index 100% rename from nostrdb/NdbTxn.swift rename to damus/Nostrdb/NdbTxn.swift diff --git a/nostrdb/NdbUseLock.swift b/damus/Nostrdb/NdbUseLock.swift similarity index 100% rename from nostrdb/NdbUseLock.swift rename to damus/Nostrdb/NdbUseLock.swift diff --git a/nostrdb/NonCopyableLinkedList.swift b/damus/Nostrdb/NonCopyableLinkedList.swift similarity index 100% rename from nostrdb/NonCopyableLinkedList.swift rename to damus/Nostrdb/NonCopyableLinkedList.swift diff --git a/nostrdb/UnownedNdbNote.swift b/damus/Nostrdb/UnownedNdbNote.swift similarity index 100% rename from nostrdb/UnownedNdbNote.swift rename to damus/Nostrdb/UnownedNdbNote.swift diff --git a/damus/Shared/Utilities/Bech32Object.swift b/damus/Shared/Utilities/Bech32Object.swift index fec4c0057d..547707057c 100644 --- a/damus/Shared/Utilities/Bech32Object.swift +++ b/damus/Shared/Utilities/Bech32Object.swift @@ -117,6 +117,9 @@ enum Bech32Object : Equatable, Hashable { init?(block: ndb_mention_bech32_block) { let b32 = block.bech32 + // Extract kind via Swift TLV fallback since nostrdb's C parser + // doesn't populate it. See: https://github.com/damus-io/nostrdb/issues/126 + let bech32Str = block.str.as_str() switch block.bech32_type { case .note: let data = b32.note.event_id.as_data(size: 32) @@ -136,11 +139,7 @@ enum Bech32Object : Equatable, Hashable { if nevent.pubkey != nil { author = Pubkey(nevent.pubkey.as_data(size: 32)) } - var kind: UInt32? = nil - if nevent.has_kind { - kind = nevent.kind - } - + let kind = extractTLVKind(fromBech32: bech32Str) self = .nevent(NEvent(noteid: note_id, relays: relays, author: author, kind: kind)) case .nrelay: self = .nrelay(b32.nrelay.relay.as_str()) @@ -148,7 +147,8 @@ enum Bech32Object : Equatable, Hashable { let identifier = b32.naddr.identifier.as_str() let author = Pubkey(b32.naddr.pubkey.as_data(size: 32)) let relays = b32.naddr.relays.as_urls() - self = .naddr(NAddr(identifier: identifier, author: author, relays: relays, kind: b32.naddr.kind)) + let kind = extractTLVKind(fromBech32: bech32Str) ?? 0 + self = .naddr(NAddr(identifier: identifier, author: author, relays: relays, kind: kind)) case .nsec: return nil case .none: @@ -161,7 +161,7 @@ enum Bech32Object : Equatable, Hashable { return .nscript(decoded.data.bytes) } - var b: nostr_bech32_t = nostr_bech32() + var b: nostr_bech32 = nostr_bech32() var bytes = Data(capacity: str.utf8.count) let ok = str.withCString { cstr in @@ -177,7 +177,22 @@ enum Bech32Object : Equatable, Hashable { guard ok else { return nil } - return decodeCBech32(b) + guard var obj = decodeCBech32(b) else { return nil } + + // Patch in the kind from raw TLV data, since nostrdb's C parser + // doesn't extract it. See: https://github.com/damus-io/nostrdb/issues/126 + switch obj { + case .nevent(let ev): + let kind = extractTLVKind(fromBech32: str) + obj = .nevent(NEvent(noteid: ev.noteid, relays: ev.relays, author: ev.author, kind: kind)) + case .naddr(let addr): + let kind = extractTLVKind(fromBech32: str) ?? 0 + obj = .naddr(NAddr(identifier: addr.identifier, author: addr.author, relays: addr.relays, kind: kind)) + default: + break + } + + return obj } static func encode(_ obj: Bech32Object) -> String { @@ -204,7 +219,7 @@ enum Bech32Object : Equatable, Hashable { } -func decodeCBech32(_ b: nostr_bech32_t) -> Bech32Object? { +func decodeCBech32(_ b: nostr_bech32) -> Bech32Object? { switch b.type { case NOSTR_BECH32_NOTE: let note_id = NoteId(Data(bytes: b.note.event_id, count: 32)) @@ -212,9 +227,8 @@ func decodeCBech32(_ b: nostr_bech32_t) -> Bech32Object? { case NOSTR_BECH32_NEVENT: let note_id = NoteId(Data(bytes: b.nevent.event_id, count: 32)) let pubkey = b.nevent.pubkey != nil ? Pubkey(Data(bytes: b.nevent.pubkey, count: 32)) : nil - let kind: UInt32? = !b.nevent.has_kind ? nil : b.nevent.kind let relays = b.nevent.relays.as_urls() - return .nevent(NEvent(noteid: note_id, relays: relays, author: pubkey, kind: kind)) + return .nevent(NEvent(noteid: note_id, relays: relays, author: pubkey, kind: nil)) case NOSTR_BECH32_NPUB: let pubkey = Pubkey(Data(bytes: b.npub.pubkey, count: 32)) return .npub(pubkey) @@ -229,10 +243,9 @@ func decodeCBech32(_ b: nostr_bech32_t) -> Bech32Object? { return .nrelay(b.nrelay.relay.as_str()) case NOSTR_BECH32_NADDR: let pubkey = Pubkey(Data(bytes: b.naddr.pubkey, count: 32)) - let kind = b.naddr.kind let identifier = b.naddr.identifier.as_str() - return .naddr(NAddr(identifier: identifier, author: pubkey, relays: b.naddr.relays.as_urls(), kind: kind)) + return .naddr(NAddr(identifier: identifier, author: pubkey, relays: b.naddr.relays.as_urls(), kind: 0)) default: return nil } @@ -245,6 +258,36 @@ private enum TLVType: UInt8 { case KIND } +/// Extracts the NIP-19 TLV kind field (type 3) from raw bech32 data. +/// +/// This is a Swift-side workaround for the nostrdb C parser which defines +/// TLV_KIND but never parses it — the bech32_nevent and bech32_naddr structs +/// lack a kind field entirely. See: https://github.com/damus-io/nostrdb/issues/126 +/// +/// Once nostrdb adds kind support upstream, this function can be removed and +/// the kind can be read directly from the C structs. +private func extractTLVKind(fromBech32 str: String) -> UInt32? { + guard let decoded = try? bech32_decode(str) else { return nil } + let data = decoded.data + var i = 0 + while i < data.count { + guard i + 1 < data.count else { break } + let tlvType = data[i] + let tlvLen = Int(data[i + 1]) + i += 2 + guard i + tlvLen <= data.count else { break } + if tlvType == TLVType.KIND.rawValue && tlvLen == 4 { + let kind = UInt32(data[i]) << 24 + | UInt32(data[i + 1]) << 16 + | UInt32(data[i + 2]) << 8 + | UInt32(data[i + 3]) + return kind + } + i += tlvLen + } + return nil +} + private func writeBytesList(bytesList: inout [UInt8], tlvType: TLVType, data: [UInt8]){ bytesList.append(tlvType.rawValue) bytesList.append(UInt8(data.bytes.count)) diff --git a/damusTests/NIP17Tests.swift b/damusTests/NIP17Tests.swift new file mode 100644 index 0000000000..80c831c721 --- /dev/null +++ b/damusTests/NIP17Tests.swift @@ -0,0 +1,836 @@ +// +// NIP17Tests.swift +// damusTests +// +// Tests for NIP-17 Private Direct Messages implementation. +// +// NIP-17 message structure: rumor (kind 14) → seal (kind 13) → gift_wrap (kind 1059) +// + +import XCTest +@testable import damus + +final class NIP17Tests: XCTestCase { + + // MARK: - Test Keypairs + + /// Alice's keypair for testing + var alice: FullKeypair { + let sec = Privkey(hex: "494c680d20f202807a116a6915815bd76a27d62802e7585806f6a2e034cb5cdb")! + return FullKeypair(privkey: sec)! + } + + /// Bob's keypair for testing + var bob: FullKeypair { + let sec = Privkey(hex: "aa8920b05b4bd5c79fce46868ed5ebc82bdb91b211850b14541bfbd13953cfef")! + return FullKeypair(privkey: sec)! + } + + // MARK: - Message Creation Tests + + /// Test that createMessage returns two gift wraps (recipient + sender) + func testCreateMessageReturnsTwoWraps() async throws { + let content = "Hello Bob!" + + let result = await NIP17.createMessage( + content: content, + to: bob.pubkey, + from: alice + ) + + XCTAssertNotNil(result, "createMessage should return a result") + + let (recipientWrap, senderWrap) = result! + + // Both should be kind 1059 (gift_wrap) + XCTAssertEqual(recipientWrap.kind, NostrKind.gift_wrap.rawValue) + XCTAssertEqual(senderWrap.kind, NostrKind.gift_wrap.rawValue) + + // Recipient wrap should have Bob's pubkey in p-tag + let recipientPTag = recipientWrap.tags.first { $0.count >= 2 && $0[0].string() == "p" } + XCTAssertNotNil(recipientPTag) + XCTAssertEqual(recipientPTag?[1].string(), bob.pubkey.hex()) + + // Sender wrap should have Alice's pubkey in p-tag (self-wrap) + let senderPTag = senderWrap.tags.first { $0.count >= 2 && $0[0].string() == "p" } + XCTAssertNotNil(senderPTag) + XCTAssertEqual(senderPTag?[1].string(), alice.pubkey.hex()) + } + + /// Test that gift wrap uses ephemeral key (not sender's key) + func testGiftWrapUsesEphemeralKey() async throws { + let result = await NIP17.createMessage( + content: "Secret message", + to: bob.pubkey, + from: alice + ) + + let (recipientWrap, _) = result! + + // Gift wrap pubkey should NOT be Alice's pubkey (should be ephemeral) + XCTAssertNotEqual(recipientWrap.pubkey, alice.pubkey, + "Gift wrap should use ephemeral key, not sender's key") + } + + /// Test that timestamp is randomized (within 2 days in past) + func testTimestampRandomization() async throws { + let now = UInt32(Date().timeIntervalSince1970) + let twoDaysAgo = now - (2 * 24 * 60 * 60) + + // Create multiple messages to check randomization + var timestamps: [UInt32] = [] + for _ in 0..<5 { + let result = await NIP17.createMessage( + content: "Test", + to: bob.pubkey, + from: alice + ) + if let (wrap, _) = result { + timestamps.append(wrap.created_at) + } + } + + // All timestamps should be in range [now - 2 days, now] + for ts in timestamps { + XCTAssertGreaterThanOrEqual(ts, twoDaysAgo, + "Timestamp should not be more than 2 days in the past") + XCTAssertLessThanOrEqual(ts, now + 60, // Allow 60s buffer for test execution + "Timestamp should not be in the future") + } + + // At least some timestamps should differ (randomization check) + // Note: There's a small chance all 5 could be the same, but very unlikely + let uniqueTimestamps = Set(timestamps) + XCTAssertGreaterThan(uniqueTimestamps.count, 1, + "Timestamps should be randomized (got all same values)") + } + + // MARK: - Unwrap Tests + + /// Test full wrap/unwrap round trip + func testWrapUnwrapRoundTrip() async throws { + let originalContent = "Hello Bob, this is a secret message!" + + // Alice creates message for Bob + let result = await NIP17.createMessage( + content: originalContent, + to: bob.pubkey, + from: alice + ) + + let (recipientWrap, _) = result! + + // Bob unwraps the message + let unwrapped = NIP17.unwrap( + giftWrap: recipientWrap, + recipientKeypair: bob + ) + + XCTAssertNotNil(unwrapped, "Bob should be able to unwrap the message") + + // Verify the unwrapped rumor + XCTAssertEqual(unwrapped!.kind, NostrKind.dm_chat.rawValue, + "Unwrapped event should be kind 14 (dm_chat)") + XCTAssertEqual(unwrapped!.content, originalContent, + "Unwrapped content should match original") + } + + /// Test sender can unwrap their own self-wrap + func testSenderCanUnwrapSelfWrap() async throws { + let originalContent = "Message I sent" + + let result = await NIP17.createMessage( + content: originalContent, + to: bob.pubkey, + from: alice + ) + + let (_, senderWrap) = result! + + // Alice unwraps her self-wrap + let unwrapped = NIP17.unwrap( + giftWrap: senderWrap, + recipientKeypair: alice + ) + + XCTAssertNotNil(unwrapped, "Sender should be able to unwrap self-wrap") + XCTAssertEqual(unwrapped!.content, originalContent) + } + + /// Test that wrong recipient cannot unwrap + func testWrongRecipientCannotUnwrap() async throws { + // Alice sends to Bob + let result = await NIP17.createMessage( + content: "For Bob only", + to: bob.pubkey, + from: alice + ) + + let (recipientWrap, _) = result! + + // Create a third party (Charlie) + let charliePrivkey = Privkey(hex: "4c79130952c9c3b017dad62f37f285853a9c53f2a1184d94594f5b860f30b5a5")! + let charlie = FullKeypair(privkey: charliePrivkey)! + + // Charlie tries to unwrap (should fail) + let unwrapped = NIP17.unwrap( + giftWrap: recipientWrap, + recipientKeypair: charlie + ) + + XCTAssertNil(unwrapped, "Wrong recipient should not be able to unwrap") + } + + /// Test unwrap rejects non-gift-wrap events + func testUnwrapRejectsNonGiftWrap() throws { + // Create a regular kind 1 event + let regularEvent = NostrEvent( + content: "Regular note", + keypair: alice.to_keypair(), + kind: NostrKind.text.rawValue, + tags: [] + )! + + let unwrapped = NIP17.unwrap( + giftWrap: regularEvent, + recipientKeypair: bob + ) + + XCTAssertNil(unwrapped, "Should reject non-gift-wrap events") + } + + // MARK: - Reply Tag Tests + + /// Test that reply-to tag is included when specified + func testReplyTagIncluded() throws { + let replyToId = NoteId(hex: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")! + + let result = NIP17.createMessage( + content: "This is a reply", + to: bob.pubkey, + from: alice, + replyTo: replyToId + ) + + let (recipientWrap, _) = result! + + // Unwrap to check the rumor + let unwrapped = NIP17.unwrap( + giftWrap: recipientWrap, + recipientKeypair: bob + )! + + // Check for e-tag with reply marker + let eTag = unwrapped.tags.first { $0.count >= 4 && $0[0].string() == "e" && $0[3].string() == "reply" } + XCTAssertNotNil(eTag, "Reply tag should be present") + XCTAssertEqual(eTag?[1].string(), replyToId.hex()) + } + + // MARK: - Kind Constant Tests + + /// Verify NIP-17 kind constants are correct per spec + func testKindConstants() { + XCTAssertEqual(NostrKind.seal.rawValue, 13) + XCTAssertEqual(NostrKind.dm_chat.rawValue, 14) + XCTAssertEqual(NostrKind.gift_wrap.rawValue, 1059) + XCTAssertEqual(NostrKind.dm_relay_list.rawValue, 10050) + } + + // MARK: - Edge Cases + + /// Test empty message content + func testEmptyContent() throws { + let result = NIP17.createMessage( + content: "", + to: bob.pubkey, + from: alice + ) + + // Empty content should still work (NIP-17 doesn't forbid it) + XCTAssertNotNil(result) + + let (recipientWrap, _) = result! + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + + XCTAssertNotNil(unwrapped) + XCTAssertEqual(unwrapped!.content, "") + } + + /// Test Unicode content + func testUnicodeContent() throws { + let content = "Hello 👋 こんにちは 🎉 مرحبا" + + let result = NIP17.createMessage( + content: content, + to: bob.pubkey, + from: alice + ) + + let (recipientWrap, _) = result! + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + + XCTAssertNotNil(unwrapped) + XCTAssertEqual(unwrapped!.content, content) + } + + /// Test long message content + func testLongContent() throws { + // Create a ~10KB message + let content = String(repeating: "A", count: 10000) + + let result = NIP17.createMessage( + content: content, + to: bob.pubkey, + from: alice + ) + + XCTAssertNotNil(result) + + let (recipientWrap, _) = result! + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + + XCTAssertNotNil(unwrapped) + XCTAssertEqual(unwrapped!.content, content) + } + + // MARK: - DM Relay List (Kind 10050) Tests + + /// Test creating a DM relay list event + func testCreateDMRelayList() throws { + let relays = [ + RelayURL("wss://relay.damus.io")!, + RelayURL("wss://nos.lol")!, + RelayURL("wss://nostr.wine")! + ] + + let event = NIP17.createDMRelayList(relays: relays, keypair: alice.to_keypair()) + + XCTAssertNotNil(event, "Should create DM relay list event") + XCTAssertEqual(event!.kind, NostrKind.dm_relay_list.rawValue, + "Should be kind 10050") + + // Verify relay tags + let relayTags = event!.tags.filter { $0.count >= 2 && $0[0].string() == "relay" } + XCTAssertEqual(relayTags.count, 3, "Should have 3 relay tags") + } + + /// Test parsing a DM relay list event + func testParseDMRelayList() throws { + let relays = [ + RelayURL("wss://relay.damus.io")!, + RelayURL("wss://nos.lol")! + ] + + guard let event = NIP17.createDMRelayList(relays: relays, keypair: alice.to_keypair()) else { + XCTFail("Failed to create DM relay list") + return + } + + let parsed = NIP17.parseDMRelayList(event: event) + + XCTAssertEqual(parsed.count, 2, "Should parse 2 relays") + XCTAssertTrue(parsed.contains(where: { $0.absoluteString == "wss://relay.damus.io" })) + XCTAssertTrue(parsed.contains(where: { $0.absoluteString == "wss://nos.lol" })) + } + + /// Test parsing empty DM relay list returns empty array + func testParseDMRelayListEmpty() throws { + // Create event with no relay tags + let event = NostrEvent( + content: "", + keypair: alice.to_keypair(), + kind: NostrKind.dm_relay_list.rawValue, + tags: [] + )! + + let parsed = NIP17.parseDMRelayList(event: event) + + XCTAssertTrue(parsed.isEmpty, "Should return empty array for event with no relay tags") + } + + /// Test parsing wrong kind returns empty array + func testParseDMRelayListWrongKind() throws { + let event = NostrEvent( + content: "", + keypair: alice.to_keypair(), + kind: NostrKind.text.rawValue, // Wrong kind + tags: [["relay", "wss://relay.damus.io"]] + )! + + let parsed = NIP17.parseDMRelayList(event: event) + + XCTAssertTrue(parsed.isEmpty, "Should return empty for wrong kind") + } + + // MARK: - Error Path Tests + + /// Test unwrap with empty content fails gracefully + func testUnwrapEmptyContentFails() throws { + // Create gift wrap with empty content (invalid) + let emptyWrap = NostrEvent( + content: "", + keypair: alice.to_keypair(), + kind: NostrKind.gift_wrap.rawValue, + tags: [["p", bob.pubkey.hex()]] + )! + + let result = NIP17.unwrap(giftWrap: emptyWrap, recipientKeypair: bob) + + XCTAssertNil(result, "Should fail to unwrap empty content") + } + + /// Test unwrap with malformed content fails gracefully + func testUnwrapMalformedContentFails() throws { + // Create gift wrap with invalid encrypted content + let badWrap = NostrEvent( + content: "not-valid-encrypted-content", + keypair: alice.to_keypair(), + kind: NostrKind.gift_wrap.rawValue, + tags: [["p", bob.pubkey.hex()]] + )! + + let result = NIP17.unwrap(giftWrap: badWrap, recipientKeypair: bob) + + XCTAssertNil(result, "Should fail to unwrap malformed content") + } + + /// Test createMessage with empty content still works + func testCreateMessageEmptyContent() throws { + let result = NIP17.createMessage( + content: "", + to: bob.pubkey, + from: alice + ) + + XCTAssertNotNil(result, "Should create message even with empty content") + + let (recipientWrap, _) = result! + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + + XCTAssertNotNil(unwrapped) + XCTAssertEqual(unwrapped!.content, "") + } + + // MARK: - Security Tests + + /// Test that unwrap verifies rumor pubkey matches seal pubkey (NIP-17 security requirement) + /// Per NIP-17, the seal pubkey is the authoritative sender. Messages with mismatched + /// pubkeys could be sender spoofing attempts and must be rejected. + func testUnwrapRejectsRumorPubkeyMismatch() async throws { + // This test verifies that the security check in unwrap() properly rejects + // messages where rumor.pubkey != seal.pubkey + // + // Normal flow (tested by other tests): Alice creates message -> rumor.pubkey == seal.pubkey == Alice + // Attack scenario: Attacker creates seal with their pubkey but rumor claims to be from someone else + // + // Since we can't easily forge a malformed gift wrap in Swift (the encryption + // would need to be valid), we verify the normal case works - the security + // check passes when pubkeys match. The check rejects mismatches by returning nil. + + let content = "Test message" + + // Create a normal message + let result = await NIP17.createMessage( + content: content, + to: bob.pubkey, + from: alice + ) + + XCTAssertNotNil(result) + + let (recipientWrap, _) = result! + + // Unwrap and verify pubkey integrity + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + + XCTAssertNotNil(unwrapped, "Valid message should unwrap") + XCTAssertEqual(unwrapped!.pubkey, alice.pubkey, + "Unwrapped rumor pubkey should match sender (Alice)") + + // The security check ensures rumor.pubkey == seal.pubkey (both are Alice) + // If an attacker tried to forge a message with rumor.pubkey != seal.pubkey, + // the unwrap() function would return nil due to the pubkey mismatch check + } + + // MARK: - Integration Flow Tests + + /// Test complete outbound DM flow: create message -> both wraps valid -> can be unwrapped + func testCompleteOutboundFlow() async throws { + let content = "Hello from Alice to Bob via NIP-17!" + + // 1. Create message (produces two gift wraps) + let result = await NIP17.createMessage( + content: content, + to: bob.pubkey, + from: alice + ) + + XCTAssertNotNil(result, "Outbound: Should create message") + let (recipientWrap, senderWrap) = result! + + // 2. Verify both wraps are valid kind 1059 + XCTAssertEqual(recipientWrap.kind, NostrKind.gift_wrap.rawValue) + XCTAssertEqual(senderWrap.kind, NostrKind.gift_wrap.rawValue) + + // 3. Verify wraps have correct p-tags (recipient targeting) + let recipientPTag = recipientWrap.tags.first { $0.count >= 2 && $0[0].string() == "p" } + XCTAssertEqual(recipientPTag?[1].string(), bob.pubkey.hex(), "Recipient wrap should target Bob") + + let senderPTag = senderWrap.tags.first { $0.count >= 2 && $0[0].string() == "p" } + XCTAssertEqual(senderPTag?[1].string(), alice.pubkey.hex(), "Sender wrap should target Alice (self)") + + // 4. Verify both wraps use different ephemeral keys (not sender's key) + XCTAssertNotEqual(recipientWrap.pubkey, alice.pubkey, "Recipient wrap should use ephemeral key") + XCTAssertNotEqual(senderWrap.pubkey, alice.pubkey, "Sender wrap should use ephemeral key") + XCTAssertNotEqual(recipientWrap.pubkey, senderWrap.pubkey, "Each wrap should have unique ephemeral key") + + // 5. Verify recipient can unwrap their message + let bobUnwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + XCTAssertNotNil(bobUnwrapped, "Bob should unwrap recipient wrap") + XCTAssertEqual(bobUnwrapped!.content, content) + XCTAssertEqual(bobUnwrapped!.pubkey, alice.pubkey, "Sender should be Alice") + + // 6. Verify sender can unwrap their self-wrap (cross-device recovery) + let aliceUnwrapped = NIP17.unwrap(giftWrap: senderWrap, recipientKeypair: alice) + XCTAssertNotNil(aliceUnwrapped, "Alice should unwrap self-wrap") + XCTAssertEqual(aliceUnwrapped!.content, content) + } + + /// Test complete inbound DM flow: receive gift wrap -> unwrap -> verify sender + func testCompleteInboundFlow() async throws { + let content = "Secret message from Bob to Alice" + + // Bob sends to Alice + let result = await NIP17.createMessage( + content: content, + to: alice.pubkey, + from: bob + ) + + XCTAssertNotNil(result) + let (recipientWrap, _) = result! + + // Alice receives and processes inbound + // 1. Verify it's a gift wrap + XCTAssertEqual(recipientWrap.kind, NostrKind.gift_wrap.rawValue) + + // 2. Verify p-tag matches Alice (routing check) + let pTag = recipientWrap.tags.first { $0.count >= 2 && $0[0].string() == "p" } + XCTAssertEqual(pTag?[1].string(), alice.pubkey.hex(), "Should be addressed to Alice") + + // 3. Unwrap the message + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: alice) + XCTAssertNotNil(unwrapped, "Alice should be able to unwrap") + + // 4. Verify rumor contents + XCTAssertEqual(unwrapped!.kind, NostrKind.dm_chat.rawValue, "Should be kind 14") + XCTAssertEqual(unwrapped!.content, content) + XCTAssertEqual(unwrapped!.pubkey, bob.pubkey, "Sender should be Bob") + + // 5. Verify p-tag in rumor shows conversation participant + let rumorPTag = unwrapped!.tags.first { $0.count >= 2 && $0[0].string() == "p" } + XCTAssertEqual(rumorPTag?[1].string(), alice.pubkey.hex()) + } + + // MARK: - DM Relay List Tests + + /// Test relay list roundtrip: create -> parse + func testDMRelayListRoundtrip() throws { + let relays = [ + RelayURL("wss://relay1.example.com")!, + RelayURL("wss://relay2.example.com")!, + RelayURL("wss://dm.relay.io")! + ] + + // Create 10050 event + let event = NIP17.createDMRelayList(relays: relays, keypair: alice.to_keypair()) + XCTAssertNotNil(event) + XCTAssertEqual(event!.kind, NostrKind.dm_relay_list.rawValue) + + // Parse it back + let parsed = NIP17.parseDMRelayList(event: event!) + XCTAssertEqual(parsed.count, 3) + XCTAssertEqual(Set(parsed.map { $0.absoluteString }), Set(relays.map { $0.absoluteString })) + } + + /// Test empty relay list + func testDMRelayListEmpty() throws { + let event = NIP17.createDMRelayList(relays: [], keypair: alice.to_keypair()) + XCTAssertNotNil(event) + + let parsed = NIP17.parseDMRelayList(event: event!) + XCTAssertTrue(parsed.isEmpty, "Empty relay list should parse to empty array") + } + + /// Test parsing relay list with invalid URLs (should skip invalid, keep valid) + func testDMRelayListWithInvalidURLs() throws { + // Create event manually with some invalid relay tags + let validRelay = RelayURL("wss://valid.relay.com")! + let event = NIP17.createDMRelayList(relays: [validRelay], keypair: alice.to_keypair()) + XCTAssertNotNil(event) + + // Manually add invalid tags would require modifying the event + // For now, test that valid parsing works + let parsed = NIP17.parseDMRelayList(event: event!) + XCTAssertEqual(parsed.count, 1) + XCTAssertEqual(parsed.first?.absoluteString, "wss://valid.relay.com") + } + + /// Test parsing wrong kind event returns empty + func testDMRelayListWrongKind() throws { + // Create a kind 1 event (not 10050) + let fakeEvent = NostrEvent( + content: "not a relay list", + keypair: alice.to_keypair(), + kind: 1, // Wrong kind + tags: [["relay", "wss://example.com"]] + )! + + let parsed = NIP17.parseDMRelayList(event: fakeEvent) + XCTAssertTrue(parsed.isEmpty, "Wrong kind should return empty array") + } + + // MARK: - Unhappy Path Tests + + /// Test that wrong recipient cannot unwrap (no relay overlap scenario simulation) + func testNoRelayOverlapScenario() async throws { + // Scenario: Alice sends to Bob, but Charlie intercepts the gift wrap + // (simulates message arriving at wrong recipient due to relay misconfiguration) + + let result = await NIP17.createMessage( + content: "For Bob only", + to: bob.pubkey, + from: alice + ) + + let (recipientWrap, _) = result! + + // Charlie (third party) tries to unwrap + let charliePrivkey = Privkey(hex: "4c79130952c9c3b017dad62f37f285853a9c53f2a1184d94594f5b860f30b5a5")! + let charlie = FullKeypair(privkey: charliePrivkey)! + + let charlieResult = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: charlie) + XCTAssertNil(charlieResult, "Charlie should not be able to unwrap Bob's message") + } + + /// Test handling of message with reply-to tag + func testMessageWithReplyTo() async throws { + let replyToId = NoteId(hex: "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234")! + + let result = await NIP17.createMessage( + content: "This is a reply", + to: bob.pubkey, + from: alice, + replyTo: replyToId + ) + + XCTAssertNotNil(result) + let (recipientWrap, _) = result! + + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + XCTAssertNotNil(unwrapped) + + // Verify reply tag exists in rumor + let eTag = unwrapped!.tags.first { $0.count >= 4 && $0[0].string() == "e" && $0[3].string() == "reply" } + XCTAssertNotNil(eTag, "Should have reply e-tag") + XCTAssertEqual(eTag?[1].string(), replyToId.hex()) + } + + /// Test bidirectional conversation (Alice -> Bob, Bob -> Alice) + func testBidirectionalConversation() async throws { + // Alice sends to Bob + let msg1 = await NIP17.createMessage(content: "Hi Bob!", to: bob.pubkey, from: alice) + XCTAssertNotNil(msg1) + + // Bob sends to Alice + let msg2 = await NIP17.createMessage(content: "Hi Alice!", to: alice.pubkey, from: bob) + XCTAssertNotNil(msg2) + + // Bob receives Alice's message + let bobReceived = NIP17.unwrap(giftWrap: msg1!.recipientWrap, recipientKeypair: bob) + XCTAssertNotNil(bobReceived) + XCTAssertEqual(bobReceived!.content, "Hi Bob!") + XCTAssertEqual(bobReceived!.pubkey, alice.pubkey) + + // Alice receives Bob's message + let aliceReceived = NIP17.unwrap(giftWrap: msg2!.recipientWrap, recipientKeypair: alice) + XCTAssertNotNil(aliceReceived) + XCTAssertEqual(aliceReceived!.content, "Hi Alice!") + XCTAssertEqual(aliceReceived!.pubkey, bob.pubkey) + + // Both can recover their sent messages from self-wraps + let aliceSent = NIP17.unwrap(giftWrap: msg1!.senderWrap, recipientKeypair: alice) + XCTAssertNotNil(aliceSent) + XCTAssertEqual(aliceSent!.content, "Hi Bob!") + + let bobSent = NIP17.unwrap(giftWrap: msg2!.senderWrap, recipientKeypair: bob) + XCTAssertNotNil(bobSent) + XCTAssertEqual(bobSent!.content, "Hi Alice!") + } + + /// Test that gift wrap IDs are unique (no replay attacks) + func testUniqueGiftWrapIds() async throws { + let content = "Same content" + + var ids: Set = [] + for _ in 0..<5 { + let result = await NIP17.createMessage(content: content, to: bob.pubkey, from: alice) + XCTAssertNotNil(result) + ids.insert(result!.recipientWrap.id.hex()) + ids.insert(result!.senderWrap.id.hex()) + } + + // All 10 IDs (5 recipient + 5 sender) should be unique + XCTAssertEqual(ids.count, 10, "All gift wrap IDs should be unique") + } + + // MARK: - Security Tests (Additional) + + /// Test that seal signature is validated before trusting content + /// An attacker cannot forge a seal with invalid signature + func testSealSignatureValidation() async throws { + // Create a valid message + let result = await NIP17.createMessage( + content: "Test message", + to: bob.pubkey, + from: alice + ) + + XCTAssertNotNil(result) + let (recipientWrap, _) = result! + + // The unwrap function internally validates the seal signature + // (via validate_event) before trusting seal.pubkey as the sender. + // If seal signature is invalid, unwrap returns nil. + + // Verify normal unwrap works + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + XCTAssertNotNil(unwrapped, "Valid seal signature should unwrap") + XCTAssertEqual(unwrapped!.pubkey, alice.pubkey) + + // Note: We can't easily forge an invalid seal signature in this test + // because we'd need to create a validly-encrypted gift wrap containing + // an invalidly-signed seal - the encryption layer would need to work + // but the signature wouldn't. The security check is verified by code + // inspection: NIP17.swift:189 calls validate_event(ev: seal) and + // returns nil if signature validation fails. + } + + /// Test that messages with special characters are handled correctly + func testSpecialCharacterContent() async throws { + let contents = [ + "Line1\nLine2\nLine3", // Newlines + "Tab\there", // Tabs + "Quote: \"hello\"", // Quotes + "Backslash: \\path\\to\\file", // Backslashes + "Null: \0 byte", // Null byte (edge case) + "", // XSS attempt (should be preserved as-is) + "{ \"json\": true }", // JSON-like content + ] + + for content in contents { + let result = await NIP17.createMessage( + content: content, + to: bob.pubkey, + from: alice + ) + + XCTAssertNotNil(result, "Should create message for: \(content.prefix(20))...") + + let (recipientWrap, _) = result! + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + + XCTAssertNotNil(unwrapped, "Should unwrap message for: \(content.prefix(20))...") + XCTAssertEqual(unwrapped!.content, content, + "Content should be preserved exactly: \(content.prefix(20))...") + } + } + + /// Test that p-tag in rumor correctly identifies conversation participants + func testRumorPTagIdentifiesRecipient() async throws { + let result = await NIP17.createMessage( + content: "Hello", + to: bob.pubkey, + from: alice + ) + + let (recipientWrap, _) = result! + let unwrapped = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: bob) + + XCTAssertNotNil(unwrapped) + + // Per NIP-17, the rumor's p-tag identifies the recipient + let pTag = unwrapped!.tags.first { $0.count >= 2 && $0[0].string() == "p" } + XCTAssertNotNil(pTag, "Rumor should have p-tag") + XCTAssertEqual(pTag?[1].string(), bob.pubkey.hex(), + "Rumor p-tag should identify Bob as recipient") + } + + /// Test self-to-self message (edge case: sending DM to yourself) + func testSelfMessage() async throws { + // Alice sends a message to herself + let result = await NIP17.createMessage( + content: "Note to self", + to: alice.pubkey, + from: alice + ) + + XCTAssertNotNil(result, "Should be able to create self-message") + + let (recipientWrap, senderWrap) = result! + + // Both wraps should be unwrappable by Alice + let fromRecipient = NIP17.unwrap(giftWrap: recipientWrap, recipientKeypair: alice) + let fromSender = NIP17.unwrap(giftWrap: senderWrap, recipientKeypair: alice) + + XCTAssertNotNil(fromRecipient) + XCTAssertNotNil(fromSender) + + XCTAssertEqual(fromRecipient!.content, "Note to self") + XCTAssertEqual(fromSender!.content, "Note to self") + + // Sender pubkey should be Alice in both + XCTAssertEqual(fromRecipient!.pubkey, alice.pubkey) + XCTAssertEqual(fromSender!.pubkey, alice.pubkey) + } + + // MARK: - Cross-Client Interop Test Vectors + // + // TODO: Add test vectors from other NIP-17 implementations: + // - Amethyst (Android) + // - 0xchat + // - Coracle + // - Gossip + // + // Test vectors should include: + // 1. Gift wrap event JSON from other client + // 2. Recipient's private key (test key) + // 3. Expected unwrapped content + // 4. Expected sender pubkey + // + // Example test structure: + // func testAmethystInterop() throws { + // let giftWrapJson = """ + // {"id":"...","pubkey":"...","created_at":...,"kind":1059,...} + // """ + // let recipientPrivkey = Privkey(hex: "test_privkey")! + // let recipient = FullKeypair(privkey: recipientPrivkey)! + // + // let giftWrap = NostrEvent.owned_from_json(json: giftWrapJson)! + // let unwrapped = NIP17.unwrap(giftWrap: giftWrap, recipientKeypair: recipient) + // + // XCTAssertNotNil(unwrapped) + // XCTAssertEqual(unwrapped!.content, "expected content") + // } + + // MARK: - Integration Test Notes + // + // The following scenarios require network integration tests with mocked RelayPool: + // - Relay list doesn't overlap: sender's outbox vs receiver's 10050 + // - Network timeout during ephemeral relay connection + // - Partial relay delivery (some relays succeed, some fail) + // - AUTH-required relays for DM delivery + // - Reconnection and message recovery + // + // These tests require network mocking infrastructure. +} diff --git a/docs/NIP17-MISSING-DM-INVESTIGATION.md b/docs/NIP17-MISSING-DM-INVESTIGATION.md new file mode 100644 index 0000000000..ee90ea022e --- /dev/null +++ b/docs/NIP17-MISSING-DM-INVESTIGATION.md @@ -0,0 +1,257 @@ +# NIP-17 Missing DM Investigation + +**Date**: 2026-02-04 +**Issue**: jb55's DM sent via notedeck not received in Damus iOS +**Status**: Under investigation + +--- + +## Summary + +A NIP-17 direct message sent from jb55 (using notedeck) to the test user was never received in Damus iOS. + +**Key observation**: Other NIP-17 DMs (from 0xchat, nospeak) ARE arriving successfully. This indicates: +- The NIP-17 receive pipeline works (key registration, unwrap, display) +- The failure is **sender-specific** (notedeck/jb55), not a global NIP-17 issue + +**What we know**: +1. Relay overlap exists between sender 10002 and receiver 10050 +2. Other senders' messages arrive and display correctly +3. Multiple gift wraps for receiver exist on shared relays + +**What we DON'T know** (gaps to fill): +1. Whether notedeck actually sent to receiver's 10050 relays +2. Whether Damus was connected to those relays at send time +3. Whether the gift wrap exists on any relay post-send +4. Whether `since` filtering dropped the message +5. Whether AUTH requirements blocked delivery + +--- + +## Environment + +### Receiver (Damus iOS) +- **Pubkey**: `fa486cb1ff142934ed9094c8ac2dc6ac7ef76e29a6cad67860882ca1decf6152` +- **npub**: `npub1lfyxev0lzs5nfmvsjny2ctwx43l0wm3f5m9dv7rq3qk2rhk0v9fqh6dk9l` + +### Sender (notedeck) +- **Pubkey**: `32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245` (jb55) +- **Client**: notedeck (damus-io/notedeck) +- **Message content**: "works" + +--- + +## Relay Configuration (Verified via `nak`) + +### Receiver's Relay Lists + +**kind:10002 (NIP-65 Relay List)** +``` +wss://nos.lol +wss://nostr.wine +wss://relay.damus.io +wss://relay.primal.net +wss://nostr.land +``` + +**kind:10050 (NIP-17 DM Relay List)** +``` +wss://nos.lol +wss://nostr.wine +wss://relay.damus.io +``` + +### Sender's Relay Lists + +**kind:10002 (NIP-65 Relay List)** +``` +ws://relay.jb55.com +wss://nos.lol +wss://nostr.land +wss://nostr.wine +wss://relay.damus.io +wss://relay.nostr.band +``` + +**kind:10050 (NIP-17 DM Relay List)** +``` +(not published) +``` + +### Relay Overlap Analysis + +| Relay | Receiver 10050 | Sender 10002 | Overlap | +|-------|----------------|--------------|---------| +| wss://nos.lol | ✓ | ✓ | **YES** | +| wss://nostr.wine | ✓ | ✓ | **YES** | +| wss://relay.damus.io | ✓ | ✓ | **YES** | +| wss://relay.primal.net | (10002 only) | ✗ | no | +| wss://nostr.land | (10002 only) | ✓ | n/a | +| ws://relay.jb55.com | ✗ | ✓ | no | +| wss://relay.nostr.band | ✗ | ✓ | no | + +**Conclusion**: 3 relays overlap (nos.lol, nostr.wine, relay.damus.io). Relay mismatch is NOT the root cause. + +--- + +## What Works + +1. **Inbound from 0xchat**: Messages from `npub1zafcms4xya5...` arrive and display correctly +2. **Inbound from nospeak**: Messages from `npub18lp30xf7ag6...` arrive and display correctly +3. **Outbound NIP-17**: Sending NIP-17 messages works (confirmed by recipients) +4. **Gift wrap presence**: Multiple kind:1059 events for receiver exist on nos.lol + +--- + +## What Doesn't Work + +1. **jb55's message**: Never appears in logs or UI +2. **No unwrap attempt**: Logs show no `unwrap: SUCCESS` or `unwrap: FAIL` for jb55's pubkey + +--- + +## Debug Logs (Receiver) + +Messages successfully received and processed: +``` +[DM-DEBUG] unwrap: SUCCESS rumor from:npub1zafcms4xya5 content:'Test send via 0xchat' +[DM-DEBUG] unwrap: SUCCESS rumor from:npub1zafcms4xya5 content:'0xchatt' +[DM-DEBUG] unwrap: SUCCESS rumor from:npub1zafcms4xya5 content:'Uno mas' +[DM-DEBUG] unwrap: SUCCESS rumor from:npub18lp30xf7ag6 content:'nospeak test' +``` + +**No log entries for jb55's pubkey** (`32e1827635450ebb...` / `npub1xtscya34g58...`) + +--- + +## Hypotheses (Prioritized) + +### H0: Gift wrap filtered by `since` optimization (MOST LIKELY) +- NIP-17 randomizes `created_at` up to 2 days in the past +- Damus DM subscriptions use `since = latestTimestamp - 120s` +- If jb55's gift wrap had old randomized timestamp, relay would exclude it +- **Evidence needed**: Compare gift wrap `created_at` vs subscription `since` value +- **Test**: Query relay with NO `since` filter for gift wraps after send time + +### H1: Notedeck did not fetch/honor recipient's 10050 +- NIP-17 spec: "send to recipient's kind:10050 relays" +- If notedeck sends only to sender's relays, overlap is coincidental +- **Evidence needed**: notedeck logs showing 10050 fetch and relay targets +- **Question for notedeck**: Does it fetch recipient 10050 before sending? + +### H2: Damus not connected to DM relays at send time +- Relay overlap in config ≠ active connections +- **Evidence needed**: Damus connection logs at send time +- **Test**: Log active relay connections during resend test + +### H3: AUTH requirement blocked delivery (UNLIKELY) +- nos.lol and relay.damus.io do NOT require AUTH +- nostr.wine status unknown but likely same +- **Deprioritized**: AUTH is unlikely to be the cause + +### H4: Notedeck send failed silently +- Send may have errored without user feedback +- **Evidence needed**: notedeck send logs/confirmation +- **Test**: Have jb55 resend while monitoring both clients + +### H5: Gift wrap exists but failed to unwrap +- Less likely since other messages unwrap fine +- **Evidence needed**: Query relays for all gift wraps, attempt manual unwrap +- **Complication**: Gift wraps use ephemeral keys, can't identify sender without unwrapping + +--- + +## Questions for notedeck team + +1. **Send confirmation**: Does notedeck log successful gift wrap publication? +2. **Relay selection**: Which relays does notedeck send DMs to? + - Sender's 10002? + - Recipient's 10050 (if fetched)? + - Hardcoded list? +3. **10050 fetching**: Does notedeck fetch recipient's kind:10050 before sending? +4. **Error handling**: Would notedeck show an error if send failed? + +--- + +## Focused Tests + +### Test 1: Coordinated Resend with Full Logging +1. Have jb55 resend "works" at a known UTC time +2. Capture Damus logs during send window, looking for: + - `dmsStream: Received gift_wrap ...` lines + - Any AUTH log lines + - Connection status to DM relays +3. Record exact time window (UTC) for correlation + +### Test 2: Post-Send Relay Query (No `since` filter) +```bash +# Query each DM relay for gift wraps AFTER the resend time +nak req -k 1059 -p --since wss://nos.lol wss://nostr.wine wss://relay.damus.io +``` +- Record all event IDs and `created_at` values +- Note: `created_at` may be randomized up to 2 days in past + +### Test 3: Connection Verification +- Log which relays Damus was actually connected to at send time +- Verify connection to all three DM relays (nos.lol, nostr.wine, relay.damus.io) + +### Test 4: Gift Wrap Comparison +- Take a known-good gift wrap from 0xchat/nospeak +- Compare: relay source, `created_at` skew, structure +- Check if jb55's gift wrap (if found) differs in any way + +### Test 5: AUTH Check +- Verify whether Damus performed AUTH on DM relays +- Check if any DM relay requires AUTH for kind:1059 + +--- + +## Questions for notedeck Team + +1. **10050 Fetching**: Does notedeck fetch recipient's kind:10050 before sending? Is this logged? +2. **Relay Targets**: Which relays did notedeck actually publish the gift wrap to for this send? +3. **Error Handling**: Was there any error/timeout or retry behavior? Would user see it? +4. **Timestamp Randomization**: Does notedeck randomize gift wrap/seal `created_at` up to 2 days like spec? +5. **AUTH**: Does notedeck require or perform relay AUTH for DM operations? + +--- + +## Questions for Damus iOS (Self-Check) + +1. Were you authenticated to nos.lol / nostr.wine / relay.damus.io at send time? +2. Did your DM subscription use a `since` filter at the time of the send? (likely yes - this is the prime suspect) +3. Were you connected to all three DM relays, or just a subset? +4. Is there a `dmsStream: Received gift_wrap` log line for any event around the send time? + +--- + +## Requested Actions + +### From jb55/notedeck side: +1. Check if send showed success in notedeck UI +2. Provide notedeck debug logs from the send attempt (especially relay targets) +3. Confirm whether notedeck fetched recipient's 10050 +4. Resend "works" message at coordinated time while receiver monitors logs +5. Confirm which relays notedeck actually sent to + +### From Damus iOS side: +1. Query overlapping relays with NO `since` filter for gift wraps after send time +2. Log active relay connections during resend test +3. Check AUTH status on DM relays +4. Search logs for `gift_wrap` receipt (not just unwrap success) +5. Compare timestamps of received vs missing messages + +--- + +## Related Issues + +- **damus-xco**: Notedeck→iOS NIP-17 flow investigation +- **damus-h2p**: jb55 inbound DM not received + +--- + +## References + +- NIP-17 spec: https://github.com/nostr-protocol/nips/blob/master/17.md +- notedeck NIP-17 impl: https://github.com/damus-io/notedeck/tree/master/crates/notedeck_messages/src/nip17 +- Damus iOS NIP-17 impl: `damus/Core/NIPs/NIP17/NIP17.swift` diff --git a/nostrdb b/nostrdb new file mode 160000 index 0000000000..f3d4b6c92a --- /dev/null +++ b/nostrdb @@ -0,0 +1 @@ +Subproject commit f3d4b6c92ac17cff6a4974ed21577ce81e8b9a69 diff --git a/nostrdb/Makefile b/nostrdb/Makefile deleted file mode 100644 index 593fd8d97c..0000000000 --- a/nostrdb/Makefile +++ /dev/null @@ -1,184 +0,0 @@ -CFLAGS = -Wall -Wno-misleading-indentation -Wno-unused-function -Werror -O2 -g -Isrc -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include -HEADERS = deps/lmdb/lmdb.h deps/secp256k1/include/secp256k1.h src/sha256.h src/nostrdb.h src/cursor.h src/hex.h src/jsmn.h src/config.h src/sha256.h src/random.h src/memchr.h src/cpu.h src/nostr_bech32.h src/block.h src/str_block.h $(C_BINDINGS) -FLATCC_SRCS=deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/verifier.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c -BOLT11_SRCS = src/bolt11/bolt11.c src/bolt11/bech32.c src/bolt11/tal.c src/bolt11/talstr.c src/bolt11/take.c src/bolt11/list.c src/bolt11/utf8.c src/bolt11/amount.c src/bolt11/hash_u5.c -SRCS = src/nostrdb.c src/sha256.c src/invoice.c src/nostr_bech32.c src/content_parser.c src/block.c $(BOLT11_SRCS) $(FLATCC_SRCS) -LDS = $(OBJS) $(ARS) -OBJS = $(SRCS:.c=.o) -DEPS = $(OBJS) $(HEADERS) $(ARS) -ARS = deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a -LMDB_VER=0.9.31 -FLATCC_VER=05dc16dc2b0316e61063bb1fc75426647badce48 -PREFIX ?= /usr/local -SUBMODULES = deps/secp256k1 -BINDINGS=src/bindings -C_BINDINGS_PROFILE=$(BINDINGS)/c/profile_builder.h $(BINDINGS)/c/profile_reader.h $(BINDINGS)/c/profile_verifier.h $(BINDINGS)/c/profile_json_parser.h -C_BINDINGS_META=$(BINDINGS)/c/meta_builder.h $(BINDINGS)/c/meta_reader.h $(BINDINGS)/c/meta_verifier.h $(BINDINGS)/c/meta_json_parser.h -C_BINDINGS_COMMON=$(BINDINGS)/c/flatbuffers_common_builder.h $(BINDINGS)/c/flatbuffers_common_reader.h -C_BINDINGS=$(C_BINDINGS_COMMON) $(C_BINDINGS_PROFILE) $(C_BINDINGS_META) -BIN=ndb - -CHECKDATA=testdata/db/v0/data.mdb - -all: $(BIN) lib bench - -%.o: %.c $(HEADERS) - $(CC) $(CFLAGS) -c -o $@ $< - -libnostrdb.a: $(OBJS) - ar rcs $@ $(OBJS) - -lib: libnostrdb.a - -ndb: ndb.c $(DEPS) - $(CC) $(CFLAGS) ndb.c $(LDS) -o $@ - -bindings: bindings-swift bindings-rust bindings-c - -check: test - rm -rf testdata/db/*.mdb - ./test - rm -rf testdata/db/*.mdb - -clean: - rm -rf test bench bench-ingest bench-ingest-many $(OBJS) - -distclean: clean - rm -rf deps - -tags: - find . -name '*.c' -or -name '*.h' | xargs ctags - -configurator: src/configurator.c - $(CC) $< -o $@ - -src/config.h: configurator - ./configurator > $@ - -bindings-c: $(C_BINDINGS) - -src/bindings/%/.dir: - mkdir -p $(shell dirname $@) - touch $@ - -src/bindings/c/%_builder.h: schemas/%.fbs $(BINDINGS)/c/.dir - flatcc --builder $< -o $(BINDINGS)/c - -src/bindings/c/%_verifier.h bindings/c/%_reader.h: schemas/%.fbs $(BINDINGS)/c/.dir - flatcc --verifier -o $(BINDINGS)/c $< - -src/bindings/c/flatbuffers_common_reader.h: $(BINDINGS)/c/.dir - flatcc --common_reader -o $(BINDINGS)/c - -src/bindings/c/flatbuffers_common_builder.h: $(BINDINGS)/c/.dir - flatcc --common_builder -o $(BINDINGS)/c - -src/bindings/c/%_json_parser.h: schemas/%.fbs $(BINDINGS)/c/.dir - flatcc --json-parser $< -o $(BINDINGS)/c - -bindings-rust: $(BINDINGS)/rust/ndb_profile.rs $(BINDINGS)/rust/ndb_meta.rs - -$(BINDINGS)/rust/ndb_profile.rs: schemas/profile.fbs $(BINDINGS)/rust - flatc --gen-json-emit --rust $< - @mv profile_generated.rs $@ - -$(BINDINGS)/rust/ndb_meta.rs: schemas/meta.fbs $(BINDINGS)/swift - flatc --rust $< - @mv meta_generated.rs $@ - -bindings-swift: $(BINDINGS)/swift/NdbProfile.swift $(BINDINGS)/swift/NdbMeta.swift - -$(BINDINGS)/swift/NdbProfile.swift: schemas/profile.fbs $(BINDINGS)/swift - flatc --gen-json-emit --swift $< - @mv profile_generated.swift $@ - -$(BINDINGS)/swift/NdbMeta.swift: schemas/meta.fbs $(BINDINGS)/swift - flatc --swift $< - @mv meta_generated.swift $@ - -deps/.dir: - @mkdir -p deps - touch deps/.dir - -deps/LMDB_$(LMDB_VER).tar.gz: deps/.dir - curl -L https://github.com/LMDB/lmdb/archive/refs/tags/LMDB_$(LMDB_VER).tar.gz -o $@ - -deps/flatcc_$(FLATCC_VER).tar.gz: deps/.dir - curl -L https://github.com/jb55/flatcc/archive/$(FLATCC_VER).tar.gz -o $@ - -#deps/flatcc/src/runtime/json_parser.c: deps/flatcc_$(FLATCC_VER).tar.gz deps/.dir -# tar xf $< -# rm -rf deps/flatcc -# mv flatcc-$(FLATCC_VER) deps/flatcc -# touch $@ - -#deps/lmdb/lmdb.h: deps/LMDB_$(LMDB_VER).tar.gz deps/.dir -# tar xf $< -# rm -rf deps/lmdb -# mv lmdb-LMDB_$(LMDB_VER)/libraries/liblmdb deps/lmdb -# rm -rf lmdb-LMDB_$(LMDB_VER) -# touch $@ - -deps/secp256k1/.git: deps/.dir - @devtools/refresh-submodules.sh $(SUBMODULES) - -deps/secp256k1/include/secp256k1.h: deps/secp256k1/.git - -deps/secp256k1/configure: deps/secp256k1/.git - cd deps/secp256k1; \ - ./autogen.sh - -deps/secp256k1/.libs/libsecp256k1.a: deps/secp256k1/config.log - cd deps/secp256k1; \ - make -j libsecp256k1.la - -deps/secp256k1/config.log: deps/secp256k1/configure - cd deps/secp256k1; \ - ./configure --disable-shared --enable-module-ecdh --enable-module-schnorrsig --enable-module-extrakeys - -deps/lmdb/liblmdb.a: deps/lmdb/lmdb.h - $(MAKE) -C deps/lmdb liblmdb.a - -testdata/db/ndb-v0.tar.zst: - curl https://cdn.jb55.com/s/ndb-v0.tar.zst -o $@ - -testdata/db/ndb-v0.tar: testdata/db/ndb-v0.tar.zst - zstd -d < $< > $@ - -testdata/db/v0/data.mdb: testdata/db/ndb-v0.tar - tar xf $< - rm -rf testdata/db/v0 - mv v0 testdata/db - -testdata/many-events.json.zst: - curl https://cdn.jb55.com/s/many-events.json.zst -o $@ - -testdata/many-events.json: testdata/many-events.json.zst - zstd -d $< - -bench: bench-ingest-many.c $(DEPS) - $(CC) $(CFLAGS) $< $(LDS) -o $@ - -perf.out: fake - perf script > $@ - -perf.folded: perf.out - stackcollapse-perf.pl $< > $@ - -ndb.svg: perf.folded - flamegraph.pl $< > $@ - -flamegraph: ndb.svg - browser $< - -run-bench: testdata/many-events.json bench - ./bench - -testdata/db/.dir: - @mkdir -p testdata/db - touch testdata/db/.dir - -test: test.c $(DEPS) testdata/db/.dir - $(CC) $(CFLAGS) test.c $(LDS) -o $@ - -.PHONY: tags clean fake diff --git a/nostrdb/Test/NdbTests.swift b/nostrdb/Test/NdbTests.swift deleted file mode 100644 index 47426b006c..0000000000 --- a/nostrdb/Test/NdbTests.swift +++ /dev/null @@ -1,248 +0,0 @@ -// -// NDBIterTests.swift -// damusTests -// -// Created by William Casarin on 2023-07-21. -// - -import XCTest -@testable import damus - -func test_ndb_dir() -> String? { - do { - let fileManager = FileManager.default - let tempDir = fileManager.temporaryDirectory.appendingPathComponent(UUID().uuidString) - try fileManager.createDirectory(at: tempDir, withIntermediateDirectories: true, attributes: nil) - return remove_file_prefix(tempDir.absoluteString) - } catch { - return nil - } -} - -final class NdbTests: XCTestCase { - var db_dir: String = "" - - override func setUpWithError() throws { - guard let db = test_ndb_dir() else { - XCTFail("Could not create temp directory") - return - } - db_dir = db - } - - override func tearDownWithError() throws { - // Put teardown code here. This method is called after the invocation of each test method in the class. - } - - func test_decode_eose() throws { - let json = "[\"EOSE\",\"DC268DBD-55DA-458A-B967-540925AF3497\"]" - let resp = decode_nostr_event(txt: json) - XCTAssertNotNil(resp) - } - - func test_decode_command_result() throws { - let json = "[\"OK\",\"b1d8f68d39c07ce5c5ea10c235100d529b2ed2250140b36a35d940b712dc6eff\",true,\"\"]" - let resp = decode_nostr_event(txt: json) - XCTAssertNotNil(resp) - - } - - func test_profile_creation() { - let profile = make_test_profile() - XCTAssertEqual(profile.name, "jb55") - } - - func test_ndb_init() { - - do { - let ndb = Ndb(path: db_dir)! - let ok = ndb.process_events(test_wire_events) - XCTAssertTrue(ok) - } - - do { - let ndb = Ndb(path: db_dir)! - let id = NoteId(hex: "d12c17bde3094ad32f4ab862a6cc6f5c289cfe7d5802270bdf34904df585f349")! - let note = try? ndb.lookup_note_and_copy(id) - XCTAssertNotNil(note) - guard let note else { return } - let pk = Pubkey(hex: "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245")! - XCTAssertEqual(note.pubkey, pk) - - let profile = try? ndb.lookup_profile_and_copy(pk) - let lnurl = try? ndb.lookup_profile_lnurl(pk) - XCTAssertNotNil(profile) - guard let profile else { return } - - XCTAssertEqual(profile.name, "jb55") - XCTAssertEqual(lnurl, nil) - } - - - } - - func test_ndb_search() throws { - do { - let ndb = Ndb(path: db_dir)! - let ok = ndb.process_events(test_wire_events) - XCTAssertTrue(ok) - } - - do { - let ndb = Ndb(path: db_dir)! - let note_ids = (try? ndb.text_search(query: "barked")) ?? [] - XCTAssertEqual(note_ids.count, 1) - let expected_note_id = NoteId(hex: "b17a540710fe8495b16bfbaf31c6962c4ba8387f3284a7973ad523988095417e")! - guard note_ids.count > 0 else { - XCTFail("Expected at least one note to be found") - return - } - let note_id = try? ndb.lookup_note_by_key(note_ids[0], borrow: { maybeUnownedNote -> NoteId? in - switch maybeUnownedNote { - case .none: return nil - case .some(let unownedNote): return unownedNote.id - } - }) - XCTAssertEqual(note_id, .some(expected_note_id)) - } - } - - func test_ndb_note() throws { - let note = NdbNote.owned_from_json(json: test_contact_list_json) - XCTAssertNotNil(note) - guard let note else { return } - - let id = NoteId(hex: "20d0ff27d6fcb13de8366328c5b1a7af26bcac07f2e558fbebd5e9242e608c09")! - let pubkey = Pubkey(hex: "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245")! - - XCTAssertEqual(note.id, id) - XCTAssertEqual(note.pubkey, pubkey) - - XCTAssertEqual(note.count, 34328) - XCTAssertEqual(note.kind, 3) - XCTAssertEqual(note.created_at, 1689904312) - - let expected_count: UInt16 = 786 - XCTAssertEqual(note.tags.count, expected_count) - XCTAssertEqual(note.tags.reduce(0, { sum, _ in sum + 1 }), expected_count) - - var tags = 0 - var total_count_stored = 0 - var total_count_iter = 0 - //let tags = note.tags() - for tag in note.tags { - total_count_stored += Int(tag.count) - - if tags == 0 || tags == 1 || tags == 2 { - XCTAssertEqual(tag.count, 3) - } - - if tags == 6 { - XCTAssertEqual(tag.count, 2) - } - - if tags == 7 { - XCTAssertEqual(tag[2].string(), "wss://nostr-pub.wellorder.net") - } - - for elem in tag { - print("tag[\(tags)][\(elem.index)]") - total_count_iter += 1 - } - - tags += 1 - } - - XCTAssertEqual(tags, 786) - XCTAssertEqual(total_count_stored, total_count_iter) - } - - /// Based on https://github.com/damus-io/damus/issues/1468 - /// Tests whether a JSON with optional escaped slash characters is correctly unescaped (In accordance to https://datatracker.ietf.org/doc/html/rfc8259#section-7) - func test_decode_json_with_escaped_slashes() { - let testJSONWithEscapedSlashes = "{\"tags\":[],\"pubkey\":\"f8e6c64342f1e052480630e27e1016dce35fc3a614e60434fef4aa2503328ca9\",\"content\":\"https:\\/\\/cdn.nostr.build\\/i\\/5c1d3296f66c2630131bf123106486aeaf051ed8466031c0e0532d70b33cddb2.jpg\",\"created_at\":1691864981,\"kind\":1,\"sig\":\"fc0033aa3d4df50b692a5b346fa816fdded698de2045e36e0642a021391468c44ca69c2471adc7e92088131872d4aaa1e90ea6e1ad97f3cc748f4aed96dfae18\",\"id\":\"e8f6eca3b161abba034dac9a02bb6930ecde9fd2fb5d6c5f22a05526e11382cb\"}" - let testNote = NdbNote.owned_from_json(json: testJSONWithEscapedSlashes)! - XCTAssertEqual(testNote.content, "https://cdn.nostr.build/i/5c1d3296f66c2630131bf123106486aeaf051ed8466031c0e0532d70b33cddb2.jpg") - } - - func test_inherited_transactions() throws { - let ndb = Ndb(path: db_dir)! - do { - guard let txn1 = NdbTxn(ndb: ndb) else { return XCTAssert(false) } - - let ntxn = (Thread.current.threadDictionary.value(forKey: "ndb_txn") as? ndb_txn)! - XCTAssertEqual(txn1.txn.lmdb, ntxn.lmdb) - XCTAssertEqual(txn1.txn.mdb_txn, ntxn.mdb_txn) - - guard let txn2 = NdbTxn(ndb: ndb) else { return XCTAssert(false) } - - XCTAssertEqual(txn1.inherited, false) - XCTAssertEqual(txn2.inherited, true) - } - - let ndb_txn = Thread.current.threadDictionary.value(forKey: "ndb_txn") - XCTAssertNil(ndb_txn) - } - - func test_decode_perf() throws { - // This is an example of a performance test case. - self.measure { - _ = NdbNote.owned_from_json(json: test_contact_list_json) - } - } - - func test_perf_old_decoding() { - self.measure { - let event = decode_nostr_event_json(test_contact_list_json) - XCTAssertNotNil(event) - } - } - - func test_perf_old_iter() { - self.measure { - let event = decode_nostr_event_json(test_contact_list_json) - XCTAssertNotNil(event) - } - } - - func longer_iter(_ n: Int = 1000) -> XCTMeasureOptions { - let opts = XCTMeasureOptions() - opts.iterationCount = n - return opts - } - - func test_iteration_perf() throws { - guard let note = NdbNote.owned_from_json(json: test_contact_list_json) else { - XCTAssert(false) - return - } - - - self.measure { - var count = 0 - var char_count = 0 - - for tag in note.tags { - for elem in tag { - print("iter_elem \(elem.string())") - for c in elem { - if char_count == 0 { - let ac = AsciiCharacter(c) - XCTAssertEqual(ac, "p") - } else if char_count == 0 { - XCTAssertEqual(c, 0x6c) - } - char_count += 1 - } - } - count += 1 - } - - XCTAssertEqual(count, 786) - XCTAssertEqual(char_count, 24370) - } - - } - -} - diff --git a/nostrdb/alignof.h b/nostrdb/alignof.h deleted file mode 100644 index 9a02f188a8..0000000000 --- a/nostrdb/alignof.h +++ /dev/null @@ -1,20 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_ALIGNOF_H -#define CCAN_ALIGNOF_H -#include "config.h" - -/** - * ALIGNOF - get the alignment of a type - * @t: the type to test - * - * This returns a safe alignment for the given type. - */ -#if HAVE_ALIGNOF -/* A GCC extension. */ -#define ALIGNOF(t) __alignof__(t) -#else -/* Alignment by measuring structure padding. */ -#define ALIGNOF(t) ((char *)(&((struct { char c; t _h; } *)0)->_h) - (char *)0) -#endif - -#endif /* CCAN_ALIGNOF_H */ diff --git a/nostrdb/amount.c b/nostrdb/amount.c deleted file mode 100644 index 3216a921b1..0000000000 --- a/nostrdb/amount.c +++ /dev/null @@ -1,566 +0,0 @@ -#include "config.h" -#include -#include "mem.h" -#include "talstr.h" -#include "amount.h" -#include "overflows.h" -#include - -bool amount_sat_to_msat(struct amount_msat *msat, - struct amount_sat sat) -{ - if (mul_overflows_u64(sat.satoshis, MSAT_PER_SAT)) - return false; - msat->millisatoshis = sat.satoshis * MSAT_PER_SAT; - return true; -} - -bool amount_msat_to_sat(struct amount_sat *sat, - struct amount_msat msat) -{ - if (msat.millisatoshis % MSAT_PER_SAT) - return false; - sat->satoshis = msat.millisatoshis / MSAT_PER_SAT; - return true; -} - - -/* You can always truncate millisatoshis->satoshis. */ -struct amount_sat amount_msat_to_sat_round_down(struct amount_msat msat) -{ - struct amount_sat sat; - - sat.satoshis = msat.millisatoshis / MSAT_PER_SAT; - return sat; -} - -/* Different formatting by amounts: btc, sat and msat */ -const char *fmt_amount_msat_btc(const tal_t *ctx, - struct amount_msat msat, - bool append_unit) -{ - if (msat.millisatoshis == 0) - return tal_fmt(ctx, append_unit ? "0btc" : "0"); - - return tal_fmt(ctx, "%"PRIu64".%011"PRIu64"%s", - msat.millisatoshis / MSAT_PER_BTC, - msat.millisatoshis % MSAT_PER_BTC, - append_unit ? "btc" : ""); -} - -const char *fmt_amount_msat(const tal_t *ctx, struct amount_msat msat) -{ - return tal_fmt(ctx, "%"PRIu64"msat", msat.millisatoshis); -} - -const char *fmt_amount_sat_btc(const tal_t *ctx, - struct amount_sat sat, - bool append_unit) -{ - if (sat.satoshis == 0) - return tal_fmt(ctx, append_unit ? "0btc" : "0"); - - return tal_fmt(ctx, "%"PRIu64".%08"PRIu64"%s", - sat.satoshis / SAT_PER_BTC, - sat.satoshis % SAT_PER_BTC, - append_unit ? "btc" : ""); -} - -const char *fmt_amount_sat(const tal_t *ctx, struct amount_sat sat) -{ - return tal_fmt(ctx, "%"PRIu64"sat", sat.satoshis); -} - -static bool breakup(const char *str, size_t slen, - /* Length of first numeric part. */ - size_t *whole_number_len, - /* Pointer to post-decimal part, or NULL */ - const char **post_decimal_ptr, - size_t *post_decimal_len, - /* Pointer to suffix, or NULL */ - const char **suffix_ptr, - size_t *suffix_len) -{ - size_t i; - - *whole_number_len = 0; - *post_decimal_len = 0; - *post_decimal_ptr = NULL; - *suffix_ptr = NULL; - *suffix_len = 0; - - for (i = 0;; i++) { - /* The string may be null-terminated. */ - if (i >= slen || str[i] == '\0') - return i != 0; - if (cisdigit(str[i])) - (*whole_number_len)++; - else - break; - } - - if (str[i] == '.') { - i++; - *post_decimal_ptr = str + i; - for (;; i++) { - /* True if > 0 decimals. */ - if (i >= slen || str[i] == '\0') - return str + i != *post_decimal_ptr; - if (cisdigit(str[i])) - (*post_decimal_len)++; - else - break; - } - } - - *suffix_ptr = str + i; - *suffix_len = slen - i; - return true; -} - -static bool from_number(u64 *res, const char *s, size_t len, int tens_factor) -{ - if (len == 0) - return false; - - *res = 0; - for (size_t i = 0; i < len; i++) { - if (mul_overflows_u64(*res, 10)) - return false; - *res *= 10; - assert(cisdigit(s[i])); - if (add_overflows_u64(*res, s[i] - '0')) - return false; - *res += s[i] - '0'; - } - while (tens_factor > 0) { - if (mul_overflows_u64(*res, 10)) - return false; - *res *= 10; - tens_factor--; - } - return true; -} - -static bool from_numbers(u64 *res, - const char *s1, size_t len1, int tens_factor, - const char *s2, size_t len2) -{ - u64 p1, p2; - if (len2 > tens_factor) - return false; - - if (!from_number(&p1, s1, len1, tens_factor) - || !from_number(&p2, s2, len2, tens_factor - (int)len2)) - return false; - - if (add_overflows_u64(p1, p2)) - return false; - - *res = p1 + p2; - return true; -} - -/* Valid strings: - * [0-9]+ => millisatoshi. - * [0-9]+msat => millisatoshi. - * [0-9]+sat => *1000 -> millisatoshi. - * [0-9]+.[0-9]{1,11}btc => millisatoshi. - */ -bool parse_amount_msat(struct amount_msat *msat, const char *s, size_t slen) -{ - size_t whole_number_len, post_decimal_len, suffix_len; - const char *post_decimal_ptr, *suffix_ptr; - - if (!breakup(s, slen, &whole_number_len, - &post_decimal_ptr, &post_decimal_len, - &suffix_ptr, &suffix_len)) - return false; - - if (!post_decimal_ptr && !suffix_ptr) - return from_number(&msat->millisatoshis, s, whole_number_len, 0); - if (!post_decimal_ptr && memstarts_str(suffix_ptr, suffix_len, "msat")) - return from_number(&msat->millisatoshis, s, whole_number_len, 0); - if (!post_decimal_ptr && memstarts_str(suffix_ptr, suffix_len, "sat")) - return from_number(&msat->millisatoshis, s, whole_number_len, 3); - if (memstarts_str(suffix_ptr, suffix_len, "btc")) { - if (post_decimal_len > 0) - return from_numbers(&msat->millisatoshis, - s, whole_number_len, 11, - post_decimal_ptr, post_decimal_len); - return from_number(&msat->millisatoshis, s, whole_number_len, 11); - } - - return false; -} - -/* Valid strings: - * [0-9]+ => satoshi. - * [0-9]+sat => satoshi. - * [0-9]+000msat => satoshi. - * 0msat => 0 satoshi - * [0-9]+.[0-9]{1,8}btc => satoshi. - */ -bool parse_amount_sat(struct amount_sat *sat, const char *s, size_t slen) -{ - size_t whole_number_len, post_decimal_len, suffix_len; - const char *post_decimal_ptr, *suffix_ptr; - - if (!breakup(s, slen, &whole_number_len, - &post_decimal_ptr, &post_decimal_len, - &suffix_ptr, &suffix_len)) - return false; - - if (!post_decimal_ptr && !suffix_ptr) - return from_number(&sat->satoshis, s, whole_number_len, 0); - if (!post_decimal_ptr && memstarts_str(suffix_ptr, suffix_len, "sat")) - return from_number(&sat->satoshis, s, whole_number_len, 0); - if (!post_decimal_ptr && memstarts_str(suffix_ptr, suffix_len, "msat")) { - if (!memends(s, whole_number_len, "000", strlen("000"))) { - if (memstarts_str(s, whole_number_len, "0")) - return from_number(&sat->satoshis, s, - whole_number_len, 0); - return false; - } - return from_number(&sat->satoshis, s, whole_number_len - 3, 0); - } - if (memstarts_str(suffix_ptr, suffix_len, "btc")) { - if (post_decimal_len > 0) - return from_numbers(&sat->satoshis, - s, whole_number_len, 8, - post_decimal_ptr, post_decimal_len); - return from_number(&sat->satoshis, s, whole_number_len, 8); - } - - return false; -} - -WARN_UNUSED_RESULT bool amount_msat_add(struct amount_msat *val, - struct amount_msat a, - struct amount_msat b) -{ - if (add_overflows_u64(a.millisatoshis, b.millisatoshis)) - return false; - - val->millisatoshis = a.millisatoshis + b.millisatoshis; - return true; -} - -WARN_UNUSED_RESULT bool amount_msat_sub(struct amount_msat *val, - struct amount_msat a, - struct amount_msat b) -{ - if (a.millisatoshis < b.millisatoshis) - return false; - - val->millisatoshis = a.millisatoshis - b.millisatoshis; - return true; -} - -WARN_UNUSED_RESULT bool amount_sat_add(struct amount_sat *val, - struct amount_sat a, - struct amount_sat b) -{ - if (add_overflows_u64(a.satoshis, b.satoshis)) - return false; - - val->satoshis = a.satoshis + b.satoshis; - return true; -} - -WARN_UNUSED_RESULT bool amount_sat_sub(struct amount_sat *val, - struct amount_sat a, - struct amount_sat b) -{ - if (a.satoshis < b.satoshis) - return false; - - val->satoshis = a.satoshis - b.satoshis; - return true; -} - -WARN_UNUSED_RESULT bool amount_msat_sub_sat(struct amount_msat *val, - struct amount_msat a, - struct amount_sat b) -{ - struct amount_msat msatb; - - if (!amount_sat_to_msat(&msatb, b)) - return false; - - return amount_msat_sub(val, a, msatb); -} - -WARN_UNUSED_RESULT bool amount_sat_sub_msat(struct amount_msat *val, - struct amount_sat a, - struct amount_msat b) -{ - struct amount_msat msata; - - if (!amount_sat_to_msat(&msata, a)) - return false; - - return amount_msat_sub(val, msata, b); -} - -WARN_UNUSED_RESULT bool amount_msat_add_sat(struct amount_msat *val, - struct amount_msat a, - struct amount_sat b) -{ - struct amount_msat msatb; - - if (!amount_sat_to_msat(&msatb, b)) - return false; - - return amount_msat_add(val, a, msatb); -} - -WARN_UNUSED_RESULT bool amount_msat_scale(struct amount_msat *val, - struct amount_msat msat, - double scale) -{ - double scaled = msat.millisatoshis * scale; - - /* If mantissa is < 64 bits, a naive "if (scaled > - * UINT64_MAX)" doesn't work. Stick to powers of 2. */ - if (scaled >= (double)((u64)1 << 63) * 2) - return false; - val->millisatoshis = scaled; - return true; -} - -WARN_UNUSED_RESULT bool amount_sat_scale(struct amount_sat *val, - struct amount_sat sat, - double scale) -{ - double scaled = sat.satoshis * scale; - - /* If mantissa is < 64 bits, a naive "if (scaled > - * UINT64_MAX)" doesn't work. Stick to powers of 2. */ - if (scaled >= (double)((u64)1 << 63) * 2) - return false; - val->satoshis = scaled; - return true; -} - -bool amount_sat_eq(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis == b.satoshis; -} - -bool amount_sat_zero(struct amount_sat a) -{ - return a.satoshis == 0; -} - -bool amount_msat_zero(struct amount_msat a) -{ - return a.millisatoshis == 0; -} - -bool amount_msat_eq(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis == b.millisatoshis; -} - -bool amount_sat_greater(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis > b.satoshis; -} - -bool amount_msat_greater(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis > b.millisatoshis; -} - -bool amount_sat_greater_eq(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis >= b.satoshis; -} - -bool amount_msat_greater_eq(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis >= b.millisatoshis; -} - -bool amount_sat_less(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis < b.satoshis; -} - -bool amount_msat_less(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis < b.millisatoshis; -} - -bool amount_sat_less_eq(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis <= b.satoshis; -} - -bool amount_msat_less_eq(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis <= b.millisatoshis; -} - -bool amount_msat_greater_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - return msat.millisatoshis > msat_from_sat.millisatoshis; -} - -bool amount_msat_greater_eq_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - return msat.millisatoshis >= msat_from_sat.millisatoshis; -} - -bool amount_msat_less_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - return msat.millisatoshis < msat_from_sat.millisatoshis; -} - -bool amount_msat_less_eq_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - return msat.millisatoshis <= msat_from_sat.millisatoshis; -} - -bool amount_msat_eq_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - - return msat.millisatoshis == msat_from_sat.millisatoshis; -} - -bool amount_msat_to_u32(struct amount_msat msat, u32 *millisatoshis) -{ - if (amount_msat_greater_eq(msat, AMOUNT_MSAT(0x100000000))) - return false; - *millisatoshis = (u32)msat.millisatoshis; - return true; -} - -struct amount_msat amount_msat(u64 millisatoshis) -{ - struct amount_msat msat; - - msat.millisatoshis = millisatoshis; - return msat; -} - -struct amount_sat amount_sat(u64 satoshis) -{ - struct amount_sat sat; - - sat.satoshis = satoshis; - return sat; -} - -double amount_msat_ratio(struct amount_msat a, struct amount_msat b) -{ - return (double)a.millisatoshis / b.millisatoshis; -} - -struct amount_msat amount_msat_div(struct amount_msat msat, u64 div) -{ - msat.millisatoshis /= div; - return msat; -} - -struct amount_sat amount_sat_div(struct amount_sat sat, u64 div) -{ - sat.satoshis /= div; - return sat; -} - -bool amount_msat_fee(struct amount_msat *fee, - struct amount_msat amt, - u32 fee_base_msat, - u32 fee_proportional_millionths) -{ - struct amount_msat fee_base, fee_prop; - - /* BOLT #7: - * - * - SHOULD accept HTLCs that pay a fee equal to or greater than: - * - fee_base_msat + ( amount_to_forward * fee_proportional_millionths / 1000000 ) - */ - fee_base.millisatoshis = fee_base_msat; - - if (mul_overflows_u64(amt.millisatoshis, fee_proportional_millionths)) - return false; - fee_prop.millisatoshis = amt.millisatoshis * fee_proportional_millionths - / 1000000; - - return amount_msat_add(fee, fee_base, fee_prop); -} - -bool amount_msat_add_fee(struct amount_msat *amt, - u32 fee_base_msat, - u32 fee_proportional_millionths) -{ - struct amount_msat fee; - - if (!amount_msat_fee(&fee, *amt, - fee_base_msat, fee_proportional_millionths)) - return false; - return amount_msat_add(amt, *amt, fee); -} - -struct amount_sat amount_tx_fee(u32 fee_per_kw, size_t weight) -{ - struct amount_sat fee; - - /* If this overflows, weight must be > 2^32, which is not a real tx */ - assert(!mul_overflows_u64(fee_per_kw, weight)); - fee.satoshis = (u64)fee_per_kw * weight / 1000; - - return fee; -} - -/* -struct amount_msat fromwire_amount_msat(const u8 **cursor, size_t *max) -{ - struct amount_msat msat; - - msat.millisatoshis = fromwire_u64(cursor, max); - return msat; -} - -struct amount_sat fromwire_amount_sat(const u8 **cursor, size_t *max) -{ - struct amount_sat sat; - - sat.satoshis = fromwire_u64(cursor, max); - return sat; -} - -void towire_amount_msat(u8 **pptr, const struct amount_msat msat) -{ - towire_u64(pptr, msat.millisatoshis); -} - -void towire_amount_sat(u8 **pptr, const struct amount_sat sat) -{ - towire_u64(pptr, sat.satoshis); -} - - -*/ diff --git a/nostrdb/amount.h b/nostrdb/amount.h deleted file mode 100644 index a03c6083db..0000000000 --- a/nostrdb/amount.h +++ /dev/null @@ -1,203 +0,0 @@ -#ifndef LIGHTNING_COMMON_AMOUNT_H -#define LIGHTNING_COMMON_AMOUNT_H -#include "config.h" -#include "short_types.h" -#include "tal.h" - -#define MSAT_PER_SAT ((u64)1000) -#define SAT_PER_BTC ((u64)100000000) -#define MSAT_PER_BTC (MSAT_PER_SAT * SAT_PER_BTC) - -/* Use these to wrap amounts, for typesafety. Please use ops where possible, - * rather than accessing the members directly. */ -struct amount_sat { - /* Amount in satoshis. */ - u64 satoshis; -}; - -struct amount_msat { - /* Amount in millisatoshis. */ - u64 millisatoshis; -}; - -struct amount_asset { - u64 value; - u8 asset[33]; /* 1 version byte + 32 byte asset_tag */ -}; - -/* For constants only: others must be built from primitives! */ -#if HAVE_BUILTIN_CONSTANT_P -#define AMOUNT_MUST_BE_CONST(c) BUILD_ASSERT_OR_ZERO(IS_COMPILE_CONSTANT(c)) -#else -#define AMOUNT_MUST_BE_CONST(c) 0 -#endif - -/* GCC 4.8.5 (Centos 7.6!) thinks struct casts are not constants, so we - * need to not use a cast for static initializations. */ -#define AMOUNT_MSAT_INIT(msat) \ - { .millisatoshis = (msat) } -#define AMOUNT_SAT_INIT(sat) \ - { .satoshis = (sat) } - -#define AMOUNT_MSAT(constant) \ - ((struct amount_msat){(constant) + AMOUNT_MUST_BE_CONST(constant)}) - -#define AMOUNT_SAT(constant) \ - ((struct amount_sat){(constant) + AMOUNT_MUST_BE_CONST(constant)}) - -/* We do sometimes need to import from raw types, eg. wally or wire fmt */ -struct amount_msat amount_msat(u64 millisatoshis); -struct amount_sat amount_sat(u64 satoshis); - -/* You may not always be able to convert satoshis->millisatoshis. */ -WARN_UNUSED_RESULT bool amount_sat_to_msat(struct amount_msat *msat, - struct amount_sat sat); - -/* You may not always be able to convert millisatoshis->satoshis without rounding. */ -WARN_UNUSED_RESULT bool amount_msat_to_sat(struct amount_sat *sat, - struct amount_msat msat); - -/* You can always truncate millisatoshis->satoshis. */ -struct amount_sat amount_msat_to_sat_round_down(struct amount_msat msat); - -/* Simple operations: val = a + b, val = a - b. */ -WARN_UNUSED_RESULT bool amount_msat_add(struct amount_msat *val, - struct amount_msat a, - struct amount_msat b); -WARN_UNUSED_RESULT bool amount_msat_sub(struct amount_msat *val, - struct amount_msat a, - struct amount_msat b); -WARN_UNUSED_RESULT bool amount_sat_add(struct amount_sat *val, - struct amount_sat a, - struct amount_sat b); -WARN_UNUSED_RESULT bool amount_sat_sub(struct amount_sat *val, - struct amount_sat a, - struct amount_sat b); -WARN_UNUSED_RESULT bool amount_msat_sub_sat(struct amount_msat *val, - struct amount_msat a, - struct amount_sat b); -WARN_UNUSED_RESULT bool amount_msat_add_sat(struct amount_msat *val, - struct amount_msat a, - struct amount_sat b); -WARN_UNUSED_RESULT bool amount_sat_sub_msat(struct amount_msat *val, - struct amount_sat a, - struct amount_msat b); -WARN_UNUSED_RESULT bool amount_msat_scale(struct amount_msat *val, - struct amount_msat msat, - double scale); -WARN_UNUSED_RESULT bool amount_sat_scale(struct amount_sat *val, - struct amount_sat sat, - double scale); - -struct amount_msat amount_msat_div(struct amount_msat msat, u64 div); -struct amount_sat amount_sat_div(struct amount_sat sat, u64 div); - -/* Is a == b? */ -bool amount_sat_eq(struct amount_sat a, struct amount_sat b); -bool amount_msat_eq(struct amount_msat a, struct amount_msat b); - -/* Is a zero? */ -bool amount_sat_zero(struct amount_sat a); -bool amount_msat_zero(struct amount_msat a); - -/* Is a > b? */ -bool amount_sat_greater(struct amount_sat a, struct amount_sat b); -bool amount_msat_greater(struct amount_msat a, struct amount_msat b); - -/* Is a >= b */ -bool amount_sat_greater_eq(struct amount_sat a, struct amount_sat b); -bool amount_msat_greater_eq(struct amount_msat a, struct amount_msat b); - -/* Is a < b? */ -bool amount_sat_less(struct amount_sat a, struct amount_sat b); -bool amount_msat_less(struct amount_msat a, struct amount_msat b); - -/* Is a <= b? */ -bool amount_sat_less_eq(struct amount_sat a, struct amount_sat b); -bool amount_msat_less_eq(struct amount_msat a, struct amount_msat b); - -/* Is msat > sat? */ -bool amount_msat_greater_sat(struct amount_msat msat, struct amount_sat sat); -/* Is msat >= sat? */ -bool amount_msat_greater_eq_sat(struct amount_msat msat, struct amount_sat sat); -/* Is msat < sat? */ -bool amount_msat_less_sat(struct amount_msat msat, struct amount_sat sat); -/* Is msat <= sat? */ -bool amount_msat_less_eq_sat(struct amount_msat msat, struct amount_sat sat); -/* Is msat == sat? */ -bool amount_msat_eq_sat(struct amount_msat msat, struct amount_sat sat); - -/* a / b */ -double amount_msat_ratio(struct amount_msat a, struct amount_msat b); - -/* Check whether this asset is actually the main / fee-paying asset of the - * current chain. */ -bool amount_asset_is_main(struct amount_asset *asset); - -/* Convert an amount_sat to an amount_asset */ -struct amount_asset amount_sat_to_asset(struct amount_sat *sat, const u8 *asset); - -/* amount_asset_extract_value -Prefix the amount_asset's value - * to have the 'explicit' marker. Returns NULL if the - * asset was originally blinded. - * FIXME: pass through blinded amounts */ -u8 *amount_asset_extract_value(const tal_t *ctx, struct amount_asset *asset); - -/* Convert from a generic asset to the fee-paying asset if possible. */ -struct amount_sat amount_asset_to_sat(struct amount_asset *asset); - -/* Returns true if msat fits in a u32 value. */ -WARN_UNUSED_RESULT bool amount_msat_to_u32(struct amount_msat msat, - u32 *millisatoshis); - -/* Common operation: what is the HTLC fee for given feerate? Can overflow! */ -WARN_UNUSED_RESULT bool amount_msat_fee(struct amount_msat *fee, - struct amount_msat amt, - u32 fee_base_msat, - u32 fee_proportional_millionths); - -/* Same, but add into amt. */ -WARN_UNUSED_RESULT bool amount_msat_add_fee(struct amount_msat *amt, - u32 fee_base_msat, - u32 fee_proportional_millionths); - -/* What is the fee for this tx weight? */ -struct amount_sat amount_tx_fee(u32 fee_per_kw, size_t weight); - -/* Different formatting by amounts: btc, sat and msat */ -/* => 1.23456789012btc (11 decimals!) */ -const char *fmt_amount_msat_btc(const tal_t *ctx, - struct amount_msat msat, - bool append_unit); -/* => 1234msat */ -const char *fmt_amount_msat(const tal_t *ctx, struct amount_msat msat); - -/* => 1.23456789btc (8 decimals!) */ -const char *fmt_amount_sat_btc(const tal_t *ctx, - struct amount_sat sat, - bool append_unit); -/* => 1234sat */ -const char *fmt_amount_sat(const tal_t *ctx, struct amount_sat sat); - -/* Valid strings: - * [0-9]+ => millisatoshi. - * [0-9]+msat => millisatoshi. - * [0-9]+sat => *1000 -> millisatopshi. - * [0-9]+.[0-9]{1,11}btc => millisatoshi. - */ -bool parse_amount_msat(struct amount_msat *msat, const char *s, size_t slen); - -/* Valid strings: - * [0-9]+ => satoshi. - * [0-9]+sat => satoshi. - * [0-9]+000msat => satoshi. - * [0-9]+.[0-9]{1,8}btc => satoshi. - */ -bool parse_amount_sat(struct amount_sat *sat, const char *s, size_t slen); - -/* Marshal/unmarshal functions */ -struct amount_msat fromwire_amount_msat(const u8 **cursor, size_t *max); -struct amount_sat fromwire_amount_sat(const u8 **cursor, size_t *max); -void towire_amount_msat(u8 **pptr, const struct amount_msat msat); -void towire_amount_sat(u8 **pptr, const struct amount_sat sat); -#endif /* LIGHTNING_COMMON_AMOUNT_H */ diff --git a/nostrdb/array_size.h b/nostrdb/array_size.h deleted file mode 100644 index 8feca88c80..0000000000 --- a/nostrdb/array_size.h +++ /dev/null @@ -1,26 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_ARRAY_SIZE_H -#define CCAN_ARRAY_SIZE_H -#include "config.h" -#include "build_assert.h" - -/** - * ARRAY_SIZE - get the number of elements in a visible array - * @arr: the array whose size you want. - * - * This does not work on pointers, or arrays declared as [], or - * function parameters. With correct compiler support, such usage - * will cause a build error (see build_assert). - */ -#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + _array_size_chk(arr)) - -#if HAVE_BUILTIN_TYPES_COMPATIBLE_P && HAVE_TYPEOF -/* Two gcc extensions. - * &a[0] degrades to a pointer: a different type from an array */ -#define _array_size_chk(arr) \ - BUILD_ASSERT_OR_ZERO(!__builtin_types_compatible_p(typeof(arr), \ - typeof(&(arr)[0]))) -#else -#define _array_size_chk(arr) 0 -#endif -#endif /* CCAN_ALIGNOF_H */ diff --git a/nostrdb/bech32.c b/nostrdb/bech32.c deleted file mode 100644 index 3ec6a1fbdc..0000000000 --- a/nostrdb/bech32.c +++ /dev/null @@ -1,217 +0,0 @@ -/* Stolen from https://github.com/sipa/bech32/blob/master/ref/c/segwit_addr.c, - * with only the two ' > 90' checks hoisted, and more internals exposed */ - -/* Copyright (c) 2017, 2021 Pieter Wuille - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#include "config.h" -#include -#include "bech32.h" -#include - -static uint32_t bech32_polymod_step(uint32_t pre) { - uint8_t b = pre >> 25; - return ((pre & 0x1FFFFFF) << 5) ^ - (-((b >> 0) & 1) & 0x3b6a57b2UL) ^ - (-((b >> 1) & 1) & 0x26508e6dUL) ^ - (-((b >> 2) & 1) & 0x1ea119faUL) ^ - (-((b >> 3) & 1) & 0x3d4233ddUL) ^ - (-((b >> 4) & 1) & 0x2a1462b3UL); -} - -static uint32_t bech32_final_constant(bech32_encoding enc) { - if (enc == BECH32_ENCODING_BECH32) return 1; - if (enc == BECH32_ENCODING_BECH32M) return 0x2bc830a3; - assert(0); -} - -const char bech32_charset[] = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"; - -const int8_t bech32_charset_rev[128] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 15, -1, 10, 17, 21, 20, 26, 30, 7, 5, -1, -1, -1, -1, -1, -1, - -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, - 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1, - -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, - 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1 -}; - -int bech32_encode(char *output, const char *hrp, const uint8_t *data, size_t data_len, size_t max_input_len, bech32_encoding enc) { - uint32_t chk = 1; - size_t i = 0; - while (hrp[i] != 0) { - int ch = hrp[i]; - if (ch < 33 || ch > 126) { - return 0; - } - - if (ch >= 'A' && ch <= 'Z') return 0; - chk = bech32_polymod_step(chk) ^ (ch >> 5); - ++i; - } - if (i + 7 + data_len > max_input_len) return 0; - chk = bech32_polymod_step(chk); - while (*hrp != 0) { - chk = bech32_polymod_step(chk) ^ (*hrp & 0x1f); - *(output++) = *(hrp++); - } - *(output++) = '1'; - for (i = 0; i < data_len; ++i) { - if (*data >> 5) return 0; - chk = bech32_polymod_step(chk) ^ (*data); - *(output++) = bech32_charset[*(data++)]; - } - for (i = 0; i < 6; ++i) { - chk = bech32_polymod_step(chk); - } - chk ^= bech32_final_constant(enc); - for (i = 0; i < 6; ++i) { - *(output++) = bech32_charset[(chk >> ((5 - i) * 5)) & 0x1f]; - } - *output = 0; - return 1; -} - -bech32_encoding bech32_decode_len(char* hrp, uint8_t *data, size_t *data_len, const char *input, size_t input_len) { - uint32_t chk = 1; - size_t i; - size_t hrp_len; - int have_lower = 0, have_upper = 0; - if (input_len < 8) { - return BECH32_ENCODING_NONE; - } - *data_len = 0; - while (*data_len < input_len && input[(input_len - 1) - *data_len] != '1') { - ++(*data_len); - } - hrp_len = input_len - (1 + *data_len); - if (1 + *data_len >= input_len || *data_len < 6) { - return BECH32_ENCODING_NONE; - } - *(data_len) -= 6; - for (i = 0; i < hrp_len; ++i) { - int ch = input[i]; - if (ch < 33 || ch > 126) { - return BECH32_ENCODING_NONE; - } - if (ch >= 'a' && ch <= 'z') { - have_lower = 1; - } else if (ch >= 'A' && ch <= 'Z') { - have_upper = 1; - ch = (ch - 'A') + 'a'; - } - hrp[i] = ch; - chk = bech32_polymod_step(chk) ^ (ch >> 5); - } - hrp[i] = 0; - chk = bech32_polymod_step(chk); - for (i = 0; i < hrp_len; ++i) { - chk = bech32_polymod_step(chk) ^ (input[i] & 0x1f); - } - ++i; - while (i < input_len) { - int v = (input[i] & 0x80) ? -1 : bech32_charset_rev[(int)input[i]]; - if (input[i] >= 'a' && input[i] <= 'z') have_lower = 1; - if (input[i] >= 'A' && input[i] <= 'Z') have_upper = 1; - if (v == -1) { - return BECH32_ENCODING_NONE; - } - chk = bech32_polymod_step(chk) ^ v; - if (i + 6 < input_len) { - data[i - (1 + hrp_len)] = v; - } - ++i; - } - if (have_lower && have_upper) { - return BECH32_ENCODING_NONE; - } - if (chk == bech32_final_constant(BECH32_ENCODING_BECH32)) { - return BECH32_ENCODING_BECH32; - } else if (chk == bech32_final_constant(BECH32_ENCODING_BECH32M)) { - return BECH32_ENCODING_BECH32M; - } else { - return BECH32_ENCODING_NONE; - } -} - -bech32_encoding bech32_decode(char* hrp, uint8_t *data, size_t *data_len, const char *input, size_t max_input_len) { - size_t len = strlen(input); - if (len > max_input_len) { - return BECH32_ENCODING_NONE; - } - return bech32_decode_len(hrp, data, data_len, input, len); -} - -int bech32_convert_bits(uint8_t* out, size_t* outlen, int outbits, const uint8_t* in, size_t inlen, int inbits, int pad) { - uint32_t val = 0; - int bits = 0; - uint32_t maxv = (((uint32_t)1) << outbits) - 1; - while (inlen--) { - val = (val << inbits) | *(in++); - bits += inbits; - while (bits >= outbits) { - bits -= outbits; - out[(*outlen)++] = (val >> bits) & maxv; - } - } - if (pad) { - if (bits) { - out[(*outlen)++] = (val << (outbits - bits)) & maxv; - } - } else if (((val << (outbits - bits)) & maxv) || bits >= inbits) { - return 0; - } - return 1; -} - -int segwit_addr_encode(char *output, const char *hrp, int witver, const uint8_t *witprog, size_t witprog_len) { - uint8_t data[65]; - size_t datalen = 0; - bech32_encoding enc = BECH32_ENCODING_BECH32; - if (witver > 16) return 0; - if (witver == 0 && witprog_len != 20 && witprog_len != 32) return 0; - if (witprog_len < 2 || witprog_len > 40) return 0; - if (witver > 0) enc = BECH32_ENCODING_BECH32M; - data[0] = witver; - bech32_convert_bits(data + 1, &datalen, 5, witprog, witprog_len, 8, 1); - ++datalen; - return bech32_encode(output, hrp, data, datalen, 90, enc); -} - -int segwit_addr_decode(int* witver, uint8_t* witdata, size_t* witdata_len, const char* hrp, const char* addr) { - uint8_t data[84]; - char hrp_actual[84]; - size_t data_len; - bech32_encoding enc = bech32_decode(hrp_actual, data, &data_len, addr, 90); - if (enc == BECH32_ENCODING_NONE) return 0; - if (data_len == 0 || data_len > 65) return 0; - if (strncmp(hrp, hrp_actual, 84) != 0) return 0; - if (data[0] > 16) return 0; - if (data[0] == 0 && enc != BECH32_ENCODING_BECH32) return 0; - if (data[0] > 0 && enc != BECH32_ENCODING_BECH32M) return 0; - *witdata_len = 0; - if (!bech32_convert_bits(witdata, witdata_len, 8, data + 1, data_len - 1, 5, 0)) return 0; - if (*witdata_len < 2 || *witdata_len > 40) return 0; - if (data[0] == 0 && *witdata_len != 20 && *witdata_len != 32) return 0; - *witver = data[0]; - return 1; -} diff --git a/nostrdb/bech32.h b/nostrdb/bech32.h deleted file mode 100644 index d782211c80..0000000000 --- a/nostrdb/bech32.h +++ /dev/null @@ -1,142 +0,0 @@ -/* Stolen from https://github.com/sipa/bech32/blob/master/ref/c/segwit_addr.h, - * with only the two ' > 90' checks hoisted */ - -/* Copyright (c) 2017, 2021 Pieter Wuille - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef LIGHTNING_COMMON_BECH32_H -#define LIGHTNING_COMMON_BECH32_H -#include "config.h" - -#include -#include - -/** Encode a SegWit address - * - * Out: output: Pointer to a buffer of size 73 + strlen(hrp) that will be - * updated to contain the null-terminated address. - * In: hrp: Pointer to the null-terminated human readable part to use - * (chain/network specific). - * ver: Version of the witness program (between 0 and 16 inclusive). - * prog: Data bytes for the witness program (between 2 and 40 bytes). - * prog_len: Number of data bytes in prog. - * Returns 1 if successful. - */ -int segwit_addr_encode( - char *output, - const char *hrp, - int ver, - const uint8_t *prog, - size_t prog_len -); - -/** Decode a SegWit address - * - * Out: ver: Pointer to an int that will be updated to contain the witness - * program version (between 0 and 16 inclusive). - * prog: Pointer to a buffer of size 40 that will be updated to - * contain the witness program bytes. - * prog_len: Pointer to a size_t that will be updated to contain the length - * of bytes in prog. - * hrp: Pointer to the null-terminated human readable part that is - * expected (chain/network specific). - * addr: Pointer to the null-terminated address. - * Returns 1 if successful. - */ -int segwit_addr_decode( - int* ver, - uint8_t* prog, - size_t* prog_len, - const char* hrp, - const char* addr -); - -/** Supported encodings. */ -typedef enum { - BECH32_ENCODING_NONE, - BECH32_ENCODING_BECH32, - BECH32_ENCODING_BECH32M -} bech32_encoding; - -/** Encode a Bech32 or Bech32m string - * - * Out: output: Pointer to a buffer of size strlen(hrp) + data_len + 8 that - * will be updated to contain the null-terminated Bech32 string. - * In: hrp : Pointer to the null-terminated human readable part. - * data : Pointer to an array of 5-bit values. - * data_len: Length of the data array. - * max_input_len: Maximum valid length of input (90 for segwit usage). - * enc: Which encoding to use (BECH32_ENCODING_BECH32{,M}). - * Returns 1 if successful. - */ -int bech32_encode( - char *output, - const char *hrp, - const uint8_t *data, - size_t data_len, - size_t max_input_len, - bech32_encoding enc -); - -/** Decode a Bech32 or Bech32m string - * - * Out: hrp: Pointer to a buffer of size strlen(input) - 6. Will be - * updated to contain the null-terminated human readable part. - * data: Pointer to a buffer of size strlen(input) - 8 that will - * hold the encoded 5-bit data values. - * data_len: Pointer to a size_t that will be updated to be the number - * of entries in data. - * In: input: Pointer to a null-terminated Bech32 string. - * max_input_len: Maximum valid length of input (90 for segwit usage). - * Returns BECH32_ENCODING_BECH32{,M} to indicate decoding was successful - * with the specified encoding standard. BECH32_ENCODING_NONE is returned if - * decoding failed. - */ -bech32_encoding bech32_decode( - char *hrp, - uint8_t *data, - size_t *data_len, - const char *input, - size_t max_input_len -); - -bech32_encoding bech32_decode_len( - char *hrp, - uint8_t *data, - size_t *data_len, - const char *input, - size_t input_len -); - -/* Helper from bech32: translates inbits-bit bytes to outbits-bit bytes. - * @outlen is incremented as bytes are added. - * @pad is true if we're to pad, otherwise truncate last byte if necessary - */ -int bech32_convert_bits(uint8_t* out, size_t* outlen, int outbits, - const uint8_t* in, size_t inlen, int inbits, - int pad); - -/* The charset, and reverse mapping */ -extern const char bech32_charset[32]; -extern const int8_t bech32_charset_rev[128]; - -#endif /* LIGHTNING_COMMON_BECH32_H */ - diff --git a/nostrdb/bech32_util.c b/nostrdb/bech32_util.c deleted file mode 100644 index 3667c28e68..0000000000 --- a/nostrdb/bech32_util.c +++ /dev/null @@ -1,127 +0,0 @@ -#include "config.h" -#include "bech32.h" -#include "bech32_util.h" -#include "hash_u5.h" -#include "talstr.h" -#include "tal.h" -#include "short_types.h" -#include - -static u8 get_bit(const u8 *src, size_t bitoff) -{ - return ((src[bitoff / 8] >> (7 - (bitoff % 8))) & 1); -} - -void bech32_push_bits(u5 **data, const void *src, size_t nbits) -{ - size_t i, b; - size_t data_len = tal_count(*data); - - for (i = 0; i < nbits; i += b) { - tal_resize(data, data_len+1); - (*data)[data_len] = 0; - for (b = 0; b < 5; b++) { - (*data)[data_len] <<= 1; - /* If we need bits we don't have, zero */ - if (i+b < nbits) - (*data)[data_len] |= get_bit(src, i+b); - } - data_len++; - } -} - -static u8 get_u5_bit(const u5 *src, size_t bitoff) -{ - return ((src[bitoff / 5] >> (4 - (bitoff % 5))) & 1); -} - -void bech32_pull_bits(u8 **data, const u5 *src, size_t nbits) -{ - size_t i; - size_t data_len = tal_count(*data); - - /* We discard trailing bits. */ - for (i = 0; i + 8 <= nbits; i += 8) { - tal_resize(data, data_len+1); - (*data)[data_len] = 0; - for (size_t b = 0; b < 8; b++) { - (*data)[data_len] <<= 1; - (*data)[data_len] |= get_u5_bit(src, i+b); - } - data_len++; - } -} - -/* Returns a char, tracks case. */ -static int fixup_char(int c, bool *upper, bool *lower) -{ - if (c >= 'A' && c <= 'Z') { - *upper = true; - return c + ('a' - 'A'); - } else if (c >= 'a' && c <= 'z') { - *lower = true; - } - return c; -} - -bool from_bech32_charset(const tal_t *ctx, - const char *bech32, - size_t bech32_len, - char **hrp, u8 **data) -{ - u5 *u5data; - const char *sep; - bool upper = false, lower = false; - size_t datalen; - - sep = memchr(bech32, '1', bech32_len); - if (!sep) - return false; - - *hrp = tal_strndup(ctx, bech32, sep - bech32); - for (size_t i = 0; i < strlen(*hrp); i++) - (*hrp)[i] = fixup_char((*hrp)[i], &upper, &lower); - - datalen = bech32_len - (sep + 1 - bech32); - u5data = tal_arr(NULL, u5, datalen); - for (size_t i = 0; i < datalen; i++) { - int c = sep[1+i]; - if (c < 0 || c > 128) - goto fail; - c = fixup_char(c, &upper, &lower); - if (bech32_charset_rev[c] == -1) - goto fail; - u5data[i] = bech32_charset_rev[c]; - } - - /* Check case consistency */ - if (upper && lower) - goto fail; - - *data = tal_arr(ctx, u8, 0); - bech32_pull_bits(data, u5data, tal_bytelen(u5data) * 5); - tal_free(u5data); - return true; - -fail: - *hrp = tal_free(*hrp); - tal_free(u5data); - return false; -} - -char *to_bech32_charset(const tal_t *ctx, - const char *hrp, const u8 *data) -{ - u5 *u5data = tal_arr(NULL, u5, 0); - char *ret; - - bech32_push_bits(&u5data, data, tal_bytelen(data) * 8); - ret = tal_dup_arr(ctx, char, hrp, strlen(hrp), - 1 + tal_bytelen(u5data) + 1); - ret[strlen(hrp)] = '1'; - for (size_t i = 0; i < tal_bytelen(u5data); i++) - ret[strlen(hrp) + 1 + i] = bech32_charset[u5data[i]]; - ret[strlen(hrp) + 1 + tal_bytelen(u5data)] = '\0'; - tal_free(u5data); - return ret; -} diff --git a/nostrdb/bech32_util.h b/nostrdb/bech32_util.h deleted file mode 100644 index be0e45a398..0000000000 --- a/nostrdb/bech32_util.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef LIGHTNING_COMMON_BECH32_UTIL_H -#define LIGHTNING_COMMON_BECH32_UTIL_H -#include "config.h" - -#include "tal.h" -#include "hash_u5.h" - -/** - * Push the bytes in src in 5 bit format onto the end of data. - */ -void bech32_push_bits(u5 **data, const void *src, size_t nbits); - -/** - * Push the bytes in src in 8 bit format onto the end of data. - */ -void bech32_pull_bits(u8 **data, const u5 *src, size_t nbits); - -/** - * Checksumless bech32 routines. - */ -bool from_bech32_charset(const tal_t *ctx, - const char *bech32, size_t bech32_len, - char **hrp, u8 **data); - -char *to_bech32_charset(const tal_t *ctx, - const char *hrp, const u8 *data); - -#endif /* LIGHTNING_COMMON_BECH32_UTIL_H */ diff --git a/nostrdb/bench-ingest-many.c b/nostrdb/bench-ingest-many.c deleted file mode 100644 index 0b4c0dfbfe..0000000000 --- a/nostrdb/bench-ingest-many.c +++ /dev/null @@ -1,75 +0,0 @@ - - -#include "io.h" -#include "nostrdb.h" -#include -#include -#include -#include -#include -#include -#include - -int map_file(const char *filename, unsigned char **p, size_t *flen) -{ - struct stat st; - int des; - stat(filename, &st); - *flen = st.st_size; - - des = open(filename, O_RDONLY); - - *p = mmap(NULL, *flen, PROT_READ, MAP_PRIVATE, des, 0); - close(des); - - return *p != MAP_FAILED; -} - -static int bench_parser() -{ - long nanos, ms; - size_t written; - struct ndb *ndb; - struct timespec t1, t2; - char *json; - int times = 1; - struct ndb_config config; - ndb_default_config(&config); - - ndb_config_set_mapsize(&config, 1024ULL * 1024ULL * 400ULL * 10ULL); - ndb_config_set_ingest_threads(&config, 8); - ndb_config_set_flags(&config, NDB_FLAG_SKIP_NOTE_VERIFY); - - assert(ndb_init(&ndb, "testdata/db", &config)); - const char *filename = "testdata/many-events.json"; - if (!map_file(filename, (unsigned char**)&json, &written)) { - printf("mapping testdata/many-events.json failed\n"); - return 2; - } - - printf("mapped %ld bytes in %s\n", written, filename); - - clock_gettime(CLOCK_MONOTONIC, &t1); - - ndb_process_events(ndb, json, written); - - ndb_destroy(ndb); - - clock_gettime(CLOCK_MONOTONIC, &t2); - - nanos = (t2.tv_sec - t1.tv_sec) * (long)1e9 + (t2.tv_nsec - t1.tv_nsec); - ms = nanos / 1e6; - printf("ns/run\t%ld\nms/run\t%f\nns\t%ld\nms\t%ld\n", - nanos/times, (double)ms/(double)times, nanos, ms); - - return 1; -} - -int main(int argc, char *argv[], char **env) -{ - if (!bench_parser()) - return 2; - - return 0; -} - diff --git a/nostrdb/block.h b/nostrdb/block.h deleted file mode 100644 index 61aff495e3..0000000000 --- a/nostrdb/block.h +++ /dev/null @@ -1,11 +0,0 @@ -// -// block.h -// damus -// -// Created by William Casarin on 2023-04-09. -// - -#ifndef block_h -#define block_h - -#endif /* block_h */ diff --git a/nostrdb/bolt11.c b/nostrdb/bolt11.c deleted file mode 100644 index 0f7428bf96..0000000000 --- a/nostrdb/bolt11.c +++ /dev/null @@ -1,676 +0,0 @@ -// -// bolt11.c -// damus -// -// Created by William Casarin on 2022-10-18. -// - -#include "bolt11.h" - -//#include "address.h" -//#include "script.h" -#include "bech32.h" -#include "utf8.h" -#include "compiler.h" -#include "endian.h" -#include "list.h" -#include "talstr.h" -#include "tal.h" -#include "node_id.h" -#include "bech32_util.h" -#include "bolt11.h" -#include "amount.h" -#include "array_size.h" -#include "structeq.h" - -//#include "features.h" -#include -#include -#include - -#define MSAT_PER_SAT ((u64)1000) -#define SAT_PER_BTC ((u64)100000000) -#define MSAT_PER_BTC (MSAT_PER_SAT * SAT_PER_BTC) - -struct multiplier { - const char letter; - /* We can't represent p postfix to msat, so we multiply this by 10 */ - u64 m10; -}; - -/* BOLT #11: - * - * The following `multiplier` letters are defined: - * - * * `m` (milli): multiply by 0.001 - * * `u` (micro): multiply by 0.000001 - * * `n` (nano): multiply by 0.000000001 - * * `p` (pico): multiply by 0.000000000001 - */ -static struct multiplier multipliers[] = { - { 'm', 10 * MSAT_PER_BTC / 1000 }, - { 'u', 10 * MSAT_PER_BTC / 1000000 }, - { 'n', 10 * MSAT_PER_BTC / 1000000000 }, - { 'p', 10 * MSAT_PER_BTC / 1000000000000ULL } -}; - -/* If pad is false, we discard any bits which don't fit in the last byte. - * Otherwise we add an extra byte */ -static bool pull_bits(struct hash_u5 *hu5, - u5 **data, size_t *data_len, void *dst, size_t nbits, - bool pad) -{ - size_t n5 = nbits / 5; - size_t len = 0; - - if (nbits % 5) - n5++; - - if (*data_len < n5) - return false; - if (!bech32_convert_bits(dst, &len, 8, *data, n5, 5, pad)) - return false; - if (hu5) - hash_u5(hu5, *data, n5); - *data += n5; - *data_len -= n5; - - return true; -} - -/* For pulling fields where we should have checked it will succeed already. */ -#ifndef NDEBUG -#define pull_bits_certain(hu5, data, data_len, dst, nbits, pad) \ - assert(pull_bits((hu5), (data), (data_len), (dst), (nbits), (pad))) -#else -#define pull_bits_certain pull_bits -#endif - -/* Helper for pulling a variable-length big-endian int. */ -static bool pull_uint(struct hash_u5 *hu5, - u5 **data, size_t *data_len, - u64 *val, size_t databits) -{ - be64 be_val; - - /* Too big. */ - if (databits > sizeof(be_val) * CHAR_BIT) - return false; - if (!pull_bits(hu5, data, data_len, &be_val, databits, true)) - return false; - *val = be64_to_cpu(be_val) >> (sizeof(be_val) * CHAR_BIT - databits); - return true; -} - -static size_t num_u8(size_t num_u5) -{ - return (num_u5 * 5 + 4) / 8; -} - -/* Frees bolt11, returns NULL. */ -static struct bolt11 *decode_fail(struct bolt11 *b11, char **fail, - const char *fmt, ...) - PRINTF_FMT(3,4); - -static struct bolt11 *decode_fail(struct bolt11 *b11, char **fail, - const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - *fail = tal_vfmt(tal_parent(b11), fmt, ap); - va_end(ap); - return tal_free(b11); -} - -/* - * These handle specific fields in the payment request; returning the problem - * if any, or NULL. - */ -static char *unknown_field(struct bolt11 *b11, - struct hash_u5 *hu5, - u5 **data, size_t *data_len, - u5 type, size_t length) -{ - struct bolt11_field *extra = tal(b11, struct bolt11_field); - u8 u8data[num_u8(length)]; - - extra->tag = type; - extra->data = tal_dup_arr(extra, u5, *data, length, 0); - list_add_tail(&b11->extra_fields, &extra->list); - - pull_bits_certain(hu5, data, data_len, u8data, length * 5, true); - return NULL; -} - -/* BOLT #11: - * - * `p` (1): `data_length` 52. 256-bit SHA256 payment_hash. Preimage of this - * provides proof of payment - */ -static void decode_p(struct bolt11 *b11, - struct hash_u5 *hu5, - u5 **data, size_t *data_len, - size_t data_length, bool *have_p) -{ - /* BOLT #11: - * - * A payer... SHOULD use the first `p` field that it did NOT - * skip as the payment hash. - */ - if (*have_p) { - unknown_field(b11, hu5, data, data_len, 'p', data_length); - return; - } - - /* BOLT #11: - * - * A reader... MUST skip over unknown fields, OR an `f` field - * with unknown `version`, OR `p`, `h`, `s` or `n` fields that do - * NOT have `data_length`s of 52, 52, 52 or 53, respectively. - */ - if (data_length != 52) { - unknown_field(b11, hu5, data, data_len, 'p', data_length); - return; - } - - pull_bits_certain(hu5, data, data_len, &b11->payment_hash, 256, false); - *have_p = true; -} - - -static char *utf8_str(const tal_t *ctx, const u8 *buf TAKES, size_t buflen) -{ - char *ret; - - if (!utf8_check(buf, buflen)) { - if (taken(buf)) - tal_free(buf); - return NULL; - } - - /* Add one for nul term */ - ret = tal_dup_arr(ctx, char, (const char *)buf, buflen, 1); - ret[buflen] = '\0'; - return ret; -} - - -/* BOLT #11: - * - * `d` (13): `data_length` variable. Short description of purpose of payment - * (UTF-8), e.g. '1 cup of coffee' or 'ナンセンス 1杯' - */ -static char *decode_d(struct bolt11 *b11, - struct hash_u5 *hu5, - u5 **data, size_t *data_len, - size_t data_length, bool *have_d) -{ - u8 *desc; - if (*have_d) - return unknown_field(b11, hu5, data, data_len, 'd', data_length); - - desc = tal_arr(NULL, u8, data_length * 5 / 8); - pull_bits_certain(hu5, data, data_len, desc, data_length*5, false); - - *have_d = true; - b11->description = utf8_str(b11, take(desc), tal_bytelen(desc)); - if (b11->description) - return NULL; - - return tal_fmt(b11, "d: invalid utf8"); -} - -/* BOLT #11: - * - * `h` (23): `data_length` 52. 256-bit description of purpose of payment - * (SHA256). This is used to commit to an associated description that is over - * 639 bytes, but the transport mechanism for the description in that case is - * transport specific and not defined here. - */ -static void decode_h(struct bolt11 *b11, - struct hash_u5 *hu5, - u5 **data, size_t *data_len, - size_t data_length, bool *have_h) -{ - if (*have_h) { - unknown_field(b11, hu5, data, data_len, 'h', data_length); - return; - } - - /* BOLT #11: - * - * A reader... MUST skip over unknown fields, OR an `f` field - * with unknown `version`, OR `p`, `h`, `s` or `n` fields that do - * NOT have `data_length`s of 52, 52, 52 or 53, respectively. */ - if (data_length != 52) { - unknown_field(b11, hu5, data, data_len, 'h', data_length); - return; - } - - b11->description_hash = tal(b11, struct sha256); - pull_bits_certain(hu5, data, data_len, b11->description_hash, 256, - false); - *have_h = true; -} - -/* BOLT #11: - * - * `x` (6): `data_length` variable. `expiry` time in seconds - * (big-endian). Default is 3600 (1 hour) if not specified. - */ -#define DEFAULT_X 3600 -static char *decode_x(struct bolt11 *b11, - struct hash_u5 *hu5, - u5 **data, size_t *data_len, - size_t data_length, bool *have_x) -{ - if (*have_x) - return unknown_field(b11, hu5, data, data_len, 'x', - data_length); - - /* FIXME: Put upper limit in bolt 11 */ - if (!pull_uint(hu5, data, data_len, &b11->expiry, data_length * 5)) - return tal_fmt(b11, "x: length %zu chars is excessive", - *data_len); - - *have_x = true; - return NULL; -} - -/* BOLT #11: - * - * `c` (24): `data_length` variable. `min_final_cltv_expiry` to use for the - * last HTLC in the route. Default is 18 if not specified. - */ -static char *decode_c(struct bolt11 *b11, - struct hash_u5 *hu5, - u5 **data, size_t *data_len, - size_t data_length, bool *have_c) -{ - u64 c; - if (*have_c) - return unknown_field(b11, hu5, data, data_len, 'c', - data_length); - - /* FIXME: Put upper limit in bolt 11 */ - if (!pull_uint(hu5, data, data_len, &c, data_length * 5)) - return tal_fmt(b11, "c: length %zu chars is excessive", - *data_len); - b11->min_final_cltv_expiry = (u32)c; - /* Can overflow, since c is 64 bits but value must be < 32 bits */ - if (b11->min_final_cltv_expiry != c) - return tal_fmt(b11, "c: %"PRIu64" is too large", c); - - *have_c = true; - return NULL; -} - -static char *decode_n(struct bolt11 *b11, - struct hash_u5 *hu5, - u5 **data, size_t *data_len, - size_t data_length, bool *have_n) -{ - if (*have_n) - return unknown_field(b11, hu5, data, data_len, 'n', - data_length); - - /* BOLT #11: - * - * A reader... MUST skip over unknown fields, OR an `f` field - * with unknown `version`, OR `p`, `h`, `s` or `n` fields that do - * NOT have `data_length`s of 52, 52, 52 or 53, respectively. */ - if (data_length != 53) - return unknown_field(b11, hu5, data, data_len, 'n', - data_length); - - pull_bits_certain(hu5, data, data_len, &b11->receiver_id.k, - data_length * 5, false); - /* - if (!node_id_valid(&b11->receiver_id)) - return tal_fmt(b11, "n: invalid pubkey %s", - node_id_to_hexstr(b11, &b11->receiver_id)); - */ - - *have_n = true; - return NULL; -} - -/* BOLT #11: - * - * `m` (27): `data_length` variable. Additional metadata to attach to - * the payment. Note that the size of this field is limited by the - * maximum hop payload size. Long metadata fields reduce the maximum - * route length. - */ -static char *decode_m(struct bolt11 *b11, - struct hash_u5 *hu5, - u5 **data, size_t *data_len, - size_t data_length, - bool *have_m) -{ - size_t mlen = (data_length * 5) / 8; - - if (*have_m) - return unknown_field(b11, hu5, data, data_len, 'm', - data_length); - - b11->metadata = tal_arr(b11, u8, mlen); - pull_bits_certain(hu5, data, data_len, b11->metadata, - data_length * 5, false); - - *have_m = true; - return NULL; -} - -struct bolt11 *new_bolt11(const tal_t *ctx) -{ - struct bolt11 *b11 = tal(ctx, struct bolt11); - - list_head_init(&b11->extra_fields); - b11->description = NULL; - b11->description_hash = NULL; - b11->fallbacks = NULL; - b11->msat = NULL; - b11->expiry = DEFAULT_X; - b11->features = tal_arr(b11, u8, 0); - /* BOLT #11: - * - if the `c` field (`min_final_cltv_expiry`) is not provided: - * - MUST use an expiry delta of at least 18 when making the payment - */ - b11->min_final_cltv_expiry = 18; - //b11->payment_secret = NULL; - b11->metadata = NULL; - - //if (msat) - //b11->msat = tal_dup(b11, struct amount_msat, msat); - return b11; -} - -/* Define sha256_eq. */ -//STRUCTEQ_DEF(sha256, 0, u); - -/* Extracts signature but does not check it. */ -struct bolt11 *bolt11_decode_nosig(const tal_t *ctx, const char *str, u5 **sig, char **fail) -{ - char *hrp, *amountstr, *prefix; - u5 *data; - size_t data_len; - struct bolt11 *b11 = new_bolt11(ctx); - struct hash_u5 hu5; - bool have_p = false, have_d = false, have_h = false, have_n = false, - have_x = false, have_c = false, have_m = false; - - /* BOLT #11: - * - * If a URI scheme is desired, the current recommendation is to either - * use 'lightning:' as a prefix before the BOLT-11 encoding - */ - if (strstarts(str, "lightning:") || strstarts(str, "LIGHTNING:")) - str += strlen("lightning:"); - - if (strlen(str) < 8) - return decode_fail(b11, fail, "Bad bech32 string"); - - hrp = tal_arr(b11, char, strlen(str) - 6); - data = tal_arr(b11, u5, strlen(str) - 8); - - if (bech32_decode(hrp, data, &data_len, str, (size_t)-1) - != BECH32_ENCODING_BECH32) - return decode_fail(b11, fail, "Bad bech32 string"); - - /* For signature checking at the end. */ - hash_u5_init(&hu5, hrp); - - /* BOLT #11: - * - * The human-readable part of a Lightning invoice consists of two sections: - * 1. `prefix`: `ln` + BIP-0173 currency prefix (e.g. `lnbc` for Bitcoin mainnet, - * `lntb` for Bitcoin testnet, `lntbs` for Bitcoin signet, and `lnbcrt` for Bitcoin regtest) - * 1. `amount`: optional number in that currency, followed by an optional - * `multiplier` letter. The unit encoded here is the 'social' convention of a payment unit -- in the case of Bitcoin the unit is 'bitcoin' NOT satoshis. - */ - prefix = tal_strndup(b11, hrp, strcspn(hrp, "0123456789")); - - /* BOLT #11: - * - * A reader...if it does NOT understand the `prefix`... MUST fail the payment. - */ - if (!strstarts(prefix, "ln")) - return decode_fail(b11, fail, - "Prefix '%s' does not start with ln", prefix); - - /* BOLT #11: - * - * - if the `amount` is empty: - * */ - amountstr = tal_strdup(b11, hrp + strlen(prefix)); - if (streq(amountstr, "")) { - /* BOLT #11: - * - * - SHOULD indicate to the payer that amount is unspecified. - */ - b11->msat = NULL; - } else { - u64 m10 = 10 * MSAT_PER_BTC; /* Pico satoshis in a Bitcoin */ - u64 amount; - char *end; - - /* Gather and trim multiplier */ - end = amountstr + strlen(amountstr)-1; - for (size_t i = 0; i < ARRAY_SIZE(multipliers); i++) { - if (*end == multipliers[i].letter) { - m10 = multipliers[i].m10; - *end = '\0'; - break; - } - } - - /* BOLT #11: - * - * if `amount` contains a non-digit OR is followed by - * anything except a `multiplier` (see table above)... MUST fail the - * payment. - **/ - amount = strtoull(amountstr, &end, 10); - if (amount == ULLONG_MAX && errno == ERANGE) - return decode_fail(b11, fail, - "Invalid amount '%s'", amountstr); - if (!*amountstr || *end) - return decode_fail(b11, fail, - "Invalid amount postfix '%s'", end); - - /* BOLT #11: - * - * if the `multiplier` is present... MUST multiply - * `amount` by the `multiplier` value to derive the - * amount required for payment. - */ - b11->msat = tal(b11, struct amount_msat); - /* BOLT #11: - * - * - if multiplier is `p` and the last decimal of `amount` is - * not 0: - * - MUST fail the payment. - */ - if (amount * m10 % 10 != 0) - return decode_fail(b11, fail, - "Invalid sub-millisatoshi amount" - " '%sp'", amountstr); - - *b11->msat = amount_msat(amount * m10 / 10); - } - - /* BOLT #11: - * - * The data part of a Lightning invoice consists of multiple sections: - * - * 1. `timestamp`: seconds-since-1970 (35 bits, big-endian) - * 1. zero or more tagged parts - * 1. `signature`: Bitcoin-style signature of above (520 bits) - */ - if (!pull_uint(&hu5, &data, &data_len, &b11->timestamp, 35)) - return decode_fail(b11, fail, "Can't get 35-bit timestamp"); - - while (data_len > 520 / 5) { - const char *problem = NULL; - u64 type, data_length; - - /* BOLT #11: - * - * Each Tagged Field is of the form: - * - * 1. `type` (5 bits) - * 1. `data_length` (10 bits, big-endian) - * 1. `data` (`data_length` x 5 bits) - */ - if (!pull_uint(&hu5, &data, &data_len, &type, 5) - || !pull_uint(&hu5, &data, &data_len, &data_length, 10)) - return decode_fail(b11, fail, - "Can't get tag and length"); - - /* Can't exceed total data remaining. */ - if (data_length > data_len) - return decode_fail(b11, fail, "%c: truncated", - bech32_charset[type]); - - switch (bech32_charset[type]) { - case 'p': - decode_p(b11, &hu5, &data, &data_len, data_length, - &have_p); - break; - - case 'd': - problem = decode_d(b11, &hu5, &data, &data_len, - data_length, &have_d); - break; - - case 'h': - decode_h(b11, &hu5, &data, &data_len, data_length, - &have_h); - break; - - case 'n': - problem = decode_n(b11, &hu5, &data, - &data_len, data_length, - &have_n); - break; - - case 'x': - problem = decode_x(b11, &hu5, &data, - &data_len, data_length, - &have_x); - break; - - case 'c': - problem = decode_c(b11, &hu5, &data, - &data_len, data_length, - &have_c); - break; - - /* - case 'f': - problem = decode_f(b11, &hu5, &data, - &data_len, data_length); - break; - case 'r': - problem = decode_r(b11, &hu5, &data, &data_len, - data_length); - break; - case '9': - problem = decode_9(b11, our_features, &hu5, - &data, &data_len, - data_length); - break; - case 's': - problem = decode_s(b11, &hu5, &data, &data_len, - data_length, &have_s); - break; - */ - case 'm': - problem = decode_m(b11, &hu5, &data, &data_len, - data_length, &have_m); - break; - default: - unknown_field(b11, &hu5, &data, &data_len, - bech32_charset[type], data_length); - } - if (problem) - return decode_fail(b11, fail, "%s", problem); - } - - if (!have_p) - return decode_fail(b11, fail, "No valid 'p' field found"); - - *sig = tal_dup_arr(ctx, u5, data, data_len, 0); - return b11; -} - -/* Decodes and checks signature; returns NULL on error. */ -struct bolt11 *bolt11_decode(const tal_t *ctx, const char *str, char **fail) -{ - u5 *sigdata; - size_t data_len; - u8 sig_and_recid[65]; - //secp256k1_ecdsa_recoverable_signature sig; - struct bolt11 *b11; - - b11 = bolt11_decode_nosig(ctx, str, &sigdata, fail); - if (!b11) - return NULL; - - /* BOLT #11: - * - * A writer...MUST set `signature` to a valid 512-bit - * secp256k1 signature of the SHA2 256-bit hash of the - * human-readable part, represented as UTF-8 bytes, - * concatenated with the data part (excluding the signature) - * with 0 bits appended to pad the data to the next byte - * boundary, with a trailing byte containing the recovery ID - * (0, 1, 2, or 3). - */ - data_len = tal_count(sigdata); - if (!pull_bits(NULL, &sigdata, &data_len, sig_and_recid, 520, false)) - return decode_fail(b11, fail, "signature truncated"); - - assert(data_len == 0); - - /* - if (!secp256k1_ecdsa_recoverable_signature_parse_compact - (secp256k1_ctx, &sig, sig_and_recid, sig_and_recid[64])) - return decode_fail(b11, fail, "signature invalid"); - - secp256k1_ecdsa_recoverable_signature_convert(secp256k1_ctx, - &b11->sig, &sig); - */ - - /* BOLT #11: - * - * A reader... MUST check that the `signature` is valid (see - * the `n` tagged field specified below). ... A reader... - * MUST use the `n` field to validate the signature instead of - * performing signature recovery. - */ - /* - if (!have_n) { - struct pubkey k; - if (!secp256k1_ecdsa_recover(secp256k1_ctx, - &k.pubkey, - &sig, - (const u8 *)&hash)) - return decode_fail(b11, fail, - "signature recovery failed"); - node_id_from_pubkey(&b11->receiver_id, &k); - } else { - struct pubkey k; - if (!pubkey_from_node_id(&k, &b11->receiver_id)) - abort(); - if (!secp256k1_ecdsa_verify(secp256k1_ctx, &b11->sig, - (const u8 *)&hash, - &k.pubkey)) - return decode_fail(b11, fail, "invalid signature"); - } - */ - - return b11; -} diff --git a/nostrdb/bolt11.h b/nostrdb/bolt11.h deleted file mode 100644 index 2831eb94a8..0000000000 --- a/nostrdb/bolt11.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef LIGHTNING_COMMON_BOLT11_H -#define LIGHTNING_COMMON_BOLT11_H - -#include "short_types.h" -#include "hash_u5.h" -#include "list.h" -#include "node_id.h" -//#include - -/* We only have 10 bits for the field length, meaning < 640 bytes */ -#define BOLT11_FIELD_BYTE_LIMIT ((1 << 10) * 5 / 8) - -/* BOLT #11: - * * `c` (24): `data_length` variable. - * `min_final_cltv_expiry` to use for the last HTLC in the route. - * Default is 18 if not specified. - */ -#define DEFAULT_FINAL_CLTV_DELTA 18 - -struct feature_set; - -struct bolt11_field { - struct list_node list; - - char tag; - u5 *data; -}; - -/* BOLT #11: - * * `pubkey` (264 bits) - * * `short_channel_id` (64 bits) - * * `fee_base_msat` (32 bits, big-endian) - * * `fee_proportional_millionths` (32 bits, big-endian) - * * `cltv_expiry_delta` (16 bits, big-endian) - */ - -/* -struct route_info { - struct node_id pubkey; - u16 cltv_expiry_delta; - struct short_channel_id short_channel_id; - u32 fee_base_msat, fee_proportional_millionths; -}; - */ - -struct bolt11 { - const struct chainparams *chain; - u64 timestamp; - struct amount_msat *msat; /* NULL if not specified. */ - - struct sha256 payment_hash; - struct node_id receiver_id; - - /* description_hash valid if and only if description is NULL. */ - const char *description; - struct sha256 *description_hash; - - /* How many seconds to pay from @timestamp above. */ - u64 expiry; - - /* How many blocks final hop requires. */ - u32 min_final_cltv_expiry; - - /* If non-NULL, indicates fallback addresses to pay to. */ - const u8 **fallbacks; - - /* If non-NULL: array of route arrays */ - //struct route_info **routes; - - /* signature of sha256 of entire thing. */ - //secp256k1_ecdsa_signature sig; - - /* payment secret, if any. */ - //struct secret *payment_secret; - - /* Features bitmap, if any. */ - u8 *features; - - /* Optional metadata to send with payment. */ - u8 *metadata; - - struct list_head extra_fields; -}; - -/* Decodes and checks signature; returns NULL on error; description is - * (optional) out-of-band description of payment, for `h` field. - * fset is NULL to accept any features (usually not desirable!). - * - * if @must_be_chain is not NULL, fails unless it's this chain. - */ -struct bolt11 *bolt11_decode(const tal_t *ctx, const char *str, char **fail); - -/* Extracts signature but does not check it. */ -struct bolt11 *bolt11_decode_nosig(const tal_t *ctx, const char *str, u5 **sigdata, char **fail); - -/* Initialize an empty bolt11 struct with optional amount */ -struct bolt11 *new_bolt11(const tal_t *ctx); - -#if DEVELOPER -/* Flag for tests to suppress `min_final_cltv_expiry` field generation, to match test vectors */ -extern bool dev_bolt11_no_c_generation; -#endif - -#endif /* LIGHTNING_COMMON_BOLT11_H */ diff --git a/nostrdb/build_assert.h b/nostrdb/build_assert.h deleted file mode 100644 index 6df9dae7eb..0000000000 --- a/nostrdb/build_assert.h +++ /dev/null @@ -1,40 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_BUILD_ASSERT_H -#define CCAN_BUILD_ASSERT_H - -/** - * BUILD_ASSERT - assert a build-time dependency. - * @cond: the compile-time condition which must be true. - * - * Your compile will fail if the condition isn't true, or can't be evaluated - * by the compiler. This can only be used within a function. - * - * Example: - * #include - * ... - * static char *foo_to_char(struct foo *foo) - * { - * // This code needs string to be at start of foo. - * BUILD_ASSERT(offsetof(struct foo, string) == 0); - * return (char *)foo; - * } - */ -#define BUILD_ASSERT(cond) \ - do { (void) sizeof(char [1 - 2*!(cond)]); } while(0) - -/** - * BUILD_ASSERT_OR_ZERO - assert a build-time dependency, as an expression. - * @cond: the compile-time condition which must be true. - * - * Your compile will fail if the condition isn't true, or can't be evaluated - * by the compiler. This can be used in an expression: its value is "0". - * - * Example: - * #define foo_to_char(foo) \ - * ((char *)(foo) \ - * + BUILD_ASSERT_OR_ZERO(offsetof(struct foo, string) == 0)) - */ -#define BUILD_ASSERT_OR_ZERO(cond) \ - (sizeof(char [1 - 2*!(cond)]) - 1) - -#endif /* CCAN_BUILD_ASSERT_H */ diff --git a/nostrdb/ccan/README b/nostrdb/ccan/README deleted file mode 100644 index c0c5d6d12f..0000000000 --- a/nostrdb/ccan/README +++ /dev/null @@ -1,5 +0,0 @@ -CCAN imported from https://github.com/rustyrussell/ccan - -Use "make update-ccan" at top level to refresh from ../ccan. - -CCAN version: init-2587-gf927e4be diff --git a/nostrdb/ccan/ccan/alignof/LICENSE b/nostrdb/ccan/ccan/alignof/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/alignof/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/alignof/_info b/nostrdb/ccan/ccan/alignof/_info deleted file mode 100644 index ee2b7ad0f2..0000000000 --- a/nostrdb/ccan/ccan/alignof/_info +++ /dev/null @@ -1,51 +0,0 @@ -#include "config.h" -#include -#include - -/** - * alignof - ALIGNOF() macro to determine alignment of a type. - * - * Many platforms have requirements that certain types must be aligned - * to certain address boundaries, such as ints needing to be on 4-byte - * boundaries. Attempting to access variables with incorrect - * alignment may cause performance loss or even program failure (eg. a - * bus signal). - * - * There are times which it's useful to be able to programatically - * access these requirements, such as for dynamic allocators. - * - * Example: - * #include - * #include - * #include - * - * // Output contains "ALIGNOF(char) == 1" - * // Will also print out whether an onstack char array can hold a long. - * int main(void) - * { - * char arr[sizeof(int)]; - * - * printf("ALIGNOF(char) == %zu\n", ALIGNOF(char)); - * if ((unsigned long)arr % ALIGNOF(int)) { - * printf("arr %p CANNOT hold an int\n", arr); - * exit(1); - * } else { - * printf("arr %p CAN hold an int\n", arr); - * exit(0); - * } - * } - * - * License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/alignof/alignof.h b/nostrdb/ccan/ccan/alignof/alignof.h deleted file mode 100644 index 9a02f188a8..0000000000 --- a/nostrdb/ccan/ccan/alignof/alignof.h +++ /dev/null @@ -1,20 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_ALIGNOF_H -#define CCAN_ALIGNOF_H -#include "config.h" - -/** - * ALIGNOF - get the alignment of a type - * @t: the type to test - * - * This returns a safe alignment for the given type. - */ -#if HAVE_ALIGNOF -/* A GCC extension. */ -#define ALIGNOF(t) __alignof__(t) -#else -/* Alignment by measuring structure padding. */ -#define ALIGNOF(t) ((char *)(&((struct { char c; t _h; } *)0)->_h) - (char *)0) -#endif - -#endif /* CCAN_ALIGNOF_H */ diff --git a/nostrdb/ccan/ccan/array_size/LICENSE b/nostrdb/ccan/ccan/array_size/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/array_size/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/array_size/_info b/nostrdb/ccan/ccan/array_size/_info deleted file mode 100644 index 69570f34c8..0000000000 --- a/nostrdb/ccan/ccan/array_size/_info +++ /dev/null @@ -1,46 +0,0 @@ -#include "config.h" -#include -#include - -/** - * array_size - routine for safely deriving the size of a visible array. - * - * This provides a simple ARRAY_SIZE() macro, which (given a good compiler) - * will also break compile if you try to use it on a pointer. - * - * This can ensure your code is robust to changes, without needing a gratuitous - * macro or constant. - * - * Example: - * // Outputs "Initialized 32 values\n" - * #include - * #include - * #include - * - * // We currently use 32 random values. - * static unsigned int vals[32]; - * - * int main(void) - * { - * unsigned int i; - * for (i = 0; i < ARRAY_SIZE(vals); i++) - * vals[i] = random(); - * printf("Initialized %u values\n", i); - * return 0; - * } - * - * License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/build_assert\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/array_size/array_size.h b/nostrdb/ccan/ccan/array_size/array_size.h deleted file mode 100644 index 0ca422a291..0000000000 --- a/nostrdb/ccan/ccan/array_size/array_size.h +++ /dev/null @@ -1,26 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_ARRAY_SIZE_H -#define CCAN_ARRAY_SIZE_H -#include "config.h" -#include - -/** - * ARRAY_SIZE - get the number of elements in a visible array - * @arr: the array whose size you want. - * - * This does not work on pointers, or arrays declared as [], or - * function parameters. With correct compiler support, such usage - * will cause a build error (see build_assert). - */ -#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + _array_size_chk(arr)) - -#if HAVE_BUILTIN_TYPES_COMPATIBLE_P && HAVE_TYPEOF -/* Two gcc extensions. - * &a[0] degrades to a pointer: a different type from an array */ -#define _array_size_chk(arr) \ - BUILD_ASSERT_OR_ZERO(!__builtin_types_compatible_p(typeof(arr), \ - typeof(&(arr)[0]))) -#else -#define _array_size_chk(arr) 0 -#endif -#endif /* CCAN_ALIGNOF_H */ diff --git a/nostrdb/ccan/ccan/build_assert/LICENSE b/nostrdb/ccan/ccan/build_assert/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/build_assert/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/build_assert/_info b/nostrdb/ccan/ccan/build_assert/_info deleted file mode 100644 index 97ebe6c966..0000000000 --- a/nostrdb/ccan/ccan/build_assert/_info +++ /dev/null @@ -1,49 +0,0 @@ -#include "config.h" -#include -#include - -/** - * build_assert - routines for build-time assertions - * - * This code provides routines which will cause compilation to fail should some - * assertion be untrue: such failures are preferable to run-time assertions, - * but much more limited since they can only depends on compile-time constants. - * - * These assertions are most useful when two parts of the code must be kept in - * sync: it is better to avoid such cases if possible, but seconds best is to - * detect invalid changes at build time. - * - * For example, a tricky piece of code might rely on a certain element being at - * the start of the structure. To ensure that future changes don't break it, - * you would catch such changes in your code like so: - * - * Example: - * #include - * #include - * - * struct foo { - * char string[5]; - * int x; - * }; - * - * static char *foo_string(struct foo *foo) - * { - * // This trick requires that the string be first in the structure - * BUILD_ASSERT(offsetof(struct foo, string) == 0); - * return (char *)foo; - * } - * - * License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) - /* Nothing. */ - return 0; - - return 1; -} diff --git a/nostrdb/ccan/ccan/build_assert/build_assert.h b/nostrdb/ccan/ccan/build_assert/build_assert.h deleted file mode 100644 index b9ecd84028..0000000000 --- a/nostrdb/ccan/ccan/build_assert/build_assert.h +++ /dev/null @@ -1,40 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_BUILD_ASSERT_H -#define CCAN_BUILD_ASSERT_H - -/** - * BUILD_ASSERT - assert a build-time dependency. - * @cond: the compile-time condition which must be true. - * - * Your compile will fail if the condition isn't true, or can't be evaluated - * by the compiler. This can only be used within a function. - * - * Example: - * #include - * ... - * static char *foo_to_char(struct foo *foo) - * { - * // This code needs string to be at start of foo. - * BUILD_ASSERT(offsetof(struct foo, string) == 0); - * return (char *)foo; - * } - */ -#define BUILD_ASSERT(cond) \ - do { (void) sizeof(char [1 - 2*!(cond)]); } while(0) - -/** - * BUILD_ASSERT_OR_ZERO - assert a build-time dependency, as an expression. - * @cond: the compile-time condition which must be true. - * - * Your compile will fail if the condition isn't true, or can't be evaluated - * by the compiler. This can be used in an expression: its value is "0". - * - * Example: - * #define foo_to_char(foo) \ - * ((char *)(foo) \ - * + BUILD_ASSERT_OR_ZERO(offsetof(struct foo, string) == 0)) - */ -#define BUILD_ASSERT_OR_ZERO(cond) \ - (sizeof(char [1 - 2*!(cond)]) - 1) - -#endif /* CCAN_BUILD_ASSERT_H */ diff --git a/nostrdb/ccan/ccan/check_type/LICENSE b/nostrdb/ccan/ccan/check_type/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/check_type/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/check_type/_info b/nostrdb/ccan/ccan/check_type/_info deleted file mode 100644 index cc42673492..0000000000 --- a/nostrdb/ccan/ccan/check_type/_info +++ /dev/null @@ -1,33 +0,0 @@ -#include "config.h" -#include -#include - -/** - * check_type - routines for compile time type checking - * - * C has fairly weak typing: ints get automatically converted to longs, signed - * to unsigned, etc. There are some cases where this is best avoided, and - * these macros provide methods for evoking warnings (or build errors) when - * a precise type isn't used. - * - * On compilers which don't support typeof() these routines are less effective, - * since they have to use sizeof() which can only distiguish between types of - * different size. - * - * License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { -#if !HAVE_TYPEOF - printf("ccan/build_assert\n"); -#endif - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/check_type/check_type.h b/nostrdb/ccan/ccan/check_type/check_type.h deleted file mode 100644 index 837aef7b1a..0000000000 --- a/nostrdb/ccan/ccan/check_type/check_type.h +++ /dev/null @@ -1,64 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_CHECK_TYPE_H -#define CCAN_CHECK_TYPE_H -#include "config.h" - -/** - * check_type - issue a warning or build failure if type is not correct. - * @expr: the expression whose type we should check (not evaluated). - * @type: the exact type we expect the expression to be. - * - * This macro is usually used within other macros to try to ensure that a macro - * argument is of the expected type. No type promotion of the expression is - * done: an unsigned int is not the same as an int! - * - * check_type() always evaluates to 0. - * - * If your compiler does not support typeof, then the best we can do is fail - * to compile if the sizes of the types are unequal (a less complete check). - * - * Example: - * // They should always pass a 64-bit value to _set_some_value! - * #define set_some_value(expr) \ - * _set_some_value((check_type((expr), uint64_t), (expr))) - */ - -/** - * check_types_match - issue a warning or build failure if types are not same. - * @expr1: the first expression (not evaluated). - * @expr2: the second expression (not evaluated). - * - * This macro is usually used within other macros to try to ensure that - * arguments are of identical types. No type promotion of the expressions is - * done: an unsigned int is not the same as an int! - * - * check_types_match() always evaluates to 0. - * - * If your compiler does not support typeof, then the best we can do is fail - * to compile if the sizes of the types are unequal (a less complete check). - * - * Example: - * // Do subtraction to get to enclosing type, but make sure that - * // pointer is of correct type for that member. - * #define container_of(mbr_ptr, encl_type, mbr) \ - * (check_types_match((mbr_ptr), &((encl_type *)0)->mbr), \ - * ((encl_type *) \ - * ((char *)(mbr_ptr) - offsetof(encl_type, mbr)))) - */ -#if HAVE_TYPEOF -#define check_type(expr, type) \ - ((typeof(expr) *)0 != (type *)0) - -#define check_types_match(expr1, expr2) \ - ((typeof(expr1) *)0 != (typeof(expr2) *)0) -#else -#include -/* Without typeof, we can only test the sizes. */ -#define check_type(expr, type) \ - BUILD_ASSERT_OR_ZERO(sizeof(expr) == sizeof(type)) - -#define check_types_match(expr1, expr2) \ - BUILD_ASSERT_OR_ZERO(sizeof(expr1) == sizeof(expr2)) -#endif /* HAVE_TYPEOF */ - -#endif /* CCAN_CHECK_TYPE_H */ diff --git a/nostrdb/ccan/ccan/compiler/LICENSE b/nostrdb/ccan/ccan/compiler/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/compiler/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/compiler/_info b/nostrdb/ccan/ccan/compiler/_info deleted file mode 100644 index 12cb247578..0000000000 --- a/nostrdb/ccan/ccan/compiler/_info +++ /dev/null @@ -1,64 +0,0 @@ -#include "config.h" -#include -#include - -/** - * compiler - macros for common compiler extensions - * - * Abstracts away some compiler hints. Currently these include: - * - COLD - * For functions not called in fast paths (aka. cold functions) - * - PRINTF_FMT - * For functions which take printf-style parameters. - * - CONST_FUNCTION - * For functions which return the same value for same parameters. - * - NEEDED - * For functions and variables which must be emitted even if unused. - * - UNNEEDED - * For functions and variables which need not be emitted if unused. - * - UNUSED - * For parameters which are not used. - * - IS_COMPILE_CONSTANT() - * For using different tradeoffs for compiletime vs runtime evaluation. - * - * License: CC0 (Public domain) - * Author: Rusty Russell - * - * Example: - * #include - * #include - * #include - * - * // Example of a (slow-path) logging function. - * static int log_threshold = 2; - * static void COLD PRINTF_FMT(2,3) - * logger(int level, const char *fmt, ...) - * { - * va_list ap; - * va_start(ap, fmt); - * if (level >= log_threshold) - * vfprintf(stderr, fmt, ap); - * va_end(ap); - * } - * - * int main(int argc, char *argv[] UNNEEDED) - * { - * if (argc != 1) { - * logger(3, "Don't want %i arguments!\n", argc-1); - * return 1; - * } - * return 0; - * } - */ -int main(int argc, char *argv[]) -{ - /* Expect exactly one argument */ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/compiler/compiler.h b/nostrdb/ccan/ccan/compiler/compiler.h deleted file mode 100644 index 562b29ec71..0000000000 --- a/nostrdb/ccan/ccan/compiler/compiler.h +++ /dev/null @@ -1,317 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_COMPILER_H -#define CCAN_COMPILER_H -#include "config.h" - -#ifndef COLD -#if HAVE_ATTRIBUTE_COLD -/** - * COLD - a function is unlikely to be called. - * - * Used to mark an unlikely code path and optimize appropriately. - * It is usually used on logging or error routines. - * - * Example: - * static void COLD moan(const char *reason) - * { - * fprintf(stderr, "Error: %s (%s)\n", reason, strerror(errno)); - * } - */ -#define COLD __attribute__((__cold__)) -#else -#define COLD -#endif -#endif - -#ifndef NORETURN -#if HAVE_ATTRIBUTE_NORETURN -/** - * NORETURN - a function does not return - * - * Used to mark a function which exits; useful for suppressing warnings. - * - * Example: - * static void NORETURN fail(const char *reason) - * { - * fprintf(stderr, "Error: %s (%s)\n", reason, strerror(errno)); - * exit(1); - * } - */ -#define NORETURN __attribute__((__noreturn__)) -#else -#define NORETURN -#endif -#endif - -#ifndef PRINTF_FMT -#if HAVE_ATTRIBUTE_PRINTF -/** - * PRINTF_FMT - a function takes printf-style arguments - * @nfmt: the 1-based number of the function's format argument. - * @narg: the 1-based number of the function's first variable argument. - * - * This allows the compiler to check your parameters as it does for printf(). - * - * Example: - * void PRINTF_FMT(2,3) my_printf(const char *prefix, const char *fmt, ...); - */ -#define PRINTF_FMT(nfmt, narg) \ - __attribute__((format(__printf__, nfmt, narg))) -#else -#define PRINTF_FMT(nfmt, narg) -#endif -#endif - -#ifndef CONST_FUNCTION -#if HAVE_ATTRIBUTE_CONST -/** - * CONST_FUNCTION - a function's return depends only on its argument - * - * This allows the compiler to assume that the function will return the exact - * same value for the exact same arguments. This implies that the function - * must not use global variables, or dereference pointer arguments. - */ -#define CONST_FUNCTION __attribute__((__const__)) -#else -#define CONST_FUNCTION -#endif - -#ifndef PURE_FUNCTION -#if HAVE_ATTRIBUTE_PURE -/** - * PURE_FUNCTION - a function is pure - * - * A pure function is one that has no side effects other than it's return value - * and uses no inputs other than it's arguments and global variables. - */ -#define PURE_FUNCTION __attribute__((__pure__)) -#else -#define PURE_FUNCTION -#endif -#endif -#endif - -#if HAVE_ATTRIBUTE_UNUSED -#ifndef UNNEEDED -/** - * UNNEEDED - a variable/function may not be needed - * - * This suppresses warnings about unused variables or functions, but tells - * the compiler that if it is unused it need not emit it into the source code. - * - * Example: - * // With some preprocessor options, this is unnecessary. - * static UNNEEDED int counter; - * - * // With some preprocessor options, this is unnecessary. - * static UNNEEDED void add_to_counter(int add) - * { - * counter += add; - * } - */ -#define UNNEEDED __attribute__((__unused__)) -#endif - -#ifndef NEEDED -#if HAVE_ATTRIBUTE_USED -/** - * NEEDED - a variable/function is needed - * - * This suppresses warnings about unused variables or functions, but tells - * the compiler that it must exist even if it (seems) unused. - * - * Example: - * // Even if this is unused, these are vital for debugging. - * static NEEDED int counter; - * static NEEDED void dump_counter(void) - * { - * printf("Counter is %i\n", counter); - * } - */ -#define NEEDED __attribute__((__used__)) -#else -/* Before used, unused functions and vars were always emitted. */ -#define NEEDED __attribute__((__unused__)) -#endif -#endif - -#ifndef UNUSED -/** - * UNUSED - a parameter is unused - * - * Some compilers (eg. gcc with -W or -Wunused) warn about unused - * function parameters. This suppresses such warnings and indicates - * to the reader that it's deliberate. - * - * Example: - * // This is used as a callback, so needs to have this prototype. - * static int some_callback(void *unused UNUSED) - * { - * return 0; - * } - */ -#define UNUSED __attribute__((__unused__)) -#endif -#else -#ifndef UNNEEDED -#define UNNEEDED -#endif -#ifndef NEEDED -#define NEEDED -#endif -#ifndef UNUSED -#define UNUSED -#endif -#endif - -#ifndef IS_COMPILE_CONSTANT -#if HAVE_BUILTIN_CONSTANT_P -/** - * IS_COMPILE_CONSTANT - does the compiler know the value of this expression? - * @expr: the expression to evaluate - * - * When an expression manipulation is complicated, it is usually better to - * implement it in a function. However, if the expression being manipulated is - * known at compile time, it is better to have the compiler see the entire - * expression so it can simply substitute the result. - * - * This can be done using the IS_COMPILE_CONSTANT() macro. - * - * Example: - * enum greek { ALPHA, BETA, GAMMA, DELTA, EPSILON }; - * - * // Out-of-line version. - * const char *greek_name(enum greek greek); - * - * // Inline version. - * static inline const char *_greek_name(enum greek greek) - * { - * switch (greek) { - * case ALPHA: return "alpha"; - * case BETA: return "beta"; - * case GAMMA: return "gamma"; - * case DELTA: return "delta"; - * case EPSILON: return "epsilon"; - * default: return "**INVALID**"; - * } - * } - * - * // Use inline if compiler knows answer. Otherwise call function - * // to avoid copies of the same code everywhere. - * #define greek_name(g) \ - * (IS_COMPILE_CONSTANT(greek) ? _greek_name(g) : greek_name(g)) - */ -#define IS_COMPILE_CONSTANT(expr) __builtin_constant_p(expr) -#else -/* If we don't know, assume it's not. */ -#define IS_COMPILE_CONSTANT(expr) 0 -#endif -#endif - -#ifndef WARN_UNUSED_RESULT -#if HAVE_WARN_UNUSED_RESULT -/** - * WARN_UNUSED_RESULT - warn if a function return value is unused. - * - * Used to mark a function where it is extremely unlikely that the caller - * can ignore the result, eg realloc(). - * - * Example: - * // buf param may be freed by this; need return value! - * static char *WARN_UNUSED_RESULT enlarge(char *buf, unsigned *size) - * { - * return realloc(buf, (*size) *= 2); - * } - */ -#define WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) -#else -#define WARN_UNUSED_RESULT -#endif -#endif - - -#if HAVE_ATTRIBUTE_DEPRECATED -/** - * WARN_DEPRECATED - warn that a function/type/variable is deprecated when used. - * - * Used to mark a function, type or variable should not be used. - * - * Example: - * WARN_DEPRECATED char *oldfunc(char *buf); - */ -#define WARN_DEPRECATED __attribute__((__deprecated__)) -#else -#define WARN_DEPRECATED -#endif - - -#if HAVE_ATTRIBUTE_NONNULL -/** - * NO_NULL_ARGS - specify that no arguments to this function can be NULL. - * - * The compiler will warn if any pointer args are NULL. - * - * Example: - * NO_NULL_ARGS char *my_copy(char *buf); - */ -#define NO_NULL_ARGS __attribute__((__nonnull__)) - -/** - * NON_NULL_ARGS - specify that some arguments to this function can't be NULL. - * @...: 1-based argument numbers for which args can't be NULL. - * - * The compiler will warn if any of the specified pointer args are NULL. - * - * Example: - * char *my_copy2(char *buf, char *maybenull) NON_NULL_ARGS(1); - */ -#define NON_NULL_ARGS(...) __attribute__((__nonnull__(__VA_ARGS__))) -#else -#define NO_NULL_ARGS -#define NON_NULL_ARGS(...) -#endif - -#if HAVE_ATTRIBUTE_RETURNS_NONNULL -/** - * RETURNS_NONNULL - specify that this function cannot return NULL. - * - * Mainly an optimization opportunity, but can also suppress warnings. - * - * Example: - * RETURNS_NONNULL char *my_copy(char *buf); - */ -#define RETURNS_NONNULL __attribute__((__returns_nonnull__)) -#else -#define RETURNS_NONNULL -#endif - -#if HAVE_ATTRIBUTE_SENTINEL -/** - * LAST_ARG_NULL - specify the last argument of a variadic function must be NULL. - * - * The compiler will warn if the last argument isn't NULL. - * - * Example: - * char *join_string(char *buf, ...) LAST_ARG_NULL; - */ -#define LAST_ARG_NULL __attribute__((__sentinel__)) -#else -#define LAST_ARG_NULL -#endif - -#if HAVE_BUILTIN_CPU_SUPPORTS -/** - * cpu_supports - test if current CPU supports the named feature. - * - * This takes a literal string, and currently only works on glibc platforms. - * - * Example: - * if (cpu_supports("mmx")) - * printf("MMX support engaged!\n"); - */ -#define cpu_supports(x) __builtin_cpu_supports(x) -#else -#define cpu_supports(x) 0 -#endif /* HAVE_BUILTIN_CPU_SUPPORTS */ - -#endif /* CCAN_COMPILER_H */ diff --git a/nostrdb/ccan/ccan/container_of/LICENSE b/nostrdb/ccan/ccan/container_of/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/container_of/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/container_of/_info b/nostrdb/ccan/ccan/container_of/_info deleted file mode 100644 index b1160522ed..0000000000 --- a/nostrdb/ccan/ccan/container_of/_info +++ /dev/null @@ -1,65 +0,0 @@ -#include "config.h" -#include -#include - -/** - * container_of - routine for upcasting - * - * It is often convenient to create code where the caller registers a pointer - * to a generic structure and a callback. The callback might know that the - * pointer points to within a larger structure, and container_of gives a - * convenient and fairly type-safe way of returning to the enclosing structure. - * - * This idiom is an alternative to providing a void * pointer for every - * callback. - * - * Example: - * #include - * #include - * - * struct timer { - * void *members; - * }; - * - * struct info { - * int my_stuff; - * struct timer timer; - * }; - * - * static void my_timer_callback(struct timer *timer) - * { - * struct info *info = container_of(timer, struct info, timer); - * printf("my_stuff is %u\n", info->my_stuff); - * } - * - * static void register_timer(struct timer *timer) - * { - * (void)timer; - * (void)my_timer_callback; - * //... - * } - * - * int main(void) - * { - * struct info info = { .my_stuff = 1 }; - * - * register_timer(&info.timer); - * // ... - * return 0; - * } - * - * License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/check_type\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/container_of/container_of.h b/nostrdb/ccan/ccan/container_of/container_of.h deleted file mode 100644 index 47a34d853b..0000000000 --- a/nostrdb/ccan/ccan/container_of/container_of.h +++ /dev/null @@ -1,145 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_CONTAINER_OF_H -#define CCAN_CONTAINER_OF_H -#include - -#include "config.h" -#include - -/** - * container_of - get pointer to enclosing structure - * @member_ptr: pointer to the structure member - * @containing_type: the type this member is within - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does pointer - * subtraction to return the pointer to the enclosing type. - * - * Example: - * struct foo { - * int fielda, fieldb; - * // ... - * }; - * struct info { - * int some_other_field; - * struct foo my_foo; - * }; - * - * static struct info *foo_to_info(struct foo *foo) - * { - * return container_of(foo, struct info, my_foo); - * } - */ -#define container_of(member_ptr, containing_type, member) \ - ((containing_type *) \ - ((char *)(member_ptr) \ - - container_off(containing_type, member)) \ - + check_types_match(*(member_ptr), ((containing_type *)0)->member)) - - -/** - * container_of_or_null - get pointer to enclosing structure, or NULL - * @member_ptr: pointer to the structure member - * @containing_type: the type this member is within - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does pointer - * subtraction to return the pointer to the enclosing type, unless it - * is given NULL, in which case it also returns NULL. - * - * Example: - * struct foo { - * int fielda, fieldb; - * // ... - * }; - * struct info { - * int some_other_field; - * struct foo my_foo; - * }; - * - * static struct info *foo_to_info_allowing_null(struct foo *foo) - * { - * return container_of_or_null(foo, struct info, my_foo); - * } - */ -static inline char *container_of_or_null_(void *member_ptr, size_t offset) -{ - return member_ptr ? (char *)member_ptr - offset : NULL; -} -#define container_of_or_null(member_ptr, containing_type, member) \ - ((containing_type *) \ - container_of_or_null_(member_ptr, \ - container_off(containing_type, member)) \ - + check_types_match(*(member_ptr), ((containing_type *)0)->member)) - -/** - * container_off - get offset to enclosing structure - * @containing_type: the type this member is within - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does - * typechecking and figures out the offset to the enclosing type. - * - * Example: - * struct foo { - * int fielda, fieldb; - * // ... - * }; - * struct info { - * int some_other_field; - * struct foo my_foo; - * }; - * - * static struct info *foo_to_info(struct foo *foo) - * { - * size_t off = container_off(struct info, my_foo); - * return (void *)((char *)foo - off); - * } - */ -#define container_off(containing_type, member) \ - offsetof(containing_type, member) - -/** - * container_of_var - get pointer to enclosing structure using a variable - * @member_ptr: pointer to the structure member - * @container_var: a pointer of same type as this member's container - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does pointer - * subtraction to return the pointer to the enclosing type. - * - * Example: - * static struct info *foo_to_i(struct foo *foo) - * { - * struct info *i = container_of_var(foo, i, my_foo); - * return i; - * } - */ -#if HAVE_TYPEOF -#define container_of_var(member_ptr, container_var, member) \ - container_of(member_ptr, typeof(*container_var), member) -#else -#define container_of_var(member_ptr, container_var, member) \ - ((void *)((char *)(member_ptr) - \ - container_off_var(container_var, member))) -#endif - -/** - * container_off_var - get offset of a field in enclosing structure - * @container_var: a pointer to a container structure - * @member: the name of a member within the structure. - * - * Given (any) pointer to a structure and a its member name, this - * macro does pointer subtraction to return offset of member in a - * structure memory layout. - * - */ -#if HAVE_TYPEOF -#define container_off_var(var, member) \ - container_off(typeof(*var), member) -#else -#define container_off_var(var, member) \ - ((const char *)&(var)->member - (const char *)(var)) -#endif - -#endif /* CCAN_CONTAINER_OF_H */ diff --git a/nostrdb/ccan/ccan/cppmagic/LICENSE b/nostrdb/ccan/ccan/cppmagic/LICENSE deleted file mode 120000 index 2354d12945..0000000000 --- a/nostrdb/ccan/ccan/cppmagic/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/BSD-MIT \ No newline at end of file diff --git a/nostrdb/ccan/ccan/cppmagic/_info b/nostrdb/ccan/ccan/cppmagic/_info deleted file mode 100644 index aad394b9bf..0000000000 --- a/nostrdb/ccan/ccan/cppmagic/_info +++ /dev/null @@ -1,30 +0,0 @@ -#include "config.h" -#include -#include - -/** - * cppmagic - Abuse of the C preprocessor - * - * This contains a bunch of fancy macro techniques such as - * preprocessor-time evaluated conditionals and (quasi) recursion and - * iteration. - * - * It's based on these articles: - * - http://jhnet.co.uk/articles/cpp_magic - * - https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms - * and code from the Boost C++ library. - * - * License: BSD-MIT - */ -int main(int argc, char *argv[]) -{ - /* Expect exactly one argument */ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/cppmagic/cppmagic.h b/nostrdb/ccan/ccan/cppmagic/cppmagic.h deleted file mode 100644 index f1f6868e55..0000000000 --- a/nostrdb/ccan/ccan/cppmagic/cppmagic.h +++ /dev/null @@ -1,191 +0,0 @@ -/* MIT (BSD) license - see LICENSE file for details */ -#ifndef CCAN_CPPMAGIC_H -#define CCAN_CPPMAGIC_H - -/** - * CPPMAGIC_NOTHING - expands to nothing - */ -#define CPPMAGIC_NOTHING() - -/** - * CPPMAGIC_STRINGIFY - convert arguments to a string literal - */ -#define _CPPMAGIC_STRINGIFY(...) #__VA_ARGS__ -#define CPPMAGIC_STRINGIFY(...) _CPPMAGIC_STRINGIFY(__VA_ARGS__) - -/** - * CPPMAGIC_GLUE2 - glue arguments together - * - * CPPMAGIC_GLUE2(@a_, @b_) - * expands to the expansion of @a_ followed immediately - * (combining tokens) by the expansion of @b_ - */ -#define _CPPMAGIC_GLUE2(a_, b_) a_##b_ -#define CPPMAGIC_GLUE2(a_, b_) _CPPMAGIC_GLUE2(a_, b_) - -/** - * CPPMAGIC_1ST - return 1st argument - * - * CPPMAGIC_1ST(@a_, ...) - * expands to the expansion of @a_ - */ -#define CPPMAGIC_1ST(a_, ...) a_ - -/** - * CPPMAGIC_2ND - return 2nd argument - * - * CPPMAGIC_2ST(@a_, @b_, ...) - * expands to the expansion of @b_ - */ -#define CPPMAGIC_2ND(a_, b_, ...) b_ - -/** - * CPPMAGIC_ISZERO - is argument '0' - * - * CPPMAGIC_ISZERO(@a) - * expands to '1' if @a is '0', otherwise expands to '0'. - */ -#define _CPPMAGIC_ISPROBE(...) CPPMAGIC_2ND(__VA_ARGS__, 0) -#define _CPPMAGIC_PROBE() $, 1 -#define _CPPMAGIC_ISZERO_0 _CPPMAGIC_PROBE() -#define CPPMAGIC_ISZERO(a_) \ - _CPPMAGIC_ISPROBE(CPPMAGIC_GLUE2(_CPPMAGIC_ISZERO_, a_)) - -/** - * CPPMAGIC_NONZERO - is argument not '0' - * - * CPPMAGIC_NONZERO(@a) - * expands to '0' if @a is '0', otherwise expands to '1'. - */ -#define CPPMAGIC_NONZERO(a_) CPPMAGIC_ISZERO(CPPMAGIC_ISZERO(a_)) - -/** - * CPPMAGIC_NONEMPTY - does the macro have any arguments? - * - * CPPMAGIC_NONEMPTY() - * expands to '0' - * CPPMAGIC_NONEMPTY(@a) - * CPPMAGIC_NONEMPTY(@a, ...) - * expand to '1' - */ -#define _CPPMAGIC_EOA() 0 -#define CPPMAGIC_NONEMPTY(...) \ - CPPMAGIC_NONZERO(CPPMAGIC_1ST(_CPPMAGIC_EOA __VA_ARGS__)()) - -/** - * CPPMAGIC_ISEMPTY - does the macro have no arguments? - * - * CPPMAGIC_ISEMPTY() - * expands to '1' - * CPPMAGIC_ISEMPTY(@a) - * CPPMAGIC_ISEMPTY(@a, ...) - * expand to '0' - */ -#define CPPMAGIC_ISEMPTY(...) \ - CPPMAGIC_ISZERO(CPPMAGIC_NONEMPTY(__VA_ARGS__)) - -/* - * CPPMAGIC_IFELSE - preprocessor conditional - * - * CPPMAGIC_IFELSE(@cond)(@if)(@else) - * expands to @else if @cond is '0', otherwise expands to @if - */ -#define _CPPMAGIC_IF_0(...) _CPPMAGIC_IF_0_ELSE -#define _CPPMAGIC_IF_1(...) __VA_ARGS__ _CPPMAGIC_IF_1_ELSE -#define _CPPMAGIC_IF_0_ELSE(...) __VA_ARGS__ -#define _CPPMAGIC_IF_1_ELSE(...) -#define _CPPMAGIC_IFELSE(cond_) CPPMAGIC_GLUE2(_CPPMAGIC_IF_, cond_) -#define CPPMAGIC_IFELSE(cond_) \ - _CPPMAGIC_IFELSE(CPPMAGIC_NONZERO(cond_)) - -/** - * CPPMAGIC_EVAL - force multiple expansion passes - * - * Forces macros in the arguments to be expanded repeatedly (up to - * 1024 times) even when CPP would usually stop expanding. - */ -#define CPPMAGIC_EVAL1(...) __VA_ARGS__ -#define CPPMAGIC_EVAL2(...) \ - CPPMAGIC_EVAL1(CPPMAGIC_EVAL1(__VA_ARGS__)) -#define CPPMAGIC_EVAL4(...) \ - CPPMAGIC_EVAL2(CPPMAGIC_EVAL2(__VA_ARGS__)) -#define CPPMAGIC_EVAL8(...) \ - CPPMAGIC_EVAL4(CPPMAGIC_EVAL4(__VA_ARGS__)) -#define CPPMAGIC_EVAL16(...) \ - CPPMAGIC_EVAL8(CPPMAGIC_EVAL8(__VA_ARGS__)) -#define CPPMAGIC_EVAL32(...) \ - CPPMAGIC_EVAL16(CPPMAGIC_EVAL16(__VA_ARGS__)) -#define CPPMAGIC_EVAL64(...) \ - CPPMAGIC_EVAL32(CPPMAGIC_EVAL32(__VA_ARGS__)) -#define CPPMAGIC_EVAL128(...) \ - CPPMAGIC_EVAL64(CPPMAGIC_EVAL64(__VA_ARGS__)) -#define CPPMAGIC_EVAL256(...) \ - CPPMAGIC_EVAL128(CPPMAGIC_EVAL128(__VA_ARGS__)) -#define CPPMAGIC_EVAL512(...) \ - CPPMAGIC_EVAL256(CPPMAGIC_EVAL256(__VA_ARGS__)) -#define CPPMAGIC_EVAL1024(...) \ - CPPMAGIC_EVAL512(CPPMAGIC_EVAL512(__VA_ARGS__)) -#define CPPMAGIC_EVAL(...) CPPMAGIC_EVAL1024(__VA_ARGS__) - -/** - * CPPMAGIC_DEFER1, CPPMAGIC_DEFER2 - defer expansion - */ -#define CPPMAGIC_DEFER1(a_) a_ CPPMAGIC_NOTHING() -#define CPPMAGIC_DEFER2(a_) a_ CPPMAGIC_NOTHING CPPMAGIC_NOTHING()() - -/** - * CPPMAGIC_MAP - iterate another macro across arguments - * @m: name of a one argument macro - * - * CPPMAGIC_MAP(@m, @a1, @a2, ... @an) - * expands to the expansion of @m(@a1) , @m(@a2) , ... , @m(@an) - */ -#define _CPPMAGIC_MAP_() _CPPMAGIC_MAP -#define _CPPMAGIC_MAP(m_, a_, ...) \ - m_(a_) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (, CPPMAGIC_DEFER2(_CPPMAGIC_MAP_)()(m_, __VA_ARGS__)) \ - () -#define CPPMAGIC_MAP(m_, ...) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (CPPMAGIC_EVAL(_CPPMAGIC_MAP(m_, __VA_ARGS__))) \ - () - -/** - * CPPMAGIC_2MAP - iterate another macro across pairs of arguments - * @m: name of a two argument macro - * - * CPPMAGIC_2MAP(@m, @a1, @b1, @a2, @b2, ..., @an, @bn) - * expands to the expansion of - * @m(@a1, @b1) , @m(@a2, @b2) , ... , @m(@an, @bn) - */ -#define _CPPMAGIC_2MAP_() _CPPMAGIC_2MAP -#define _CPPMAGIC_2MAP(m_, a_, b_, ...) \ - m_(a_, b_) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (, CPPMAGIC_DEFER2(_CPPMAGIC_2MAP_)()(m_, __VA_ARGS__)) \ - () -#define CPPMAGIC_2MAP(m_, ...) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (CPPMAGIC_EVAL(_CPPMAGIC_2MAP(m_, __VA_ARGS__))) \ - () - -/** - * CPPMAGIC_JOIN - separate arguments with given delimiter - * @d: delimiter - * - * CPPMAGIC_JOIN(@d, @a1, @a2, ..., @an) - * expands to the expansion of @a1 @d @a2 @d ... @d @an - */ -#define _CPPMAGIC_JOIN_() _CPPMAGIC_JOIN -#define _CPPMAGIC_JOIN(d_, a_, ...) \ - a_ \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (d_ CPPMAGIC_DEFER2(_CPPMAGIC_JOIN_)()(d_, __VA_ARGS__)) \ - () -#define CPPMAGIC_JOIN(d_, ...) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (CPPMAGIC_EVAL(_CPPMAGIC_JOIN(d_, __VA_ARGS__))) \ - () - -#endif /* CCAN_CPPMAGIC_H */ diff --git a/nostrdb/ccan/ccan/crypto/sha256/LICENSE b/nostrdb/ccan/ccan/crypto/sha256/LICENSE deleted file mode 120000 index 2b1feca547..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../../licenses/BSD-MIT \ No newline at end of file diff --git a/nostrdb/ccan/ccan/crypto/sha256/_info b/nostrdb/ccan/ccan/crypto/sha256/_info deleted file mode 100644 index 4419508ddf..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/_info +++ /dev/null @@ -1,61 +0,0 @@ -#include "config.h" -#include -#include - -/** - * crypto/sha256 - implementation of SHA-2 with 256 bit digest. - * - * This code is either a wrapper for openssl (if CCAN_CRYPTO_SHA256_USE_OPENSSL - * is defined) or an open-coded implementation based on Bitcoin's. - * - * License: BSD-MIT - * Maintainer: Rusty Russell - * - * Example: - * #include - * #include - * #include - * #include - * - * // Simple demonstration: idential strings will have the same hash, but - * // two different strings will not. - * int main(int argc, char *argv[]) - * { - * struct sha256 hash1, hash2; - * - * if (argc != 3) - * errx(1, "Usage: %s ", argv[0]); - * - * sha256(&hash1, argv[1], strlen(argv[1])); - * sha256(&hash2, argv[2], strlen(argv[2])); - * printf("Hash is %s\n", memcmp(&hash1, &hash2, sizeof(hash1)) - * ? "different" : "same"); - * return 0; - * } - */ -int main(int argc, char *argv[]) -{ - /* Expect exactly one argument */ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/compiler\n"); - printf("ccan/endian\n"); - return 0; - } - - if (strcmp(argv[1], "testdepends") == 0) { - printf("ccan/str/hex\n"); - return 0; - } - - if (strcmp(argv[1], "libs") == 0) { -#ifdef CCAN_CRYPTO_SHA256_USE_OPENSSL - printf("crypto\n"); -#endif - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/Makefile b/nostrdb/ccan/ccan/crypto/sha256/benchmarks/Makefile deleted file mode 100644 index f1749ab5e7..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -CCANDIR := ../../../../ -CFLAGS := -Wall -I$(CCANDIR) -O3 -flto -DCCAN_USE_ORIGINAL=1 -LDFLAGS := -O3 -flto - -INTEL_OBJS := sha256_avx1.o sha256_avx2_rorx2.o sha256_avx2_rorx8.o sha256_sse4.o - -double-sha-bench: double-sha-bench.o ccan-time.o $(INTEL_OBJS) #ccan-crypto-sha256.o - -$(INTEL_OBJS): %.o : %.asm - -%.o : %.asm - yasm -f x64 -f elf64 -X gnu -g dwarf2 -D LINUX -o $@ $< - -clean: - rm -f *.o - -ccan-crypto-sha256.o: $(CCANDIR)/ccan/crypto/sha256/sha256.c - $(CC) $(CFLAGS) -c -o $@ $< -ccan-time.o: $(CCANDIR)/ccan/time/time.c - $(CC) $(CFLAGS) -c -o $@ $< diff --git a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/double-sha-bench.c b/nostrdb/ccan/ccan/crypto/sha256/benchmarks/double-sha-bench.c deleted file mode 100644 index 4478b16379..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/double-sha-bench.c +++ /dev/null @@ -1,122 +0,0 @@ -/* Bitcoin does a lot of SHA of SHA. Benchmark that. */ -#include -#include -#include - -void sha256_avx(void *input_data, uint32_t digest[8], uint64_t num_blks); -void sha256_rorx(void *input_data, uint32_t digest[8], uint64_t num_blks); -void sha256_rorx_x8ms(void *input_data, uint32_t digest[8], uint64_t num_blks); -void sha256_sse4(void *input_data, uint32_t digest[8], uint64_t num_blks); - -int main(int argc, char *argv[]) -{ - struct timeabs start; - struct timerel diff; - size_t i, n; - union { - struct sha256 h; - uint32_t u32[16]; - uint8_t u8[64]; - } block; - - n = atoi(argv[1] ? argv[1] : "1000000"); - memset(&block, 0, sizeof(block)); - sha256(&block.h, &n, sizeof(n)); - - start = time_now(); - for (i = 0; i < n; i++) { - sha256(&block.h, &block.h, sizeof(block.h)); - } - diff = time_divide(time_between(time_now(), start), n); - printf("Normal gave %02x%02x%02x%02x%02x%02x... in %llu nsec\n", - block.h.u.u8[0], block.h.u.u8[1], block.h.u.u8[2], - block.h.u.u8[3], block.h.u.u8[4], block.h.u.u8[5], - (unsigned long long)time_to_nsec(diff)); - - /* Now, don't re-initialize every time; use Transform */ - memset(&block, 0, sizeof(block)); - sha256(&block.h, &n, sizeof(n)); - block.u8[sizeof(block.h)] = 0x80; - /* Size is 256 bits */ - block.u8[sizeof(block)-2] = 1; - - start = time_now(); - for (i = 0; i < n; i++) { - struct sha256_ctx ctx = SHA256_INIT; - size_t j; - Transform(ctx.s, block.u32); - for (j = 0; j < sizeof(ctx.s) / sizeof(ctx.s[0]); j++) - block.h.u.u32[j] = cpu_to_be32(ctx.s[j]); - } - diff = time_divide(time_between(time_now(), start), n); - printf("Transform gave %02x%02x%02x%02x%02x%02x... in %llu nsec\n", - block.h.u.u8[0], block.h.u.u8[1], block.h.u.u8[2], - block.h.u.u8[3], block.h.u.u8[4], block.h.u.u8[5], - (unsigned long long)time_to_nsec(diff)); - - /* Now, assembler variants */ - sha256(&block.h, &n, sizeof(n)); - - start = time_now(); - for (i = 0; i < n; i++) { - struct sha256_ctx ctx = SHA256_INIT; - size_t j; - sha256_rorx(block.u32, ctx.s, 1); - for (j = 0; j < sizeof(ctx.s) / sizeof(ctx.s[0]); j++) - block.h.u.u32[j] = cpu_to_be32(ctx.s[j]); - } - diff = time_divide(time_between(time_now(), start), n); - printf("Asm rorx for %02x%02x%02x%02x%02x%02x... is %llu nsec\n", - block.h.u.u8[0], block.h.u.u8[1], block.h.u.u8[2], - block.h.u.u8[3], block.h.u.u8[4], block.h.u.u8[5], - (unsigned long long)time_to_nsec(diff)); - - sha256(&block.h, &n, sizeof(n)); - - start = time_now(); - for (i = 0; i < n; i++) { - struct sha256_ctx ctx = SHA256_INIT; - size_t j; - sha256_sse4(block.u32, ctx.s, 1); - for (j = 0; j < sizeof(ctx.s) / sizeof(ctx.s[0]); j++) - block.h.u.u32[j] = cpu_to_be32(ctx.s[j]); - } - diff = time_divide(time_between(time_now(), start), n); - printf("Asm SSE4 for %02x%02x%02x%02x%02x%02x... is %llu nsec\n", - block.h.u.u8[0], block.h.u.u8[1], block.h.u.u8[2], - block.h.u.u8[3], block.h.u.u8[4], block.h.u.u8[5], - (unsigned long long)time_to_nsec(diff)); - - sha256(&block.h, &n, sizeof(n)); - start = time_now(); - for (i = 0; i < n; i++) { - struct sha256_ctx ctx = SHA256_INIT; - size_t j; - sha256_rorx_x8ms(block.u32, ctx.s, 1); - for (j = 0; j < sizeof(ctx.s) / sizeof(ctx.s[0]); j++) - block.h.u.u32[j] = cpu_to_be32(ctx.s[j]); - } - diff = time_divide(time_between(time_now(), start), n); - printf("Asm RORx-x8ms for %02x%02x%02x%02x%02x%02x... is %llu nsec\n", - block.h.u.u8[0], block.h.u.u8[1], block.h.u.u8[2], - block.h.u.u8[3], block.h.u.u8[4], block.h.u.u8[5], - (unsigned long long)time_to_nsec(diff)); - - sha256(&block.h, &n, sizeof(n)); - start = time_now(); - for (i = 0; i < n; i++) { - struct sha256_ctx ctx = SHA256_INIT; - size_t j; - sha256_avx(block.u32, ctx.s, 1); - for (j = 0; j < sizeof(ctx.s) / sizeof(ctx.s[0]); j++) - block.h.u.u32[j] = cpu_to_be32(ctx.s[j]); - } - diff = time_divide(time_between(time_now(), start), n); - printf("Asm AVX for %02x%02x%02x%02x%02x%02x... is %llu nsec\n", - block.h.u.u8[0], block.h.u.u8[1], block.h.u.u8[2], - block.h.u.u8[3], block.h.u.u8[4], block.h.u.u8[5], - (unsigned long long)time_to_nsec(diff)); - - return 0; -} - diff --git a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/open_software_license.txt b/nostrdb/ccan/ccan/crypto/sha256/benchmarks/open_software_license.txt deleted file mode 100644 index bf0d718589..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/open_software_license.txt +++ /dev/null @@ -1,32 +0,0 @@ -Copyright (c) 2012, Intel Corporation - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. - -* Neither the name of the Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - -THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION ""AS IS"" AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_avx1.asm b/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_avx1.asm deleted file mode 100644 index 11d322de9e..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_avx1.asm +++ /dev/null @@ -1,586 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Copyright (c) 2012, Intel Corporation -; -; All rights reserved. -; -; Redistribution and use in source and binary forms, with or without -; modification, are permitted provided that the following conditions are -; met: -; -; * Redistributions of source code must retain the above copyright -; notice, this list of conditions and the following disclaimer. -; -; * Redistributions in binary form must reproduce the above copyright -; notice, this list of conditions and the following disclaimer in the -; documentation and/or other materials provided with the -; distribution. -; -; * Neither the name of the Intel Corporation nor the names of its -; contributors may be used to endorse or promote products derived from -; this software without specific prior written permission. -; -; -; THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY -; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR -; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; Example YASM command lines: -; Windows: yasm -Xvc -f x64 -rnasm -pnasm -o sha256_avx1.obj -g cv8 sha256_avx1.asm -; Linux: yasm -f x64 -f elf64 -X gnu -g dwarf2 -D LINUX -o sha256_avx1.o sha256_avx1.asm -; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; This code is described in an Intel White-Paper: -; "Fast SHA-256 Implementations on Intel Architecture Processors" -; -; To find it, surf to http://www.intel.com/p/en_US/embedded -; and search for that title. -; The paper is expected to be released roughly at the end of April, 2012 -; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; This code schedules 1 blocks at a time, with 4 lanes per block -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%define VMOVDQ vmovdqu ;; assume buffers not aligned - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Define Macros - -; addm [mem], reg -; Add reg to mem using reg-mem add and store -%macro addm 2 - add %2, %1 - mov %1, %2 -%endm - -%macro MY_ROR 2 - shld %1,%1,(32-(%2)) -%endm - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -; COPY_XMM_AND_BSWAP xmm, [mem], byte_flip_mask -; Load xmm with mem and byte swap each dword -%macro COPY_XMM_AND_BSWAP 3 - VMOVDQ %1, %2 - vpshufb %1, %1, %3 -%endmacro - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%define X0 xmm4 -%define X1 xmm5 -%define X2 xmm6 -%define X3 xmm7 - -%define XTMP0 xmm0 -%define XTMP1 xmm1 -%define XTMP2 xmm2 -%define XTMP3 xmm3 -%define XTMP4 xmm8 -%define XFER xmm9 -%define XTMP5 xmm11 - -%define SHUF_00BA xmm10 ; shuffle xBxA -> 00BA -%define SHUF_DC00 xmm12 ; shuffle xDxC -> DC00 -%define BYTE_FLIP_MASK xmm13 - -%ifdef LINUX -%define NUM_BLKS rdx ; 3rd arg -%define CTX rsi ; 2nd arg -%define INP rdi ; 1st arg - -%define SRND rdi ; clobbers INP -%define c ecx -%define d r8d -%define e edx -%else -%define NUM_BLKS r8 ; 3rd arg -%define CTX rdx ; 2nd arg -%define INP rcx ; 1st arg - -%define SRND rcx ; clobbers INP -%define c edi -%define d esi -%define e r8d - -%endif -%define TBL rbp -%define a eax -%define b ebx - -%define f r9d -%define g r10d -%define h r11d - -%define y0 r13d -%define y1 r14d -%define y2 r15d - - -_INP_END_SIZE equ 8 -_INP_SIZE equ 8 -_XFER_SIZE equ 8 -%ifdef LINUX -_XMM_SAVE_SIZE equ 0 -%else -_XMM_SAVE_SIZE equ 8*16 -%endif -; STACK_SIZE plus pushes must be an odd multiple of 8 -_ALIGN_SIZE equ 8 - -_INP_END equ 0 -_INP equ _INP_END + _INP_END_SIZE -_XFER equ _INP + _INP_SIZE -_XMM_SAVE equ _XFER + _XFER_SIZE + _ALIGN_SIZE -STACK_SIZE equ _XMM_SAVE + _XMM_SAVE_SIZE - -; rotate_Xs -; Rotate values of symbols X0...X3 -%macro rotate_Xs 0 -%xdefine X_ X0 -%xdefine X0 X1 -%xdefine X1 X2 -%xdefine X2 X3 -%xdefine X3 X_ -%endm - -; ROTATE_ARGS -; Rotate values of symbols a...h -%macro ROTATE_ARGS 0 -%xdefine TMP_ h -%xdefine h g -%xdefine g f -%xdefine f e -%xdefine e d -%xdefine d c -%xdefine c b -%xdefine b a -%xdefine a TMP_ -%endm - -%macro FOUR_ROUNDS_AND_SCHED 0 - ;; compute s0 four at a time and s1 two at a time - ;; compute W[-16] + W[-7] 4 at a time - ;vmovdqa XTMP0, X3 - mov y0, e ; y0 = e - MY_ROR y0, (25-11) ; y0 = e >> (25-11) - mov y1, a ; y1 = a - vpalignr XTMP0, X3, X2, 4 ; XTMP0 = W[-7] - MY_ROR y1, (22-13) ; y1 = a >> (22-13) - xor y0, e ; y0 = e ^ (e >> (25-11)) - mov y2, f ; y2 = f - MY_ROR y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - ;vmovdqa XTMP1, X1 - xor y1, a ; y1 = a ^ (a >> (22-13) - xor y2, g ; y2 = f^g - vpaddd XTMP0, XTMP0, X0 ; XTMP0 = W[-7] + W[-16] - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - and y2, e ; y2 = (f^g)&e - MY_ROR y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - ;; compute s0 - vpalignr XTMP1, X1, X0, 4 ; XTMP1 = W[-15] - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - MY_ROR y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - xor y2, g ; y2 = CH = ((f^g)&e)^g - - - MY_ROR y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - add y2, y0 ; y2 = S1 + CH - add y2, [rsp + _XFER + 0*4] ; y2 = k + w + S1 + CH - - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - - vpsrld XTMP2, XTMP1, 7 - - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - - vpslld XTMP3, XTMP1, (32-7) - - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - - vpor XTMP3, XTMP3, XTMP2 ; XTMP1 = W[-15] nostrdb: MY_ROR 7 - - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - -ROTATE_ARGS - - mov y0, e ; y0 = e - mov y1, a ; y1 = a - - - MY_ROR y0, (25-11) ; y0 = e >> (25-11) - xor y0, e ; y0 = e ^ (e >> (25-11)) - mov y2, f ; y2 = f - MY_ROR y1, (22-13) ; y1 = a >> (22-13) - - vpsrld XTMP2, XTMP1,18 - - xor y1, a ; y1 = a ^ (a >> (22-13) - MY_ROR y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - xor y2, g ; y2 = f^g - - vpsrld XTMP4, XTMP1, 3 ; XTMP4 = W[-15] nostrdb: >> 3 - - MY_ROR y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - and y2, e ; y2 = (f^g)&e - MY_ROR y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - - vpslld XTMP1, XTMP1, (32-18) - - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - xor y2, g ; y2 = CH = ((f^g)&e)^g - - vpxor XTMP3, XTMP3, XTMP1 - - add y2, y0 ; y2 = S1 + CH - add y2, [rsp + _XFER + 1*4] ; y2 = k + w + S1 + CH - MY_ROR y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - - vpxor XTMP3, XTMP3, XTMP2 ; XTMP1 = W[-15] nostrdb: MY_ROR 7 ^ W[-15] MY_ROR 18 - - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - - vpxor XTMP1, XTMP3, XTMP4 ; XTMP1 = s0 - - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - ;; compute low s1 - vpshufd XTMP2, X3, 11111010b ; XTMP2 = W[-2] {BBAA} - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - vpaddd XTMP0, XTMP0, XTMP1 ; XTMP0 = W[-16] + W[-7] + s0 - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - -ROTATE_ARGS - ;vmovdqa XTMP3, XTMP2 ; XTMP3 = W[-2] {BBAA} - - mov y0, e ; y0 = e - mov y1, a ; y1 = a - MY_ROR y0, (25-11) ; y0 = e >> (25-11) - - ;vmovdqa XTMP4, XTMP2 ; XTMP4 = W[-2] {BBAA} - - xor y0, e ; y0 = e ^ (e >> (25-11)) - MY_ROR y1, (22-13) ; y1 = a >> (22-13) - mov y2, f ; y2 = f - xor y1, a ; y1 = a ^ (a >> (22-13) - MY_ROR y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - - vpsrld XTMP4, XTMP2, 10 ; XTMP4 = W[-2] >> 10 {BBAA} - - xor y2, g ; y2 = f^g - - vpsrlq XTMP3, XTMP2, 19 ; XTMP3 = W[-2] MY_ROR 19 {xBxA} - - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - and y2, e ; y2 = (f^g)&e - - vpsrlq XTMP2, XTMP2, 17 ; XTMP2 = W[-2] MY_ROR 17 {xBxA} - - MY_ROR y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - xor y2, g ; y2 = CH = ((f^g)&e)^g - MY_ROR y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - vpxor XTMP2, XTMP2, XTMP3 - add y2, y0 ; y2 = S1 + CH - MY_ROR y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - add y2, [rsp + _XFER + 2*4] ; y2 = k + w + S1 + CH - vpxor XTMP4, XTMP4, XTMP2 ; XTMP4 = s1 {xBxA} - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - vpshufb XTMP4, XTMP4, SHUF_00BA ; XTMP4 = s1 {00BA} - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - vpaddd XTMP0, XTMP0, XTMP4 ; XTMP0 = {..., ..., W[1], W[0]} - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - ;; compute high s1 - vpshufd XTMP2, XTMP0, 01010000b ; XTMP2 = W[-2] {DDCC} - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - -ROTATE_ARGS - ;vmovdqa XTMP3, XTMP2 ; XTMP3 = W[-2] {DDCC} - mov y0, e ; y0 = e - MY_ROR y0, (25-11) ; y0 = e >> (25-11) - mov y1, a ; y1 = a - ;vmovdqa XTMP5, XTMP2 ; XTMP5 = W[-2] {DDCC} - MY_ROR y1, (22-13) ; y1 = a >> (22-13) - xor y0, e ; y0 = e ^ (e >> (25-11)) - mov y2, f ; y2 = f - MY_ROR y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - - vpsrld XTMP5, XTMP2, 10 ; XTMP5 = W[-2] >> 10 {DDCC} - - xor y1, a ; y1 = a ^ (a >> (22-13) - xor y2, g ; y2 = f^g - - vpsrlq XTMP3, XTMP2, 19 ; XTMP3 = W[-2] MY_ROR 19 {xDxC} - - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - and y2, e ; y2 = (f^g)&e - MY_ROR y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - - vpsrlq XTMP2, XTMP2, 17 ; XTMP2 = W[-2] MY_ROR 17 {xDxC} - - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - MY_ROR y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - xor y2, g ; y2 = CH = ((f^g)&e)^g - - vpxor XTMP2, XTMP2, XTMP3 - - MY_ROR y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - add y2, y0 ; y2 = S1 + CH - add y2, [rsp + _XFER + 3*4] ; y2 = k + w + S1 + CH - vpxor XTMP5, XTMP5, XTMP2 ; XTMP5 = s1 {xDxC} - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - vpshufb XTMP5, XTMP5, SHUF_DC00 ; XTMP5 = s1 {DC00} - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - vpaddd X0, XTMP5, XTMP0 ; X0 = {W[3], W[2], W[1], W[0]} - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - -ROTATE_ARGS -rotate_Xs -%endm - -;; input is [rsp + _XFER + %1 * 4] -%macro DO_ROUND 1 - mov y0, e ; y0 = e - MY_ROR y0, (25-11) ; y0 = e >> (25-11) - mov y1, a ; y1 = a - xor y0, e ; y0 = e ^ (e >> (25-11)) - MY_ROR y1, (22-13) ; y1 = a >> (22-13) - mov y2, f ; y2 = f - xor y1, a ; y1 = a ^ (a >> (22-13) - MY_ROR y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - xor y2, g ; y2 = f^g - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - MY_ROR y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - and y2, e ; y2 = (f^g)&e - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - MY_ROR y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - xor y2, g ; y2 = CH = ((f^g)&e)^g - add y2, y0 ; y2 = S1 + CH - MY_ROR y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - add y2, [rsp + _XFER + %1 * 4] ; y2 = k + w + S1 + CH - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - ROTATE_ARGS -%endm - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; void sha256_avx(void *input_data, UINT32 digest[8], UINT64 num_blks) -;; arg 1 : pointer to input data -;; arg 2 : pointer to digest -;; arg 3 : Num blocks -section .text -global sha256_avx -align 32 -sha256_avx: - push rbx -%ifndef LINUX - push rsi - push rdi -%endif - push rbp - push r13 - push r14 - push r15 - - sub rsp,STACK_SIZE -%ifndef LINUX - vmovdqa [rsp + _XMM_SAVE + 0*16],xmm6 - vmovdqa [rsp + _XMM_SAVE + 1*16],xmm7 - vmovdqa [rsp + _XMM_SAVE + 2*16],xmm8 - vmovdqa [rsp + _XMM_SAVE + 3*16],xmm9 - vmovdqa [rsp + _XMM_SAVE + 4*16],xmm10 - vmovdqa [rsp + _XMM_SAVE + 5*16],xmm11 - vmovdqa [rsp + _XMM_SAVE + 6*16],xmm12 - vmovdqa [rsp + _XMM_SAVE + 7*16],xmm13 -%endif - - shl NUM_BLKS, 6 ; convert to bytes - jz done_hash - add NUM_BLKS, INP ; pointer to end of data - mov [rsp + _INP_END], NUM_BLKS - - ;; load initial digest - mov a,[4*0 + CTX] - mov b,[4*1 + CTX] - mov c,[4*2 + CTX] - mov d,[4*3 + CTX] - mov e,[4*4 + CTX] - mov f,[4*5 + CTX] - mov g,[4*6 + CTX] - mov h,[4*7 + CTX] - - vmovdqa BYTE_FLIP_MASK, [PSHUFFLE_BYTE_FLIP_MASK wrt rip] - vmovdqa SHUF_00BA, [_SHUF_00BA wrt rip] - vmovdqa SHUF_DC00, [_SHUF_DC00 wrt rip] - -loop0: - lea TBL,[K256 wrt rip] - - ;; byte swap first 16 dwords - COPY_XMM_AND_BSWAP X0, [INP + 0*16], BYTE_FLIP_MASK - COPY_XMM_AND_BSWAP X1, [INP + 1*16], BYTE_FLIP_MASK - COPY_XMM_AND_BSWAP X2, [INP + 2*16], BYTE_FLIP_MASK - COPY_XMM_AND_BSWAP X3, [INP + 3*16], BYTE_FLIP_MASK - - mov [rsp + _INP], INP - - ;; schedule 48 input dwords, by doing 3 rounds of 16 each - mov SRND, 3 -align 16 -loop1: - vpaddd XFER, X0, [TBL + 0*16] - vmovdqa [rsp + _XFER], XFER - FOUR_ROUNDS_AND_SCHED - - vpaddd XFER, X0, [TBL + 1*16] - vmovdqa [rsp + _XFER], XFER - FOUR_ROUNDS_AND_SCHED - - vpaddd XFER, X0, [TBL + 2*16] - vmovdqa [rsp + _XFER], XFER - FOUR_ROUNDS_AND_SCHED - - vpaddd XFER, X0, [TBL + 3*16] - vmovdqa [rsp + _XFER], XFER - add TBL, 4*16 - FOUR_ROUNDS_AND_SCHED - - sub SRND, 1 - jne loop1 - - mov SRND, 2 -loop2: - vpaddd XFER, X0, [TBL + 0*16] - vmovdqa [rsp + _XFER], XFER - DO_ROUND 0 - DO_ROUND 1 - DO_ROUND 2 - DO_ROUND 3 - - vpaddd XFER, X1, [TBL + 1*16] - vmovdqa [rsp + _XFER], XFER - add TBL, 2*16 - DO_ROUND 0 - DO_ROUND 1 - DO_ROUND 2 - DO_ROUND 3 - - vmovdqa X0, X2 - vmovdqa X1, X3 - - sub SRND, 1 - jne loop2 - - - addm [4*0 + CTX],a - addm [4*1 + CTX],b - addm [4*2 + CTX],c - addm [4*3 + CTX],d - addm [4*4 + CTX],e - addm [4*5 + CTX],f - addm [4*6 + CTX],g - addm [4*7 + CTX],h - - mov INP, [rsp + _INP] - add INP, 64 - cmp INP, [rsp + _INP_END] - jne loop0 - -done_hash: -%ifndef LINUX - vmovdqa xmm6,[rsp + _XMM_SAVE + 0*16] - vmovdqa xmm7,[rsp + _XMM_SAVE + 1*16] - vmovdqa xmm8,[rsp + _XMM_SAVE + 2*16] - vmovdqa xmm9,[rsp + _XMM_SAVE + 3*16] - vmovdqa xmm10,[rsp + _XMM_SAVE + 4*16] - vmovdqa xmm11,[rsp + _XMM_SAVE + 5*16] - vmovdqa xmm12,[rsp + _XMM_SAVE + 6*16] - vmovdqa xmm13,[rsp + _XMM_SAVE + 7*16] -%endif - - - add rsp, STACK_SIZE - - pop r15 - pop r14 - pop r13 - pop rbp -%ifndef LINUX - pop rdi - pop rsi -%endif - pop rbx - - ret - - -section .data -align 64 -K256: - dd 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 - dd 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 - dd 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 - dd 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 - dd 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc - dd 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da - dd 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 - dd 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 - dd 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 - dd 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 - dd 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 - dd 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 - dd 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 - dd 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 - dd 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 - dd 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 - -PSHUFFLE_BYTE_FLIP_MASK: ddq 0x0c0d0e0f08090a0b0405060700010203 - -; shuffle xBxA -> 00BA -_SHUF_00BA: ddq 0xFFFFFFFFFFFFFFFF0b0a090803020100 - -; shuffle xDxC -> DC00 -_SHUF_DC00: ddq 0x0b0a090803020100FFFFFFFFFFFFFFFF diff --git a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_avx2_rorx2.asm b/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_avx2_rorx2.asm deleted file mode 100644 index 8bcbca6b02..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_avx2_rorx2.asm +++ /dev/null @@ -1,826 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Copyright (c) 2012, Intel Corporation -; -; All rights reserved. -; -; Redistribution and use in source and binary forms, with or without -; modification, are permitted provided that the following conditions are -; met: -; -; * Redistributions of source code must retain the above copyright -; notice, this list of conditions and the following disclaimer. -; -; * Redistributions in binary form must reproduce the above copyright -; notice, this list of conditions and the following disclaimer in the -; documentation and/or other materials provided with the -; distribution. -; -; * Neither the name of the Intel Corporation nor the names of its -; contributors may be used to endorse or promote products derived from -; this software without specific prior written permission. -; -; -; THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY -; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR -; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; Example YASM command lines: -; Windows: yasm -Xvc -f x64 -rnasm -pnasm -o sha256_avx2_rorx2.obj -g cv8 sha256_avx2_rorx2.asm -; Linux: yasm -f x64 -f elf64 -X gnu -g dwarf2 -D LINUX -o sha256_avx2_rorx2.o sha256_avx2_rorx2.asm -; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; This code is described in an Intel White-Paper: -; "Fast SHA-256 Implementations on Intel Architecture Processors" -; -; To find it, surf to http://www.intel.com/p/en_US/embedded -; and search for that title. -; The paper is expected to be released roughly at the end of April, 2012 -; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; This code schedules 2 blocks at a time, with 4 lanes per block -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%define VMOVDQ vmovdqu ;; assume buffers not aligned - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Define Macros - -; addm [mem], reg -; Add reg to mem using reg-mem add and store -%macro addm 2 - add %2, %1 - mov %1, %2 -%endm - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%define X0 ymm4 -%define X1 ymm5 -%define X2 ymm6 -%define X3 ymm7 - -; XMM versions of above -%define XWORD0 xmm4 -%define XWORD1 xmm5 -%define XWORD2 xmm6 -%define XWORD3 xmm7 - -%define XTMP0 ymm0 -%define XTMP1 ymm1 -%define XTMP2 ymm2 -%define XTMP3 ymm3 -%define XTMP4 ymm8 -%define XFER ymm9 -%define XTMP5 ymm11 - -%define SHUF_00BA ymm10 ; shuffle xBxA -> 00BA -%define SHUF_DC00 ymm12 ; shuffle xDxC -> DC00 -%define BYTE_FLIP_MASK ymm13 - -%define X_BYTE_FLIP_MASK xmm13 ; XMM version of BYTE_FLIP_MASK - -%ifdef LINUX -%define NUM_BLKS rdx ; 3rd arg -%define CTX rsi ; 2nd arg -%define INP rdi ; 1st arg -%define c ecx -%define d r8d -%define e edx ; clobbers NUM_BLKS -%define y3 edi ; clobbers INP -%else -%define NUM_BLKS r8 ; 3rd arg -%define CTX rdx ; 2nd arg -%define INP rcx ; 1st arg -%define c edi -%define d esi -%define e r8d ; clobbers NUM_BLKS -%define y3 ecx ; clobbers INP - -%endif - - -%define TBL rbp -%define SRND CTX ; SRND is same register as CTX - -%define a eax -%define b ebx -%define f r9d -%define g r10d -%define h r11d -%define old_h r11d - -%define T1 r12d -%define y0 r13d -%define y1 r14d -%define y2 r15d - - -_XFER_SIZE equ 2*64*4 ; 2 blocks, 64 rounds, 4 bytes/round -%ifdef LINUX -_XMM_SAVE_SIZE equ 0 -%else -_XMM_SAVE_SIZE equ 8*16 -%endif -_INP_END_SIZE equ 8 -_INP_SIZE equ 8 -_CTX_SIZE equ 8 -_RSP_SIZE equ 8 - -_XFER equ 0 -_XMM_SAVE equ _XFER + _XFER_SIZE -_INP_END equ _XMM_SAVE + _XMM_SAVE_SIZE -_INP equ _INP_END + _INP_END_SIZE -_CTX equ _INP + _INP_SIZE -_RSP equ _CTX + _CTX_SIZE -STACK_SIZE equ _RSP + _RSP_SIZE - -; rotate_Xs -; Rotate values of symbols X0...X3 -%macro rotate_Xs 0 -%xdefine X_ X0 -%xdefine X0 X1 -%xdefine X1 X2 -%xdefine X2 X3 -%xdefine X3 X_ -%endm - -; ROTATE_ARGS -; Rotate values of symbols a...h -%macro ROTATE_ARGS 0 -%xdefine old_h h -%xdefine TMP_ h -%xdefine h g -%xdefine g f -%xdefine f e -%xdefine e d -%xdefine d c -%xdefine c b -%xdefine b a -%xdefine a TMP_ -%endm - -%macro FOUR_ROUNDS_AND_SCHED 1 -%define %%XFER %1 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - mov y3, a ; y3 = a ; MAJA - rorx y0, e, 25 ; y0 = e >> 25 ; S1A - rorx y1, e, 11 ; y1 = e >> 11 ; S1B - - add h, dword[%%XFER+0*4] ; h = k + w + h ; -- - or y3, c ; y3 = a|c ; MAJA - vpalignr XTMP0, X3, X2, 4 ; XTMP0 = W[-7] - mov y2, f ; y2 = f ; CH - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ; S1 - xor y2, g ; y2 = f^g ; CH - vpaddd XTMP0, XTMP0, X0 ; XTMP0 = W[-7] + W[-16]; y1 = (e >> 6) ; S1 - rorx y1, e, 6 ; y1 = (e >> 6) ; S1 - - and y2, e ; y2 = (f^g)&e ; CH - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx y1, a, 22 ; y1 = a >> 22 ; S0A - add d, h ; d = k + w + h + d ; -- - - and y3, b ; y3 = (a|c)&b ; MAJA - vpalignr XTMP1, X1, X0, 4 ; XTMP1 = W[-15] - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - - xor y2, g ; y2 = CH = ((f^g)&e)^g ; CH - vpsrld XTMP2, XTMP1, 7 - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and T1, c ; T1 = a&c ; MAJB - - add y2, y0 ; y2 = S1 + CH ; -- - vpslld XTMP3, XTMP1, (32-7) - or y3, T1 ; y3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, y1 ; h = k + w + h + S0 ; -- - - add d, y2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - vpor XTMP3, XTMP3, XTMP2 ; XTMP3 = W[-15] nostrdb: ror 7 - - vpsrld XTMP2, XTMP1,18 - add h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - add h, y3 ; h = t1 + S0 + MAJ ; -- - - -ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - - mov y3, a ; y3 = a ; MAJA - rorx y0, e, 25 ; y0 = e >> 25 ; S1A - rorx y1, e, 11 ; y1 = e >> 11 ; S1B - add h, dword[%%XFER+1*4] ; h = k + w + h ; -- - or y3, c ; y3 = a|c ; MAJA - - - vpsrld XTMP4, XTMP1, 3 ; XTMP4 = W[-15] nostrdb: >> 3 - mov y2, f ; y2 = f ; CH - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ; S1 - xor y2, g ; y2 = f^g ; CH - - - rorx y1, e, 6 ; y1 = (e >> 6) ; S1 - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx y1, a, 22 ; y1 = a >> 22 ; S0A - and y2, e ; y2 = (f^g)&e ; CH - add d, h ; d = k + w + h + d ; -- - - vpslld XTMP1, XTMP1, (32-18) - and y3, b ; y3 = (a|c)&b ; MAJA - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ; S0 - - vpxor XTMP3, XTMP3, XTMP1 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - xor y2, g ; y2 = CH = ((f^g)&e)^g ; CH - - vpxor XTMP3, XTMP3, XTMP2 ; XTMP3 = W[-15] nostrdb: ror 7 ^ W[-15] ror 18 - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and T1, c ; T1 = a&c ; MAJB - add y2, y0 ; y2 = S1 + CH ; -- - - vpxor XTMP1, XTMP3, XTMP4 ; XTMP1 = s0 - vpshufd XTMP2, X3, 11111010b ; XTMP2 = W[-2] {BBAA} - or y3, T1 ; y3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, y1 ; h = k + w + h + S0 ; -- - - vpaddd XTMP0, XTMP0, XTMP1 ; XTMP0 = W[-16] + W[-7] + s0 - add d, y2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - add h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - add h, y3 ; h = t1 + S0 + MAJ ; -- - - vpsrld XTMP4, XTMP2, 10 ; XTMP4 = W[-2] >> 10 {BBAA} - - -ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - mov y3, a ; y3 = a ; MAJA - rorx y0, e, 25 ; y0 = e >> 25 ; S1A - add h, [%%XFER+2*4] ; h = k + w + h ; -- - - vpsrlq XTMP3, XTMP2, 19 ; XTMP3 = W[-2] ror 19 {xBxA} - rorx y1, e, 11 ; y1 = e >> 11 ; S1B - or y3, c ; y3 = a|c ; MAJA - mov y2, f ; y2 = f ; CH - xor y2, g ; y2 = f^g ; CH - - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ; S1 - vpsrlq XTMP2, XTMP2, 17 ; XTMP2 = W[-2] ror 17 {xBxA} - and y2, e ; y2 = (f^g)&e ; CH - - rorx y1, e, 6 ; y1 = (e >> 6) ; S1 - vpxor XTMP2, XTMP2, XTMP3 - add d, h ; d = k + w + h + d ; -- - and y3, b ; y3 = (a|c)&b ; MAJA - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx y1, a, 22 ; y1 = a >> 22 ; S0A - vpxor XTMP4, XTMP4, XTMP2 ; XTMP4 = s1 {xBxA} - xor y2, g ; y2 = CH = ((f^g)&e)^g ; CH - - vpshufb XTMP4, XTMP4, SHUF_00BA ; XTMP4 = s1 {00BA} - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - vpaddd XTMP0, XTMP0, XTMP4 ; XTMP0 = {..., ..., W[1], W[0]} - - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and T1, c ; T1 = a&c ; MAJB - add y2, y0 ; y2 = S1 + CH ; -- - vpshufd XTMP2, XTMP0, 01010000b ; XTMP2 = W[-2] {DDCC} - - or y3, T1 ; y3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, y1 ; h = k + w + h + S0 ; -- - add d, y2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - add h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - - add h, y3 ; h = t1 + S0 + MAJ ; -- - - -ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - mov y3, a ; y3 = a ; MAJA - rorx y0, e, 25 ; y0 = e >> 25 ; S1A - rorx y1, e, 11 ; y1 = e >> 11 ; S1B - add h, dword[%%XFER+3*4] ; h = k + w + h ; -- - or y3, c ; y3 = a|c ; MAJA - - - vpsrld XTMP5, XTMP2, 10 ; XTMP5 = W[-2] >> 10 {DDCC} - mov y2, f ; y2 = f ; CH - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ; S1 - xor y2, g ; y2 = f^g ; CH - - - vpsrlq XTMP3, XTMP2, 19 ; XTMP3 = W[-2] ror 19 {xDxC} - rorx y1, e, 6 ; y1 = (e >> 6) ; S1 - and y2, e ; y2 = (f^g)&e ; CH - add d, h ; d = k + w + h + d ; -- - and y3, b ; y3 = (a|c)&b ; MAJA - - vpsrlq XTMP2, XTMP2, 17 ; XTMP2 = W[-2] ror 17 {xDxC} - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - xor y2, g ; y2 = CH = ((f^g)&e)^g ; CH - - vpxor XTMP2, XTMP2, XTMP3 - rorx y1, a, 22 ; y1 = a >> 22 ; S0A - add y2, y0 ; y2 = S1 + CH ; -- - - vpxor XTMP5, XTMP5, XTMP2 ; XTMP5 = s1 {xDxC} - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ; S0 - add d, y2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - vpshufb XTMP5, XTMP5, SHUF_DC00 ; XTMP5 = s1 {DC00} - - vpaddd X0, XTMP5, XTMP0 ; X0 = {W[3], W[2], W[1], W[0]} - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and T1, c ; T1 = a&c ; MAJB - or y3, T1 ; y3 = MAJ = (a|c)&b)|(a&c) ; MAJ - - add h, y1 ; h = k + w + h + S0 ; -- - add h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - add h, y3 ; h = t1 + S0 + MAJ ; -- - -ROTATE_ARGS -rotate_Xs -%endm - -%macro DO_4ROUNDS 1 -%define %%XFER %1 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;; - - mov y2, f ; y2 = f ; CH - rorx y0, e, 25 ; y0 = e >> 25 ; S1A - rorx y1, e, 11 ; y1 = e >> 11 ; S1B - xor y2, g ; y2 = f^g ; CH - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ; S1 - rorx y1, e, 6 ; y1 = (e >> 6) ; S1 - and y2, e ; y2 = (f^g)&e ; CH - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor y2, g ; y2 = CH = ((f^g)&e)^g ; CH - rorx y1, a, 22 ; y1 = a >> 22 ; S0A - mov y3, a ; y3 = a ; MAJA - - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[%%XFER + 4*0] ; h = k + w + h ; -- - or y3, c ; y3 = a|c ; MAJA - - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and y3, b ; y3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add y2, y0 ; y2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or y3, T1 ; y3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, y1 ; h = k + w + h + S0 ; -- - - add d, y2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - - ;add h, y3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;; - - add old_h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - mov y2, f ; y2 = f ; CH - rorx y0, e, 25 ; y0 = e >> 25 ; S1A - rorx y1, e, 11 ; y1 = e >> 11 ; S1B - xor y2, g ; y2 = f^g ; CH - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ; S1 - rorx y1, e, 6 ; y1 = (e >> 6) ; S1 - and y2, e ; y2 = (f^g)&e ; CH - add old_h, y3 ; h = t1 + S0 + MAJ ; -- - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor y2, g ; y2 = CH = ((f^g)&e)^g ; CH - rorx y1, a, 22 ; y1 = a >> 22 ; S0A - mov y3, a ; y3 = a ; MAJA - - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[%%XFER + 4*1] ; h = k + w + h ; -- - or y3, c ; y3 = a|c ; MAJA - - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and y3, b ; y3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add y2, y0 ; y2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or y3, T1 ; y3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, y1 ; h = k + w + h + S0 ; -- - - add d, y2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - - ;add h, y3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - add old_h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - mov y2, f ; y2 = f ; CH - rorx y0, e, 25 ; y0 = e >> 25 ; S1A - rorx y1, e, 11 ; y1 = e >> 11 ; S1B - xor y2, g ; y2 = f^g ; CH - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ; S1 - rorx y1, e, 6 ; y1 = (e >> 6) ; S1 - and y2, e ; y2 = (f^g)&e ; CH - add old_h, y3 ; h = t1 + S0 + MAJ ; -- - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor y2, g ; y2 = CH = ((f^g)&e)^g ; CH - rorx y1, a, 22 ; y1 = a >> 22 ; S0A - mov y3, a ; y3 = a ; MAJA - - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[%%XFER + 4*2] ; h = k + w + h ; -- - or y3, c ; y3 = a|c ; MAJA - - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and y3, b ; y3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add y2, y0 ; y2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or y3, T1 ; y3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, y1 ; h = k + w + h + S0 ; -- - - add d, y2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - - ;add h, y3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 3 ;;;;;;;;;;;;;;;;;;;;;;;;;;; - - add old_h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - mov y2, f ; y2 = f ; CH - rorx y0, e, 25 ; y0 = e >> 25 ; S1A - rorx y1, e, 11 ; y1 = e >> 11 ; S1B - xor y2, g ; y2 = f^g ; CH - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ; S1 - rorx y1, e, 6 ; y1 = (e >> 6) ; S1 - and y2, e ; y2 = (f^g)&e ; CH - add old_h, y3 ; h = t1 + S0 + MAJ ; -- - - xor y0, y1 ; y0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor y2, g ; y2 = CH = ((f^g)&e)^g ; CH - rorx y1, a, 22 ; y1 = a >> 22 ; S0A - mov y3, a ; y3 = a ; MAJA - - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[%%XFER + 4*3] ; h = k + w + h ; -- - or y3, c ; y3 = a|c ; MAJA - - xor y1, T1 ; y1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and y3, b ; y3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add y2, y0 ; y2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or y3, T1 ; y3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, y1 ; h = k + w + h + S0 ; -- - - add d, y2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - add h, y2 ; h = k + w + h + S0 + S1 + CH = t1 + S0; -- - - add h, y3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - -%endm - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; void sha256_rorx(void *input_data, UINT32 digest[8], UINT64 num_blks) -;; arg 1 : pointer to input data -;; arg 2 : pointer to digest -;; arg 3 : Num blocks -section .text -global sha256_rorx -align 32 -sha256_rorx: - push rbx -%ifndef LINUX - push rsi - push rdi -%endif - push rbp - push r12 - push r13 - push r14 - push r15 - - mov rax, rsp - sub rsp,STACK_SIZE - and rsp, -32 - mov [rsp + _RSP], rax - -%ifndef LINUX - vmovdqa [rsp + _XMM_SAVE + 0*16],xmm6 - vmovdqa [rsp + _XMM_SAVE + 1*16],xmm7 - vmovdqa [rsp + _XMM_SAVE + 2*16],xmm8 - vmovdqa [rsp + _XMM_SAVE + 3*16],xmm9 - vmovdqa [rsp + _XMM_SAVE + 4*16],xmm10 - vmovdqa [rsp + _XMM_SAVE + 5*16],xmm11 - vmovdqa [rsp + _XMM_SAVE + 6*16],xmm12 - vmovdqa [rsp + _XMM_SAVE + 7*16],xmm13 -%endif - - shl NUM_BLKS, 6 ; convert to bytes - jz done_hash - lea NUM_BLKS, [NUM_BLKS + INP - 64] ; pointer to last block - mov [rsp + _INP_END], NUM_BLKS - - cmp INP, NUM_BLKS - je only_one_block - - ;; load initial digest - mov a,[4*0 + CTX] - mov b,[4*1 + CTX] - mov c,[4*2 + CTX] - mov d,[4*3 + CTX] - mov e,[4*4 + CTX] - mov f,[4*5 + CTX] - mov g,[4*6 + CTX] - mov h,[4*7 + CTX] - - vmovdqa BYTE_FLIP_MASK, [PSHUFFLE_BYTE_FLIP_MASK wrt rip] - vmovdqa SHUF_00BA, [_SHUF_00BA wrt rip] - vmovdqa SHUF_DC00, [_SHUF_DC00 wrt rip] - - mov [rsp + _CTX], CTX - -loop0: - lea TBL,[K256 wrt rip] - - ;; Load first 16 dwords from two blocks - VMOVDQ XTMP0, [INP + 0*32] - VMOVDQ XTMP1, [INP + 1*32] - VMOVDQ XTMP2, [INP + 2*32] - VMOVDQ XTMP3, [INP + 3*32] - - ;; byte swap data - vpshufb XTMP0, XTMP0, BYTE_FLIP_MASK - vpshufb XTMP1, XTMP1, BYTE_FLIP_MASK - vpshufb XTMP2, XTMP2, BYTE_FLIP_MASK - vpshufb XTMP3, XTMP3, BYTE_FLIP_MASK - - ;; transpose data into high/low halves - vperm2i128 X0, XTMP0, XTMP2, 0x20 - vperm2i128 X1, XTMP0, XTMP2, 0x31 - vperm2i128 X2, XTMP1, XTMP3, 0x20 - vperm2i128 X3, XTMP1, XTMP3, 0x31 - -last_block_enter: - add INP, 64 - mov [rsp + _INP], INP - - ;; schedule 48 input dwords, by doing 3 rounds of 12 each - xor SRND, SRND - -align 16 -loop1: - vpaddd XFER, X0, [TBL + SRND + 0*32] - vmovdqa [rsp + _XFER + SRND + 0*32], XFER - FOUR_ROUNDS_AND_SCHED rsp + _XFER + SRND + 0*32 - - vpaddd XFER, X0, [TBL + SRND + 1*32] - vmovdqa [rsp + _XFER + SRND + 1*32], XFER - FOUR_ROUNDS_AND_SCHED rsp + _XFER + SRND + 1*32 - - vpaddd XFER, X0, [TBL + SRND + 2*32] - vmovdqa [rsp + _XFER + SRND + 2*32], XFER - FOUR_ROUNDS_AND_SCHED rsp + _XFER + SRND + 2*32 - - vpaddd XFER, X0, [TBL + SRND + 3*32] - vmovdqa [rsp + _XFER + SRND + 3*32], XFER - FOUR_ROUNDS_AND_SCHED rsp + _XFER + SRND + 3*32 - - add SRND, 4*32 - cmp SRND, 3 * 4*32 - jb loop1 - -loop2: - ;; Do last 16 rounds with no scheduling - vpaddd XFER, X0, [TBL + SRND + 0*32] - vmovdqa [rsp + _XFER + SRND + 0*32], XFER - DO_4ROUNDS rsp + _XFER + SRND + 0*32 - vpaddd XFER, X1, [TBL + SRND + 1*32] - vmovdqa [rsp + _XFER + SRND + 1*32], XFER - DO_4ROUNDS rsp + _XFER + SRND + 1*32 - add SRND, 2*32 - - vmovdqa X0, X2 - vmovdqa X1, X3 - - cmp SRND, 4 * 4*32 - jb loop2 - - mov CTX, [rsp + _CTX] - mov INP, [rsp + _INP] - - addm [4*0 + CTX],a - addm [4*1 + CTX],b - addm [4*2 + CTX],c - addm [4*3 + CTX],d - addm [4*4 + CTX],e - addm [4*5 + CTX],f - addm [4*6 + CTX],g - addm [4*7 + CTX],h - - cmp INP, [rsp + _INP_END] - ja done_hash - - ;;;; Do second block using previously scheduled results - xor SRND, SRND -align 16 -loop3: - DO_4ROUNDS rsp + _XFER + SRND + 0*32 + 16 - DO_4ROUNDS rsp + _XFER + SRND + 1*32 + 16 - add SRND, 2*32 - cmp SRND, 4 * 4*32 - jb loop3 - - mov CTX, [rsp + _CTX] - mov INP, [rsp + _INP] - add INP, 64 - - addm [4*0 + CTX],a - addm [4*1 + CTX],b - addm [4*2 + CTX],c - addm [4*3 + CTX],d - addm [4*4 + CTX],e - addm [4*5 + CTX],f - addm [4*6 + CTX],g - addm [4*7 + CTX],h - - cmp INP, [rsp + _INP_END] - jb loop0 - ja done_hash - -do_last_block: - ;;;; do last block - lea TBL,[K256 wrt rip] - - VMOVDQ XWORD0, [INP + 0*16] - VMOVDQ XWORD1, [INP + 1*16] - VMOVDQ XWORD2, [INP + 2*16] - VMOVDQ XWORD3, [INP + 3*16] - - vpshufb XWORD0, XWORD0, X_BYTE_FLIP_MASK - vpshufb XWORD1, XWORD1, X_BYTE_FLIP_MASK - vpshufb XWORD2, XWORD2, X_BYTE_FLIP_MASK - vpshufb XWORD3, XWORD3, X_BYTE_FLIP_MASK - - jmp last_block_enter - -only_one_block: - - ;; load initial digest - mov a,[4*0 + CTX] - mov b,[4*1 + CTX] - mov c,[4*2 + CTX] - mov d,[4*3 + CTX] - mov e,[4*4 + CTX] - mov f,[4*5 + CTX] - mov g,[4*6 + CTX] - mov h,[4*7 + CTX] - - vmovdqa BYTE_FLIP_MASK, [PSHUFFLE_BYTE_FLIP_MASK wrt rip] - vmovdqa SHUF_00BA, [_SHUF_00BA wrt rip] - vmovdqa SHUF_DC00, [_SHUF_DC00 wrt rip] - - mov [rsp + _CTX], CTX - jmp do_last_block - -done_hash: -%ifndef LINUX - vmovdqa xmm6,[rsp + _XMM_SAVE + 0*16] - vmovdqa xmm7,[rsp + _XMM_SAVE + 1*16] - vmovdqa xmm8,[rsp + _XMM_SAVE + 2*16] - vmovdqa xmm9,[rsp + _XMM_SAVE + 3*16] - vmovdqa xmm10,[rsp + _XMM_SAVE + 4*16] - vmovdqa xmm11,[rsp + _XMM_SAVE + 5*16] - vmovdqa xmm12,[rsp + _XMM_SAVE + 6*16] - vmovdqa xmm13,[rsp + _XMM_SAVE + 7*16] -%endif - - mov rsp, [rsp + _RSP] - - pop r15 - pop r14 - pop r13 - pop r12 - pop rbp -%ifndef LINUX - pop rdi - pop rsi -%endif - pop rbx - - ret - -section .data -align 64 -K256: - dd 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 - dd 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 - dd 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 - dd 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 - dd 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 - dd 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 - dd 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 - dd 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 - dd 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc - dd 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc - dd 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da - dd 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da - dd 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 - dd 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 - dd 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 - dd 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 - dd 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 - dd 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 - dd 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 - dd 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 - dd 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 - dd 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 - dd 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 - dd 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 - dd 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 - dd 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 - dd 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 - dd 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 - dd 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 - dd 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 - dd 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 - dd 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 - -PSHUFFLE_BYTE_FLIP_MASK: - ddq 0x0c0d0e0f08090a0b0405060700010203,0x0c0d0e0f08090a0b0405060700010203 - -; shuffle xBxA -> 00BA -_SHUF_00BA: - ddq 0xFFFFFFFFFFFFFFFF0b0a090803020100,0xFFFFFFFFFFFFFFFF0b0a090803020100 - -; shuffle xDxC -> DC00 -_SHUF_DC00: - ddq 0x0b0a090803020100FFFFFFFFFFFFFFFF,0x0b0a090803020100FFFFFFFFFFFFFFFF diff --git a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_avx2_rorx8.asm b/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_avx2_rorx8.asm deleted file mode 100644 index 5d34107b65..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_avx2_rorx8.asm +++ /dev/null @@ -1,1507 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Copyright (c) 2012, Intel Corporation -; -; All rights reserved. -; -; Redistribution and use in source and binary forms, with or without -; modification, are permitted provided that the following conditions are -; met: -; -; * Redistributions of source code must retain the above copyright -; notice, this list of conditions and the following disclaimer. -; -; * Redistributions in binary form must reproduce the above copyright -; notice, this list of conditions and the following disclaimer in the -; documentation and/or other materials provided with the -; distribution. -; -; * Neither the name of the Intel Corporation nor the names of its -; contributors may be used to endorse or promote products derived from -; this software without specific prior written permission. -; -; -; THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY -; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR -; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; Example YASM command lines: -; Windows: yasm -Xvc -f x64 -rnasm -pnasm -o sha256_avx2_rorx8.obj -g cv8 sha256_avx2_rorx8.asm -; Linux: yasm -f x64 -f elf64 -X gnu -g dwarf2 -D LINUX -o sha256_avx2_rorx8.o sha256_avx2_rorx8.asm -; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; This code is described in an Intel White-Paper: -; "Fast SHA-256 Implementations on Intel Architecture Processors" -; -; To find it, surf to http://www.intel.com/p/en_US/embedded -; and search for that title. -; The paper is expected to be released roughly at the end of April, 2012 -; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; This code schedules 8 blocks at a time, with 1 lane per block -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Define Macros - -%macro addm 2 - add %2, %1 - mov %1, %2 -%endm - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%define TT0 ymm0 -%define TT1 ymm1 -%define TT2 ymm2 -%define TT3 ymm3 -%define TT4 ymm4 -%define TT5 ymm5 -%define TT6 ymm6 -%define TT7 ymm7 -%define TTMP1 ymm8 -%define TTMP2 ymm9 -%define TTMP3 ymm10 -%define TTMP4 ymm11 -%define TTMP5 ymm12 - -%ifdef LINUX -%define INP rdi ; 1st arg -%define CTX rsi ; 2nd arg -%define NUM_BLKS rdx ; 3rd arg -%define c ecx -%define d r8d -%define e edx ; dword version of NUM_BLKS -%define z3 edi ; dword version of INP -%else -%define INP rcx ; 1st arg -%define CTX rdx ; 2nd arg -%define NUM_BLKS r8 ; 3rd arg -%define c edi -%define d esi -%define e r8d ; dword version of NUM_BLKS -%define z3 ecx ; dword version of INP -%endif - -%define IDX rbp -%define TBL CTX - - -%define a eax -%define b ebx -%define f r9d -%define g r10d -%define h r11d -%xdefine old_h h - -%define T1 r12d -%define z0 r13d -%define z1 r14d -%define z1q r14 -%define z2 r15d - -_EXTRA_SIZE equ 32 -_KTMSG_SIZE equ 16*32 ; Second 3/4 of KTMSG overlaps TMSG -_TMSG_SIZE equ 64*32 -%ifdef LINUX -_XMM_SAVE_SIZE equ 0 -%else -_XMM_SAVE_SIZE equ 7*16 -%endif -_INP_END_SIZE equ 8 -_INP_SIZE equ 8 -_RND_SIZE equ 8 -_CTX_SIZE equ 8 -_IDX_LIMIT_SIZE equ 8 -_RSP_SIZE equ 8 - -;; KTMSG must overlap TMSG such that the second 3/4 of KTMSG overlaps the -;; first 3/4 of TMSG. (We onl need 16 words of TMSG at any time.) -_KTMSG equ _EXTRA_SIZE -_TMSG equ _KTMSG + _KTMSG_SIZE -_XMM_SAVE equ _TMSG + _TMSG_SIZE -_INP_END equ _XMM_SAVE + _XMM_SAVE_SIZE -_INP equ _INP_END + _INP_END_SIZE -_RND equ _INP + _INP_SIZE -_CTX equ _RND + _RND_SIZE -_IDX_LIMIT equ _CTX + _CTX_SIZE -_RSP equ _IDX_LIMIT + _IDX_LIMIT_SIZE -STACK_SIZE equ _RSP + _RSP_SIZE - -%macro ROTATE_ARGS 0 -%xdefine old_h h -%xdefine TMP_ h -%xdefine h g -%xdefine g f -%xdefine f e -%xdefine e d -%xdefine d c -%xdefine c b -%xdefine b a -%xdefine a TMP_ -%endm - -; PRORD reg, imm, tmp -%macro PRORD 3 -%define %%reg %1 -%define %%imm %2 -%define %%tmp %3 - vpslld %%tmp, %%reg, (32-(%%imm)) - vpsrld %%reg, %%reg, %%imm - vpor %%reg, %%reg, %%tmp -%endmacro - -; non-destructive -; PRORD_nd reg, imm, tmp, src -%macro PRORD_nd 4 -%define %%reg %1 -%define %%imm %2 -%define %%tmp %3 -%define %%src %4 - vpslld %%tmp, %%src, (32-(%%imm)) - vpsrld %%reg, %%src, %%imm - vpor %%reg, %%reg, %%tmp -%endmacro - -; PRORD dst/src, amt -%macro PRORD 2 - PRORD %1, %2, TTMP5 -%endmacro - -; PRORD_nd dst, src, amt -%macro PRORD_nd 3 - PRORD_nd %1, %3, TTMP5, %2 -%endmacro - -; TRANSPOSE8 r0, r1, r2, r3, r4, r5, r6, r7, t0, t1 -; "transpose" data in {r0...r7} using temps {t0...t1} -; Input looks like: {r0 r1 r2 r3 r4 r5 r6 r7} -; r0 = {a7 a6 a5 a4 a3 a2 a1 a0} -; r1 = {b7 b6 b5 b4 b3 b2 b1 b0} -; r2 = {c7 c6 c5 c4 c3 c2 c1 c0} -; r3 = {d7 d6 d5 d4 d3 d2 d1 d0} -; r4 = {e7 e6 e5 e4 e3 e2 e1 e0} -; r5 = {f7 f6 f5 f4 f3 f2 f1 f0} -; r6 = {g7 g6 g5 g4 g3 g2 g1 g0} -; r7 = {h7 h6 h5 h4 h3 h2 h1 h0} -; -; Output looks like: {r0 r1 r2 r3 r4 r5 r6 r7} -; r0 = {h0 g0 f0 e0 d0 c0 b0 a0} -; r1 = {h1 g1 f1 e1 d1 c1 b1 a1} -; r2 = {h2 g2 f2 e2 d2 c2 b2 a2} -; r3 = {h3 g3 f3 e3 d3 c3 b3 a3} -; r4 = {h4 g4 f4 e4 d4 c4 b4 a4} -; r5 = {h5 g5 f5 e5 d5 c5 b5 a5} -; r6 = {h6 g6 f6 e6 d6 c6 b6 a6} -; r7 = {h7 g7 f7 e7 d7 c7 b7 a7} -; -%macro TRANSPOSE8 10 -%define %%r0 %1 -%define %%r1 %2 -%define %%r2 %3 -%define %%r3 %4 -%define %%r4 %5 -%define %%r5 %6 -%define %%r6 %7 -%define %%r7 %8 -%define %%t0 %9 -%define %%t1 %10 - ; process top half (r0..r3) {a...d} - vshufps %%t0, %%r0, %%r1, 0x44 ; t0 = {b5 b4 a5 a4 b1 b0 a1 a0} - vshufps %%r0, %%r0, %%r1, 0xEE ; r0 = {b7 b6 a7 a6 b3 b2 a3 a2} - vshufps %%t1, %%r2, %%r3, 0x44 ; t1 = {d5 d4 c5 c4 d1 d0 c1 c0} - vshufps %%r2, %%r2, %%r3, 0xEE ; r2 = {d7 d6 c7 c6 d3 d2 c3 c2} - vshufps %%r3, %%t0, %%t1, 0xDD ; r3 = {d5 c5 b5 a5 d1 c1 b1 a1} - vshufps %%r1, %%r0, %%r2, 0x88 ; r1 = {d6 c6 b6 a6 d2 c2 b2 a2} - vshufps %%r0, %%r0, %%r2, 0xDD ; r0 = {d7 c7 b7 a7 d3 c3 b3 a3} - vshufps %%t0, %%t0, %%t1, 0x88 ; t0 = {d4 c4 b4 a4 d0 c0 b0 a0} - - ; use r2 in place of t0 - ; process bottom half (r4..r7) {e...h} - vshufps %%r2, %%r4, %%r5, 0x44 ; r2 = {f5 f4 e5 e4 f1 f0 e1 e0} - vshufps %%r4, %%r4, %%r5, 0xEE ; r4 = {f7 f6 e7 e6 f3 f2 e3 e2} - vshufps %%t1, %%r6, %%r7, 0x44 ; t1 = {h5 h4 g5 g4 h1 h0 g1 g0} - vshufps %%r6, %%r6, %%r7, 0xEE ; r6 = {h7 h6 g7 g6 h3 h2 g3 g2} - vshufps %%r7, %%r2, %%t1, 0xDD ; r7 = {h5 g5 f5 e5 h1 g1 f1 e1} - vshufps %%r5, %%r4, %%r6, 0x88 ; r5 = {h6 g6 f6 e6 h2 g2 f2 e2} - vshufps %%r4, %%r4, %%r6, 0xDD ; r4 = {h7 g7 f7 e7 h3 g3 f3 e3} - vshufps %%t1, %%r2, %%t1, 0x88 ; t1 = {h4 g4 f4 e4 h0 g0 f0 e0} - - vperm2f128 %%r6, %%r5, %%r1, 0x13 ; h6...a6 - vperm2f128 %%r2, %%r5, %%r1, 0x02 ; h2...a2 - vperm2f128 %%r5, %%r7, %%r3, 0x13 ; h5...a5 - vperm2f128 %%r1, %%r7, %%r3, 0x02 ; h1...a1 - vperm2f128 %%r7, %%r4, %%r0, 0x13 ; h7...a7 - vperm2f128 %%r3, %%r4, %%r0, 0x02 ; h3...a3 - vperm2f128 %%r4, %%t1, %%t0, 0x13 ; h4...a4 - vperm2f128 %%r0, %%t1, %%t0, 0x02 ; h0...a0 -%endmacro - -%macro SHA256_X8MS_8RNDS 0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%assign i 0 - - vmovdqa TT0, [rsp + _TMSG + IDX + 32*(i+1)] ;; TT0 = Load W[i-15] - vmovdqa TTMP2,[rsp + _TMSG + IDX + 32*(i+14)] ;; TTMP2 = Load W[i-2] - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - PRORD_nd TTMP1,TT0,7 ;; TTMP1 = W[i-15] nostrdb: ror 7 - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - vpsrld TT0,TT0,3 ;; TT0 = W[i-15] nostrdb: shr 3 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*0] ; h = k + w + h - - - or z3, c ; z3 = a|c ; MAJA - - vpxor TT0,TT0,TTMP1 ;; TT0 = (W[i-15] nostrdb: ror 7) xor (W[i-15] shr 3) - PRORD TTMP1,18-7 ;; TTMP1 = W[i-15] nostrdb: ror 18 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - vpxor TT0,TTMP1,TT0 ;; TT0 = s0 - PRORD_nd TTMP1,TTMP2,17 ;; TTMP1 = W[i-2] ror 17 - vpsrld TTMP2,TTMP2,10 ;; TTMP2 = W[i-2] shr 25 - vpxor TTMP2,TTMP1,TTMP2 ;; TTMP2 = (W[i-2] ror 17) xor (W[i-2] shr 25) - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - PRORD TTMP1,19-17 ;; TTMP1 = W[i-2] ror 19 - vpxor TTMP1,TTMP1,TTMP2 ;; TTMP1 = s1 - vpaddd TT0,TT0,TTMP1 ;; TT0 = s0 + s1 - vpaddd TT0,TT0,[rsp + _TMSG + IDX + 32*(i+9)] ;; add W[i-7] - vpaddd TT0,TT0,[rsp + _TMSG + IDX + 32*(i+0)] ;; add W[i-16] - vmovdqa [rsp + _TMSG + IDX + 16*32 + i*32], TT0 ;; Save TT0 to stack - vpaddd TT0, TT0, [TBL + IDX + (i+16)*32] - vmovdqa [rsp + _KTMSG + IDX + 16*32 + i*32], TT0 ;; Save TT0 to stack - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%assign i (i+1) - - vmovdqa TT1, [rsp + _TMSG + IDX + 32*(i+1)] ;; TT1 = Load W[i-15] - vmovdqa TTMP4,[rsp + _TMSG + IDX + 32*(i+14)] ;; TTMP4 = Load W[i-2] - - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - PRORD_nd TTMP3,TT1,7 ;; TTMP3 = W[i-15] nostrdb: ror 7 - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - vpsrld TT1,TT1,3 ;; TT1 = W[i-15] nostrdb: shr 3 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*1] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - vpxor TT1,TT1,TTMP3 ;; TT1 = (W[i-15] nostrdb: ror 7) xor (W[i-15] shr 3) - PRORD TTMP3,18-7 ;; TTMP3 = W[i-15] nostrdb: ror 18 - vpxor TT1,TTMP3,TT1 ;; TT1 = s0 - PRORD_nd TTMP3,TTMP4,17 ;; TTMP3 = W[i-2] ror 17 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - vpsrld TTMP4,TTMP4,10 ;; TTMP4 = W[i-2] shr 25 - vpxor TTMP4,TTMP3,TTMP4 ;; TTMP4 = (W[i-2] ror 17) xor (W[i-2] shr 25) - PRORD TTMP3,19-17 ;; TTMP3 = W[i-2] ror 19 - vpxor TTMP3,TTMP3,TTMP4 ;; TTMP3 = s1 - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - vpaddd TT1,TT1,TTMP3 ;; TT1 = s0 + s1 - vpaddd TT1,TT1,[rsp + _TMSG + IDX + 32*(i+9)] ;; add W[i-7] - vpaddd TT1,TT1,[rsp + _TMSG + IDX + 32*(i+0)] ;; add W[i-16] - vmovdqa [rsp + _TMSG + IDX + 16*32 + i*32], TT1 ;; Save TT1 to stack - vpaddd TT1, TT1, [TBL + IDX + (i+16)*32] - vmovdqa [rsp + _KTMSG + IDX + 16*32 + i*32], TT1 ;; Save TT1 to stack - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%assign i (i+1) - - vmovdqa TT2, [rsp + _TMSG + IDX + 32*(i+1)] ;; TT2 = Load W[i-15] - vmovdqa TTMP2,[rsp + _TMSG + IDX + 32*(i+14)] ;; TTMP2 = Load W[i-2] - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - PRORD_nd TTMP1,TT2,7 ;; TTMP1 = W[i-15] nostrdb: ror 7 - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - vpsrld TT2,TT2,3 ;; TT2 = W[i-15] nostrdb: shr 3 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*2] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - vpxor TT2,TT2,TTMP1 ;; TT2 = (W[i-15] nostrdb: ror 7) xor (W[i-15] shr 3) - PRORD TTMP1,18-7 ;; TTMP1 = W[i-15] nostrdb: ror 18 - vpxor TT2,TTMP1,TT2 ;; TT2 = s0 - PRORD_nd TTMP1,TTMP2,17 ;; TTMP1 = W[i-2] ror 17 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - vpsrld TTMP2,TTMP2,10 ;; TTMP2 = W[i-2] shr 25 - vpxor TTMP2,TTMP1,TTMP2 ;; TTMP2 = (W[i-2] ror 17) xor (W[i-2] shr 25) - PRORD TTMP1,19-17 ;; TTMP1 = W[i-2] ror 19 - vpxor TTMP1,TTMP1,TTMP2 ;; TTMP1 = s1 - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - vpaddd TT2,TT2,TTMP1 ;; TT2 = s0 + s1 - vpaddd TT2,TT2,[rsp + _TMSG + IDX + 32*(i+9)] ;; add W[i-7] - vpaddd TT2,TT2,[rsp + _TMSG + IDX + 32*(i+0)] ;; add W[i-16] - vmovdqa [rsp + _TMSG + IDX + 16*32 + i*32], TT2 ;; Save TT2 to stack - vpaddd TT2, TT2, [TBL + IDX + (i+16)*32] - vmovdqa [rsp + _KTMSG + IDX + 16*32 + i*32], TT2 ;; Save TT2 to stack - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - - ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%assign i (i+1) - - vmovdqa TT3, [rsp + _TMSG + IDX + 32*(i+1)] ;; TT3 = Load W[i-15] - vmovdqa TTMP4,[rsp + _TMSG + IDX + 32*(i+14)] ;; TTMP4 = Load W[i-2] - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - PRORD_nd TTMP3,TT3,7 ;; TTMP3 = W[i-15] nostrdb: ror 7 - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - vpsrld TT3,TT3,3 ;; TT3 = W[i-15] nostrdb: shr 3 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*3] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - vpxor TT3,TT3,TTMP3 ;; TT3 = (W[i-15] nostrdb: ror 7) xor (W[i-15] shr 3) - PRORD TTMP3,18-7 ;; TTMP3 = W[i-15] nostrdb: ror 18 - vpxor TT3,TTMP3,TT3 ;; TT3 = s0 - PRORD_nd TTMP3,TTMP4,17 ;; TTMP3 = W[i-2] ror 17 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - vpsrld TTMP4,TTMP4,10 ;; TTMP4 = W[i-2] shr 25 - vpxor TTMP4,TTMP3,TTMP4 ;; TTMP4 = (W[i-2] ror 17) xor (W[i-2] shr 25) - PRORD TTMP3,19-17 ;; TTMP3 = W[i-2] ror 19 - vpxor TTMP3,TTMP3,TTMP4 ;; TTMP3 = s1 - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - vpaddd TT3,TT3,TTMP3 ;; TT3 = s0 + s1 - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - vpaddd TT3,TT3,[rsp + _TMSG + IDX + 32*(i+9)] ;; add W[i-7] - vpaddd TT3,TT3,[rsp + _TMSG + IDX + 32*(i+0)] ;; add W[i-16] - vmovdqa [rsp + _TMSG + IDX + 16*32 + i*32], TT3 ;; Save TT3 to stack - vpaddd TT3, TT3, [TBL + IDX + (i+16)*32] - vmovdqa [rsp + _KTMSG + IDX + 16*32 + i*32], TT3 ;; Save TT3 to stack - - add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%assign i (i+1) - - vmovdqa TT4, [rsp + _TMSG + IDX + 32*(i+1)] ;; TT4 = Load W[i-15] - vmovdqa TTMP2,[rsp + _TMSG + IDX + 32*(i+14)] ;; TTMP2 = Load W[i-2] - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - PRORD_nd TTMP1,TT4,7 ;; TTMP1 = W[i-15] nostrdb: ror 7 - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - vpsrld TT4,TT4,3 ;; TT4 = W[i-15] nostrdb: shr 3 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*4] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - vpxor TT4,TT4,TTMP1 ;; TT4 = (W[i-15] nostrdb: ror 7) xor (W[i-15] shr 3) - PRORD TTMP1,18-7 ;; TTMP1 = W[i-15] nostrdb: ror 18 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - vpxor TT4,TTMP1,TT4 ;; TT4 = s0 - PRORD_nd TTMP1,TTMP2,17 ;; TTMP1 = W[i-2] ror 17 - vpsrld TTMP2,TTMP2,10 ;; TTMP2 = W[i-2] shr 25 - vpxor TTMP2,TTMP1,TTMP2 ;; TTMP2 = (W[i-2] ror 17) xor (W[i-2] shr 25) - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - PRORD TTMP1,19-17 ;; TTMP1 = W[i-2] ror 19 - vpxor TTMP1,TTMP1,TTMP2 ;; TTMP1 = s1 - vpaddd TT4,TT4,TTMP1 ;; TT4 = s0 + s1 - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - vpaddd TT4,TT4,[rsp + _TMSG + IDX + 32*(i+9)] ;; add W[i-7] - vpaddd TT4,TT4,[rsp + _TMSG + IDX + 32*(i+0)] ;; add W[i-16] - vmovdqa [rsp + _TMSG + IDX + 16*32 + i*32], TT4 ;; Save TT4 to stack - vpaddd TT4, TT4, [TBL + IDX + (i+16)*32] - vmovdqa [rsp + _KTMSG + IDX + 16*32 + i*32], TT4 ;; Save TT4 to stack - - ROTATE_ARGS -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 5 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%assign i (i+1) - - vmovdqa TT5, [rsp + _TMSG + IDX + 32*(i+1)] ;; TT5 = Load W[i-15] - vmovdqa TTMP4,[rsp + _TMSG + IDX + 32*(i+14)] ;; TTMP4 = Load W[i-2] - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - PRORD_nd TTMP3,TT5,7 ;; TTMP3 = W[i-15] nostrdb: ror 7 - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - vpsrld TT5,TT5,3 ;; TT5 = W[i-15] nostrdb: shr 3 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*5] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - vpxor TT5,TT5,TTMP3 ;; TT5 = (W[i-15] nostrdb: ror 7) xor (W[i-15] shr 3) - PRORD TTMP3,18-7 ;; TTMP3 = W[i-15] nostrdb: ror 18 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - vpxor TT5,TTMP3,TT5 ;; TT5 = s0 - PRORD_nd TTMP3,TTMP4,17 ;; TTMP3 = W[i-2] ror 17 - vpsrld TTMP4,TTMP4,10 ;; TTMP4 = W[i-2] shr 25 - vpxor TTMP4,TTMP3,TTMP4 ;; TTMP4 = (W[i-2] ror 17) xor (W[i-2] shr 25) - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - PRORD TTMP3,19-17 ;; TTMP3 = W[i-2] ror 19 - vpxor TTMP3,TTMP3,TTMP4 ;; TTMP3 = s1 - vpaddd TT5,TT5,TTMP3 ;; TT5 = s0 + s1 - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - vpaddd TT5,TT5,[rsp + _TMSG + IDX + 32*(i+9)] ;; add W[i-7] - vpaddd TT5,TT5,[rsp + _TMSG + IDX + 32*(i+0)] ;; add W[i-16] - vmovdqa [rsp + _TMSG + IDX + 16*32 + i*32], TT5 ;; Save TT5 to stack - vpaddd TT5, TT5, [TBL + IDX + (i+16)*32] - vmovdqa [rsp + _KTMSG + IDX + 16*32 + i*32], TT5 ;; Save TT5 to stack - - ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%assign i (i+1) - - vmovdqa TT6, [rsp + _TMSG + IDX + 32*(i+1)] ;; TT6 = Load W[i-15] - vmovdqa TTMP2,[rsp + _TMSG + IDX + 32*(i+14)] ;; TTMP2 = Load W[i-2] - - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - PRORD_nd TTMP1,TT6,7 ;; TTMP1 = W[i-15] nostrdb: ror 7 - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - vpsrld TT6,TT6,3 ;; TT6 = W[i-15] nostrdb: shr 3 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*6] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - vpxor TT6,TT6,TTMP1 ;; TT6 = (W[i-15] nostrdb: ror 7) xor (W[i-15] shr 3) - PRORD TTMP1,18-7 ;; TTMP1 = W[i-15] nostrdb: ror 18 - vpxor TT6,TTMP1,TT6 ;; TT6 = s0 - PRORD_nd TTMP1,TTMP2,17 ;; TTMP1 = W[i-2] ror 17 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - vpsrld TTMP2,TTMP2,10 ;; TTMP2 = W[i-2] shr 25 - vpxor TTMP2,TTMP1,TTMP2 ;; TTMP2 = (W[i-2] ror 17) xor (W[i-2] shr 25) - PRORD TTMP1,19-17 ;; TTMP1 = W[i-2] ror 19 - vpxor TTMP1,TTMP1,TTMP2 ;; TTMP1 = s1 - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - vpaddd TT6,TT6,TTMP1 ;; TT6 = s0 + s1 - vpaddd TT6,TT6,[rsp + _TMSG + IDX + 32*(i+9)] ;; add W[i-7] - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - vpaddd TT6,TT6,[rsp + _TMSG + IDX + 32*(i+0)] ;; add W[i-16] - vmovdqa [rsp + _TMSG + IDX + 16*32 + i*32], TT6 ;; Save TT6 to stack - vpaddd TT6, TT6, [TBL + IDX + (i+16)*32] - vmovdqa [rsp + _KTMSG + IDX + 16*32 + i*32], TT6 ;; Save TT6 to stack - - ROTATE_ARGS -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%assign i (i+1) - - vmovdqa TT7, [rsp + _TMSG + IDX + 32*(i+1)] ;; TT7 = Load W[i-15] - vmovdqa TTMP4,[rsp + _TMSG + IDX + 32*(i+14)] ;; TTMP4 = Load W[i-2] - - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - PRORD_nd TTMP3,TT7,7 ;; TTMP3 = W[i-15] nostrdb: ror 7 - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - - vpsrld TT7,TT7,3 ;; TT7 = W[i-15] nostrdb: shr 3 - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - vpxor TT7,TT7,TTMP3 ;; TT7 = (W[i-15] nostrdb: ror 7) xor (W[i-15] shr 3) - PRORD TTMP3,18-7 ;; TTMP3 = W[i-15] nostrdb: ror 18 - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*7] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - vpxor TT7,TTMP3,TT7 ;; TT7 = s0 - PRORD_nd TTMP3,TTMP4,17 ;; TTMP3 = W[i-2] ror 17 - vpsrld TTMP4,TTMP4,10 ;; TTMP4 = W[i-2] shr 25 - vpxor TTMP4,TTMP3,TTMP4 ;; TTMP4 = (W[i-2] ror 17) xor (W[i-2] shr 25) - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - PRORD TTMP3,19-17 ;; TTMP3 = W[i-2] ror 19 - vpxor TTMP3,TTMP3,TTMP4 ;; TTMP3 = s1 - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - vpaddd TT7,TT7,TTMP3 ;; TT7 = s0 + s1 - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - vpaddd TT7,TT7,[rsp + _TMSG + IDX + 32*(i+9)] ;; add W[i-7] - add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - vpaddd TT7,TT7,[rsp + _TMSG + IDX + 32*(i+0)] ;; add W[i-16] - add h, z3 ; h = t1 + S0 + MAJ ; -- - - vmovdqa [rsp + _TMSG + IDX + 16*32 + i*32], TT7 ;; Save TT7 to stack - vpaddd TT7, TT7, [TBL + IDX + (i+16)*32] - vmovdqa [rsp + _KTMSG + IDX + 16*32 + i*32], TT7 ;; Save TT7 to stack - ROTATE_ARGS - - -%endm - -%macro DO_8ROUNDS 0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*0] ; h = k + w + h - - or z3, c ; z3 = a|c ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*1] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*2] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*3] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*4] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 5 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*5] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*6] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - ;add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - ;add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND N + 7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - add old_h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - mov z2, f ; z2 = f ; CH - rorx z0, e, 25 ; z0 = e >> 25 ; S1A - rorx z1, e, 11 ; z1 = e >> 11 ; S1B - xor z2, g ; z2 = f^g ; CH - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ; S1 - rorx z1, e, 6 ; z1 = (e >> 6) ; S1 - and z2, e ; z2 = (f^g)&e ; CH - add old_h, z3 ; h = t1 + S0 + MAJ ; -- - - - xor z0, z1 ; z0 = (e>>25) ^ (e>>11) ^ (e>>6) ; S1 - rorx T1, a, 13 ; T1 = a >> 13 ; S0B - xor z2, g ; z2 = CH = ((f^g)&e)^g ; CH - rorx z1, a, 22 ; z1 = a >> 22 ; S0A - mov z3, a ; z3 = a ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ; S0 - rorx T1, a, 2 ; T1 = (a >> 2) ; S0 - add h, dword[rsp + _KTMSG + IDX + 32*7] ; h = k + w + h - or z3, c ; z3 = a|c ; MAJA - - xor z1, T1 ; z1 = (a>>22) ^ (a>>13) ^ (a>>2) ; S0 - mov T1, a ; T1 = a ; MAJB - and z3, b ; z3 = (a|c)&b ; MAJA - and T1, c ; T1 = a&c ; MAJB - add z2, z0 ; z2 = S1 + CH ; -- - - - add d, h ; d = k + w + h + d ; -- - or z3, T1 ; z3 = MAJ = (a|c)&b)|(a&c) ; MAJ - add h, z1 ; h = k + w + h + S0 ; -- - - add d, z2 ; d = k + w + h + d + S1 + CH = d + t1 ; -- - - - add h, z2 ; h = k + w + h + S0 + S1 + CH = t1 + S0 ; -- - - add h, z3 ; h = t1 + S0 + MAJ ; -- - - ROTATE_ARGS - - -%endm - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; void sha256_rorx_x8ms(void *input_data, UINT32 digest[8], UINT64 num_blks) -;; arg 1 : pointer to input data -;; arg 2 : pointer to digest -;; arg 3 : Num blocks -section .text -global sha256_rorx_x8ms -align 32 -sha256_rorx_x8ms: - push rbx -%ifndef LINUX - push rsi - push rdi -%endif - push rbp - push r12 - push r13 - push r14 - push r15 - - mov rax, rsp - sub rsp,STACK_SIZE - and rsp,-32 - mov [rsp + _RSP], rax - - mov qword [rsp + _IDX_LIMIT], 32 - -%ifndef LINUX - vmovdqa [rsp + _XMM_SAVE + 0*16],xmm6 - vmovdqa [rsp + _XMM_SAVE + 1*16],xmm7 - vmovdqa [rsp + _XMM_SAVE + 2*16],xmm8 - vmovdqa [rsp + _XMM_SAVE + 3*16],xmm9 - vmovdqa [rsp + _XMM_SAVE + 4*16],xmm10 - vmovdqa [rsp + _XMM_SAVE + 5*16],xmm11 - vmovdqa [rsp + _XMM_SAVE + 6*16],xmm12 -%endif - - shl NUM_BLKS, 6 ; convert to bytes - jz done_hash - lea NUM_BLKS, [NUM_BLKS + INP - 8*64] - mov [rsp + _INP_END], NUM_BLKS - mov [rsp + _CTX], CTX - - cmp NUM_BLKS, INP - jb less_than_8_blocks - - ;; load initial digest - mov a,[4*0 + CTX] - mov b,[4*1 + CTX] - mov c,[4*2 + CTX] - mov d,[4*3 + CTX] - mov e,[4*4 + CTX] - mov f,[4*5 + CTX] - mov g,[4*6 + CTX] - mov h,[4*7 + CTX] - - -eight_blocks_loop: - -align 32 - - lea TBL,[K256_SIMD wrt rip] - - vmovdqa TTMP3, [PSHUFFLE_BYTE_FLIP_MASK wrt rip] -;; Load 8 blocks of message and transpose and save to stack -%assign i 0 -%rep 2 - vmovups TT0,[INP+0*64+i*32] - vpshufb TT0, TT0, TTMP3 - vmovups TT1,[INP+1*64+i*32] - vpshufb TT1, TT1, TTMP3 - vmovups TT2,[INP+2*64+i*32] - vpshufb TT2, TT2, TTMP3 - vmovups TT3,[INP+3*64+i*32] - vpshufb TT3, TT3, TTMP3 - vmovups TT4,[INP+4*64+i*32] - vpshufb TT4, TT4, TTMP3 - vmovups TT5,[INP+5*64+i*32] - vpshufb TT5, TT5, TTMP3 - vmovups TT6,[INP+6*64+i*32] - vpshufb TT6, TT6, TTMP3 - vmovups TT7,[INP+7*64+i*32] - vpshufb TT7, TT7, TTMP3 - - TRANSPOSE8 TT0, TT1, TT2, TT3, TT4, TT5, TT6, TT7, TTMP1, TTMP2 - - vmovdqa [rsp + _TMSG + 0*32 + i*8*32], TT0 - vpaddd TT0, TT0, [TBL + 0*32 + i*8*32] - vmovdqa [rsp + _KTMSG + 0*32 + i*8*32], TT0 - - vmovdqa [rsp + _TMSG + 1*32 + i*8*32], TT1 - vpaddd TT1, TT1, [TBL + 1*32 + i*8*32] - vmovdqa [rsp + _KTMSG + 1*32 + i*8*32], TT1 - - vmovdqa [rsp + _TMSG + 2*32 + i*8*32], TT2 - vpaddd TT2, TT2, [TBL + 2*32 + i*8*32] - vmovdqa [rsp + _KTMSG + 2*32 + i*8*32], TT2 - - vmovdqa [rsp + _TMSG + 3*32 + i*8*32], TT3 - vpaddd TT3, TT3, [TBL + 3*32 + i*8*32] - vmovdqa [rsp + _KTMSG + 3*32 + i*8*32], TT3 - - vmovdqa [rsp + _TMSG + 4*32 + i*8*32], TT4 - vpaddd TT4, TT4, [TBL + 4*32 + i*8*32] - vmovdqa [rsp + _KTMSG + 4*32 + i*8*32], TT4 - - vmovdqa [rsp + _TMSG + 5*32 + i*8*32], TT5 - vpaddd TT5, TT5, [TBL + 5*32 + i*8*32] - vmovdqa [rsp + _KTMSG + 5*32 + i*8*32], TT5 - - vmovdqa [rsp + _TMSG + 6*32 + i*8*32], TT6 - vpaddd TT6, TT6, [TBL + 6*32 + i*8*32] - vmovdqa [rsp + _KTMSG + 6*32 + i*8*32], TT6 - - vmovdqa [rsp + _TMSG + 7*32 + i*8*32], TT7 - vpaddd TT7, TT7, [TBL + 7*32 + i*8*32] - vmovdqa [rsp + _KTMSG + 7*32 + i*8*32], TT7 - - -%assign i (i+1) -%endrep - -after_load: - - ;; Save Input Msg pointer to stack - add INP, 8*64 - mov [rsp + _INP], INP - - ;; Initialize Msg Index to Zero - xor IDX, IDX - -sha256_x8ms_8rnds_loop: - - ;; Perform Message Scheduling of the next 8 rounds (from round 17 to 64) - ;; Also perform compress function for first block from round 1 to 16. - SHA256_X8MS_8RNDS - - - ;; Check how many rounds have been performed - add IDX, 8*32 - cmp IDX, 6 * 8*32 - jne sha256_x8ms_8rnds_loop - - mov CTX, [rsp + _CTX] - -compress_block_loop: - - ;; Perform 8 rounds of compression - DO_8ROUNDS - - add IDX, 8*32 - cmp IDX, 8 * 8*32 - jb compress_block_loop - - ;; Update the State when block compression has been completed - addm [4*0 + CTX],a - addm [4*1 + CTX],b - addm [4*2 + CTX],c - addm [4*3 + CTX],d - addm [4*4 + CTX],e - addm [4*5 + CTX],f - addm [4*6 + CTX],g - addm [4*7 + CTX],h - - sub IDX, (8 * 8*32) - 4 - - - ;; Check if the 8th block has been compressed - cmp IDX, [rsp + _IDX_LIMIT] - jne compress_block_loop - - ;; Check if the last set of 8 blocks has been processed - mov INP, [rsp + _INP] - cmp INP, [rsp + _INP_END] - jbe eight_blocks_loop - -near_end_of_page: - mov z1q, [rsp + _INP_END] - sub z1q, INP - ; z1q is minus number of NULL blocks left out of 8 - cmp z1q, -(8*64) - jle done_hash - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ; z1q is -1...-7 (*64) meaning we need to process 7...1 more blocks - add INP, z1q - - lea TBL,[K256_SIMD wrt rip] - sar z1q, 4 ; convert to blks * 4 - - vmovdqa TTMP3, [PSHUFFLE_BYTE_FLIP_MASK wrt rip] -;; Load 8 blocks of message and transpose and save to stack -%assign i 0 -%rep 2 - vmovups TT0,[INP+0*64+i*32] - vpshufb TT0, TT0, TTMP3 - vmovups TT1,[INP+1*64+i*32] - vpshufb TT1, TT1, TTMP3 - vmovups TT2,[INP+2*64+i*32] - vpshufb TT2, TT2, TTMP3 - vmovups TT3,[INP+3*64+i*32] - vpshufb TT3, TT3, TTMP3 - vmovups TT4,[INP+4*64+i*32] - vpshufb TT4, TT4, TTMP3 - vmovups TT5,[INP+5*64+i*32] - vpshufb TT5, TT5, TTMP3 - vmovups TT6,[INP+6*64+i*32] - vpshufb TT6, TT6, TTMP3 - vmovups TT7,[INP+7*64+i*32] - vpshufb TT7, TT7, TTMP3 - - TRANSPOSE8 TT0, TT1, TT2, TT3, TT4, TT5, TT6, TT7, TTMP1, TTMP2 - - vmovdqu [rsp + z1q + _TMSG + 0*32 + i*8*32], TT0 - vpaddd TT0, TT0, [TBL + 0*32 + i*8*32] - vmovdqu [rsp + z1q + _KTMSG + 0*32 + i*8*32], TT0 - - vmovdqu [rsp + z1q + _TMSG + 1*32 + i*8*32], TT1 - vpaddd TT1, TT1, [TBL + 1*32 + i*8*32] - vmovdqu [rsp + z1q + _KTMSG + 1*32 + i*8*32], TT1 - - vmovdqu [rsp + z1q + _TMSG + 2*32 + i*8*32], TT2 - vpaddd TT2, TT2, [TBL + 2*32 + i*8*32] - vmovdqu [rsp + z1q + _KTMSG + 2*32 + i*8*32], TT2 - - vmovdqu [rsp + z1q + _TMSG + 3*32 + i*8*32], TT3 - vpaddd TT3, TT3, [TBL + 3*32 + i*8*32] - vmovdqu [rsp + z1q + _KTMSG + 3*32 + i*8*32], TT3 - - vmovdqu [rsp + z1q + _TMSG + 4*32 + i*8*32], TT4 - vpaddd TT4, TT4, [TBL + 4*32 + i*8*32] - vmovdqu [rsp + z1q + _KTMSG + 4*32 + i*8*32], TT4 - - vmovdqu [rsp + z1q + _TMSG + 5*32 + i*8*32], TT5 - vpaddd TT5, TT5, [TBL + 5*32 + i*8*32] - vmovdqu [rsp + z1q + _KTMSG + 5*32 + i*8*32], TT5 - - vmovdqu [rsp + z1q + _TMSG + 6*32 + i*8*32], TT6 - vpaddd TT6, TT6, [TBL + 6*32 + i*8*32] - vmovdqu [rsp + z1q + _KTMSG + 6*32 + i*8*32], TT6 - - vmovdqu [rsp + z1q + _TMSG + 7*32 + i*8*32], TT7 - vpaddd TT7, TT7, [TBL + 7*32 + i*8*32] - vmovdqu [rsp + z1q + _KTMSG + 7*32 + i*8*32], TT7 - -%assign i (i+1) -%endrep - - add z1q, 4*8 ; z1q = 4 * (number of blocks to proc) - mov [rsp + _IDX_LIMIT], z1q - - jmp after_load - - -less_than_8_blocks: - ;; load initial digest - mov a,[4*0 + CTX] - mov b,[4*1 + CTX] - mov c,[4*2 + CTX] - mov d,[4*3 + CTX] - mov e,[4*4 + CTX] - mov f,[4*5 + CTX] - mov g,[4*6 + CTX] - mov h,[4*7 + CTX] - - mov z1q, INP - and z1q, 4095 ; offset into page - cmp z1q, 4096 - (8*64) - ja near_end_of_page - -near_start_of_page: - mov z1q, [rsp + _INP_END] - sub z1q, INP - sar z1q, 4 ; convert to blks * 4 - add z1q, 4*8 ; z1q = 4 * (number of blocks to proc) - mov [rsp + _IDX_LIMIT], z1q - jmp eight_blocks_loop - -done_hash: -%ifndef LINUX - vmovdqa xmm6,[rsp + _XMM_SAVE + 0*16] - vmovdqa xmm7,[rsp + _XMM_SAVE + 1*16] - vmovdqa xmm8,[rsp + _XMM_SAVE + 2*16] - vmovdqa xmm9,[rsp + _XMM_SAVE + 3*16] - vmovdqa xmm10,[rsp + _XMM_SAVE + 4*16] - vmovdqa xmm11,[rsp + _XMM_SAVE + 5*16] - vmovdqa xmm12,[rsp + _XMM_SAVE + 6*16] -%endif - - mov rsp, [rsp + _RSP] - - pop r15 - pop r14 - pop r13 - pop r12 - pop rbp -%ifndef LINUX - pop rdi - pop rsi -%endif - pop rbx - - ret - -section .data -align 64 -K256_SIMD: - ddq 0x428a2f98428a2f98428a2f98428a2f98,0x428a2f98428a2f98428a2f98428a2f98 - ddq 0x71374491713744917137449171374491,0x71374491713744917137449171374491 - ddq 0xb5c0fbcfb5c0fbcfb5c0fbcfb5c0fbcf,0xb5c0fbcfb5c0fbcfb5c0fbcfb5c0fbcf - ddq 0xe9b5dba5e9b5dba5e9b5dba5e9b5dba5,0xe9b5dba5e9b5dba5e9b5dba5e9b5dba5 - ddq 0x3956c25b3956c25b3956c25b3956c25b,0x3956c25b3956c25b3956c25b3956c25b - ddq 0x59f111f159f111f159f111f159f111f1,0x59f111f159f111f159f111f159f111f1 - ddq 0x923f82a4923f82a4923f82a4923f82a4,0x923f82a4923f82a4923f82a4923f82a4 - ddq 0xab1c5ed5ab1c5ed5ab1c5ed5ab1c5ed5,0xab1c5ed5ab1c5ed5ab1c5ed5ab1c5ed5 - ddq 0xd807aa98d807aa98d807aa98d807aa98,0xd807aa98d807aa98d807aa98d807aa98 - ddq 0x12835b0112835b0112835b0112835b01,0x12835b0112835b0112835b0112835b01 - ddq 0x243185be243185be243185be243185be,0x243185be243185be243185be243185be - ddq 0x550c7dc3550c7dc3550c7dc3550c7dc3,0x550c7dc3550c7dc3550c7dc3550c7dc3 - ddq 0x72be5d7472be5d7472be5d7472be5d74,0x72be5d7472be5d7472be5d7472be5d74 - ddq 0x80deb1fe80deb1fe80deb1fe80deb1fe,0x80deb1fe80deb1fe80deb1fe80deb1fe - ddq 0x9bdc06a79bdc06a79bdc06a79bdc06a7,0x9bdc06a79bdc06a79bdc06a79bdc06a7 - ddq 0xc19bf174c19bf174c19bf174c19bf174,0xc19bf174c19bf174c19bf174c19bf174 - ddq 0xe49b69c1e49b69c1e49b69c1e49b69c1,0xe49b69c1e49b69c1e49b69c1e49b69c1 - ddq 0xefbe4786efbe4786efbe4786efbe4786,0xefbe4786efbe4786efbe4786efbe4786 - ddq 0x0fc19dc60fc19dc60fc19dc60fc19dc6,0x0fc19dc60fc19dc60fc19dc60fc19dc6 - ddq 0x240ca1cc240ca1cc240ca1cc240ca1cc,0x240ca1cc240ca1cc240ca1cc240ca1cc - ddq 0x2de92c6f2de92c6f2de92c6f2de92c6f,0x2de92c6f2de92c6f2de92c6f2de92c6f - ddq 0x4a7484aa4a7484aa4a7484aa4a7484aa,0x4a7484aa4a7484aa4a7484aa4a7484aa - ddq 0x5cb0a9dc5cb0a9dc5cb0a9dc5cb0a9dc,0x5cb0a9dc5cb0a9dc5cb0a9dc5cb0a9dc - ddq 0x76f988da76f988da76f988da76f988da,0x76f988da76f988da76f988da76f988da - ddq 0x983e5152983e5152983e5152983e5152,0x983e5152983e5152983e5152983e5152 - ddq 0xa831c66da831c66da831c66da831c66d,0xa831c66da831c66da831c66da831c66d - ddq 0xb00327c8b00327c8b00327c8b00327c8,0xb00327c8b00327c8b00327c8b00327c8 - ddq 0xbf597fc7bf597fc7bf597fc7bf597fc7,0xbf597fc7bf597fc7bf597fc7bf597fc7 - ddq 0xc6e00bf3c6e00bf3c6e00bf3c6e00bf3,0xc6e00bf3c6e00bf3c6e00bf3c6e00bf3 - ddq 0xd5a79147d5a79147d5a79147d5a79147,0xd5a79147d5a79147d5a79147d5a79147 - ddq 0x06ca635106ca635106ca635106ca6351,0x06ca635106ca635106ca635106ca6351 - ddq 0x14292967142929671429296714292967,0x14292967142929671429296714292967 - ddq 0x27b70a8527b70a8527b70a8527b70a85,0x27b70a8527b70a8527b70a8527b70a85 - ddq 0x2e1b21382e1b21382e1b21382e1b2138,0x2e1b21382e1b21382e1b21382e1b2138 - ddq 0x4d2c6dfc4d2c6dfc4d2c6dfc4d2c6dfc,0x4d2c6dfc4d2c6dfc4d2c6dfc4d2c6dfc - ddq 0x53380d1353380d1353380d1353380d13,0x53380d1353380d1353380d1353380d13 - ddq 0x650a7354650a7354650a7354650a7354,0x650a7354650a7354650a7354650a7354 - ddq 0x766a0abb766a0abb766a0abb766a0abb,0x766a0abb766a0abb766a0abb766a0abb - ddq 0x81c2c92e81c2c92e81c2c92e81c2c92e,0x81c2c92e81c2c92e81c2c92e81c2c92e - ddq 0x92722c8592722c8592722c8592722c85,0x92722c8592722c8592722c8592722c85 - ddq 0xa2bfe8a1a2bfe8a1a2bfe8a1a2bfe8a1,0xa2bfe8a1a2bfe8a1a2bfe8a1a2bfe8a1 - ddq 0xa81a664ba81a664ba81a664ba81a664b,0xa81a664ba81a664ba81a664ba81a664b - ddq 0xc24b8b70c24b8b70c24b8b70c24b8b70,0xc24b8b70c24b8b70c24b8b70c24b8b70 - ddq 0xc76c51a3c76c51a3c76c51a3c76c51a3,0xc76c51a3c76c51a3c76c51a3c76c51a3 - ddq 0xd192e819d192e819d192e819d192e819,0xd192e819d192e819d192e819d192e819 - ddq 0xd6990624d6990624d6990624d6990624,0xd6990624d6990624d6990624d6990624 - ddq 0xf40e3585f40e3585f40e3585f40e3585,0xf40e3585f40e3585f40e3585f40e3585 - ddq 0x106aa070106aa070106aa070106aa070,0x106aa070106aa070106aa070106aa070 - ddq 0x19a4c11619a4c11619a4c11619a4c116,0x19a4c11619a4c11619a4c11619a4c116 - ddq 0x1e376c081e376c081e376c081e376c08,0x1e376c081e376c081e376c081e376c08 - ddq 0x2748774c2748774c2748774c2748774c,0x2748774c2748774c2748774c2748774c - ddq 0x34b0bcb534b0bcb534b0bcb534b0bcb5,0x34b0bcb534b0bcb534b0bcb534b0bcb5 - ddq 0x391c0cb3391c0cb3391c0cb3391c0cb3,0x391c0cb3391c0cb3391c0cb3391c0cb3 - ddq 0x4ed8aa4a4ed8aa4a4ed8aa4a4ed8aa4a,0x4ed8aa4a4ed8aa4a4ed8aa4a4ed8aa4a - ddq 0x5b9cca4f5b9cca4f5b9cca4f5b9cca4f,0x5b9cca4f5b9cca4f5b9cca4f5b9cca4f - ddq 0x682e6ff3682e6ff3682e6ff3682e6ff3,0x682e6ff3682e6ff3682e6ff3682e6ff3 - ddq 0x748f82ee748f82ee748f82ee748f82ee,0x748f82ee748f82ee748f82ee748f82ee - ddq 0x78a5636f78a5636f78a5636f78a5636f,0x78a5636f78a5636f78a5636f78a5636f - ddq 0x84c8781484c8781484c8781484c87814,0x84c8781484c8781484c8781484c87814 - ddq 0x8cc702088cc702088cc702088cc70208,0x8cc702088cc702088cc702088cc70208 - ddq 0x90befffa90befffa90befffa90befffa,0x90befffa90befffa90befffa90befffa - ddq 0xa4506ceba4506ceba4506ceba4506ceb,0xa4506ceba4506ceba4506ceba4506ceb - ddq 0xbef9a3f7bef9a3f7bef9a3f7bef9a3f7,0xbef9a3f7bef9a3f7bef9a3f7bef9a3f7 - ddq 0xc67178f2c67178f2c67178f2c67178f2,0xc67178f2c67178f2c67178f2c67178f2 - -PSHUFFLE_BYTE_FLIP_MASK: ddq 0x0c0d0e0f08090a0b0405060700010203 - ddq 0x0c0d0e0f08090a0b0405060700010203 diff --git a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_sse4.asm b/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_sse4.asm deleted file mode 100644 index ce5ad57d3a..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/benchmarks/sha256_sse4.asm +++ /dev/null @@ -1,544 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Copyright (c) 2012, Intel Corporation -; -; All rights reserved. -; -; Redistribution and use in source and binary forms, with or without -; modification, are permitted provided that the following conditions are -; met: -; -; * Redistributions of source code must retain the above copyright -; notice, this list of conditions and the following disclaimer. -; -; * Redistributions in binary form must reproduce the above copyright -; notice, this list of conditions and the following disclaimer in the -; documentation and/or other materials provided with the -; distribution. -; -; * Neither the name of the Intel Corporation nor the names of its -; contributors may be used to endorse or promote products derived from -; this software without specific prior written permission. -; -; -; THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY -; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR -; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; Example YASM command lines: -; Windows: yasm -Xvc -f x64 -rnasm -pnasm -o sha256_sse4.obj -g cv8 sha256_sse4.asm -; Linux: yasm -f x64 -f elf64 -X gnu -g dwarf2 -D LINUX -o sha256_sse4.o sha256_sse4.asm -; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; This code is described in an Intel White-Paper: -; "Fast SHA-256 Implementations on Intel Architecture Processors" -; -; To find it, surf to http://www.intel.com/p/en_US/embedded -; and search for that title. -; The paper is expected to be released roughly at the end of April, 2012 -; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; This code schedules 1 blocks at a time, with 4 lanes per block -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%define MOVDQ movdqu ;; assume buffers not aligned - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Define Macros - -; addm [mem], reg -; Add reg to mem using reg-mem add and store -%macro addm 2 - add %2, %1 - mov %1, %2 -%endm - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -; COPY_XMM_AND_BSWAP xmm, [mem], byte_flip_mask -; Load xmm with mem and byte swap each dword -%macro COPY_XMM_AND_BSWAP 3 - MOVDQ %1, %2 - pshufb %1, %3 -%endmacro - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -%define X0 xmm4 -%define X1 xmm5 -%define X2 xmm6 -%define X3 xmm7 - -%define XTMP0 xmm0 -%define XTMP1 xmm1 -%define XTMP2 xmm2 -%define XTMP3 xmm3 -%define XTMP4 xmm8 -%define XFER xmm9 - -%define SHUF_00BA xmm10 ; shuffle xBxA -> 00BA -%define SHUF_DC00 xmm11 ; shuffle xDxC -> DC00 -%define BYTE_FLIP_MASK xmm12 - -%ifdef LINUX -%define NUM_BLKS rdx ; 3rd arg -%define CTX rsi ; 2nd arg -%define INP rdi ; 1st arg - -%define SRND rdi ; clobbers INP -%define c ecx -%define d r8d -%define e edx -%else -%define NUM_BLKS r8 ; 3rd arg -%define CTX rdx ; 2nd arg -%define INP rcx ; 1st arg - -%define SRND rcx ; clobbers INP -%define c edi -%define d esi -%define e r8d - -%endif -%define TBL rbp -%define a eax -%define b ebx - -%define f r9d -%define g r10d -%define h r11d - -%define y0 r13d -%define y1 r14d -%define y2 r15d - - - -_INP_END_SIZE equ 8 -_INP_SIZE equ 8 -_XFER_SIZE equ 8 -%ifdef LINUX -_XMM_SAVE_SIZE equ 0 -%else -_XMM_SAVE_SIZE equ 7*16 -%endif -; STACK_SIZE plus pushes must be an odd multiple of 8 -_ALIGN_SIZE equ 8 - -_INP_END equ 0 -_INP equ _INP_END + _INP_END_SIZE -_XFER equ _INP + _INP_SIZE -_XMM_SAVE equ _XFER + _XFER_SIZE + _ALIGN_SIZE -STACK_SIZE equ _XMM_SAVE + _XMM_SAVE_SIZE - -; rotate_Xs -; Rotate values of symbols X0...X3 -%macro rotate_Xs 0 -%xdefine X_ X0 -%xdefine X0 X1 -%xdefine X1 X2 -%xdefine X2 X3 -%xdefine X3 X_ -%endm - -; ROTATE_ARGS -; Rotate values of symbols a...h -%macro ROTATE_ARGS 0 -%xdefine TMP_ h -%xdefine h g -%xdefine g f -%xdefine f e -%xdefine e d -%xdefine d c -%xdefine c b -%xdefine b a -%xdefine a TMP_ -%endm - -%macro FOUR_ROUNDS_AND_SCHED 0 - ;; compute s0 four at a time and s1 two at a time - ;; compute W[-16] + W[-7] 4 at a time - movdqa XTMP0, X3 - mov y0, e ; y0 = e - ror y0, (25-11) ; y0 = e >> (25-11) - mov y1, a ; y1 = a - palignr XTMP0, X2, 4 ; XTMP0 = W[-7] - ror y1, (22-13) ; y1 = a >> (22-13) - xor y0, e ; y0 = e ^ (e >> (25-11)) - mov y2, f ; y2 = f - ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - movdqa XTMP1, X1 - xor y1, a ; y1 = a ^ (a >> (22-13) - xor y2, g ; y2 = f^g - paddd XTMP0, X0 ; XTMP0 = W[-7] + W[-16] - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - and y2, e ; y2 = (f^g)&e - ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - ;; compute s0 - palignr XTMP1, X0, 4 ; XTMP1 = W[-15] - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - xor y2, g ; y2 = CH = ((f^g)&e)^g - movdqa XTMP2, XTMP1 ; XTMP2 = W[-15] - ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - add y2, y0 ; y2 = S1 + CH - add y2, [rsp + _XFER + 0*4] ; y2 = k + w + S1 + CH - movdqa XTMP3, XTMP1 ; XTMP3 = W[-15] - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - pslld XTMP1, (32-7) - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - psrld XTMP2, 7 - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - por XTMP1, XTMP2 ; XTMP1 = W[-15] nostrdb: ror 7 - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - -ROTATE_ARGS - movdqa XTMP2, XTMP3 ; XTMP2 = W[-15] - mov y0, e ; y0 = e - mov y1, a ; y1 = a - movdqa XTMP4, XTMP3 ; XTMP4 = W[-15] - ror y0, (25-11) ; y0 = e >> (25-11) - xor y0, e ; y0 = e ^ (e >> (25-11)) - mov y2, f ; y2 = f - ror y1, (22-13) ; y1 = a >> (22-13) - pslld XTMP3, (32-18) - xor y1, a ; y1 = a ^ (a >> (22-13) - ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - xor y2, g ; y2 = f^g - psrld XTMP2, 18 - ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - and y2, e ; y2 = (f^g)&e - ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - pxor XTMP1, XTMP3 - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - xor y2, g ; y2 = CH = ((f^g)&e)^g - psrld XTMP4, 3 ; XTMP4 = W[-15] nostrdb: >> 3 - add y2, y0 ; y2 = S1 + CH - add y2, [rsp + _XFER + 1*4] ; y2 = k + w + S1 + CH - ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - pxor XTMP1, XTMP2 ; XTMP1 = W[-15] nostrdb: ror 7 ^ W[-15] ror 18 - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - pxor XTMP1, XTMP4 ; XTMP1 = s0 - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - ;; compute low s1 - pshufd XTMP2, X3, 11111010b ; XTMP2 = W[-2] {BBAA} - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - paddd XTMP0, XTMP1 ; XTMP0 = W[-16] + W[-7] + s0 - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - -ROTATE_ARGS - movdqa XTMP3, XTMP2 ; XTMP3 = W[-2] {BBAA} - mov y0, e ; y0 = e - mov y1, a ; y1 = a - ror y0, (25-11) ; y0 = e >> (25-11) - movdqa XTMP4, XTMP2 ; XTMP4 = W[-2] {BBAA} - xor y0, e ; y0 = e ^ (e >> (25-11)) - ror y1, (22-13) ; y1 = a >> (22-13) - mov y2, f ; y2 = f - xor y1, a ; y1 = a ^ (a >> (22-13) - ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - psrlq XTMP2, 17 ; XTMP2 = W[-2] ror 17 {xBxA} - xor y2, g ; y2 = f^g - psrlq XTMP3, 19 ; XTMP3 = W[-2] ror 19 {xBxA} - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - and y2, e ; y2 = (f^g)&e - psrld XTMP4, 10 ; XTMP4 = W[-2] >> 10 {BBAA} - ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - xor y2, g ; y2 = CH = ((f^g)&e)^g - ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - pxor XTMP2, XTMP3 - add y2, y0 ; y2 = S1 + CH - ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - add y2, [rsp + _XFER + 2*4] ; y2 = k + w + S1 + CH - pxor XTMP4, XTMP2 ; XTMP4 = s1 {xBxA} - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - pshufb XTMP4, SHUF_00BA ; XTMP4 = s1 {00BA} - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - paddd XTMP0, XTMP4 ; XTMP0 = {..., ..., W[1], W[0]} - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - ;; compute high s1 - pshufd XTMP2, XTMP0, 01010000b ; XTMP2 = W[-2] {DDCC} - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - -ROTATE_ARGS - movdqa XTMP3, XTMP2 ; XTMP3 = W[-2] {DDCC} - mov y0, e ; y0 = e - ror y0, (25-11) ; y0 = e >> (25-11) - mov y1, a ; y1 = a - movdqa X0, XTMP2 ; X0 = W[-2] {DDCC} - ror y1, (22-13) ; y1 = a >> (22-13) - xor y0, e ; y0 = e ^ (e >> (25-11)) - mov y2, f ; y2 = f - ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - psrlq XTMP2, 17 ; XTMP2 = W[-2] ror 17 {xDxC} - xor y1, a ; y1 = a ^ (a >> (22-13) - xor y2, g ; y2 = f^g - psrlq XTMP3, 19 ; XTMP3 = W[-2] ror 19 {xDxC} - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - and y2, e ; y2 = (f^g)&e - ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - psrld X0, 10 ; X0 = W[-2] >> 10 {DDCC} - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - xor y2, g ; y2 = CH = ((f^g)&e)^g - pxor XTMP2, XTMP3 - ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - add y2, y0 ; y2 = S1 + CH - add y2, [rsp + _XFER + 3*4] ; y2 = k + w + S1 + CH - pxor X0, XTMP2 ; X0 = s1 {xDxC} - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - pshufb X0, SHUF_DC00 ; X0 = s1 {DC00} - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - paddd X0, XTMP0 ; X0 = {W[3], W[2], W[1], W[0]} - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - -ROTATE_ARGS -rotate_Xs -%endm - -;; input is [rsp + _XFER + %1 * 4] -%macro DO_ROUND 1 - mov y0, e ; y0 = e - ror y0, (25-11) ; y0 = e >> (25-11) - mov y1, a ; y1 = a - xor y0, e ; y0 = e ^ (e >> (25-11)) - ror y1, (22-13) ; y1 = a >> (22-13) - mov y2, f ; y2 = f - xor y1, a ; y1 = a ^ (a >> (22-13) - ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) - xor y2, g ; y2 = f^g - xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) - ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) - and y2, e ; y2 = (f^g)&e - xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) - ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) - xor y2, g ; y2 = CH = ((f^g)&e)^g - add y2, y0 ; y2 = S1 + CH - ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) - add y2, [rsp + _XFER + %1 * 4] ; y2 = k + w + S1 + CH - mov y0, a ; y0 = a - add h, y2 ; h = h + S1 + CH + k + w - mov y2, a ; y2 = a - or y0, c ; y0 = a|c - add d, h ; d = d + h + S1 + CH + k + w - and y2, c ; y2 = a&c - and y0, b ; y0 = (a|c)&b - add h, y1 ; h = h + S1 + CH + k + w + S0 - or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) - add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ - ROTATE_ARGS -%endm - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; void sha256_sse4(void *input_data, UINT32 digest[8], UINT64 num_blks) -;; arg 1 : pointer to input data -;; arg 2 : pointer to digest -;; arg 3 : Num blocks -section .text -global sha256_sse4 -align 32 -sha256_sse4: - push rbx -%ifndef LINUX - push rsi - push rdi -%endif - push rbp - push r13 - push r14 - push r15 - - sub rsp,STACK_SIZE -%ifndef LINUX - movdqa [rsp + _XMM_SAVE + 0*16],xmm6 - movdqa [rsp + _XMM_SAVE + 1*16],xmm7 - movdqa [rsp + _XMM_SAVE + 2*16],xmm8 - movdqa [rsp + _XMM_SAVE + 3*16],xmm9 - movdqa [rsp + _XMM_SAVE + 4*16],xmm10 - movdqa [rsp + _XMM_SAVE + 5*16],xmm11 - movdqa [rsp + _XMM_SAVE + 6*16],xmm12 -%endif - - shl NUM_BLKS, 6 ; convert to bytes - jz done_hash - add NUM_BLKS, INP ; pointer to end of data - mov [rsp + _INP_END], NUM_BLKS - - ;; load initial digest - mov a,[4*0 + CTX] - mov b,[4*1 + CTX] - mov c,[4*2 + CTX] - mov d,[4*3 + CTX] - mov e,[4*4 + CTX] - mov f,[4*5 + CTX] - mov g,[4*6 + CTX] - mov h,[4*7 + CTX] - - movdqa BYTE_FLIP_MASK, [PSHUFFLE_BYTE_FLIP_MASK wrt rip] - movdqa SHUF_00BA, [_SHUF_00BA wrt rip] - movdqa SHUF_DC00, [_SHUF_DC00 wrt rip] - -loop0: - lea TBL,[K256 wrt rip] - - ;; byte swap first 16 dwords - COPY_XMM_AND_BSWAP X0, [INP + 0*16], BYTE_FLIP_MASK - COPY_XMM_AND_BSWAP X1, [INP + 1*16], BYTE_FLIP_MASK - COPY_XMM_AND_BSWAP X2, [INP + 2*16], BYTE_FLIP_MASK - COPY_XMM_AND_BSWAP X3, [INP + 3*16], BYTE_FLIP_MASK - - mov [rsp + _INP], INP - - ;; schedule 48 input dwords, by doing 3 rounds of 16 each - mov SRND, 3 -align 16 -loop1: - movdqa XFER, [TBL + 0*16] - paddd XFER, X0 - movdqa [rsp + _XFER], XFER - FOUR_ROUNDS_AND_SCHED - - movdqa XFER, [TBL + 1*16] - paddd XFER, X0 - movdqa [rsp + _XFER], XFER - FOUR_ROUNDS_AND_SCHED - - movdqa XFER, [TBL + 2*16] - paddd XFER, X0 - movdqa [rsp + _XFER], XFER - FOUR_ROUNDS_AND_SCHED - - movdqa XFER, [TBL + 3*16] - paddd XFER, X0 - movdqa [rsp + _XFER], XFER - add TBL, 4*16 - FOUR_ROUNDS_AND_SCHED - - sub SRND, 1 - jne loop1 - - mov SRND, 2 -loop2: - paddd X0, [TBL + 0*16] - movdqa [rsp + _XFER], X0 - DO_ROUND 0 - DO_ROUND 1 - DO_ROUND 2 - DO_ROUND 3 - paddd X1, [TBL + 1*16] - movdqa [rsp + _XFER], X1 - add TBL, 2*16 - DO_ROUND 0 - DO_ROUND 1 - DO_ROUND 2 - DO_ROUND 3 - - movdqa X0, X2 - movdqa X1, X3 - - sub SRND, 1 - jne loop2 - - addm [4*0 + CTX],a - addm [4*1 + CTX],b - addm [4*2 + CTX],c - addm [4*3 + CTX],d - addm [4*4 + CTX],e - addm [4*5 + CTX],f - addm [4*6 + CTX],g - addm [4*7 + CTX],h - - mov INP, [rsp + _INP] - add INP, 64 - cmp INP, [rsp + _INP_END] - jne loop0 - -done_hash: -%ifndef LINUX - movdqa xmm6,[rsp + _XMM_SAVE + 0*16] - movdqa xmm7,[rsp + _XMM_SAVE + 1*16] - movdqa xmm8,[rsp + _XMM_SAVE + 2*16] - movdqa xmm9,[rsp + _XMM_SAVE + 3*16] - movdqa xmm10,[rsp + _XMM_SAVE + 4*16] - movdqa xmm11,[rsp + _XMM_SAVE + 5*16] - movdqa xmm12,[rsp + _XMM_SAVE + 6*16] -%endif - - add rsp, STACK_SIZE - - pop r15 - pop r14 - pop r13 - pop rbp -%ifndef LINUX - pop rdi - pop rsi -%endif - pop rbx - - ret - - -section .data -align 64 -K256: - dd 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 - dd 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 - dd 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 - dd 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 - dd 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc - dd 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da - dd 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 - dd 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 - dd 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 - dd 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 - dd 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 - dd 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 - dd 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 - dd 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 - dd 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 - dd 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 - -PSHUFFLE_BYTE_FLIP_MASK: ddq 0x0c0d0e0f08090a0b0405060700010203 - -; shuffle xBxA -> 00BA -_SHUF_00BA: ddq 0xFFFFFFFFFFFFFFFF0b0a090803020100 - -; shuffle xDxC -> DC00 -_SHUF_DC00: ddq 0x0b0a090803020100FFFFFFFFFFFFFFFF diff --git a/nostrdb/ccan/ccan/crypto/sha256/sha256.c b/nostrdb/ccan/ccan/crypto/sha256/sha256.c deleted file mode 100644 index d42b47b0a5..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/sha256.c +++ /dev/null @@ -1,308 +0,0 @@ -/* MIT (BSD) license - see LICENSE file for details */ -/* SHA256 core code translated from the Bitcoin project's C++: - * - * src/crypto/sha256.cpp commit 417532c8acb93c36c2b6fd052b7c11b6a2906aa2 - * Copyright (c) 2014 The Bitcoin Core developers - * Distributed under the MIT software license, see the accompanying - * file COPYING or http://www.opensource.org/licenses/mit-license.php. - */ -#include -#include -#include -#include -#include -#include - -static void invalidate_sha256(struct sha256_ctx *ctx) -{ -#ifdef CCAN_CRYPTO_SHA256_USE_OPENSSL - ctx->c.md_len = 0; -#else - ctx->bytes = (size_t)-1; -#endif -} - -static void check_sha256(struct sha256_ctx *ctx UNUSED) -{ -#ifdef CCAN_CRYPTO_SHA256_USE_OPENSSL - assert(ctx->c.md_len != 0); -#else - assert(ctx->bytes != (size_t)-1); -#endif -} - -#ifdef CCAN_CRYPTO_SHA256_USE_OPENSSL -void sha256_init(struct sha256_ctx *ctx) -{ - SHA256_Init(&ctx->c); -} - -void sha256_update(struct sha256_ctx *ctx, const void *p, size_t size) -{ - check_sha256(ctx); - SHA256_Update(&ctx->c, p, size); -} - -void sha256_done(struct sha256_ctx *ctx, struct sha256 *res) -{ - SHA256_Final(res->u.u8, &ctx->c); - invalidate_sha256(ctx); -} -#else -static uint32_t Ch(uint32_t x, uint32_t y, uint32_t z) -{ - return z ^ (x & (y ^ z)); -} -static uint32_t Maj(uint32_t x, uint32_t y, uint32_t z) -{ - return (x & y) | (z & (x | y)); -} -static uint32_t Sigma0(uint32_t x) -{ - return (x >> 2 | x << 30) ^ (x >> 13 | x << 19) ^ (x >> 22 | x << 10); -} -static uint32_t Sigma1(uint32_t x) -{ - return (x >> 6 | x << 26) ^ (x >> 11 | x << 21) ^ (x >> 25 | x << 7); -} -static uint32_t sigma0(uint32_t x) -{ - return (x >> 7 | x << 25) ^ (x >> 18 | x << 14) ^ (x >> 3); -} -static uint32_t sigma1(uint32_t x) -{ - return (x >> 17 | x << 15) ^ (x >> 19 | x << 13) ^ (x >> 10); -} - -/** One round of SHA-256. */ -static void Round(uint32_t a, uint32_t b, uint32_t c, uint32_t *d, uint32_t e, uint32_t f, uint32_t g, uint32_t *h, uint32_t k, uint32_t w) -{ - uint32_t t1 = *h + Sigma1(e) + Ch(e, f, g) + k + w; - uint32_t t2 = Sigma0(a) + Maj(a, b, c); - *d += t1; - *h = t1 + t2; -} - -/** Perform one SHA-256 transformation, processing a 64-byte chunk. */ -static void Transform(uint32_t *s, const uint32_t *chunk) -{ - uint32_t a = s[0], b = s[1], c = s[2], d = s[3], e = s[4], f = s[5], g = s[6], h = s[7]; - uint32_t w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15; - - Round(a, b, c, &d, e, f, g, &h, 0x428a2f98, w0 = be32_to_cpu(chunk[0])); - Round(h, a, b, &c, d, e, f, &g, 0x71374491, w1 = be32_to_cpu(chunk[1])); - Round(g, h, a, &b, c, d, e, &f, 0xb5c0fbcf, w2 = be32_to_cpu(chunk[2])); - Round(f, g, h, &a, b, c, d, &e, 0xe9b5dba5, w3 = be32_to_cpu(chunk[3])); - Round(e, f, g, &h, a, b, c, &d, 0x3956c25b, w4 = be32_to_cpu(chunk[4])); - Round(d, e, f, &g, h, a, b, &c, 0x59f111f1, w5 = be32_to_cpu(chunk[5])); - Round(c, d, e, &f, g, h, a, &b, 0x923f82a4, w6 = be32_to_cpu(chunk[6])); - Round(b, c, d, &e, f, g, h, &a, 0xab1c5ed5, w7 = be32_to_cpu(chunk[7])); - Round(a, b, c, &d, e, f, g, &h, 0xd807aa98, w8 = be32_to_cpu(chunk[8])); - Round(h, a, b, &c, d, e, f, &g, 0x12835b01, w9 = be32_to_cpu(chunk[9])); - Round(g, h, a, &b, c, d, e, &f, 0x243185be, w10 = be32_to_cpu(chunk[10])); - Round(f, g, h, &a, b, c, d, &e, 0x550c7dc3, w11 = be32_to_cpu(chunk[11])); - Round(e, f, g, &h, a, b, c, &d, 0x72be5d74, w12 = be32_to_cpu(chunk[12])); - Round(d, e, f, &g, h, a, b, &c, 0x80deb1fe, w13 = be32_to_cpu(chunk[13])); - Round(c, d, e, &f, g, h, a, &b, 0x9bdc06a7, w14 = be32_to_cpu(chunk[14])); - Round(b, c, d, &e, f, g, h, &a, 0xc19bf174, w15 = be32_to_cpu(chunk[15])); - - Round(a, b, c, &d, e, f, g, &h, 0xe49b69c1, w0 += sigma1(w14) + w9 + sigma0(w1)); - Round(h, a, b, &c, d, e, f, &g, 0xefbe4786, w1 += sigma1(w15) + w10 + sigma0(w2)); - Round(g, h, a, &b, c, d, e, &f, 0x0fc19dc6, w2 += sigma1(w0) + w11 + sigma0(w3)); - Round(f, g, h, &a, b, c, d, &e, 0x240ca1cc, w3 += sigma1(w1) + w12 + sigma0(w4)); - Round(e, f, g, &h, a, b, c, &d, 0x2de92c6f, w4 += sigma1(w2) + w13 + sigma0(w5)); - Round(d, e, f, &g, h, a, b, &c, 0x4a7484aa, w5 += sigma1(w3) + w14 + sigma0(w6)); - Round(c, d, e, &f, g, h, a, &b, 0x5cb0a9dc, w6 += sigma1(w4) + w15 + sigma0(w7)); - Round(b, c, d, &e, f, g, h, &a, 0x76f988da, w7 += sigma1(w5) + w0 + sigma0(w8)); - Round(a, b, c, &d, e, f, g, &h, 0x983e5152, w8 += sigma1(w6) + w1 + sigma0(w9)); - Round(h, a, b, &c, d, e, f, &g, 0xa831c66d, w9 += sigma1(w7) + w2 + sigma0(w10)); - Round(g, h, a, &b, c, d, e, &f, 0xb00327c8, w10 += sigma1(w8) + w3 + sigma0(w11)); - Round(f, g, h, &a, b, c, d, &e, 0xbf597fc7, w11 += sigma1(w9) + w4 + sigma0(w12)); - Round(e, f, g, &h, a, b, c, &d, 0xc6e00bf3, w12 += sigma1(w10) + w5 + sigma0(w13)); - Round(d, e, f, &g, h, a, b, &c, 0xd5a79147, w13 += sigma1(w11) + w6 + sigma0(w14)); - Round(c, d, e, &f, g, h, a, &b, 0x06ca6351, w14 += sigma1(w12) + w7 + sigma0(w15)); - Round(b, c, d, &e, f, g, h, &a, 0x14292967, w15 += sigma1(w13) + w8 + sigma0(w0)); - - Round(a, b, c, &d, e, f, g, &h, 0x27b70a85, w0 += sigma1(w14) + w9 + sigma0(w1)); - Round(h, a, b, &c, d, e, f, &g, 0x2e1b2138, w1 += sigma1(w15) + w10 + sigma0(w2)); - Round(g, h, a, &b, c, d, e, &f, 0x4d2c6dfc, w2 += sigma1(w0) + w11 + sigma0(w3)); - Round(f, g, h, &a, b, c, d, &e, 0x53380d13, w3 += sigma1(w1) + w12 + sigma0(w4)); - Round(e, f, g, &h, a, b, c, &d, 0x650a7354, w4 += sigma1(w2) + w13 + sigma0(w5)); - Round(d, e, f, &g, h, a, b, &c, 0x766a0abb, w5 += sigma1(w3) + w14 + sigma0(w6)); - Round(c, d, e, &f, g, h, a, &b, 0x81c2c92e, w6 += sigma1(w4) + w15 + sigma0(w7)); - Round(b, c, d, &e, f, g, h, &a, 0x92722c85, w7 += sigma1(w5) + w0 + sigma0(w8)); - Round(a, b, c, &d, e, f, g, &h, 0xa2bfe8a1, w8 += sigma1(w6) + w1 + sigma0(w9)); - Round(h, a, b, &c, d, e, f, &g, 0xa81a664b, w9 += sigma1(w7) + w2 + sigma0(w10)); - Round(g, h, a, &b, c, d, e, &f, 0xc24b8b70, w10 += sigma1(w8) + w3 + sigma0(w11)); - Round(f, g, h, &a, b, c, d, &e, 0xc76c51a3, w11 += sigma1(w9) + w4 + sigma0(w12)); - Round(e, f, g, &h, a, b, c, &d, 0xd192e819, w12 += sigma1(w10) + w5 + sigma0(w13)); - Round(d, e, f, &g, h, a, b, &c, 0xd6990624, w13 += sigma1(w11) + w6 + sigma0(w14)); - Round(c, d, e, &f, g, h, a, &b, 0xf40e3585, w14 += sigma1(w12) + w7 + sigma0(w15)); - Round(b, c, d, &e, f, g, h, &a, 0x106aa070, w15 += sigma1(w13) + w8 + sigma0(w0)); - - Round(a, b, c, &d, e, f, g, &h, 0x19a4c116, w0 += sigma1(w14) + w9 + sigma0(w1)); - Round(h, a, b, &c, d, e, f, &g, 0x1e376c08, w1 += sigma1(w15) + w10 + sigma0(w2)); - Round(g, h, a, &b, c, d, e, &f, 0x2748774c, w2 += sigma1(w0) + w11 + sigma0(w3)); - Round(f, g, h, &a, b, c, d, &e, 0x34b0bcb5, w3 += sigma1(w1) + w12 + sigma0(w4)); - Round(e, f, g, &h, a, b, c, &d, 0x391c0cb3, w4 += sigma1(w2) + w13 + sigma0(w5)); - Round(d, e, f, &g, h, a, b, &c, 0x4ed8aa4a, w5 += sigma1(w3) + w14 + sigma0(w6)); - Round(c, d, e, &f, g, h, a, &b, 0x5b9cca4f, w6 += sigma1(w4) + w15 + sigma0(w7)); - Round(b, c, d, &e, f, g, h, &a, 0x682e6ff3, w7 += sigma1(w5) + w0 + sigma0(w8)); - Round(a, b, c, &d, e, f, g, &h, 0x748f82ee, w8 += sigma1(w6) + w1 + sigma0(w9)); - Round(h, a, b, &c, d, e, f, &g, 0x78a5636f, w9 += sigma1(w7) + w2 + sigma0(w10)); - Round(g, h, a, &b, c, d, e, &f, 0x84c87814, w10 += sigma1(w8) + w3 + sigma0(w11)); - Round(f, g, h, &a, b, c, d, &e, 0x8cc70208, w11 += sigma1(w9) + w4 + sigma0(w12)); - Round(e, f, g, &h, a, b, c, &d, 0x90befffa, w12 += sigma1(w10) + w5 + sigma0(w13)); - Round(d, e, f, &g, h, a, b, &c, 0xa4506ceb, w13 += sigma1(w11) + w6 + sigma0(w14)); - Round(c, d, e, &f, g, h, a, &b, 0xbef9a3f7, w14 + sigma1(w12) + w7 + sigma0(w15)); - Round(b, c, d, &e, f, g, h, &a, 0xc67178f2, w15 + sigma1(w13) + w8 + sigma0(w0)); - - s[0] += a; - s[1] += b; - s[2] += c; - s[3] += d; - s[4] += e; - s[5] += f; - s[6] += g; - s[7] += h; -} - -static bool alignment_ok(const void *p UNUSED, size_t n UNUSED) -{ -#if HAVE_UNALIGNED_ACCESS - return true; -#else - return ((size_t)p % n == 0); -#endif -} - -static void add(struct sha256_ctx *ctx, const void *p, size_t len) -{ - const unsigned char *data = p; - size_t bufsize = ctx->bytes % 64; - - if (bufsize + len >= 64) { - /* Fill the buffer, and process it. */ - memcpy(ctx->buf.u8 + bufsize, data, 64 - bufsize); - ctx->bytes += 64 - bufsize; - data += 64 - bufsize; - len -= 64 - bufsize; - Transform(ctx->s, ctx->buf.u32); - bufsize = 0; - } - - while (len >= 64) { - /* Process full chunks directly from the source. */ - if (alignment_ok(data, sizeof(uint32_t))) - Transform(ctx->s, (const uint32_t *)data); - else { - memcpy(ctx->buf.u8, data, sizeof(ctx->buf)); - Transform(ctx->s, ctx->buf.u32); - } - ctx->bytes += 64; - data += 64; - len -= 64; - } - - if (len) { - /* Fill the buffer with what remains. */ - memcpy(ctx->buf.u8 + bufsize, data, len); - ctx->bytes += len; - } -} - -void sha256_init(struct sha256_ctx *ctx) -{ - struct sha256_ctx init = SHA256_INIT; - *ctx = init; -} - -void sha256_update(struct sha256_ctx *ctx, const void *p, size_t size) -{ - check_sha256(ctx); - add(ctx, p, size); -} - -void sha256_done(struct sha256_ctx *ctx, struct sha256 *res) -{ - static const unsigned char pad[64] = {0x80}; - uint64_t sizedesc; - size_t i; - - sizedesc = cpu_to_be64((uint64_t)ctx->bytes << 3); - /* Add '1' bit to terminate, then all 0 bits, up to next block - 8. */ - add(ctx, pad, 1 + ((128 - 8 - (ctx->bytes % 64) - 1) % 64)); - /* Add number of bits of data (big endian) */ - add(ctx, &sizedesc, 8); - for (i = 0; i < sizeof(ctx->s) / sizeof(ctx->s[0]); i++) - res->u.u32[i] = cpu_to_be32(ctx->s[i]); - invalidate_sha256(ctx); -} -#endif - -void sha256(struct sha256 *sha, const void *p, size_t size) -{ - struct sha256_ctx ctx; - - sha256_init(&ctx); - sha256_update(&ctx, p, size); - sha256_done(&ctx, sha); -} - -void sha256_u8(struct sha256_ctx *ctx, uint8_t v) -{ - sha256_update(ctx, &v, sizeof(v)); -} - -void sha256_u16(struct sha256_ctx *ctx, uint16_t v) -{ - sha256_update(ctx, &v, sizeof(v)); -} - -void sha256_u32(struct sha256_ctx *ctx, uint32_t v) -{ - sha256_update(ctx, &v, sizeof(v)); -} - -void sha256_u64(struct sha256_ctx *ctx, uint64_t v) -{ - sha256_update(ctx, &v, sizeof(v)); -} - -/* Add as little-endian */ -void sha256_le16(struct sha256_ctx *ctx, uint16_t v) -{ - leint16_t lev = cpu_to_le16(v); - sha256_update(ctx, &lev, sizeof(lev)); -} - -void sha256_le32(struct sha256_ctx *ctx, uint32_t v) -{ - leint32_t lev = cpu_to_le32(v); - sha256_update(ctx, &lev, sizeof(lev)); -} - -void sha256_le64(struct sha256_ctx *ctx, uint64_t v) -{ - leint64_t lev = cpu_to_le64(v); - sha256_update(ctx, &lev, sizeof(lev)); -} - -/* Add as big-endian */ -void sha256_be16(struct sha256_ctx *ctx, uint16_t v) -{ - beint16_t bev = cpu_to_be16(v); - sha256_update(ctx, &bev, sizeof(bev)); -} - -void sha256_be32(struct sha256_ctx *ctx, uint32_t v) -{ - beint32_t bev = cpu_to_be32(v); - sha256_update(ctx, &bev, sizeof(bev)); -} - -void sha256_be64(struct sha256_ctx *ctx, uint64_t v) -{ - beint64_t bev = cpu_to_be64(v); - sha256_update(ctx, &bev, sizeof(bev)); -} diff --git a/nostrdb/ccan/ccan/crypto/sha256/sha256.h b/nostrdb/ccan/ccan/crypto/sha256/sha256.h deleted file mode 100644 index 9a310b9564..0000000000 --- a/nostrdb/ccan/ccan/crypto/sha256/sha256.h +++ /dev/null @@ -1,147 +0,0 @@ -#ifndef CCAN_CRYPTO_SHA256_H -#define CCAN_CRYPTO_SHA256_H -/* BSD-MIT - see LICENSE file for details */ -#include "config.h" -#include -#include - -/* Uncomment this to use openssl's SHA256 routines (and link with -lcrypto) */ -/*#define CCAN_CRYPTO_SHA256_USE_OPENSSL 1*/ - -#ifdef CCAN_CRYPTO_SHA256_USE_OPENSSL -#include -#endif - -/** - * struct sha256 - structure representing a completed SHA256. - * @u.u8: an unsigned char array. - * @u.u32: a 32-bit integer array. - * - * Other fields may be added to the union in future. - */ -struct sha256 { - union { - uint32_t u32[8]; - unsigned char u8[32]; - } u; -}; - -/** - * sha256 - return sha256 of an object. - * @sha256: the sha256 to fill in - * @p: pointer to memory, - * @size: the number of bytes pointed to by @p - * - * The bytes pointed to by @p is SHA256 hashed into @sha256. This is - * equivalent to sha256_init(), sha256_update() then sha256_done(). - */ -void sha256(struct sha256 *sha, const void *p, size_t size); - -/** - * struct sha256_ctx - structure to store running context for sha256 - */ -struct sha256_ctx { -#ifdef CCAN_CRYPTO_SHA256_USE_OPENSSL - SHA256_CTX c; -#else - uint32_t s[8]; - union { - uint32_t u32[16]; - unsigned char u8[64]; - } buf; - size_t bytes; -#endif -}; - -/** - * sha256_init - initialize an SHA256 context. - * @ctx: the sha256_ctx to initialize - * - * This must be called before sha256_update or sha256_done, or - * alternately you can assign SHA256_INIT. - * - * If it was already initialized, this forgets anything which was - * hashed before. - * - * Example: - * static void hash_all(const char **arr, struct sha256 *hash) - * { - * size_t i; - * struct sha256_ctx ctx; - * - * sha256_init(&ctx); - * for (i = 0; arr[i]; i++) - * sha256_update(&ctx, arr[i], strlen(arr[i])); - * sha256_done(&ctx, hash); - * } - */ -void sha256_init(struct sha256_ctx *ctx); - -/** - * SHA256_INIT - initializer for an SHA256 context. - * - * This can be used to statically initialize an SHA256 context (instead - * of sha256_init()). - * - * Example: - * static void hash_all(const char **arr, struct sha256 *hash) - * { - * size_t i; - * struct sha256_ctx ctx = SHA256_INIT; - * - * for (i = 0; arr[i]; i++) - * sha256_update(&ctx, arr[i], strlen(arr[i])); - * sha256_done(&ctx, hash); - * } - */ -#ifdef CCAN_CRYPTO_SHA256_USE_OPENSSL -#define SHA256_INIT \ - { { { 0x6a09e667ul, 0xbb67ae85ul, 0x3c6ef372ul, 0xa54ff53aul, \ - 0x510e527ful, 0x9b05688cul, 0x1f83d9abul, 0x5be0cd19ul }, \ - 0x0, 0x0, \ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, \ - 0x0, 0x20 } } -#else -#define SHA256_INIT \ - { { 0x6a09e667ul, 0xbb67ae85ul, 0x3c6ef372ul, 0xa54ff53aul, \ - 0x510e527ful, 0x9b05688cul, 0x1f83d9abul, 0x5be0cd19ul }, \ - { { 0 } }, 0 } -#endif - -/** - * sha256_update - include some memory in the hash. - * @ctx: the sha256_ctx to use - * @p: pointer to memory, - * @size: the number of bytes pointed to by @p - * - * You can call this multiple times to hash more data, before calling - * sha256_done(). - */ -void sha256_update(struct sha256_ctx *ctx, const void *p, size_t size); - -/** - * sha256_done - finish SHA256 and return the hash - * @ctx: the sha256_ctx to complete - * @res: the hash to return. - * - * Note that @ctx is *destroyed* by this, and must be reinitialized. - * To avoid that, pass a copy instead. - */ -void sha256_done(struct sha256_ctx *sha256, struct sha256 *res); - -/* Add various types to an SHA256 hash */ -void sha256_u8(struct sha256_ctx *ctx, uint8_t v); -void sha256_u16(struct sha256_ctx *ctx, uint16_t v); -void sha256_u32(struct sha256_ctx *ctx, uint32_t v); -void sha256_u64(struct sha256_ctx *ctx, uint64_t v); - -/* Add as little-endian */ -void sha256_le16(struct sha256_ctx *ctx, uint16_t v); -void sha256_le32(struct sha256_ctx *ctx, uint32_t v); -void sha256_le64(struct sha256_ctx *ctx, uint64_t v); - -/* Add as big-endian */ -void sha256_be16(struct sha256_ctx *ctx, uint16_t v); -void sha256_be32(struct sha256_ctx *ctx, uint32_t v); -void sha256_be64(struct sha256_ctx *ctx, uint64_t v); -#endif /* CCAN_CRYPTO_SHA256_H */ diff --git a/nostrdb/ccan/ccan/endian/LICENSE b/nostrdb/ccan/ccan/endian/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/endian/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/endian/_info b/nostrdb/ccan/ccan/endian/_info deleted file mode 100644 index efe5a8bbde..0000000000 --- a/nostrdb/ccan/ccan/endian/_info +++ /dev/null @@ -1,55 +0,0 @@ -#include "config.h" -#include -#include - -/** - * endian - endian conversion macros for simple types - * - * Portable protocols (such as on-disk formats, or network protocols) - * are often defined to be a particular endian: little-endian (least - * significant bytes first) or big-endian (most significant bytes - * first). - * - * Similarly, some CPUs lay out values in memory in little-endian - * order (most commonly, Intel's 8086 and derivatives), or big-endian - * order (almost everyone else). - * - * This module provides conversion routines, inspired by the linux kernel. - * It also provides leint32_t, beint32_t etc typedefs, which are annotated for - * the sparse checker. - * - * Example: - * #include - * #include - * #include - * - * // - * int main(int argc, char *argv[]) - * { - * uint32_t value; - * - * if (argc != 2) - * errx(1, "Usage: %s ", argv[0]); - * - * value = atoi(argv[1]); - * printf("native: %08x\n", value); - * printf("little-endian: %08x\n", cpu_to_le32(value)); - * printf("big-endian: %08x\n", cpu_to_be32(value)); - * printf("byte-reversed: %08x\n", bswap_32(value)); - * exit(0); - * } - * - * License: License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) - /* Nothing */ - return 0; - - return 1; -} diff --git a/nostrdb/ccan/ccan/endian/endian.h b/nostrdb/ccan/ccan/endian/endian.h deleted file mode 100644 index 3753f49003..0000000000 --- a/nostrdb/ccan/ccan/endian/endian.h +++ /dev/null @@ -1,363 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_ENDIAN_H -#define CCAN_ENDIAN_H -#include -#include "config.h" - -/** - * BSWAP_16 - reverse bytes in a constant uint16_t value. - * @val: constant value whose bytes to swap. - * - * Designed to be usable in constant-requiring initializers. - * - * Example: - * struct mystruct { - * char buf[BSWAP_16(0x1234)]; - * }; - */ -#define BSWAP_16(val) \ - ((((uint16_t)(val) & 0x00ff) << 8) \ - | (((uint16_t)(val) & 0xff00) >> 8)) - -/** - * BSWAP_32 - reverse bytes in a constant uint32_t value. - * @val: constant value whose bytes to swap. - * - * Designed to be usable in constant-requiring initializers. - * - * Example: - * struct mystruct { - * char buf[BSWAP_32(0xff000000)]; - * }; - */ -#define BSWAP_32(val) \ - ((((uint32_t)(val) & 0x000000ff) << 24) \ - | (((uint32_t)(val) & 0x0000ff00) << 8) \ - | (((uint32_t)(val) & 0x00ff0000) >> 8) \ - | (((uint32_t)(val) & 0xff000000) >> 24)) - -/** - * BSWAP_64 - reverse bytes in a constant uint64_t value. - * @val: constantvalue whose bytes to swap. - * - * Designed to be usable in constant-requiring initializers. - * - * Example: - * struct mystruct { - * char buf[BSWAP_64(0xff00000000000000ULL)]; - * }; - */ -#define BSWAP_64(val) \ - ((((uint64_t)(val) & 0x00000000000000ffULL) << 56) \ - | (((uint64_t)(val) & 0x000000000000ff00ULL) << 40) \ - | (((uint64_t)(val) & 0x0000000000ff0000ULL) << 24) \ - | (((uint64_t)(val) & 0x00000000ff000000ULL) << 8) \ - | (((uint64_t)(val) & 0x000000ff00000000ULL) >> 8) \ - | (((uint64_t)(val) & 0x0000ff0000000000ULL) >> 24) \ - | (((uint64_t)(val) & 0x00ff000000000000ULL) >> 40) \ - | (((uint64_t)(val) & 0xff00000000000000ULL) >> 56)) - -#if HAVE_BYTESWAP_H -#include -#else -/** - * bswap_16 - reverse bytes in a uint16_t value. - * @val: value whose bytes to swap. - * - * Example: - * // Output contains "1024 is 4 as two bytes reversed" - * printf("1024 is %u as two bytes reversed\n", bswap_16(1024)); - */ -static inline uint16_t bswap_16(uint16_t val) -{ - return BSWAP_16(val); -} - -/** - * bswap_32 - reverse bytes in a uint32_t value. - * @val: value whose bytes to swap. - * - * Example: - * // Output contains "1024 is 262144 as four bytes reversed" - * printf("1024 is %u as four bytes reversed\n", bswap_32(1024)); - */ -static inline uint32_t bswap_32(uint32_t val) -{ - return BSWAP_32(val); -} -#endif /* !HAVE_BYTESWAP_H */ - -#if !HAVE_BSWAP_64 -/** - * bswap_64 - reverse bytes in a uint64_t value. - * @val: value whose bytes to swap. - * - * Example: - * // Output contains "1024 is 1125899906842624 as eight bytes reversed" - * printf("1024 is %llu as eight bytes reversed\n", - * (unsigned long long)bswap_64(1024)); - */ -static inline uint64_t bswap_64(uint64_t val) -{ - return BSWAP_64(val); -} -#endif - -/* Needed for Glibc like endiness check */ -#define __LITTLE_ENDIAN 1234 -#define __BIG_ENDIAN 4321 - -/* Sanity check the defines. We don't handle weird endianness. */ -#if !HAVE_LITTLE_ENDIAN && !HAVE_BIG_ENDIAN -#error "Unknown endian" -#elif HAVE_LITTLE_ENDIAN && HAVE_BIG_ENDIAN -#error "Can't compile for both big and little endian." -#elif HAVE_LITTLE_ENDIAN -#ifndef __BYTE_ORDER -#define __BYTE_ORDER __LITTLE_ENDIAN -#elif __BYTE_ORDER != __LITTLE_ENDIAN -#error "__BYTE_ORDER already defined, but not equal to __LITTLE_ENDIAN" -#endif -#elif HAVE_BIG_ENDIAN -#ifndef __BYTE_ORDER -#define __BYTE_ORDER __BIG_ENDIAN -#elif __BYTE_ORDER != __BIG_ENDIAN -#error "__BYTE_ORDER already defined, but not equal to __BIG_ENDIAN" -#endif -#endif - - -#ifdef __CHECKER__ -/* sparse needs forcing to remove bitwise attribute from ccan/short_types */ -#define ENDIAN_CAST __attribute__((force)) -#define ENDIAN_TYPE __attribute__((bitwise)) -#else -#define ENDIAN_CAST -#define ENDIAN_TYPE -#endif - -typedef uint64_t ENDIAN_TYPE leint64_t; -typedef uint64_t ENDIAN_TYPE beint64_t; -typedef uint32_t ENDIAN_TYPE leint32_t; -typedef uint32_t ENDIAN_TYPE beint32_t; -typedef uint16_t ENDIAN_TYPE leint16_t; -typedef uint16_t ENDIAN_TYPE beint16_t; - -#if HAVE_LITTLE_ENDIAN -/** - * CPU_TO_LE64 - convert a constant uint64_t value to little-endian - * @native: constant to convert - */ -#define CPU_TO_LE64(native) ((ENDIAN_CAST leint64_t)(native)) - -/** - * CPU_TO_LE32 - convert a constant uint32_t value to little-endian - * @native: constant to convert - */ -#define CPU_TO_LE32(native) ((ENDIAN_CAST leint32_t)(native)) - -/** - * CPU_TO_LE16 - convert a constant uint16_t value to little-endian - * @native: constant to convert - */ -#define CPU_TO_LE16(native) ((ENDIAN_CAST leint16_t)(native)) - -/** - * LE64_TO_CPU - convert a little-endian uint64_t constant - * @le_val: little-endian constant to convert - */ -#define LE64_TO_CPU(le_val) ((ENDIAN_CAST uint64_t)(le_val)) - -/** - * LE32_TO_CPU - convert a little-endian uint32_t constant - * @le_val: little-endian constant to convert - */ -#define LE32_TO_CPU(le_val) ((ENDIAN_CAST uint32_t)(le_val)) - -/** - * LE16_TO_CPU - convert a little-endian uint16_t constant - * @le_val: little-endian constant to convert - */ -#define LE16_TO_CPU(le_val) ((ENDIAN_CAST uint16_t)(le_val)) - -#else /* ... HAVE_BIG_ENDIAN */ -#define CPU_TO_LE64(native) ((ENDIAN_CAST leint64_t)BSWAP_64(native)) -#define CPU_TO_LE32(native) ((ENDIAN_CAST leint32_t)BSWAP_32(native)) -#define CPU_TO_LE16(native) ((ENDIAN_CAST leint16_t)BSWAP_16(native)) -#define LE64_TO_CPU(le_val) BSWAP_64((ENDIAN_CAST uint64_t)le_val) -#define LE32_TO_CPU(le_val) BSWAP_32((ENDIAN_CAST uint32_t)le_val) -#define LE16_TO_CPU(le_val) BSWAP_16((ENDIAN_CAST uint16_t)le_val) -#endif /* HAVE_BIG_ENDIAN */ - -#if HAVE_BIG_ENDIAN -/** - * CPU_TO_BE64 - convert a constant uint64_t value to big-endian - * @native: constant to convert - */ -#define CPU_TO_BE64(native) ((ENDIAN_CAST beint64_t)(native)) - -/** - * CPU_TO_BE32 - convert a constant uint32_t value to big-endian - * @native: constant to convert - */ -#define CPU_TO_BE32(native) ((ENDIAN_CAST beint32_t)(native)) - -/** - * CPU_TO_BE16 - convert a constant uint16_t value to big-endian - * @native: constant to convert - */ -#define CPU_TO_BE16(native) ((ENDIAN_CAST beint16_t)(native)) - -/** - * BE64_TO_CPU - convert a big-endian uint64_t constant - * @le_val: big-endian constant to convert - */ -#define BE64_TO_CPU(le_val) ((ENDIAN_CAST uint64_t)(le_val)) - -/** - * BE32_TO_CPU - convert a big-endian uint32_t constant - * @le_val: big-endian constant to convert - */ -#define BE32_TO_CPU(le_val) ((ENDIAN_CAST uint32_t)(le_val)) - -/** - * BE16_TO_CPU - convert a big-endian uint16_t constant - * @le_val: big-endian constant to convert - */ -#define BE16_TO_CPU(le_val) ((ENDIAN_CAST uint16_t)(le_val)) - -#else /* ... HAVE_LITTLE_ENDIAN */ -#define CPU_TO_BE64(native) ((ENDIAN_CAST beint64_t)BSWAP_64(native)) -#define CPU_TO_BE32(native) ((ENDIAN_CAST beint32_t)BSWAP_32(native)) -#define CPU_TO_BE16(native) ((ENDIAN_CAST beint16_t)BSWAP_16(native)) -#define BE64_TO_CPU(le_val) BSWAP_64((ENDIAN_CAST uint64_t)le_val) -#define BE32_TO_CPU(le_val) BSWAP_32((ENDIAN_CAST uint32_t)le_val) -#define BE16_TO_CPU(le_val) BSWAP_16((ENDIAN_CAST uint16_t)le_val) -#endif /* HAVE_LITTE_ENDIAN */ - - -/** - * cpu_to_le64 - convert a uint64_t value to little-endian - * @native: value to convert - */ -static inline leint64_t cpu_to_le64(uint64_t native) -{ - return CPU_TO_LE64(native); -} - -/** - * cpu_to_le32 - convert a uint32_t value to little-endian - * @native: value to convert - */ -static inline leint32_t cpu_to_le32(uint32_t native) -{ - return CPU_TO_LE32(native); -} - -/** - * cpu_to_le16 - convert a uint16_t value to little-endian - * @native: value to convert - */ -static inline leint16_t cpu_to_le16(uint16_t native) -{ - return CPU_TO_LE16(native); -} - -/** - * le64_to_cpu - convert a little-endian uint64_t value - * @le_val: little-endian value to convert - */ -static inline uint64_t le64_to_cpu(leint64_t le_val) -{ - return LE64_TO_CPU(le_val); -} - -/** - * le32_to_cpu - convert a little-endian uint32_t value - * @le_val: little-endian value to convert - */ -static inline uint32_t le32_to_cpu(leint32_t le_val) -{ - return LE32_TO_CPU(le_val); -} - -/** - * le16_to_cpu - convert a little-endian uint16_t value - * @le_val: little-endian value to convert - */ -static inline uint16_t le16_to_cpu(leint16_t le_val) -{ - return LE16_TO_CPU(le_val); -} - -/** - * cpu_to_be64 - convert a uint64_t value to big endian. - * @native: value to convert - */ -static inline beint64_t cpu_to_be64(uint64_t native) -{ - return CPU_TO_BE64(native); -} - -/** - * cpu_to_be32 - convert a uint32_t value to big endian. - * @native: value to convert - */ -static inline beint32_t cpu_to_be32(uint32_t native) -{ - return CPU_TO_BE32(native); -} - -/** - * cpu_to_be16 - convert a uint16_t value to big endian. - * @native: value to convert - */ -static inline beint16_t cpu_to_be16(uint16_t native) -{ - return CPU_TO_BE16(native); -} - -/** - * be64_to_cpu - convert a big-endian uint64_t value - * @be_val: big-endian value to convert - */ -static inline uint64_t be64_to_cpu(beint64_t be_val) -{ - return BE64_TO_CPU(be_val); -} - -/** - * be32_to_cpu - convert a big-endian uint32_t value - * @be_val: big-endian value to convert - */ -static inline uint32_t be32_to_cpu(beint32_t be_val) -{ - return BE32_TO_CPU(be_val); -} - -/** - * be16_to_cpu - convert a big-endian uint16_t value - * @be_val: big-endian value to convert - */ -static inline uint16_t be16_to_cpu(beint16_t be_val) -{ - return BE16_TO_CPU(be_val); -} - -/* Whichever they include first, they get these definitions. */ -#ifdef CCAN_SHORT_TYPES_H -/** - * be64/be32/be16 - 64/32/16 bit big-endian representation. - */ -typedef beint64_t be64; -typedef beint32_t be32; -typedef beint16_t be16; - -/** - * le64/le32/le16 - 64/32/16 bit little-endian representation. - */ -typedef leint64_t le64; -typedef leint32_t le32; -typedef leint16_t le16; -#endif -#endif /* CCAN_ENDIAN_H */ diff --git a/nostrdb/ccan/ccan/htable/LICENSE b/nostrdb/ccan/ccan/htable/LICENSE deleted file mode 120000 index dc314ecac0..0000000000 --- a/nostrdb/ccan/ccan/htable/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/LGPL-2.1 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/htable/_info b/nostrdb/ccan/ccan/htable/_info deleted file mode 100644 index ea11beb440..0000000000 --- a/nostrdb/ccan/ccan/htable/_info +++ /dev/null @@ -1,118 +0,0 @@ -#include "config.h" -#include -#include - -/** - * htable - hash table routines - * - * A hash table is an efficient structure for looking up keys. This version - * grows with usage and allows efficient deletion. - * - * Example: - * #include - * #include - * #include - * #include - * #include - * - * struct name_to_digit { - * const char *name; - * unsigned int val; - * }; - * - * static struct name_to_digit map[] = { - * { "zero", 0}, - * { "one", 1 }, - * { "two", 2 }, - * { "three", 3 }, - * { "four", 4 }, - * { "five", 5 }, - * { "six", 6 }, - * { "seven", 7 }, - * { "eight", 8 }, - * { "nine", 9 } - * }; - * - * // Wrapper for rehash function pointer. - * static size_t rehash(const void *e, void *unused) - * { - * (void)unused; - * return hash_string(((struct name_to_digit *)e)->name); - * } - * - * // Comparison function. - * static bool nameeq(const void *e, void *string) - * { - * return strcmp(((struct name_to_digit *)e)->name, string) == 0; - * } - * - * // We let them add their own aliases, eg. --alias=v=5 - * static void add_alias(struct htable *ht, const char *alias) - * { - * char *eq, *name; - * struct name_to_digit *n; - * - * n = malloc(sizeof(*n)); - * n->name = name = strdup(alias); - * - * eq = strchr(name, '='); - * if (!eq || ((n->val = atoi(eq+1)) == 0 && !strcmp(eq+1, "0"))) - * errx(1, "Usage: --alias=="); - * *eq = '\0'; - * htable_add(ht, hash_string(n->name), n); - * } - * - * int main(int argc, char *argv[]) - * { - * struct htable ht; - * int i; - * unsigned long val; - * - * if (argc < 2) - * errx(1, "Usage: %s [--alias==]... ...", - * argv[0]); - * - * // Create and populate hash table. - * htable_init(&ht, rehash, NULL); - * for (i = 0; i < (int)(sizeof(map)/sizeof(map[0])); i++) - * htable_add(&ht, hash_string(map[i].name), &map[i]); - * - * // Add any aliases to the hash table. - * for (i = 1; i < argc; i++) { - * if (!strncmp(argv[i], "--alias=", strlen("--alias="))) - * add_alias(&ht, argv[i] + strlen("--alias=")); - * else - * break; - * } - * - * // Find the other args in the hash table. - * for (val = 0; i < argc; i++) { - * struct name_to_digit *n; - * n = htable_get(&ht, hash_string(argv[i]), - * nameeq, argv[i]); - * if (!n) - * errx(1, "Invalid digit name %s", argv[i]); - * // Append it to the value we are building up. - * val *= 10; - * val += n->val; - * } - * printf("%lu\n", val); - * return 0; - * } - * - * License: LGPL (v2.1 or any later version) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/compiler\n"); - printf("ccan/str\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/htable/htable.c b/nostrdb/ccan/ccan/htable/htable.c deleted file mode 100644 index f631ffebf1..0000000000 --- a/nostrdb/ccan/ccan/htable/htable.c +++ /dev/null @@ -1,491 +0,0 @@ -/* Licensed under LGPLv2+ - see LICENSE file for details */ -#include -#include -#include -#include -#include -#include -#include -#include - -/* We use 0x1 as deleted marker. */ -#define HTABLE_DELETED (0x1) - -/* perfect_bitnum 63 means there's no perfect bitnum */ -#define NO_PERFECT_BIT (sizeof(uintptr_t) * CHAR_BIT - 1) - -static void *htable_default_alloc(struct htable *ht, size_t len) -{ - return calloc(len, 1); -} - -static void htable_default_free(struct htable *ht, void *p) -{ - free(p); -} - -static void *(*htable_alloc)(struct htable *, size_t) = htable_default_alloc; -static void (*htable_free)(struct htable *, void *) = htable_default_free; - -void htable_set_allocator(void *(*alloc)(struct htable *, size_t len), - void (*free)(struct htable *, void *p)) -{ - if (!alloc) - alloc = htable_default_alloc; - if (!free) - free = htable_default_free; - htable_alloc = alloc; - htable_free = free; -} - -/* We clear out the bits which are always the same, and put metadata there. */ -static inline uintptr_t get_extra_ptr_bits(const struct htable *ht, - uintptr_t e) -{ - return e & ht->common_mask; -} - -static inline void *get_raw_ptr(const struct htable *ht, uintptr_t e) -{ - return (void *)((e & ~ht->common_mask) | ht->common_bits); -} - -static inline uintptr_t make_hval(const struct htable *ht, - const void *p, uintptr_t bits) -{ - return ((uintptr_t)p & ~ht->common_mask) | bits; -} - -static inline bool entry_is_valid(uintptr_t e) -{ - return e > HTABLE_DELETED; -} - -static inline uintptr_t ht_perfect_mask(const struct htable *ht) -{ - return (uintptr_t)2 << ht->perfect_bitnum; -} - -static inline uintptr_t get_hash_ptr_bits(const struct htable *ht, - size_t hash) -{ - /* Shuffling the extra bits (as specified in mask) down the - * end is quite expensive. But the lower bits are redundant, so - * we fold the value first. */ - return (hash ^ (hash >> ht->bits)) - & ht->common_mask & ~ht_perfect_mask(ht); -} - -void htable_init(struct htable *ht, - size_t (*rehash)(const void *elem, void *priv), void *priv) -{ - struct htable empty = HTABLE_INITIALIZER(empty, NULL, NULL); - *ht = empty; - ht->rehash = rehash; - ht->priv = priv; - ht->table = &ht->common_bits; -} - -/* Fill to 87.5% */ -static inline size_t ht_max(const struct htable *ht) -{ - return ((size_t)7 << ht->bits) / 8; -} - -/* Clean deleted if we're full, and more than 12.5% deleted */ -static inline size_t ht_max_deleted(const struct htable *ht) -{ - return ((size_t)1 << ht->bits) / 8; -} - -bool htable_init_sized(struct htable *ht, - size_t (*rehash)(const void *, void *), - void *priv, size_t expect) -{ - htable_init(ht, rehash, priv); - - /* Don't go insane with sizing. */ - for (ht->bits = 1; ht_max(ht) < expect; ht->bits++) { - if (ht->bits == 30) - break; - } - - ht->table = htable_alloc(ht, sizeof(size_t) << ht->bits); - if (!ht->table) { - ht->table = &ht->common_bits; - return false; - } - (void)htable_debug(ht, HTABLE_LOC); - return true; -} - -void htable_clear(struct htable *ht) -{ - if (ht->table != &ht->common_bits) - htable_free(ht, (void *)ht->table); - htable_init(ht, ht->rehash, ht->priv); -} - -bool htable_copy_(struct htable *dst, const struct htable *src) -{ - uintptr_t *htable = htable_alloc(dst, sizeof(size_t) << src->bits); - - if (!htable) - return false; - - *dst = *src; - dst->table = htable; - memcpy(dst->table, src->table, sizeof(size_t) << src->bits); - return true; -} - -static size_t hash_bucket(const struct htable *ht, size_t h) -{ - return h & ((1 << ht->bits)-1); -} - -static void *htable_val(const struct htable *ht, - struct htable_iter *i, size_t hash, uintptr_t perfect) -{ - uintptr_t h2 = get_hash_ptr_bits(ht, hash) | perfect; - - while (ht->table[i->off]) { - if (ht->table[i->off] != HTABLE_DELETED) { - if (get_extra_ptr_bits(ht, ht->table[i->off]) == h2) - return get_raw_ptr(ht, ht->table[i->off]); - } - i->off = (i->off + 1) & ((1 << ht->bits)-1); - h2 &= ~perfect; - } - return NULL; -} - -void *htable_firstval_(const struct htable *ht, - struct htable_iter *i, size_t hash) -{ - i->off = hash_bucket(ht, hash); - return htable_val(ht, i, hash, ht_perfect_mask(ht)); -} - -void *htable_nextval_(const struct htable *ht, - struct htable_iter *i, size_t hash) -{ - i->off = (i->off + 1) & ((1 << ht->bits)-1); - return htable_val(ht, i, hash, 0); -} - -void *htable_first_(const struct htable *ht, struct htable_iter *i) -{ - for (i->off = 0; i->off < (size_t)1 << ht->bits; i->off++) { - if (entry_is_valid(ht->table[i->off])) - return get_raw_ptr(ht, ht->table[i->off]); - } - return NULL; -} - -void *htable_next_(const struct htable *ht, struct htable_iter *i) -{ - for (i->off++; i->off < (size_t)1 << ht->bits; i->off++) { - if (entry_is_valid(ht->table[i->off])) - return get_raw_ptr(ht, ht->table[i->off]); - } - return NULL; -} - -void *htable_prev_(const struct htable *ht, struct htable_iter *i) -{ - for (;;) { - if (!i->off) - return NULL; - i->off--; - if (entry_is_valid(ht->table[i->off])) - return get_raw_ptr(ht, ht->table[i->off]); - } -} - -/* Another bit currently in mask needs to be exposed, so that a bucket with p in - * it won't appear invalid */ -static COLD void unset_another_common_bit(struct htable *ht, - uintptr_t *maskdiff, - const void *p) -{ - size_t i; - - for (i = sizeof(uintptr_t) * CHAR_BIT - 1; i > 0; i--) { - if (((uintptr_t)p & ((uintptr_t)1 << i)) - && ht->common_mask & ~*maskdiff & ((uintptr_t)1 << i)) - break; - } - /* There must have been one, right? */ - assert(i > 0); - - *maskdiff |= ((uintptr_t)1 << i); -} - -/* We want to change the common mask: this fixes up the table */ -static COLD void fixup_table_common(struct htable *ht, uintptr_t maskdiff) -{ - size_t i; - uintptr_t bitsdiff; - -again: - bitsdiff = ht->common_bits & maskdiff; - - for (i = 0; i < (size_t)1 << ht->bits; i++) { - uintptr_t e; - if (!entry_is_valid(e = ht->table[i])) - continue; - - /* Clear the bits no longer in the mask, set them as - * expected. */ - e &= ~maskdiff; - e |= bitsdiff; - /* If this made it invalid, restart with more exposed */ - if (!entry_is_valid(e)) { - unset_another_common_bit(ht, &maskdiff, get_raw_ptr(ht, e)); - goto again; - } - ht->table[i] = e; - } - - /* Take away those bits from our mask, bits and perfect bit. */ - ht->common_mask &= ~maskdiff; - ht->common_bits &= ~maskdiff; - if (ht_perfect_mask(ht) & maskdiff) - ht->perfect_bitnum = NO_PERFECT_BIT; -} - -/* Limited recursion */ -static void ht_add(struct htable *ht, const void *new, size_t h); - -/* We tried to add this entry, but it looked invalid! We need to - * let another pointer bit through mask */ -static COLD void update_common_fix_invalid(struct htable *ht, const void *p, size_t h) -{ - uintptr_t maskdiff; - - assert(ht->elems != 0); - - maskdiff = 0; - unset_another_common_bit(ht, &maskdiff, p); - fixup_table_common(ht, maskdiff); - - /* Now won't recurse */ - ht_add(ht, p, h); -} - -/* This does not expand the hash table, that's up to caller. */ -static void ht_add(struct htable *ht, const void *new, size_t h) -{ - size_t i; - uintptr_t perfect = ht_perfect_mask(ht); - - i = hash_bucket(ht, h); - - while (entry_is_valid(ht->table[i])) { - perfect = 0; - i = (i + 1) & ((1 << ht->bits)-1); - } - ht->table[i] = make_hval(ht, new, get_hash_ptr_bits(ht, h)|perfect); - if (!entry_is_valid(ht->table[i])) - update_common_fix_invalid(ht, new, h); -} - -static COLD bool double_table(struct htable *ht) -{ - unsigned int i; - size_t oldnum = (size_t)1 << ht->bits; - uintptr_t *oldtable, e; - - oldtable = ht->table; - ht->table = htable_alloc(ht, sizeof(size_t) << (ht->bits+1)); - if (!ht->table) { - ht->table = oldtable; - return false; - } - ht->bits++; - - /* If we lost our "perfect bit", get it back now. */ - if (ht->perfect_bitnum == NO_PERFECT_BIT && ht->common_mask) { - for (i = 0; i < sizeof(ht->common_mask) * CHAR_BIT; i++) { - if (ht->common_mask & ((size_t)2 << i)) { - ht->perfect_bitnum = i; - break; - } - } - } - - if (oldtable != &ht->common_bits) { - for (i = 0; i < oldnum; i++) { - if (entry_is_valid(e = oldtable[i])) { - void *p = get_raw_ptr(ht, e); - ht_add(ht, p, ht->rehash(p, ht->priv)); - } - } - htable_free(ht, oldtable); - } - ht->deleted = 0; - - (void)htable_debug(ht, HTABLE_LOC); - return true; -} - -static COLD void rehash_table(struct htable *ht) -{ - size_t start, i; - uintptr_t e, perfect = ht_perfect_mask(ht); - - /* Beware wrap cases: we need to start from first empty bucket. */ - for (start = 0; ht->table[start]; start++); - - for (i = 0; i < (size_t)1 << ht->bits; i++) { - size_t h = (i + start) & ((1 << ht->bits)-1); - e = ht->table[h]; - if (!e) - continue; - if (e == HTABLE_DELETED) - ht->table[h] = 0; - else if (!(e & perfect)) { - void *p = get_raw_ptr(ht, e); - ht->table[h] = 0; - ht_add(ht, p, ht->rehash(p, ht->priv)); - } - } - ht->deleted = 0; - (void)htable_debug(ht, HTABLE_LOC); -} - -/* We stole some bits, now we need to put them back... */ -static COLD void update_common(struct htable *ht, const void *p) -{ - uintptr_t maskdiff; - - if (ht->elems == 0) { - ht->common_mask = -1; - ht->common_bits = ((uintptr_t)p & ht->common_mask); - ht->perfect_bitnum = 0; - (void)htable_debug(ht, HTABLE_LOC); - return; - } - - /* Find bits which are unequal to old common set. */ - maskdiff = ht->common_bits ^ ((uintptr_t)p & ht->common_mask); - - fixup_table_common(ht, maskdiff); - (void)htable_debug(ht, HTABLE_LOC); -} - -bool htable_add_(struct htable *ht, size_t hash, const void *p) -{ - /* Cannot insert NULL, or (void *)1. */ - assert(p); - assert(entry_is_valid((uintptr_t)p)); - - /* Getting too full? */ - if (ht->elems+1 + ht->deleted > ht_max(ht)) { - /* If we're more than 1/8 deleted, clean those, - * otherwise double table size. */ - if (ht->deleted > ht_max_deleted(ht)) - rehash_table(ht); - else if (!double_table(ht)) - return false; - } - if (((uintptr_t)p & ht->common_mask) != ht->common_bits) - update_common(ht, p); - - ht_add(ht, p, hash); - ht->elems++; - return true; -} - -bool htable_del_(struct htable *ht, size_t h, const void *p) -{ - struct htable_iter i; - void *c; - - for (c = htable_firstval(ht,&i,h); c; c = htable_nextval(ht,&i,h)) { - if (c == p) { - htable_delval(ht, &i); - return true; - } - } - return false; -} - -void htable_delval_(struct htable *ht, struct htable_iter *i) -{ - assert(i->off < (size_t)1 << ht->bits); - assert(entry_is_valid(ht->table[i->off])); - - ht->elems--; - /* Cheap test: if the next bucket is empty, don't need delete marker */ - if (ht->table[hash_bucket(ht, i->off+1)] != 0) { - ht->table[i->off] = HTABLE_DELETED; - ht->deleted++; - } else - ht->table[i->off] = 0; -} - -void *htable_pick_(const struct htable *ht, size_t seed, struct htable_iter *i) -{ - void *e; - struct htable_iter unwanted; - - if (!i) - i = &unwanted; - i->off = seed % ((size_t)1 << ht->bits); - e = htable_next(ht, i); - if (!e) - e = htable_first(ht, i); - return e; -} - -struct htable *htable_check(const struct htable *ht, const char *abortstr) -{ - void *p; - struct htable_iter i; - size_t n = 0; - - /* Use non-DEBUG versions here, to avoid infinite recursion with - * CCAN_HTABLE_DEBUG! */ - for (p = htable_first_(ht, &i); p; p = htable_next_(ht, &i)) { - struct htable_iter i2; - void *c; - size_t h = ht->rehash(p, ht->priv); - bool found = false; - - n++; - - /* Open-code htable_get to avoid CCAN_HTABLE_DEBUG */ - for (c = htable_firstval_(ht, &i2, h); - c; - c = htable_nextval_(ht, &i2, h)) { - if (c == p) { - found = true; - break; - } - } - - if (!found) { - if (abortstr) { - fprintf(stderr, - "%s: element %p in position %zu" - " cannot find itself\n", - abortstr, p, i.off); - abort(); - } - return NULL; - } - } - if (n != ht->elems) { - if (abortstr) { - fprintf(stderr, - "%s: found %zu elems, expected %zu\n", - abortstr, n, ht->elems); - abort(); - } - return NULL; - } - - return (struct htable *)ht; -} diff --git a/nostrdb/ccan/ccan/htable/htable.h b/nostrdb/ccan/ccan/htable/htable.h deleted file mode 100644 index faaf541bd8..0000000000 --- a/nostrdb/ccan/ccan/htable/htable.h +++ /dev/null @@ -1,290 +0,0 @@ -/* Licensed under LGPLv2+ - see LICENSE file for details */ -#ifndef CCAN_HTABLE_H -#define CCAN_HTABLE_H -#include "config.h" -#include -#include -#include -#include - -/* Define CCAN_HTABLE_DEBUG for expensive debugging checks on each call. */ -#define HTABLE_LOC __FILE__ ":" stringify(__LINE__) -#ifdef CCAN_HTABLE_DEBUG -#define htable_debug(h, loc) htable_check((h), loc) -#else -#define htable_debug(h, loc) ((void)loc, h) -#endif - -/** - * struct htable - private definition of a htable. - * - * It's exposed here so you can put it in your structures and so we can - * supply inline functions. - */ -struct htable { - size_t (*rehash)(const void *elem, void *priv); - void *priv; - unsigned int bits, perfect_bitnum; - size_t elems, deleted; - /* These are the bits which are the same in all pointers. */ - uintptr_t common_mask, common_bits; - uintptr_t *table; -}; - -/** - * HTABLE_INITIALIZER - static initialization for a hash table. - * @name: name of this htable. - * @rehash: hash function to use for rehashing. - * @priv: private argument to @rehash function. - * - * This is useful for setting up static and global hash tables. - * - * Example: - * // For simplicity's sake, say hash value is contents of elem. - * static size_t rehash(const void *elem, void *unused) - * { - * (void)unused; - * return *(size_t *)elem; - * } - * static struct htable ht = HTABLE_INITIALIZER(ht, rehash, NULL); - */ -#define HTABLE_INITIALIZER(name, rehash, priv) \ - { rehash, priv, 0, 0, 0, 0, -1, 0, &name.common_bits } - -/** - * htable_init - initialize an empty hash table. - * @ht: the hash table to initialize - * @rehash: hash function to use for rehashing. - * @priv: private argument to @rehash function. - */ -void htable_init(struct htable *ht, - size_t (*rehash)(const void *elem, void *priv), void *priv); - -/** - * htable_init_sized - initialize an empty hash table of given size. - * @ht: the hash table to initialize - * @rehash: hash function to use for rehashing. - * @priv: private argument to @rehash function. - * @size: the number of element. - * - * If this returns false, @ht is still usable, but may need to do reallocation - * upon an add. If this returns true, it will not need to reallocate within - * @size htable_adds. - */ -bool htable_init_sized(struct htable *ht, - size_t (*rehash)(const void *elem, void *priv), - void *priv, size_t size); - -/** - * htable_count - count number of entries in a hash table. - * @ht: the hash table - */ -static inline size_t htable_count(const struct htable *ht) -{ - return ht->elems; -} - -/** - * htable_clear - empty a hash table. - * @ht: the hash table to clear - * - * This doesn't do anything to any pointers left in it. - */ -void htable_clear(struct htable *ht); - - -/** - * htable_check - check hash table for consistency - * @ht: the htable - * @abortstr: the location to print on aborting, or NULL. - * - * Because hash tables have redundant information, consistency checking that - * each element is in the correct location can be done. This is useful as a - * debugging check. If @abortstr is non-NULL, that will be printed in a - * diagnostic if the htable is inconsistent, and the function will abort. - * - * Returns the htable if it is consistent, NULL if not (it can never return - * NULL if @abortstr is set). - */ -struct htable *htable_check(const struct htable *ht, const char *abortstr); - -/** - * htable_copy - duplicate a hash table. - * @dst: the hash table to overwrite - * @src: the hash table to copy - * - * Only fails on out-of-memory. - * - * Equivalent to (but faster than): - * if (!htable_init_sized(dst, src->rehash, src->priv, 1U << src->bits)) - * return false; - * v = htable_first(src, &i); - * while (v) { - * htable_add(dst, v); - * v = htable_next(src, i); - * } - * return true; - */ -#define htable_copy(dst, src) htable_copy_(dst, htable_debug(src, HTABLE_LOC)) -bool htable_copy_(struct htable *dst, const struct htable *src); - -/** - * htable_add - add a pointer into a hash table. - * @ht: the htable - * @hash: the hash value of the object - * @p: the non-NULL pointer (also cannot be (void *)1). - * - * Also note that this can only fail due to allocation failure. Otherwise, it - * returns true. - */ -#define htable_add(ht, hash, p) \ - htable_add_(htable_debug(ht, HTABLE_LOC), hash, p) -bool htable_add_(struct htable *ht, size_t hash, const void *p); - -/** - * htable_del - remove a pointer from a hash table - * @ht: the htable - * @hash: the hash value of the object - * @p: the pointer - * - * Returns true if the pointer was found (and deleted). - */ -#define htable_del(ht, hash, p) \ - htable_del_(htable_debug(ht, HTABLE_LOC), hash, p) -bool htable_del_(struct htable *ht, size_t hash, const void *p); - -/** - * struct htable_iter - iterator or htable_first or htable_firstval etc. - * - * This refers to a location inside the hashtable. - */ -struct htable_iter { - size_t off; -}; - -/** - * htable_firstval - find a candidate for a given hash value - * @htable: the hashtable - * @i: the struct htable_iter to initialize - * @hash: the hash value - * - * You'll need to check the value is what you want; returns NULL if none. - * See Also: - * htable_delval() - */ -#define htable_firstval(htable, i, hash) \ - htable_firstval_(htable_debug(htable, HTABLE_LOC), i, hash) - -void *htable_firstval_(const struct htable *htable, - struct htable_iter *i, size_t hash); - -/** - * htable_nextval - find another candidate for a given hash value - * @htable: the hashtable - * @i: the struct htable_iter to initialize - * @hash: the hash value - * - * You'll need to check the value is what you want; returns NULL if no more. - */ -#define htable_nextval(htable, i, hash) \ - htable_nextval_(htable_debug(htable, HTABLE_LOC), i, hash) -void *htable_nextval_(const struct htable *htable, - struct htable_iter *i, size_t hash); - -/** - * htable_get - find an entry in the hash table - * @ht: the hashtable - * @h: the hash value of the entry - * @cmp: the comparison function - * @ptr: the pointer to hand to the comparison function. - * - * Convenient inline wrapper for htable_firstval/htable_nextval loop. - */ -static inline void *htable_get(const struct htable *ht, - size_t h, - bool (*cmp)(const void *candidate, void *ptr), - const void *ptr) -{ - struct htable_iter i; - void *c; - - for (c = htable_firstval(ht,&i,h); c; c = htable_nextval(ht,&i,h)) { - if (cmp(c, (void *)ptr)) - return c; - } - return NULL; -} - -/** - * htable_first - find an entry in the hash table - * @ht: the hashtable - * @i: the struct htable_iter to initialize - * - * Get an entry in the hashtable; NULL if empty. - */ -#define htable_first(htable, i) \ - htable_first_(htable_debug(htable, HTABLE_LOC), i) -void *htable_first_(const struct htable *htable, struct htable_iter *i); - -/** - * htable_next - find another entry in the hash table - * @ht: the hashtable - * @i: the struct htable_iter to use - * - * Get another entry in the hashtable; NULL if all done. - * This is usually used after htable_first or prior non-NULL htable_next. - */ -#define htable_next(htable, i) \ - htable_next_(htable_debug(htable, HTABLE_LOC), i) -void *htable_next_(const struct htable *htable, struct htable_iter *i); - -/** - * htable_prev - find the previous entry in the hash table - * @ht: the hashtable - * @i: the struct htable_iter to use - * - * Get previous entry in the hashtable; NULL if all done. - * - * "previous" here only means the item that would have been returned by - * htable_next() before the item it returned most recently. - * - * This is usually used in the middle of (or after) a htable_next iteration and - * to "unwind" actions taken. - */ -#define htable_prev(htable, i) \ - htable_prev_(htable_debug(htable, HTABLE_LOC), i) -void *htable_prev_(const struct htable *htable, struct htable_iter *i); - -/** - * htable_delval - remove an iterated pointer from a hash table - * @ht: the htable - * @i: the htable_iter - * - * Usually used to delete a hash entry after it has been found with - * htable_firstval etc. - */ -#define htable_delval(htable, i) \ - htable_delval_(htable_debug(htable, HTABLE_LOC), i) -void htable_delval_(struct htable *ht, struct htable_iter *i); - -/** - * htable_pick - set iterator to a random valid entry. - * @ht: the htable - * @seed: a random number to use. - * @i: the htable_iter which is output (or NULL). - * - * Usually used with htable_delval to delete a random entry. Returns - * NULL iff the table is empty, otherwise a random entry. - */ -#define htable_pick(htable, seed, i) \ - htable_pick_(htable_debug(htable, HTABLE_LOC), seed, i) -void *htable_pick_(const struct htable *ht, size_t seed, struct htable_iter *i); - -/** - * htable_set_allocator - set calloc/free functions. - * @alloc: allocator to use, must zero memory! - * @free: unallocator to use (@p is NULL or a return from @alloc) - */ -void htable_set_allocator(void *(*alloc)(struct htable *, size_t len), - void (*free)(struct htable *, void *p)); -#endif /* CCAN_HTABLE_H */ diff --git a/nostrdb/ccan/ccan/htable/htable_type.h b/nostrdb/ccan/ccan/htable/htable_type.h deleted file mode 100644 index 0aacb7f334..0000000000 --- a/nostrdb/ccan/ccan/htable/htable_type.h +++ /dev/null @@ -1,188 +0,0 @@ -/* Licensed under LGPLv2+ - see LICENSE file for details */ -#ifndef CCAN_HTABLE_TYPE_H -#define CCAN_HTABLE_TYPE_H -#include -#include -#include "config.h" - -/** - * HTABLE_DEFINE_TYPE - create a set of htable ops for a type - * @type: a type whose pointers will be values in the hash. - * @keyof: a function/macro to extract a key: @keyof(const type *elem) - * @hashfn: a hash function for a @key: size_t @hashfn(const *) - * @eqfn: an equality function keys: bool @eqfn(const type *, const *) - * @prefix: a prefix for all the functions to define (of form _*) - * - * NULL values may not be placed into the hash table. - * - * This defines the type hashtable type and an iterator type: - * struct ; - * struct _iter; - * - * It also defines initialization and freeing functions: - * void _init(struct *); - * bool _init_sized(struct *, size_t); - * void _clear(struct *); - * bool _copy(struct *dst, const struct *src); - * - * Count entries: - * size_t _count(const struct *ht); - * - * Add function only fails if we run out of memory: - * bool _add(struct *ht, const *e); - * - * Delete and delete-by key return true if it was in the set: - * bool _del(struct *ht, const *e); - * bool _delkey(struct *ht, const *k); - * - * Delete by iterator: - * bool _delval(struct *ht, struct _iter *i); - * - * Find and return the (first) matching element, or NULL: - * type *_get(const struct @name *ht, const *k); - * - * Find and return all matching elements, or NULL: - * type *_getfirst(const struct @name *ht, const *k, - * struct _iter *i); - * type *_getnext(const struct @name *ht, const *k, - * struct _iter *i); - * - * Iteration over hashtable is also supported: - * type *_first(const struct *ht, struct _iter *i); - * type *_next(const struct *ht, struct _iter *i); - * type *_prev(const struct *ht, struct _iter *i); - * type *_pick(const struct *ht, size_t seed, - * struct _iter *i); - * It's currently safe to iterate over a changing hashtable, but you might - * miss an element. Iteration isn't very efficient, either. - * - * You can use HTABLE_INITIALIZER like so: - * struct ht = { HTABLE_INITIALIZER(ht.raw, _hash, NULL) }; - */ -#define HTABLE_DEFINE_TYPE(type, keyof, hashfn, eqfn, name) \ - struct name { struct htable raw; }; \ - struct name##_iter { struct htable_iter i; }; \ - static inline size_t name##_hash(const void *elem, void *priv) \ - { \ - (void)priv; \ - return hashfn(keyof((const type *)elem)); \ - } \ - static inline UNNEEDED void name##_init(struct name *ht) \ - { \ - htable_init(&ht->raw, name##_hash, NULL); \ - } \ - static inline UNNEEDED bool name##_init_sized(struct name *ht, \ - size_t s) \ - { \ - return htable_init_sized(&ht->raw, name##_hash, NULL, s); \ - } \ - static inline UNNEEDED size_t name##_count(const struct name *ht) \ - { \ - return htable_count(&ht->raw); \ - } \ - static inline UNNEEDED void name##_clear(struct name *ht) \ - { \ - htable_clear(&ht->raw); \ - } \ - static inline UNNEEDED bool name##_copy(struct name *dst, \ - const struct name *src) \ - { \ - return htable_copy(&dst->raw, &src->raw); \ - } \ - static inline bool name##_add(struct name *ht, const type *elem) \ - { \ - return htable_add(&ht->raw, hashfn(keyof(elem)), elem); \ - } \ - static inline UNNEEDED bool name##_del(struct name *ht, \ - const type *elem) \ - { \ - return htable_del(&ht->raw, hashfn(keyof(elem)), elem); \ - } \ - static inline UNNEEDED type *name##_get(const struct name *ht, \ - const HTABLE_KTYPE(keyof, type) k) \ - { \ - struct htable_iter i; \ - size_t h = hashfn(k); \ - void *c; \ - \ - for (c = htable_firstval(&ht->raw,&i,h); \ - c; \ - c = htable_nextval(&ht->raw,&i,h)) { \ - if (eqfn(c, k)) \ - return c; \ - } \ - return NULL; \ - } \ - static inline UNNEEDED type *name##_getmatch_(const struct name *ht, \ - const HTABLE_KTYPE(keyof, type) k, \ - size_t h, \ - type *v, \ - struct name##_iter *iter) \ - { \ - while (v) { \ - if (eqfn(v, k)) \ - break; \ - v = htable_nextval(&ht->raw, &iter->i, h); \ - } \ - return v; \ - } \ - static inline UNNEEDED type *name##_getfirst(const struct name *ht, \ - const HTABLE_KTYPE(keyof, type) k, \ - struct name##_iter *iter) \ - { \ - size_t h = hashfn(k); \ - type *v = htable_firstval(&ht->raw, &iter->i, h); \ - return name##_getmatch_(ht, k, h, v, iter); \ - } \ - static inline UNNEEDED type *name##_getnext(const struct name *ht, \ - const HTABLE_KTYPE(keyof, type) k, \ - struct name##_iter *iter) \ - { \ - size_t h = hashfn(k); \ - type *v = htable_nextval(&ht->raw, &iter->i, h); \ - return name##_getmatch_(ht, k, h, v, iter); \ - } \ - static inline UNNEEDED bool name##_delkey(struct name *ht, \ - const HTABLE_KTYPE(keyof, type) k) \ - { \ - type *elem = name##_get(ht, k); \ - if (elem) \ - return name##_del(ht, elem); \ - return false; \ - } \ - static inline UNNEEDED void name##_delval(struct name *ht, \ - struct name##_iter *iter) \ - { \ - htable_delval(&ht->raw, &iter->i); \ - } \ - static inline UNNEEDED type *name##_pick(const struct name *ht, \ - size_t seed, \ - struct name##_iter *iter) \ - { \ - return htable_pick(&ht->raw, seed, iter ? &iter->i : NULL); \ - } \ - static inline UNNEEDED type *name##_first(const struct name *ht, \ - struct name##_iter *iter) \ - { \ - return htable_first(&ht->raw, &iter->i); \ - } \ - static inline UNNEEDED type *name##_next(const struct name *ht, \ - struct name##_iter *iter) \ - { \ - return htable_next(&ht->raw, &iter->i); \ - } \ - static inline UNNEEDED type *name##_prev(const struct name *ht, \ - struct name##_iter *iter) \ - { \ - return htable_prev(&ht->raw, &iter->i); \ - } - -#if HAVE_TYPEOF -#define HTABLE_KTYPE(keyof, type) typeof(keyof((const type *)NULL)) -#else -/* Assumes keys are a pointer: if not, override. */ -#ifndef HTABLE_KTYPE -#define HTABLE_KTYPE(keyof, type) void * -#endif -#endif -#endif /* CCAN_HTABLE_TYPE_H */ diff --git a/nostrdb/ccan/ccan/htable/tools/Makefile b/nostrdb/ccan/ccan/htable/tools/Makefile deleted file mode 100644 index c8a428a756..0000000000 --- a/nostrdb/ccan/ccan/htable/tools/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -CCANDIR=../../.. -CFLAGS=-Wall -Werror -O3 -I$(CCANDIR) -#CFLAGS=-Wall -Werror -g -I$(CCANDIR) - -CCAN_OBJS:=ccan-tal.o ccan-tal-str.o ccan-tal-grab_file.o ccan-take.o ccan-time.o ccan-str.o ccan-noerr.o ccan-list.o - -all: speed stringspeed hsearchspeed density - -speed: speed.o hash.o $(CCAN_OBJS) -density: density.o hash.o $(CCAN_OBJS) - -speed.o: speed.c ../htable.h ../htable.c - -hash.o: ../../hash/hash.c - $(CC) $(CFLAGS) -c -o $@ $< - -stringspeed: stringspeed.o hash.o $(CCAN_OBJS) - -stringspeed.o: speed.c ../htable.h ../htable.c - -hsearchspeed: hsearchspeed.o $(CCAN_OBJS) - -clean: - rm -f stringspeed speed hsearchspeed *.o - -ccan-tal.o: $(CCANDIR)/ccan/tal/tal.c - $(CC) $(CFLAGS) -c -o $@ $< -ccan-tal-str.o: $(CCANDIR)/ccan/tal/str/str.c - $(CC) $(CFLAGS) -c -o $@ $< -ccan-take.o: $(CCANDIR)/ccan/take/take.c - $(CC) $(CFLAGS) -c -o $@ $< -ccan-tal-grab_file.o: $(CCANDIR)/ccan/tal/grab_file/grab_file.c - $(CC) $(CFLAGS) -c -o $@ $< -ccan-time.o: $(CCANDIR)/ccan/time/time.c - $(CC) $(CFLAGS) -c -o $@ $< -ccan-list.o: $(CCANDIR)/ccan/list/list.c - $(CC) $(CFLAGS) -c -o $@ $< -ccan-str.o: $(CCANDIR)/ccan/str/str.c - $(CC) $(CFLAGS) -c -o $@ $< -ccan-noerr.o: $(CCANDIR)/ccan/noerr/noerr.c - $(CC) $(CFLAGS) -c -o $@ $< diff --git a/nostrdb/ccan/ccan/htable/tools/density.c b/nostrdb/ccan/ccan/htable/tools/density.c deleted file mode 100644 index 5f7400b9ec..0000000000 --- a/nostrdb/ccan/ccan/htable/tools/density.c +++ /dev/null @@ -1,107 +0,0 @@ -/* Density measurements for hashtables. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* We don't actually hash objects: we put values in as if they were ptrs */ -static uintptr_t key(const ptrint_t *obj) -{ - return ptr2int(obj); -} - -static size_t hash_uintptr(uintptr_t key) -{ - return hashl(&key, 1, 0); -} - -static bool cmp(const ptrint_t *p, uintptr_t k) -{ - return key(p) == k; -} - -HTABLE_DEFINE_TYPE(ptrint_t, key, hash_uintptr, cmp, htable_ptrint); - -/* Nanoseconds per operation */ -static size_t normalize(const struct timeabs *start, - const struct timeabs *stop, - unsigned int num) -{ - return time_to_nsec(time_divide(time_between(*stop, *start), num)); -} - -static size_t average_run(const struct htable_ptrint *ht, size_t count, size_t *longest) -{ - size_t i, total = 0; - - *longest = 0; - for (i = 0; i < count; i++) { - size_t h = hash_uintptr(i + 2); - size_t run = 1; - - while (get_raw_ptr(&ht->raw, ht->raw.table[h % ((size_t)1 << ht->raw.bits)]) != int2ptr(i + 2)) { - h++; - run++; - } - total += run; - if (run > *longest) - *longest = run; - } - return total / count; -} - -int main(int argc, char *argv[]) -{ - unsigned int i; - size_t num; - struct timeabs start, stop; - struct htable_ptrint ht; - - if (argc != 2) - errx(1, "Usage: density "); - - num = atoi(argv[1]); - - printf("Total buckets, buckets used, nanoseconds search time per element, avg run, longest run\n"); - for (i = 1; i <= 99; i++) { - uintptr_t j; - struct htable_ptrint_iter it; - size_t count, avg_run, longest_run; - ptrint_t *p; - - htable_ptrint_init_sized(&ht, num * 3 / 4); - assert((1 << ht.raw.bits) == num); - - /* Can't put 0 or 1 in the hash table: multiply by a prime. */ - for (j = 0; j < num * i / 100; j++) { - htable_ptrint_add(&ht, int2ptr(j + 2)); - /* stop it from doubling! */ - ht.raw.elems = num / 2; - } - /* Must not have changed! */ - assert((1 << ht.raw.bits) == num); - - /* Clean cache */ - count = 0; - for (p = htable_ptrint_first(&ht, &it); p; p = htable_ptrint_next(&ht, &it)) - count++; - assert(count == num * i / 100); - start = time_now(); - for (j = 0; j < count; j++) - assert(htable_ptrint_get(&ht, j + 2)); - stop = time_now(); - avg_run = average_run(&ht, count, &longest_run); - printf("%zu,%zu,%zu,%zu,%zu\n", - num, count, normalize(&start, &stop, count), avg_run, longest_run); - fflush(stdout); - htable_ptrint_clear(&ht); - } - - return 0; -} diff --git a/nostrdb/ccan/ccan/htable/tools/hsearchspeed.c b/nostrdb/ccan/ccan/htable/tools/hsearchspeed.c deleted file mode 100644 index 88280114f3..0000000000 --- a/nostrdb/ccan/ccan/htable/tools/hsearchspeed.c +++ /dev/null @@ -1,95 +0,0 @@ -/* Simple speed tests for a hash of strings using hsearch */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* Nanoseconds per operation */ -static size_t normalize(const struct timeabs *start, - const struct timeabs *stop, - unsigned int num) -{ - return time_to_nsec(time_divide(time_between(*stop, *start), num)); -} - -int main(int argc, char *argv[]) -{ - size_t i, j, num; - struct timeabs start, stop; - char **w; - ENTRY *words, *misswords; - - w = tal_strsplit(NULL, grab_file(NULL, - argv[1] ? argv[1] : "/usr/share/dict/words"), "\n", STR_NO_EMPTY); - num = tal_count(w) - 1; - printf("%zu words\n", num); - - hcreate(num+num/3); - - words = tal_arr(w, ENTRY, num); - for (i = 0; i < num; i++) { - words[i].key = w[i]; - words[i].data = words[i].key; - } - - /* Append and prepend last char for miss testing. */ - misswords = tal_arr(w, ENTRY, num); - for (i = 0; i < num; i++) { - char lastc; - if (strlen(w[i])) - lastc = w[i][strlen(w[i])-1]; - else - lastc = 'z'; - misswords[i].key = tal_fmt(misswords, "%c%s%c%c", - lastc, w[i], lastc, lastc); - } - - printf("#01: Initial insert: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - hsearch(words[i], ENTER); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#02: Initial lookup (match): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - if (hsearch(words[i], FIND)->data != words[i].data) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#03: Initial lookup (miss): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) { - if (hsearch(misswords[i], FIND)) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - /* Lookups in order are very cache-friendly for judy; try random */ - printf("#04: Initial lookup (random): "); - fflush(stdout); - start = time_now(); - for (i = 0, j = 0; i < num; i++, j = (j + 10007) % num) - if (hsearch(words[i], FIND)->data != words[i].data) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - return 0; -} diff --git a/nostrdb/ccan/ccan/htable/tools/speed.c b/nostrdb/ccan/ccan/htable/tools/speed.c deleted file mode 100644 index e185b6f69e..0000000000 --- a/nostrdb/ccan/ccan/htable/tools/speed.c +++ /dev/null @@ -1,370 +0,0 @@ -/* Simple speed tests for hashtables. */ -#include -#include -#include -#include -#include -#include -#include -#include - -static size_t hashcount; -struct object { - /* The key. */ - unsigned int key; - - /* Some contents. Doubles as consistency check. */ - struct object *self; -}; - -static const unsigned int *objkey(const struct object *obj) -{ - return &obj->key; -} - -static size_t hash_obj(const unsigned int *key) -{ - hashcount++; - return hashl(key, 1, 0); -} - -static bool cmp(const struct object *object, const unsigned int *key) -{ - return object->key == *key; -} - -HTABLE_DEFINE_TYPE(struct object, objkey, hash_obj, cmp, htable_obj); - -static unsigned int popcount(unsigned long val) -{ -#if HAVE_BUILTIN_POPCOUNTL - return __builtin_popcountl(val); -#else - if (sizeof(long) == sizeof(u64)) { - u64 v = val; - v = (v & 0x5555555555555555ULL) - + ((v >> 1) & 0x5555555555555555ULL); - v = (v & 0x3333333333333333ULL) - + ((v >> 1) & 0x3333333333333333ULL); - v = (v & 0x0F0F0F0F0F0F0F0FULL) - + ((v >> 1) & 0x0F0F0F0F0F0F0F0FULL); - v = (v & 0x00FF00FF00FF00FFULL) - + ((v >> 1) & 0x00FF00FF00FF00FFULL); - v = (v & 0x0000FFFF0000FFFFULL) - + ((v >> 1) & 0x0000FFFF0000FFFFULL); - v = (v & 0x00000000FFFFFFFFULL) - + ((v >> 1) & 0x00000000FFFFFFFFULL); - return v; - } - val = (val & 0x55555555ULL) + ((val >> 1) & 0x55555555ULL); - val = (val & 0x33333333ULL) + ((val >> 1) & 0x33333333ULL); - val = (val & 0x0F0F0F0FULL) + ((val >> 1) & 0x0F0F0F0FULL); - val = (val & 0x00FF00FFULL) + ((val >> 1) & 0x00FF00FFULL); - val = (val & 0x0000FFFFULL) + ((val >> 1) & 0x0000FFFFULL); - return val; -#endif -} - -static size_t perfect(const struct htable *ht) -{ - size_t i, placed_perfect = 0; - - for (i = 0; i < ((size_t)1 << ht->bits); i++) { - if (!entry_is_valid(ht->table[i])) - continue; - if (hash_bucket(ht, ht->rehash(get_raw_ptr(ht, ht->table[i]), - ht->priv)) == i) { - assert((ht->table[i] & ht_perfect_mask(ht)) - == ht_perfect_mask(ht)); - placed_perfect++; - } - } - return placed_perfect; -} - -static size_t count_deleted(const struct htable *ht) -{ - size_t i, delete_markers = 0; - - for (i = 0; i < ((size_t)1 << ht->bits); i++) { - if (ht->table[i] == HTABLE_DELETED) - delete_markers++; - } - return delete_markers; -} - -/* Nanoseconds per operation */ -static size_t normalize(const struct timeabs *start, - const struct timeabs *stop, - unsigned int num) -{ - return time_to_nsec(time_divide(time_between(*stop, *start), num)); -} - -static size_t worst_run(struct htable *ht, size_t *deleted) -{ - size_t longest = 0, len = 0, this_del = 0, i; - - *deleted = 0; - /* This doesn't take into account end-wrap, but gives an idea. */ - for (i = 0; i < ((size_t)1 << ht->bits); i++) { - if (ht->table[i]) { - len++; - if (ht->table[i] == HTABLE_DELETED) - this_del++; - } else { - if (len > longest) { - longest = len; - *deleted = this_del; - } - len = 0; - this_del = 0; - } - } - return longest; -} - -int main(int argc, char *argv[]) -{ - struct object *objs; - unsigned int i, j; - size_t num, deleted; - struct timeabs start, stop; - struct htable_obj ht; - bool make_dumb = false; - - if (argv[1] && strcmp(argv[1], "--dumb") == 0) { - argv++; - make_dumb = true; - } - num = argv[1] ? atoi(argv[1]) : 1000000; - objs = calloc(num, sizeof(objs[0])); - - for (i = 0; i < num; i++) { - objs[i].key = i; - objs[i].self = &objs[i]; - } - - htable_obj_init(&ht); - - printf("Initial insert: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - htable_obj_add(&ht, objs[i].self); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - printf("Details: hash size %u, mask bits %u, perfect %.0f%%\n", - 1U << ht.raw.bits, popcount(ht.raw.common_mask), - perfect(&ht.raw) * 100.0 / ht.raw.elems); - - if (make_dumb) { - /* Screw with mask, to hobble us. */ - update_common(&ht.raw, (void *)~ht.raw.common_bits); - printf("Details: DUMB MODE: mask bits %u\n", - popcount(ht.raw.common_mask)); - } - - printf("Initial lookup (match): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - if (htable_obj_get(&ht, &i)->self != objs[i].self) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("Initial lookup (miss): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) { - unsigned int n = i + num; - if (htable_obj_get(&ht, &n)) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - /* Lookups in order are very cache-friendly for judy; try random */ - printf("Initial lookup (random): "); - fflush(stdout); - start = time_now(); - for (i = 0, j = 0; i < num; i++, j = (j + 10007) % num) - if (htable_obj_get(&ht, &j)->self != &objs[j]) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - hashcount = 0; - printf("Initial delete all: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - if (!htable_obj_del(&ht, objs[i].self)) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - printf("Details: rehashes %zu\n", hashcount); - - printf("Initial re-inserting: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - htable_obj_add(&ht, objs[i].self); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - hashcount = 0; - printf("Deleting first half: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i+=2) - if (!htable_obj_del(&ht, objs[i].self)) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("Details: rehashes %zu, delete markers %zu\n", - hashcount, count_deleted(&ht.raw)); - - printf("Adding (a different) half: "); - fflush(stdout); - - for (i = 0; i < num; i+=2) - objs[i].key = num+i; - - start = time_now(); - for (i = 0; i < num; i+=2) - htable_obj_add(&ht, objs[i].self); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("Details: delete markers %zu, perfect %.0f%%\n", - count_deleted(&ht.raw), perfect(&ht.raw) * 100.0 / ht.raw.elems); - - printf("Lookup after half-change (match): "); - fflush(stdout); - start = time_now(); - for (i = 1; i < num; i+=2) - if (htable_obj_get(&ht, &i)->self != objs[i].self) - abort(); - for (i = 0; i < num; i+=2) { - unsigned int n = i + num; - if (htable_obj_get(&ht, &n)->self != objs[i].self) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("Lookup after half-change (miss): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) { - unsigned int n = i + num * 2; - if (htable_obj_get(&ht, &n)) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - /* Hashtables with delete markers can fill with markers over time. - * so do some changes to see how it operates in long-term. */ - for (i = 0; i < 5; i++) { - if (i == 0) { - /* We don't measure this: jmap is different. */ - printf("Details: initial churn\n"); - } else { - printf("Churning %s time: ", - i == 1 ? "second" - : i == 2 ? "third" - : i == 3 ? "fourth" - : "fifth"); - fflush(stdout); - } - start = time_now(); - for (j = 0; j < num; j++) { - if (!htable_obj_del(&ht, &objs[j])) - abort(); - objs[j].key = num*i+j; - if (!htable_obj_add(&ht, &objs[j])) - abort(); - } - stop = time_now(); - if (i != 0) - printf(" %zu ns\n", normalize(&start, &stop, num)); - } - - /* Spread out the keys more to try to make it harder. */ - printf("Details: reinserting with spread\n"); - for (i = 0; i < num; i++) { - if (!htable_obj_del(&ht, objs[i].self)) - abort(); - objs[i].key = num * 5 + i * 9; - if (!htable_obj_add(&ht, objs[i].self)) - abort(); - } - printf("Details: delete markers %zu, perfect %.0f%%\n", - count_deleted(&ht.raw), perfect(&ht.raw) * 100.0 / ht.raw.elems); - i = worst_run(&ht.raw, &deleted); - printf("Details: worst run %u (%zu deleted)\n", i, deleted); - - printf("Lookup after churn & spread (match): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) { - unsigned int n = num * 5 + i * 9; - if (htable_obj_get(&ht, &n)->self != objs[i].self) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("Lookup after churn & spread (miss): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) { - unsigned int n = num * (5 + 9) + i * 9; - if (htable_obj_get(&ht, &n)) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("Lookup after churn & spread (random): "); - fflush(stdout); - start = time_now(); - for (i = 0, j = 0; i < num; i++, j = (j + 10007) % num) { - unsigned int n = num * 5 + j * 9; - if (htable_obj_get(&ht, &n)->self != &objs[j]) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - hashcount = 0; - printf("Deleting half after churn & spread: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i+=2) - if (!htable_obj_del(&ht, objs[i].self)) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("Adding (a different) half after churn & spread: "); - fflush(stdout); - - for (i = 0; i < num; i+=2) - objs[i].key = num*6+i*9; - - start = time_now(); - for (i = 0; i < num; i+=2) - htable_obj_add(&ht, objs[i].self); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("Details: delete markers %zu, perfect %.0f%%\n", - count_deleted(&ht.raw), perfect(&ht.raw) * 100.0 / ht.raw.elems); - - return 0; -} diff --git a/nostrdb/ccan/ccan/htable/tools/stringspeed.c b/nostrdb/ccan/ccan/htable/tools/stringspeed.c deleted file mode 100644 index c6ca10f523..0000000000 --- a/nostrdb/ccan/ccan/htable/tools/stringspeed.c +++ /dev/null @@ -1,240 +0,0 @@ -/* Simple speed tests for a hash of strings. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static size_t hashcount; - -static const char *strkey(const char *str) -{ - return str; -} - -static size_t hash_str(const char *key) -{ - hashcount++; - return hash(key, strlen(key), 0); -} - -static bool cmp(const char *obj, const char *key) -{ - return strcmp(obj, key) == 0; -} - -HTABLE_DEFINE_TYPE(char, strkey, hash_str, cmp, htable_str); - -/* Nanoseconds per operation */ -static size_t normalize(const struct timeabs *start, - const struct timeabs *stop, - unsigned int num) -{ - return time_to_nsec(time_divide(time_between(*stop, *start), num)); -} - -int main(int argc, char *argv[]) -{ - size_t i, j, num; - struct timeabs start, stop; - struct htable_str ht; - char **words, **misswords; - - words = tal_strsplit(NULL, grab_file(NULL, - argv[1] ? argv[1] : "/usr/share/dict/words"), "\n", - STR_NO_EMPTY); - htable_str_init(&ht); - num = tal_count(words) - 1; - /* Note that on my system, num is just > 98304, where we double! */ - printf("%zu words\n", num); - - /* Append and prepend last char for miss testing. */ - misswords = tal_arr(words, char *, num); - for (i = 0; i < num; i++) { - char lastc; - if (strlen(words[i])) - lastc = words[i][strlen(words[i])-1]; - else - lastc = 'z'; - misswords[i] = tal_fmt(misswords, "%c%s%c%c", - lastc, words[i], lastc, lastc); - } - - printf("#01: Initial insert: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - htable_str_add(&ht, words[i]); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("Bytes allocated: %zu\n", - sizeof(ht.raw.table[0]) << ht.raw.bits); - - printf("#02: Initial lookup (match): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - if (htable_str_get(&ht, words[i]) != words[i]) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#03: Initial lookup (miss): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) { - if (htable_str_get(&ht, misswords[i])) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - /* Lookups in order are very cache-friendly for judy; try random */ - printf("#04: Initial lookup (random): "); - fflush(stdout); - start = time_now(); - for (i = 0, j = 0; i < num; i++, j = (j + 10007) % num) - if (htable_str_get(&ht, words[j]) != words[j]) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - hashcount = 0; - printf("#05: Initial delete all: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - if (!htable_str_del(&ht, words[i])) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#06: Initial re-inserting: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - htable_str_add(&ht, words[i]); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - hashcount = 0; - printf("#07: Deleting first half: "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i+=2) - if (!htable_str_del(&ht, words[i])) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#08: Adding (a different) half: "); - fflush(stdout); - - start = time_now(); - for (i = 0; i < num; i+=2) - htable_str_add(&ht, misswords[i]); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#09: Lookup after half-change (match): "); - fflush(stdout); - start = time_now(); - for (i = 1; i < num; i+=2) - if (htable_str_get(&ht, words[i]) != words[i]) - abort(); - for (i = 0; i < num; i+=2) { - if (htable_str_get(&ht, misswords[i]) != misswords[i]) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#10: Lookup after half-change (miss): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i+=2) - if (htable_str_get(&ht, words[i])) - abort(); - for (i = 1; i < num; i+=2) { - if (htable_str_get(&ht, misswords[i])) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - /* Hashtables with delete markers can fill with markers over time. - * so do some changes to see how it operates in long-term. */ - printf("#11: Churn 1: "); - start = time_now(); - for (j = 0; j < num; j+=2) { - if (!htable_str_del(&ht, misswords[j])) - abort(); - if (!htable_str_add(&ht, words[j])) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#12: Churn 2: "); - start = time_now(); - for (j = 1; j < num; j+=2) { - if (!htable_str_del(&ht, words[j])) - abort(); - if (!htable_str_add(&ht, misswords[j])) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#13: Churn 3: "); - start = time_now(); - for (j = 1; j < num; j+=2) { - if (!htable_str_del(&ht, misswords[j])) - abort(); - if (!htable_str_add(&ht, words[j])) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - /* Now it's back to normal... */ - printf("#14: Post-Churn lookup (match): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) - if (htable_str_get(&ht, words[i]) != words[i]) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - printf("#15: Post-Churn lookup (miss): "); - fflush(stdout); - start = time_now(); - for (i = 0; i < num; i++) { - if (htable_str_get(&ht, misswords[i])) - abort(); - } - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - /* Lookups in order are very cache-friendly for judy; try random */ - printf("#16: Post-Churn lookup (random): "); - fflush(stdout); - start = time_now(); - for (i = 0, j = 0; i < num; i++, j = (j + 10007) % num) - if (htable_str_get(&ht, words[j]) != words[j]) - abort(); - stop = time_now(); - printf(" %zu ns\n", normalize(&start, &stop, num)); - - return 0; -} diff --git a/nostrdb/ccan/ccan/likely/LICENSE b/nostrdb/ccan/ccan/likely/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/likely/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/likely/_info b/nostrdb/ccan/ccan/likely/_info deleted file mode 100644 index 095ed2f7b4..0000000000 --- a/nostrdb/ccan/ccan/likely/_info +++ /dev/null @@ -1,57 +0,0 @@ -#include "config.h" -#include -#include - -/** - * likely - macros for annotating likely/unlikely branches in the code - * - * Inspired by Andi Kleen's macros for the Linux Kernel, these macros - * help you annotate rare paths in your code for the convenience of the - * compiler and the reader. - * - * With CCAN_LIKELY_DEBUG defined, it provides statistics for each - * likely()/unlikely() call (but note that this requires LGPL dependencies). - * - * License: CC0 (Public domain) - * Author: Rusty Russell - * - * Example: - * #include - * #include - * - * int main(int argc, char *argv[]) - * { - * // This example is silly: the compiler knows exit() is unlikely. - * if (unlikely(argc == 1)) { - * fprintf(stderr, "Usage: %s ...\n", argv[0]); - * return 1; - * } - * for (argc++; argv[argc]; argc++) - * printf("%s\n", argv[argc]); - * return 0; - * } - */ -int main(int argc, char *argv[]) -{ - /* Expect exactly one argument */ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { -#ifdef CCAN_LIKELY_DEBUG - printf("ccan/str\n"); - printf("ccan/htable\n"); - printf("ccan/hash\n"); -#endif - return 0; - } - if (strcmp(argv[1], "testdepends") == 0) { -#ifndef CCAN_LIKELY_DEBUG - printf("ccan/str\n"); - printf("ccan/htable\n"); - printf("ccan/hash\n"); -#endif - return 0; - } - return 1; -} diff --git a/nostrdb/ccan/ccan/likely/likely.c b/nostrdb/ccan/ccan/likely/likely.c deleted file mode 100644 index 83e8d6fbe1..0000000000 --- a/nostrdb/ccan/ccan/likely/likely.c +++ /dev/null @@ -1,136 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details. */ -#ifdef CCAN_LIKELY_DEBUG -#include -#include -#include -#include -#include -struct trace { - const char *condstr; - const char *file; - unsigned int line; - bool expect; - unsigned long count, right; -}; - -static size_t hash_trace(const struct trace *trace) -{ - return hash(trace->condstr, strlen(trace->condstr), - hash(trace->file, strlen(trace->file), - trace->line + trace->expect)); -} - -static bool trace_eq(const struct trace *t1, const struct trace *t2) -{ - return t1->condstr == t2->condstr - && t1->file == t2->file - && t1->line == t2->line - && t1->expect == t2->expect; -} - -/* struct thash */ -HTABLE_DEFINE_TYPE(struct trace, (const struct trace *), hash_trace, trace_eq, - thash); - -static struct thash htable -= { HTABLE_INITIALIZER(htable.raw, thash_hash, NULL) }; - -static void init_trace(struct trace *trace, - const char *condstr, const char *file, unsigned int line, - bool expect) -{ - trace->condstr = condstr; - trace->file = file; - trace->line = line; - trace->expect = expect; - trace->count = trace->right = 0; -} - -static struct trace *add_trace(const struct trace *t) -{ - struct trace *trace = malloc(sizeof(*trace)); - *trace = *t; - thash_add(&htable, trace); - return trace; -} - -long _likely_trace(bool cond, bool expect, - const char *condstr, - const char *file, unsigned int line) -{ - struct trace *p, trace; - - init_trace(&trace, condstr, file, line, expect); - p = thash_get(&htable, &trace); - if (!p) - p = add_trace(&trace); - - p->count++; - if (cond == expect) - p->right++; - - return cond; -} - -static double right_ratio(const struct trace *t) -{ - return (double)t->right / t->count; -} - -char *likely_stats(unsigned int min_hits, unsigned int percent) -{ - struct trace *worst; - double worst_ratio; - struct thash_iter i; - char *ret; - struct trace *t; - - worst = NULL; - worst_ratio = 2; - - /* This is O(n), but it's not likely called that often. */ - for (t = thash_first(&htable, &i); t; t = thash_next(&htable, &i)) { - if (t->count >= min_hits) { - if (right_ratio(t) < worst_ratio) { - worst = t; - worst_ratio = right_ratio(t); - } - } - } - - if (worst_ratio * 100 > percent) - return NULL; - - ret = malloc(strlen(worst->condstr) + - strlen(worst->file) + - sizeof(long int) * 8 + - sizeof("%s:%u:%slikely(%s) correct %u%% (%lu/%lu)")); - sprintf(ret, "%s:%u:%slikely(%s) correct %u%% (%lu/%lu)", - worst->file, worst->line, - worst->expect ? "" : "un", worst->condstr, - (unsigned)(worst_ratio * 100), - worst->right, worst->count); - - thash_del(&htable, worst); - free(worst); - - return ret; -} - -void likely_stats_reset(void) -{ - struct thash_iter i; - struct trace *t; - - /* This is a bit better than O(n^2), but we have to loop since - * first/next during delete is unreliable. */ - while ((t = thash_first(&htable, &i)) != NULL) { - for (; t; t = thash_next(&htable, &i)) { - thash_del(&htable, t); - free(t); - } - } - - thash_clear(&htable); -} -#endif /*CCAN_LIKELY_DEBUG*/ diff --git a/nostrdb/ccan/ccan/likely/likely.h b/nostrdb/ccan/ccan/likely/likely.h deleted file mode 100644 index a8f003d727..0000000000 --- a/nostrdb/ccan/ccan/likely/likely.h +++ /dev/null @@ -1,111 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_LIKELY_H -#define CCAN_LIKELY_H -#include "config.h" -#include - -#ifndef CCAN_LIKELY_DEBUG -#if HAVE_BUILTIN_EXPECT -/** - * likely - indicate that a condition is likely to be true. - * @cond: the condition - * - * This uses a compiler extension where available to indicate a likely - * code path and optimize appropriately; it's also useful for readers - * to quickly identify exceptional paths through functions. The - * threshold for "likely" is usually considered to be between 90 and - * 99%; marginal cases should not be marked either way. - * - * See Also: - * unlikely(), likely_stats() - * - * Example: - * // Returns false if we overflow. - * static inline bool inc_int(unsigned int *val) - * { - * (*val)++; - * if (likely(*val)) - * return true; - * return false; - * } - */ -#define likely(cond) __builtin_expect(!!(cond), 1) - -/** - * unlikely - indicate that a condition is unlikely to be true. - * @cond: the condition - * - * This uses a compiler extension where available to indicate an unlikely - * code path and optimize appropriately; see likely() above. - * - * See Also: - * likely(), likely_stats(), COLD (compiler.h) - * - * Example: - * // Prints a warning if we overflow. - * static inline void inc_int(unsigned int *val) - * { - * (*val)++; - * if (unlikely(*val == 0)) - * fprintf(stderr, "Overflow!"); - * } - */ -#define unlikely(cond) __builtin_expect(!!(cond), 0) -#else -#define likely(cond) (!!(cond)) -#define unlikely(cond) (!!(cond)) -#endif -#else /* CCAN_LIKELY_DEBUG versions */ -#include - -#define likely(cond) \ - (_likely_trace(!!(cond), 1, stringify(cond), __FILE__, __LINE__)) -#define unlikely(cond) \ - (_likely_trace(!!(cond), 0, stringify(cond), __FILE__, __LINE__)) - -long _likely_trace(bool cond, bool expect, - const char *condstr, - const char *file, unsigned int line); -/** - * likely_stats - return description of abused likely()/unlikely() - * @min_hits: minimum number of hits - * @percent: maximum percentage correct - * - * When CCAN_LIKELY_DEBUG is defined, likely() and unlikely() trace their - * results: this causes a significant slowdown, but allows analysis of - * whether the branches are labelled correctly. - * - * This function returns a malloc'ed description of the least-correct - * usage of likely() or unlikely(). It ignores places which have been - * called less than @min_hits times, and those which were predicted - * correctly more than @percent of the time. It returns NULL when - * nothing meets those criteria. - * - * Note that this call is destructive; the returned offender is - * removed from the trace so that the next call to likely_stats() will - * return the next-worst likely()/unlikely() usage. - * - * Example: - * // Print every place hit more than twice which was wrong > 5%. - * static void report_stats(void) - * { - * #ifdef CCAN_LIKELY_DEBUG - * const char *bad; - * - * while ((bad = likely_stats(2, 95)) != NULL) { - * printf("Suspicious likely: %s", bad); - * free(bad); - * } - * #endif - * } - */ -char *likely_stats(unsigned int min_hits, unsigned int percent); - -/** - * likely_stats_reset - free up memory of likely()/unlikely() branches. - * - * This can also plug memory leaks. - */ -void likely_stats_reset(void); -#endif /* CCAN_LIKELY_DEBUG */ -#endif /* CCAN_LIKELY_H */ diff --git a/nostrdb/ccan/ccan/list/LICENSE b/nostrdb/ccan/ccan/list/LICENSE deleted file mode 120000 index 2354d12945..0000000000 --- a/nostrdb/ccan/ccan/list/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/BSD-MIT \ No newline at end of file diff --git a/nostrdb/ccan/ccan/list/_info b/nostrdb/ccan/ccan/list/_info deleted file mode 100644 index c4f3e2a0ac..0000000000 --- a/nostrdb/ccan/ccan/list/_info +++ /dev/null @@ -1,72 +0,0 @@ -#include "config.h" -#include -#include - -/** - * list - double linked list routines - * - * The list header contains routines for manipulating double linked lists. - * It defines two types: struct list_head used for anchoring lists, and - * struct list_node which is usually embedded in the structure which is placed - * in the list. - * - * Example: - * #include - * #include - * #include - * #include - * - * struct parent { - * const char *name; - * struct list_head children; - * unsigned int num_children; - * }; - * - * struct child { - * const char *name; - * struct list_node list; - * }; - * - * int main(int argc, char *argv[]) - * { - * struct parent p; - * struct child *c; - * int i; - * - * if (argc < 2) - * errx(1, "Usage: %s parent children...", argv[0]); - * - * p.name = argv[1]; - * list_head_init(&p.children); - * p.num_children = 0; - * for (i = 2; i < argc; i++) { - * c = malloc(sizeof(*c)); - * c->name = argv[i]; - * list_add(&p.children, &c->list); - * p.num_children++; - * } - * - * printf("%s has %u children:", p.name, p.num_children); - * list_for_each(&p.children, c, list) - * printf("%s ", c->name); - * printf("\n"); - * return 0; - * } - * - * License: BSD-MIT - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/str\n"); - printf("ccan/container_of\n"); - printf("ccan/check_type\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/list/list.c b/nostrdb/ccan/ccan/list/list.c deleted file mode 100644 index 2717fa3f17..0000000000 --- a/nostrdb/ccan/ccan/list/list.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#include -#include -#include "list.h" - -static void *corrupt(const char *abortstr, - const struct list_node *head, - const struct list_node *node, - unsigned int count) -{ - if (abortstr) { - fprintf(stderr, - "%s: prev corrupt in node %p (%u) of %p\n", - abortstr, node, count, head); - abort(); - } - return NULL; -} - -struct list_node *list_check_node(const struct list_node *node, - const char *abortstr) -{ - const struct list_node *p, *n; - int count = 0; - - for (p = node, n = node->next; n != node; p = n, n = n->next) { - count++; - if (n->prev != p) - return corrupt(abortstr, node, n, count); - } - /* Check prev on head node. */ - if (node->prev != p) - return corrupt(abortstr, node, node, 0); - - return (struct list_node *)node; -} - -struct list_head *list_check(const struct list_head *h, const char *abortstr) -{ - if (!list_check_node(&h->n, abortstr)) - return NULL; - return (struct list_head *)h; -} diff --git a/nostrdb/ccan/ccan/list/list.h b/nostrdb/ccan/ccan/list/list.h deleted file mode 100644 index a15321c590..0000000000 --- a/nostrdb/ccan/ccan/list/list.h +++ /dev/null @@ -1,842 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#ifndef CCAN_LIST_H -#define CCAN_LIST_H -//#define CCAN_LIST_DEBUG 1 -#include -#include -#include -#include -#include - -/** - * struct list_node - an entry in a doubly-linked list - * @next: next entry (self if empty) - * @prev: previous entry (self if empty) - * - * This is used as an entry in a linked list. - * Example: - * struct child { - * const char *name; - * // Linked list of all us children. - * struct list_node list; - * }; - */ -struct list_node -{ - struct list_node *next, *prev; -}; - -/** - * struct list_head - the head of a doubly-linked list - * @h: the list_head (containing next and prev pointers) - * - * This is used as the head of a linked list. - * Example: - * struct parent { - * const char *name; - * struct list_head children; - * unsigned int num_children; - * }; - */ -struct list_head -{ - struct list_node n; -}; - -/** - * list_check - check head of a list for consistency - * @h: the list_head - * @abortstr: the location to print on aborting, or NULL. - * - * Because list_nodes have redundant information, consistency checking between - * the back and forward links can be done. This is useful as a debugging check. - * If @abortstr is non-NULL, that will be printed in a diagnostic if the list - * is inconsistent, and the function will abort. - * - * Returns the list head if the list is consistent, NULL if not (it - * can never return NULL if @abortstr is set). - * - * See also: list_check_node() - * - * Example: - * static void dump_parent(struct parent *p) - * { - * struct child *c; - * - * printf("%s (%u children):\n", p->name, p->num_children); - * list_check(&p->children, "bad child list"); - * list_for_each(&p->children, c, list) - * printf(" -> %s\n", c->name); - * } - */ -struct list_head *list_check(const struct list_head *h, const char *abortstr); - -/** - * list_check_node - check node of a list for consistency - * @n: the list_node - * @abortstr: the location to print on aborting, or NULL. - * - * Check consistency of the list node is in (it must be in one). - * - * See also: list_check() - * - * Example: - * static void dump_child(const struct child *c) - * { - * list_check_node(&c->list, "bad child list"); - * printf("%s\n", c->name); - * } - */ -struct list_node *list_check_node(const struct list_node *n, - const char *abortstr); - -#define LIST_LOC __FILE__ ":" stringify(__LINE__) -#ifdef CCAN_LIST_DEBUG -#define list_debug(h, loc) list_check((h), loc) -#define list_debug_node(n, loc) list_check_node((n), loc) -#else -#define list_debug(h, loc) ((void)loc, h) -#define list_debug_node(n, loc) ((void)loc, n) -#endif - -/** - * LIST_HEAD_INIT - initializer for an empty list_head - * @name: the name of the list. - * - * Explicit initializer for an empty list. - * - * See also: - * LIST_HEAD, list_head_init() - * - * Example: - * static struct list_head my_list = LIST_HEAD_INIT(my_list); - */ -#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } } - -/** - * LIST_HEAD - define and initialize an empty list_head - * @name: the name of the list. - * - * The LIST_HEAD macro defines a list_head and initializes it to an empty - * list. It can be prepended by "static" to define a static list_head. - * - * See also: - * LIST_HEAD_INIT, list_head_init() - * - * Example: - * static LIST_HEAD(my_global_list); - */ -#define LIST_HEAD(name) \ - struct list_head name = LIST_HEAD_INIT(name) - -/** - * list_head_init - initialize a list_head - * @h: the list_head to set to the empty list - * - * Example: - * ... - * struct parent *parent = malloc(sizeof(*parent)); - * - * list_head_init(&parent->children); - * parent->num_children = 0; - */ -static inline void list_head_init(struct list_head *h) -{ - h->n.next = h->n.prev = &h->n; -} - -/** - * list_node_init - initialize a list_node - * @n: the list_node to link to itself. - * - * You don't need to use this normally! But it lets you list_del(@n) - * safely. - */ -static inline void list_node_init(struct list_node *n) -{ - n->next = n->prev = n; -} - -/** - * list_add_after - add an entry after an existing node in a linked list - * @h: the list_head to add the node to (for debugging) - * @p: the existing list_node to add the node after - * @n: the new list_node to add to the list. - * - * The existing list_node must already be a member of the list. - * The new list_node does not need to be initialized; it will be overwritten. - * - * Example: - * struct child c1, c2, c3; - * LIST_HEAD(h); - * - * list_add_tail(&h, &c1.list); - * list_add_tail(&h, &c3.list); - * list_add_after(&h, &c1.list, &c2.list); - */ -#define list_add_after(h, p, n) list_add_after_(h, p, n, LIST_LOC) -static inline void list_add_after_(struct list_head *h, - struct list_node *p, - struct list_node *n, - const char *abortstr) -{ - n->next = p->next; - n->prev = p; - p->next->prev = n; - p->next = n; - (void)list_debug(h, abortstr); -} - -/** - * list_add - add an entry at the start of a linked list. - * @h: the list_head to add the node to - * @n: the list_node to add to the list. - * - * The list_node does not need to be initialized; it will be overwritten. - * Example: - * struct child *child = malloc(sizeof(*child)); - * - * child->name = "marvin"; - * list_add(&parent->children, &child->list); - * parent->num_children++; - */ -#define list_add(h, n) list_add_(h, n, LIST_LOC) -static inline void list_add_(struct list_head *h, - struct list_node *n, - const char *abortstr) -{ - list_add_after_(h, &h->n, n, abortstr); -} - -/** - * list_add_before - add an entry before an existing node in a linked list - * @h: the list_head to add the node to (for debugging) - * @p: the existing list_node to add the node before - * @n: the new list_node to add to the list. - * - * The existing list_node must already be a member of the list. - * The new list_node does not need to be initialized; it will be overwritten. - * - * Example: - * list_head_init(&h); - * list_add_tail(&h, &c1.list); - * list_add_tail(&h, &c3.list); - * list_add_before(&h, &c3.list, &c2.list); - */ -#define list_add_before(h, p, n) list_add_before_(h, p, n, LIST_LOC) -static inline void list_add_before_(struct list_head *h, - struct list_node *p, - struct list_node *n, - const char *abortstr) -{ - n->next = p; - n->prev = p->prev; - p->prev->next = n; - p->prev = n; - (void)list_debug(h, abortstr); -} - -/** - * list_add_tail - add an entry at the end of a linked list. - * @h: the list_head to add the node to - * @n: the list_node to add to the list. - * - * The list_node does not need to be initialized; it will be overwritten. - * Example: - * list_add_tail(&parent->children, &child->list); - * parent->num_children++; - */ -#define list_add_tail(h, n) list_add_tail_(h, n, LIST_LOC) -static inline void list_add_tail_(struct list_head *h, - struct list_node *n, - const char *abortstr) -{ - list_add_before_(h, &h->n, n, abortstr); -} - -/** - * list_empty - is a list empty? - * @h: the list_head - * - * If the list is empty, returns true. - * - * Example: - * assert(list_empty(&parent->children) == (parent->num_children == 0)); - */ -#define list_empty(h) list_empty_(h, LIST_LOC) -static inline bool list_empty_(const struct list_head *h, const char* abortstr) -{ - (void)list_debug(h, abortstr); - return h->n.next == &h->n; -} - -/** - * list_empty_nodebug - is a list empty (and don't perform debug checks)? - * @h: the list_head - * - * If the list is empty, returns true. - * This differs from list_empty() in that if CCAN_LIST_DEBUG is set it - * will NOT perform debug checks. Only use this function if you REALLY - * know what you're doing. - * - * Example: - * assert(list_empty_nodebug(&parent->children) == (parent->num_children == 0)); - */ -#ifndef CCAN_LIST_DEBUG -#define list_empty_nodebug(h) list_empty(h) -#else -static inline bool list_empty_nodebug(const struct list_head *h) -{ - return h->n.next == &h->n; -} -#endif - -/** - * list_empty_nocheck - is a list empty? - * @h: the list_head - * - * If the list is empty, returns true. This doesn't perform any - * debug check for list consistency, so it can be called without - * locks, racing with the list being modified. This is ok for - * checks where an incorrect result is not an issue (optimized - * bail out path for example). - */ -static inline bool list_empty_nocheck(const struct list_head *h) -{ - return h->n.next == &h->n; -} - -/** - * list_del - delete an entry from an (unknown) linked list. - * @n: the list_node to delete from the list. - * - * Note that this leaves @n in an undefined state; it can be added to - * another list, but not deleted again. - * - * See also: - * list_del_from(), list_del_init() - * - * Example: - * list_del(&child->list); - * parent->num_children--; - */ -#define list_del(n) list_del_(n, LIST_LOC) -static inline void list_del_(struct list_node *n, const char* abortstr) -{ - (void)list_debug_node(n, abortstr); - n->next->prev = n->prev; - n->prev->next = n->next; -#ifdef CCAN_LIST_DEBUG - /* Catch use-after-del. */ - n->next = n->prev = NULL; -#endif -} - -/** - * list_del_init - delete a node, and reset it so it can be deleted again. - * @n: the list_node to be deleted. - * - * list_del(@n) or list_del_init() again after this will be safe, - * which can be useful in some cases. - * - * See also: - * list_del_from(), list_del() - * - * Example: - * list_del_init(&child->list); - * parent->num_children--; - */ -#define list_del_init(n) list_del_init_(n, LIST_LOC) -static inline void list_del_init_(struct list_node *n, const char *abortstr) -{ - list_del_(n, abortstr); - list_node_init(n); -} - -/** - * list_del_from - delete an entry from a known linked list. - * @h: the list_head the node is in. - * @n: the list_node to delete from the list. - * - * This explicitly indicates which list a node is expected to be in, - * which is better documentation and can catch more bugs. - * - * See also: list_del() - * - * Example: - * list_del_from(&parent->children, &child->list); - * parent->num_children--; - */ -static inline void list_del_from(struct list_head *h, struct list_node *n) -{ -#ifdef CCAN_LIST_DEBUG - { - /* Thorough check: make sure it was in list! */ - struct list_node *i; - for (i = h->n.next; i != n; i = i->next) - assert(i != &h->n); - } -#endif /* CCAN_LIST_DEBUG */ - - /* Quick test that catches a surprising number of bugs. */ - assert(!list_empty(h)); - list_del(n); -} - -/** - * list_swap - swap out an entry from an (unknown) linked list for a new one. - * @o: the list_node to replace from the list. - * @n: the list_node to insert in place of the old one. - * - * Note that this leaves @o in an undefined state; it can be added to - * another list, but not deleted/swapped again. - * - * See also: - * list_del() - * - * Example: - * struct child x1, x2; - * LIST_HEAD(xh); - * - * list_add(&xh, &x1.list); - * list_swap(&x1.list, &x2.list); - */ -#define list_swap(o, n) list_swap_(o, n, LIST_LOC) -static inline void list_swap_(struct list_node *o, - struct list_node *n, - const char* abortstr) -{ - (void)list_debug_node(o, abortstr); - *n = *o; - n->next->prev = n; - n->prev->next = n; -#ifdef CCAN_LIST_DEBUG - /* Catch use-after-del. */ - o->next = o->prev = NULL; -#endif -} - -/** - * list_entry - convert a list_node back into the structure containing it. - * @n: the list_node - * @type: the type of the entry - * @member: the list_node member of the type - * - * Example: - * // First list entry is children.next; convert back to child. - * child = list_entry(parent->children.n.next, struct child, list); - * - * See Also: - * list_top(), list_for_each() - */ -#define list_entry(n, type, member) container_of(n, type, member) - -/** - * list_top - get the first entry in a list - * @h: the list_head - * @type: the type of the entry - * @member: the list_node member of the type - * - * If the list is empty, returns NULL. - * - * Example: - * struct child *first; - * first = list_top(&parent->children, struct child, list); - * if (!first) - * printf("Empty list!\n"); - */ -#define list_top(h, type, member) \ - ((type *)list_top_((h), list_off_(type, member))) - -static inline const void *list_top_(const struct list_head *h, size_t off) -{ - if (list_empty(h)) - return NULL; - return (const char *)h->n.next - off; -} - -/** - * list_pop - remove the first entry in a list - * @h: the list_head - * @type: the type of the entry - * @member: the list_node member of the type - * - * If the list is empty, returns NULL. - * - * Example: - * struct child *one; - * one = list_pop(&parent->children, struct child, list); - * if (!one) - * printf("Empty list!\n"); - */ -#define list_pop(h, type, member) \ - ((type *)list_pop_((h), list_off_(type, member))) - -static inline const void *list_pop_(const struct list_head *h, size_t off) -{ - struct list_node *n; - - if (list_empty(h)) - return NULL; - n = h->n.next; - list_del(n); - return (const char *)n - off; -} - -/** - * list_tail - get the last entry in a list - * @h: the list_head - * @type: the type of the entry - * @member: the list_node member of the type - * - * If the list is empty, returns NULL. - * - * Example: - * struct child *last; - * last = list_tail(&parent->children, struct child, list); - * if (!last) - * printf("Empty list!\n"); - */ -#define list_tail(h, type, member) \ - ((type *)list_tail_((h), list_off_(type, member))) - -static inline const void *list_tail_(const struct list_head *h, size_t off) -{ - if (list_empty(h)) - return NULL; - return (const char *)h->n.prev - off; -} - -/** - * list_for_each - iterate through a list. - * @h: the list_head (warning: evaluated multiple times!) - * @i: the structure containing the list_node - * @member: the list_node member of the structure - * - * This is a convenient wrapper to iterate @i over the entire list. It's - * a for loop, so you can break and continue as normal. - * - * Example: - * list_for_each(&parent->children, child, list) - * printf("Name: %s\n", child->name); - */ -#define list_for_each(h, i, member) \ - list_for_each_off(h, i, list_off_var_(i, member)) - -/** - * list_for_each_rev - iterate through a list backwards. - * @h: the list_head - * @i: the structure containing the list_node - * @member: the list_node member of the structure - * - * This is a convenient wrapper to iterate @i over the entire list. It's - * a for loop, so you can break and continue as normal. - * - * Example: - * list_for_each_rev(&parent->children, child, list) - * printf("Name: %s\n", child->name); - */ -#define list_for_each_rev(h, i, member) \ - list_for_each_rev_off(h, i, list_off_var_(i, member)) - -/** - * list_for_each_rev_safe - iterate through a list backwards, - * maybe during deletion - * @h: the list_head - * @i: the structure containing the list_node - * @nxt: the structure containing the list_node - * @member: the list_node member of the structure - * - * This is a convenient wrapper to iterate @i over the entire list backwards. - * It's a for loop, so you can break and continue as normal. The extra - * variable * @nxt is used to hold the next element, so you can delete @i - * from the list. - * - * Example: - * struct child *next; - * list_for_each_rev_safe(&parent->children, child, next, list) { - * printf("Name: %s\n", child->name); - * } - */ -#define list_for_each_rev_safe(h, i, nxt, member) \ - list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member)) - -/** - * list_for_each_safe - iterate through a list, maybe during deletion - * @h: the list_head - * @i: the structure containing the list_node - * @nxt: the structure containing the list_node - * @member: the list_node member of the structure - * - * This is a convenient wrapper to iterate @i over the entire list. It's - * a for loop, so you can break and continue as normal. The extra variable - * @nxt is used to hold the next element, so you can delete @i from the list. - * - * Example: - * list_for_each_safe(&parent->children, child, next, list) { - * list_del(&child->list); - * parent->num_children--; - * } - */ -#define list_for_each_safe(h, i, nxt, member) \ - list_for_each_safe_off(h, i, nxt, list_off_var_(i, member)) - -/** - * list_next - get the next entry in a list - * @h: the list_head - * @i: a pointer to an entry in the list. - * @member: the list_node member of the structure - * - * If @i was the last entry in the list, returns NULL. - * - * Example: - * struct child *second; - * second = list_next(&parent->children, first, list); - * if (!second) - * printf("No second child!\n"); - */ -#define list_next(h, i, member) \ - ((list_typeof(i))list_entry_or_null(list_debug(h, \ - __FILE__ ":" stringify(__LINE__)), \ - (i)->member.next, \ - list_off_var_((i), member))) - -/** - * list_prev - get the previous entry in a list - * @h: the list_head - * @i: a pointer to an entry in the list. - * @member: the list_node member of the structure - * - * If @i was the first entry in the list, returns NULL. - * - * Example: - * first = list_prev(&parent->children, second, list); - * if (!first) - * printf("Can't go back to first child?!\n"); - */ -#define list_prev(h, i, member) \ - ((list_typeof(i))list_entry_or_null(list_debug(h, \ - __FILE__ ":" stringify(__LINE__)), \ - (i)->member.prev, \ - list_off_var_((i), member))) - -/** - * list_append_list - empty one list onto the end of another. - * @to: the list to append into - * @from: the list to empty. - * - * This takes the entire contents of @from and moves it to the end of - * @to. After this @from will be empty. - * - * Example: - * struct list_head adopter; - * - * list_append_list(&adopter, &parent->children); - * assert(list_empty(&parent->children)); - * parent->num_children = 0; - */ -#define list_append_list(t, f) list_append_list_(t, f, \ - __FILE__ ":" stringify(__LINE__)) -static inline void list_append_list_(struct list_head *to, - struct list_head *from, - const char *abortstr) -{ - struct list_node *from_tail = list_debug(from, abortstr)->n.prev; - struct list_node *to_tail = list_debug(to, abortstr)->n.prev; - - /* Sew in head and entire list. */ - to->n.prev = from_tail; - from_tail->next = &to->n; - to_tail->next = &from->n; - from->n.prev = to_tail; - - /* Now remove head. */ - list_del(&from->n); - list_head_init(from); -} - -/** - * list_prepend_list - empty one list into the start of another. - * @to: the list to prepend into - * @from: the list to empty. - * - * This takes the entire contents of @from and moves it to the start - * of @to. After this @from will be empty. - * - * Example: - * list_prepend_list(&adopter, &parent->children); - * assert(list_empty(&parent->children)); - * parent->num_children = 0; - */ -#define list_prepend_list(t, f) list_prepend_list_(t, f, LIST_LOC) -static inline void list_prepend_list_(struct list_head *to, - struct list_head *from, - const char *abortstr) -{ - struct list_node *from_tail = list_debug(from, abortstr)->n.prev; - struct list_node *to_head = list_debug(to, abortstr)->n.next; - - /* Sew in head and entire list. */ - to->n.next = &from->n; - from->n.prev = &to->n; - to_head->prev = from_tail; - from_tail->next = to_head; - - /* Now remove head. */ - list_del(&from->n); - list_head_init(from); -} - -/* internal macros, do not use directly */ -#define list_for_each_off_dir_(h, i, off, dir) \ - for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, \ - (off)); \ - list_node_from_off_((void *)i, (off)) != &(h)->n; \ - i = list_node_to_off_(list_node_from_off_((void *)i, (off))->dir, \ - (off))) - -#define list_for_each_safe_off_dir_(h, i, nxt, off, dir) \ - for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, \ - (off)), \ - nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, \ - (off)); \ - list_node_from_off_(i, (off)) != &(h)->n; \ - i = nxt, \ - nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, \ - (off))) - -/** - * list_for_each_off - iterate through a list of memory regions. - * @h: the list_head - * @i: the pointer to a memory region which contains list node data. - * @off: offset(relative to @i) at which list node data resides. - * - * This is a low-level wrapper to iterate @i over the entire list, used to - * implement all oher, more high-level, for-each constructs. It's a for loop, - * so you can break and continue as normal. - * - * WARNING! Being the low-level macro that it is, this wrapper doesn't know - * nor care about the type of @i. The only assumption made is that @i points - * to a chunk of memory that at some @offset, relative to @i, contains a - * properly filled `struct list_node' which in turn contains pointers to - * memory chunks and it's turtles all the way down. With all that in mind - * remember that given the wrong pointer/offset couple this macro will - * happily churn all you memory until SEGFAULT stops it, in other words - * caveat emptor. - * - * It is worth mentioning that one of legitimate use-cases for that wrapper - * is operation on opaque types with known offset for `struct list_node' - * member(preferably 0), because it allows you not to disclose the type of - * @i. - * - * Example: - * list_for_each_off(&parent->children, child, - * offsetof(struct child, list)) - * printf("Name: %s\n", child->name); - */ -#define list_for_each_off(h, i, off) \ - list_for_each_off_dir_((h),(i),(off),next) - -/** - * list_for_each_rev_off - iterate through a list of memory regions backwards - * @h: the list_head - * @i: the pointer to a memory region which contains list node data. - * @off: offset(relative to @i) at which list node data resides. - * - * See list_for_each_off for details - */ -#define list_for_each_rev_off(h, i, off) \ - list_for_each_off_dir_((h),(i),(off),prev) - -/** - * list_for_each_safe_off - iterate through a list of memory regions, maybe - * during deletion - * @h: the list_head - * @i: the pointer to a memory region which contains list node data. - * @nxt: the structure containing the list_node - * @off: offset(relative to @i) at which list node data resides. - * - * For details see `list_for_each_off' and `list_for_each_safe' - * descriptions. - * - * Example: - * list_for_each_safe_off(&parent->children, child, - * next, offsetof(struct child, list)) - * printf("Name: %s\n", child->name); - */ -#define list_for_each_safe_off(h, i, nxt, off) \ - list_for_each_safe_off_dir_((h),(i),(nxt),(off),next) - -/** - * list_for_each_rev_safe_off - iterate backwards through a list of - * memory regions, maybe during deletion - * @h: the list_head - * @i: the pointer to a memory region which contains list node data. - * @nxt: the structure containing the list_node - * @off: offset(relative to @i) at which list node data resides. - * - * For details see `list_for_each_rev_off' and `list_for_each_rev_safe' - * descriptions. - * - * Example: - * list_for_each_rev_safe_off(&parent->children, child, - * next, offsetof(struct child, list)) - * printf("Name: %s\n", child->name); - */ -#define list_for_each_rev_safe_off(h, i, nxt, off) \ - list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev) - -/* Other -off variants. */ -#define list_entry_off(n, type, off) \ - ((type *)list_node_from_off_((n), (off))) - -#define list_head_off(h, type, off) \ - ((type *)list_head_off((h), (off))) - -#define list_tail_off(h, type, off) \ - ((type *)list_tail_((h), (off))) - -#define list_add_off(h, n, off) \ - list_add((h), list_node_from_off_((n), (off))) - -#define list_del_off(n, off) \ - list_del(list_node_from_off_((n), (off))) - -#define list_del_from_off(h, n, off) \ - list_del_from(h, list_node_from_off_((n), (off))) - -/* Offset helper functions so we only single-evaluate. */ -static inline void *list_node_to_off_(struct list_node *node, size_t off) -{ - return (void *)((char *)node - off); -} -static inline struct list_node *list_node_from_off_(void *ptr, size_t off) -{ - return (struct list_node *)((char *)ptr + off); -} - -/* Get the offset of the member, but make sure it's a list_node. */ -#define list_off_(type, member) \ - (container_off(type, member) + \ - check_type(((type *)0)->member, struct list_node)) - -#define list_off_var_(var, member) \ - (container_off_var(var, member) + \ - check_type(var->member, struct list_node)) - -#if HAVE_TYPEOF -#define list_typeof(var) typeof(var) -#else -#define list_typeof(var) void * -#endif - -/* Returns member, or NULL if at end of list. */ -static inline void *list_entry_or_null(const struct list_head *h, - const struct list_node *n, - size_t off) -{ - if (n == &h->n) - return NULL; - return (char *)n - off; -} -#endif /* CCAN_LIST_H */ diff --git a/nostrdb/ccan/ccan/mem/LICENSE b/nostrdb/ccan/ccan/mem/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/mem/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/mem/_info b/nostrdb/ccan/ccan/mem/_info deleted file mode 100644 index b95a5754c5..0000000000 --- a/nostrdb/ccan/ccan/mem/_info +++ /dev/null @@ -1,30 +0,0 @@ -#include "config.h" -#include -#include - -/** - * mem - Provide mem*() functions if missing from C library - * - * This code implements some string.h mem*() functions if they're not - * already available in the C library. Functions included are: - * memmem() - * - * License: CC0 - */ -int main(int argc, char *argv[]) -{ - /* Expect exactly one argument */ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/compiler"); - return 0; - } - - if (strcmp(argv[1], "testdepends") == 0) { - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/mem/mem.c b/nostrdb/ccan/ccan/mem/mem.c deleted file mode 100644 index 13027a2a7b..0000000000 --- a/nostrdb/ccan/ccan/mem/mem.c +++ /dev/null @@ -1,128 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ - -#include "config.h" - -#include -#include -#include - -#if !HAVE_MEMMEM -void *memmem(const void *haystack, size_t haystacklen, - const void *needle, size_t needlelen) -{ - const char *p; - - if (needlelen > haystacklen) - return NULL; - - p = haystack; - - for (p = haystack; - (p + needlelen) <= ((const char *)haystack + haystacklen); - p++) - if (memcmp(p, needle, needlelen) == 0) - return (void *)p; - - return NULL; -} -#endif - -#if !HAVE_MEMRCHR -void *memrchr(const void *s, int c, size_t n) -{ - unsigned char *p = (unsigned char *)s; - - while (n) { - if (p[n-1] == c) - return p + n - 1; - n--; - } - - return NULL; -} -#endif - -void *mempbrkm(const void *data_, size_t len, const void *accept_, size_t accept_len) -{ - const char *data = data_, *accept = accept_; - size_t i, j; - - for (i = 0; i < len; i++) - for (j = 0; j < accept_len; j++) - if (accept[j] == data[i]) - return (void *)&data[i]; - return NULL; -} - -void *memcchr(void const *data, int c, size_t data_len) -{ - char const *p = data; - size_t i; - - for (i = 0; i < data_len; i++) - if (p[i] != c) - return (void *)&p[i]; - - return NULL; -} - -#define MEMSWAP_TMP_SIZE 256 - -void memswap(void *a, void *b, size_t n) -{ - char *ap = a; - char *bp = b; - char tmp[MEMSWAP_TMP_SIZE]; - - assert(!memoverlaps(a, n, b, n)); - - while (n) { - size_t m = n > MEMSWAP_TMP_SIZE ? MEMSWAP_TMP_SIZE : n; - - memcpy(tmp, bp, m); - memcpy(bp, ap, m); - memcpy(ap, tmp, m); - - ap += m; - bp += m; - n -= m; - } -} - -bool memeqzero(const void *data, size_t length) -{ - const unsigned char *p = data; - size_t len; - - /* Check first 16 bytes manually */ - for (len = 0; len < 16; len++) { - if (!length) - return true; - if (*p) - return false; - p++; - length--; - } - - /* Now we know that's zero, memcmp with self. */ - return memcmp(data, p, length) == 0; -} - -void memtaint(void *data, size_t len) -{ - /* Using 16 bytes is a bit quicker than 4 */ - const unsigned tainter[] - = { 0xdeadbeef, 0xdeadbeef, 0xdeadbeef, 0xdeadbeef }; - char *p = data; - - while (len >= sizeof(tainter)) { - memcpy(p, tainter, sizeof(tainter)); - p += sizeof(tainter); - len -= sizeof(tainter); - } - memcpy(p, tainter, len); - -#if HAVE_VALGRIND_MEMCHECK_H - VALGRIND_MAKE_MEM_UNDEFINED(data, len); -#endif -} diff --git a/nostrdb/ccan/ccan/mem/mem.h b/nostrdb/ccan/ccan/mem/mem.h deleted file mode 100644 index 20286dcbef..0000000000 --- a/nostrdb/ccan/ccan/mem/mem.h +++ /dev/null @@ -1,295 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_MEM_H -#define CCAN_MEM_H - -#include "config.h" -#include - -#include -#include - -#if !HAVE_MEMMEM -PURE_FUNCTION -void *memmem(const void *haystack, size_t haystacklen, - const void *needle, size_t needlelen); -#endif - -#if !HAVE_MEMRCHR -PURE_FUNCTION -void *memrchr(const void *s, int c, size_t n); -#endif - -/** - * mempbrkm - locates the first occurrence in @data of any bytes in @accept - * @data: where we search - * @len: length of data in bytes - * @accept: array of bytes we search for - * @accept_len: # of bytes in accept - * - * Returns a pointer to the byte in @data that matches one of the bytes in - * @accept, or NULL if no such byte is found. - * - * Example: - * char otherbytes[] = "Hello \0world"; - * size_t otherbytes_len = sizeof(otherbytes) - 1; - * char *r = mempbrkm(otherbytes, otherbytes_len, "\0b", 2); - * if (r) { - * printf("Found %c\n", *r); - * } else { - * printf("Nada\n"); - * } - * - */ -PURE_FUNCTION -void *mempbrkm(const void *data, size_t len, const void *accept, size_t accept_len); - -/** - * mempbrk - locates the first occurrence in @data of any bytes in @accept - * @data: where we search - * @len: length of data in bytes - * @accept: NUL terminated string containing the bytes we search for - * - * Returns a pointer to the byte in @data that matches one of the bytes in - * @accept, or NULL if no such byte is found. - * - * Example: - * - * r = mempbrk(otherbytes, otherbytes_len, "abcde"); - * if (r) { - * printf("Found %c\n", *r); - * } else { - * printf("Nada\n"); - * } - */ -PURE_FUNCTION -static inline char *mempbrk(const void *data, size_t len, const char *accept) -{ - return mempbrkm(data, len, accept, strlen(accept)); -} - -/** - * memcchr - scan memory until a character does _not_ match @c - * @data: pointer to memory to scan - * @data_len: length of data - * @c: character to scan for - * - * The complement of memchr(). - * - * Returns a pointer to the first character which is _not_ @c. If all memory in - * @data is @c, returns NULL. - * - * Example: - * char somebytes[] = "HI By\0e"; - * size_t bytes_len = sizeof(somebytes) - 1; - * r = memcchr(somebytes, ' ', bytes_len); - * if (r) { - * printf("Found %c after trimming spaces\n", *r); - * } - */ -PURE_FUNCTION -void *memcchr(void const *data, int c, size_t data_len); - -/** - * memeq - Are two byte arrays equal? - * @a: first array - * @al: bytes in first array - * @b: second array - * @bl: bytes in second array - * - * Example: - * if (memeq(somebytes, bytes_len, otherbytes, otherbytes_len)) { - * printf("memory blocks are the same!\n"); - * } - */ -PURE_FUNCTION -static inline bool memeq(const void *a, size_t al, const void *b, size_t bl) -{ - return al == bl && (al == 0 || !memcmp(a, b, bl)); -} - -/** - * memstarts - determine if @data starts with @prefix - * @data: does this begin with @prefix? - * @data_len: bytes in @data - * @prefix: does @data begin with these bytes? - * @prefix_len: bytes in @prefix - * - * Returns true if @data starts with @prefix, otherwise return false. - * - * Example: - * if (memstarts(somebytes, bytes_len, otherbytes, otherbytes_len)) { - * printf("somebytes starts with otherbytes!\n"); - * } - */ -PURE_FUNCTION -static inline bool memstarts(void const *data, size_t data_len, - void const *prefix, size_t prefix_len) -{ - if (prefix_len > data_len) - return false; - return memeq(data, prefix_len, prefix, prefix_len); -} - -/** - * memeqstr - Is a byte array equal to a NUL terminated string? - * @data: byte array - * @length: length of @data in bytes - * @string: NUL terminated string - * - * The '\0' byte is ignored when checking if @bytes == @string. - * - * Example: - * if (memeqstr(somebytes, bytes_len, "foo")) { - * printf("somebytes == 'foo'!\n"); - * } - */ -PURE_FUNCTION -static inline bool memeqstr(const void *data, size_t length, const char *string) -{ - return memeq(data, length, string, strlen(string)); -} - -/** - * memeqzero - Is a byte array all zeroes? - * @data: byte array - * @length: length of @data in bytes - * - * Example: - * if (memeqzero(somebytes, bytes_len)) { - * printf("somebytes == 0!\n"); - * } - */ -PURE_FUNCTION -bool memeqzero(const void *data, size_t length); - -/** - * memstarts_str - Does this byte array start with a string prefix? - * @a: byte array - * @al: length in bytes - * @s: string prefix - * - * Example: - * if (memstarts_str(somebytes, bytes_len, "It")) { - * printf("somebytes starts with 'It'\n"); - * } - */ -PURE_FUNCTION -static inline bool memstarts_str(const void *a, size_t al, const char *s) -{ - return memstarts(a, al, s, strlen(s)); -} - -/** - * memends - Does this byte array end with a given byte-array suffix? - * @s: byte array - * @s_len: length in bytes - * @suffix: byte array suffix - * @suffix_len: length of suffix in bytes - * - * Returns true if @suffix appears as a substring at the end of @s, - * false otherwise. - */ -PURE_FUNCTION -static inline bool memends(const void *s, size_t s_len, const void *suffix, size_t suffix_len) -{ - return (s_len >= suffix_len) && (memcmp((const char *)s + s_len - suffix_len, - suffix, suffix_len) == 0); -} - -/** - * memends_str - Does this byte array end with a string suffix? - * @a: byte array - * @al: length in bytes - * @s: string suffix - * - * Example: - * if (memends_str(somebytes, bytes_len, "It")) { - * printf("somebytes ends with with 'It'\n"); - * } - */ -PURE_FUNCTION -static inline bool memends_str(const void *a, size_t al, const char *s) -{ - return memends(a, al, s, strlen(s)); -} - -/** - * memoverlaps - Do two memory ranges overlap? - * @a: pointer to first memory range - * @al: length of first memory range - * @b: pointer to second memory range - * @al: length of second memory range - */ -CONST_FUNCTION -static inline bool memoverlaps(const void *a_, size_t al, - const void *b_, size_t bl) -{ - const char *a = a_; - const char *b = b_; - - return (a < (b + bl)) && (b < (a + al)); -} - -/* - * memswap - Exchange two memory regions - * @a: first region - * @b: second region - * @n: length of the regions - * - * Undefined results if the two memory regions overlap. - */ -void memswap(void *a, void *b, size_t n); - -#if HAVE_VALGRIND_MEMCHECK_H -#include -static inline void *memcheck_(const void *data, size_t len) -{ - VALGRIND_CHECK_MEM_IS_DEFINED(data, len); - return (void *)data; -} -#else -static inline void *memcheck_(const void *data, size_t len) -{ - (void)len; - return (void *)data; -} -#endif - -#if HAVE_TYPEOF -/** - * memcheck - check that a memory region is initialized - * @data: start of region - * @len: length in bytes - * - * When running under valgrind, this causes an error to be printed - * if the entire region is not defined. Otherwise valgrind only - * reports an error when an undefined value is used for a branch, or - * written out. - * - * Example: - * // Search for space, but make sure it's all initialized. - * if (memchr(memcheck(somebytes, bytes_len), ' ', bytes_len)) { - * printf("space was found!\n"); - * } - */ -#define memcheck(data, len) ((__typeof__((data)+0))memcheck_((data), (len))) -#else -#define memcheck(data, len) memcheck_((data), (len)) -#endif - -/** - * memtaint - mark a memory region unused - * @data: start of region - * @len: length in bytes - * - * This writes an "0xdeadbeef" eyecatcher repeatedly to the memory. - * When running under valgrind, it also tells valgrind that the memory is - * uninitialized, triggering valgrind errors if it is used for branches - * or written out (or passed to memcheck!) in future. - * - * Example: - * // We'll reuse this buffer later, but be sure we don't access it. - * memtaint(somebytes, bytes_len); - */ -void memtaint(void *data, size_t len); -#endif /* CCAN_MEM_H */ diff --git a/nostrdb/ccan/ccan/short_types/LICENSE b/nostrdb/ccan/ccan/short_types/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/short_types/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/short_types/_info b/nostrdb/ccan/ccan/short_types/_info deleted file mode 100644 index 909e4e3aed..0000000000 --- a/nostrdb/ccan/ccan/short_types/_info +++ /dev/null @@ -1,87 +0,0 @@ -#include "config.h" -#include -#include - -/** - * short_types - shorter names for standard integer types - * - * "C is a Spartan language, and so should your naming be." - * -- Linus Torvalds - * - * The short_types header provides for convenient abbreviations for the - * posixly-damned uint32_t types. If ccan/endian/endian.h is included, - * it also provides be32/le32 for explicitly annotating types of specific - * endian. - * - * Include this header, if only to stop people using these identifiers - * for other things! - * - * Example: - * #include - * #include - * #include - * #include - * - * // Print nonsensical numerical comparison of POSIX vs. short_types. - * #define stringify_1(x) #x - * #define stringify(x) stringify_1(x) - * - * static void evaluate(size_t size, const char *posix, const char *sht, - * unsigned int *posix_total, unsigned int *sht_total, - * unsigned int *size_total) - * { - * printf("\t%ssigned %s: POSIX %zu%%, short %zu%%\n", - * sht[0] == 'u' ? "un" : "", - * sht+1, - * strlen(posix)*100 / size, - * strlen(sht)*100 / size); - * *posix_total += strlen(posix); - * *sht_total += strlen(sht); - * *size_total += size; - * } - * - * #define EVALUATE(psx, short, pt, st, t) \ - * evaluate(sizeof(psx), stringify(psx), stringify(sht), pt, st, t) - * - * int main(void) - * { - * unsigned int posix_total = 0, sht_total = 0, size_total = 0; - * - * printf("Comparing size of type vs size of name:\n"); - * - * EVALUATE(uint8_t, u8, &posix_total, &sht_total, &size_total); - * EVALUATE(int8_t, s8, &posix_total, &sht_total, &size_total); - * EVALUATE(uint16_t, u16, &posix_total, &sht_total, &size_total); - * EVALUATE(int16_t, s16, &posix_total, &sht_total, &size_total); - * EVALUATE(uint32_t, u32, &posix_total, &sht_total, &size_total); - * EVALUATE(int32_t, s32, &posix_total, &sht_total, &size_total); - * EVALUATE(uint64_t, u64, &posix_total, &sht_total, &size_total); - * EVALUATE(int64_t, s64, &posix_total, &sht_total, &size_total); - * - * printf("Conclusion:\n" - * "\tPOSIX is %u%% LESS efficient than binary.\n" - * "\tshort_types.h is %u%% MORE efficient than binary.\n", - * (posix_total - size_total) * 100 / size_total, - * (size_total - sht_total) * 100 / size_total); - * return 0; - * } - * - * License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - return 0; - } - - if (strcmp(argv[1], "testdepends") == 0) { - printf("ccan/endian\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/short_types/short_types.h b/nostrdb/ccan/ccan/short_types/short_types.h deleted file mode 100644 index 175377e9ba..0000000000 --- a/nostrdb/ccan/ccan/short_types/short_types.h +++ /dev/null @@ -1,35 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_SHORT_TYPES_H -#define CCAN_SHORT_TYPES_H -#include - -/** - * u64/s64/u32/s32/u16/s16/u8/s8 - short names for explicitly-sized types. - */ -typedef uint64_t u64; -typedef int64_t s64; -typedef uint32_t u32; -typedef int32_t s32; -typedef uint16_t u16; -typedef int16_t s16; -typedef uint8_t u8; -typedef int8_t s8; - -/* Whichever they include first, they get these definitions. */ -#ifdef CCAN_ENDIAN_H -/** - * be64/be32/be16 - 64/32/16 bit big-endian representation. - */ -typedef beint64_t be64; -typedef beint32_t be32; -typedef beint16_t be16; - -/** - * le64/le32/le16 - 64/32/16 bit little-endian representation. - */ -typedef leint64_t le64; -typedef leint32_t le32; -typedef leint16_t le16; -#endif - -#endif /* CCAN_SHORT_TYPES_H */ diff --git a/nostrdb/ccan/ccan/str/LICENSE b/nostrdb/ccan/ccan/str/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/str/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/str/_info b/nostrdb/ccan/ccan/str/_info deleted file mode 100644 index b579525faa..0000000000 --- a/nostrdb/ccan/ccan/str/_info +++ /dev/null @@ -1,52 +0,0 @@ -#include "config.h" -#include -#include - -/** - * str - string helper routines - * - * This is a grab bag of functions for string operations, designed to enhance - * the standard string.h. - * - * Note that if you define CCAN_STR_DEBUG, you will get extra compile - * checks on common misuses of the following functions (they will now - * be out-of-line, so there is a runtime penalty!). - * - * strstr, strchr, strrchr: - * Return const char * if first argument is const (gcc only). - * - * isalnum, isalpha, isascii, isblank, iscntrl, isdigit, isgraph, - * islower, isprint, ispunct, isspace, isupper, isxdigit: - * Static and runtime check that input is EOF or an *unsigned* - * char, as per C standard (really!). - * - * Example: - * #include - * #include - * - * int main(int argc, char *argv[]) - * { - * if (argc > 1 && streq(argv[1], "--verbose")) - * printf("verbose set\n"); - * if (argc > 1 && strstarts(argv[1], "--")) - * printf("Some option set\n"); - * if (argc > 1 && strends(argv[1], "cow-powers")) - * printf("Magic option set\n"); - * return 0; - * } - * - * License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/build_assert\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/str/debug.c b/nostrdb/ccan/ccan/str/debug.c deleted file mode 100644 index 8c519442d7..0000000000 --- a/nostrdb/ccan/ccan/str/debug.c +++ /dev/null @@ -1,108 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#include "config.h" -#include -#include -#include -#include - -#ifdef CCAN_STR_DEBUG -/* Because we mug the real ones with macros, we need our own wrappers. */ -int str_isalnum(int i) -{ - assert(i >= -1 && i < 256); - return isalnum(i); -} - -int str_isalpha(int i) -{ - assert(i >= -1 && i < 256); - return isalpha(i); -} - -int str_isascii(int i) -{ - assert(i >= -1 && i < 256); - return isascii(i); -} - -#if HAVE_ISBLANK -int str_isblank(int i) -{ - assert(i >= -1 && i < 256); - return isblank(i); -} -#endif - -int str_iscntrl(int i) -{ - assert(i >= -1 && i < 256); - return iscntrl(i); -} - -int str_isdigit(int i) -{ - assert(i >= -1 && i < 256); - return isdigit(i); -} - -int str_isgraph(int i) -{ - assert(i >= -1 && i < 256); - return isgraph(i); -} - -int str_islower(int i) -{ - assert(i >= -1 && i < 256); - return islower(i); -} - -int str_isprint(int i) -{ - assert(i >= -1 && i < 256); - return isprint(i); -} - -int str_ispunct(int i) -{ - assert(i >= -1 && i < 256); - return ispunct(i); -} - -int str_isspace(int i) -{ - assert(i >= -1 && i < 256); - return isspace(i); -} - -int str_isupper(int i) -{ - assert(i >= -1 && i < 256); - return isupper(i); -} - -int str_isxdigit(int i) -{ - assert(i >= -1 && i < 256); - return isxdigit(i); -} - -#undef strstr -#undef strchr -#undef strrchr - -char *str_strstr(const char *haystack, const char *needle) -{ - return strstr(haystack, needle); -} - -char *str_strchr(const char *haystack, int c) -{ - return strchr(haystack, c); -} - -char *str_strrchr(const char *haystack, int c) -{ - return strrchr(haystack, c); -} -#endif diff --git a/nostrdb/ccan/ccan/str/str.c b/nostrdb/ccan/ccan/str/str.c deleted file mode 100644 index a9245c1742..0000000000 --- a/nostrdb/ccan/ccan/str/str.c +++ /dev/null @@ -1,13 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#include - -size_t strcount(const char *haystack, const char *needle) -{ - size_t i = 0, nlen = strlen(needle); - - while ((haystack = strstr(haystack, needle)) != NULL) { - i++; - haystack += nlen; - } - return i; -} diff --git a/nostrdb/ccan/ccan/str/str.h b/nostrdb/ccan/ccan/str/str.h deleted file mode 100644 index d919b84d49..0000000000 --- a/nostrdb/ccan/ccan/str/str.h +++ /dev/null @@ -1,228 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_STR_H -#define CCAN_STR_H -#include "config.h" -#include -#include -#include -#include - -/** - * streq - Are two strings equal? - * @a: first string - * @b: first string - * - * This macro is arguably more readable than "!strcmp(a, b)". - * - * Example: - * if (streq(somestring, "")) - * printf("String is empty!\n"); - */ -#define streq(a,b) (strcmp((a),(b)) == 0) - -/** - * strstarts - Does this string start with this prefix? - * @str: string to test - * @prefix: prefix to look for at start of str - * - * Example: - * if (strstarts(somestring, "foo")) - * printf("String %s begins with 'foo'!\n", somestring); - */ -#define strstarts(str,prefix) (strncmp((str),(prefix),strlen(prefix)) == 0) - -/** - * strends - Does this string end with this postfix? - * @str: string to test - * @postfix: postfix to look for at end of str - * - * Example: - * if (strends(somestring, "foo")) - * printf("String %s end with 'foo'!\n", somestring); - */ -static inline bool strends(const char *str, const char *postfix) -{ - if (strlen(str) < strlen(postfix)) - return false; - - return streq(str + strlen(str) - strlen(postfix), postfix); -} - -/** - * stringify - Turn expression into a string literal - * @expr: any C expression - * - * Example: - * #define PRINT_COND_IF_FALSE(cond) \ - * ((cond) || printf("%s is false!", stringify(cond))) - */ -#define stringify(expr) stringify_1(expr) -/* Double-indirection required to stringify expansions */ -#define stringify_1(expr) #expr - -/** - * strcount - Count number of (non-overlapping) occurrences of a substring. - * @haystack: a C string - * @needle: a substring - * - * Example: - * assert(strcount("aaa aaa", "a") == 6); - * assert(strcount("aaa aaa", "ab") == 0); - * assert(strcount("aaa aaa", "aa") == 2); - */ -size_t strcount(const char *haystack, const char *needle); - -/** - * STR_MAX_CHARS - Maximum possible size of numeric string for this type. - * @type_or_expr: a pointer or integer type or expression. - * - * This provides enough space for a nul-terminated string which represents the - * largest possible value for the type or expression. - * - * Note: The implementation adds extra space so hex values or negative - * values will fit (eg. sprintf(... "%p"). ) - * - * Example: - * char str[STR_MAX_CHARS(int)]; - * - * sprintf(str, "%i", 7); - */ -#define STR_MAX_CHARS(type_or_expr) \ - ((sizeof(type_or_expr) * CHAR_BIT + 8) / 9 * 3 + 2 \ - + STR_MAX_CHARS_TCHECK_(type_or_expr)) - -#if HAVE_TYPEOF -/* Only a simple type can have 0 assigned, so test that. */ -#define STR_MAX_CHARS_TCHECK_(type_or_expr) \ - (sizeof(({ typeof(type_or_expr) x = 0; x; }))*0) -#else -#define STR_MAX_CHARS_TCHECK_(type_or_expr) 0 -#endif - -/** - * cisalnum - isalnum() which takes a char (and doesn't accept EOF) - * @c: a character - * - * Surprisingly, the standard ctype.h isalnum() takes an int, which - * must have the value of EOF (-1) or an unsigned char. This variant - * takes a real char, and doesn't accept EOF. - */ -static inline bool cisalnum(char c) -{ - return isalnum((unsigned char)c); -} -static inline bool cisalpha(char c) -{ - return isalpha((unsigned char)c); -} -static inline bool cisascii(char c) -{ - return isascii((unsigned char)c); -} -#if HAVE_ISBLANK -static inline bool cisblank(char c) -{ - return isblank((unsigned char)c); -} -#endif -static inline bool ciscntrl(char c) -{ - return iscntrl((unsigned char)c); -} -static inline bool cisdigit(char c) -{ - return isdigit((unsigned char)c); -} -static inline bool cisgraph(char c) -{ - return isgraph((unsigned char)c); -} -static inline bool cislower(char c) -{ - return islower((unsigned char)c); -} -static inline bool cisprint(char c) -{ - return isprint((unsigned char)c); -} -static inline bool cispunct(char c) -{ - return ispunct((unsigned char)c); -} -static inline bool cisspace(char c) -{ - return isspace((unsigned char)c); -} -static inline bool cisupper(char c) -{ - return isupper((unsigned char)c); -} -static inline bool cisxdigit(char c) -{ - return isxdigit((unsigned char)c); -} - -#include - -/* These checks force things out of line, hence they are under DEBUG. */ -#ifdef CCAN_STR_DEBUG -#include - -/* These are commonly misused: they take -1 or an *unsigned* char value. */ -#undef isalnum -#undef isalpha -#undef isascii -#undef isblank -#undef iscntrl -#undef isdigit -#undef isgraph -#undef islower -#undef isprint -#undef ispunct -#undef isspace -#undef isupper -#undef isxdigit - -/* You can use a char if char is unsigned. */ -#if HAVE_BUILTIN_TYPES_COMPATIBLE_P && HAVE_TYPEOF -#define str_check_arg_(i) \ - ((i) + BUILD_ASSERT_OR_ZERO(!__builtin_types_compatible_p(typeof(i), \ - char) \ - || (char)255 > 0)) -#else -#define str_check_arg_(i) (i) -#endif - -#define isalnum(i) str_isalnum(str_check_arg_(i)) -#define isalpha(i) str_isalpha(str_check_arg_(i)) -#define isascii(i) str_isascii(str_check_arg_(i)) -#if HAVE_ISBLANK -#define isblank(i) str_isblank(str_check_arg_(i)) -#endif -#define iscntrl(i) str_iscntrl(str_check_arg_(i)) -#define isdigit(i) str_isdigit(str_check_arg_(i)) -#define isgraph(i) str_isgraph(str_check_arg_(i)) -#define islower(i) str_islower(str_check_arg_(i)) -#define isprint(i) str_isprint(str_check_arg_(i)) -#define ispunct(i) str_ispunct(str_check_arg_(i)) -#define isspace(i) str_isspace(str_check_arg_(i)) -#define isupper(i) str_isupper(str_check_arg_(i)) -#define isxdigit(i) str_isxdigit(str_check_arg_(i)) - -#if HAVE_TYPEOF -/* With GNU magic, we can make const-respecting standard string functions. */ -#undef strstr -#undef strchr -#undef strrchr - -/* + 0 is needed to decay array into pointer. */ -#define strstr(haystack, needle) \ - ((typeof((haystack) + 0))str_strstr((haystack), (needle))) -#define strchr(haystack, c) \ - ((typeof((haystack) + 0))str_strchr((haystack), (c))) -#define strrchr(haystack, c) \ - ((typeof((haystack) + 0))str_strrchr((haystack), (c))) -#endif -#endif /* CCAN_STR_DEBUG */ - -#endif /* CCAN_STR_H */ diff --git a/nostrdb/ccan/ccan/str/str_debug.h b/nostrdb/ccan/ccan/str/str_debug.h deleted file mode 100644 index 92c10c41cc..0000000000 --- a/nostrdb/ccan/ccan/str/str_debug.h +++ /dev/null @@ -1,30 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_STR_DEBUG_H -#define CCAN_STR_DEBUG_H - -/* #define CCAN_STR_DEBUG 1 */ - -#ifdef CCAN_STR_DEBUG -/* Because we mug the real ones with macros, we need our own wrappers. */ -int str_isalnum(int i); -int str_isalpha(int i); -int str_isascii(int i); -#if HAVE_ISBLANK -int str_isblank(int i); -#endif -int str_iscntrl(int i); -int str_isdigit(int i); -int str_isgraph(int i); -int str_islower(int i); -int str_isprint(int i); -int str_ispunct(int i); -int str_isspace(int i); -int str_isupper(int i); -int str_isxdigit(int i); - -char *str_strstr(const char *haystack, const char *needle); -char *str_strchr(const char *s, int c); -char *str_strrchr(const char *s, int c); -#endif /* CCAN_STR_DEBUG */ - -#endif /* CCAN_STR_DEBUG_H */ diff --git a/nostrdb/ccan/ccan/structeq/LICENSE b/nostrdb/ccan/ccan/structeq/LICENSE deleted file mode 120000 index 2354d12945..0000000000 --- a/nostrdb/ccan/ccan/structeq/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/BSD-MIT \ No newline at end of file diff --git a/nostrdb/ccan/ccan/structeq/_info b/nostrdb/ccan/ccan/structeq/_info deleted file mode 100644 index 1ac8d56ddc..0000000000 --- a/nostrdb/ccan/ccan/structeq/_info +++ /dev/null @@ -1,57 +0,0 @@ -#include "config.h" -#include -#include - -/** - * structeq - bitwise comparison of structs. - * - * This is a replacement for memcmp, which checks the argument types are the - * same, and takes into account padding in the structure. When there is no - * padding, it becomes a memcmp at compile time (assuming a - * constant-optimizing compiler). - * - * License: BSD-MIT - * Author: Rusty Russell - * - * Example: - * #include - * #include - * #include - * - * struct mydata { - * int start, end; - * }; - * // Defines mydata_eq(a, b) - * STRUCTEQ_DEF(mydata, 0, start, end); - * - * int main(void) - * { - * struct mydata a, b; - * - * a.start = 100; - * a.end = 101; - * - * // They are equal. - * assert(mydata_eq(&a, &b)); - * - * b.end++; - * // Now they are not. - * assert(!mydata_eq(&a, &b)); - * - * return 0; - * } - */ -int main(int argc, char *argv[]) -{ - /* Expect exactly one argument */ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/build_assert\n"); - printf("ccan/cppmagic\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/structeq/structeq.h b/nostrdb/ccan/ccan/structeq/structeq.h deleted file mode 100644 index 81799539c5..0000000000 --- a/nostrdb/ccan/ccan/structeq/structeq.h +++ /dev/null @@ -1,46 +0,0 @@ -/* MIT (BSD) license - see LICENSE file for details */ -#ifndef CCAN_STRUCTEQ_H -#define CCAN_STRUCTEQ_H -#include -#include -#include -#include - -/** - * STRUCTEQ_DEF - define an ..._eq function to compare two structures. - * @sname: name of the structure, and function (_eq) to define. - * @padbytes: number of bytes of expected padding, or negative "max". - * @...: name of every member of the structure. - * - * This generates a single memcmp() call in the common case where the - * structure contains no padding. Since it can't tell the difference between - * padding and a missing member, @padbytes can be used to assert that - * there isn't any, or how many we expect. A negative number means - * "up to or equal to that amount of padding", as padding can be - * platform dependent. - */ -#define STRUCTEQ_DEF(sname, padbytes, ...) \ -static inline bool CPPMAGIC_GLUE2(sname, _eq)(const struct sname *_a, \ - const struct sname *_b) \ -{ \ - BUILD_ASSERT(((padbytes) < 0 && \ - CPPMAGIC_JOIN(+, CPPMAGIC_MAP(STRUCTEQ_MEMBER_SIZE_, \ - __VA_ARGS__)) \ - - (padbytes) >= sizeof(*_a)) \ - || CPPMAGIC_JOIN(+, CPPMAGIC_MAP(STRUCTEQ_MEMBER_SIZE_, \ - __VA_ARGS__)) \ - + (padbytes) == sizeof(*_a)); \ - if (CPPMAGIC_JOIN(+, CPPMAGIC_MAP(STRUCTEQ_MEMBER_SIZE_, __VA_ARGS__)) \ - == sizeof(*_a)) \ - return memcmp(_a, _b, sizeof(*_a)) == 0; \ - else \ - return CPPMAGIC_JOIN(&&, \ - CPPMAGIC_MAP(STRUCTEQ_MEMBER_CMP_, \ - __VA_ARGS__)); \ -} - -/* Helpers */ -#define STRUCTEQ_MEMBER_SIZE_(m) sizeof((_a)->m) -#define STRUCTEQ_MEMBER_CMP_(m) memcmp(&_a->m, &_b->m, sizeof(_a->m)) == 0 - -#endif /* CCAN_STRUCTEQ_H */ diff --git a/nostrdb/ccan/ccan/take/LICENSE b/nostrdb/ccan/ccan/take/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/take/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/take/_info b/nostrdb/ccan/ccan/take/_info deleted file mode 100644 index c8cc4ac995..0000000000 --- a/nostrdb/ccan/ccan/take/_info +++ /dev/null @@ -1,61 +0,0 @@ -#include "config.h" -#include -#include - -/** - * take - routines to mark pointers to be consumed by called functions. - * - * This code helps to implement ownership transfer on a per-arg basis: - * the caller wraps the pointer argument in take() and the callee checks - * taken() to see if it should consume it. - * - * Author: Rusty Russell - * License: CC0 (Public domain) - * - * Example: - * // Given "foo/bar.c" outputs basename is bar.c - * #include - * #include - * - * // Dumb basename program and driver. - * static char *base(const char *file TAKES) - * { - * const char *p = strrchr(file, '/'); - * if (!p) - * p = file; - * else - * p++; - * - * // Use arg in place if we're allowed. - * if (taken(file)) - * return memmove((char *)file, p, strlen(p)+1); - * else - * return strdup(p); - * } - * - * int main(int argc, char *argv[]) - * { - * char *b; - * - * if (argc > 1) // Mangle in place. - * b = base(take(argv[1])); - * else - * b = base("test/string"); - * - * printf("basename is %s\n", b); - * return 0; - * } - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/likely\n"); - printf("ccan/str\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/take/take.c b/nostrdb/ccan/ccan/take/take.c deleted file mode 100644 index 4833bf9357..0000000000 --- a/nostrdb/ccan/ccan/take/take.c +++ /dev/null @@ -1,126 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#include -#include -#include -#include -#include - -static const void **takenarr; -static const char **labelarr; -static size_t max_taken, num_taken; -static size_t allocfail; -static void (*allocfailfn)(const void *p); - -void *take_(const void *p, const char *label) -{ - /* Overallocate: it's better than risking calloc returning NULL! */ - if (unlikely(label && !labelarr)) - labelarr = calloc(max_taken+1, sizeof(*labelarr)); - - if (unlikely(num_taken == max_taken)) { - const void **new; - - new = realloc(takenarr, sizeof(*takenarr) * (max_taken+1)); - if (unlikely(!new)) { - if (allocfailfn) { - allocfail++; - allocfailfn(p); - return NULL; - } - /* Otherwise we leak p. */ - return (void *)p; - } - takenarr = new; - /* Once labelarr is set, we maintain it. */ - if (labelarr) { - const char **labelarr_new; - labelarr_new = realloc(labelarr, - sizeof(*labelarr) * (max_taken+1)); - if (labelarr_new) { - labelarr = labelarr_new; - } else { - /* num_taken will be out of sync with the size of - * labelarr after realloc failure. - * Just pretend that we never had labelarr allocated. */ - free(labelarr); - labelarr = NULL; - } - } - max_taken++; - } - if (unlikely(labelarr)) - labelarr[num_taken] = label; - takenarr[num_taken++] = p; - - return (void *)p; -} - -static size_t find_taken(const void *p) -{ - size_t i; - - for (i = 0; i < num_taken; i++) { - if (takenarr[i] == p) - return i+1; - } - return 0; -} - -bool taken(const void *p) -{ - size_t i; - - if (!p && unlikely(allocfail)) { - allocfail--; - return true; - } - - i = find_taken(p); - if (!i) - return false; - - memmove(&takenarr[i-1], &takenarr[i], - (--num_taken - (i - 1))*sizeof(takenarr[0])); - return true; -} - -bool is_taken(const void *p) -{ - if (!p && unlikely(allocfail)) - return true; - - return find_taken(p) > 0; -} - -const char *taken_any(void) -{ - static char pointer_buf[32]; - - if (num_taken == 0) - return NULL; - - /* We're *allowed* to have some with labels, some without. */ - if (labelarr) { - size_t i; - for (i = 0; i < num_taken; i++) - if (labelarr[i]) - return labelarr[i]; - } - - sprintf(pointer_buf, "%p", takenarr[0]); - return pointer_buf; -} - -void take_cleanup(void) -{ - max_taken = num_taken = 0; - free(takenarr); - takenarr = NULL; - free(labelarr); - labelarr = NULL; -} - -void take_allocfail(void (*fn)(const void *p)) -{ - allocfailfn = fn; -} diff --git a/nostrdb/ccan/ccan/take/take.h b/nostrdb/ccan/ccan/take/take.h deleted file mode 100644 index 8950c6b5bc..0000000000 --- a/nostrdb/ccan/ccan/take/take.h +++ /dev/null @@ -1,136 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_TAKE_H -#define CCAN_TAKE_H -#include "config.h" -#include -#include - -#ifdef CCAN_TAKE_DEBUG -#define TAKE_LABEL(p) __FILE__ ":" stringify(__LINE__) ":" stringify(p) -#else -#define TAKE_LABEL(p) NULL -#endif - -/** - * TAKES - annotate a formal parameter as being take()-able - * - * This doesn't do anything, but useful for documentation. - * - * Example: - * void print_string(const char *str TAKES); - * - */ -#define TAKES - -/** - * take - record a pointer to be consumed by the function its handed to. - * @p: the pointer to mark, or NULL. - * - * This marks a pointer object to be freed by the called function, - * which is extremely useful for chaining functions. It works on - * NULL, for pass-through error handling. - */ -#define take(p) (take_typeof(p) take_((p), TAKE_LABEL(p))) - -/** - * taken - check (and un-take) a pointer was passed with take() - * @p: the pointer to check. - * - * A function which accepts take() arguments uses this to see if it - * should own the pointer; it will be removed from the take list, so - * this only returns true once. - * - * Example: - * // Silly routine to add 1 - * static int *add_one(const int *num TAKES) - * { - * int *ret; - * if (taken(num)) - * ret = (int *)num; - * else - * ret = malloc(sizeof(int)); - * if (ret) - * *ret = (*num) + 1; - * return ret; - * } - */ -bool taken(const void *p); - -/** - * is_taken - check if a pointer was passed with take() - * @p: the pointer to check. - * - * This is like the above, but doesn't remove it from the taken list. - * - * Example: - * // Silly routine to add 1: doesn't handle taken args! - * static int *add_one_notake(const int *num) - * { - * int *ret = malloc(sizeof(int)); - * assert(!is_taken(num)); - * if (ret) - * *ret = (*num) + 1; - * return ret; - * } - */ -bool is_taken(const void *p); - -/** - * taken_any - are there any taken pointers? - * - * Mainly useful for debugging take() leaks. With CCAN_TAKE_DEBUG, returns - * the label where the pointer was passed to take(), otherwise returns - * a static char buffer with the pointer value in it. NULL if none are taken. - * - * Example: - * static void cleanup(void) - * { - * assert(!taken_any()); - * } - */ -const char *taken_any(void); - -/** - * take_cleanup - remove all taken pointers from list. - * - * This is useful in atexit() handlers for valgrind-style leak detection. - * - * Example: - * static void cleanup2(void) - * { - * take_cleanup(); - * } - */ -void take_cleanup(void); - -/** - * take_allocfail - set function to call if we can't reallocated taken array. - * @fn: the function. - * - * If this is not set, then if the array reallocation fails, the - * pointer won't be marked taken(). If @fn returns, it is expected to - * free the pointer; we return NULL from take() and the function handles - * it like any allocation failure. - * - * Example: - * static void free_on_fail(const void *p) - * { - * free((void *)p); - * } - * - * static void init(void) - * { - * take_allocfail(free_on_fail); - * } - */ -void take_allocfail(void (*fn)(const void *p)); - -/* Private functions */ -#if HAVE_TYPEOF -#define take_typeof(ptr) (__typeof__(ptr)) -#else -#define take_typeof(ptr) -#endif - -void *take_(const void *p, const char *label); -#endif /* CCAN_TAKE_H */ diff --git a/nostrdb/ccan/ccan/tal/LICENSE b/nostrdb/ccan/ccan/tal/LICENSE deleted file mode 120000 index 2354d12945..0000000000 --- a/nostrdb/ccan/ccan/tal/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/BSD-MIT \ No newline at end of file diff --git a/nostrdb/ccan/ccan/tal/_info b/nostrdb/ccan/ccan/tal/_info deleted file mode 100644 index 5285c1632b..0000000000 --- a/nostrdb/ccan/ccan/tal/_info +++ /dev/null @@ -1,108 +0,0 @@ -#include "config.h" -#include -#include - -/** - * tal - compact tree allocator routines (inspired by talloc) - * - * Tal is a hierarchical allocator; any pointer allocated by tal can - * become the parent of another allocation. When you free that parent, - * the children (and grandchildren, etc) are automatically freed. - * - * This allows you to build complex objects based on their lifetimes, eg: - * - * struct foo *X = tal(NULL, struct foo); - * X->val = tal(X, int); - * - * and the pointer X->val would be a "child" of the tal context "X"; - * tal_free(X->val) would free X->val as expected, by tal_free(X) would - * free X and X->val. - * - * With an overhead of approximately 4 pointers per object - * (vs. talloc's 12 pointers), it uses dynamic allocation for - * destructors and child lists, so those operations can fail. It does - * not support talloc's references or failing destructors. - * - * See Also: - * ccan/tal/str (useful string helpers) - * - * Example: - * #include - * #include - * #include - * - * // A structure containing a popened command. - * struct command { - * FILE *f; - * char *command; - * }; - * - * // When struct command is freed, we also want to pclose pipe. - * static void close_cmd(struct command *cmd) - * { - * pclose(cmd->f); - * } - * - * // This function opens a writable pipe to the given command. - * static struct command *open_output_cmd(const tal_t *ctx, - * const char *a0, const char *a1) - * { - * struct command *cmd = tal(ctx, struct command); - * - * if (!cmd) - * return NULL; - * - * // Note that tal/str has helpers to make this much easier! - * cmd->command = tal_arrz(cmd, char, strlen(a0) + strlen(a1) + 2); - * if (!cmd->command) { - * tal_free(cmd); - * return NULL; - * } - * strcat(cmd->command, a0); - * strcat(cmd->command, " "); - * strcat(cmd->command, a1); - * - * cmd->f = popen(cmd->command, "w"); - * if (!cmd->f) { - * tal_free(cmd); - * return NULL; - * } - * tal_add_destructor(cmd, close_cmd); - * return cmd; - * } - * - * int main(int argc, char *argv[]) - * { - * struct command *cmd; - * - * if (argc != 2) - * errx(1, "Usage: %s \n", argv[0]); - * - * cmd = open_output_cmd(NULL, argv[1], "hello"); - * if (!cmd) - * err(1, "Running '%s hello'", argv[1]); - * fprintf(cmd->f, "This is a test\n"); - * tal_free(cmd); - * return 0; - * } - * - * License: BSD-MIT - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/alignof\n"); - printf("ccan/compiler\n"); - printf("ccan/likely\n"); - printf("ccan/list\n"); - printf("ccan/str\n"); - printf("ccan/take\n"); - printf("ccan/typesafe_cb\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/tal/benchmark/Makefile b/nostrdb/ccan/ccan/tal/benchmark/Makefile deleted file mode 100644 index f1e8502b3f..0000000000 --- a/nostrdb/ccan/ccan/tal/benchmark/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -CFLAGS=-O3 -Wall -flto -I../../.. -#CFLAGS=-O3 -Wall -I../../.. -#CFLAGS=-g -Wall -I../../.. -LDFLAGS=-O3 -flto -LDLIBS=-lrt - -all: speed samba-allocs - -speed: speed.o tal.o talloc.o time.o list.o take.o str.o -samba-allocs: samba-allocs.o tal.o talloc.o time.o list.o take.o - -tal.o: ../tal.c - $(CC) $(CFLAGS) -c -o $@ $< -str.o: ../str/str.c - $(CC) $(CFLAGS) -c -o $@ $< -talloc.o: ../../talloc/talloc.c - $(CC) $(CFLAGS) -c -o $@ $< -time.o: ../../time/time.c - $(CC) $(CFLAGS) -c -o $@ $< -list.o: ../../list/list.c - $(CC) $(CFLAGS) -c -o $@ $< -take.o: ../../take/take.c - $(CC) $(CFLAGS) -c -o $@ $< - -clean: - rm -f speed samba-allocs *.o diff --git a/nostrdb/ccan/ccan/tal/benchmark/samba-allocs.c b/nostrdb/ccan/ccan/tal/benchmark/samba-allocs.c deleted file mode 100644 index 4bed1b2a21..0000000000 --- a/nostrdb/ccan/ccan/tal/benchmark/samba-allocs.c +++ /dev/null @@ -1,374 +0,0 @@ -/* Grab dump of Samba4 talloc tree to do benchmarks on it. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct node { - void *n; - struct node *parent; - char *name; - bool destructor; - size_t len; - unsigned int num_children; - struct node *children[0]; -}; - -static int node_count; - -static struct node *new_node(void) -{ - node_count++; - return calloc(sizeof(struct node), 1); -} - -/* struct db_context contains 282 bytes in 5 blocks (ref 0) d=(nil) 0x1f64e70 */ -static struct node *parse(const char *line) -{ - struct node *n = new_node(); - const char *p; - - p = strstr(line, " contains "); - p += strlen(" contains "); - p += strspn(line, " "); - n->len = strtol(p, NULL, 0); - p = strstr(p, "d="); - if (p[2] != '(') - n->destructor = true; - return n; -} - -static void add_child(struct node *parent, struct node *child) -{ - unsigned int i; - struct node *oldp = parent; - - parent = realloc(parent, sizeof(*parent) - + sizeof(parent->children[0]) * (parent->num_children+1)); - parent->children[parent->num_children++] = child; - child->parent = parent; - - if (parent == oldp) - return; - - /* Fix up children's parent pointers. */ - for (i = 0; i < parent->num_children-1; i++) { - assert(parent->children[i]->parent == oldp); - parent->children[i]->parent = parent; - } - - /* Fix up parent's child pointer. */ - if (parent->parent) { - assert(parent->parent->children[parent->parent->num_children-1] - == oldp); - parent->parent->children[parent->parent->num_children-1] - = parent; - } -} - -/* Random string of required length */ -static char *namelen(int len) -{ - char *p = malloc(len); - memset(p, 'x', len-1); - p[len-1] = '\0'; - return p; -} - -static struct node *read_nodes(FILE *f) -{ - char line[4096]; - unsigned int curr_indent = 0, indent; - struct node *n, *curr = new_node(); - - /* Ignore first line */ - fgets(line, 4096, f); - - while (fgets(line, 4096, f)) { - bool is_name; - - indent = strspn(line, " "); - - /* Ignore references for now. */ - if (strstarts(line + indent, "reference to: ")) - continue; - - /* Blank name? Use offset of 'contains' to guess indent! */ - if (strstarts(line + indent, "contains ")) - indent -= 31; - - is_name = strstarts(line + indent, ".name "); - - n = parse(line + indent); - if (is_name) { - curr->name = namelen(n->len); - free(n); - } else { - if (indent > curr_indent) { - assert(indent == curr_indent + 4); - curr_indent += 4; - } else { - /* Go back up to parent. */ - for (curr_indent += 4; - curr_indent != indent; - curr_indent -= 4) - curr = curr->parent; - } - add_child(curr, n); - curr = n; - } - } - while (curr->parent) { - curr = curr->parent; - curr_indent -= 4; - } - assert(curr_indent == 0); - return curr; -} - -static int unused_talloc_destructor(void *p) -{ - return 0; -} - -static void do_tallocs(struct node *node) -{ - unsigned int i; - static int count; - - if (count++ % 16 == 0) - node->n = talloc_array(node->parent ? node->parent->n : NULL, - char, node->len); - else - node->n = talloc_size(node->parent ? node->parent->n : NULL, - node->len); - if (node->destructor) - talloc_set_destructor(node->n, unused_talloc_destructor); - if (node->name) - talloc_set_name(node->n, "%s", node->name); - - for (i = 0; i < node->num_children; i++) - do_tallocs(node->children[i]); -} - -static void free_tallocs(struct node *node) -{ - unsigned int i; - - for (i = 0; i < node->num_children; i++) - free_tallocs(node->children[i]); - - talloc_free(node->n); -} - -static void unused_tal_destructor(void *p) -{ -} - -static void do_tals(struct node *node) -{ - unsigned int i; - static int count; - - node->n = tal_arr(node->parent ? node->parent->n : NULL, - char, node->len); - - if (node->destructor) - tal_add_destructor(node->n, unused_tal_destructor); - if (node->name) - tal_set_name(node->n, node->name); - - for (i = 0; i < node->num_children; i++) - do_tals(node->children[i]); -} - -static void free_tals(struct node *node) -{ - unsigned int i; - - for (i = 0; i < node->num_children; i++) - free_tals(node->children[i]); - - tal_free(node->n); -} - -static void do_mallocs(struct node *node) -{ - unsigned int i; - - node->n = malloc(node->len + (node->name ? strlen(node->name) + 1 : 1)); - - for (i = 0; i < node->num_children; i++) - do_mallocs(node->children[i]); -} - -static void free_mallocs(struct node *node) -{ - unsigned int i; - - for (i = 0; i < node->num_children; i++) - free_mallocs(node->children[i]); - - free(node->n); -} - -/* See proc(5): field 23 is vsize, 24 is rss (in pages) */ -static void dump_vsize(void) -{ - int fd, i; - char buf[1000], *p = buf; - - sprintf(buf, "/proc/%u/stat", getpid()); - fd = open(buf, O_RDONLY); - read(fd, buf, sizeof(buf)); - close(fd); - - for (i = 0; i < 22; i++) { - p += strcspn(p, " "); - p += strspn(p, " "); - } - i = atoi(p); - printf("Virtual size = %i, ", i); - p += strcspn(p, " "); - p += strspn(p, " "); - i = atoi(p); - printf("RSS = %i\n", i * getpagesize()); -} - -#define LOOPS 1000 - -int main(int argc, char *argv[]) -{ - struct timeabs start; - struct timerel alloc_time, free_time; - struct node *root; - unsigned int i; - FILE *f; - bool run_talloc = true, run_tal = true, run_malloc = true; - - f = argv[1] ? fopen(argv[1], "r") : stdin; - root = read_nodes(f); - fclose(f); - printf("Read %u nodes\n", node_count); - - if (argc > 2) { - if (streq(argv[2], "--talloc-size")) { - do_tallocs(root); - dump_vsize(); - exit(0); - } - if (streq(argv[2], "--tal-size")) { - do_tals(root); - dump_vsize(); - exit(0); - } - if (strcmp(argv[2], "--talloc") == 0) - run_tal = run_malloc = false; - else if (strcmp(argv[2], "--tal") == 0) - run_talloc = run_malloc = false; - else if (strcmp(argv[2], "--malloc") == 0) - run_talloc = run_tal = false; - else - errx(1, "Bad flag %s", argv[2]); - } - - if (!run_malloc) - goto after_malloc; - - alloc_time.ts.tv_sec = alloc_time.ts.tv_nsec = 0; - free_time.ts.tv_sec = free_time.ts.tv_nsec = 0; - for (i = 0; i < LOOPS; i++) { - start = time_now(); - do_mallocs(root); - alloc_time = timerel_add(alloc_time, - time_between(time_now(), start)); - - start = time_now(); - free_mallocs(root); - free_time = timerel_add(free_time, - time_between(time_now(), start)); - } - alloc_time = time_divide(alloc_time, i); - free_time = time_divide(free_time, i); - printf("Malloc time: %"PRIu64"ns\n", time_to_nsec(alloc_time)); - printf("Free time: %"PRIu64"ns\n", time_to_nsec(free_time)); - -after_malloc: - if (!run_talloc) - goto after_talloc; - - alloc_time.ts.tv_sec = alloc_time.ts.tv_nsec = 0; - free_time.ts.tv_sec = free_time.ts.tv_nsec = 0; - for (i = 0; i < LOOPS; i++) { - start = time_now(); - do_tallocs(root); - alloc_time = timerel_add(alloc_time, - time_between(time_now(), start)); - - start = time_now(); - free_tallocs(root); - free_time = timerel_add(free_time, - time_between(time_now(), start)); - } - alloc_time = time_divide(alloc_time, i); - free_time = time_divide(free_time, i); - printf("Talloc time: %"PRIu64"ns\n", time_to_nsec(alloc_time)); - printf("talloc_free time: %"PRIu64"ns\n", time_to_nsec(free_time)); - - free_time.ts.tv_sec = free_time.ts.tv_nsec = 0; - for (i = 0; i < LOOPS; i++) { - do_tallocs(root); - - start = time_now(); - talloc_free(root->n); - free_time = timerel_add(free_time, - time_between(time_now(), start)); - } - free_time = time_divide(free_time, i); - printf("Single talloc_free time: %"PRIu64"\n", time_to_nsec(free_time)); - -after_talloc: - if (!run_tal) - goto after_tal; - - alloc_time.ts.tv_sec = alloc_time.ts.tv_nsec = 0; - free_time.ts.tv_sec = free_time.ts.tv_nsec = 0; - for (i = 0; i < LOOPS; i++) { - start = time_now(); - do_tals(root); - alloc_time = timerel_add(alloc_time, - time_between(time_now(), start)); - - start = time_now(); - free_tals(root); - free_time = timerel_add(free_time, - time_between(time_now(), start)); - } - alloc_time = time_divide(alloc_time, i); - free_time = time_divide(free_time, i); - printf("Tal time: %"PRIu64"ns\n", time_to_nsec(alloc_time)); - printf("Tal_free time: %"PRIu64"ns\n", time_to_nsec(free_time)); - - free_time.ts.tv_sec = free_time.ts.tv_nsec = 0; - for (i = 0; i < LOOPS; i++) { - do_tals(root); - - start = time_now(); - tal_free(root->n); - free_time = timerel_add(free_time, - time_between(time_now(), start)); - } - free_time = time_divide(free_time, i); - printf("Single tal_free time: %"PRIu64"ns\n", time_to_nsec(free_time)); -after_tal: - - return 0; -} diff --git a/nostrdb/ccan/ccan/tal/benchmark/speed.c b/nostrdb/ccan/ccan/tal/benchmark/speed.c deleted file mode 100644 index fd2d9cc713..0000000000 --- a/nostrdb/ccan/ccan/tal/benchmark/speed.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - Taken from samba/lib/talloc/testsuite.c: Unix SMB/CIFS implementation. - - local testing of talloc routines. - - Copyright (C) Andrew Tridgell 2004 - - ** NOTE! The following LGPL license applies to the talloc - ** library. This does NOT imply that all of Samba is released - ** under the LGPL - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, see . -*/ -#include -#include -#include -#include -#include -#include - -#define LOOPS 1024 - -int main(int argc, char *argv[]) -{ - void *ctx; - unsigned count; - int i, j; - struct timeabs tv; - void *p1, *p2[100], *p3[100]; - bool run_talloc = true, run_tal = true, run_malloc = true; - - if (argv[1]) { - if (strcmp(argv[1], "--talloc") == 0) - run_tal = run_malloc = false; - else if (strcmp(argv[1], "--tal") == 0) - run_talloc = run_malloc = false; - else if (strcmp(argv[1], "--malloc") == 0) - run_talloc = run_tal = false; - else - errx(1, "Bad flag %s", argv[1]); - } - - if (!run_talloc) - goto after_talloc; - - ctx = talloc_new(NULL); - tv = time_now(); - count = 0; - do { - for (i=0;i;CN=NTDS Settings,CN=DC5,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba2000,DC=example,DC=com contains 163 bytes in 1 blocks (ref 0) d=(nil) 0x34269b0 - struct dsdb_class contains 785 bytes in 18 blocks (ref 0) d=(nil) 0x3425e10 - Volume contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3426880 - Volume contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3426810 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3426740 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x34265b0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34266c0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3426640 - const char * contains 66 bytes in 3 blocks (ref 0) d=(nil) 0x3426420 - contentIndexingAllowed contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3426530 - lastContentIndexed contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34264b0 - const char * contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x3426320 - uNCName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x34263a0 - connectionPoint contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3426150 - ;CN=Volume,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x3426240 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34261d0 - 1.2.840.113556.1.5.36 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x34260d0 - volume contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3426060 - Volume contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3425ff0 - struct dsdb_class contains 6127 bytes in 181 blocks (ref 0) d=(nil) 0x341fc80 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3457330 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3457290 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x34395e0 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3439350 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3438400 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3438520 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3437000 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3436910 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3436160 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3435250 - User contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3425da0 - User contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3425d30 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;AO)(A;;RPLCLORC;;;PS)(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;PS)(OA;;CR;ab721a54-1e2f-11d0-9819-00aa0040529b;;PS)(OA;;CR;ab721a56-1e2f-11d0-9819-00aa0040529b;;PS)(OA;;RPWP;77B5B886-944A-11d1-AEBD-0000F80367C1;;PS)(OA;;RPWP;E45795B2-9455-11d1-AEBD-0000F80367C1;;PS)(OA;;RPWP;E45795B3-9455-11d1-AEBD-0000F80367C1;;PS)(OA;;RP;037088f8-0ae1-11d2-b422-00a0c968f939;;RS)(OA;;RP;4c164200-20c0-11d0-a768-00aa006e0529;;RS)(OA;;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;;RS)(A;;RC;;;AU)(OA;;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;;AU)(OA;;RP;77B5B886-944A-11d1-AEBD-0000F80367C1;;AU)(OA;;RP;E45795B3-9455-11d1-AEBD-0000F80367C1;;AU)(OA;;RP;e48d0154-bcf8-11d1-8702-00c04fb96050;;AU)(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;WD)(OA;;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;;RS)(OA;;RPWP;bf967a7f-0de6-11d0-a285-00aa003049e2;;CA)(OA;;RP;46a9b11d-60ae-405a-b7e8-ff8a58d456d2;;S-1-5-32-560)(OA;;WPRP;6db69a1c-9422-11d1-aebd-0000f80367c1;;S-1-5-32-561)(OA;;WPRP;5805bc62-bdc9-4428-a5e2-856a0f4c185e;;S-1-5-32-561) contains 1114 bytes in 1 blocks (ref 0) d=(nil) 0x3425860 - const char * contains 75 bytes in 4 blocks (ref 0) d=(nil) 0x3425650 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34257e0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3425760 - builtinDomain contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34256e0 - const char * contains 450 bytes in 22 blocks (ref 0) d=(nil) 0x3424ae0 - audio contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x34255e0 - carLicense contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3425560 - departmentNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34254e0 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3425460 - employeeNumber contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x34253e0 - employeeType contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3425360 - givenName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34252e0 - homePostalAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3425260 - jpegPhoto contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34251e0 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3425160 - photo contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x34250f0 - preferredLanguage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3425070 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3424ff0 - secretary contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3424f70 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3424f00 - userPKCS12 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3424e80 - userSMIMECertificate contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3424e00 - x500uniqueIdentifier contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3424d80 - msDS-SourceObjectDN contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3424d00 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3424c80 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3424c00 - const char * contains 3428 bytes in 129 blocks (ref 0) d=(nil) 0x34204b0 - accountExpires contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3424a60 - aCSPolicyName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34249e0 - adminCount contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3424960 - badPasswordTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34248e0 - badPwdCount contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3424860 - codePage contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x34247e0 - controlAccessRights contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3424760 - dBCSPwd contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x34246e0 - defaultClassStore contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3424660 - desktopProfile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x34245e0 - dynamicLDAPServer contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3424560 - groupMembershipSAM contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34244e0 - groupPriority contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3424460 - groupsToIgnore contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x34243e0 - homeDirectory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3424360 - homeDrive contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34242e0 - lastLogoff contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3424260 - lastLogon contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34241e0 - lastLogonTimestamp contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3424160 - lmPwdHistory contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x34240e0 - localeID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3424060 - lockoutTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3423fe0 - logonCount contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3423f60 - logonHours contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3423ee0 - logonWorkstation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3423e60 - maxStorage contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3423de0 - msCOM-UserPartitionSetLink contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3423d50 - msDRM-IdentityCertificate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3423cc0 - msDS-Cached-Membership contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3423c40 - msDS-Cached-Membership-Time-Stamp contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x3423bb0 - mS-DS-CreatorSID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3423b30 - msDS-Site-Affinity contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3423ab0 - msDS-User-Account-Control-Computed contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x3423a20 - msIIS-FTPDir contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x34239a0 - msIIS-FTPRoot contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3423920 - mSMQDigests contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x34238a0 - mSMQDigestsMig contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3423820 - mSMQSignCertificates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x34237a0 - mSMQSignCertificatesMig contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3423710 - msNPAllowDialin contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3423690 - msNPCallingStationID contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3423610 - msNPSavedCallingStationID contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3423580 - msRADIUSCallbackNumber contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3423500 - msRADIUSFramedIPAddress contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3423470 - msRADIUSFramedRoute contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x34233f0 - msRADIUSServiceType contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3423370 - msRASSavedCallbackNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x34232e0 - msRASSavedFramedIPAddress contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3423250 - msRASSavedFramedRoute contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x34231d0 - networkAddress contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3423150 - ntPwdHistory contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x34230d0 - operatorCount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3423050 - otherLoginWorkstations contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3422fd0 - preferredOU contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3422f50 - primaryGroupID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3422ed0 - profilePath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3422e50 - pwdLastSet contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3422dd0 - scriptPath contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3422d50 - servicePrincipalName contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3422cd0 - terminalServer contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3422c50 - unicodePwd contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3422bd0 - userAccountControl contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3422b50 - userParameters contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3422ad0 - userPrincipalName contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3422a50 - userSharedFolder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34229d0 - userSharedFolderOther contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3422950 - userWorkstations contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34228d0 - userCertificate contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3422850 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34227d0 - homePhone contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3422750 - initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x34226d0 - mail contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3422660 - manager contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x34225e0 - mobile contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3422570 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x3422500 - pager contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x3422490 - msDS-SecondaryKrbTgtNumber contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3422400 - msDS-SupportedEncryptionTypes contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x3422370 - msPKIRoamingTimeStamp contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x34222f0 - msPKIDPAPIMasterKeys contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3422270 - msPKIAccountCredentials contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34221e0 - msRADIUS-FramedInterfaceId contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3422150 - msRADIUS-SavedFramedInterfaceId contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x34220c0 - msRADIUS-FramedIpv6Prefix contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3422030 - msRADIUS-SavedFramedIpv6Prefix contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x3421fa0 - msRADIUS-FramedIpv6Route contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3421f10 - msRADIUS-SavedFramedIpv6Route contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x3421e80 - msDS-LastSuccessfulInteractiveLogonTime contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3421de0 - msDS-LastFailedInteractiveLogonTime contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x3421d50 - msDS-FailedInteractiveLogonCount contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x3421cc0 - msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x3421c20 - msTSProfilePath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3421ba0 - msTSHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3421b20 - msTSHomeDrive contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3421aa0 - msTSAllowLogon contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3421a20 - msTSRemoteControl contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x34219a0 - msTSMaxDisconnectionTime contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3421910 - msTSMaxConnectionTime contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3421890 - msTSMaxIdleTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3421810 - msTSReconnectionAction contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3421790 - msTSBrokenConnectionAction contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3421700 - msTSConnectClientDrives contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3421670 - msTSConnectPrinterDrives contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x34215e0 - msTSDefaultToMainPrinter contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3421550 - msTSWorkDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x34214d0 - msTSInitialProgram contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3421450 - msTSProperty01 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x34213d0 - msTSProperty02 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3421350 - msTSExpireDate contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x34212d0 - msTSLicenseVersion contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3421250 - msTSManagingLS contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x34211d0 - msDS-UserPasswordExpiryTimeComputed contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x3421140 - msDS-AuthenticatedAtDC contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x34210c0 - msTSExpireDate4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3421040 - msTSExpireDate3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3420fc0 - msTSExpireDate2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3420f40 - msTSLicenseVersion4 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3420ec0 - msTSLicenseVersion3 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3420e40 - msTSLicenseVersion2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3420dc0 - msTSManagingLS4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3420d40 - msTSManagingLS3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3420cc0 - msTSManagingLS2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3420c40 - msTSLSProperty02 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3420bc0 - msTSLSProperty01 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3420b40 - msDS-ResultantPSO contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3420ac0 - msPKI-CredentialRoamingTokens contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x3420a30 - msTSSecondaryDesktops contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x34209b0 - msTSPrimaryDesktop contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3420930 - const char * contains 51 bytes in 3 blocks (ref 0) d=(nil) 0x3420320 - posixAccount contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3420430 - shadowAccount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34203b0 - const char * contains 56 bytes in 3 blocks (ref 0) d=(nil) 0x3420190 - mailRecipient contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34202a0 - securityPrincipal contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3420220 - organizationalPerson contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x341ffc0 - ;CN=Person,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x34200b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3420040 - 1.2.840.113556.1.5.9 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x341ff40 - user contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x341fed0 - User contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x341fe60 - struct dsdb_class contains 759 bytes in 16 blocks (ref 0) d=(nil) 0x341f280 - Type-Library contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341fc00 - Type-Library contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341fb80 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x341fab0 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x341f9b0 - classStore contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x341fa30 - const char * contains 73 bytes in 4 blocks (ref 0) d=(nil) 0x341f820 - cOMClassID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x341f930 - cOMInterfaceID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341f8b0 - cOMUniqueLIBID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341f5e0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x341f7b0 - ;CN=Type-Library,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 118 bytes in 1 blocks (ref 0) d=(nil) 0x341f6d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x341f660 - 1.2.840.113556.1.5.53 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341f560 - typeLibrary contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x341f4e0 - Type-Library contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341f460 - struct dsdb_class contains 1247 bytes in 30 blocks (ref 0) d=(nil) 0x341e070 - Trusted-Domain contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341f200 - Trusted-Domain contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341f180 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(OA;;WP;736e4812-af31-11d2-b7df-00805f48caeb;bf967ab8-0de6-11d0-a285-00aa003049e2;CO)(A;;SD;;;CO) contains 190 bytes in 1 blocks (ref 0) d=(nil) 0x341f050 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x341ef50 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x341efd0 - const char * contains 454 bytes in 18 blocks (ref 0) d=(nil) 0x341e620 - additionalTrustedServiceNames contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x341eec0 - domainCrossRef contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341ee40 - domainIdentifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x341edc0 - flatName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x341ed40 - initialAuthIncoming contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x341ecc0 - initialAuthOutgoing contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x341ec40 - mS-DS-CreatorSID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x341ebc0 - msDS-TrustForestTrustInfo contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x341eb30 - securityIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x341eab0 - trustAttributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x341ea30 - trustAuthIncoming contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341e9b0 - trustAuthOutgoing contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341e930 - trustDirection contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341e8b0 - trustPartner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341e830 - trustPosixOffset contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x341e7b0 - trustType contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x341e3d0 - msDS-SupportedEncryptionTypes contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x341e720 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x341e5b0 - ;CN=Trusted-Domain,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x341e4c0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x341e450 - 1.2.840.113556.1.5.34 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341e350 - trustedDomain contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x341e2d0 - Trusted-Domain contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341e250 - struct dsdb_class contains 3553 bytes in 127 blocks (ref 0) d=(nil) 0x3419ae0 - Top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x341e000 - Top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x341df90 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x341dec0 - const char * contains 29 bytes in 2 blocks (ref 0) d=(nil) 0x341ddc0 - lostAndFound contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341de40 - const char * contains 136 bytes in 5 blocks (ref 0) d=(nil) 0x341db00 - msDS-ObjectReferenceBL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x341dd40 - msDFSR-MemberReferenceBL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x341dcb0 - msDFSR-ComputerReferenceBL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x341dc20 - msSFU30PosixMemberOf contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x341dba0 - const char * contains 2686 bytes in 105 blocks (ref 0) d=(nil) 0x341a280 - msDS-NC-RO-Replica-Locations-BL contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x341da70 - adminDescription contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x341d9f0 - adminDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x341d970 - allowedAttributes contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341d8f0 - allowedAttributesEffective contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x341d860 - allowedChildClasses contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x341d7e0 - allowedChildClassesEffective contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x341d750 - bridgeheadServerListBL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x341d6d0 - canonicalName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x341d650 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x341d5e0 - createTimeStamp contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x341d560 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x341d4e0 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x341d460 - displayNamePrintable contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x341d3e0 - dSCorePropagationData contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341d360 - dSASignature contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341d2e0 - extensionName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x341d260 - flags contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x341d1f0 - fromEntry contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x341d170 - frsComputerReferenceBL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x341d0f0 - fRSMemberReferenceBL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x341d070 - fSMORoleOwner contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x341cff0 - showInAdvancedViewOnly contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x341cf70 - isCriticalSystemObject contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x341cef0 - isDeleted contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x341ce70 - memberOf contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x341cdf0 - isPrivilegeHolder contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341cd70 - lastKnownParent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x341ccf0 - managedObjects contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341cc70 - masteredBy contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x341cbf0 - modifyTimeStamp contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x341cb70 - msCOM-UserLink contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341caf0 - msCOM-PartitionSetLink contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x341ca70 - msDS-Approx-Immed-Subordinates contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x341c9e0 - mS-DS-ConsistencyChildCount contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x341c950 - mS-DS-ConsistencyGuid contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341c8d0 - msDs-masteredBy contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x341c850 - msDS-MembersForAzRoleBL contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x341c7c0 - msDS-OperationsForAzTaskBL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x341c730 - msDS-OperationsForAzRoleBL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x341c6a0 - msDS-TasksForAzTaskBL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341c620 - msDS-TasksForAzRoleBL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341c5a0 - msDS-NCReplCursors contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x341c520 - msDS-NCReplInboundNeighbors contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x341c490 - msDS-NCReplOutboundNeighbors contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x341c400 - msDS-NonMembersBL contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341c380 - msDS-ReplAttributeMetaData contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x341c2f0 - msDS-ReplValueMetaData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x341c270 - ownerBL contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x341c1f0 - netbootSCPBL contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341c170 - nonSecurityMemberBL contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x341c0f0 - distinguishedName contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341c070 - objectGUID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x341bff0 - objectVersion contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x341bf70 - otherWellKnownObjects contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341bef0 - partialAttributeDeletionList contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x341be60 - partialAttributeSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x341bde0 - possibleInferiors contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341bd60 - proxiedObjectName contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341bce0 - proxyAddresses contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341bc60 - queryPolicyBL contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x341bbe0 - name contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x341bb70 - replPropertyMetaData contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x341baf0 - replUpToDateVector contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x341ba70 - directReports contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x341b9f0 - repsFrom contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x341b970 - repsTo contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x341b900 - revision contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x341b880 - sDRightsEffective contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341b800 - serverReferenceBL contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341b780 - siteObjectBL contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341b700 - structuralObjectClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341b680 - subRefs contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x341b600 - subSchemaSubEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341b580 - systemFlags contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x341b500 - uSNChanged contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x341b480 - uSNCreated contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x341b400 - uSNDSALastObjRemoved contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x341b380 - USNIntersite contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341b300 - uSNLastObjRem contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x341b280 - uSNSource contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x341b200 - wbemPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x341b180 - wellKnownObjects contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x341b100 - whenChanged contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x341b080 - whenCreated contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x341b000 - wWWHomePage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x341af80 - url contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x341af10 - msDS-KrbTgtLinkBl contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341ae90 - msDS-RevealedDSAs contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341ae10 - msDS-IsFullReplicaFor contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341ad90 - msDS-IsDomainFor contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x341ad10 - msDS-IsPartialReplicaFor contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x341ac80 - msDS-AuthenticatedToAccountlist contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x341abf0 - msDS-RevealedListBL contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x341ab70 - msDS-PrincipalName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x341aaf0 - msDS-PSOApplied contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x341aa70 - msDS-NcType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x341a9f0 - isRecycled contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x341a970 - msDS-LocalEffectiveDeletionTime contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x341a8e0 - msDS-LocalEffectiveRecycleTime contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x341a850 - msDS-OIDToGroupLinkBl contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341a7d0 - msDS-HostServiceAccountBL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x341a740 - msDS-LastKnownRDN contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x341a6c0 - msDS-EnabledFeatureBL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x341a640 - const char * contains 101 bytes in 5 blocks (ref 0) d=(nil) 0x3419fe0 - instanceType contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x341a200 - nTSecurityDescriptor contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x341a180 - objectCategory contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x341a100 - objectClass contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x341a080 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3419f70 - ;CN=Top,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 109 bytes in 1 blocks (ref 0) d=(nil) 0x3419e90 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3419e20 - 2.5.6.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3419da0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3419d30 - Top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3419cc0 - struct dsdb_class contains 721 bytes in 19 blocks (ref 0) d=(nil) 0x3418fb0 - SubSchema contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3419a60 - SubSchema contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34199e0 - D:S: contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3419970 - const char * contains 20 bytes in 2 blocks (ref 0) d=(nil) 0x3419880 - dMD contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3419900 - const char * contains 157 bytes in 7 blocks (ref 0) d=(nil) 0x3419550 - attributeTypes contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3419800 - dITContentRules contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3419780 - extendedAttributeInfo contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3419700 - extendedClassInfo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3419680 - modifyTimeStamp contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3419600 - objectClasses contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3419310 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x34194e0 - ;CN=SubSchema,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x3419400 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3419390 - 2.5.20.1 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3419290 - subSchema contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3419210 - SubSchema contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3419190 - struct dsdb_class contains 738 bytes in 14 blocks (ref 0) d=(nil) 0x34187b0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3457450 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34573d0 - Subnet-Container contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3418f30 - Subnet-Container contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3418eb0 - D:(A;;RPWPCRCCDCLCLORCWOWDSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 89 bytes in 1 blocks (ref 0) d=(nil) 0x3418de0 - const char * contains 31 bytes in 2 blocks (ref 0) d=(nil) 0x3418b10 - sitesContainer contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3418d60 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3418cf0 - ;CN=Subnet-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x3418c00 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3418b90 - 1.2.840.113556.1.5.95 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3418a90 - subnetContainer contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3418a10 - Subnet-Container contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3418990 - struct dsdb_class contains 833 bytes in 18 blocks (ref 0) d=(nil) 0x3417df0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3457570 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x34574d0 - Subnet contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3418740 - Subnet contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x34186d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3418600 - const char * contains 32 bytes in 2 blocks (ref 0) d=(nil) 0x3418500 - subnetContainer contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3418580 - const char * contains 75 bytes in 4 blocks (ref 0) d=(nil) 0x3418370 - location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3418480 - physicalLocationObject contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3418400 - siteObject contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3418130 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3418300 - ;CN=Subnet,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x3418220 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34181b0 - 1.2.840.113556.1.5.96 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x34180b0 - subnet contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3418040 - Subnet contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3417fd0 - struct dsdb_class contains 741 bytes in 16 blocks (ref 0) d=(nil) 0x34173e0 - Storage contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3417d70 - Storage contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3417cf0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3417c20 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3417b20 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3417ba0 - const char * contains 68 bytes in 4 blocks (ref 0) d=(nil) 0x3417910 - iconPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3417aa0 - moniker contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3417a20 - monikerDisplayName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34179a0 - connectionPoint contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3417740 - ;CN=Storage,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 113 bytes in 1 blocks (ref 0) d=(nil) 0x3417830 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34177c0 - 1.2.840.113556.1.5.33 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x34176c0 - storage contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3417640 - Storage contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x34175c0 - struct dsdb_class contains 769 bytes in 14 blocks (ref 0) d=(nil) 0x3416be0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x34576a0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3457610 - Sites-Container contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3417360 - Sites-Container contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34172e0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3417210 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x3416f40 - configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3417190 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3417120 - ;CN=Sites-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x3417030 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3416fc0 - 1.2.840.113556.1.5.107 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3416ec0 - sitesContainer contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3416e40 - Sites-Container contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3416dc0 - struct dsdb_class contains 743 bytes in 14 blocks (ref 0) d=(nil) 0x34162e0 - Site-Link-Bridge contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3416b60 - Site-Link-Bridge contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3416ae0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3416a10 - const char * contains 35 bytes in 2 blocks (ref 0) d=(nil) 0x3416910 - interSiteTransport contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3416990 - const char * contains 29 bytes in 2 blocks (ref 0) d=(nil) 0x3416640 - siteLinkList contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3416890 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3416820 - ;CN=Site-Link-Bridge,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x3416730 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34166c0 - 1.2.840.113556.1.5.148 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x34165c0 - siteLinkBridge contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3416540 - Site-Link-Bridge contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34164c0 - struct dsdb_class contains 780 bytes in 19 blocks (ref 0) d=(nil) 0x3415760 - Site-Link contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3416260 - Site-Link contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34161e0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3416110 - const char * contains 35 bytes in 2 blocks (ref 0) d=(nil) 0x3416010 - interSiteTransport contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3416090 - const char * contains 75 bytes in 5 blocks (ref 0) d=(nil) 0x3415d80 - cost contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3415fa0 - options contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3415f20 - replInterval contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3415ea0 - schedule contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3415e20 - const char * contains 25 bytes in 2 blocks (ref 0) d=(nil) 0x3415ac0 - siteList contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3415d00 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3415c90 - ;CN=Site-Link,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x3415bb0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3415b40 - 1.2.840.113556.1.5.147 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3415a40 - siteLink contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x34159c0 - Site-Link contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3415940 - struct dsdb_class contains 940 bytes in 26 blocks (ref 0) d=(nil) 0x3414a00 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x34577c0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3457730 - Site contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x34156f0 - Site contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3415680 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;LCRPLORC;;;ED) contains 75 bytes in 1 blocks (ref 0) d=(nil) 0x34155c0 - const char * contains 31 bytes in 2 blocks (ref 0) d=(nil) 0x34154c0 - sitesContainer contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3415540 - const char * contains 243 bytes in 12 blocks (ref 0) d=(nil) 0x3414f80 - msDS-BridgeHeadServersUsed contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x34144d0 - gPLink contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3415450 - gPOptions contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34153d0 - location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3415350 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34152d0 - mSMQInterval1 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3415250 - mSMQInterval2 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34151d0 - mSMQNt4Stub contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3415150 - mSMQSiteForeign contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34150d0 - mSMQSiteID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3415050 - notificationList contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3414d40 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3414f10 - ;CN=Site,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 110 bytes in 1 blocks (ref 0) d=(nil) 0x3414e30 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3414dc0 - 1.2.840.113556.1.5.31 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3414cc0 - site contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3414c50 - Site contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3414be0 - struct dsdb_class contains 738 bytes in 12 blocks (ref 0) d=(nil) 0x3414160 - simpleSecurityObject contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3414980 - simpleSecurityObject contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3414900 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x3414830 - const char * contains 29 bytes in 2 blocks (ref 0) d=(nil) 0x3414730 - userPassword contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x34147b0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x34146c0 - ;CN=simpleSecurityObject,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x34145d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3414560 - 0.9.2342.19200300.100.4.19 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3414440 - simpleSecurityObject contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x34143c0 - simpleSecurityObject contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3414340 - struct dsdb_class contains 867 bytes in 21 blocks (ref 0) d=(nil) 0x34134b0 - ShadowAccount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34140e0 - ShadowAccount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3414060 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3413f90 - const char * contains 207 bytes in 11 blocks (ref 0) d=(nil) 0x3413a50 - shadowFlag contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3413f10 - shadowExpire contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3413e90 - shadowInactive contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3413e10 - shadowWarning contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3413d90 - shadowMax contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3413d10 - shadowMin contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3413c90 - shadowLastChange contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3413c10 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3413b90 - userPassword contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3413810 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3413b20 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x34139e0 - ;CN=ShadowAccount,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x3413900 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3413890 - 1.3.6.1.1.1.2.1 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3413790 - shadowAccount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3413710 - ShadowAccount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3413690 - struct dsdb_class contains 832 bytes in 18 blocks (ref 0) d=(nil) 0x3412980 - Service-Instance contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3413430 - Service-Instance contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34133b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x34132e0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x34131e0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3413260 - const char * contains 64 bytes in 3 blocks (ref 0) d=(nil) 0x3413050 - serviceInstanceVersion contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3413160 - winsockAddresses contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34130e0 - const char * contains 51 bytes in 3 blocks (ref 0) d=(nil) 0x3412ec0 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3412fd0 - serviceClassID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3412f50 - connectionPoint contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3412ce0 - ;CN=Service-Instance,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x3412dd0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3412d60 - 1.2.840.113556.1.5.30 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3412c60 - serviceInstance contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3412be0 - Service-Instance contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3412b60 - struct dsdb_class contains 1560 bytes in 34 blocks (ref 0) d=(nil) 0x3411ad0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34578e0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3457850 - const char * contains 56 bytes in 1 blocks (ref 0) d=(nil) 0x343a6e0 - const char * contains 56 bytes in 1 blocks (ref 0) d=(nil) 0x3439960 - const char * contains 56 bytes in 1 blocks (ref 0) d=(nil) 0x3439af0 - const char * contains 56 bytes in 1 blocks (ref 0) d=(nil) 0x3437bf0 - const char * contains 56 bytes in 1 blocks (ref 0) d=(nil) 0x34375f0 - const char * contains 56 bytes in 1 blocks (ref 0) d=(nil) 0x34372f0 - const char * contains 56 bytes in 1 blocks (ref 0) d=(nil) 0x3435d40 - const char * contains 56 bytes in 1 blocks (ref 0) d=(nil) 0x3435c90 - Service-Connection-Point contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x34128f0 - Service-Connection-Point contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3412860 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x3412770 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x3412560 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x34126f0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3412670 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34125f0 - const char * contains 227 bytes in 10 blocks (ref 0) d=(nil) 0x3412020 - appSchemaVersion contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34124e0 - serviceBindingInformation contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3412450 - serviceClassName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34123d0 - serviceDNSName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3412350 - serviceDNSNameType contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34122d0 - vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3412260 - versionNumber contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34121e0 - versionNumberHi contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3412160 - versionNumberLo contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34120e0 - connectionPoint contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3411e40 - ;CN=Service-Connection-Point,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 130 bytes in 1 blocks (ref 0) d=(nil) 0x3411f30 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3411ec0 - 1.2.840.113556.1.5.126 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3411dc0 - serviceConnectionPoint contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3411d40 - Service-Connection-Point contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3411cb0 - struct dsdb_class contains 775 bytes in 17 blocks (ref 0) d=(nil) 0x3411040 - Service-Class contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3411a50 - Service-Class contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34119d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3411900 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3411800 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3411880 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x3411700 - serviceClassInfo contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3411780 - const char * contains 51 bytes in 3 blocks (ref 0) d=(nil) 0x3411570 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3411680 - serviceClassID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3411600 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x34113a0 - ;CN=Service-Class,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x3411490 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3411420 - 1.2.840.113556.1.5.29 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3411320 - serviceClass contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x34112a0 - Service-Class contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3411220 - struct dsdb_class contains 1534 bytes in 36 blocks (ref 0) d=(nil) 0x34107f0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3457a00 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3457970 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x343a360 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x343a650 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x343a0d0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3439d70 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3439e50 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3438260 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x34382f0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3437f70 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3437e50 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3437d40 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3437ad0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3437b60 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3437740 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x34374d0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3437560 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3436770 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3437260 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3436d70 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3435a80 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3436af0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3435b70 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x3435c00 - Service-Administration-Point contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3410fb0 - Service-Administration-Point contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3410f20 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3410e50 - const char * contains 25 bytes in 2 blocks (ref 0) d=(nil) 0x3410d50 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3410dd0 - serviceConnectionPoint contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3410b70 - ;CN=Service-Administration-Point,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 134 bytes in 1 blocks (ref 0) d=(nil) 0x3410c60 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3410bf0 - 1.2.840.113556.1.5.94 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3410af0 - serviceAdministrationPoint contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3410a60 - Service-Administration-Point contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x34109d0 - struct dsdb_class contains 718 bytes in 14 blocks (ref 0) d=(nil) 0x340fff0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3457b10 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3457a90 - Servers-Container contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3410770 - Servers-Container contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x34106f0 - D:(A;;CC;;;BA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 69 bytes in 1 blocks (ref 0) d=(nil) 0x3410640 - const char * contains 21 bytes in 2 blocks (ref 0) d=(nil) 0x3410550 - site contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x34105d0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3410360 - ;CN=Servers-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x3410460 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34103f0 - 1.2.840.113556.1.5.7000.48 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x34102d0 - serversContainer contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3410250 - Servers-Container contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x34101d0 - struct dsdb_class contains 1110 bytes in 25 blocks (ref 0) d=(nil) 0x340f240 - const char * contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x3457c60 - const char * contains 96 bytes in 1 blocks (ref 0) d=(nil) 0x3457b90 - Server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x340ff80 - Server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x340ff10 - D:(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 95 bytes in 1 blocks (ref 0) d=(nil) 0x340fe40 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x340fd40 - serversContainer contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x340fdc0 - const char * contains 237 bytes in 11 blocks (ref 0) d=(nil) 0x340f750 - bridgeheadTransportList contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x340fcb0 - dNSHostName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x340fc30 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340fbb0 - serialNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x340fb30 - serverReference contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x340fab0 - mailAddress contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x340fa30 - msDS-isGC contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340f9b0 - msDS-isRODC contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x340f930 - msDS-SiteName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x340f8b0 - msDS-IsUserCachableAtRodc contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x340f820 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x340f580 - ;CN=Server,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x340f670 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x340f600 - 1.2.840.113556.1.5.17 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x340f500 - server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x340f490 - Server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x340f420 - struct dsdb_class contains 973 bytes in 25 blocks (ref 0) d=(nil) 0x340e370 - Security-Principal contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x340f1c0 - Security-Principal contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x340f140 - const char * contains 329 bytes in 13 blocks (ref 0) d=(nil) 0x340ea40 - accountNameHistory contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x340f0c0 - altSecurityIdentities contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x340f040 - msDS-KeyVersionNumber contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x340efc0 - nTSecurityDescriptor contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x340ef40 - tokenGroups contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x340eec0 - tokenGroupsGlobalAndUniversal contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x340ee30 - tokenGroupsNoGCAcceptable contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x340eda0 - rid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x340ed30 - sAMAccountType contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x340ecb0 - securityIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x340ec30 - sIDHistory contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x340ebb0 - supplementalCredentials contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x340eb20 - const char * contains 49 bytes in 3 blocks (ref 0) d=(nil) 0x340e8b0 - objectSid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340e9c0 - sAMAccountName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x340e940 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x340e6d0 - ;CN=Security-Principal,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x340e7c0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x340e750 - 1.2.840.113556.1.5.6 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x340e650 - securityPrincipal contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x340e5d0 - Security-Principal contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x340e550 - struct dsdb_class contains 734 bytes in 15 blocks (ref 0) d=(nil) 0x340da70 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3434fa0 - Security-Object contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x340e2f0 - Security-Object contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x340e270 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x340e1a0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x340e0a0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340e120 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x340dfb0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x340e030 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x340ddd0 - ;CN=Security-Object,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x340dec0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x340de50 - 1.2.840.113556.1.5.1 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x340dd50 - securityObject contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x340dcd0 - Security-Object contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x340dc50 - struct dsdb_class contains 692 bytes in 17 blocks (ref 0) d=(nil) 0x340d050 - Secret contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x340da00 - Secret contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x340d990 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY) contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x340d900 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x340d800 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340d880 - const char * contains 89 bytes in 5 blocks (ref 0) d=(nil) 0x340d560 - currentValue contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x340d780 - lastSetTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x340d700 - priorSetTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x340d680 - priorValue contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x340d600 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x340d390 - ;CN=Secret,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x340d480 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x340d410 - 1.2.840.113556.1.5.28 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x340d310 - secret contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x340d2a0 - Secret contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x340d230 - struct dsdb_class contains 834 bytes in 14 blocks (ref 0) d=(nil) 0x340c6e0 - Sam-Server contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x340cfd0 - Sam-Server contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x340cf50 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPLCLORC;;;RU)(OA;;CR;91d67418-0135-4acc-8d79-c08e857cfbec;;AU)(OA;;CR;91d67418-0135-4acc-8d79-c08e857cfbec;;RU) contains 209 bytes in 1 blocks (ref 0) d=(nil) 0x340ce10 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x340cd10 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340cd90 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x340cc10 - samDomainUpdates contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x340cc90 - securityObject contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x340ca40 - ;CN=Sam-Server,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x340cb30 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x340cac0 - 1.2.840.113556.1.5.5 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x340c9c0 - samServer contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340c940 - Sam-Server contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x340c8c0 - struct dsdb_class contains 1050 bytes in 31 blocks (ref 0) d=(nil) 0x340b4e0 - Sam-Domain-Base contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x340c660 - Sam-Domain-Base contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x340c5e0 - const char * contains 471 bytes in 22 blocks (ref 0) d=(nil) 0x340ba20 - creationTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x340c560 - domainReplica contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x340c4e0 - forceLogoff contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x340c460 - lockOutObservationWindow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x340c3d0 - lockoutDuration contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x340c350 - lockoutThreshold contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x340c2d0 - maxPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340c250 - minPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340c1d0 - minPwdLength contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x340c150 - modifiedCount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x340c0d0 - modifiedCountAtLastProm contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x340c040 - nextRid contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x340bfc0 - nTSecurityDescriptor contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x340bf40 - objectSid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340bec0 - oEMInformation contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x340be40 - pwdHistoryLength contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x340bdc0 - pwdProperties contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x340bd40 - revision contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x340bcc0 - serverRole contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x340bc40 - serverState contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x340bbc0 - uASCompat contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340bb40 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x340b840 - ;CN=Sam-Domain-Base,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x340b930 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x340b8c0 - 1.2.840.113556.1.5.2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x340b7c0 - samDomainBase contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x340b740 - Sam-Domain-Base contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x340b6c0 - struct dsdb_class contains 4397 bytes in 51 blocks (ref 0) d=(nil) 0x3408d00 - Sam-Domain contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x340b460 - Sam-Domain contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x340b3e0 - D:(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-2848215498-2472035911-1947525656-498)(A;;RP;;;WD)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCRCWDWOSW;;;DA)(A;CI;RPWPCRLCLOCCRCWDWOSDSW;;;BA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY)(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;EA)(A;CI;LC;;;RU)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;RP;c7407360-20bf-11d0-a768-00aa006e0529;;RU)(OA;CIIO;RPLCLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(A;;RPRC;;;RU)(OA;CIIO;RPLCLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(A;;LCRPLORC;;;ED)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RPLCLORC;;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;RU)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;AU)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;CIIO;CRRPWP;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)S:(AU;SA;WDWOWP;;;WD)(AU;SA;CR;;;BA)(AU;SA;CR;;;DU)(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD) contains 2870 bytes in 1 blocks (ref 0) d=(nil) 0x340a840 - const char * contains 942 bytes in 39 blocks (ref 0) d=(nil) 0x3409330 - auditingPolicy contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x340a7c0 - builtinCreationTime contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x340a740 - builtinModifiedCount contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x340a6c0 - cACertificate contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x340a640 - controlAccessRights contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x340a5c0 - creationTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x340a540 - defaultLocalPolicyObject contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x340a4b0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x340a430 - desktopProfile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x340a3b0 - domainPolicyObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x340a330 - eFSPolicy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340a2b0 - gPLink contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x340a240 - gPOptions contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x340a1c0 - lockOutObservationWindow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x340a130 - lockoutDuration contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x340a0b0 - lockoutThreshold contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x340a030 - lSACreationTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3409fb0 - lSAModifiedCount contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3409f30 - maxPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3409eb0 - minPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3409e30 - minPwdLength contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3409db0 - modifiedCountAtLastProm contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3409d20 - msDS-AllUsersTrustQuota contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3409c90 - msDS-LogonTimeSyncInterval contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3409c00 - ms-DS-MachineAccountQuota contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3409b70 - msDS-PerUserTrustQuota contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3409af0 - msDS-PerUserTrustTombstonesQuota contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x3409a60 - nETBIOSName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x34099e0 - nextRid contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3409960 - nTMixedDomain contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34098e0 - pekKeyChangeInterval contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3409860 - pekList contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x34097e0 - privateKey contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3409760 - pwdHistoryLength contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34096e0 - pwdProperties contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3409660 - replicaSource contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34095e0 - rIDManagerReference contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3409560 - treeName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x34094e0 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x3409230 - samDomainBase contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34092b0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3409060 - ;CN=Sam-Domain,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x3409150 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34090e0 - 1.2.840.113556.1.5.3 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3408fe0 - samDomain contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3408f60 - Sam-Domain contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3408ee0 - struct dsdb_class contains 854 bytes in 14 blocks (ref 0) d=(nil) 0x3408370 - RRAS-Administration-Dictionary contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x3408c70 - RRAS-Administration-Dictionary contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x3408be0 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x3408af0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x34089f0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3408a70 - const char * contains 43 bytes in 2 blocks (ref 0) d=(nil) 0x34088e0 - msRRASVendorAttributeEntry contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3408960 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x34086f0 - ;CN=RRAS-Administration-Dictionary,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 136 bytes in 1 blocks (ref 0) d=(nil) 0x34087e0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3408770 - 1.2.840.113556.1.5.156 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3408670 - rRASAdministrationDictionary contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x34085e0 - RRAS-Administration-Dictionary contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x3408550 - struct dsdb_class contains 942 bytes in 16 blocks (ref 0) d=(nil) 0x34079e0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3457dd0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3457d40 - RRAS-Administration-Connection-Point contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x34082e0 - RRAS-Administration-Connection-Point contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x3408250 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x3408160 - const char * contains 25 bytes in 2 blocks (ref 0) d=(nil) 0x3408060 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x34080e0 - const char * contains 32 bytes in 2 blocks (ref 0) d=(nil) 0x3407d60 - msRRASAttribute contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3407fe0 - serviceAdministrationPoint contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3407f50 - ;CN=RRAS-Administration-Connection-Point,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 142 bytes in 1 blocks (ref 0) d=(nil) 0x3407e50 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3407de0 - 1.2.840.113556.1.5.150 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3407ce0 - rRASAdministrationConnectionPoint contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x3407c50 - RRAS-Administration-Connection-Point contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x3407bc0 - struct dsdb_class contains 802 bytes in 16 blocks (ref 0) d=(nil) 0x3406fc0 - rpc-Server-Element contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3407960 - rpc-Server-Element contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34078e0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3407810 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3407710 - rpcServer contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3407790 - const char * contains 83 bytes in 4 blocks (ref 0) d=(nil) 0x3407500 - rpcNsBindings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3407690 - rpcNsInterfaceID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3407610 - rpcNsTransferSyntax contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3407590 - rpcEntry contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3407320 - ;CN=rpc-Server-Element,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x3407410 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34073a0 - 1.2.840.113556.1.5.73 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x34072a0 - rpcServerElement contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3407220 - rpc-Server-Element contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34071a0 - struct dsdb_class contains 787 bytes in 18 blocks (ref 0) d=(nil) 0x34065b0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3457ee0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3457e60 - rpc-Server contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3406f40 - rpc-Server contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3406ec0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3406df0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3406cf0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3406d70 - const char * contains 75 bytes in 4 blocks (ref 0) d=(nil) 0x3406ae0 - rpcNsCodeset contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3406c70 - rpcNsEntryFlags contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3406bf0 - rpcNsObjectID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3406b70 - rpcEntry contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3406910 - ;CN=rpc-Server,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x3406a00 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3406990 - 1.2.840.113556.1.5.81 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3406890 - rpcServer contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3406810 - rpc-Server contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3406790 - struct dsdb_class contains 838 bytes in 18 blocks (ref 0) d=(nil) 0x3405a80 - rpc-Profile-Element contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3406530 - rpc-Profile-Element contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x34064b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x34063e0 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x34062e0 - rpcProfile contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3406360 - const char * contains 58 bytes in 3 blocks (ref 0) d=(nil) 0x3406150 - rpcNsAnnotation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3406260 - rpcNsProfileEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x34061e0 - const char * contains 55 bytes in 3 blocks (ref 0) d=(nil) 0x3405fc0 - rpcNsInterfaceID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x34060d0 - rpcNsPriority contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3406050 - rpcEntry contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3405de0 - ;CN=rpc-Profile-Element,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x3405ed0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3405e60 - 1.2.840.113556.1.5.26 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3405d60 - rpcProfileElement contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3405ce0 - rpc-Profile-Element contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3405c60 - struct dsdb_class contains 717 bytes in 14 blocks (ref 0) d=(nil) 0x3405280 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3457fe0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3457f60 - rpc-Profile contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3405a00 - rpc-Profile contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3405980 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x34058b0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x34057b0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3405830 - rpcEntry contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x34055e0 - ;CN=rpc-Profile,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 117 bytes in 1 blocks (ref 0) d=(nil) 0x34056d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3405660 - 1.2.840.113556.1.5.82 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3405560 - rpcProfile contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x34054e0 - rpc-Profile contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3405460 - struct dsdb_class contains 724 bytes in 15 blocks (ref 0) d=(nil) 0x34048f0 - rpc-Group contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3405200 - rpc-Group contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3405180 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x34050b0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3404fb0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3405030 - const char * contains 49 bytes in 3 blocks (ref 0) d=(nil) 0x3404e20 - rpcNsGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3404f30 - rpcNsObjectID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3404eb0 - rpcEntry contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3404c50 - ;CN=rpc-Group,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x3404d40 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3404cd0 - 1.2.840.113556.1.5.80 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3404bd0 - rpcGroup contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3404b50 - rpc-Group contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3404ad0 - struct dsdb_class contains 1066 bytes in 20 blocks (ref 0) d=(nil) 0x34040f0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x343a590 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3439cd0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3439a30 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3437ca0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x34376a0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x34371a0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x34359e0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3435e30 - rpc-Entry contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3404870 - rpc-Entry contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34047f0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3404720 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3404620 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34046a0 - connectionPoint contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3404450 - ;CN=rpc-Entry,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x3404540 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34044d0 - 1.2.840.113556.1.5.27 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x34043d0 - rpcEntry contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3404350 - rpc-Entry contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34042d0 - struct dsdb_class contains 2682 bytes in 16 blocks (ref 0) d=(nil) 0x34037f0 - const char * contains 992 bytes in 1 blocks (ref 0) d=(nil) 0x3458490 - const char * contains 960 bytes in 1 blocks (ref 0) d=(nil) 0x3458060 - Rpc-Container contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3404070 - Rpc-Container contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3403ff0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3403f20 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3403e20 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3403ea0 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x3403d20 - nameServiceFlags contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3403da0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3403b50 - ;CN=Rpc-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x3403c40 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3403bd0 - 1.2.840.113556.1.5.136 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3403ad0 - rpcContainer contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3403a50 - Rpc-Container contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x34039d0 - struct dsdb_class contains 804 bytes in 21 blocks (ref 0) d=(nil) 0x3402b70 - room contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3403780 - room contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3403710 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x3403640 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x34034b0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34035c0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3403540 - const char * contains 104 bytes in 6 blocks (ref 0) d=(nil) 0x3403190 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3403430 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x34033b0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3403330 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34032b0 - location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3403230 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x34030a0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3403120 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3402ec0 - ;CN=room,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 110 bytes in 1 blocks (ref 0) d=(nil) 0x3402fc0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3402f50 - 0.9.2342.19200300.100.4.7 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3402e30 - room contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3402dc0 - room contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3402d50 - struct dsdb_class contains 798 bytes in 19 blocks (ref 0) d=(nil) 0x3401fd0 - RID-Set contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3402af0 - RID-Set contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3402a70 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x34029a0 - const char * contains 56 bytes in 4 blocks (ref 0) d=(nil) 0x34027a0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3402920 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34028a0 - user contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3402830 - const char * contains 107 bytes in 5 blocks (ref 0) d=(nil) 0x34024f0 - rIDAllocationPool contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3402720 - rIDNextRID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x34026a0 - rIDPreviousAllocationPool contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3402610 - rIDUsedPool contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3402590 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3402320 - ;CN=RID-Set,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 113 bytes in 1 blocks (ref 0) d=(nil) 0x3402410 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34023a0 - 1.2.840.113556.1.5.129 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x34022a0 - rIDSet contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3402230 - RID-Set contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x34021b0 - struct dsdb_class contains 732 bytes in 14 blocks (ref 0) d=(nil) 0x34016c0 - RID-Manager contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3401f50 - RID-Manager contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3401ed0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)S:(AU;SA;CRWP;;;WD) contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x3401df0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3401cf0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3401d70 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x3401bf0 - rIDAvailablePool contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3401c70 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3401a20 - ;CN=RID-Manager,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 117 bytes in 1 blocks (ref 0) d=(nil) 0x3401b10 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3401aa0 - 1.2.840.113556.1.5.83 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x34019a0 - rIDManager contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3401920 - RID-Manager contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x34018a0 - struct dsdb_class contains 1225 bytes in 34 blocks (ref 0) d=(nil) 0x34003f0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x34588e0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3456200 - rFC822LocalPart contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3401640 - rFC822LocalPart contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34015c0 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x34014f0 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x3401360 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3401470 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34013f0 - const char * contains 429 bytes in 19 blocks (ref 0) d=(nil) 0x34009c0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34012f0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3401270 - destinationIndicator contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x34011f0 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3401160 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34010d0 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3401040 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3400fc0 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3400f40 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3400ec0 - preferredDeliveryMethod contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3400e30 - registeredAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3400db0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3400d30 - sn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3400cc0 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3400c50 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3400bd0 - teletexTerminalIdentifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3400760 - telexNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3400b50 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3400ad0 - domain contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3400950 - ;CN=rFC822LocalPart,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x3400860 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x34007f0 - 0.9.2342.19200300.100.4.14 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x34006d0 - rFC822LocalPart contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3400650 - rFC822LocalPart contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34005d0 - struct dsdb_class contains 1188 bytes in 34 blocks (ref 0) d=(nil) 0x33ff150 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3458a00 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3458970 - Residential-Person contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3400370 - Residential-Person contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34002f0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3400220 - const char * contains 43 bytes in 3 blocks (ref 0) d=(nil) 0x3400090 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x34001a0 - locality contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3400120 - const char * contains 418 bytes in 19 blocks (ref 0) d=(nil) 0x33ff700 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3400010 - destinationIndicator contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33fff90 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33fff00 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33ffe70 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33ffe00 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ffd90 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33ffd00 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ffc80 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ffc00 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33ffb80 - preferredDeliveryMethod contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33ffaf0 - registeredAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ffa70 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ffa00 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33ff990 - teletexTerminalIdentifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33ff900 - telexNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ff880 - title contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33ff810 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ff4b0 - person contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33ff690 - ;CN=Residential-Person,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33ff5a0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ff530 - 2.5.6.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33ff430 - residentialPerson contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ff3b0 - Residential-Person contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ff330 - struct dsdb_class contains 904 bytes in 16 blocks (ref 0) d=(nil) 0x33fe7d0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3458b20 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3458a90 - Remote-Storage-Service-Point contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33ff0c0 - Remote-Storage-Service-Point contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33ff030 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33fef40 - const char * contains 25 bytes in 2 blocks (ref 0) d=(nil) 0x33fee40 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33feec0 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33feb50 - remoteStorageGUID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33fedc0 - serviceAdministrationPoint contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33fed30 - ;CN=Remote-Storage-Service-Point,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 134 bytes in 1 blocks (ref 0) d=(nil) 0x33fec40 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33febd0 - 1.2.840.113556.1.5.146 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33fead0 - remoteStorageServicePoint contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33fea40 - Remote-Storage-Service-Point contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33fe9b0 - struct dsdb_class contains 907 bytes in 19 blocks (ref 0) d=(nil) 0x33fdc00 - Remote-Mail-Recipient contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33fe750 - Remote-Mail-Recipient contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33fe6d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(OA;;CR;ab721a55-1e2f-11d0-9819-00aa0040529b;;AU) contains 142 bytes in 1 blocks (ref 0) d=(nil) 0x33fe5d0 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x33fe440 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33fe550 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33fe4d0 - const char * contains 72 bytes in 4 blocks (ref 0) d=(nil) 0x33fe230 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33fe3c0 - remoteSource contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33fe340 - remoteSourceType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33fe2c0 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x33fdf60 - mailRecipient contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33fe1b0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33fe140 - ;CN=Remote-Mail-Recipient,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33fe050 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33fdfe0 - 1.2.840.113556.1.5.24 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33fdee0 - remoteMailRecipient contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33fde60 - Remote-Mail-Recipient contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33fdde0 - struct dsdb_class contains 741 bytes in 15 blocks (ref 0) d=(nil) 0x33fd280 - Query-Policy contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33fdb80 - Query-Policy contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33fdb00 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33fda30 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33fd930 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33fd9b0 - const char * contains 55 bytes in 3 blocks (ref 0) d=(nil) 0x33fd820 - lDAPAdminLimits contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fd8b0 - lDAPIPDenyList contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33fd5e0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33fd7b0 - ;CN=Query-Policy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 118 bytes in 1 blocks (ref 0) d=(nil) 0x33fd6d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33fd660 - 1.2.840.113556.1.5.106 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33fd560 - queryPolicy contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fd4e0 - Query-Policy contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33fd460 - struct dsdb_class contains 2051 bytes in 68 blocks (ref 0) d=(nil) 0x33fac60 - Print-Queue contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fd200 - Print-Queue contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fd180 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;PO)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO)(A;;RPLCLORC;;;AU) contains 165 bytes in 1 blocks (ref 0) d=(nil) 0x33fd070 - const char * contains 88 bytes in 5 blocks (ref 0) d=(nil) 0x33fcdd0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33fcff0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33fcf70 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33fcef0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33fce70 - const char * contains 1116 bytes in 47 blocks (ref 0) d=(nil) 0x33fb4b0 - assetNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fcd50 - bytesPerMinute contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33fccd0 - defaultPriority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fcc50 - driverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33fcbd0 - driverVersion contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33fcb50 - location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33fcad0 - operatingSystem contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fca50 - operatingSystemHotfix contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33fc9d0 - operatingSystemServicePack contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33fc940 - operatingSystemVersion contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33fc8c0 - physicalLocationObject contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33fc840 - portName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33fc7c0 - printAttributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fc740 - printBinNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33fc6c0 - printCollate contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33fc640 - printColor contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33fc5c0 - printDuplexSupported contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33fc540 - printEndTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33fc4c0 - printFormName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33fc440 - printKeepPrintedJobs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33fc3c0 - printLanguage contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33fc340 - printMACAddress contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fc2c0 - printMaxCopies contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33fc240 - printMaxResolutionSupported contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33fc1b0 - printMaxXExtent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fc130 - printMaxYExtent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fc0b0 - printMediaReady contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fc030 - printMediaSupported contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33fbfb0 - printMemory contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fbf30 - printMinXExtent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fbeb0 - printMinYExtent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fbe30 - printNetworkAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33fbdb0 - printNotify contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fbd30 - printNumberUp contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33fbcb0 - printOrientationsSupported contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33fbc20 - printOwner contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33fbba0 - printPagesPerMinute contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33fbb20 - printRate contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33fbaa0 - printRateUnit contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33fba20 - printSeparatorFile contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33fb9a0 - printShareName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33fb920 - printSpooling contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33fb8a0 - printStaplingSupported contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33fb820 - printStartTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33fb7a0 - printStatus contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fb720 - priority contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33fb6a0 - const char * contains 109 bytes in 6 blocks (ref 0) d=(nil) 0x33fb190 - printerName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fb430 - serverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33fb3b0 - shortServerName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fb330 - uNCName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33fb2b0 - versionNumber contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33fb230 - connectionPoint contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fafc0 - ;CN=Print-Queue,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 117 bytes in 1 blocks (ref 0) d=(nil) 0x33fb0b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33fb040 - 1.2.840.113556.1.5.23 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33faf40 - printQueue contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33faec0 - Print-Queue contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fae40 - struct dsdb_class contains 765 bytes in 17 blocks (ref 0) d=(nil) 0x33fa1d0 - PosixGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33fabe0 - PosixGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33fab60 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33faa90 - const char * contains 121 bytes in 7 blocks (ref 0) d=(nil) 0x33fa770 - memberUid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33faa10 - gidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33fa990 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33fa910 - unixUserPassword contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33fa890 - userPassword contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33fa530 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33fa820 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33fa700 - ;CN=PosixGroup,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x33fa620 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33fa5b0 - 1.3.6.1.1.1.2.2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33fa4b0 - posixGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33fa430 - PosixGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33fa3b0 - struct dsdb_class contains 869 bytes in 22 blocks (ref 0) d=(nil) 0x33f94c0 - PosixAccount contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33fa150 - PosixAccount contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33fa0d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33fa000 - const char * contains 214 bytes in 12 blocks (ref 0) d=(nil) 0x33f9a60 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f9f80 - gecos contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33f9f10 - loginShell contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33f9e90 - unixUserPassword contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33f9e10 - userPassword contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f9d90 - homeDirectory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f9d10 - unixHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33f9c90 - gidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f9c10 - uidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f9820 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f9ba0 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33f9b30 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33f99f0 - ;CN=PosixAccount,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 118 bytes in 1 blocks (ref 0) d=(nil) 0x33f9910 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33f98a0 - 1.3.6.1.1.1.2.0 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f97a0 - posixAccount contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f9720 - PosixAccount contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f96a0 - struct dsdb_class contains 951 bytes in 21 blocks (ref 0) d=(nil) 0x33f87f0 - PKI-Enrollment-Service contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f9440 - PKI-Enrollment-Service contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f93c0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33f92f0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33f91f0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f9270 - const char * contains 216 bytes in 9 blocks (ref 0) d=(nil) 0x33f8da0 - cACertificate contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f9170 - cACertificateDN contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f90f0 - certificateTemplates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33f9070 - dNSHostName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f8ff0 - enrollmentProviders contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f8f70 - signatureAlgorithms contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f8ef0 - msPKI-Site-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f8b50 - msPKI-Enrollment-Servers contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f8e60 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33f8d30 - ;CN=PKI-Enrollment-Service,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 128 bytes in 1 blocks (ref 0) d=(nil) 0x33f8c40 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f8bd0 - 1.2.840.113556.1.5.178 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f8ad0 - pKIEnrollmentService contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33f8a50 - PKI-Enrollment-Service contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f89d0 - struct dsdb_class contains 1461 bytes in 37 blocks (ref 0) d=(nil) 0x33f7210 - PKI-Certificate-Template contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f8760 - PKI-Certificate-Template contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f86d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33f8600 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33f8500 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f8580 - const char * contains 716 bytes in 25 blocks (ref 0) d=(nil) 0x33f77d0 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f8480 - flags contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33f8410 - msPKI-Cert-Template-OID contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33f8380 - msPKI-Certificate-Application-Policy contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x33f82f0 - msPKI-Certificate-Name-Flag contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33f8260 - msPKI-Certificate-Policy contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f81d0 - msPKI-Enrollment-Flag contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33f8150 - msPKI-Minimal-Key-Size contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f80d0 - msPKI-Private-Key-Flag contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f8050 - msPKI-Supersede-Templates contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33f7fc0 - msPKI-Template-Minor-Revision contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33f7f30 - msPKI-Template-Schema-Version contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33f7ea0 - msPKI-RA-Application-Policies contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33f7e10 - msPKI-RA-Policies contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33f7d90 - msPKI-RA-Signature contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f7d10 - pKICriticalExtensions contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33f7c90 - pKIDefaultKeySpec contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33f7c10 - pKIDefaultCSPs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33f7b90 - pKIEnrollmentAccess contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f7b10 - pKIExpirationPeriod contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f7a90 - pKIExtendedKeyUsage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f7a10 - pKIKeyUsage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f7990 - pKIMaxIssuingDepth contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f7910 - pKIOverlapPeriod contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33f7580 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33f7760 - ;CN=PKI-Certificate-Template,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 130 bytes in 1 blocks (ref 0) d=(nil) 0x33f7670 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f7600 - 1.2.840.113556.1.5.177 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f7500 - pKICertificateTemplate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f7480 - PKI-Certificate-Template contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f73f0 - struct dsdb_class contains 866 bytes in 17 blocks (ref 0) d=(nil) 0x33f6870 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3458c50 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3458bb0 - Physical-Location contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33f7190 - Physical-Location contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33f7110 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33f7040 - const char * contains 55 bytes in 3 blocks (ref 0) d=(nil) 0x33f6eb0 - configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f6fc0 - physicalLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33f6f40 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33f6db0 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f6e30 - locality contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33f6bd0 - ;CN=Physical-Location,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x33f6cc0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f6c50 - 1.2.840.113556.1.5.97 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33f6b50 - physicalLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33f6ad0 - Physical-Location contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33f6a50 - struct dsdb_class contains 1011 bytes in 26 blocks (ref 0) d=(nil) 0x33f5b20 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3458d80 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3458cf0 - const char * contains 128 bytes in 1 blocks (ref 0) d=(nil) 0x3436200 - Person contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33f6800 - Person contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33f6790 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33f66c0 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x33f6530 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f6640 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f65c0 - const char * contains 46 bytes in 2 blocks (ref 0) d=(nil) 0x33f6420 - attributeCertificateAttribute contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33f64a0 - const char * contains 101 bytes in 6 blocks (ref 0) d=(nil) 0x33f6110 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33f63a0 - serialNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f6320 - sn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f62b0 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f6230 - userPassword contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f61b0 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x33f6020 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f60a0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33f5fb0 - ;CN=Person,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x33f5ed0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f5e60 - 2.5.6.6 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33f5de0 - person contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33f5d70 - Person contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33f5d00 - struct dsdb_class contains 1309 bytes in 40 blocks (ref 0) d=(nil) 0x33f4460 - Package-Registration contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33f5aa0 - Package-Registration contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33f5a20 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33f5950 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x33f5850 - classStore contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33f58d0 - const char * contains 583 bytes in 28 blocks (ref 0) d=(nil) 0x33f4a10 - canUpgradeScript contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33f57d0 - categories contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33f5750 - cOMClassID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33f56d0 - cOMInterfaceID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33f5650 - cOMProgID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f55d0 - cOMTypelibId contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f5550 - fileExtPriority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f54d0 - iconPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33f5450 - installUiLevel contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33f53d0 - lastUpdateSequence contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f5350 - localeID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33f52d0 - machineArchitecture contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f5250 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f51d0 - msiFileList contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f5150 - msiScript contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f50d0 - msiScriptName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f5050 - msiScriptPath contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f4fd0 - msiScriptSize contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f4f50 - packageFlags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f4ed0 - packageName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f4e50 - packageType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f4dd0 - productCode contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f4d50 - setupCommand contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f4cd0 - upgradeProductCode contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f4c50 - vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33f4be0 - versionNumberHi contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f4b60 - versionNumberLo contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f47c0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33f49a0 - ;CN=Package-Registration,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x33f48b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f4840 - 1.2.840.113556.1.5.49 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33f4740 - packageRegistration contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f46c0 - Package-Registration contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33f4640 - struct dsdb_class contains 2861 bytes in 51 blocks (ref 0) d=(nil) 0x33f27d0 - const char * contains 560 bytes in 1 blocks (ref 0) d=(nil) 0x34590b0 - const char * contains 552 bytes in 1 blocks (ref 0) d=(nil) 0x3458e10 - Organizational-Unit contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f43e0 - Organizational-Unit contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f4360 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(OA;;CCDC;bf967a86-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967aba-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967a9c-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967aa8-0de6-11d0-a285-00aa003049e2;;PO)(A;;RPLCLORC;;;AU)(A;;LCRPLORC;;;ED)(OA;;CCDC;4828CC14-1437-45bc-9B07-AD6F015E5F28;;AO) contains 366 bytes in 1 blocks (ref 0) d=(nil) 0x33f4180 - const char * contains 90 bytes in 5 blocks (ref 0) d=(nil) 0x33f3ee0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f4100 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f4080 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f4000 - country contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33f3f80 - const char * contains 687 bytes in 32 blocks (ref 0) d=(nil) 0x33f2df0 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33f3e60 - c contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33f3df0 - countryCode contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f3d70 - defaultGroup contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f3cf0 - desktopProfile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33f3c70 - destinationIndicator contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33f3bf0 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f3b60 - gPLink contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33f3af0 - gPOptions contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f3a70 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33f39e0 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33f3970 - thumbnailLogo contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f38f0 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f3870 - msCOM-UserPartitionSetLink contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33f37e0 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33f3750 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f36d0 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f3650 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33f35d0 - preferredDeliveryMethod contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33f3540 - registeredAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33f34c0 - searchGuide contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f3440 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33f33c0 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f3350 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33f32e0 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f3260 - teletexTerminalIdentifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33f31d0 - telexNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f3150 - co contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f30e0 - uPNSuffixes contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f3060 - userPassword contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f2fe0 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f2f60 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x33f2d00 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f2d80 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33f2c90 - ;CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33f2ba0 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f2b30 - 2.5.6.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33f2ab0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f2a30 - Organizational-Unit contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f29b0 - struct dsdb_class contains 1213 bytes in 36 blocks (ref 0) d=(nil) 0x33f1330 - Organizational-Role contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f2750 - Organizational-Role contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f26d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33f2600 - const char * contains 74 bytes in 4 blocks (ref 0) d=(nil) 0x33f23f0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f2580 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f2500 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f2480 - const char * contains 440 bytes in 20 blocks (ref 0) d=(nil) 0x33f1950 - destinationIndicator contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33f2370 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f22e0 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33f2250 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33f21e0 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f2170 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33f20e0 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f2060 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f1fe0 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33f1f60 - preferredDeliveryMethod contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33f1ed0 - registeredAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33f1e50 - roleOccupant contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f1dd0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33f1d50 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f1ce0 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33f1c70 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f1bf0 - teletexTerminalIdentifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33f1b60 - telexNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f1ae0 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f1a60 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x33f1860 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f18e0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33f17f0 - ;CN=Organizational-Role,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33f1700 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33f1690 - 2.5.6.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33f1610 - organizationalRole contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f1590 - Organizational-Role contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f1510 - struct dsdb_class contains 2367 bytes in 82 blocks (ref 0) d=(nil) 0x33ee8d0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34593e0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3459350 - const char * contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x34390e0 - const char * contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x34378a0 - const char * contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x3435ef0 - Organizational-Person contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33f12b0 - Organizational-Person contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33f1230 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33f1160 - const char * contains 74 bytes in 4 blocks (ref 0) d=(nil) 0x33f0f50 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f10e0 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33f1060 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33f0fe0 - const char * contains 278 bytes in 10 blocks (ref 0) d=(nil) 0x33f09e0 - homePostalAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33f0ed0 - msExchHouseIdentifier contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33f0e50 - houseIdentifier contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33f0dd0 - msDS-PhoneticFirstName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f0d50 - msDS-PhoneticLastName contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33f0cd0 - msDS-PhoneticDepartment contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33f0c40 - msDS-PhoneticCompanyName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f0bb0 - msDS-PhoneticDisplayName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f0b20 - msDS-HABSeniorityIndex contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33f0aa0 - const char * contains 1097 bytes in 53 blocks (ref 0) d=(nil) 0x33eedf0 - streetAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f0960 - assistant contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f08e0 - company contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33f0860 - countryCode contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33f07e0 - c contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33f0770 - department contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33f06f0 - destinationIndicator contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33f0670 - division contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33f05f0 - mail contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x33f0580 - employeeID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33f0500 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f0470 - generationQualifier contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33f03f0 - givenName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33f0370 - initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33f02f0 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33f0260 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33f01f0 - thumbnailLogo contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33f0170 - manager contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33f00f0 - msDS-AllowedToDelegateTo contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33f0060 - mhsORAddress contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33effe0 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33eff70 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33eff00 - otherMailbox contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33efe80 - middleName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33efe00 - personalTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33efd80 - otherFacsimileTelephoneNumber contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33efcf0 - homePhone contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33efc70 - otherHomePhone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33efbf0 - otherIpPhone contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33efb70 - ipPhone contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33efaf0 - primaryInternationalISDNNumber contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33efa60 - otherMobile contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ef9e0 - mobile contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33ef970 - otherTelephone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ef8f0 - otherPager contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33ef870 - pager contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33ef800 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33ef770 - thumbnailPhoto contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ef6f0 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ef670 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ef5f0 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33ef570 - preferredDeliveryMethod contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33ef4e0 - registeredAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ef460 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ef3f0 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33ef380 - teletexTerminalIdentifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33ef2f0 - telexNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ef270 - primaryTelexNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ef1f0 - co contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ef180 - title contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33ef110 - comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33ef090 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ef010 - person contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33eed80 - ;CN=Person,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x33eeca0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33eec30 - 2.5.6.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33eebb0 - organizationalPerson contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33eeb30 - Organizational-Person contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33eeab0 - struct dsdb_class contains 1620 bytes in 39 blocks (ref 0) d=(nil) 0x33ed3a0 - const char * contains 224 bytes in 1 blocks (ref 0) d=(nil) 0x34595b0 - const char * contains 200 bytes in 1 blocks (ref 0) d=(nil) 0x3459470 - Organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ee850 - Organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ee7d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33ee700 - const char * contains 59 bytes in 4 blocks (ref 0) d=(nil) 0x33ee4f0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33ee680 - country contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33ee600 - locality contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33ee580 - const char * contains 474 bytes in 21 blocks (ref 0) d=(nil) 0x33ed9b0 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ee470 - destinationIndicator contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33ee3f0 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33ee360 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33ee2d0 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33ee260 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33ee1d0 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ee150 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ee0d0 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33ee050 - preferredDeliveryMethod contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33edfc0 - registeredAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33edf40 - searchGuide contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33edec0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33ede40 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33eddd0 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33edd60 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33edce0 - teletexTerminalIdentifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33edc50 - telexNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33edbd0 - userPassword contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33edb50 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33edad0 - const char * contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x33ed8c0 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33ed940 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33ed850 - ;CN=Organization,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 118 bytes in 1 blocks (ref 0) d=(nil) 0x33ed770 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33ed700 - 2.5.6.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33ed680 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ed600 - Organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ed580 - struct dsdb_class contains 865 bytes in 24 blocks (ref 0) d=(nil) 0x33ec5b0 - OncRpc contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33ed330 - OncRpc contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33ed2c0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33ed1f0 - const char * contains 86 bytes in 5 blocks (ref 0) d=(nil) 0x33ecf60 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ed170 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33ed0f0 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33ed080 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33ed000 - const char * contains 115 bytes in 6 blocks (ref 0) d=(nil) 0x33ecc40 - msSFU30Aliases contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ecee0 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33ece60 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ecde0 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ecd60 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ecce0 - const char * contains 40 bytes in 3 blocks (ref 0) d=(nil) 0x33ecac0 - oncRpcNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ecbc0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ecb50 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33ec8f0 - ;CN=OncRpc,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x33ec9e0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ec970 - 1.3.6.1.1.1.2.5 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ec870 - oncRpc contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33ec800 - OncRpc contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33ec790 - struct dsdb_class contains 916 bytes in 20 blocks (ref 0) d=(nil) 0x33eba70 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3459790 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3459700 - NTFRS-Subscriptions contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ec530 - NTFRS-Subscriptions contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ec4b0 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33ec3c0 - const char * contains 65 bytes in 4 blocks (ref 0) d=(nil) 0x33ec1c0 - nTFRSSubscriptions contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ec340 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33ec2c0 - user contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x33ec250 - const char * contains 72 bytes in 4 blocks (ref 0) d=(nil) 0x33ebfb0 - fRSExtensions contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ec140 - fRSVersion contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33ec0c0 - fRSWorkingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ec040 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33ebdd0 - ;CN=NTFRS-Subscriptions,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33ebec0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ebe50 - 1.2.840.113556.1.5.154 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ebd50 - nTFRSSubscriptions contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ebcd0 - NTFRS-Subscriptions contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ebc50 - struct dsdb_class contains 1061 bytes in 26 blocks (ref 0) d=(nil) 0x33eaac0 - NTFRS-Subscriber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33eb9f0 - NTFRS-Subscriber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33eb970 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33eb880 - const char * contains 35 bytes in 2 blocks (ref 0) d=(nil) 0x33eb780 - nTFRSSubscriptions contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33eb800 - const char * contains 259 bytes in 11 blocks (ref 0) d=(nil) 0x33eb190 - fRSExtensions contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33eb700 - fRSFaultCondition contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33eb680 - fRSFlags contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33eb600 - fRSMemberReference contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33eb580 - fRSServiceCommand contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33eb500 - fRSServiceCommandStatus contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33eb470 - fRSTimeLastCommand contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33eb3f0 - fRSTimeLastConfigChange contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33eb360 - fRSUpdateTimeout contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33eb2e0 - schedule contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33eb260 - const char * contains 51 bytes in 3 blocks (ref 0) d=(nil) 0x33eb000 - fRSRootPath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33eb110 - fRSStagingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33eb090 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33eae20 - ;CN=NTFRS-Subscriber,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x33eaf10 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33eaea0 - 1.2.840.113556.1.5.155 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33eada0 - nTFRSSubscriber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ead20 - NTFRS-Subscriber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33eaca0 - struct dsdb_class contains 913 bytes in 20 blocks (ref 0) d=(nil) 0x33e9f60 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34598b0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3459820 - NTFRS-Settings contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33eaa40 - NTFRS-Settings contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ea9c0 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33ea8d0 - const char * contains 96 bytes in 5 blocks (ref 0) d=(nil) 0x33ea630 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ea850 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ea7d0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33ea750 - nTFRSSettings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ea6d0 - const char * contains 48 bytes in 3 blocks (ref 0) d=(nil) 0x33ea4a0 - fRSExtensions contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ea5b0 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33ea530 - applicationSettings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ea2c0 - ;CN=NTFRS-Settings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x33ea3b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ea340 - 1.2.840.113556.1.5.89 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ea240 - nTFRSSettings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ea1c0 - NTFRS-Settings contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ea140 - struct dsdb_class contains 1251 bytes in 32 blocks (ref 0) d=(nil) 0x33e8d80 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34599d0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3459940 - NTFRS-Replica-Set contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e9ee0 - NTFRS-Replica-Set contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e9e60 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY)(OA;;CCDC;2a132586-9373-11d1-aebc-0000f80367c1;;ED) contains 180 bytes in 1 blocks (ref 0) d=(nil) 0x33e9d40 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x33e9c40 - nTFRSSettings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e9cc0 - const char * contains 402 bytes in 18 blocks (ref 0) d=(nil) 0x33e92c0 - fRSDirectoryFilter contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33e9bc0 - fRSDSPoll contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e9b40 - fRSExtensions contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e9ac0 - fRSFileFilter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e9a40 - fRSFlags contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33e99c0 - fRSLevelLimit contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e9940 - fRSPartnerAuthLevel contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33e98c0 - fRSPrimaryMember contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33e9840 - fRSReplicaSetGUID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e97c0 - fRSReplicaSetType contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e9740 - fRSRootSecurity contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e96c0 - fRSServiceCommand contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e9640 - fRSVersionGUID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33e95c0 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e9540 - msFRS-Hub-Member contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33e94c0 - msFRS-Topology-Pref contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33e9440 - schedule contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33e93c0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33e90e0 - ;CN=NTFRS-Replica-Set,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x33e91d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e9160 - 1.2.840.113556.1.5.102 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33e9060 - nTFRSReplicaSet contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e8fe0 - NTFRS-Replica-Set contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e8f60 - struct dsdb_class contains 1061 bytes in 26 blocks (ref 0) d=(nil) 0x33e7ef0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3459ae0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3459a60 - NTFRS-Member contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e8d00 - NTFRS-Member contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e8c80 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33e8b90 - const char * contains 32 bytes in 2 blocks (ref 0) d=(nil) 0x33e8a90 - nTFRSReplicaSet contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e8b10 - const char * contains 301 bytes in 12 blocks (ref 0) d=(nil) 0x33e8420 - frsComputerReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33e8a10 - fRSControlDataCreation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33e8990 - fRSControlInboundBacklog contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33e8900 - fRSControlOutboundBacklog contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33e8870 - fRSExtensions contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e87f0 - fRSFlags contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33e8770 - fRSPartnerAuthLevel contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33e86f0 - fRSRootSecurity contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e8670 - fRSServiceCommand contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e85f0 - fRSUpdateTimeout contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33e8570 - serverReference contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e84f0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33e8250 - ;CN=NTFRS-Member,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 118 bytes in 1 blocks (ref 0) d=(nil) 0x33e8340 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e82d0 - 1.2.840.113556.1.5.153 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33e81d0 - nTFRSMember contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e8150 - NTFRS-Member contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e80d0 - struct dsdb_class contains 945 bytes in 21 blocks (ref 0) d=(nil) 0x33e7200 - NTDS-Site-Settings contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33e7e70 - NTDS-Site-Settings contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33e7df0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33e7d20 - const char * contains 21 bytes in 2 blocks (ref 0) d=(nil) 0x33e7c30 - site contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x33e7cb0 - const char * contains 216 bytes in 9 blocks (ref 0) d=(nil) 0x33e77d0 - interSiteTopologyFailover contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33e7ba0 - interSiteTopologyGenerator contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33e7b10 - interSiteTopologyRenew contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33e7a90 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e7a10 - msDS-Preferred-GC-Site contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33e7990 - options contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33e7910 - queryPolicyObject contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e7890 - schedule contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33e7560 - applicationSiteSettings contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33e7740 - ;CN=NTDS-Site-Settings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33e7650 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e75e0 - 1.2.840.113556.1.5.69 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33e74e0 - nTDSSiteSettings contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33e7460 - NTDS-Site-Settings contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33e73e0 - struct dsdb_class contains 981 bytes in 22 blocks (ref 0) d=(nil) 0x33e65b0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3459c00 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3459b60 - NTDS-Service contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e7180 - NTDS-Service contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e7100 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33e7030 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33e6f30 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e6fb0 - const char * contains 200 bytes in 8 blocks (ref 0) d=(nil) 0x33e6ae0 - dSHeuristics contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e6eb0 - garbageCollPeriod contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e6e30 - msDS-Other-Settings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33e6db0 - replTopologyStayOfExecution contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33e6d20 - sPNMappings contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e6ca0 - tombstoneLifetime contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e6c20 - msDS-DeletedObjectLifetime contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33e6b90 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33e6910 - ;CN=NTDS-Service,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 118 bytes in 1 blocks (ref 0) d=(nil) 0x33e6a00 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e6990 - 1.2.840.113556.1.5.72 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33e6890 - nTDSService contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e6810 - NTDS-Service contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e6790 - struct dsdb_class contains 734 bytes in 15 blocks (ref 0) d=(nil) 0x33e5d30 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3459d20 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3459ca0 - NTDS-DSA-RO contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e6530 - NTDS-DSA-RO contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e64b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33e63e0 - const char * contains 44 bytes in 3 blocks (ref 0) d=(nil) 0x33e6260 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e6360 - server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33e62f0 - nTDSDSA contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33e6090 - ;CN=NTDS-DSA-RO,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 117 bytes in 1 blocks (ref 0) d=(nil) 0x33e6180 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e6110 - 1.2.840.113556.1.5.254 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33e6010 - nTDSDSARO contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e5f90 - NTDS-DSA-RO contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e5f10 - struct dsdb_class contains 1501 bytes in 46 blocks (ref 0) d=(nil) 0x33e4560 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3459e20 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3459da0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x343ab00 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34377d0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3436640 - NTDS-DSA contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33e5cb0 - NTDS-DSA contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33e5c30 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33e5b60 - const char * contains 44 bytes in 3 blocks (ref 0) d=(nil) 0x33e59e0 - server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33e5af0 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e5a70 - const char * contains 717 bytes in 28 blocks (ref 0) d=(nil) 0x33e4ab0 - msDS-EnabledFeature contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33e5960 - dMDLocation contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e58e0 - fRSRootPath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e5860 - hasMasterNCs contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e57e0 - hasPartialReplicaNCs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33e5760 - invocationId contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e56e0 - lastBackupRestorationTime contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33e5650 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e55d0 - msDS-Behavior-Version contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33e5550 - msDS-HasDomainNCs contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e54d0 - msDS-hasMasterNCs contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e5450 - msDS-HasInstantiatedNCs contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33e53c0 - msDS-ReplicationEpoch contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33e5340 - networkAddress contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33e52c0 - options contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33e5240 - queryPolicyObject contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e51c0 - retiredReplDSASignatures contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33e5130 - msDS-RetiredReplNCSignatures contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33e50a0 - serverReference contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e5020 - msDS-hasFullReplicaNCs contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33e4fa0 - msDS-RevealOnDemandGroup contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33e4f10 - msDS-NeverRevealGroup contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33e4e90 - msDS-RevealedUsers contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33e4e10 - msDS-isGC contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e4d90 - msDS-isRODC contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e4d10 - msDS-SiteName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e4c90 - msDS-IsUserCachableAtRodc contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33e4c00 - applicationSettings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33e48d0 - ;CN=NTDS-DSA,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 114 bytes in 1 blocks (ref 0) d=(nil) 0x33e49d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e4960 - 1.2.840.113556.1.5.7000.47 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33e4840 - nTDSDSA contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33e47c0 - NTDS-DSA contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33e4740 - struct dsdb_class contains 920 bytes in 23 blocks (ref 0) d=(nil) 0x33e3780 - NTDS-Connection contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e44e0 - NTDS-Connection contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e4460 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33e4390 - const char * contains 68 bytes in 4 blocks (ref 0) d=(nil) 0x33e4180 - nTDSDSA contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33e4310 - nTFRSReplicaSet contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e4290 - nTFRSMember contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e4210 - const char * contains 108 bytes in 5 blocks (ref 0) d=(nil) 0x33e3ed0 - generatedConnection contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33e4100 - mS-DS-ReplicatesNCReason contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33e4070 - schedule contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33e3ff0 - transportType contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e3f70 - const char * contains 69 bytes in 4 blocks (ref 0) d=(nil) 0x33e3cc0 - enabledConnection contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e3e50 - fromServer contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33e3dd0 - options contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33e3d50 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x33e3ae0 - ;CN=NTDS-Connection,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x33e3bd0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e3b60 - 1.2.840.113556.1.5.71 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33e3a60 - nTDSConnection contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33e39e0 - NTDS-Connection contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e3960 - struct dsdb_class contains 857 bytes in 23 blocks (ref 0) d=(nil) 0x33e29e0 - NisObject contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e3700 - NisObject contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e3680 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33e35b0 - const char * contains 86 bytes in 5 blocks (ref 0) d=(nil) 0x33e3320 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33e3530 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e34b0 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33e3440 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e33c0 - const char * contains 73 bytes in 4 blocks (ref 0) d=(nil) 0x33e3110 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33e32a0 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e3220 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e31a0 - const char * contains 58 bytes in 4 blocks (ref 0) d=(nil) 0x33e2f10 - nisMapEntry contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e3090 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33e3010 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e2fa0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33e2d40 - ;CN=NisObject,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x33e2e30 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e2dc0 - 1.3.6.1.1.1.2.10 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33e2cc0 - nisObject contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e2c40 - NisObject contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e2bc0 - struct dsdb_class contains 970 bytes in 26 blocks (ref 0) d=(nil) 0x33e1a80 - NisNetgroup contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e2960 - NisNetgroup contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e28e0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33e2810 - const char * contains 86 bytes in 5 blocks (ref 0) d=(nil) 0x33e2580 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33e2790 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e2710 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33e26a0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e2620 - const char * contains 216 bytes in 9 blocks (ref 0) d=(nil) 0x33e20a0 - msSFU30NetgroupUserAtDomain contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33e24f0 - msSFU30NetgroupHostAtDomain contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33e2460 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33e23e0 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33e2360 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e22e0 - nisNetgroupTriple contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e2260 - memberNisNetgroup contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e21e0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e2160 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x33e1fb0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e2030 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33e1de0 - ;CN=NisNetgroup,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 117 bytes in 1 blocks (ref 0) d=(nil) 0x33e1ed0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e1e60 - 1.3.6.1.1.1.2.8 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e1d60 - nisNetgroup contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e1ce0 - NisNetgroup contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e1c60 - struct dsdb_class contains 921 bytes in 21 blocks (ref 0) d=(nil) 0x33e0f30 - const char * contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x3459f60 - const char * contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x3459ea0 - NisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33e1a10 - NisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33e19a0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33e18d0 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x33e16c0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33e1850 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e17d0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e1750 - const char * contains 28 bytes in 2 blocks (ref 0) d=(nil) 0x33e15c0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e1640 - const char * contains 38 bytes in 3 blocks (ref 0) d=(nil) 0x33e1440 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33e1540 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e14d0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33e1270 - ;CN=NisMap,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x33e1360 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e12f0 - 1.3.6.1.1.1.2.9 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e11f0 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33e1180 - NisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33e1110 - struct dsdb_class contains 917 bytes in 23 blocks (ref 0) d=(nil) 0x33e0170 - ms-WMI-WMIGPO contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e0eb0 - ms-WMI-WMIGPO contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e0e30 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSW;;;DA)(A;;CC;;;PA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 101 bytes in 1 blocks (ref 0) d=(nil) 0x33e0d60 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33e0c60 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33e0ce0 - const char * contains 184 bytes in 9 blocks (ref 0) d=(nil) 0x33e07a0 - msWMI-intFlags1 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e0be0 - msWMI-intFlags2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e0b60 - msWMI-intFlags3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e0ae0 - msWMI-intFlags4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33e0a60 - msWMI-Parm1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e09e0 - msWMI-Parm2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e0960 - msWMI-Parm3 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e08e0 - msWMI-Parm4 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33e0860 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33e06a0 - msWMI-TargetClass contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33e0720 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33e04d0 - ;CN=ms-WMI-WMIGPO,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x33e05c0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33e0550 - 1.2.840.113556.1.5.215 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33e0450 - msWMI-WMIGPO contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33e03d0 - ms-WMI-WMIGPO contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33e0350 - struct dsdb_class contains 844 bytes in 15 blocks (ref 0) d=(nil) 0x33df780 - ms-WMI-UnknownRangeParam contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33e00e0 - ms-WMI-UnknownRangeParam contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33e0050 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33dff80 - const char * contains 46 bytes in 2 blocks (ref 0) d=(nil) 0x33dfe70 - msWMI-MergeablePolicyTemplate contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33dfef0 - const char * contains 65 bytes in 3 blocks (ref 0) d=(nil) 0x33dfce0 - msWMI-NormalizedClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33dfdf0 - msWMI-TargetObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33dfd70 - msWMI-RangeParam contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33dfb00 - ;CN=ms-WMI-UnknownRangeParam,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 130 bytes in 1 blocks (ref 0) d=(nil) 0x33dfbf0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33dfb80 - 1.2.840.113556.1.5.204 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33dfa80 - msWMI-UnknownRangeParam contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33df9f0 - ms-WMI-UnknownRangeParam contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33df960 - struct dsdb_class contains 830 bytes in 16 blocks (ref 0) d=(nil) 0x33ded60 - ms-WMI-UintSetParam contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33df700 - ms-WMI-UintSetParam contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33df680 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPCCDCLCLODTRC;;;AU) contains 99 bytes in 1 blocks (ref 0) d=(nil) 0x33df5b0 - const char * contains 46 bytes in 2 blocks (ref 0) d=(nil) 0x33df4a0 - msWMI-MergeablePolicyTemplate contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33df520 - const char * contains 37 bytes in 2 blocks (ref 0) d=(nil) 0x33df3a0 - msWMI-IntValidValues contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33df420 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33df2a0 - msWMI-IntDefault contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33df320 - msWMI-RangeParam contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33df0c0 - ;CN=ms-WMI-UintSetParam,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33df1b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33df140 - 1.2.840.113556.1.5.208 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33df040 - msWMI-UintSetParam contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33defc0 - ms-WMI-UintSetParam contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33def40 - struct dsdb_class contains 847 bytes in 17 blocks (ref 0) d=(nil) 0x33de2b0 - ms-WMI-UintRangeParam contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33dece0 - ms-WMI-UintRangeParam contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33dec60 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33deb90 - const char * contains 46 bytes in 2 blocks (ref 0) d=(nil) 0x33dea80 - msWMI-MergeablePolicyTemplate contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33deb00 - const char * contains 50 bytes in 3 blocks (ref 0) d=(nil) 0x33de8f0 - msWMI-IntMin contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33dea00 - msWMI-IntMax contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33de980 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33de7f0 - msWMI-IntDefault contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33de870 - msWMI-RangeParam contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33de610 - ;CN=ms-WMI-UintRangeParam,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33de700 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33de690 - 1.2.840.113556.1.5.207 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33de590 - msWMI-UintRangeParam contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33de510 - ms-WMI-UintRangeParam contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33de490 - struct dsdb_class contains 846 bytes in 16 blocks (ref 0) d=(nil) 0x33dd880 - ms-WMI-StringSetParam contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33de230 - ms-WMI-StringSetParam contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33de1b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPCCDCLCLODTRC;;;AU) contains 99 bytes in 1 blocks (ref 0) d=(nil) 0x33de0e0 - const char * contains 46 bytes in 2 blocks (ref 0) d=(nil) 0x33ddfd0 - msWMI-MergeablePolicyTemplate contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33de050 - const char * contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x33ddec0 - msWMI-StringValidValues contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33ddf40 - const char * contains 36 bytes in 2 blocks (ref 0) d=(nil) 0x33dddc0 - msWMI-StringDefault contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33dde40 - msWMI-RangeParam contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ddbe0 - ;CN=ms-WMI-StringSetParam,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33ddcd0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ddc60 - 1.2.840.113556.1.5.210 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ddb60 - msWMI-StringSetParam contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33ddae0 - ms-WMI-StringSetParam contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33dda60 - struct dsdb_class contains 1050 bytes in 30 blocks (ref 0) d=(nil) 0x33dc810 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a0a0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a020 - ms-WMI-Som contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33dd800 - ms-WMI-Som contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33dd780 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSW;;;DA)(A;;CC;;;PA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 101 bytes in 1 blocks (ref 0) d=(nil) 0x33dd6b0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33dd5b0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33dd630 - const char * contains 290 bytes in 13 blocks (ref 0) d=(nil) 0x33dcec0 - msWMI-Author contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33dd530 - msWMI-ChangeDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33dd4b0 - msWMI-CreationDate contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33dd430 - msWMI-intFlags1 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33dd3b0 - msWMI-intFlags2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33dd330 - msWMI-intFlags3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33dd2b0 - msWMI-intFlags4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33dd230 - msWMI-Parm1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33dd1b0 - msWMI-Parm2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33dd130 - msWMI-Parm3 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33dd0b0 - msWMI-Parm4 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33dd030 - msWMI-SourceOrganization contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33dcfa0 - const char * contains 44 bytes in 3 blocks (ref 0) d=(nil) 0x33dcdb0 - msWMI-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33dce40 - msWMI-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33dcb70 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33dcd40 - ;CN=ms-WMI-Som,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x33dcc60 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33dcbf0 - 1.2.840.113556.1.5.213 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33dcaf0 - msWMI-Som contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33dca70 - ms-WMI-Som contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33dc9f0 - struct dsdb_class contains 819 bytes in 14 blocks (ref 0) d=(nil) 0x33dbec0 - ms-WMI-SimplePolicyTemplate contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33dc780 - ms-WMI-SimplePolicyTemplate contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33dc6f0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPCCDCLCLODTRC;;;AU) contains 99 bytes in 1 blocks (ref 0) d=(nil) 0x33dc620 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33dc520 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33dc5a0 - const char * contains 35 bytes in 2 blocks (ref 0) d=(nil) 0x33dc420 - msWMI-TargetObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33dc4a0 - msWMI-PolicyTemplate contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33dc240 - ;CN=ms-WMI-SimplePolicyTemplate,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 133 bytes in 1 blocks (ref 0) d=(nil) 0x33dc330 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33dc2c0 - 1.2.840.113556.1.5.201 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33dc1c0 - msWMI-SimplePolicyTemplate contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33dc130 - ms-WMI-SimplePolicyTemplate contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33dc0a0 - struct dsdb_class contains 763 bytes in 14 blocks (ref 0) d=(nil) 0x33db5c0 - ms-WMI-ShadowObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33dbe40 - ms-WMI-ShadowObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33dbdc0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33dbcf0 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33dbbf0 - msWMI-PolicyType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33dbc70 - const char * contains 35 bytes in 2 blocks (ref 0) d=(nil) 0x33db920 - msWMI-TargetObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33dbb70 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33dbb00 - ;CN=ms-WMI-ShadowObject,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33dba10 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33db9a0 - 1.2.840.113556.1.5.212 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33db8a0 - msWMI-ShadowObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33db820 - ms-WMI-ShadowObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33db7a0 - struct dsdb_class contains 785 bytes in 17 blocks (ref 0) d=(nil) 0x33dab30 - ms-WMI-Rule contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33db540 - ms-WMI-Rule contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33db4c0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33db3f0 - const char * contains 44 bytes in 3 blocks (ref 0) d=(nil) 0x33db260 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33db370 - msWMI-Som contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33db2f0 - const char * contains 86 bytes in 4 blocks (ref 0) d=(nil) 0x33db0d0 - msWMI-Query contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33db1e0 - msWMI-TargetNameSpace contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33db160 - msWMI-QueryLanguage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33dae90 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33db060 - ;CN=ms-WMI-Rule,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 117 bytes in 1 blocks (ref 0) d=(nil) 0x33daf80 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33daf10 - 1.2.840.113556.1.5.214 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33dae10 - msWMI-Rule contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33dad90 - ms-WMI-Rule contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33dad10 - struct dsdb_class contains 850 bytes in 17 blocks (ref 0) d=(nil) 0x33da080 - ms-WMI-RealRangeParam contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33daab0 - ms-WMI-RealRangeParam contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33daa30 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33da960 - const char * contains 46 bytes in 2 blocks (ref 0) d=(nil) 0x33da850 - msWMI-MergeablePolicyTemplate contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33da8d0 - const char * contains 52 bytes in 3 blocks (ref 0) d=(nil) 0x33da6c0 - msWMI-Int8Min contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33da7d0 - msWMI-Int8Max contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33da750 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33da5c0 - msWMI-Int8Default contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33da640 - msWMI-RangeParam contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33da3e0 - ;CN=ms-WMI-RealRangeParam,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33da4d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33da460 - 1.2.840.113556.1.5.209 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33da360 - msWMI-RealRangeParam contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33da2e0 - ms-WMI-RealRangeParam contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33da260 - struct dsdb_class contains 887 bytes in 17 blocks (ref 0) d=(nil) 0x33d9660 - const char * contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x3435020 - ms-WMI-RangeParam contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33da000 - ms-WMI-RangeParam contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d9f80 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPCCDCLCLODTRC;;;AU) contains 99 bytes in 1 blocks (ref 0) d=(nil) 0x33d9eb0 - const char * contains 46 bytes in 2 blocks (ref 0) d=(nil) 0x33d9da0 - msWMI-MergeablePolicyTemplate contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33d9e20 - const char * contains 86 bytes in 4 blocks (ref 0) d=(nil) 0x33d9c10 - msWMI-PropertyName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d9d20 - msWMI-TargetClass contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d9ca0 - msWMI-TargetType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d99c0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33d9ba0 - ;CN=ms-WMI-RangeParam,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x33d9ab0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d9a40 - 1.2.840.113556.1.5.203 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d9940 - msWMI-RangeParam contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d98c0 - ms-WMI-RangeParam contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d9840 - struct dsdb_class contains 1093 bytes in 30 blocks (ref 0) d=(nil) 0x33d85e0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a1a0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a120 - ms-WMI-PolicyType contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d95e0 - ms-WMI-PolicyType contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d9560 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSW;;;DA)(A;;CC;;;PA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 101 bytes in 1 blocks (ref 0) d=(nil) 0x33d9490 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33d9390 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33d9410 - const char * contains 290 bytes in 13 blocks (ref 0) d=(nil) 0x33d8ca0 - msWMI-Author contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33d9310 - msWMI-ChangeDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d9290 - msWMI-CreationDate contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d9210 - msWMI-intFlags1 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d9190 - msWMI-intFlags2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d9110 - msWMI-intFlags3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d9090 - msWMI-intFlags4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d9010 - msWMI-Parm1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d8f90 - msWMI-Parm2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d8f10 - msWMI-Parm3 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d8e90 - msWMI-Parm4 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d8e10 - msWMI-SourceOrganization contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33d8d80 - const char * contains 52 bytes in 3 blocks (ref 0) d=(nil) 0x33d8b90 - msWMI-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33d8c20 - msWMI-TargetObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d8940 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33d8b20 - ;CN=ms-WMI-PolicyType,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x33d8a30 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d89c0 - 1.2.840.113556.1.5.211 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d88c0 - msWMI-PolicyType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d8840 - ms-WMI-PolicyType contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d87c0 - struct dsdb_class contains 1233 bytes in 34 blocks (ref 0) d=(nil) 0x33d72c0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34350d0 - ms-WMI-PolicyTemplate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d8560 - ms-WMI-PolicyTemplate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d84e0 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSW;;;DA)(A;;CC;;;PA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 101 bytes in 1 blocks (ref 0) d=(nil) 0x33d8410 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33d8310 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33d8390 - const char * contains 315 bytes in 14 blocks (ref 0) d=(nil) 0x33d7ba0 - msWMI-Author contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33d8290 - msWMI-ChangeDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d8210 - msWMI-CreationDate contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d8190 - msWMI-intFlags1 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d8110 - msWMI-intFlags2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d8090 - msWMI-intFlags3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d8010 - msWMI-intFlags4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d7f90 - msWMI-Parm1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d7f10 - msWMI-Parm2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d7e90 - msWMI-Parm3 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d7e10 - msWMI-Parm4 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d7d90 - msWMI-SourceOrganization contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33d7d00 - msWMI-TargetType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d7c80 - const char * contains 155 bytes in 7 blocks (ref 0) d=(nil) 0x33d7870 - msWMI-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33d7b20 - msWMI-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33d7aa0 - msWMI-TargetNameSpace contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d7a20 - msWMI-TargetClass contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d79a0 - msWMI-TargetPath contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d7920 - msWMI-NormalizedClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d7620 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33d7800 - ;CN=ms-WMI-PolicyTemplate,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33d7710 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d76a0 - 1.2.840.113556.1.5.200 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d75a0 - msWMI-PolicyTemplate contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d7520 - ms-WMI-PolicyTemplate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d74a0 - struct dsdb_class contains 1023 bytes in 26 blocks (ref 0) d=(nil) 0x33d6360 - ms-WMI-ObjectEncoding contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d7240 - ms-WMI-ObjectEncoding contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d71c0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33d70f0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33d6ff0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33d7070 - const char * contains 292 bytes in 14 blocks (ref 0) d=(nil) 0x33d6910 - msWMI-TargetObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d6f70 - msWMI-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33d6ef0 - msWMI-intFlags4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d6e70 - msWMI-intFlags3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d6df0 - msWMI-intFlags2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d6d70 - msWMI-intFlags1 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d6cf0 - msWMI-Genus contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d6c70 - msWMI-Parm4 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d6bf0 - msWMI-Parm3 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d6b70 - msWMI-Parm2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d6af0 - msWMI-Parm1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d6a70 - msWMI-ScopeGuid contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d69f0 - msWMI-Class contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d66c0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33d68a0 - ;CN=ms-WMI-ObjectEncoding,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33d67b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d6740 - 1.2.840.113556.1.5.217 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d6640 - msWMI-ObjectEncoding contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d65c0 - ms-WMI-ObjectEncoding contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d6540 - struct dsdb_class contains 943 bytes in 14 blocks (ref 0) d=(nil) 0x33d5b00 - const char * contains 72 bytes in 1 blocks (ref 0) d=(nil) 0x345a2e0 - const char * contains 72 bytes in 1 blocks (ref 0) d=(nil) 0x345a220 - ms-WMI-MergeablePolicyTemplate contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33d62d0 - ms-WMI-MergeablePolicyTemplate contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33d6240 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPCCDCLCLODTRC;;;AU) contains 99 bytes in 1 blocks (ref 0) d=(nil) 0x33d6170 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33d6070 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33d60f0 - msWMI-PolicyTemplate contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d5e80 - ;CN=ms-WMI-MergeablePolicyTemplate,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 136 bytes in 1 blocks (ref 0) d=(nil) 0x33d5f70 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d5f00 - 1.2.840.113556.1.5.202 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d5e00 - msWMI-MergeablePolicyTemplate contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33d5d70 - ms-WMI-MergeablePolicyTemplate contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33d5ce0 - struct dsdb_class contains 825 bytes in 16 blocks (ref 0) d=(nil) 0x33d50e0 - ms-WMI-IntSetParam contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d5a80 - ms-WMI-IntSetParam contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d5a00 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPCCDCLCLODTRC;;;AU) contains 99 bytes in 1 blocks (ref 0) d=(nil) 0x33d5930 - const char * contains 46 bytes in 2 blocks (ref 0) d=(nil) 0x33d5820 - msWMI-MergeablePolicyTemplate contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33d58a0 - const char * contains 37 bytes in 2 blocks (ref 0) d=(nil) 0x33d5720 - msWMI-IntValidValues contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d57a0 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33d5620 - msWMI-IntDefault contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d56a0 - msWMI-RangeParam contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d5440 - ;CN=ms-WMI-IntSetParam,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33d5530 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d54c0 - 1.2.840.113556.1.5.206 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d53c0 - msWMI-IntSetParam contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d5340 - ms-WMI-IntSetParam contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d52c0 - struct dsdb_class contains 842 bytes in 17 blocks (ref 0) d=(nil) 0x33d4630 - ms-WMI-IntRangeParam contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d5060 - ms-WMI-IntRangeParam contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d4fe0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33d4f10 - const char * contains 46 bytes in 2 blocks (ref 0) d=(nil) 0x33d4e00 - msWMI-MergeablePolicyTemplate contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33d4e80 - const char * contains 50 bytes in 3 blocks (ref 0) d=(nil) 0x33d4c70 - msWMI-IntMin contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33d4d80 - msWMI-IntMax contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33d4d00 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33d4b70 - msWMI-IntDefault contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d4bf0 - msWMI-RangeParam contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d4990 - ;CN=ms-WMI-IntRangeParam,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x33d4a80 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d4a10 - 1.2.840.113556.1.5.205 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d4910 - msWMI-IntRangeParam contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33d4890 - ms-WMI-IntRangeParam contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d4810 - struct dsdb_class contains 792 bytes in 16 blocks (ref 0) d=(nil) 0x33d3c10 - ms-TAPI-Rt-Person contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d45b0 - ms-TAPI-Rt-Person contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d4530 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33d4460 - const char * contains 56 bytes in 3 blocks (ref 0) d=(nil) 0x33d42d0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d43e0 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33d4360 - const char * contains 52 bytes in 3 blocks (ref 0) d=(nil) 0x33d41c0 - msTAPI-IpAddress contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d4250 - msTAPI-uid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33d3f70 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33d4150 - ;CN=ms-TAPI-Rt-Person,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x33d4060 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d3ff0 - 1.2.840.113556.1.5.222 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d3ef0 - msTAPI-RtPerson contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d3e70 - ms-TAPI-Rt-Person contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d3df0 - struct dsdb_class contains 838 bytes in 17 blocks (ref 0) d=(nil) 0x33d3170 - ms-TAPI-Rt-Conference contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d3b90 - ms-TAPI-Rt-Conference contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d3b10 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33d3a40 - const char * contains 35 bytes in 2 blocks (ref 0) d=(nil) 0x33d3940 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d39c0 - const char * contains 64 bytes in 3 blocks (ref 0) d=(nil) 0x33d37b0 - msTAPI-ProtocolId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d38c0 - msTAPI-ConferenceBlob contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d3840 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x33d36b0 - msTAPI-uid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33d3730 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33d3550 - ;CN=ms-TAPI-Rt-Conference,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33d35c0 - msTAPI-uid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33d34d0 - 1.2.840.113556.1.5.221 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d3450 - msTAPI-RtConference contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33d33d0 - ms-TAPI-Rt-Conference contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d3350 - struct dsdb_class contains 1451 bytes in 39 blocks (ref 0) d=(nil) 0x33d1c10 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x345a440 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x345a3a0 - MS-SQL-SQLServer contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d30f0 - MS-SQL-SQLServer contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d3070 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33d2fa0 - const char * contains 39 bytes in 2 blocks (ref 0) d=(nil) 0x33d2ea0 - serviceConnectionPoint contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d2f20 - const char * contains 616 bytes in 25 blocks (ref 0) d=(nil) 0x33d2150 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d2e20 - mS-SQL-RegisteredOwner contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d2da0 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33d2d20 - mS-SQL-Location contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d2ca0 - mS-SQL-Memory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33d2c20 - mS-SQL-Build contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33d2ba0 - mS-SQL-ServiceAccount contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d2b20 - mS-SQL-CharacterSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33d2aa0 - mS-SQL-SortOrder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d2a20 - mS-SQL-UnicodeSortOrder contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33d2990 - mS-SQL-Clustered contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d2910 - mS-SQL-NamedPipe contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d2890 - mS-SQL-MultiProtocol contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d2810 - mS-SQL-SPX contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33d2790 - mS-SQL-TCPIP contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33d2710 - mS-SQL-AppleTalk contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d2690 - mS-SQL-Vines contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33d2610 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33d2590 - mS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d2510 - mS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d2490 - mS-SQL-GPSLatitude contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d2410 - mS-SQL-GPSLongitude contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33d2390 - mS-SQL-GPSHeight contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d2310 - mS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d2290 - serviceConnectionPoint contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d1f70 - ;CN=MS-SQL-SQLServer,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x33d2060 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d1ff0 - 1.2.840.113556.1.5.184 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d1ef0 - mS-SQL-SQLServer contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d1e70 - MS-SQL-SQLServer contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d1df0 - struct dsdb_class contains 914 bytes in 20 blocks (ref 0) d=(nil) 0x33d0fd0 - MS-SQL-SQLRepository contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d1b90 - MS-SQL-SQLRepository contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d1b10 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33d1a40 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33d1940 - mS-SQL-SQLServer contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d19c0 - const char * contains 180 bytes in 8 blocks (ref 0) d=(nil) 0x33d1580 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d18c0 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33d1840 - mS-SQL-Build contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33d17c0 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33d1740 - mS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d16c0 - mS-SQL-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33d1330 - mS-SQL-InformationDirectory contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33d1630 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33d1510 - ;CN=MS-SQL-SQLRepository,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x33d1420 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d13b0 - 1.2.840.113556.1.5.186 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d12b0 - mS-SQL-SQLRepository contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d1230 - MS-SQL-SQLRepository contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33d11b0 - struct dsdb_class contains 1140 bytes in 25 blocks (ref 0) d=(nil) 0x33d0080 - MS-SQL-SQLPublication contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d0f50 - MS-SQL-SQLPublication contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d0ed0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33d0e00 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33d0d00 - mS-SQL-SQLServer contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d0d80 - const char * contains 401 bytes in 13 blocks (ref 0) d=(nil) 0x33d0630 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d0c80 - mS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d0c00 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33d0b80 - mS-SQL-Type contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33d0b00 - mS-SQL-Database contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33d0a80 - mS-SQL-AllowAnonymousSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x33d09f0 - mS-SQL-Publisher contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33d0970 - mS-SQL-AllowKnownPullSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x33d08e0 - mS-SQL-AllowImmediateUpdatingSubscription contains 42 bytes in 1 blocks (ref 0) d=(nil) 0x33d0840 - mS-SQL-AllowQueuedUpdatingSubscription contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x33d07b0 - mS-SQL-AllowSnapshotFilesFTPDownloading contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x33d0710 - mS-SQL-ThirdParty contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33d03e0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33d05c0 - ;CN=MS-SQL-SQLPublication,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33d04d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33d0460 - 1.2.840.113556.1.5.187 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33d0360 - mS-SQL-SQLPublication contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d02e0 - MS-SQL-SQLPublication contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33d0260 - struct dsdb_class contains 1039 bytes in 25 blocks (ref 0) d=(nil) 0x33cf180 - MS-SQL-SQLDatabase contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33d0000 - MS-SQL-SQLDatabase contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33cff80 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33cfeb0 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33cfdb0 - mS-SQL-SQLServer contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33cfe30 - const char * contains 315 bytes in 13 blocks (ref 0) d=(nil) 0x33cf6c0 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33cfd30 - mS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33cfcb0 - mS-SQL-Alias contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33cfc30 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33cfbb0 - mS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33cfb30 - mS-SQL-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33cfab0 - mS-SQL-LastBackupDate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cfa30 - mS-SQL-LastDiagnosticDate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33cf9a0 - mS-SQL-Applications contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33cf920 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33cf8a0 - mS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cf820 - mS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33cf7a0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33cf4e0 - ;CN=MS-SQL-SQLDatabase,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33cf5d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33cf560 - 1.2.840.113556.1.5.188 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33cf460 - mS-SQL-SQLDatabase contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33cf3e0 - MS-SQL-SQLDatabase contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33cf360 - struct dsdb_class contains 1094 bytes in 26 blocks (ref 0) d=(nil) 0x33ce320 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x345a570 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x345a4e0 - MS-SQL-OLAPServer contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33cf100 - MS-SQL-OLAPServer contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33cf080 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33cefb0 - const char * contains 39 bytes in 2 blocks (ref 0) d=(nil) 0x33ceeb0 - serviceConnectionPoint contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33cef30 - const char * contains 286 bytes in 12 blocks (ref 0) d=(nil) 0x33ce860 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33cee30 - mS-SQL-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33cedb0 - mS-SQL-Build contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ced30 - mS-SQL-RegisteredOwner contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33cecb0 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33cec30 - mS-SQL-ServiceAccount contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cebb0 - mS-SQL-Language contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ceb30 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ceab0 - mS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cea30 - mS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ce9b0 - mS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ce930 - serviceConnectionPoint contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ce680 - ;CN=MS-SQL-OLAPServer,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x33ce770 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ce700 - 1.2.840.113556.1.5.185 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ce600 - mS-SQL-OLAPServer contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ce580 - MS-SQL-OLAPServer contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ce500 - struct dsdb_class contains 1104 bytes in 28 blocks (ref 0) d=(nil) 0x33cd3b0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a680 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a600 - MS-SQL-OLAPDatabase contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ce2a0 - MS-SQL-OLAPDatabase contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ce220 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33ce150 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33ce050 - mS-SQL-OLAPServer contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ce0d0 - const char * contains 342 bytes in 14 blocks (ref 0) d=(nil) 0x33cd8f0 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33cdfd0 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33cdf50 - mS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33cded0 - mS-SQL-Type contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33cde50 - mS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33cddd0 - mS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33cdd50 - mS-SQL-LastBackupDate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cdcd0 - mS-SQL-Applications contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33cdc50 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33cdbd0 - mS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cdb50 - mS-SQL-ConnectionURL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33cdad0 - mS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cda50 - mS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33cd9d0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33cd710 - ;CN=MS-SQL-OLAPDatabase,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33cd800 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33cd790 - 1.2.840.113556.1.5.189 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33cd690 - mS-SQL-OLAPDatabase contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33cd610 - MS-SQL-OLAPDatabase contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33cd590 - struct dsdb_class contains 947 bytes in 22 blocks (ref 0) d=(nil) 0x33cc660 - MS-SQL-OLAPCube contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33cd330 - MS-SQL-OLAPCube contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33cd2b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33cd1e0 - const char * contains 36 bytes in 2 blocks (ref 0) d=(nil) 0x33cd0e0 - mS-SQL-OLAPDatabase contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33cd160 - const char * contains 235 bytes in 10 blocks (ref 0) d=(nil) 0x33ccba0 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33cd060 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ccfe0 - mS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ccf60 - mS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ccee0 - mS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33cce60 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33ccde0 - mS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ccd60 - mS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ccce0 - mS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ccc60 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33cc9c0 - ;CN=MS-SQL-OLAPCube,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x33ccab0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33cca40 - 1.2.840.113556.1.5.190 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33cc940 - mS-SQL-OLAPCube contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33cc8c0 - MS-SQL-OLAPCube contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33cc840 - struct dsdb_class contains 968 bytes in 20 blocks (ref 0) d=(nil) 0x33cb990 - msSFU-30-NIS-Map-Config contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33cc5d0 - msSFU-30-NIS-Map-Config contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33cc540 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33cc470 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33cc370 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33cc3f0 - const char * contains 225 bytes in 8 blocks (ref 0) d=(nil) 0x33cbf00 - msSFU30MapFilter contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33cc2f0 - msSFU30ResultAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33cc260 - msSFU30SearchAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33cc1d0 - msSFU30IntraFieldSeparator contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33cc140 - msSFU30NSMAPFieldPosition contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33cc0b0 - msSFU30FieldSeparator contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cc030 - msSFU30KeyAttributes contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33cbfb0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33cbd10 - ;CN=msSFU-30-NIS-Map-Config,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33cbe10 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33cbda0 - 1.2.840.113556.1.6.18.2.217 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33cbc80 - msSFU30NISMapConfig contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33cbc00 - msSFU-30-NIS-Map-Config contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33cbb70 - struct dsdb_class contains 864 bytes in 19 blocks (ref 0) d=(nil) 0x33cadc0 - msSFU-30-Network-User contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cb910 - msSFU-30-Network-User contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cb890 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33cb7c0 - const char * contains 59 bytes in 4 blocks (ref 0) d=(nil) 0x33cb5c0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33cb740 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33cb6d0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33cb650 - const char * contains 97 bytes in 5 blocks (ref 0) d=(nil) 0x33cb320 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33cb540 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33cb4c0 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33cb440 - msSFU30KeyValues contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33cb3c0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33cb130 - ;CN=msSFU-30-Network-User,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33cb230 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33cb1c0 - 1.2.840.113556.1.6.18.2.216 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33cb0a0 - msSFU30NetworkUser contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33cb020 - msSFU-30-Network-User contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33cafa0 - struct dsdb_class contains 834 bytes in 19 blocks (ref 0) d=(nil) 0x33ca1f0 - msSFU-30-Net-Id contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33cad40 - msSFU-30-Net-Id contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33cacc0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33cabf0 - const char * contains 59 bytes in 4 blocks (ref 0) d=(nil) 0x33ca9f0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33cab70 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33cab00 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33caa80 - const char * contains 97 bytes in 5 blocks (ref 0) d=(nil) 0x33ca750 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33ca970 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ca8f0 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ca870 - msSFU30KeyValues contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ca7f0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33ca560 - ;CN=msSFU-30-Net-Id,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x33ca660 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ca5f0 - 1.2.840.113556.1.6.18.2.212 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33ca4d0 - msSFU30NetId contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ca450 - msSFU-30-Net-Id contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ca3d0 - struct dsdb_class contains 862 bytes in 19 blocks (ref 0) d=(nil) 0x33c9620 - msSFU-30-Mail-Aliases contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ca170 - msSFU-30-Mail-Aliases contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ca0f0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33ca020 - const char * contains 59 bytes in 4 blocks (ref 0) d=(nil) 0x33c9e20 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c9fa0 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33c9f30 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c9eb0 - const char * contains 95 bytes in 5 blocks (ref 0) d=(nil) 0x33c9b80 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33c9da0 - msSFU30Aliases contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33c9d20 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33c9ca0 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c9c20 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c9990 - ;CN=msSFU-30-Mail-Aliases,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33c9a90 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c9a20 - 1.2.840.113556.1.6.18.2.211 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33c9900 - msSFU30MailAliases contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c9880 - msSFU-30-Mail-Aliases contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33c9800 - struct dsdb_class contains 990 bytes in 22 blocks (ref 0) d=(nil) 0x33c8890 - msSFU-30-Domain-Info contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33c95a0 - msSFU-30-Domain-Info contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33c9520 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c9450 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33c9350 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c93d0 - const char * contains 261 bytes in 10 blocks (ref 0) d=(nil) 0x33c8df0 - msSFU30CryptMethod contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c92d0 - msSFU30MaxUidNumber contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33c9250 - msSFU30MaxGidNumber contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33c91d0 - msSFU30OrderNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c9150 - msSFU30MasterServerName contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33c90c0 - msSFU30IsValidContainer contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33c9030 - msSFU30SearchContainer contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c8fb0 - msSFU30YpServers contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33c8f30 - msSFU30Domains contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33c8eb0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c8c00 - ;CN=msSFU-30-Domain-Info,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x33c8d00 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c8c90 - 1.2.840.113556.1.6.18.2.215 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33c8b70 - msSFU30DomainInfo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33c8af0 - msSFU-30-Domain-Info contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33c8a70 - struct dsdb_class contains 858 bytes in 19 blocks (ref 0) d=(nil) 0x33c7ca0 - ms-Print-ConnectionPolicy contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33c8800 - ms-Print-ConnectionPolicy contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33c8770 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c86a0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33c85a0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c8620 - const char * contains 87 bytes in 5 blocks (ref 0) d=(nil) 0x33c8300 - uNCName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33c8520 - serverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33c84a0 - printAttributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33c8420 - printerName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c83a0 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x33c8210 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c8290 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c8030 - ;CN=ms-Print-ConnectionPolicy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 131 bytes in 1 blocks (ref 0) d=(nil) 0x33c8120 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c80b0 - 1.2.840.113556.1.6.23.2 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33c7fa0 - msPrint-ConnectionPolicy contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33c7f10 - ms-Print-ConnectionPolicy contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33c7e80 - struct dsdb_class contains 820 bytes in 14 blocks (ref 0) d=(nil) 0x33c7340 - ms-PKI-Private-Key-Recovery-Agent contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x33c7c10 - ms-PKI-Private-Key-Recovery-Agent contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x33c7b80 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c7ab0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33c79b0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c7a30 - const char * contains 32 bytes in 2 blocks (ref 0) d=(nil) 0x33c78b0 - userCertificate contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33c7930 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c76c0 - ;CN=ms-PKI-Private-Key-Recovery-Agent,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 139 bytes in 1 blocks (ref 0) d=(nil) 0x33c77b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c7740 - 1.2.840.113556.1.5.223 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c7640 - msPKI-PrivateKeyRecoveryAgent contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33c75b0 - ms-PKI-Private-Key-Recovery-Agent contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x33c7520 - struct dsdb_class contains 840 bytes in 14 blocks (ref 0) d=(nil) 0x33c6af0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x345a7a0 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345a700 - ms-PKI-Key-Recovery-Agent contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33c72b0 - ms-PKI-Key-Recovery-Agent contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33c7220 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c7150 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33c7050 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c70d0 - user contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x33c6e70 - ;CN=ms-PKI-Key-Recovery-Agent,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 131 bytes in 1 blocks (ref 0) d=(nil) 0x33c6f60 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c6ef0 - 1.2.840.113556.1.5.195 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c6df0 - msPKI-Key-Recovery-Agent contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33c6d60 - ms-PKI-Key-Recovery-Agent contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33c6cd0 - struct dsdb_class contains 971 bytes in 22 blocks (ref 0) d=(nil) 0x33c5e90 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a8c0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a840 - ms-PKI-Enterprise-Oid contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33c6a70 - ms-PKI-Enterprise-Oid contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33c69f0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c6920 - const char * contains 55 bytes in 3 blocks (ref 0) d=(nil) 0x33c6790 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c68a0 - msPKI-Enterprise-Oid contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33c6820 - const char * contains 179 bytes in 7 blocks (ref 0) d=(nil) 0x33c63d0 - msPKI-Cert-Template-OID contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33c6700 - msPKI-OID-Attribute contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33c6680 - msPKI-OID-CPS contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c6600 - msPKI-OIDLocalizedName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c6580 - msPKI-OID-User-Notice contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33c6500 - msDS-OIDToGroupLink contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33c6480 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c61f0 - ;CN=ms-PKI-Enterprise-Oid,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33c62e0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c6270 - 1.2.840.113556.1.5.196 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c6170 - msPKI-Enterprise-Oid contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33c60f0 - ms-PKI-Enterprise-Oid contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33c6070 - struct dsdb_class contains 928 bytes in 18 blocks (ref 0) d=(nil) 0x33c5300 - ms-net-ieee-8023-GroupPolicy contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33c5e00 - ms-net-ieee-8023-GroupPolicy contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33c5d70 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c5ca0 - const char * contains 58 bytes in 4 blocks (ref 0) d=(nil) 0x33c5aa0 - person contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33c5c30 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c5bb0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33c5b30 - const char * contains 129 bytes in 4 blocks (ref 0) d=(nil) 0x33c5860 - ms-net-ieee-8023-GP-PolicyGUID contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33c5a10 - ms-net-ieee-8023-GP-PolicyData contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33c5980 - ms-net-ieee-8023-GP-PolicyReserved contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x33c58f0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c5680 - ;CN=ms-net-ieee-8023-GroupPolicy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 134 bytes in 1 blocks (ref 0) d=(nil) 0x33c5770 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c5700 - 1.2.840.113556.1.5.252 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c5600 - ms-net-ieee-8023-GroupPolicy contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33c5570 - ms-net-ieee-8023-GroupPolicy contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33c54e0 - struct dsdb_class contains 936 bytes in 18 blocks (ref 0) d=(nil) 0x33c4770 - ms-net-ieee-80211-GroupPolicy contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33c5270 - ms-net-ieee-80211-GroupPolicy contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33c51e0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c5110 - const char * contains 58 bytes in 4 blocks (ref 0) d=(nil) 0x33c4f10 - person contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33c50a0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c5020 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33c4fa0 - const char * contains 132 bytes in 4 blocks (ref 0) d=(nil) 0x33c4cd0 - ms-net-ieee-80211-GP-PolicyGUID contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x33c4e80 - ms-net-ieee-80211-GP-PolicyData contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x33c4df0 - ms-net-ieee-80211-GP-PolicyReserved contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x33c4d60 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c4af0 - ;CN=ms-net-ieee-80211-GroupPolicy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 135 bytes in 1 blocks (ref 0) d=(nil) 0x33c4be0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c4b70 - 1.2.840.113556.1.5.251 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c4a70 - ms-net-ieee-80211-GroupPolicy contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33c49e0 - ms-net-ieee-80211-GroupPolicy contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33c4950 - struct dsdb_class contains 824 bytes in 19 blocks (ref 0) d=(nil) 0x33c3bc0 - MSMQ-Site-Link contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33c46f0 - MSMQ-Site-Link contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33c4670 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c45a0 - const char * contains 39 bytes in 2 blocks (ref 0) d=(nil) 0x33c44a0 - mSMQEnterpriseSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c4520 - const char * contains 55 bytes in 3 blocks (ref 0) d=(nil) 0x33c4310 - mSMQSiteGates contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c4420 - mSMQSiteGatesMig contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33c43a0 - const char * contains 61 bytes in 4 blocks (ref 0) d=(nil) 0x33c4100 - mSMQCost contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33c4290 - mSMQSite1 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c4210 - mSMQSite2 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c4190 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c3f20 - ;CN=MSMQ-Site-Link,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x33c4010 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c3fa0 - 1.2.840.113556.1.5.164 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c3ea0 - mSMQSiteLink contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33c3e20 - MSMQ-Site-Link contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33c3da0 - struct dsdb_class contains 924 bytes in 23 blocks (ref 0) d=(nil) 0x33c2df0 - MSMQ-Settings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c3b40 - MSMQ-Settings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c3ac0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c39f0 - const char * contains 23 bytes in 2 blocks (ref 0) d=(nil) 0x33c3900 - server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33c3980 - const char * contains 236 bytes in 11 blocks (ref 0) d=(nil) 0x33c3320 - mSMQDependentClientService contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33c3870 - mSMQDsService contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c37f0 - mSMQMigrated contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33c3770 - mSMQNt4Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33c36f0 - mSMQOwnerID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c3670 - mSMQQMID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33c35f0 - mSMQRoutingService contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c3570 - mSMQServices contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33c34f0 - mSMQSiteName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33c3470 - mSMQSiteNameEx contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33c33f0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c3150 - ;CN=MSMQ-Settings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x33c3240 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c31d0 - 1.2.840.113556.1.5.165 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c30d0 - mSMQSettings contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33c3050 - MSMQ-Settings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c2fd0 - struct dsdb_class contains 1028 bytes in 27 blocks (ref 0) d=(nil) 0x33c1e00 - MSMQ-Queue contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33c2d70 - MSMQ-Queue contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33c2cf0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c2c20 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33c2b20 - mSMQConfiguration contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33c2ba0 - const char * contains 344 bytes in 15 blocks (ref 0) d=(nil) 0x33c2330 - mSMQAuthenticate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33c2aa0 - mSMQBasePriority contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33c2a20 - mSMQJournal contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c29a0 - mSMQLabel contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c2920 - mSMQLabelEx contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c28a0 - MSMQ-MulticastAddress contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33c2820 - mSMQOwnerID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c27a0 - mSMQPrivacyLevel contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33c2720 - mSMQQueueJournalQuota contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33c26a0 - mSMQQueueNameExt contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33c2620 - mSMQQueueQuota contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33c25a0 - mSMQQueueType contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c2520 - MSMQ-SecuredSource contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c24a0 - mSMQTransactional contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33c2420 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c2160 - ;CN=MSMQ-Queue,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x33c2250 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c21e0 - 1.2.840.113556.1.5.161 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c20e0 - mSMQQueue contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c2060 - MSMQ-Queue contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33c1fe0 - struct dsdb_class contains 914 bytes in 21 blocks (ref 0) d=(nil) 0x33c1120 - MSMQ-Migrated-User contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c1d80 - MSMQ-Migrated-User contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c1d00 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c1c30 - const char * contains 75 bytes in 4 blocks (ref 0) d=(nil) 0x33c1a20 - builtinDomain contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c1bb0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c1b30 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c1ab0 - const char * contains 150 bytes in 7 blocks (ref 0) d=(nil) 0x33c1660 - objectSid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c19a0 - mSMQDigests contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c1920 - mSMQDigestsMig contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33c18a0 - mSMQSignCertificates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33c1820 - mSMQSignCertificatesMig contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33c1790 - mSMQUserSid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c1710 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c1480 - ;CN=MSMQ-Migrated-User,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33c1570 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c1500 - 1.2.840.113556.1.5.179 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c1400 - mSMQMigratedUser contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33c1380 - MSMQ-Migrated-User contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c1300 - struct dsdb_class contains 709 bytes in 14 blocks (ref 0) d=(nil) 0x33c0830 - MSMQ-Group contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33c10a0 - MSMQ-Group contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33c1020 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c0f50 - const char * contains 35 bytes in 2 blocks (ref 0) d=(nil) 0x33c0e50 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33c0ed0 - const char * contains 23 bytes in 2 blocks (ref 0) d=(nil) 0x33c0d60 - member contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33c0de0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c0b90 - ;CN=MSMQ-Group,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x33c0c80 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33c0c10 - 1.2.840.113556.1.5.219 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33c0b10 - msMQ-Group contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33c0a90 - MSMQ-Group contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33c0a10 - struct dsdb_class contains 913 bytes in 21 blocks (ref 0) d=(nil) 0x33bfc50 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a9c0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345a940 - MSMQ-Enterprise-Settings contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33c07a0 - MSMQ-Enterprise-Settings contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33c0710 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33c0640 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33c0540 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33c05c0 - const char * contains 136 bytes in 7 blocks (ref 0) d=(nil) 0x33c0190 - mSMQCSPName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c04c0 - mSMQInterval1 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c0440 - mSMQInterval2 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c03c0 - mSMQLongLived contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c0340 - mSMQNameStyle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33c02c0 - mSMQVersion contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33c0240 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33c0120 - ;CN=MSMQ-Enterprise-Settings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 130 bytes in 1 blocks (ref 0) d=(nil) 0x33c0030 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33bffc0 - 1.2.840.113556.1.5.163 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33bff40 - mSMQEnterpriseSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33bfec0 - MSMQ-Enterprise-Settings contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33bfe30 - struct dsdb_class contains 819 bytes in 16 blocks (ref 0) d=(nil) 0x33bf230 - MSMQ-Custom-Recipient contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33bfbd0 - MSMQ-Custom-Recipient contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33bfb50 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33bfa80 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x33bf870 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33bfa00 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33bf980 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33bf900 - const char * contains 42 bytes in 2 blocks (ref 0) d=(nil) 0x33bf590 - msMQ-Recipient-FormatName contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33bf7e0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33bf770 - ;CN=MSMQ-Custom-Recipient,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33bf680 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33bf610 - 1.2.840.113556.1.5.218 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33bf510 - msMQ-Custom-Recipient contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33bf490 - MSMQ-Custom-Recipient contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33bf410 - struct dsdb_class contains 1140 bytes in 31 blocks (ref 0) d=(nil) 0x33be120 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345aac0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345aa40 - MSMQ-Configuration contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33bf1b0 - MSMQ-Configuration contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33bf130 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33bf060 - const char * contains 25 bytes in 2 blocks (ref 0) d=(nil) 0x33bef60 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33befe0 - const char * contains 393 bytes in 17 blocks (ref 0) d=(nil) 0x33be6d0 - mSMQComputerType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33beee0 - mSMQComputerTypeEx contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33bee60 - mSMQDependentClientServices contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33bedd0 - mSMQDsServices contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33bed50 - mSMQEncryptKey contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33becd0 - mSMQForeign contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33bec50 - mSMQInRoutingServers contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33bebd0 - mSMQJournalQuota contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33beb50 - mSMQOSType contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33bead0 - mSMQOutRoutingServers contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33bea50 - mSMQOwnerID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33be9d0 - mSMQQuota contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33be950 - mSMQRoutingServices contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33be8d0 - mSMQServiceType contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33be850 - mSMQSignKey contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33be7d0 - mSMQSites contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33be480 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33be660 - ;CN=MSMQ-Configuration,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33be570 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33be500 - 1.2.840.113556.1.5.162 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33be400 - mSMQConfiguration contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33be380 - MSMQ-Configuration contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33be300 - struct dsdb_class contains 2679 bytes in 14 blocks (ref 0) d=(nil) 0x33bd910 - const char * contains 1000 bytes in 1 blocks (ref 0) d=(nil) 0x345af80 - const char * contains 968 bytes in 1 blocks (ref 0) d=(nil) 0x345ab40 - ms-Imaging-PSPs contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33be0a0 - ms-Imaging-PSPs contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33be020 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x33bdf50 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33bde50 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33bded0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33bdc70 - ;CN=ms-Imaging-PSPs,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x33bdd60 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33bdcf0 - 1.2.840.113556.1.5.262 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33bdbf0 - msImaging-PSPs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33bdb70 - ms-Imaging-PSPs contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33bdaf0 - struct dsdb_class contains 880 bytes in 18 blocks (ref 0) d=(nil) 0x33bcda0 - ms-Imaging-PostScanProcess contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33bd880 - ms-Imaging-PostScanProcess contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33bd7f0 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x33bd720 - const char * contains 31 bytes in 2 blocks (ref 0) d=(nil) 0x33bd620 - msImaging-PSPs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33bd6a0 - const char * contains 55 bytes in 3 blocks (ref 0) d=(nil) 0x33bd490 - serverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33bd5a0 - msImaging-PSPString contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33bd520 - const char * contains 60 bytes in 3 blocks (ref 0) d=(nil) 0x33bd370 - msImaging-PSPIdentifier contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33bd400 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33bd120 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33bd300 - ;CN=ms-Imaging-PostScanProcess,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 132 bytes in 1 blocks (ref 0) d=(nil) 0x33bd210 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33bd1a0 - 1.2.840.113556.1.5.263 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33bd0a0 - msImaging-PostScanProcess contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33bd010 - ms-Imaging-PostScanProcess contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33bcf80 - struct dsdb_class contains 854 bytes in 18 blocks (ref 0) d=(nil) 0x33bc280 - ms-ieee-80211-Policy contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33bcd20 - ms-ieee-80211-Policy contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33bcca0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33bcbd0 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x33bc9c0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33bcb50 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33bcad0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33bca50 - const char * contains 85 bytes in 4 blocks (ref 0) d=(nil) 0x33bc830 - msieee80211-Data contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33bc940 - msieee80211-DataType contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33bc8c0 - msieee80211-ID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33bc5e0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33bc7c0 - ;CN=ms-ieee-80211-Policy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x33bc6d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33bc660 - 1.2.840.113556.1.5.240 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33bc560 - msieee80211-Policy contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33bc4e0 - ms-ieee-80211-Policy contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33bc460 - struct dsdb_class contains 861 bytes in 18 blocks (ref 0) d=(nil) 0x33bb730 - ms-FVE-RecoveryInformation contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33bc1f0 - ms-FVE-RecoveryInformation contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33bc160 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY) contains 75 bytes in 1 blocks (ref 0) d=(nil) 0x33bc0a0 - const char * contains 25 bytes in 2 blocks (ref 0) d=(nil) 0x33bbfa0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33bc020 - const char * contains 58 bytes in 3 blocks (ref 0) d=(nil) 0x33bbe10 - msFVE-VolumeGuid contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33bbf20 - msFVE-KeyPackage contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33bbea0 - const char * contains 66 bytes in 3 blocks (ref 0) d=(nil) 0x33bbd00 - msFVE-RecoveryGuid contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33bbd90 - msFVE-RecoveryPassword contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33bbab0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33bbc90 - ;CN=ms-FVE-RecoveryInformation,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 132 bytes in 1 blocks (ref 0) d=(nil) 0x33bbba0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33bbb30 - 1.2.840.113556.1.5.253 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33bba30 - msFVE-RecoveryInformation contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33bb9a0 - ms-FVE-RecoveryInformation contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33bb910 - struct dsdb_class contains 2868 bytes in 19 blocks (ref 0) d=(nil) 0x33bac20 - const char * contains 992 bytes in 1 blocks (ref 0) d=(nil) 0x345b810 - const char * contains 960 bytes in 1 blocks (ref 0) d=(nil) 0x345b3e0 - ms-Exch-Configuration-Container contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x33bb6a0 - ms-Exch-Configuration-Container contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x33bb610 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33bb540 - const char * contains 157 bytes in 7 blocks (ref 0) d=(nil) 0x33bb190 - globalAddressList2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33bb4c0 - addressBookRoots2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33bb440 - templateRoots2 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33bb3c0 - globalAddressList contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33bb340 - addressBookRoots contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33bb2c0 - templateRoots contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33bb240 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33bafa0 - ;CN=ms-Exch-Configuration-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 137 bytes in 1 blocks (ref 0) d=(nil) 0x33bb090 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33bb020 - 1.2.840.113556.1.5.176 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33baf20 - msExchConfigurationContainer contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33bae90 - ms-Exch-Configuration-Container contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x33bae00 - struct dsdb_class contains 764 bytes in 16 blocks (ref 0) d=(nil) 0x33ba240 - ms-DS-Quota-Control contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33baba0 - ms-DS-Quota-Control contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33bab20 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPLCLORC;;;BA) contains 57 bytes in 1 blocks (ref 0) d=(nil) 0x33baa70 - const char * contains 36 bytes in 2 blocks (ref 0) d=(nil) 0x33ba970 - msDS-QuotaContainer contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ba9f0 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x33ba7f0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ba900 - msDS-QuotaTrustee contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ba880 - msDS-QuotaAmount contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ba5a0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33ba780 - ;CN=ms-DS-Quota-Control,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33ba690 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33ba620 - 1.2.840.113556.1.5.243 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ba520 - msDS-QuotaControl contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ba4a0 - ms-DS-Quota-Control contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ba420 - struct dsdb_class contains 962 bytes in 23 blocks (ref 0) d=(nil) 0x33b9580 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345bc60 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3456290 - ms-DS-Quota-Container contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ba1c0 - ms-DS-Quota-Container contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ba140 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPLCLORC;;;BA)(OA;;CR;4ecc03fe-ffc0-4947-b630-eb672a8a9dbc;;WD) contains 106 bytes in 1 blocks (ref 0) d=(nil) 0x33ba060 - const char * contains 48 bytes in 3 blocks (ref 0) d=(nil) 0x33b9ed0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b9fe0 - configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33b9f60 - const char * contains 146 bytes in 6 blocks (ref 0) d=(nil) 0x33b9ba0 - msDS-DefaultQuota contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33b9e50 - msDS-TombstoneQuotaFactor contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33b9dc0 - msDS-QuotaEffective contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33b9d40 - msDS-QuotaUsed contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b9cc0 - msDS-TopQuotaUsage contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b9c40 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x33b98e0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b9b30 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b9ac0 - ;CN=ms-DS-Quota-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33b99d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b9960 - 1.2.840.113556.1.5.242 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b9860 - msDS-QuotaContainer contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33b97e0 - ms-DS-Quota-Container contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33b9760 - struct dsdb_class contains 803 bytes in 14 blocks (ref 0) d=(nil) 0x33b8d40 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345bd60 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345bce0 - ms-DS-Password-Settings-Container contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x33b94f0 - ms-DS-Password-Settings-Container contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x33b9460 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY) contains 75 bytes in 1 blocks (ref 0) d=(nil) 0x33b93a0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33b90c0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b9320 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b92b0 - ;CN=ms-DS-Password-Settings-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 139 bytes in 1 blocks (ref 0) d=(nil) 0x33b91b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b9140 - 1.2.840.113556.1.5.256 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b9040 - msDS-PasswordSettingsContainer contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33b8fb0 - ms-DS-Password-Settings-Container contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x33b8f20 - struct dsdb_class contains 1144 bytes in 25 blocks (ref 0) d=(nil) 0x33b7db0 - ms-DS-Password-Settings contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33b8cb0 - ms-DS-Password-Settings contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33b8c20 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY) contains 75 bytes in 1 blocks (ref 0) d=(nil) 0x33b8b60 - const char * contains 47 bytes in 2 blocks (ref 0) d=(nil) 0x33b8a50 - msDS-PasswordSettingsContainer contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33b8ad0 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33b8950 - msDS-PSOAppliesTo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33b89d0 - const char * contains 367 bytes in 11 blocks (ref 0) d=(nil) 0x33b8370 - msDS-PasswordHistoryLength contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33b88c0 - msDS-PasswordSettingsPrecedence contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x33b8830 - msDS-PasswordReversibleEncryptionEnabled contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x33b8790 - msDS-LockoutThreshold contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33b8710 - msDS-LockoutDuration contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33b8120 - msDS-LockoutObservationWindow contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33b8680 - msDS-PasswordComplexityEnabled contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33b85f0 - msDS-MinimumPasswordLength contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33b8560 - msDS-MinimumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33b84d0 - msDS-MaximumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33b8440 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b8300 - ;CN=ms-DS-Password-Settings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33b8210 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b81a0 - 1.2.840.113556.1.5.255 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b80a0 - msDS-PasswordSettings contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33b8020 - ms-DS-Password-Settings contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33b7f90 - struct dsdb_class contains 940 bytes in 18 blocks (ref 0) d=(nil) 0x33b7230 - ms-DS-Optional-Feature contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b7d30 - ms-DS-Optional-Feature contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b7cb0 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;EA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33b7bc0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33b7590 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b7b40 - const char * contains 94 bytes in 3 blocks (ref 0) d=(nil) 0x33b7990 - msDS-RequiredForestBehaviorVersion contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x33b7ab0 - msDS-RequiredDomainBehaviorVersion contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x33b7a20 - const char * contains 75 bytes in 3 blocks (ref 0) d=(nil) 0x33b77e0 - msDS-OptionalFeatureGUID contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33b7900 - msDS-OptionalFeatureFlags contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33b7870 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b7770 - ;CN=ms-DS-Optional-Feature,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 128 bytes in 1 blocks (ref 0) d=(nil) 0x33b7680 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b7610 - 1.2.840.113556.1.5.265 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b7510 - msDS-OptionalFeature contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33b7490 - ms-DS-Optional-Feature contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b7410 - struct dsdb_class contains 2315 bytes in 16 blocks (ref 0) d=(nil) 0x33b6550 - const char * contains 304 bytes in 1 blocks (ref 0) d=(nil) 0x345bf70 - const char * contains 288 bytes in 1 blocks (ref 0) d=(nil) 0x345bde0 - ms-DS-Managed-Service-Account contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33b71a0 - ms-DS-Managed-Service-Account contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33b7110 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;AO)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPCRLCLORCSDDT;;;CO)(OA;;WP;4c164200-20c0-11d0-a768-00aa006e0529;;CO)(OA;;SW;72e39547-7b18-11d1-adef-00c04fd8d5cd;;CO)(OA;;SW;f3a64788-5306-11d1-a9c5-0000f80367c1;;CO)(OA;;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;;WP;5f202010-79a5-11d0-9020-00c04fc2d4cf;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;;WP;bf967950-0de6-11d0-a285-00aa003049e2;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;;WP;bf967953-0de6-11d0-a285-00aa003049e2;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;;SW;f3a64788-5306-11d1-a9c5-0000f80367c1;;PS)(OA;;RPWP;77B5B886-944A-11d1-AEBD-0000F80367C1;;PS)(OA;;SW;72e39547-7b18-11d1-adef-00c04fd8d5cd;;PS)(A;;RPLCLORC;;;AU)(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;WD)(OA;;RPWP;bf967a7f-0de6-11d0-a285-00aa003049e2;;CA)(OA;;RP;46a9b11d-60ae-405a-b7e8-ff8a58d456d2;;S-1-5-32-560)(OA;;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;;ED) contains 997 bytes in 1 blocks (ref 0) d=(nil) 0x33b6cc0 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x33b6ab0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b6c40 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b6bc0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b6b40 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33b68d0 - ;CN=ms-DS-Managed-Service-Account,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 135 bytes in 1 blocks (ref 0) d=(nil) 0x33b69c0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b6950 - 1.2.840.113556.1.5.264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b6850 - msDS-ManagedServiceAccount contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33b67c0 - ms-DS-Managed-Service-Account contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33b6730 - struct dsdb_class contains 1076 bytes in 25 blocks (ref 0) d=(nil) 0x33b5630 - ms-DS-Az-Task contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33b64d0 - ms-DS-Az-Task contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33b6450 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33b6360 - const char * contains 74 bytes in 4 blocks (ref 0) d=(nil) 0x33b6150 - msDS-AzApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b62e0 - msDS-AzScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33b6260 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b61e0 - const char * contains 302 bytes in 11 blocks (ref 0) d=(nil) 0x33b5bd0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33b60d0 - msDS-AzBizRule contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b6050 - msDS-AzBizRuleLanguage contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b5fd0 - msDS-AzLastImportedBizRulePath contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33b5f40 - msDS-AzTaskIsRoleDefinition contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33b5eb0 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b5e30 - msDS-OperationsForAzTask contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33b5da0 - msDS-TasksForAzTask contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33b5d20 - msDS-AzObjectGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33b5ca0 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b5990 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b5b60 - ;CN=ms-DS-Az-Task,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x33b5a80 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b5a10 - 1.2.840.113556.1.5.238 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b5910 - msDS-AzTask contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33b5890 - ms-DS-Az-Task contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33b5810 - struct dsdb_class contains 1029 bytes in 21 blocks (ref 0) d=(nil) 0x33b4a70 - const char * contains 72 bytes in 1 blocks (ref 0) d=(nil) 0x345c1d0 - const char * contains 72 bytes in 1 blocks (ref 0) d=(nil) 0x345c110 - ms-DS-Az-Scope contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b55b0 - ms-DS-Az-Scope contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b5530 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33b5440 - const char * contains 35 bytes in 2 blocks (ref 0) d=(nil) 0x33b5340 - msDS-AzApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b53c0 - const char * contains 112 bytes in 5 blocks (ref 0) d=(nil) 0x33b50a0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33b52c0 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b5240 - msDS-AzObjectGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33b51c0 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b5140 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33b4dd0 - msDS-AzScopeName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33b5020 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b4fb0 - ;CN=ms-DS-Az-Scope,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x33b4ec0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b4e50 - 1.2.840.113556.1.5.237 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b4d50 - msDS-AzScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33b4cd0 - ms-DS-Az-Scope contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b4c50 - struct dsdb_class contains 977 bytes in 22 blocks (ref 0) d=(nil) 0x33b3d10 - ms-DS-Az-Role contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33b49f0 - ms-DS-Az-Role contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33b4970 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33b4880 - const char * contains 74 bytes in 4 blocks (ref 0) d=(nil) 0x33b4670 - msDS-AzApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b4800 - msDS-AzScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33b4780 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b4700 - const char * contains 203 bytes in 8 blocks (ref 0) d=(nil) 0x33b42b0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33b45f0 - msDS-MembersForAzRole contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33b4570 - msDS-OperationsForAzRole contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33b44e0 - msDS-TasksForAzRole contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33b4460 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b43e0 - msDS-AzObjectGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33b4360 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b4070 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b4240 - ;CN=ms-DS-Az-Role,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x33b4160 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b40f0 - 1.2.840.113556.1.5.239 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b3ff0 - msDS-AzRole contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33b3f70 - ms-DS-Az-Role contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33b3ef0 - struct dsdb_class contains 925 bytes in 20 blocks (ref 0) d=(nil) 0x33b30c0 - ms-DS-Az-Operation contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b3c90 - ms-DS-Az-Operation contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b3c10 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33b3b20 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x33b3990 - msDS-AzApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b3aa0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b3a20 - const char * contains 112 bytes in 5 blocks (ref 0) d=(nil) 0x33b36f0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33b3910 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b3890 - msDS-AzObjectGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33b3810 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b3790 - const char * contains 35 bytes in 2 blocks (ref 0) d=(nil) 0x33b3420 - msDS-AzOperationID contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b3670 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b3600 - ;CN=ms-DS-Az-Operation,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33b3510 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b34a0 - 1.2.840.113556.1.5.236 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b33a0 - msDS-AzOperation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33b3320 - ms-DS-Az-Operation contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b32a0 - struct dsdb_class contains 1177 bytes in 23 blocks (ref 0) d=(nil) 0x33b23d0 - const char * contains 88 bytes in 1 blocks (ref 0) d=(nil) 0x345c360 - const char * contains 88 bytes in 1 blocks (ref 0) d=(nil) 0x345c290 - ms-DS-Az-Application contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33b3040 - ms-DS-Az-Application contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33b2fc0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33b2ed0 - const char * contains 36 bytes in 2 blocks (ref 0) d=(nil) 0x33b2dd0 - msDS-AzAdminManager contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33b2e50 - const char * contains 230 bytes in 9 blocks (ref 0) d=(nil) 0x33b2980 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33b2d50 - msDS-AzApplicationName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b2cd0 - msDS-AzClassId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b2c50 - msDS-AzApplicationVersion contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33b2bc0 - msDS-AzGenerateAudits contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33b2b40 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b2ac0 - msDS-AzObjectGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33b2a40 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b2730 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b2910 - ;CN=ms-DS-Az-Application,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x33b2820 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b27b0 - 1.2.840.113556.1.5.235 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b26b0 - msDS-AzApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b2630 - ms-DS-Az-Application contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33b25b0 - struct dsdb_class contains 1235 bytes in 27 blocks (ref 0) d=(nil) 0x33b14c0 - const char * contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x345c4e0 - const char * contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x345c430 - ms-DS-Az-Admin-Manager contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b2350 - ms-DS-Az-Admin-Manager contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b22d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33b21e0 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x33b1fd0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b2160 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b20e0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b2060 - const char * contains 292 bytes in 11 blocks (ref 0) d=(nil) 0x33b1a70 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33b1f50 - msDS-AzDomainTimeout contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33b1ed0 - msDS-AzScriptEngineCacheMax contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33b1e40 - msDS-AzScriptTimeout contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33b1dc0 - msDS-AzGenerateAudits contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33b1d40 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b1cc0 - msDS-AzMajorVersion contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33b1c40 - msDS-AzMinorVersion contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33b1bc0 - msDS-AzObjectGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33b1b40 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b1820 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33b1a00 - ;CN=ms-DS-Az-Admin-Manager,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 128 bytes in 1 blocks (ref 0) d=(nil) 0x33b1910 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b18a0 - 1.2.840.113556.1.5.234 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b17a0 - msDS-AzAdminManager contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33b1720 - ms-DS-Az-Admin-Manager contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b16a0 - struct dsdb_class contains 907 bytes in 22 blocks (ref 0) d=(nil) 0x33b0780 - ms-DS-App-Data contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b1440 - ms-DS-App-Data contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b13c0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33b12f0 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x33b10e0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b1270 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33b11f0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b1170 - const char * contains 152 bytes in 8 blocks (ref 0) d=(nil) 0x33b0cc0 - keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33b1060 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b0fe0 - msDS-ByteArray contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b0f60 - msDS-DateTime contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33b0ee0 - msDS-Integer contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33b0e60 - msDS-ObjectReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33b0de0 - owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33b0d70 - applicationSettings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33b0ae0 - ;CN=ms-DS-App-Data,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x33b0bd0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33b0b60 - 1.2.840.113556.1.5.241 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33b0a60 - msDS-AppData contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33b09e0 - ms-DS-App-Data contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b0960 - struct dsdb_class contains 953 bytes in 22 blocks (ref 0) d=(nil) 0x33afa10 - ms-DS-App-Configuration contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33b06f0 - ms-DS-App-Configuration contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33b0660 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33b0590 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x33b0380 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b0510 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33b0490 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33b0410 - const char * contains 152 bytes in 8 blocks (ref 0) d=(nil) 0x33aff60 - keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33b0300 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33b0280 - msDS-ByteArray contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33b0200 - msDS-DateTime contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33b0180 - msDS-Integer contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33b0100 - msDS-ObjectReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33b0080 - owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33b0010 - applicationSettings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33afd80 - ;CN=ms-DS-App-Configuration,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33afe70 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33afe00 - 1.2.840.113556.1.5.220 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33afd00 - msDS-App-Configuration contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33afc80 - ms-DS-App-Configuration contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33afbf0 - struct dsdb_class contains 892 bytes in 19 blocks (ref 0) d=(nil) 0x33aef10 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345c610 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345c590 - ms-DFSR-Topology contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33af990 - ms-DFSR-Topology contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33af910 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33af820 - const char * contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x33af710 - msDFSR-ReplicationGroup contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33af790 - const char * contains 101 bytes in 5 blocks (ref 0) d=(nil) 0x33af470 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33af690 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33af610 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33af590 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33af510 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33af280 - ;CN=ms-DFSR-Topology,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x33af380 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33af310 - 1.2.840.113556.1.6.13.4.8 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33af1f0 - msDFSR-Topology contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33af170 - ms-DFSR-Topology contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33af0f0 - struct dsdb_class contains 1512 bytes in 38 blocks (ref 0) d=(nil) 0x33ad880 - ms-DFSR-Subscription contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33aee90 - ms-DFSR-Subscription contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33aee10 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33aed20 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33aec20 - msDFSR-Subscriber contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33aeca0 - const char * contains 665 bytes in 23 blocks (ref 0) d=(nil) 0x33adf80 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33aeba0 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33aeb20 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33aeaa0 - msDFSR-DfsLinkTarget contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33aea20 - msDFSR-RootFence contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ae9a0 - msDFSR-Enabled contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ae920 - msDFSR-ConflictSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33ae890 - msDFSR-ConflictPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ae810 - msDFSR-StagingSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ae790 - msDFSR-StagingPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ae710 - msDFSR-RootSizeInMb contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ae690 - msDFSR-RootPath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ae610 - msDFSR-DeletedPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ae590 - msDFSR-DeletedSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ae510 - msDFSR-ReadOnly contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ae490 - msDFSR-CachePolicy contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ae410 - msDFSR-MinDurationCacheInMin contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33ae380 - msDFSR-MaxAgeInCacheInMin contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33ae2f0 - msDFSR-OnDemandExclusionFileFilter contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x33ae260 - msDFSR-OnDemandExclusionDirectoryFilter contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x33ae1c0 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ae140 - msDFSR-StagingCleanupTriggerInPercent contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x33ae0b0 - const char * contains 74 bytes in 3 blocks (ref 0) d=(nil) 0x33adde0 - msDFSR-ReplicationGroupGuid contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33adef0 - msDFSR-ContentSetGuid contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ade70 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33adbf0 - ;CN=ms-DFSR-Subscription,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x33adcf0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33adc80 - 1.2.840.113556.1.6.13.4.3 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33adb60 - msDFSR-Subscription contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33adae0 - ms-DFSR-Subscription contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33ada60 - struct dsdb_class contains 974 bytes in 22 blocks (ref 0) d=(nil) 0x33acbf0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345c710 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345c690 - ms-DFSR-Subscriber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ad800 - ms-DFSR-Subscriber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33ad780 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33ad690 - const char * contains 37 bytes in 2 blocks (ref 0) d=(nil) 0x33ad590 - msDFSR-LocalSettings contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33ad610 - const char * contains 101 bytes in 5 blocks (ref 0) d=(nil) 0x33ad2f0 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ad510 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ad490 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ad410 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ad390 - const char * contains 75 bytes in 3 blocks (ref 0) d=(nil) 0x33ad150 - msDFSR-ReplicationGroupGuid contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33ad260 - msDFSR-MemberReference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ad1e0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33acf60 - ;CN=ms-DFSR-Subscriber,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33ad060 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33acff0 - 1.2.840.113556.1.6.13.4.2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33aced0 - msDFSR-Subscriber contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ace50 - ms-DFSR-Subscriber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33acdd0 - struct dsdb_class contains 1412 bytes in 34 blocks (ref 0) d=(nil) 0x33ab860 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345c8b0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345c790 - ms-DFSR-ReplicationGroup contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33acb60 - ms-DFSR-ReplicationGroup contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33acad0 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33ac9e0 - const char * contains 38 bytes in 2 blocks (ref 0) d=(nil) 0x33ac8e0 - msDFSR-GlobalSettings contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33ac960 - const char * contains 523 bytes in 18 blocks (ref 0) d=(nil) 0x33abef0 - msDFSR-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ac860 - msDFSR-Schedule contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ac7e0 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ac760 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ac6e0 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ac660 - msDFSR-TombstoneExpiryInMin contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33ac5d0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33ac550 - msDFSR-RootSizeInMb contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33ac4d0 - msDFSR-StagingSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ac450 - msDFSR-ConflictSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33ac3c0 - msDFSR-FileFilter contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33ac340 - msDFSR-DirectoryFilter contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ac2c0 - msDFSR-DeletedSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33ac240 - msDFSR-DefaultCompressionExclusionFilter contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x33ac1a0 - msDFSR-OnDemandExclusionFileFilter contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x33ac110 - msDFSR-OnDemandExclusionDirectoryFilter contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x33ac070 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33abff0 - const char * contains 44 bytes in 2 blocks (ref 0) d=(nil) 0x33abde0 - msDFSR-ReplicationGroupType contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33abe60 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33abbf0 - ;CN=ms-DFSR-ReplicationGroup,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 130 bytes in 1 blocks (ref 0) d=(nil) 0x33abcf0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33abc80 - 1.2.840.113556.1.6.13.4.5 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33abb60 - msDFSR-ReplicationGroup contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33abad0 - ms-DFSR-ReplicationGroup contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33aba40 - struct dsdb_class contains 963 bytes in 23 blocks (ref 0) d=(nil) 0x33aab50 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345c9c0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345c940 - ms-DFSR-Member contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ab7e0 - ms-DFSR-Member contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ab760 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33ab670 - const char * contains 32 bytes in 2 blocks (ref 0) d=(nil) 0x33ab570 - msDFSR-Topology contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ab5f0 - const char * contains 149 bytes in 7 blocks (ref 0) d=(nil) 0x33ab1c0 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33ab4f0 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33ab470 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33ab3f0 - msDFSR-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ab370 - serverReference contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ab2f0 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33ab270 - const char * contains 41 bytes in 2 blocks (ref 0) d=(nil) 0x33ab0b0 - msDFSR-ComputerReference contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33ab130 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33aaec0 - ;CN=ms-DFSR-Member,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x33aafc0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33aaf50 - 1.2.840.113556.1.6.13.4.9 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33aae30 - msDFSR-Member contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33aadb0 - ms-DFSR-Member contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33aad30 - struct dsdb_class contains 1041 bytes in 23 blocks (ref 0) d=(nil) 0x33a9e10 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345cac0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345ca40 - ms-DFSR-LocalSettings contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33aaad0 - ms-DFSR-LocalSettings contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33aaa50 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33aa960 - const char * contains 25 bytes in 2 blocks (ref 0) d=(nil) 0x33aa860 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33aa8e0 - const char * contains 240 bytes in 9 blocks (ref 0) d=(nil) 0x33aa370 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33aa7e0 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33aa760 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33aa6e0 - msDFSR-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33aa660 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33aa5e0 - msDFSR-CommonStagingPath contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33aa550 - msDFSR-CommonStagingSizeInMb contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33aa4c0 - msDFSR-StagingCleanupTriggerInPercent contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x33aa430 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33aa180 - ;CN=ms-DFSR-LocalSettings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33aa280 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33aa210 - 1.2.840.113556.1.6.13.4.1 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33aa0f0 - msDFSR-LocalSettings contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33aa070 - ms-DFSR-LocalSettings contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33a9ff0 - struct dsdb_class contains 908 bytes in 19 blocks (ref 0) d=(nil) 0x33a9320 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345cbc0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345cb40 - ms-DFSR-GlobalSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a9d90 - ms-DFSR-GlobalSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a9d10 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33a9c20 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33a9b20 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a9ba0 - const char * contains 101 bytes in 5 blocks (ref 0) d=(nil) 0x33a9880 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a9aa0 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a9a20 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33a99a0 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a9920 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a9690 - ;CN=ms-DFSR-GlobalSettings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 128 bytes in 1 blocks (ref 0) d=(nil) 0x33a9790 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a9720 - 1.2.840.113556.1.6.13.4.4 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33a9600 - msDFSR-GlobalSettings contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33a9580 - ms-DFSR-GlobalSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a9500 - struct dsdb_class contains 1247 bytes in 29 blocks (ref 0) d=(nil) 0x33a8170 - ms-DFSR-ContentSet contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a92a0 - ms-DFSR-ContentSet contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a9220 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33a9130 - const char * contains 31 bytes in 2 blocks (ref 0) d=(nil) 0x33a9030 - msDFSR-Content contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a90b0 - const char * contains 487 bytes in 17 blocks (ref 0) d=(nil) 0x33a86d0 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a8fb0 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a8f30 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33a8eb0 - msDFSR-DirectoryFilter contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a8e30 - msDFSR-FileFilter contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a8db0 - msDFSR-DfsPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a8d30 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33a8cb0 - msDFSR-RootSizeInMb contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a8c30 - msDFSR-StagingSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a8bb0 - msDFSR-ConflictSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33a8b20 - msDFSR-Priority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a8aa0 - msDFSR-DeletedSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a8a20 - msDFSR-DefaultCompressionExclusionFilter contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x33a8980 - msDFSR-OnDemandExclusionFileFilter contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x33a88f0 - msDFSR-OnDemandExclusionDirectoryFilter contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x33a8850 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a87d0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a84e0 - ;CN=ms-DFSR-ContentSet,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33a85e0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a8570 - 1.2.840.113556.1.6.13.4.7 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33a8450 - msDFSR-ContentSet contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a83d0 - ms-DFSR-ContentSet contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a8350 - struct dsdb_class contains 887 bytes in 19 blocks (ref 0) d=(nil) 0x33a7670 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345ccc0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345cc40 - ms-DFSR-Content contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a80f0 - ms-DFSR-Content contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a8070 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33a7f80 - const char * contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x33a7e70 - msDFSR-ReplicationGroup contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33a7ef0 - const char * contains 101 bytes in 5 blocks (ref 0) d=(nil) 0x33a7bd0 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a7df0 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a7d70 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33a7cf0 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a7c70 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a79e0 - ;CN=ms-DFSR-Content,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x33a7ae0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a7a70 - 1.2.840.113556.1.6.13.4.6 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33a7950 - msDFSR-Content contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a78d0 - ms-DFSR-Content contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a7850 - struct dsdb_class contains 1079 bytes in 26 blocks (ref 0) d=(nil) 0x33a66b0 - ms-DFSR-Connection contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a75f0 - ms-DFSR-Connection contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a7570 - D:(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;CO)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33a7480 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x33a7380 - msDFSR-Member contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33a7400 - const char * contains 292 bytes in 12 blocks (ref 0) d=(nil) 0x33a6d10 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a7300 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a7280 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33a7200 - msDFSR-Schedule contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a7180 - msDFSR-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a7100 - msDFSR-RdcMinFileSizeInKb contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33a7070 - msDFSR-RdcEnabled contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a6ff0 - msDFSR-Enabled contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a6f70 - msDFSR-Priority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a6ef0 - msDFSR-DisablePacketPrivacy contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33a6e60 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a6de0 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x33a6c10 - fromServer contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33a6c90 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a6a20 - ;CN=ms-DFSR-Connection,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x33a6b20 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a6ab0 - 1.2.840.113556.1.6.13.4.10 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33a6990 - msDFSR-Connection contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a6910 - ms-DFSR-Connection contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a6890 - struct dsdb_class contains 1058 bytes in 25 blocks (ref 0) d=(nil) 0x33a58b0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345cdd0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345cd40 - ms-DFS-Namespace-v2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a6630 - ms-DFS-Namespace-v2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a65b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33a64e0 - const char * contains 38 bytes in 2 blocks (ref 0) d=(nil) 0x33a63e0 - msDFS-NamespaceAnchor contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33a6460 - const char * contains 32 bytes in 2 blocks (ref 0) d=(nil) 0x33a62e0 - msDFS-Commentv2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a6360 - const char * contains 246 bytes in 9 blocks (ref 0) d=(nil) 0x33a5df0 - msDFS-Propertiesv2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a6260 - msDFS-TargetListv2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a61e0 - msDFS-Ttlv2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33a6160 - msDFS-LastModifiedv2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33a60e0 - msDFS-NamespaceIdentityGUIDv2 contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33a6050 - msDFS-GenerationGUIDv2 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a5fd0 - msDFS-SchemaMinorVersion contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33a5f40 - msDFS-SchemaMajorVersion contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33a5eb0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a5c10 - ;CN=ms-DFS-Namespace-v2,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33a5d00 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a5c90 - 1.2.840.113556.1.5.258 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a5b90 - msDFS-Namespacev2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a5b10 - ms-DFS-Namespace-v2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a5a90 - struct dsdb_class contains 856 bytes in 16 blocks (ref 0) d=(nil) 0x33a4f40 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345cee0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345ce60 - ms-DFS-Namespace-Anchor contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33a5820 - ms-DFS-Namespace-Anchor contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33a5790 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33a56a0 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x33a55a0 - dfsConfiguration contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a5620 - const char * contains 41 bytes in 2 blocks (ref 0) d=(nil) 0x33a5490 - msDFS-SchemaMajorVersion contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33a5510 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a52b0 - ;CN=ms-DFS-Namespace-Anchor,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x33a53a0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a5330 - 1.2.840.113556.1.5.257 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a5230 - msDFS-NamespaceAnchor contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33a51b0 - ms-DFS-Namespace-Anchor contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33a5120 - struct dsdb_class contains 1046 bytes in 25 blocks (ref 0) d=(nil) 0x33a4020 - ms-DFS-Link-v2 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a4ec0 - ms-DFS-Link-v2 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a4e40 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33a4d70 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33a4c70 - msDFS-Namespacev2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a4cf0 - const char * contains 105 bytes in 4 blocks (ref 0) d=(nil) 0x33a4a40 - msDFS-ShortNameLinkPathv2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33a4be0 - msDFS-LinkSecurityDescriptorv2 contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33a4b50 - msDFS-Commentv2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a4ad0 - const char * contains 238 bytes in 9 blocks (ref 0) d=(nil) 0x33a4560 - msDFS-LinkPathv2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a49c0 - msDFS-Propertiesv2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a4940 - msDFS-TargetListv2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a48c0 - msDFS-Ttlv2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33a4840 - msDFS-LastModifiedv2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33a47c0 - msDFS-LinkIdentityGUIDv2 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33a4730 - msDFS-NamespaceIdentityGUIDv2 contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33a46a0 - msDFS-GenerationGUIDv2 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a4620 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a4380 - ;CN=ms-DFS-Link-v2,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x33a4470 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a4400 - 1.2.840.113556.1.5.259 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a4300 - msDFS-Linkv2 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33a4280 - ms-DFS-Link-v2 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a4200 - struct dsdb_class contains 941 bytes in 20 blocks (ref 0) d=(nil) 0x33a33b0 - ms-DFS-Deleted-Link-v2 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a3fa0 - ms-DFS-Deleted-Link-v2 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a3f20 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33a3e50 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33a3d50 - msDFS-Namespacev2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a3dd0 - const char * contains 66 bytes in 3 blocks (ref 0) d=(nil) 0x33a3bb0 - msDFS-ShortNameLinkPathv2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33a3cc0 - msDFS-Commentv2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a3c40 - const char * contains 133 bytes in 5 blocks (ref 0) d=(nil) 0x33a38f0 - msDFS-LinkPathv2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a3b30 - msDFS-LastModifiedv2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33a3ab0 - msDFS-LinkIdentityGUIDv2 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33a3a20 - msDFS-NamespaceIdentityGUIDv2 contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33a3990 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a3710 - ;CN=ms-DFS-Deleted-Link-v2,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 128 bytes in 1 blocks (ref 0) d=(nil) 0x33a3800 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a3790 - 1.2.840.113556.1.5.260 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a3690 - msDFS-DeletedLinkv2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a3610 - ms-DFS-Deleted-Link-v2 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a3590 - struct dsdb_class contains 860 bytes in 18 blocks (ref 0) d=(nil) 0x33a2870 - ms-COM-PartitionSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a3330 - ms-COM-PartitionSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a32b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33a31e0 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x33a2fd0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a3160 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a30e0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a3060 - const char * contains 94 bytes in 4 blocks (ref 0) d=(nil) 0x33a2db0 - msCOM-ObjectId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a2f50 - msCOM-DefaultPartitionLink contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33a2ec0 - msCOM-PartitionLink contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a2e40 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a2bd0 - ;CN=ms-COM-PartitionSet,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33a2cc0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a2c50 - 1.2.840.113556.1.5.194 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a2b50 - msCOM-PartitionSet contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a2ad0 - ms-COM-PartitionSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a2a50 - struct dsdb_class contains 782 bytes in 16 blocks (ref 0) d=(nil) 0x33a1e50 - ms-COM-Partition contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a27f0 - ms-COM-Partition contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a2770 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33a26a0 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x33a2490 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a2620 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a25a0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a2520 - const char * contains 31 bytes in 2 blocks (ref 0) d=(nil) 0x33a2390 - msCOM-ObjectId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a2410 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a21b0 - ;CN=ms-COM-Partition,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x33a22a0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a2230 - 1.2.840.113556.1.5.193 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a2130 - msCOM-Partition contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a20b0 - ms-COM-Partition contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a2030 - struct dsdb_class contains 1246 bytes in 38 blocks (ref 0) d=(nil) 0x33a08a0 - Meeting contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33a1dd0 - Meeting contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33a1d50 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33a1c80 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33a1b80 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a1c00 - const char * contains 556 bytes in 24 blocks (ref 0) d=(nil) 0x33a0ed0 - meetingAdvertiseScope contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33a1b00 - meetingApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a1a80 - meetingBandwidth contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a1a00 - meetingBlob contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33a1980 - meetingContactInfo contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a1900 - meetingDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a1880 - meetingEndTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a1800 - meetingID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a1780 - meetingIP contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a1700 - meetingIsEncrypted contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33a1680 - meetingKeyword contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a1600 - meetingLanguage contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a1580 - meetingLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a1500 - meetingMaxParticipants contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a1480 - meetingOriginator contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a1400 - meetingOwner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33a1380 - meetingProtocol contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33a1300 - meetingRating contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33a1280 - meetingRecurrence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a1200 - meetingScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33a1180 - meetingStartTime contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a1100 - meetingType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33a1080 - meetingURL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33a1000 - const char * contains 28 bytes in 2 blocks (ref 0) d=(nil) 0x33a0dd0 - meetingName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33a0e50 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33a0c00 - ;CN=Meeting,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 113 bytes in 1 blocks (ref 0) d=(nil) 0x33a0cf0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33a0c80 - 1.2.840.113556.1.5.104 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33a0b80 - meeting contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33a0b00 - Meeting contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33a0a80 - struct dsdb_class contains 1066 bytes in 30 blocks (ref 0) d=(nil) 0x339f730 - Mail-Recipient contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a0820 - Mail-Recipient contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33a07a0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33a06d0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33a05d0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a0650 - const char * contains 160 bytes in 7 blocks (ref 0) d=(nil) 0x33a0210 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33a0550 - msExchAssistantName contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33a04d0 - msExchLabeledURI contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a0450 - secretary contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33a03d0 - userSMIMECertificate contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33a0350 - msDS-PhoneticDisplayName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33a02c0 - const char * contains 192 bytes in 9 blocks (ref 0) d=(nil) 0x339fd60 - info contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x33a01a0 - garbageCollPeriod contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a0120 - legacyExchangeDN contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33a00a0 - showInAddressBook contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33a0020 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x339ffa0 - textEncodedORAddress contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x339ff20 - userCert contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x339fea0 - userCertificate contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x339fe20 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x339fc70 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339fcf0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x339fa90 - ;CN=Mail-Recipient,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x339fb80 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339fb10 - 1.2.840.113556.1.3.46 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x339fa10 - mailRecipient contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x339f990 - Mail-Recipient contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x339f910 - struct dsdb_class contains 4079 bytes in 18 blocks (ref 0) d=(nil) 0x339ed20 - const char * contains 1704 bytes in 1 blocks (ref 0) d=(nil) 0x345d620 - const char * contains 1616 bytes in 1 blocks (ref 0) d=(nil) 0x345cf60 - Lost-And-Found contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x339f6b0 - Lost-And-Found contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x339f630 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x339f560 - const char * contains 60 bytes in 4 blocks (ref 0) d=(nil) 0x339f360 - dMD contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x339f4f0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x339f470 - configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x339f3f0 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x339f260 - moveTreeState contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x339f2e0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x339f080 - ;CN=Lost-And-Found,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x339f170 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339f100 - 1.2.840.113556.1.5.139 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x339f000 - lostAndFound contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x339ef80 - Lost-And-Found contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x339ef00 - struct dsdb_class contains 932 bytes in 26 blocks (ref 0) d=(nil) 0x339dfa0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x345dde0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x345dd40 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3435960 - Locality contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x339eca0 - Locality contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x339ec20 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x339eb50 - const char * contains 107 bytes in 6 blocks (ref 0) d=(nil) 0x339e830 - locality contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x339ead0 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x339ea50 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x339e9d0 - country contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x339e950 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x339e8d0 - const char * contains 70 bytes in 5 blocks (ref 0) d=(nil) 0x339e5b0 - searchGuide contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x339e7b0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x339e730 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339e6c0 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x339e650 - const char * contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x339e4c0 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x339e540 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x339e450 - ;CN=Locality,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 114 bytes in 1 blocks (ref 0) d=(nil) 0x339e370 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x339e300 - 2.5.6.3 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x339e280 - locality contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x339e200 - Locality contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x339e180 - struct dsdb_class contains 838 bytes in 14 blocks (ref 0) d=(nil) 0x339d760 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345df20 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345de80 - Link-Track-Volume-Table contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x339df10 - Link-Track-Volume-Table contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x339de80 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x339ddb0 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x339dcb0 - fileLinkTracking contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x339dd30 - fileLinkTracking contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x339dad0 - ;CN=Link-Track-Volume-Table,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x339dbc0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339db50 - 1.2.840.113556.1.5.90 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x339da50 - linkTrackVolumeTable contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x339d9d0 - Link-Track-Volume-Table contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x339d940 - struct dsdb_class contains 902 bytes in 21 blocks (ref 0) d=(nil) 0x339cab0 - Link-Track-Vol-Entry contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x339d6e0 - Link-Track-Vol-Entry contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x339d660 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY) contains 75 bytes in 1 blocks (ref 0) d=(nil) 0x339d5a0 - const char * contains 37 bytes in 2 blocks (ref 0) d=(nil) 0x339d4a0 - linkTrackVolumeTable contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x339d520 - const char * contains 185 bytes in 9 blocks (ref 0) d=(nil) 0x339d060 - currMachineId contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x339d420 - linkTrackSecret contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x339d3a0 - objectCount contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x339d320 - seqNotification contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x339d2a0 - timeRefresh contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x339d220 - timeVolChange contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x339d1a0 - volTableGUID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x339d120 - volTableIdxGUID contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x339ce10 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x339cff0 - ;CN=Link-Track-Vol-Entry,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x339cf00 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339ce90 - 1.2.840.113556.1.5.92 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x339cd90 - linkTrackVolEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x339cd10 - Link-Track-Vol-Entry contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x339cc90 - struct dsdb_class contains 849 bytes in 18 blocks (ref 0) d=(nil) 0x339bf80 - Link-Track-OMT-Entry contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x339ca30 - Link-Track-OMT-Entry contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x339c9b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x339c8e0 - const char * contains 41 bytes in 2 blocks (ref 0) d=(nil) 0x339c7d0 - linkTrackObjectMoveTable contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x339c850 - const char * contains 110 bytes in 6 blocks (ref 0) d=(nil) 0x339c530 - birthLocation contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x339c750 - currentLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x339c6d0 - oMTGuid contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x339c650 - oMTIndxGuid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x339c5d0 - timeRefresh contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x339c2e0 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x339c4c0 - ;CN=Link-Track-OMT-Entry,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x339c3d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339c360 - 1.2.840.113556.1.5.93 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x339c260 - linkTrackOMTEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x339c1e0 - Link-Track-OMT-Entry contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x339c160 - struct dsdb_class contains 862 bytes in 14 blocks (ref 0) d=(nil) 0x339b730 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345e060 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345dfc0 - Link-Track-Object-Move-Table contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x339bef0 - Link-Track-Object-Move-Table contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x339be60 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x339bd90 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x339bc90 - fileLinkTracking contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x339bd10 - fileLinkTracking contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x339bab0 - ;CN=Link-Track-Object-Move-Table,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 134 bytes in 1 blocks (ref 0) d=(nil) 0x339bba0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339bb30 - 1.2.840.113556.1.5.91 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x339ba30 - linkTrackObjectMoveTable contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x339b9a0 - Link-Track-Object-Move-Table contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x339b910 - struct dsdb_class contains 781 bytes in 14 blocks (ref 0) d=(nil) 0x339ae70 - Licensing-Site-Settings contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x339b6a0 - Licensing-Site-Settings contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x339b610 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x339b540 - const char * contains 21 bytes in 2 blocks (ref 0) d=(nil) 0x339b450 - site contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x339b4d0 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x339b160 - siteServer contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x339b3d0 - applicationSiteSettings contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x339b340 - ;CN=Licensing-Site-Settings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x339b250 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339b1e0 - 1.2.840.113556.1.5.78 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x339b0e0 - licensingSiteSettings contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x339aa80 - Licensing-Site-Settings contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x339b050 - struct dsdb_class contains 1020 bytes in 11 blocks (ref 0) d=(nil) 0x339a740 - const char * contains 400 bytes in 1 blocks (ref 0) d=(nil) 0x3436e00 - Leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x339ae00 - Leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x339ad90 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x339acc0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x339ac50 - ;CN=Leaf,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 110 bytes in 1 blocks (ref 0) d=(nil) 0x339ab70 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x339ab00 - 1.2.840.113556.1.5.20 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x339aa00 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x339a990 - Leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x339a920 - struct dsdb_class contains 907 bytes in 25 blocks (ref 0) d=(nil) 0x33998a0 - IpService contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x339a6c0 - IpService contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x339a640 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x339a570 - const char * contains 86 bytes in 5 blocks (ref 0) d=(nil) 0x339a2e0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x339a4f0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x339a470 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x339a400 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x339a380 - const char * contains 115 bytes in 6 blocks (ref 0) d=(nil) 0x3399fc0 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x339a260 - msSFU30Aliases contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x339a1e0 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x339a160 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x339a0e0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x339a060 - const char * contains 67 bytes in 4 blocks (ref 0) d=(nil) 0x3399e40 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3399f50 - ipServicePort contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3399ed0 - ipServiceProtocol contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3399c00 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3399dd0 - ;CN=IpService,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x3399cf0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3399c80 - 1.3.6.1.1.1.2.3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3399b80 - ipService contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3399b00 - IpService contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3399a80 - struct dsdb_class contains 708 bytes in 17 blocks (ref 0) d=(nil) 0x3398e60 - Ipsec-Policy contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3399820 - Ipsec-Policy contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33997a0 - D: contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3399730 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x3399520 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33996b0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3399630 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33995b0 - const char * contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x3399390 - ipsecISAKMPReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33994a0 - ipsecNFAReference contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3399420 - ipsecBase contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33991c0 - ;CN=Ipsec-Policy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 118 bytes in 1 blocks (ref 0) d=(nil) 0x33992b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3399240 - 1.2.840.113556.1.5.98 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3399140 - ipsecPolicy contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33990c0 - Ipsec-Policy contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3399040 - struct dsdb_class contains 708 bytes in 17 blocks (ref 0) d=(nil) 0x3398410 - Ipsec-NFA contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3398de0 - Ipsec-NFA contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3398d60 - D: contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3398cf0 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x3398ae0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3398c70 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3398bf0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3398b70 - const char * contains 77 bytes in 3 blocks (ref 0) d=(nil) 0x3398940 - ipsecFilterReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3398a60 - ipsecNegotiationPolicyReference contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x33989d0 - ipsecBase contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3398770 - ;CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x3398860 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33987f0 - 1.2.840.113556.1.5.121 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33986f0 - ipsecNFA contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3398670 - Ipsec-NFA contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33985f0 - struct dsdb_class contains 785 bytes in 17 blocks (ref 0) d=(nil) 0x3397970 - Ipsec-Negotiation-Policy contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3398380 - Ipsec-Negotiation-Policy contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33982f0 - D: contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3398280 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x3398070 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3398200 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3398180 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3398100 - const char * contains 80 bytes in 3 blocks (ref 0) d=(nil) 0x3397ec0 - iPSECNegotiationPolicyAction contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3397fe0 - iPSECNegotiationPolicyType contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3397f50 - ipsecBase contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3397ce0 - ;CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 130 bytes in 1 blocks (ref 0) d=(nil) 0x3397dd0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3397d60 - 1.2.840.113556.1.5.119 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3397c60 - ipsecNegotiationPolicy contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3397be0 - Ipsec-Negotiation-Policy contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3397b50 - struct dsdb_class contains 680 bytes in 14 blocks (ref 0) d=(nil) 0x33970b0 - Ipsec-ISAKMP-Policy contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33978f0 - Ipsec-ISAKMP-Policy contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3397870 - D: contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3397800 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x33975f0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3397780 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3397700 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3397680 - ipsecBase contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3397410 - ;CN=Ipsec-ISAKMP-Policy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x3397500 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3397490 - 1.2.840.113556.1.5.120 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3397390 - ipsecISAKMPPolicy contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3397310 - Ipsec-ISAKMP-Policy contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3397290 - struct dsdb_class contains 646 bytes in 14 blocks (ref 0) d=(nil) 0x3396890 - Ipsec-Filter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3397030 - Ipsec-Filter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3396fb0 - D: contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3396f40 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x33961b0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3396ec0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3396e40 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3396dc0 - ipsecBase contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3396bf0 - ;CN=Ipsec-Filter,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 118 bytes in 1 blocks (ref 0) d=(nil) 0x3396ce0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3396c70 - 1.2.840.113556.1.5.118 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3396b70 - ipsecFilter contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3396af0 - Ipsec-Filter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3396a70 - struct dsdb_class contains 723 bytes in 17 blocks (ref 0) d=(nil) 0x3395e40 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3436b80 - Ipsec-Base contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3396810 - Ipsec-Base contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3396790 - D: contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3396720 - const char * contains 111 bytes in 6 blocks (ref 0) d=(nil) 0x3396400 - ipsecData contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33966a0 - ipsecDataType contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3396620 - ipsecID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33965a0 - ipsecName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3396520 - ipsecOwnersReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33964a0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3396390 - ;CN=Ipsec-Base,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x33962b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3396240 - 1.2.840.113556.1.5.7000.56 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3396120 - ipsecBase contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33960a0 - Ipsec-Base contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3396020 - struct dsdb_class contains 889 bytes in 24 blocks (ref 0) d=(nil) 0x3395020 - IpProtocol contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3395dc0 - IpProtocol contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3395d40 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3395c70 - const char * contains 86 bytes in 5 blocks (ref 0) d=(nil) 0x33959e0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3395bf0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3395b70 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3395b00 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3395a80 - const char * contains 115 bytes in 6 blocks (ref 0) d=(nil) 0x33956c0 - msSFU30Aliases contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3395960 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33958e0 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3395860 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33957e0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3395760 - const char * contains 44 bytes in 3 blocks (ref 0) d=(nil) 0x33955c0 - ipProtocolNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3395380 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3395650 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3395550 - ;CN=IpProtocol,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x3395470 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3395400 - 1.3.6.1.1.1.2.4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3395300 - ipProtocol contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3395280 - IpProtocol contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3395200 - struct dsdb_class contains 945 bytes in 28 blocks (ref 0) d=(nil) 0x3394000 - IpNetwork contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3394fa0 - IpNetwork contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3394f20 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3394e50 - const char * contains 86 bytes in 5 blocks (ref 0) d=(nil) 0x3394bc0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3394dd0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3394d50 - nisMap contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3394ce0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3394c60 - const char * contains 177 bytes in 10 blocks (ref 0) d=(nil) 0x33946a0 - msSFU30Aliases contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3394b40 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3394ac0 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3394a40 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33949c0 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x3394950 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33948e0 - ipNetmaskNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3394860 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33947e0 - manager contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3394760 - const char * contains 43 bytes in 3 blocks (ref 0) d=(nil) 0x33945a0 - ipNetworkNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3394360 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3394630 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3394530 - ;CN=IpNetwork,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x3394450 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33943e0 - 1.3.6.1.1.1.2.7 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33942e0 - ipNetwork contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3394260 - IpNetwork contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33941e0 - struct dsdb_class contains 722 bytes in 17 blocks (ref 0) d=(nil) 0x33935d0 - IpHost contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3393f90 - IpHost contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3393f20 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3393e50 - const char * contains 98 bytes in 7 blocks (ref 0) d=(nil) 0x3393b50 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x3393de0 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3393d70 - ipHostNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3393cf0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3393c70 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3393c00 - manager contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3393910 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3393ae0 - ;CN=IpHost,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x3393a00 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3393990 - 1.3.6.1.1.1.2.6 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3393890 - ipHost contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3393820 - IpHost contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33937b0 - struct dsdb_class contains 811 bytes in 14 blocks (ref 0) d=(nil) 0x3392d80 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345e180 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345e100 - Inter-Site-Transport-Container contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x3393540 - Inter-Site-Transport-Container contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x33934b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33933e0 - const char * contains 31 bytes in 2 blocks (ref 0) d=(nil) 0x3393100 - sitesContainer contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3393360 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33932f0 - ;CN=Inter-Site-Transport-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 136 bytes in 1 blocks (ref 0) d=(nil) 0x33931f0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3393180 - 1.2.840.113556.1.5.140 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3393080 - interSiteTransportContainer contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3392ff0 - Inter-Site-Transport-Container contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x3392f60 - struct dsdb_class contains 903 bytes in 20 blocks (ref 0) d=(nil) 0x3392240 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345e290 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345e200 - Inter-Site-Transport contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3392d00 - Inter-Site-Transport contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3392c80 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3392bb0 - const char * contains 44 bytes in 2 blocks (ref 0) d=(nil) 0x3392aa0 - interSiteTransportContainer contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3392b20 - const char * contains 45 bytes in 3 blocks (ref 0) d=(nil) 0x3392910 - options contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3392a20 - replInterval contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33929a0 - const char * contains 67 bytes in 3 blocks (ref 0) d=(nil) 0x33927f0 - transportAddressAttribute contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3392880 - transportDLLName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33925a0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3392780 - ;CN=Inter-Site-Transport,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x3392690 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3392620 - 1.2.840.113556.1.5.141 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3392520 - interSiteTransport contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33924a0 - Inter-Site-Transport contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3392420 - struct dsdb_class contains 1212 bytes in 29 blocks (ref 0) d=(nil) 0x33911e0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345e3b0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345e320 - Intellimirror-SCP contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33921c0 - Intellimirror-SCP contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3392140 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3392070 - const char * contains 52 bytes in 3 blocks (ref 0) d=(nil) 0x3391ee0 - intellimirrorGroup contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3391ff0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3391f70 - const char * contains 404 bytes in 14 blocks (ref 0) d=(nil) 0x33917b0 - netbootAllowNewClients contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3391e60 - netbootAnswerOnlyValidClients contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x3391dd0 - netbootAnswerRequests contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3391d50 - netbootCurrentClientCount contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3391cc0 - netbootIntelliMirrorOSes contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3391c30 - netbootLimitClients contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3391bb0 - netbootLocallyInstalledOSes contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3391b20 - netbootMachineFilePath contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3391aa0 - netbootMaxClients contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3391a20 - netbootNewMachineNamingPolicy contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x3391990 - netbootNewMachineOU contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3391910 - netbootServer contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3391890 - netbootTools contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3391540 - serviceAdministrationPoint contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3391720 - ;CN=Intellimirror-SCP,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x3391630 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33915c0 - 1.2.840.113556.1.5.151 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33914c0 - intellimirrorSCP contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3391440 - Intellimirror-SCP contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33913c0 - struct dsdb_class contains 812 bytes in 16 blocks (ref 0) d=(nil) 0x33908c0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345e4c0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345e440 - Intellimirror-Group contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3391160 - Intellimirror-Group contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33910e0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;CCDC;;;CO)(A;;RPLCLORC;;;AU) contains 107 bytes in 1 blocks (ref 0) d=(nil) 0x3391000 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x3390e70 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3390f80 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3390f00 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3390c20 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3390e00 - ;CN=Intellimirror-Group,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x3390d10 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3390ca0 - 1.2.840.113556.1.5.152 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3390ba0 - intellimirrorGroup contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3390b20 - Intellimirror-Group contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3390aa0 - struct dsdb_class contains 729 bytes in 16 blocks (ref 0) d=(nil) 0x338ff90 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345e540 - Infrastructure-Update contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3390840 - Infrastructure-Update contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33907c0 - D:(A;;GA;;;SY) contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3390740 - const char * contains 52 bytes in 3 blocks (ref 0) d=(nil) 0x33905c0 - domain contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33906d0 - infrastructureUpdate contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3390650 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x33902f0 - dNReferenceUpdate contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3390540 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33904d0 - ;CN=Infrastructure-Update,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x33903e0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3390370 - 1.2.840.113556.1.5.175 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3390270 - infrastructureUpdate contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33901f0 - Infrastructure-Update contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3390170 - struct dsdb_class contains 2370 bytes in 44 blocks (ref 0) d=(nil) 0x338e410 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x345e660 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345e5c0 - inetOrgPerson contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338ff10 - inetOrgPerson contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338fe90 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;AO)(A;;RPLCLORC;;;PS)(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;PS)(OA;;CR;ab721a54-1e2f-11d0-9819-00aa0040529b;;PS)(OA;;CR;ab721a56-1e2f-11d0-9819-00aa0040529b;;PS)(OA;;RPWP;77B5B886-944A-11d1-AEBD-0000F80367C1;;PS)(OA;;RPWP;E45795B2-9455-11d1-AEBD-0000F80367C1;;PS)(OA;;RPWP;E45795B3-9455-11d1-AEBD-0000F80367C1;;PS)(OA;;RP;037088f8-0ae1-11d2-b422-00a0c968f939;;RS)(OA;;RP;4c164200-20c0-11d0-a768-00aa006e0529;;RS)(OA;;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;;RS)(A;;RC;;;AU)(OA;;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;;AU)(OA;;RP;77B5B886-944A-11d1-AEBD-0000F80367C1;;AU)(OA;;RP;E45795B3-9455-11d1-AEBD-0000F80367C1;;AU)(OA;;RP;e48d0154-bcf8-11d1-8702-00c04fb96050;;AU)(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;WD)(OA;;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;;RS)(OA;;RPWP;bf967a7f-0de6-11d0-a285-00aa003049e2;;CA)(OA;;RP;46a9b11d-60ae-405a-b7e8-ff8a58d456d2;;S-1-5-32-560)(OA;;WPRP;6db69a1c-9422-11d1-aebd-0000f80367c1;;S-1-5-32-561)(OA;;WPRP;5805bc62-bdc9-4428-a5e2-856a0f4c185e;;S-1-5-32-561) contains 1114 bytes in 1 blocks (ref 0) d=(nil) 0x338f9c0 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x338f7b0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338f940 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338f8c0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338f840 - const char * contains 529 bytes in 28 blocks (ref 0) d=(nil) 0x338e950 - audio contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x338f740 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x338f6c0 - carLicense contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x338f640 - departmentNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x338f5c0 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x338f540 - employeeNumber contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x338f4c0 - employeeType contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x338f440 - givenName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338f3c0 - homePhone contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338f340 - homePostalAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x338f2c0 - initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x338f240 - jpegPhoto contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338f1c0 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x338f140 - mail contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x338f0d0 - manager contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x338f050 - mobile contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x338efe0 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x338ef70 - pager contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x338ef00 - photo contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x338ee90 - preferredLanguage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x338ee10 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x338ed90 - secretary contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338ed10 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x338eca0 - userCertificate contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x338ec20 - userPKCS12 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x338eba0 - userSMIMECertificate contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x338eb20 - x500uniqueIdentifier contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x338eaa0 - user contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x338e780 - ;CN=Person,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x338e870 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338e800 - 2.16.840.1.113730.3.2.2 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x338e6f0 - inetOrgPerson contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338e670 - inetOrgPerson contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338e5f0 - struct dsdb_class contains 875 bytes in 20 blocks (ref 0) d=(nil) 0x338d7d0 - Index-Server-Catalog contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x338e390 - Index-Server-Catalog contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x338e310 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x338e240 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x338e0b0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338e1c0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338e140 - const char * contains 87 bytes in 5 blocks (ref 0) d=(nil) 0x338de10 - friendlyNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338e030 - indexedScopes contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338dfb0 - queryPoint contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x338df30 - uNCName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x338deb0 - const char * contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x338dd10 - creator contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x338dd90 - connectionPoint contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x338db30 - ;CN=Index-Server-Catalog,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x338dc20 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338dbb0 - 1.2.840.113556.1.5.130 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x338dab0 - indexServerCatalog contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338da30 - Index-Server-Catalog contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x338d9b0 - struct dsdb_class contains 698 bytes in 13 blocks (ref 0) d=(nil) 0x338cf50 - IEEE802Device contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338d750 - IEEE802Device contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338d6d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x338d600 - const char * contains 38 bytes in 3 blocks (ref 0) d=(nil) 0x338d480 - macAddress contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x338d580 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338d510 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x338d2b0 - ;CN=IEEE802Device,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x338d3a0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338d330 - 1.3.6.1.1.1.2.11 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x338d230 - ieee802Device contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338d1b0 - IEEE802Device contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338d130 - struct dsdb_class contains 3002 bytes in 20 blocks (ref 0) d=(nil) 0x338c370 - const char * contains 992 bytes in 1 blocks (ref 0) d=(nil) 0x345eb30 - const char * contains 960 bytes in 1 blocks (ref 0) d=(nil) 0x345e700 - Group-Policy-Container contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x338ced0 - Group-Policy-Container contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x338ce50 - D:P(A;CI;RPWPCCDCLCLOLORCWOWDSDDTSW;;;DA)(A;CI;RPWPCCDCLCLOLORCWOWDSDDTSW;;;EA)(A;CI;RPWPCCDCLCLOLORCWOWDSDDTSW;;;CO)(A;CI;RPWPCCDCLCLORCWOWDSDDTSW;;;SY)(A;CI;RPLCLORC;;;AU)(OA;CI;CR;edacfd8f-ffb3-11d1-b41d-00a0c968f939;;AU)(A;CI;LCRPLORC;;;ED) contains 245 bytes in 1 blocks (ref 0) d=(nil) 0x338ccf0 - const char * contains 183 bytes in 8 blocks (ref 0) d=(nil) 0x338c8b0 - flags contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x338cc80 - gPCFileSysPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x338cc00 - gPCFunctionalityVersion contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x338cb70 - gPCMachineExtensionNames contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x338cae0 - gPCUserExtensionNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x338ca60 - gPCWQLFilter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x338c9e0 - versionNumber contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338c960 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338c6d0 - ;CN=Group-Policy-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 128 bytes in 1 blocks (ref 0) d=(nil) 0x338c7c0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338c750 - 1.2.840.113556.1.5.157 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x338c650 - groupPolicyContainer contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x338c5d0 - Group-Policy-Container contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x338c550 - struct dsdb_class contains 946 bytes in 24 blocks (ref 0) d=(nil) 0x338b520 - groupOfUniqueNames contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338c2f0 - groupOfUniqueNames contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338c270 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;AO)(A;;RPLCLORC;;;PS) contains 147 bytes in 1 blocks (ref 0) d=(nil) 0x338c170 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x338bf60 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338c0f0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338c070 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338bff0 - const char * contains 104 bytes in 7 blocks (ref 0) d=(nil) 0x338bbe0 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x338bee0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x338be60 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x338bdf0 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338bd80 - owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x338bd10 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x338bc90 - const char * contains 40 bytes in 3 blocks (ref 0) d=(nil) 0x338ba60 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338bb70 - uniqueMember contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x338baf0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x338b880 - ;CN=groupOfUniqueNames,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x338b970 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338b900 - 2.5.6.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x338b800 - groupOfUniqueNames contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338b780 - groupOfUniqueNames contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338b700 - struct dsdb_class contains 863 bytes in 24 blocks (ref 0) d=(nil) 0x338a720 - Group-Of-Names contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x338b4a0 - Group-Of-Names contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x338b420 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x338b350 - const char * contains 91 bytes in 5 blocks (ref 0) d=(nil) 0x338b0b0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338b2d0 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x338b250 - locality contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x338b1d0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338b150 - const char * contains 84 bytes in 6 blocks (ref 0) d=(nil) 0x338adc0 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x338b030 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x338afc0 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338af50 - owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x338aee0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x338ae60 - const char * contains 34 bytes in 3 blocks (ref 0) d=(nil) 0x338ac50 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338ad50 - member contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x338ace0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x338abe0 - ;CN=Group-Of-Names,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x338aaf0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x338aa80 - 2.5.6.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x338aa00 - groupOfNames contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x338a980 - Group-Of-Names contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x338a900 - struct dsdb_class contains 1674 bytes in 52 blocks (ref 0) d=(nil) 0x3388ae0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345ef80 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345c820 - Group contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x338a6b0 - Group contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x338a640 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;AO)(A;;RPLCLORC;;;PS)(OA;;CR;ab721a55-1e2f-11d0-9819-00aa0040529b;;AU)(OA;;RP;46a9b11d-60ae-405a-b7e8-ff8a58d456d2;;S-1-5-32-560) contains 255 bytes in 1 blocks (ref 0) d=(nil) 0x338a4d0 - const char * contains 169 bytes in 8 blocks (ref 0) d=(nil) 0x338a0a0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338a450 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338a3d0 - builtinDomain contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x338a350 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x338a2d0 - msDS-AzAdminManager contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x338a250 - msDS-AzApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338a1d0 - msDS-AzScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x338a150 - const char * contains 80 bytes in 4 blocks (ref 0) d=(nil) 0x3389e90 - msSFU30PosixMember contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x338a020 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3389fa0 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3389f20 - const char * contains 498 bytes in 21 blocks (ref 0) d=(nil) 0x3389380 - adminCount contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3389e10 - controlAccessRights contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3389d90 - desktopProfile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3389d10 - mail contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3389ca0 - groupAttributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3389c20 - groupMembershipSAM contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3389ba0 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3389b20 - member contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3389ab0 - msDS-AzLDAPQuery contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3389a30 - msDS-NonMembers contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33899b0 - nonSecurityMember contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3389930 - nTGroupMembers contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33898b0 - operatorCount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3389830 - primaryGroupToken contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33897b0 - msDS-AzObjectGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3389730 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33896b0 - msDS-AzBizRule contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3389630 - msDS-AzBizRuleLanguage contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33895b0 - msDS-AzLastImportedBizRulePath contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x3389520 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33894a0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3389280 - groupType contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3389300 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x3389180 - posixGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3389200 - const char * contains 56 bytes in 3 blocks (ref 0) d=(nil) 0x3388ff0 - securityPrincipal contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3389100 - mailRecipient contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3389080 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3388e20 - ;CN=Group,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 111 bytes in 1 blocks (ref 0) d=(nil) 0x3388f10 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3388ea0 - 1.2.840.113556.1.5.8 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3388da0 - group contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x3388d30 - Group contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x3388cc0 - struct dsdb_class contains 818 bytes in 20 blocks (ref 0) d=(nil) 0x3387ef0 - FT-Dfs contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3388a70 - FT-Dfs contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3388a00 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO)(A;;RPLCLORC;;;AU) contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x3388910 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x3388810 - dfsConfiguration contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3388890 - const char * contains 59 bytes in 4 blocks (ref 0) d=(nil) 0x3388600 - keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3388790 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3388710 - uNCName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3388690 - const char * contains 61 bytes in 4 blocks (ref 0) d=(nil) 0x3388400 - pKT contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3388590 - pKTGuid contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3388510 - remoteServerName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3388490 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3388230 - ;CN=FT-Dfs,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x3388320 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33882b0 - 1.2.840.113556.1.5.43 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33881b0 - fTDfs contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x3388140 - FT-Dfs contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33880d0 - struct dsdb_class contains 787 bytes in 14 blocks (ref 0) d=(nil) 0x33876d0 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345f0a0 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345f000 - friendlyCountry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3387e70 - friendlyCountry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3387df0 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x3387d20 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x3387c30 - co contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3387cb0 - country contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3387a40 - ;CN=friendlyCountry,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 121 bytes in 1 blocks (ref 0) d=(nil) 0x3387b40 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3387ad0 - 0.9.2342.19200300.100.4.18 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33879b0 - friendlyCountry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3387930 - friendlyCountry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33878b0 - struct dsdb_class contains 1407 bytes in 16 blocks (ref 0) d=(nil) 0x3386a30 - Foreign-Security-Principal contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3387640 - Foreign-Security-Principal contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33875b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;AO)(A;;RPLCLORC;;;PS)(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;PS)(OA;;CR;ab721a54-1e2f-11d0-9819-00aa0040529b;;PS)(OA;;CR;ab721a56-1e2f-11d0-9819-00aa0040529b;;PS)(OA;;RPWP;77B5B886-944A-11d1-AEBD-0000F80367C1;;PS)(OA;;RPWP;E45795B2-9455-11d1-AEBD-0000F80367C1;;PS)(OA;;RPWP;E45795B3-9455-11d1-AEBD-0000F80367C1;;PS)(A;;RC;;;AU)(OA;;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;;AU)(OA;;RP;77B5B886-944A-11d1-AEBD-0000F80367C1;;AU)(OA;;RP;E45795B3-9455-11d1-AEBD-0000F80367C1;;AU)(OA;;RP;e48d0154-bcf8-11d1-8702-00c04fb96050;;AU)(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;WD) contains 686 bytes in 1 blocks (ref 0) d=(nil) 0x3387290 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3387190 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3387210 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x3387090 - foreignIdentifier contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3387110 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3386f90 - objectSid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3387010 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3386db0 - ;CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 132 bytes in 1 blocks (ref 0) d=(nil) 0x3386ea0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3386e30 - 1.2.840.113556.1.5.76 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3386d30 - foreignSecurityPrincipal contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3386ca0 - Foreign-Security-Principal contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3386c10 - struct dsdb_class contains 750 bytes in 12 blocks (ref 0) d=(nil) 0x33861f0 - File-Link-Tracking-Entry contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33869a0 - File-Link-Tracking-Entry contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3386910 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3386840 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x3386740 - fileLinkTracking contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33867c0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3386560 - ;CN=File-Link-Tracking-Entry,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 130 bytes in 1 blocks (ref 0) d=(nil) 0x3386650 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33865e0 - 1.2.840.113556.1.5.59 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33864e0 - fileLinkTrackingEntry contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3386460 - File-Link-Tracking-Entry contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33863d0 - struct dsdb_class contains 802 bytes in 15 blocks (ref 0) d=(nil) 0x33859e0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x345f260 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x345f140 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3436c20 - File-Link-Tracking contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3386170 - File-Link-Tracking contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33860f0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3386020 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3385f20 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3385fa0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3385d40 - ;CN=File-Link-Tracking,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x3385e30 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3385dc0 - 1.2.840.113556.1.5.52 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3385cc0 - fileLinkTracking contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3385c40 - File-Link-Tracking contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3385bc0 - struct dsdb_class contains 730 bytes in 13 blocks (ref 0) d=(nil) 0x3385120 - Dynamic-Object contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3385960 - Dynamic-Object contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33858e0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3385810 - const char * contains 56 bytes in 3 blocks (ref 0) d=(nil) 0x3385680 - entryTTL contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3385790 - msDS-Entry-Time-To-Die contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3385710 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3385490 - ;CN=Dynamic-Object,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x3385590 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3385520 - 1.3.6.1.4.1.1466.101.119.2 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3385400 - dynamicObject contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3385380 - Dynamic-Object contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3385300 - struct dsdb_class contains 901 bytes in 19 blocks (ref 0) d=(nil) 0x3384540 - DS-UI-Settings contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33850a0 - DS-UI-Settings contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3385020 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3384f50 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3384e50 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3384ed0 - const char * contains 206 bytes in 7 blocks (ref 0) d=(nil) 0x3384a80 - dSUIAdminMaximum contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3384dd0 - dSUIAdminNotification contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3384d50 - dSUIShellMaximum contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3384cd0 - msDS-FilterContainers contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3384c50 - msDS-Security-Group-Extra-Classes contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x3384bc0 - msDS-Non-Security-Group-Extra-Classes contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x3384b30 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33848a0 - ;CN=DS-UI-Settings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x3384990 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3384920 - 1.2.840.113556.1.5.183 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3384820 - dSUISettings contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33847a0 - DS-UI-Settings contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3384720 - struct dsdb_class contains 693 bytes in 15 blocks (ref 0) d=(nil) 0x3383c00 - DSA contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33844d0 - DSA contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3384460 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3384390 - const char * contains 40 bytes in 3 blocks (ref 0) d=(nil) 0x3384210 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3384310 - server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33842a0 - const char * contains 37 bytes in 2 blocks (ref 0) d=(nil) 0x3384110 - knowledgeInformation contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3384190 - applicationEntity contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3383f40 - ;CN=DSA,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 109 bytes in 1 blocks (ref 0) d=(nil) 0x3384030 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3383fc0 - 2.5.6.13 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3383ec0 - dSA contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3383e50 - DSA contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3383de0 - struct dsdb_class contains 737 bytes in 12 blocks (ref 0) d=(nil) 0x33833d0 - domainRelatedObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3383b80 - domainRelatedObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3383b00 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x3383a30 - const char * contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x3383930 - associatedDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33839b0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3383740 - ;CN=domainRelatedObject,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x3383840 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33837d0 - 0.9.2342.19200300.100.4.17 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33836b0 - domainRelatedObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3383630 - domainRelatedObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33835b0 - struct dsdb_class contains 1316 bytes in 40 blocks (ref 0) d=(nil) 0x3381df0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345f370 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345f2f0 - Domain-Policy contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3383350 - Domain-Policy contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33832d0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3383200 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x3382ff0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3383180 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3383100 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3383080 - const char * contains 548 bytes in 24 blocks (ref 0) d=(nil) 0x3382320 - authenticationOptions contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3382f70 - defaultLocalPolicyObject contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3382ee0 - domainCAs contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3382e60 - domainPolicyReference contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3382de0 - domainWidePolicy contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3382d60 - eFSPolicy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3382ce0 - forceLogoff contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3382c60 - ipsecPolicyReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3382be0 - lockOutObservationWindow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3382b50 - lockoutDuration contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3382ad0 - lockoutThreshold contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3382a50 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33829d0 - maxPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3382950 - maxRenewAge contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33828d0 - maxTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3382850 - minPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33827d0 - minPwdLength contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3382750 - minTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33826d0 - proxyLifetime contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3382650 - publicKeyPolicy contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33825d0 - pwdHistoryLength contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3382550 - pwdProperties contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33824d0 - qualityOfService contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3382450 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3382150 - ;CN=Domain-Policy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x3382240 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33821d0 - 1.2.840.113556.1.5.18 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33820d0 - domainPolicy contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3382050 - Domain-Policy contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3381fd0 - struct dsdb_class contains 4429 bytes in 22 blocks (ref 0) d=(nil) 0x33806e0 - const char * contains 408 bytes in 1 blocks (ref 0) d=(nil) 0x345f5f0 - const char * contains 392 bytes in 1 blocks (ref 0) d=(nil) 0x345f3f0 - Domain-DNS contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3381d70 - Domain-DNS contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3381cf0 - D:(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-2848215498-2472035911-1947525656-498)(A;;RP;;;WD)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(A;;RPLCLORC;;;AU)(A;;RPWPCRLCLOCCRCWDWOSW;;;DA)(A;CI;RPWPCRLCLOCCRCWDWOSDSW;;;BA)(A;;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY)(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;EA)(A;CI;LC;;;RU)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;RP;c7407360-20bf-11d0-a768-00aa006e0529;;RU)(OA;CIIO;RPLCLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(A;;RPRC;;;RU)(OA;CIIO;RPLCLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(A;;LCRPLORC;;;ED)(OA;CIIO;RP;037088f8-0ae1-11d2-b422-00a0c968f939;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RP;4c164200-20c0-11d0-a768-00aa006e0529;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RP;5f202010-79a5-11d0-9020-00c04fc2d4cf;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;CIIO;RPLCLORC;;4828CC14-1437-45bc-9B07-AD6F015E5F28;RU)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;RU)(OA;;RP;b8119fd0-04f6-4762-ab7a-4986c76b3f9a;;AU)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;CIIO;CRRPWP;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)S:(AU;SA;WDWOWP;;;WD)(AU;SA;CR;;;BA)(AU;SA;CR;;;DU)(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD) contains 2870 bytes in 1 blocks (ref 0) d=(nil) 0x3381150 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3381050 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33810d0 - const char * contains 148 bytes in 6 blocks (ref 0) d=(nil) 0x3380d10 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3380fd0 - msDS-AllowedDNSSuffixes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3380f40 - msDS-Behavior-Version contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3380ec0 - msDS-USNLastSyncSuccess contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3380e30 - msDS-EnabledFeature contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3380db0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3380c10 - samDomain contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3380c90 - domain contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3380a40 - ;CN=Domain-DNS,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x3380b30 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3380ac0 - 1.2.840.113556.1.5.67 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33809c0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3380940 - Domain-DNS contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33808c0 - struct dsdb_class contains 684 bytes in 17 blocks (ref 0) d=(nil) 0x337fe80 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x345f890 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345f800 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3436cb0 - Domain contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3380670 - Domain contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3380600 - const char * contains 44 bytes in 3 blocks (ref 0) d=(nil) 0x3380480 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3380580 - domain contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3380510 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x3380390 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3380410 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33801c0 - ;CN=Domain-DNS,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x33802b0 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3380240 - 1.2.840.113556.1.5.66 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3380140 - domain contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33800d0 - Domain contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3380060 - struct dsdb_class contains 849 bytes in 22 blocks (ref 0) d=(nil) 0x337f150 - documentSeries contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x337fe00 - documentSeries contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x337fd80 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x337fcb0 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x337fb20 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x337fc30 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x337fbb0 - const char * contains 99 bytes in 7 blocks (ref 0) d=(nil) 0x337f7a0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x337faa0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x337fa20 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x337f9b0 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x337f940 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337f8d0 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x337f850 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x337f6b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337f730 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337f4c0 - ;CN=documentSeries,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x337f5c0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337f550 - 0.9.2342.19200300.100.4.9 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x337f430 - documentSeries contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x337f3b0 - documentSeries contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x337f330 - struct dsdb_class contains 934 bytes in 26 blocks (ref 0) d=(nil) 0x337e200 - document contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337f0d0 - document contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337f050 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x337ef80 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x337edf0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x337ef00 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x337ee80 - const char * contains 233 bytes in 13 blocks (ref 0) d=(nil) 0x337e750 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337ed80 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x337ed00 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x337ec80 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x337ec10 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x337eba0 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337eb30 - documentTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x337eab0 - documentVersion contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x337ea30 - documentAuthor contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x337e9b0 - documentLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x337e930 - documentPublisher contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x337e8b0 - documentIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x337e830 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337e570 - ;CN=document,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 114 bytes in 1 blocks (ref 0) d=(nil) 0x337e670 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337e600 - 0.9.2342.19200300.100.4.6 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x337e4e0 - document contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337e460 - document contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337e3e0 - struct dsdb_class contains 948 bytes in 23 blocks (ref 0) d=(nil) 0x337d520 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345f9a0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345f920 - Dns-Zone contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337e180 - Dns-Zone contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337e100 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;ED)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;CC;;;AU)(A;;RPLCLORC;;;WD)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO) contains 177 bytes in 1 blocks (ref 0) d=(nil) 0x337dfe0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x337dee0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x337df60 - const char * contains 148 bytes in 7 blocks (ref 0) d=(nil) 0x337db30 - dnsAllowDynamic contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x337de60 - dnsAllowXFR contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x337dde0 - dnsNotifySecondaries contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x337dd60 - dNSProperty contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x337dce0 - dnsSecureSecondaries contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x337dc60 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x337dbe0 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x337d880 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337dac0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337da50 - ;CN=Dns-Zone,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 114 bytes in 1 blocks (ref 0) d=(nil) 0x337d970 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337d900 - 1.2.840.113556.1.5.85 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x337d800 - dnsZone contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x337d780 - Dns-Zone contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337d700 - struct dsdb_class contains 822 bytes in 18 blocks (ref 0) d=(nil) 0x337c9f0 - Dns-Node contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337d4a0 - Dns-Node contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337d420 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;ED)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;CO)(A;;RPLCLORC;;;WD) contains 165 bytes in 1 blocks (ref 0) d=(nil) 0x337d310 - const char * contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x337d210 - dnsZone contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x337d290 - const char * contains 68 bytes in 4 blocks (ref 0) d=(nil) 0x337d000 - dNSProperty contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x337d190 - dnsRecord contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x337d110 - dNSTombstoned contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x337d090 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x337cd50 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337cf90 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337cf20 - ;CN=Dns-Node,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 114 bytes in 1 blocks (ref 0) d=(nil) 0x337ce40 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337cdd0 - 1.2.840.113556.1.5.86 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x337ccd0 - dnsNode contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x337cc50 - Dns-Node contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337cbd0 - struct dsdb_class contains 899 bytes in 24 blocks (ref 0) d=(nil) 0x337bd10 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345fab0 - const char * contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x345fa20 - DMD contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337c980 - DMD contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337c910 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x337c840 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x337c740 - configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x337c7c0 - const char * contains 164 bytes in 8 blocks (ref 0) d=(nil) 0x337c300 - dmdName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x337c6c0 - msDS-IntId contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x337c640 - msDs-Schema-Extensions contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x337c5c0 - prefixMap contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x337c540 - schemaInfo contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x337c4c0 - schemaUpdate contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x337c440 - msDS-USNLastSyncSuccess contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x337c3b0 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x337c050 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337c290 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337c220 - ;CN=DMD,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 109 bytes in 1 blocks (ref 0) d=(nil) 0x337c140 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337c0d0 - 1.2.840.113556.1.3.9 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x337bfd0 - dMD contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337bf60 - DMD contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337bef0 - struct dsdb_class contains 941 bytes in 23 blocks (ref 0) d=(nil) 0x337afc0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3436370 - Display-Template contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x337bc90 - Display-Template contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x337bc10 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x337bb40 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x337ba40 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x337bac0 - const char * contains 201 bytes in 8 blocks (ref 0) d=(nil) 0x337b5e0 - addressEntryDisplayTable contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x337b9b0 - addressEntryDisplayTableMSDOS contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x337b920 - helpData16 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x337b8a0 - helpData32 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x337b820 - helpFileName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x337b7a0 - originalDisplayTable contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x337b720 - originalDisplayTableMSDOS contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x337b690 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x337b320 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337b570 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337b500 - ;CN=Display-Template,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x337b410 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337b3a0 - 1.2.840.113556.1.3.59 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x337b2a0 - displayTemplate contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x337b220 - Display-Template contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x337b1a0 - struct dsdb_class contains 1100 bytes in 29 blocks (ref 0) d=(nil) 0x3379eb0 - Display-Specifier contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x337af40 - Display-Specifier contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x337aec0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x337adf0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x337acf0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x337ad70 - const char * contains 390 bytes in 17 blocks (ref 0) d=(nil) 0x337a460 - adminContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x337ac70 - adminMultiselectPropertyPages contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x337abe0 - adminPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x337ab60 - attributeDisplayNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x337aae0 - classDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x337aa60 - contextMenu contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x337a9e0 - createDialog contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x337a960 - createWizardExt contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x337a8e0 - creationWizard contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x337a860 - extraColumns contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x337a7e0 - iconPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x337a760 - queryFilter contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x337a6e0 - scopeFlags contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x337a660 - shellContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x337a5e0 - shellPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x337a560 - treatAsLeaf contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x337a210 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x337a3f0 - ;CN=Display-Specifier,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x337a300 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x337a290 - 1.2.840.113556.1.5.84 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x337a190 - displaySpecifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x337a110 - Display-Specifier contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x337a090 - struct dsdb_class contains 1205 bytes in 38 blocks (ref 0) d=(nil) 0x3378900 - DHCP-Class contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3379e30 - DHCP-Class contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3379db0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3379ce0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3379be0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3379c60 - const char * contains 437 bytes in 21 blocks (ref 0) d=(nil) 0x33790c0 - dhcpClasses contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3379b60 - dhcpMask contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3379ae0 - dhcpMaxKey contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3379a60 - dhcpObjDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33799e0 - dhcpObjName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3379960 - dhcpOptions contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33798e0 - dhcpProperties contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3379860 - dhcpRanges contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33797e0 - dhcpReservations contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3379760 - dhcpServers contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33796e0 - dhcpSites contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3379660 - dhcpState contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33795e0 - dhcpSubnets contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3379560 - dhcpUpdateTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33794e0 - mscopeId contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3379460 - networkAddress contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33793e0 - optionDescription contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3379360 - optionsLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33792e0 - superScopeDescription contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3379260 - superScopes contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33791e0 - const char * contains 92 bytes in 5 blocks (ref 0) d=(nil) 0x3378ea0 - dhcpFlags contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3379040 - dhcpIdentification contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3378fc0 - dhcpType contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3378f40 - dhcpUniqueKey contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3378c60 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3378e30 - ;CN=DHCP-Class,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x3378d50 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3378ce0 - 1.2.840.113556.1.5.132 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3378be0 - dHCPClass contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3378b60 - DHCP-Class contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3378ae0 - struct dsdb_class contains 776 bytes in 15 blocks (ref 0) d=(nil) 0x3378070 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345fbe0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345fb50 - Dfs-Configuration contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3378880 - Dfs-Configuration contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3378800 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3378730 - const char * contains 44 bytes in 3 blocks (ref 0) d=(nil) 0x3378620 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33786b0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33783d0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33785b0 - ;CN=Dfs-Configuration,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 123 bytes in 1 blocks (ref 0) d=(nil) 0x33784c0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3378450 - 1.2.840.113556.1.5.42 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3378350 - dfsConfiguration contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33782d0 - Dfs-Configuration contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3378250 - struct dsdb_class contains 981 bytes in 33 blocks (ref 0) d=(nil) 0x3376e20 - Device contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3378000 - Device contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3377f90 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3377ec0 - const char * contains 92 bytes in 5 blocks (ref 0) d=(nil) 0x3377c20 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3377e40 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3377dc0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3377d40 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3377cc0 - const char * contains 95 bytes in 5 blocks (ref 0) d=(nil) 0x3377980 - msSFU30Aliases contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3377ba0 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3377b20 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3377aa0 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3377a20 - const char * contains 90 bytes in 7 blocks (ref 0) d=(nil) 0x3377610 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x3377910 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x33778a0 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3377830 - owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33777c0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3377740 - serialNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33776c0 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x3377520 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33775a0 - const char * contains 68 bytes in 4 blocks (ref 0) d=(nil) 0x33773a0 - bootableDevice contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33774a0 - ieee802Device contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3377160 - ipHost contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3377430 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3377330 - ;CN=Device,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x3377250 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33771e0 - 2.5.6.14 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33770e0 - device contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3377070 - Device contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3377000 - struct dsdb_class contains 854 bytes in 21 blocks (ref 0) d=(nil) 0x33762a0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345fcf0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x345fc70 - Cross-Ref-Container contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3376da0 - Cross-Ref-Container contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3376d20 - D:(A;;GA;;;SY) contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3376ca0 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x3376ba0 - configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3376c20 - const char * contains 172 bytes in 7 blocks (ref 0) d=(nil) 0x3376870 - msDS-Behavior-Version contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3376b20 - msDS-ExecuteScriptPassword contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3376610 - msDS-UpdateScript contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3376aa0 - uPNSuffixes contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3376a20 - msDS-SPNSuffixes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33769a0 - msDS-EnabledFeature contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3376920 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3376800 - ;CN=Cross-Ref-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x3376710 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33766a0 - 1.2.840.113556.1.5.7000.53 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3376580 - crossRefContainer contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3376500 - Cross-Ref-Container contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3376480 - struct dsdb_class contains 1115 bytes in 30 blocks (ref 0) d=(nil) 0x3375100 - Cross-Ref contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3376220 - Cross-Ref contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33761a0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33760d0 - const char * contains 34 bytes in 2 blocks (ref 0) d=(nil) 0x3375fd0 - crossRefContainer contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3376050 - const char * contains 387 bytes in 14 blocks (ref 0) d=(nil) 0x3375810 - msDS-Behavior-Version contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3375f50 - msDS-DnsRootAlias contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3375ed0 - msDS-NC-Replica-Locations contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3375e40 - msDS-Replication-Notify-First-DSA-Delay contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3375da0 - msDS-Replication-Notify-Subsequent-DSA-Delay contains 45 bytes in 1 blocks (ref 0) d=(nil) 0x3375d00 - msDS-SDReferenceDomain contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3375c80 - Enabled contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3375c00 - nETBIOSName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3375b80 - nTMixedDomain contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3375b00 - rootTrust contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3375a80 - superiorDNSRoot contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3375a00 - trustParent contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3375980 - msDS-NC-RO-Replica-Locations contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x33758f0 - const char * contains 50 bytes in 4 blocks (ref 0) d=(nil) 0x33756a0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33757a0 - dnsRoot contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3375460 - nCName contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3375730 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3375630 - ;CN=Cross-Ref,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x3375550 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33754e0 - 1.2.840.113556.1.3.11 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33753e0 - crossRef contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3375360 - Cross-Ref contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33752e0 - struct dsdb_class contains 914 bytes in 20 blocks (ref 0) d=(nil) 0x33744b0 - CRL-Distribution-Point contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3375080 - CRL-Distribution-Point contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3375000 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3374f30 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3374e30 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3374eb0 - const char * contains 174 bytes in 6 blocks (ref 0) d=(nil) 0x3374ad0 - authorityRevocationList contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3374da0 - certificateAuthorityObject contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3374d10 - certificateRevocationList contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3374c80 - cRLPartitionedRevocationList contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3374bf0 - deltaRevocationList contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3374b70 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x3374810 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3374a60 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33749f0 - ;CN=CRL-Distribution-Point,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 128 bytes in 1 blocks (ref 0) d=(nil) 0x3374900 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3374890 - 2.5.6.19 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3374790 - cRLDistributionPoint contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3374710 - CRL-Distribution-Point contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3374690 - struct dsdb_class contains 820 bytes in 21 blocks (ref 0) d=(nil) 0x33739c0 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345fe10 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x345fd70 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34363f0 - Country contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3374430 - Country contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33743b0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33742e0 - const char * contains 47 bytes in 3 blocks (ref 0) d=(nil) 0x3374150 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3374260 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33741e0 - const char * contains 39 bytes in 3 blocks (ref 0) d=(nil) 0x3373fd0 - searchGuide contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33740d0 - co contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3374060 - const char * contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x3373ee0 - c contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x3373f60 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3373e70 - ;CN=Country,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 113 bytes in 1 blocks (ref 0) d=(nil) 0x3373d90 - c contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x3373d20 - 2.5.6.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3373ca0 - country contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3373c20 - Country contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3373ba0 - struct dsdb_class contains 821 bytes in 17 blocks (ref 0) d=(nil) 0x3372f20 - Control-Access-Right contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3373940 - Control-Access-Right contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33738c0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33737f0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33736f0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3373770 - const char * contains 97 bytes in 5 blocks (ref 0) d=(nil) 0x33734d0 - appliesTo contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3373670 - localizationDisplayId contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33735f0 - rightsGuid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3373570 - validAccesses contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3373280 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3373460 - ;CN=Control-Access-Right,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x3373370 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3373300 - 1.2.840.113556.1.5.77 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3373200 - controlAccessRight contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3373180 - Control-Access-Right contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3373100 - struct dsdb_class contains 2989 bytes in 32 blocks (ref 0) d=(nil) 0x3371e80 - const char * contains 992 bytes in 1 blocks (ref 0) d=(nil) 0x34602e0 - const char * contains 960 bytes in 1 blocks (ref 0) d=(nil) 0x345feb0 - const char * contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x3436470 - Container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3372ea0 - Container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3372e20 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3372d50 - const char * contains 240 bytes in 12 blocks (ref 0) d=(nil) 0x3372720 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3372cd0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3372c50 - configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3372bd0 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3372b50 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3372ad0 - nTDSService contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3372a50 - server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33729e0 - subnet contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3372970 - msDS-AzAdminManager contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33728f0 - msDS-AzApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3372870 - msDS-AzScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33727f0 - const char * contains 37 bytes in 2 blocks (ref 0) d=(nil) 0x3372620 - msDS-ObjectReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33726a0 - const char * contains 56 bytes in 3 blocks (ref 0) d=(nil) 0x3372490 - defaultClassStore contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33725a0 - schemaVersion contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3372520 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x33721e0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3372420 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33723b0 - ;CN=Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 115 bytes in 1 blocks (ref 0) d=(nil) 0x33722d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3372260 - 1.2.840.113556.1.3.23 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3372160 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33720e0 - Container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3372060 - struct dsdb_class contains 859 bytes in 23 blocks (ref 0) d=(nil) 0x3371210 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34607c0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x345f1d0 - Contact contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3371e00 - Contact contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3371d80 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3371cb0 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x3371b20 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3371c30 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3371bb0 - const char * contains 36 bytes in 2 blocks (ref 0) d=(nil) 0x3371a20 - msDS-SourceObjectDN contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3371aa0 - const char * contains 22 bytes in 2 blocks (ref 0) d=(nil) 0x3371930 - notes contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33719b0 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x3371840 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33718c0 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x3371740 - mailRecipient contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33717c0 - organizationalPerson contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3371570 - ;CN=Person,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 112 bytes in 1 blocks (ref 0) d=(nil) 0x3371660 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33715f0 - 1.2.840.113556.1.5.15 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33714f0 - contact contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3371470 - Contact contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33713f0 - struct dsdb_class contains 1359 bytes in 22 blocks (ref 0) d=(nil) 0x3370680 - const char * contains 184 bytes in 1 blocks (ref 0) d=(nil) 0x3439ba0 - const char * contains 184 bytes in 1 blocks (ref 0) d=(nil) 0x34373a0 - const char * contains 184 bytes in 1 blocks (ref 0) d=(nil) 0x34369c0 - Connection-Point contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3371190 - Connection-Point contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3371110 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3371040 - const char * contains 43 bytes in 3 blocks (ref 0) d=(nil) 0x3370eb0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3370fc0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3370f40 - const char * contains 65 bytes in 4 blocks (ref 0) d=(nil) 0x3370ca0 - keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3370e30 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3370db0 - msDS-Settings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3370d30 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x33709e0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3370c30 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3370bc0 - ;CN=Connection-Point,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x3370ad0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3370a60 - 1.2.840.113556.1.5.14 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3370960 - connectionPoint contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33708e0 - Connection-Point contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3370860 - struct dsdb_class contains 971 bytes in 20 blocks (ref 0) d=(nil) 0x336fb90 - const char * contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x3460920 - const char * contains 88 bytes in 1 blocks (ref 0) d=(nil) 0x3460850 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3370600 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3370580 - D:(A;;RPWPCRCCDCLCLORCWOWDSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 89 bytes in 1 blocks (ref 0) d=(nil) 0x33704b0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33703b0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3370430 - const char * contains 73 bytes in 4 blocks (ref 0) d=(nil) 0x33701a0 - gPLink contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3370340 - gPOptions contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33702c0 - msDS-USNLastSyncSuccess contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3370230 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x336fef0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3370130 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33700c0 - ;CN=Configuration,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 119 bytes in 1 blocks (ref 0) d=(nil) 0x336ffe0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x336ff70 - 1.2.840.113556.1.5.12 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336fe70 - configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x336fdf0 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x336fd70 - struct dsdb_class contains 3914 bytes in 92 blocks (ref 0) d=(nil) 0x336d200 - const char * contains 304 bytes in 1 blocks (ref 0) d=(nil) 0x3460b90 - const char * contains 288 bytes in 1 blocks (ref 0) d=(nil) 0x3460a00 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3439730 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3439560 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34394e0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3439210 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34392d0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3439190 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3438380 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3437dd0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3437a50 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34379d0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34384a0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3437120 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34370a0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3436800 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3437950 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3436890 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34362f0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3436020 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34360e0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3435fa0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34351d0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3434930 - Computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336fb10 - Computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336fa90 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;AO)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPCRLCLORCSDDT;;;CO)(OA;;WP;4c164200-20c0-11d0-a768-00aa006e0529;;CO)(A;;RPLCLORC;;;AU)(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;WD)(A;;CCDC;;;PS)(OA;;CCDC;bf967aa8-0de6-11d0-a285-00aa003049e2;;PO)(OA;;RPWP;bf967a7f-0de6-11d0-a285-00aa003049e2;;CA)(OA;;SW;f3a64788-5306-11d1-a9c5-0000f80367c1;;PS)(OA;;RPWP;77B5B886-944A-11d1-AEBD-0000F80367C1;;PS)(OA;;SW;72e39547-7b18-11d1-adef-00c04fd8d5cd;;PS)(OA;;SW;72e39547-7b18-11d1-adef-00c04fd8d5cd;;CO)(OA;;SW;f3a64788-5306-11d1-a9c5-0000f80367c1;;CO)(OA;;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;;WP;5f202010-79a5-11d0-9020-00c04fc2d4cf;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;;WP;bf967950-0de6-11d0-a285-00aa003049e2;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;;WP;bf967953-0de6-11d0-a285-00aa003049e2;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;;RP;46a9b11d-60ae-405a-b7e8-ff8a58d456d2;;S-1-5-32-560) contains 1013 bytes in 1 blocks (ref 0) d=(nil) 0x336f630 - const char * contains 71 bytes in 4 blocks (ref 0) d=(nil) 0x336f420 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x336f5b0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336f530 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x336f4b0 - const char * contains 95 bytes in 5 blocks (ref 0) d=(nil) 0x336f180 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336f3a0 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x336f320 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x336f2a0 - msSFU30Aliases contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x336f220 - const char * contains 1220 bytes in 47 blocks (ref 0) d=(nil) 0x336d820 - msTSSecondaryDesktopBL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x336f100 - msTSPrimaryDesktopBL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x336f080 - catalogs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336f000 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x336ef90 - defaultLocalPolicyObject contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x336ef00 - dNSHostName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336ee80 - localPolicyFlags contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x336ee00 - location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336ed80 - machineRole contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336ed00 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x336ec80 - msDS-AdditionalDnsHostName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x336ebf0 - msDS-AdditionalSamAccountName contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x336eb60 - netbootGUID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336eae0 - netbootInitialization contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336ea60 - netbootMachineFilePath contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x336e9e0 - netbootMirrorDataFile contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336e960 - netbootSIFFile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x336e8e0 - networkAddress contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x336e860 - operatingSystem contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x336e7e0 - operatingSystemHotfix contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336e760 - operatingSystemServicePack contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x336e6d0 - operatingSystemVersion contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x336e650 - physicalLocationObject contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x336e5d0 - policyReplicationFlags contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x336e550 - rIDSetReferences contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x336e4d0 - siteGUID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336e450 - volumeCount contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336e3d0 - msDS-KrbTgtLink contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x336e350 - msDS-ExecuteScriptPassword contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x336e2c0 - msDS-RevealedUsers contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336e240 - msDS-RevealedList contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x336e1c0 - msDS-AuthenticatedAtDC contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x336e140 - msDS-isGC contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x336e0c0 - msDS-isRODC contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336e040 - msDS-SiteName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x336dfc0 - msDS-PromotionSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x336df40 - msDS-NeverRevealGroup contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336dec0 - msDS-RevealOnDemandGroup contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x336de30 - msTPM-OwnerInformation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x336ddb0 - msTSProperty01 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x336dd30 - msTSProperty02 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x336dcb0 - msDS-IsUserCachableAtRodc contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x336dc20 - msDS-HostServiceAccount contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x336db90 - msTSEndpointPlugin contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336db10 - msTSEndpointType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x336da90 - msTSEndpointData contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x336da10 - const char * contains 23 bytes in 2 blocks (ref 0) d=(nil) 0x336d730 - ipHost contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x336d7b0 - user contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x336d560 - ;CN=Computer,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 114 bytes in 1 blocks (ref 0) d=(nil) 0x336d650 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x336d5e0 - 1.2.840.113556.1.3.30 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336d4e0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336d460 - Computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336d3e0 - struct dsdb_class contains 834 bytes in 18 blocks (ref 0) d=(nil) 0x336c6f0 - Com-Connection-Point contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x336d180 - Com-Connection-Point contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x336d100 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x336d030 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x336cf30 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x336cfb0 - const char * contains 79 bytes in 4 blocks (ref 0) d=(nil) 0x336cd20 - marshalledInterface contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x336ceb0 - moniker contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x336ce30 - monikerDisplayName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336cdb0 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x336cc30 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x336ccb0 - connectionPoint contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x336ca50 - ;CN=Com-Connection-Point,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x336cb40 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x336cad0 - 1.2.840.113556.1.5.11 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336c9d0 - comConnectionPoint contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336c950 - Com-Connection-Point contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x336c8d0 - struct dsdb_class contains 1010 bytes in 26 blocks (ref 0) d=(nil) 0x336b8b0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3460dd0 - const char * contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x3460d30 - Class-Store contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336c670 - Class-Store contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336c5f0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x336c520 - const char * contains 155 bytes in 9 blocks (ref 0) d=(nil) 0x336c080 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x336c4a0 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x336c420 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336c3a0 - classStore contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x336c320 - user contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x336c2b0 - group contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x336c240 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336c1c0 - domainPolicy contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x336c140 - const char * contains 105 bytes in 5 blocks (ref 0) d=(nil) 0x336bde0 - appSchemaVersion contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x336c000 - lastUpdateSequence contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336bf80 - nextLevelStore contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x336bf00 - versionNumber contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x336be80 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x336bc10 - ;CN=Class-Store,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 117 bytes in 1 blocks (ref 0) d=(nil) 0x336bd00 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x336bc90 - 1.2.840.113556.1.5.44 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336bb90 - classStore contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x336bb10 - Class-Store contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336ba90 - struct dsdb_class contains 1162 bytes in 38 blocks (ref 0) d=(nil) 0x336a360 - Class-Schema contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x336b830 - Class-Schema contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x336b7b0 - D:S: contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x336b740 - const char * contains 20 bytes in 2 blocks (ref 0) d=(nil) 0x336b650 - dMD contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x336b6d0 - const char * contains 436 bytes in 19 blocks (ref 0) d=(nil) 0x336ac30 - auxiliaryClass contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x336b5d0 - classDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x336b550 - defaultHidingValue contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336b4d0 - defaultSecurityDescriptor contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x336b440 - isDefunct contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x336b3c0 - lDAPDisplayName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x336b340 - mayContain contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x336b2c0 - msDS-IntId contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x336b240 - msDs-Schema-Extensions contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x336b1c0 - mustContain contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336b140 - possSuperiors contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x336b0c0 - rDNAttID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336b040 - schemaFlagsEx contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x336afc0 - systemAuxiliaryClass contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x336af40 - systemMayContain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x336aec0 - systemMustContain contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x336ae40 - systemOnly contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x336adc0 - systemPossSuperiors contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x336ad40 - const char * contains 135 bytes in 7 blocks (ref 0) d=(nil) 0x336a890 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x336abc0 - defaultObjectCategory contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336ab40 - governsID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x336aac0 - objectClassCategory contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x336aa40 - schemaIDGUID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x336a9c0 - subClassOf contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x336a940 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x336a6c0 - ;CN=Class-Schema,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 118 bytes in 1 blocks (ref 0) d=(nil) 0x336a7b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x336a740 - 1.2.840.113556.1.3.13 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x336a640 - classSchema contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x336a5c0 - Class-Schema contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x336a540 - struct dsdb_class contains 907 bytes in 21 blocks (ref 0) d=(nil) 0x3369690 - Class-Registration contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336a2e0 - Class-Registration contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x336a260 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x336a190 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x336a090 - classStore contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x336a110 - const char * contains 190 bytes in 9 blocks (ref 0) d=(nil) 0x3369bd0 - cOMCLSID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x336a010 - cOMInterfaceID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3369f90 - cOMOtherProgId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3369f10 - cOMProgID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3369e90 - cOMTreatAsClassId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3369e10 - implementedCategories contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3369d90 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3369d10 - requiredCategories contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3369c90 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x33699f0 - ;CN=Class-Registration,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x3369ae0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3369a70 - 1.2.840.113556.1.5.10 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3369970 - classRegistration contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33698f0 - Class-Registration contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3369870 - struct dsdb_class contains 1416 bytes in 41 blocks (ref 0) d=(nil) 0x3367ec0 - Certification-Authority contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3369600 - Certification-Authority contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3369570 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x33694a0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x33693a0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3369420 - const char * contains 582 bytes in 24 blocks (ref 0) d=(nil) 0x33686c0 - cACertificateDN contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3369320 - cAConnect contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33692a0 - cAUsages contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3369220 - cAWEBURL contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33691a0 - certificateTemplates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3369120 - cRLObject contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33690a0 - crossCertificatePair contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3369020 - currentParentCA contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3368fa0 - deltaRevocationList contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3368f20 - dNSHostName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3368ea0 - domainID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3368e20 - domainPolicyObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3368da0 - enrollmentProviders contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3368d20 - parentCA contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3368ca0 - parentCACertificateChain contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3368c10 - pendingCACertificates contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3368b90 - pendingParentCA contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3368b10 - previousCACertificates contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3368a90 - previousParentCA contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3368a10 - searchGuide contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3368990 - signatureAlgorithms contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3368910 - supportedApplicationContext contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3368880 - teletexTerminalIdentifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33687f0 - const char * contains 107 bytes in 5 blocks (ref 0) d=(nil) 0x3368410 - authorityRevocationList contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3368630 - cACertificate contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33685b0 - certificateRevocationList contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3368520 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33684b0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3368230 - ;CN=Certification-Authority,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 129 bytes in 1 blocks (ref 0) d=(nil) 0x3368320 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33682b0 - 2.5.6.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33681b0 - certificationAuthority contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3368130 - Certification-Authority contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33680a0 - struct dsdb_class contains 823 bytes in 17 blocks (ref 0) d=(nil) 0x3367410 - Category-Registration contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3367e40 - Category-Registration contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3367dc0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3367cf0 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x3367bf0 - classStore contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3367c70 - const char * contains 91 bytes in 5 blocks (ref 0) d=(nil) 0x3367950 - categoryId contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3367b70 - localeID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3367af0 - localizedDescription contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3367a70 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33679f0 - leaf contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3367770 - ;CN=Category-Registration,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 127 bytes in 1 blocks (ref 0) d=(nil) 0x3367860 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33677f0 - 1.2.840.113556.1.5.74 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33676f0 - categoryRegistration contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3367670 - Category-Registration contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33675f0 - struct dsdb_class contains 834 bytes in 16 blocks (ref 0) d=(nil) 0x3366b10 - const char * contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x3460f20 - const char * contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x3460e70 - Builtin-Domain contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3367390 - Builtin-Domain contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3367310 - D:(A;;RPLCLORC;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 75 bytes in 1 blocks (ref 0) d=(nil) 0x3367250 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3367150 - domainDNS contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33671d0 - const char * contains 30 bytes in 2 blocks (ref 0) d=(nil) 0x3367050 - samDomainBase contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33670d0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3366e70 - ;CN=Builtin-Domain,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x3366f60 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3366ef0 - 1.2.840.113556.1.5.4 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3366df0 - builtinDomain contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3366d70 - Builtin-Domain contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3366cf0 - struct dsdb_class contains 723 bytes in 14 blocks (ref 0) d=(nil) 0x3366200 - BootableDevice contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3366a90 - BootableDevice contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3366a10 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3366940 - const char * contains 58 bytes in 4 blocks (ref 0) d=(nil) 0x3366740 - bootFile contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33668c0 - bootParameter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3366840 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33667d0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3366560 - ;CN=BootableDevice,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 120 bytes in 1 blocks (ref 0) d=(nil) 0x3366650 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33665e0 - 1.3.6.1.1.1.2.12 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33664e0 - bootableDevice contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3366460 - BootableDevice contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33663e0 - struct dsdb_class contains 1128 bytes in 37 blocks (ref 0) d=(nil) 0x3364d50 - Attribute-Schema contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3366180 - Attribute-Schema contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3366100 - D:S: contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3366090 - const char * contains 20 bytes in 2 blocks (ref 0) d=(nil) 0x3365fa0 - dMD contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3366020 - const char * contains 369 bytes in 17 blocks (ref 0) d=(nil) 0x33656b0 - attributeSecurityGUID contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3365f20 - classDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3365ea0 - extendedCharsAllowed contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3365e20 - isDefunct contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3365da0 - isEphemeral contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3365d20 - isMemberOfPartialAttributeSet contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x3365c90 - linkID contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3365c20 - mAPIID contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3365bb0 - msDS-IntId contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3365b30 - msDs-Schema-Extensions contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3365ab0 - oMObjectClass contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3365a30 - rangeLower contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33659b0 - rangeUpper contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3365930 - schemaFlagsEx contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33658b0 - searchFlags contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3365830 - systemOnly contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33657b0 - const char * contains 148 bytes in 8 blocks (ref 0) d=(nil) 0x3365290 - attributeID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3365630 - attributeSyntax contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33655b0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3365540 - isSingleValued contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33654c0 - lDAPDisplayName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3365440 - oMSyntax contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33653c0 - schemaIDGUID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3365340 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33650b0 - ;CN=Attribute-Schema,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x33651a0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3365130 - 1.2.840.113556.1.3.14 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3365030 - attributeSchema contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3364fb0 - Attribute-Schema contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3364f30 - struct dsdb_class contains 948 bytes in 23 blocks (ref 0) d=(nil) 0x3363f90 - Application-Version contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3364cd0 - Application-Version contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3364c50 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3364b80 - const char * contains 70 bytes in 4 blocks (ref 0) d=(nil) 0x3364970 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3364b00 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3364a80 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3364a00 - const char * contains 167 bytes in 9 blocks (ref 0) d=(nil) 0x33644d0 - appSchemaVersion contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33648f0 - vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3364880 - versionNumber contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3364800 - versionNumberHi contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3364780 - versionNumberLo contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3364700 - keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3364680 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3364600 - owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x3364590 - applicationSettings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33642f0 - ;CN=Application-Version,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x33643e0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3364370 - 1.2.840.113556.1.5.216 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3364270 - applicationVersion contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33641f0 - Application-Version contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3364170 - struct dsdb_class contains 825 bytes in 16 blocks (ref 0) d=(nil) 0x33635c0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3436510 - Application-Site-Settings contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3363f00 - Application-Site-Settings contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3363e70 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3363da0 - const char * contains 21 bytes in 2 blocks (ref 0) d=(nil) 0x3363cb0 - site contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x3363d30 - const char * contains 57 bytes in 3 blocks (ref 0) d=(nil) 0x3363b20 - applicationName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3363c30 - notificationList contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3363bb0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3363940 - ;CN=Application-Site-Settings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 131 bytes in 1 blocks (ref 0) d=(nil) 0x3363a30 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33639c0 - 1.2.840.113556.1.5.68 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33638c0 - applicationSiteSettings contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3363830 - Application-Site-Settings contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33637a0 - struct dsdb_class contains 769 bytes in 16 blocks (ref 0) d=(nil) 0x3362c60 - const char * contains 56 bytes in 1 blocks (ref 0) d=(nil) 0x34366c0 - Application-Settings contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3363540 - Application-Settings contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33634c0 - const char * contains 23 bytes in 2 blocks (ref 0) d=(nil) 0x33633d0 - server contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3363450 - const char * contains 79 bytes in 4 blocks (ref 0) d=(nil) 0x33631c0 - applicationName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3363350 - msDS-Settings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33632d0 - notificationList contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3363250 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3362fd0 - ;CN=Application-Settings,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 126 bytes in 1 blocks (ref 0) d=(nil) 0x33630d0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3363060 - 1.2.840.113556.1.5.7000.49 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3362f40 - applicationSettings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3362ec0 - Application-Settings contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3362e40 - struct dsdb_class contains 884 bytes in 23 blocks (ref 0) d=(nil) 0x3361fd0 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3461060 - const char * contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3460fd0 - Application-Process contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3362be0 - Application-Process contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3362b60 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3362a90 - const char * contains 91 bytes in 5 blocks (ref 0) d=(nil) 0x33627f0 - computer contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3362a10 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3362990 - organization contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3362910 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3362890 - const char * contains 45 bytes in 4 blocks (ref 0) d=(nil) 0x3362600 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x3362780 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3362710 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3362690 - const char * contains 19 bytes in 2 blocks (ref 0) d=(nil) 0x3362510 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3362590 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3362330 - ;CN=Application-Process,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x3362420 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33623b0 - 2.5.6.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33622b0 - applicationProcess contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3362230 - Application-Process contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33621b0 - struct dsdb_class contains 910 bytes in 24 blocks (ref 0) d=(nil) 0x3361230 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34365a0 - Application-Entity contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3361f50 - Application-Entity contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3361ed0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3361e00 - const char * contains 80 bytes in 4 blocks (ref 0) d=(nil) 0x3361bf0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3361d80 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3361d00 - applicationProcess contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3361c80 - const char * contains 91 bytes in 6 blocks (ref 0) d=(nil) 0x33618f0 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x3361b80 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x3361b10 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3361aa0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3361a20 - supportedApplicationContext contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3361990 - const char * contains 47 bytes in 3 blocks (ref 0) d=(nil) 0x3361770 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3361880 - presentationAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3361800 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3361590 - ;CN=Application-Entity,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 124 bytes in 1 blocks (ref 0) d=(nil) 0x3361680 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3361610 - 2.5.6.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3361510 - applicationEntity contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3361490 - Application-Entity contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3361410 - struct dsdb_class contains 894 bytes in 20 blocks (ref 0) d=(nil) 0x33605e0 - Address-Template contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33611b0 - Address-Template contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3361130 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x3361060 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x3360f60 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3360fe0 - const char * contains 149 bytes in 6 blocks (ref 0) d=(nil) 0x3360c20 - addressSyntax contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3360ee0 - addressType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3360e60 - perMsgDialogDisplayTable contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3360dd0 - perRecipDialogDisplayTable contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3360d40 - proxyGenerationEnabled contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3360cc0 - const char * contains 28 bytes in 2 blocks (ref 0) d=(nil) 0x3360b20 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3360ba0 - displayTemplate contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3360940 - ;CN=Address-Template,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x3360a30 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33609c0 - 1.2.840.113556.1.3.58 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33608c0 - addressTemplate contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3360840 - Address-Template contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33607c0 - struct dsdb_class contains 909 bytes in 19 blocks (ref 0) d=(nil) 0x335fb10 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3461170 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x34610f0 - Address-Book-Container contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3360560 - Address-Book-Container contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33604e0 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(OA;;CR;a1990816-4298-11d1-ade2-00c04fd8d5cd;;AU) contains 142 bytes in 1 blocks (ref 0) d=(nil) 0x33603e0 - const char * contains 59 bytes in 3 blocks (ref 0) d=(nil) 0x3360250 - configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3360360 - addressBookContainer contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33602e0 - const char * contains 32 bytes in 2 blocks (ref 0) d=(nil) 0x3360150 - purportedSearch contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33601d0 - const char * contains 28 bytes in 2 blocks (ref 0) d=(nil) 0x3360050 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33600d0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335fe70 - ;CN=Address-Book-Container,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 128 bytes in 1 blocks (ref 0) d=(nil) 0x335ff60 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x335fef0 - 1.2.840.113556.1.5.125 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335fdf0 - addressBookContainer contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x335fd70 - Address-Book-Container contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335fcf0 - struct dsdb_class contains 1466 bytes in 39 blocks (ref 0) d=(nil) 0x335e410 - ACS-Subnet contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x335fa90 - ACS-Subnet contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x335fa10 - D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 93 bytes in 1 blocks (ref 0) d=(nil) 0x335f940 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x335f840 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x335f8c0 - const char * contains 790 bytes in 27 blocks (ref 0) d=(nil) 0x335e940 - aCSAllocableRSVPBandwidth contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x335f7b0 - aCSCacheTimeout contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x335f730 - aCSDSBMDeadTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x335f6b0 - aCSDSBMPriority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x335f630 - aCSDSBMRefresh contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x335f5b0 - aCSEnableACSService contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x335f530 - aCSEnableRSVPAccounting contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x335f4a0 - aCSEnableRSVPMessageLogging contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x335f410 - aCSEventLogLevel contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x335f390 - aCSMaxDurationPerFlow contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x335f310 - aCSMaxNoOfAccountFiles contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335f290 - aCSMaxNoOfLogFiles contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x335f210 - aCSMaxPeakBandwidth contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x335f190 - aCSMaxPeakBandwidthPerFlow contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x335f100 - aCSMaxSizeOfRSVPAccountFile contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x335f070 - aCSMaxSizeOfRSVPLogFile contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x335efe0 - aCSMaxTokenRatePerFlow contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335ef60 - aCSNonReservedMaxSDUSize contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x335eed0 - aCSNonReservedMinPolicedSize contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x335ee40 - aCSNonReservedPeakRate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335edc0 - aCSNonReservedTokenSize contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x335ed30 - aCSNonReservedTxLimit contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x335ecb0 - aCSNonReservedTxSize contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x335ec30 - aCSRSVPAccountFilesLocation contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x335eba0 - aCSRSVPLogFilesLocation contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x335eb10 - aCSServerList contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x335ea90 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335e770 - ;CN=ACS-Subnet,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x335e860 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x335e7f0 - 1.2.840.113556.1.5.138 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335e6f0 - aCSSubnet contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x335e670 - ACS-Subnet contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x335e5f0 - struct dsdb_class contains 883 bytes in 18 blocks (ref 0) d=(nil) 0x335d8c0 - ACS-Resource-Limits contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x335e390 - ACS-Resource-Limits contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x335e310 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x335e240 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x335e140 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x335e1c0 - const char * contains 159 bytes in 6 blocks (ref 0) d=(nil) 0x335de00 - aCSAllocableRSVPBandwidth contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x335e0b0 - aCSMaxPeakBandwidth contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x335e030 - aCSMaxPeakBandwidthPerFlow contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x335dfa0 - aCSServiceType contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x335df20 - aCSMaxTokenRatePerFlow contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335dea0 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335dc20 - ;CN=ACS-Resource-Limits,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 125 bytes in 1 blocks (ref 0) d=(nil) 0x335dd10 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x335dca0 - 1.2.840.113556.1.5.191 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335dba0 - aCSResourceLimits contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x335db20 - ACS-Resource-Limits contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x335daa0 - struct dsdb_class contains 1169 bytes in 30 blocks (ref 0) d=(nil) 0x335c700 - ACS-Policy contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x335d840 - ACS-Policy contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x335d7c0 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x335d6f0 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x335d5f0 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x335d670 - const char * contains 489 bytes in 18 blocks (ref 0) d=(nil) 0x335cca0 - aCSAggregateTokenRatePerUser contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x335d560 - aCSDirection contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x335d4e0 - aCSIdentityName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x335d460 - aCSMaxAggregatePeakRatePerUser contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x335d3d0 - aCSMaxDurationPerFlow contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x335d350 - aCSMaxPeakBandwidthPerFlow contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x335d2c0 - aCSMaxTokenBucketPerFlow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x335d230 - aCSMaxTokenRatePerFlow contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335d1b0 - aCSMinimumPolicedSize contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x335d130 - aCSMaximumSDUSize contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x335d0b0 - aCSMinimumLatency contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x335d030 - aCSMinimumDelayVariation contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x335cfa0 - aCSPermissionBits contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x335cf20 - aCSPriority contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x335cea0 - aCSServiceType contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x335ce20 - aCSTimeOfDay contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x335cda0 - aCSTotalNoOfFlows contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x335ca60 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335cc30 - ;CN=ACS-Policy,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 116 bytes in 1 blocks (ref 0) d=(nil) 0x335cb50 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x335cae0 - 1.2.840.113556.1.5.137 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335c9e0 - aCSPolicy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x335c960 - ACS-Policy contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x335c8e0 - struct dsdb_class contains 796 bytes in 21 blocks (ref 0) d=(nil) 0x335ba90 - account contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x335c680 - account contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x335c600 - D:(A;;RPWPCRCCDCLCLOLORCWOWDSDDTDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU) contains 97 bytes in 1 blocks (ref 0) d=(nil) 0x335c530 - const char * contains 53 bytes in 3 blocks (ref 0) d=(nil) 0x335be00 - container contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x335c4b0 - organizationalUnit contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x335c430 - const char * contains 100 bytes in 8 blocks (ref 0) d=(nil) 0x335c050 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x335c3b0 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x335c330 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x335c2c0 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x335c250 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x335c1e0 - host contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x335c170 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335c100 - top contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335bfe0 - ;CN=account,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 113 bytes in 1 blocks (ref 0) d=(nil) 0x335bf00 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x335be90 - 0.9.2342.19200300.100.4.5 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x335bd70 - account contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x335bcf0 - account contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x335bc70 - struct dsdb_attribute contains 348 bytes in 9 blocks (ref 0) d=(nil) 0x335b590 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x335ba00 - X509-Cert contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x335b980 - X509-Cert contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x335b900 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335b390 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x335b880 - 2.5.4.36 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x335b800 - userCertificate contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x335b780 - X509-Cert contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x335b700 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x335b020 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x335b500 - x500uniqueIdentifier contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x335b480 - x500uniqueIdentifier contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x335b400 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x335b310 - 2.5.4.45 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x335b290 - x500uniqueIdentifier contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x335b210 - x500uniqueIdentifier contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x335b190 - struct dsdb_attribute contains 356 bytes in 10 blocks (ref 0) d=(nil) 0x335aab0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x335af90 - X121-Address contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x335af10 - X121-Address contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x335ae90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335ae20 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335a8b0 - 2.5.5.6 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x335ada0 - 2.5.4.24 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x335ad20 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x335aca0 - X121-Address contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x335ac20 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x335a550 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x335aa20 - WWW-Page-Other contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x335a9a0 - WWW-Page-Other contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x335a920 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x335a830 - 1.2.840.113556.1.4.749 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335a7b0 - url contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335a740 - WWW-Page-Other contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x335a6c0 - struct dsdb_attribute contains 374 bytes in 10 blocks (ref 0) d=(nil) 0x3359fe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x335a4c0 - WWW-Home-Page contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x335a440 - WWW-Home-Page contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x335a350 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x335a3d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33593e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x335a2d0 - 1.2.840.113556.1.2.464 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x335a250 - wWWHomePage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x335a1d0 - WWW-Home-Page contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x335a150 - struct dsdb_attribute contains 383 bytes in 8 blocks (ref 0) d=(nil) 0x3359ae0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3359f50 - Winsock-Addresses contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3359ed0 - Winsock-Addresses contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3359e50 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3359dd0 - 1.2.840.113556.1.4.142 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3359d50 - winsockAddresses contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3359cd0 - Winsock-Addresses contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3359c50 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x33595e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3359a50 - When-Created contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33599d0 - When-Created contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3359950 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33598d0 - 1.2.840.113556.1.2.2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3359850 - whenCreated contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33597d0 - When-Created contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3359750 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x3359070 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3359550 - When-Changed contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33594d0 - When-Changed contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3359450 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3359360 - 1.2.840.113556.1.2.3 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33592e0 - whenChanged contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3359260 - When-Changed contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33591e0 - struct dsdb_attribute contains 404 bytes in 11 blocks (ref 0) d=(nil) 0x3358b00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3358fe0 - Well-Known-Objects contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3358f60 - Well-Known-Objects contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3358ee0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3358e70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3358400 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2e300b0 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3358df0 - 1.2.840.113556.1.4.618 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3358d70 - wellKnownObjects contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3358cf0 - Well-Known-Objects contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3358c70 - struct dsdb_attribute contains 351 bytes in 8 blocks (ref 0) d=(nil) 0x3358600 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3358a70 - Wbem-Path contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33589f0 - Wbem-Path contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3358970 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33588f0 - 1.2.840.113556.1.4.301 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3358870 - wbemPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33587f0 - Wbem-Path contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3358770 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x3358090 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3358570 - Volume-Count contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33584f0 - Volume-Count contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3358470 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3358380 - 1.2.840.113556.1.4.507 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3358300 - volumeCount contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3358280 - Volume-Count contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3358200 - struct dsdb_attribute contains 393 bytes in 10 blocks (ref 0) d=(nil) 0x3357ab0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3358000 - Vol-Table-Idx-GUID contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3357f80 - Vol-Table-Idx-GUID contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3357e90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3357f10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3357e20 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3357da0 - 1.2.840.113556.1.4.334 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3357d20 - volTableIdxGUID contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3357ca0 - Vol-Table-Idx-GUID contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3357c20 - struct dsdb_attribute contains 378 bytes in 10 blocks (ref 0) d=(nil) 0x3357540 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3357a20 - Vol-Table-GUID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33579a0 - Vol-Table-GUID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33578b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3357930 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3356940 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3357830 - 1.2.840.113556.1.4.336 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33577b0 - volTableGUID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3357730 - Vol-Table-GUID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33576b0 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x3357040 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33574b0 - Version-Number-Lo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3357430 - Version-Number-Lo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33573b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3357330 - 1.2.840.113556.1.4.329 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33572b0 - versionNumberLo contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3357230 - Version-Number-Lo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33571b0 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x3356b40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3356fb0 - Version-Number-Hi contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3356f30 - Version-Number-Hi contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3356eb0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3356e30 - 1.2.840.113556.1.4.328 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3356db0 - versionNumberHi contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3356d30 - Version-Number-Hi contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3356cb0 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x3356650 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3356ab0 - Version-Number contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3356a30 - Version-Number contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33569b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33568c0 - 1.2.840.113556.1.4.141 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3356840 - versionNumber contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33567c0 - Version-Number contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33563f0 - struct dsdb_attribute contains 348 bytes in 10 blocks (ref 0) d=(nil) 0x33560a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33565c0 - Vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3356550 - Vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x33564e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3356470 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3356380 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3356300 - 1.2.840.113556.1.4.255 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3356280 - vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3356210 - Vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x3354060 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x3355b90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3356010 - Valid-Accesses contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3355f90 - Valid-Accesses contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3355f10 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3355e90 - 1.2.840.113556.1.4.1356 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3355e00 - validAccesses contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3355d80 - Valid-Accesses contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3355d00 - struct dsdb_attribute contains 355 bytes in 8 blocks (ref 0) d=(nil) 0x3355690 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3355b00 - USN-Source contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3355a80 - USN-Source contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3355a00 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3355980 - 1.2.840.113556.1.4.896 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3355900 - uSNSource contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3355880 - USN-Source contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3355800 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x3355190 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3355600 - USN-Last-Obj-Rem contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3355580 - USN-Last-Obj-Rem contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3355500 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3355480 - 1.2.840.113556.1.2.121 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3355400 - uSNLastObjRem contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3355380 - USN-Last-Obj-Rem contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3355300 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x3354d10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3355100 - USN-Intersite contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3355080 - USN-Intersite contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3355000 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3354f80 - 1.2.840.113556.1.2.469 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3354f00 - USNIntersite contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3354e80 - USN-Intersite contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3354ae0 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x3354760 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3354c80 - USN-DSA-Last-Obj-Removed contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3354bf0 - USN-DSA-Last-Obj-Removed contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3354b60 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3354a60 - 1.2.840.113556.1.2.267 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33549e0 - uSNDSALastObjRemoved contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3354960 - USN-DSA-Last-Obj-Removed contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33548d0 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x3354260 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33546d0 - USN-Created contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3354650 - USN-Created contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33545d0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3354550 - 1.2.840.113556.1.2.19 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33544d0 - uSNCreated contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3354450 - USN-Created contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33543d0 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x3353cf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33541d0 - USN-Changed contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3354150 - USN-Changed contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33540d0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3353fe0 - 1.2.840.113556.1.2.120 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3353f60 - uSNChanged contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3353ee0 - USN-Changed contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3353e60 - struct dsdb_attribute contains 390 bytes in 10 blocks (ref 0) d=(nil) 0x3353710 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3353c60 - User-Workstations contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3353be0 - User-Workstations contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3353af0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3353b70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3353a80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3353a00 - 1.2.840.113556.1.4.86 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3353980 - userWorkstations contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3353900 - User-Workstations contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3353880 - struct dsdb_attribute contains 407 bytes in 9 blocks (ref 0) d=(nil) 0x3353280 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3353680 - User-SMIME-Certificate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3353600 - User-SMIME-Certificate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3353580 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3352ad0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3353500 - 2.16.840.1.113730.3.140 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3353470 - userSMIMECertificate contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33533f0 - User-SMIME-Certificate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3353050 - struct dsdb_attribute contains 409 bytes in 8 blocks (ref 0) d=(nil) 0x3352cd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33531f0 - User-Shared-Folder-Other contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3353160 - User-Shared-Folder-Other contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33530d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3352fd0 - 1.2.840.113556.1.4.752 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3352f50 - userSharedFolderOther contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3352ed0 - User-Shared-Folder-Other contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3352e40 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x3352760 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3352c40 - User-Shared-Folder contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3352bc0 - User-Shared-Folder contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3352b40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3352a50 - 1.2.840.113556.1.4.751 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33529d0 - userSharedFolder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3352950 - User-Shared-Folder contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33528d0 - struct dsdb_attribute contains 394 bytes in 9 blocks (ref 0) d=(nil) 0x3352260 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33526d0 - User-Principal-Name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3352650 - User-Principal-Name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33525d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3352070 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3352550 - 1.2.840.113556.1.4.656 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33524d0 - userPrincipalName contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3352450 - User-Principal-Name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33523d0 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x3351ce0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3351fe0 - userPKCS12 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33521e0 - userPKCS12 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3352160 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33520e0 - 2.16.840.1.113730.3.1.216 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3351f50 - userPKCS12 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3351ed0 - userPKCS12 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3351e50 - struct dsdb_attribute contains 361 bytes in 10 blocks (ref 0) d=(nil) 0x3351700 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3351c50 - User-Password contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3351bd0 - User-Password contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3351ae0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3351b60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3351a70 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33519f0 - 2.5.4.35 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3351970 - userPassword contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33518f0 - User-Password contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3351870 - struct dsdb_attribute contains 383 bytes in 10 blocks (ref 0) d=(nil) 0x3351190 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3351670 - User-Parameters contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33515f0 - User-Parameters contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3351500 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3351580 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3350f90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3351480 - 1.2.840.113556.1.4.138 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3351400 - userParameters contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3351380 - User-Parameters contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3351300 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x3350c20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3351100 - User-Comment contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3351080 - User-Comment contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3351000 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3350f10 - 1.2.840.113556.1.4.156 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3350e90 - comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3350e10 - User-Comment contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3350d90 - struct dsdb_attribute contains 363 bytes in 10 blocks (ref 0) d=(nil) 0x3350630 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3350930 - userClass contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3350ba0 - userClass contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3350ab0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3350b30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33509c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3350a30 - 0.9.2342.19200300.100.1.8 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33508a0 - userClass contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3350820 - userClass contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33507a0 - struct dsdb_attribute contains 359 bytes in 10 blocks (ref 0) d=(nil) 0x33500c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33505a0 - User-Cert contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3350520 - User-Cert contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3350430 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33504b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334f9c0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33503b0 - 1.2.840.113556.1.4.645 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3350330 - userCert contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33502b0 - User-Cert contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3350230 - struct dsdb_attribute contains 391 bytes in 8 blocks (ref 0) d=(nil) 0x334fbc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3350030 - User-Account-Control contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x334ffb0 - User-Account-Control contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x334ff30 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334feb0 - 1.2.840.113556.1.4.8 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x334fe30 - userAccountControl contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x334fdb0 - User-Account-Control contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x334fd30 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x334f650 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334fb30 - UPN-Suffixes contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334fab0 - UPN-Suffixes contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334fa30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334f940 - 1.2.840.113556.1.4.890 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x334f8c0 - uPNSuffixes contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x334f840 - UPN-Suffixes contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334f7c0 - struct dsdb_attribute contains 402 bytes in 10 blocks (ref 0) d=(nil) 0x334f070 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334f5c0 - Upgrade-Product-Code contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x334f540 - Upgrade-Product-Code contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x334f450 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334f4d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334f3e0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334f360 - 1.2.840.113556.1.4.813 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x334f2e0 - upgradeProductCode contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x334f260 - Upgrade-Product-Code contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x334f1e0 - struct dsdb_attribute contains 381 bytes in 9 blocks (ref 0) d=(nil) 0x334eb00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334efe0 - unstructuredName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334ef60 - unstructuredName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334eee0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334ee70 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334edf0 - 1.2.840.113549.1.9.2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x334ed70 - unstructuredName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334ecf0 - unstructuredName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334ec70 - struct dsdb_attribute contains 394 bytes in 9 blocks (ref 0) d=(nil) 0x334e590 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334ea70 - unstructuredAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x334e9f0 - unstructuredAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x334e970 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334e900 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334e880 - 1.2.840.113549.1.9.8 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x334e800 - unstructuredAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x334e780 - unstructuredAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x334e700 - struct dsdb_attribute contains 389 bytes in 10 blocks (ref 0) d=(nil) 0x334dfa0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334e500 - UnixUserPassword contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334e480 - UnixUserPassword contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334e390 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334e410 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334e320 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334e2a0 - 1.2.840.113556.1.4.1910 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334e210 - unixUserPassword contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334e190 - UnixUserPassword contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334e110 - struct dsdb_attribute contains 380 bytes in 9 blocks (ref 0) d=(nil) 0x334daa0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334df10 - UnixHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x334de90 - UnixHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x334de10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334d8a0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334dd90 - 1.3.6.1.1.1.1.3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x334dd10 - unixHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x334dc90 - UnixHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x334dc10 - struct dsdb_attribute contains 359 bytes in 9 blocks (ref 0) d=(nil) 0x334d530 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334da10 - uniqueMember contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334d990 - uniqueMember contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334d910 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2da5140 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334d820 - 2.5.4.50 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334d7a0 - uniqueMember contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334d720 - uniqueMember contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334d6a0 - struct dsdb_attribute contains 392 bytes in 10 blocks (ref 0) d=(nil) 0x334cfb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334d2b0 - uniqueIdentifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334d4b0 - uniqueIdentifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334d3c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334d440 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334c3b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334d340 - 0.9.2342.19200300.100.1.44 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x334d220 - uniqueIdentifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334d1a0 - uniqueIdentifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334d120 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x334cab0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334cf20 - Unicode-Pwd contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x334cea0 - Unicode-Pwd contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x334ce20 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334cda0 - 1.2.840.113556.1.4.90 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x334cd20 - unicodePwd contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x334cca0 - Unicode-Pwd contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x334cc20 - struct dsdb_attribute contains 347 bytes in 8 blocks (ref 0) d=(nil) 0x334c5b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334ca20 - UNC-Name contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334c9a0 - UNC-Name contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334c920 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334c8a0 - 1.2.840.113556.1.4.137 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x334c820 - uNCName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334c7a0 - UNC-Name contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334c720 - struct dsdb_attribute contains 344 bytes in 8 blocks (ref 0) d=(nil) 0x334c0c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334c520 - UidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x334c4a0 - UidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x334c420 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334c330 - 1.3.6.1.1.1.1.0 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x334c2b0 - uidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x334c230 - UidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x334bf40 - struct dsdb_attribute contains 331 bytes in 8 blocks (ref 0) d=(nil) 0x334bbd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334c030 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334bfc0 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334bed0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334be40 - 0.9.2342.19200300.100.1.1 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x334bdb0 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334bd40 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334afd0 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x334b6d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334bb40 - UAS-Compat contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x334bac0 - UAS-Compat contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x334ba40 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334b9c0 - 1.2.840.113556.1.4.155 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x334b940 - uASCompat contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x334b8c0 - UAS-Compat contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x334b840 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x334b1d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334b640 - Trust-Type contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x334b5c0 - Trust-Type contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x334b540 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334b4c0 - 1.2.840.113556.1.4.136 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x334b440 - trustType contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x334b3c0 - Trust-Type contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x334b340 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x334ac60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334b140 - Trust-Posix-Offset contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x334b0c0 - Trust-Posix-Offset contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x334b040 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334af50 - 1.2.840.113556.1.4.134 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x334aed0 - trustPosixOffset contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x334ae50 - Trust-Posix-Offset contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x334add0 - struct dsdb_attribute contains 375 bytes in 10 blocks (ref 0) d=(nil) 0x334a6f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334abd0 - Trust-Partner contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x334ab50 - Trust-Partner contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x334aa60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x334aae0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3349ff0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x334a9e0 - 1.2.840.113556.1.4.133 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x334a960 - trustPartner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334a8e0 - Trust-Partner contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x334a860 - struct dsdb_attribute contains 372 bytes in 9 blocks (ref 0) d=(nil) 0x334a1f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334a660 - Trust-Parent contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334a5e0 - Trust-Parent contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334a560 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d7cba0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x334a4e0 - 1.2.840.113556.1.4.471 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x334a460 - trustParent contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x334a3e0 - Trust-Parent contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x334a360 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x3349c80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x334a160 - Trust-Direction contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x334a0e0 - Trust-Direction contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x334a060 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3349f70 - 1.2.840.113556.1.4.132 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3349ef0 - trustDirection contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3349e70 - Trust-Direction contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3349df0 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x33496a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3349bf0 - Trust-Auth-Outgoing contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3349b70 - Trust-Auth-Outgoing contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3349a80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3349b00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3349a10 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3349990 - 1.2.840.113556.1.4.135 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3349910 - trustAuthOutgoing contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3349890 - Trust-Auth-Outgoing contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3349810 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x3349130 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3349610 - Trust-Auth-Incoming contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3349590 - Trust-Auth-Incoming contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33494a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3349520 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3348030 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3349420 - 1.2.840.113556.1.4.129 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33493a0 - trustAuthIncoming contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3349320 - Trust-Auth-Incoming contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33492a0 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x3348c30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33490a0 - Trust-Attributes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3349020 - Trust-Attributes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3348fa0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3348f20 - 1.2.840.113556.1.4.470 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3348ea0 - trustAttributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3348e20 - Trust-Attributes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3348da0 - struct dsdb_attribute contains 351 bytes in 8 blocks (ref 0) d=(nil) 0x3348730 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3348ba0 - Tree-Name contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3348b20 - Tree-Name contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3348aa0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3348a20 - 1.2.840.113556.1.4.660 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33489a0 - treeName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3348920 - Tree-Name contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33488a0 - struct dsdb_attribute contains 365 bytes in 8 blocks (ref 0) d=(nil) 0x3348230 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33486a0 - Treat-As-Leaf contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3348620 - Treat-As-Leaf contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33485a0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3348520 - 1.2.840.113556.1.4.806 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33484a0 - treatAsLeaf contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3348420 - Treat-As-Leaf contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33483a0 - struct dsdb_attribute contains 380 bytes in 9 blocks (ref 0) d=(nil) 0x3347cc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33481a0 - Transport-Type contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3348120 - Transport-Type contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33480a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d57ea0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3347fb0 - 1.2.840.113556.1.4.791 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3347f30 - transportType contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3347eb0 - Transport-Type contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3347e30 - struct dsdb_attribute contains 394 bytes in 10 blocks (ref 0) d=(nil) 0x3347750 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3347c30 - Transport-DLL-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3347bb0 - Transport-DLL-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3347ac0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3347b40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3346070 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3347a40 - 1.2.840.113556.1.4.789 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33479c0 - transportDLLName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3347940 - Transport-DLL-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33478c0 - struct dsdb_attribute contains 421 bytes in 8 blocks (ref 0) d=(nil) 0x3347210 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33476c0 - Transport-Address-Attribute contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3347630 - Transport-Address-Attribute contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33475a0 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3347520 - 1.2.840.113556.1.4.895 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33474a0 - transportAddressAttribute contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3347410 - Transport-Address-Attribute contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3347380 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x3346d90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3347180 - Tombstone-Lifetime contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3347100 - Tombstone-Lifetime contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3347080 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3347000 - 1.2.840.113556.1.2.54 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3346f80 - tombstoneLifetime contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3346f00 - Tombstone-Lifetime contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3346b60 - struct dsdb_attribute contains 429 bytes in 8 blocks (ref 0) d=(nil) 0x3346840 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3346d00 - Token-Groups-No-GC-Acceptable contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x3346c70 - Token-Groups-No-GC-Acceptable contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x3346be0 - 2.5.5.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3346610 - 1.2.840.113556.1.4.1303 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3346ad0 - tokenGroupsNoGCAcceptable contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3346a40 - Token-Groups-No-GC-Acceptable contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x33469b0 - struct dsdb_attribute contains 445 bytes in 8 blocks (ref 0) d=(nil) 0x3346270 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33467b0 - Token-Groups-Global-And-Universal contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x3346720 - Token-Groups-Global-And-Universal contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x3346690 - 2.5.5.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3346590 - 1.2.840.113556.1.4.1418 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3346500 - tokenGroupsGlobalAndUniversal contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x3346470 - Token-Groups-Global-And-Universal contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x33463e0 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x3345d70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33461e0 - Token-Groups contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3346160 - Token-Groups contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33460e0 - 2.5.5.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3345ff0 - 1.2.840.113556.1.4.1301 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3345f60 - tokenGroups contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3345ee0 - Token-Groups contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3345b10 - struct dsdb_attribute contains 330 bytes in 10 blocks (ref 0) d=(nil) 0x33457c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3345ce0 - Title contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x3345c70 - Title contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x3345c00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3345b90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3345aa0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3345a20 - 2.5.4.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33459a0 - title contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x3345930 - Title contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x33450c0 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x33452c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3345730 - Time-Vol-Change contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33456b0 - Time-Vol-Change contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3345630 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33455b0 - 1.2.840.113556.1.4.502 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3345530 - timeVolChange contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33454b0 - Time-Vol-Change contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3345430 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x3344dd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3345230 - Time-Refresh contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33451b0 - Time-Refresh contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3345130 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3345040 - 1.2.840.113556.1.4.503 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3344fc0 - timeRefresh contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3344f40 - Time-Refresh contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3344b30 - struct dsdb_attribute contains 416 bytes in 10 blocks (ref 0) d=(nil) 0x3344720 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3344d40 - Text-Encoded-OR-Address contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3344cb0 - Text-Encoded-OR-Address contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3344c20 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3344bb0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3344ac0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3344a30 - 0.9.2342.19200300.100.1.2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33449a0 - textEncodedORAddress contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3344920 - Text-Encoded-OR-Address contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3344890 - struct dsdb_attribute contains 362 bytes in 10 blocks (ref 0) d=(nil) 0x3344150 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3344690 - Text-Country contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3344610 - Text-Country contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3344520 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33445a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33444b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3344430 - 1.2.840.113556.1.2.131 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33443b0 - co contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3344340 - Text-Country contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33442c0 - struct dsdb_attribute contains 379 bytes in 9 blocks (ref 0) d=(nil) 0x3343c50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33440c0 - Terminal-Server contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3344040 - Terminal-Server contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3343fc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3343540 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3343f40 - 1.2.840.113556.1.4.885 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3343ec0 - terminalServer contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3343e40 - Terminal-Server contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3343dc0 - struct dsdb_attribute contains 385 bytes in 9 blocks (ref 0) d=(nil) 0x3343740 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3343bc0 - Template-Roots2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3343b40 - Template-Roots2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3343ac0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d2ab50 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3343a40 - 1.2.840.113556.1.4.2048 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33439b0 - templateRoots2 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3343930 - Template-Roots2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33438b0 - struct dsdb_attribute contains 381 bytes in 9 blocks (ref 0) d=(nil) 0x33431c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33436b0 - Template-Roots contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3343630 - Template-Roots contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33435b0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d1dfb0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33434c0 - 1.2.840.113556.1.4.1346 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3343430 - templateRoots contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33433b0 - Template-Roots contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3343330 - struct dsdb_attribute contains 381 bytes in 10 blocks (ref 0) d=(nil) 0x3342be0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3343130 - Telex-Primary contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33430b0 - Telex-Primary contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3342fc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3343040 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3342f50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3342ed0 - 1.2.840.113556.1.4.648 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3342e50 - primaryTelexNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3342dd0 - Telex-Primary contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3342d50 - struct dsdb_attribute contains 357 bytes in 10 blocks (ref 0) d=(nil) 0x33426f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3342b50 - Telex-Number contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3342ad0 - Telex-Number contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33429e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3342a60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3342450 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3342960 - 2.5.4.21 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33428e0 - telexNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3342860 - Telex-Number contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33424c0 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x33420c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3342660 - Teletex-Terminal-Identifier contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33425d0 - Teletex-Terminal-Identifier contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3342540 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33423d0 - 2.5.4.22 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3342350 - teletexTerminalIdentifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x33422c0 - Teletex-Terminal-Identifier contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3342230 - struct dsdb_attribute contains 373 bytes in 10 blocks (ref 0) d=(nil) 0x3341b50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3342030 - Telephone-Number contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3341fb0 - Telephone-Number contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3341ec0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3341f40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x333ec50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3341e40 - 2.5.4.20 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3341dc0 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3341d40 - Telephone-Number contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3341cc0 - struct dsdb_attribute contains 397 bytes in 8 blocks (ref 0) d=(nil) 0x3341650 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3341ac0 - System-Poss-Superiors contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3341a40 - System-Poss-Superiors contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33419c0 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3341940 - 1.2.840.113556.1.4.195 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33418c0 - systemPossSuperiors contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3341840 - System-Poss-Superiors contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33417c0 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x3341150 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33415c0 - System-Only contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3341540 - System-Only contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33414c0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3341440 - 1.2.840.113556.1.4.170 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33413c0 - systemOnly contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3341340 - System-Only contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33412c0 - struct dsdb_attribute contains 389 bytes in 8 blocks (ref 0) d=(nil) 0x3340c50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33410c0 - System-Must-Contain contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3341040 - System-Must-Contain contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3340fc0 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3340f40 - 1.2.840.113556.1.4.197 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3340ec0 - systemMustContain contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3340e40 - System-Must-Contain contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3340dc0 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x3340750 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3340bc0 - System-May-Contain contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3340b40 - System-May-Contain contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3340ac0 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3340a40 - 1.2.840.113556.1.4.196 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33409c0 - systemMayContain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3340940 - System-May-Contain contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33408c0 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x3340250 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33406c0 - System-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3340640 - System-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33405c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3340540 - 1.2.840.113556.1.4.375 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33404c0 - systemFlags contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3340440 - System-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33403c0 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x333fd50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33401c0 - System-Auxiliary-Class contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3340140 - System-Auxiliary-Class contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33400c0 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3340040 - 1.2.840.113556.1.4.198 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333ffc0 - systemAuxiliaryClass contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x333ff40 - System-Auxiliary-Class contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333fec0 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x333f850 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333fcc0 - Sync-With-SID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x333fc40 - Sync-With-SID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x333fbc0 - 2.5.5.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333fb40 - 1.2.840.113556.1.4.667 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333fac0 - syncWithSID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x333fa40 - Sync-With-SID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x333f9c0 - struct dsdb_attribute contains 387 bytes in 9 blocks (ref 0) d=(nil) 0x333f350 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333f7c0 - Sync-With-Object contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x333f740 - Sync-With-Object contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x333f6c0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2ced360 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333f640 - 1.2.840.113556.1.4.664 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333f5c0 - syncWithObject contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x333f540 - Sync-With-Object contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x333f4c0 - struct dsdb_attribute contains 384 bytes in 9 blocks (ref 0) d=(nil) 0x333ee50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333f2c0 - Sync-Membership contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x333f240 - Sync-Membership contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x333f1c0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2cf1680 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333f140 - 1.2.840.113556.1.4.665 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333f0c0 - syncMembership contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x333f040 - Sync-Membership contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x333efc0 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x333e8e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333edc0 - Sync-Attributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x333ed40 - Sync-Attributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x333ecc0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333ebd0 - 1.2.840.113556.1.4.666 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333eb50 - syncAttributes contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x333ead0 - Sync-Attributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x333ea50 - struct dsdb_attribute contains 332 bytes in 10 blocks (ref 0) d=(nil) 0x333e400 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333e850 - Surname contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333e7d0 - Surname contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333e6e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x333e760 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x333e5f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333e660 - 2.5.4.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333e570 - sn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x333b8b0 - Surname contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333e1d0 - struct dsdb_attribute contains 416 bytes in 8 blocks (ref 0) d=(nil) 0x333dec0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333e370 - Supported-Application-Context contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x333e2e0 - Supported-Application-Context contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x333e250 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333e150 - 2.5.4.30 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333dc90 - supportedApplicationContext contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x333e0c0 - Supported-Application-Context contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x333e030 - struct dsdb_attribute contains 411 bytes in 8 blocks (ref 0) d=(nil) 0x333d900 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333de30 - Supplemental-Credentials contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x333dda0 - Supplemental-Credentials contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x333dd10 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333dc10 - 1.2.840.113556.1.4.125 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333db90 - supplementalCredentials contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333db00 - Supplemental-Credentials contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x333da70 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x333d480 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333d870 - Super-Scopes contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x333d7f0 - Super-Scopes contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x333d770 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333d6f0 - 1.2.840.113556.1.4.710 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333d670 - superScopes contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x333d5f0 - Super-Scopes contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x333d250 - struct dsdb_attribute contains 406 bytes in 8 blocks (ref 0) d=(nil) 0x333ced0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333d3f0 - Super-Scope-Description contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333d360 - Super-Scope-Description contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333d2d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333d1d0 - 1.2.840.113556.1.4.711 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333d150 - superScopeDescription contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x333d0d0 - Super-Scope-Description contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333d040 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x333c9d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333ce40 - Superior-DNS-Root contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333cdc0 - Superior-DNS-Root contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333cd40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333ccc0 - 1.2.840.113556.1.4.532 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333cc40 - superiorDNSRoot contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x333cbc0 - Superior-DNS-Root contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333cb40 - struct dsdb_attribute contains 380 bytes in 9 blocks (ref 0) d=(nil) 0x333c4d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333c940 - SubSchemaSubEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333c8c0 - SubSchemaSubEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333c840 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2cd11b0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333c7c0 - 2.5.18.10 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x333c740 - subSchemaSubEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333c6c0 - SubSchemaSubEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333c640 - struct dsdb_attribute contains 354 bytes in 9 blocks (ref 0) d=(nil) 0x333bfd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333c440 - Sub-Refs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333c3c0 - Sub-Refs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333c340 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2ccce40 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333c2c0 - 1.2.840.113556.1.2.7 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x333c240 - subRefs contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333c1c0 - Sub-Refs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333c140 - struct dsdb_attribute contains 360 bytes in 8 blocks (ref 0) d=(nil) 0x333bad0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333bf40 - Sub-Class-Of contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x333bec0 - Sub-Class-Of contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x333be40 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333bdc0 - 1.2.840.113556.1.2.21 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x333bd40 - subClassOf contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x333bcc0 - Sub-Class-Of contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x333bc40 - struct dsdb_attribute contains 391 bytes in 8 blocks (ref 0) d=(nil) 0x333b530 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333ba40 - Structural-Object-Class contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333b9b0 - Structural-Object-Class contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333b920 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333b830 - 2.5.21.9 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333b7b0 - structuralObjectClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x333b730 - Structural-Object-Class contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333b6a0 - struct dsdb_attribute contains 357 bytes in 10 blocks (ref 0) d=(nil) 0x333af60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333b4a0 - Street-Address contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x333b420 - Street-Address contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x333b330 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x333b3b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x333b240 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333b2b0 - 2.5.4.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333b1c0 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x333b150 - Street-Address contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x333b0d0 - struct dsdb_attribute contains 377 bytes in 10 blocks (ref 0) d=(nil) 0x333aa00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333aed0 - State-Or-Province-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333ae50 - State-Or-Province-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333ad60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x333ade0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x333ac70 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333ace0 - 2.5.4.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x333abf0 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x33389f0 - State-Or-Province-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333ab70 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x333a4f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333a970 - SPN-Mappings contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x333a8f0 - SPN-Mappings contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x333a870 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333a7f0 - 1.2.840.113556.1.4.1347 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333a760 - sPNMappings contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x333a6e0 - SPN-Mappings contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x333a660 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x3339ff0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x333a460 - SMTP-Mail-Address contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333a3e0 - SMTP-Mail-Address contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333a360 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x333a2e0 - 1.2.840.113556.1.4.786 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x333a260 - mailAddress contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x333a1e0 - SMTP-Mail-Address contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x333a160 - struct dsdb_attribute contains 368 bytes in 9 blocks (ref 0) d=(nil) 0x3339af0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3339f60 - Site-Server contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3339ee0 - Site-Server contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3339e60 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2cafbf0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3339de0 - 1.2.840.113556.1.4.494 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3339d60 - siteServer contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3339ce0 - Site-Server contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3339c60 - struct dsdb_attribute contains 379 bytes in 9 blocks (ref 0) d=(nil) 0x33395f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3339a60 - Site-Object-BL contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33399e0 - Site-Object-BL contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3339960 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2cabbf0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33398e0 - 1.2.840.113556.1.4.513 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3339860 - siteObjectBL contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33397e0 - Site-Object-BL contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3339760 - struct dsdb_attribute contains 368 bytes in 9 blocks (ref 0) d=(nil) 0x33390f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3339560 - Site-Object contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33394e0 - Site-Object contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3339460 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2ca78d0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33393e0 - 1.2.840.113556.1.4.512 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3339360 - siteObject contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33392e0 - Site-Object contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3339260 - struct dsdb_attribute contains 360 bytes in 9 blocks (ref 0) d=(nil) 0x3338bf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3339060 - Site-List contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3338fe0 - Site-List contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3338f60 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2ca3570 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3338ee0 - 1.2.840.113556.1.4.821 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3338e60 - siteList contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3338de0 - Site-List contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3338d60 - struct dsdb_attribute contains 379 bytes in 9 blocks (ref 0) d=(nil) 0x3338680 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3338b60 - Site-Link-List contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3338ae0 - Site-Link-List contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3338a60 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2c9f260 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3338970 - 1.2.840.113556.1.4.822 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33388f0 - siteLinkList contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3338870 - Site-Link-List contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33387f0 - struct dsdb_attribute contains 359 bytes in 10 blocks (ref 0) d=(nil) 0x3338110 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33385f0 - Site-GUID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3338570 - Site-GUID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3338480 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3338500 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33333d0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3338400 - 1.2.840.113556.1.4.362 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3338380 - siteGUID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3338300 - Site-GUID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3338280 - struct dsdb_attribute contains 395 bytes in 8 blocks (ref 0) d=(nil) 0x3337c10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3338080 - Signature-Algorithms contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3338000 - Signature-Algorithms contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3337f80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3337f00 - 1.2.840.113556.1.4.824 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3337e80 - signatureAlgorithms contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3337e00 - Signature-Algorithms contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3337d80 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x3337710 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3337b80 - SID-History contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3337b00 - SID-History contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3337a80 - 2.5.5.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3337a00 - 1.2.840.113556.1.4.609 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3337980 - sIDHistory contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3337900 - SID-History contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3337880 - struct dsdb_attribute contains 415 bytes in 8 blocks (ref 0) d=(nil) 0x33371e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3337680 - Show-In-Advanced-View-Only contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33375f0 - Show-In-Advanced-View-Only contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3337560 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33374e0 - 1.2.840.113556.1.2.169 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3337460 - showInAdvancedViewOnly contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33373e0 - Show-In-Advanced-View-Only contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x3337350 - struct dsdb_attribute contains 402 bytes in 9 blocks (ref 0) d=(nil) 0x3336ce0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3337150 - Show-In-Address-Book contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33370d0 - Show-In-Address-Book contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3337050 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2c8a820 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3336fd0 - 1.2.840.113556.1.4.644 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3336f50 - showInAddressBook contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3336ed0 - Show-In-Address-Book contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3336e50 - struct dsdb_attribute contains 383 bytes in 8 blocks (ref 0) d=(nil) 0x33367d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3336c50 - Short-Server-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3336bd0 - Short-Server-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3336b50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3336ad0 - 1.2.840.113556.1.4.1209 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3336a40 - shortServerName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33369c0 - Short-Server-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3336940 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x33362d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3336740 - Shell-Property-Pages contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33366c0 - Shell-Property-Pages contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3336640 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33365c0 - 1.2.840.113556.1.4.563 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3336540 - shellPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33364c0 - Shell-Property-Pages contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3336440 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x3335dd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3336240 - Shell-Context-Menu contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33361c0 - Shell-Context-Menu contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3336140 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33360c0 - 1.2.840.113556.1.4.615 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3336040 - shellContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3335fc0 - Shell-Context-Menu contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3335f40 - struct dsdb_attribute contains 360 bytes in 8 blocks (ref 0) d=(nil) 0x33358d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3335d40 - ShadowWarning contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3335cc0 - ShadowWarning contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3335c40 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3335bc0 - 1.3.6.1.1.1.1.8 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3335b40 - shadowWarning contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3335ac0 - ShadowWarning contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3335a40 - struct dsdb_attribute contains 344 bytes in 8 blocks (ref 0) d=(nil) 0x33353d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3335840 - ShadowMin contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33357c0 - ShadowMin contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3335740 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33356c0 - 1.3.6.1.1.1.1.6 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3335640 - shadowMin contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33355c0 - ShadowMin contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3335540 - struct dsdb_attribute contains 344 bytes in 8 blocks (ref 0) d=(nil) 0x3334ed0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3335340 - ShadowMax contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33352c0 - ShadowMax contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3335240 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33351c0 - 1.3.6.1.1.1.1.7 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3335140 - shadowMax contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33350c0 - ShadowMax contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3335040 - struct dsdb_attribute contains 372 bytes in 8 blocks (ref 0) d=(nil) 0x33349d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3334e40 - ShadowLastChange contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3334dc0 - ShadowLastChange contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3334d40 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3334cc0 - 1.3.6.1.1.1.1.5 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3334c40 - shadowLastChange contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3334bc0 - ShadowLastChange contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3334b40 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x33344d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3334940 - ShadowInactive contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33348c0 - ShadowInactive contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3334840 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33347c0 - 1.3.6.1.1.1.1.9 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3334740 - shadowInactive contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33346c0 - ShadowInactive contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3334640 - struct dsdb_attribute contains 349 bytes in 8 blocks (ref 0) d=(nil) 0x3333fd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3334440 - ShadowFlag contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33343c0 - ShadowFlag contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3334340 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33342c0 - 1.3.6.1.1.1.1.11 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3334240 - shadowFlag contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33341c0 - ShadowFlag contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3334140 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x3333ad0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3333f40 - ShadowExpire contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3333ec0 - ShadowExpire contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3333e40 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3333dc0 - 1.3.6.1.1.1.1.10 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3333d40 - shadowExpire contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3333cc0 - ShadowExpire contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3333c40 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x33335d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3333a40 - Setup-Command contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33339c0 - Setup-Command contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3333940 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33338c0 - 1.2.840.113556.1.4.325 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3333840 - setupCommand contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33337c0 - Setup-Command contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3333740 - struct dsdb_attribute contains 402 bytes in 8 blocks (ref 0) d=(nil) 0x33330e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3333540 - Service-Principal-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33334c0 - Service-Principal-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3333440 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3333350 - 1.2.840.113556.1.4.771 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33332d0 - servicePrincipalName contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3333250 - Service-Principal-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3332e40 - struct dsdb_attribute contains 418 bytes in 10 blocks (ref 0) d=(nil) 0x3332a50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3333050 - Service-Instance-Version contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3332fc0 - Service-Instance-Version contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3332f30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3332ec0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3332dd0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3332d50 - 1.2.840.113556.1.4.199 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3332cd0 - serviceInstanceVersion contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3332c50 - Service-Instance-Version contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3332bc0 - struct dsdb_attribute contains 405 bytes in 10 blocks (ref 0) d=(nil) 0x33324e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33329c0 - Service-DNS-Name-Type contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3332940 - Service-DNS-Name-Type contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3332850 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33328d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x332faa0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33327d0 - 1.2.840.113556.1.4.659 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3332750 - serviceDNSNameType contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33326d0 - Service-DNS-Name-Type contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3332650 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x3331fe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3332450 - Service-DNS-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33323d0 - Service-DNS-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3332350 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33322d0 - 1.2.840.113556.1.4.657 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3332250 - serviceDNSName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33321d0 - Service-DNS-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3332150 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x3331ae0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3331f50 - Service-Class-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3331ed0 - Service-Class-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3331e50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3331dd0 - 1.2.840.113556.1.4.509 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3331d50 - serviceClassName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3331cd0 - Service-Class-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3331c50 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x33315e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3331a50 - Service-Class-Info contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33319d0 - Service-Class-Info contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3331950 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33318d0 - 1.2.840.113556.1.4.123 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3331850 - serviceClassInfo contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33317d0 - Service-Class-Info contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3331750 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x3331160 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3331550 - Service-Class-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33314d0 - Service-Class-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3331450 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33313d0 - 1.2.840.113556.1.4.122 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3331350 - serviceClassID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33312d0 - Service-Class-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3330f30 - struct dsdb_attribute contains 422 bytes in 8 blocks (ref 0) d=(nil) 0x3330ba0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33310d0 - Service-Binding-Information contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3331040 - Service-Binding-Information contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3330fb0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3330eb0 - 1.2.840.113556.1.4.510 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3330e30 - serviceBindingInformation contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3330da0 - Service-Binding-Information contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3330d10 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x33306a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3330b10 - Server-State contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3330a90 - Server-State contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3330a10 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3330990 - 1.2.840.113556.1.4.154 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3330910 - serverState contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3330890 - Server-State contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3330810 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x33301a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3330610 - Server-Role contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3330590 - Server-Role contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3330510 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3330490 - 1.2.840.113556.1.4.157 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3330410 - serverRole contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3330390 - Server-Role contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3330310 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x332fca0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3330110 - Server-Reference-BL contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3330090 - Server-Reference-BL contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3330010 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2c33cf0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332ff90 - 1.2.840.113556.1.4.516 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332ff10 - serverReferenceBL contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x332fe90 - Server-Reference-BL contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x332fe10 - struct dsdb_attribute contains 388 bytes in 9 blocks (ref 0) d=(nil) 0x332f730 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332fc10 - Server-Reference contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x332fb90 - Server-Reference contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x332fb10 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2c2f9c0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332fa20 - 1.2.840.113556.1.4.515 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332f9a0 - serverReference contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x332f920 - Server-Reference contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x332f8a0 - struct dsdb_attribute contains 367 bytes in 10 blocks (ref 0) d=(nil) 0x332f150 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332f6a0 - Server-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332f620 - Server-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332f530 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x332f5b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x332f4c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332f440 - 1.2.840.113556.1.4.223 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332f3c0 - serverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x332f340 - Server-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332f2c0 - struct dsdb_attribute contains 359 bytes in 10 blocks (ref 0) d=(nil) 0x332ebe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332f0c0 - Serial-Number contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x332f040 - Serial-Number contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x332efc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x332ef50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x332d5d0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332eed0 - 2.5.4.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332ee50 - serialNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x332edd0 - Serial-Number contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x332ed50 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x332e6e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332eb50 - Seq-Notification contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x332ead0 - Seq-Notification contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x332ea50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332e9d0 - 1.2.840.113556.1.4.504 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332e950 - seqNotification contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x332e8d0 - Seq-Notification contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x332e850 - struct dsdb_attribute contains 342 bytes in 9 blocks (ref 0) d=(nil) 0x332e1e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332e650 - See-Also contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332e5d0 - See-Also contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332e550 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2c1f020 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332e4d0 - 2.5.4.34 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332e450 - seeAlso contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332e3d0 - See-Also contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332e350 - struct dsdb_attribute contains 391 bytes in 8 blocks (ref 0) d=(nil) 0x332dce0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332e150 - Security-Identifier contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x332e0d0 - Security-Identifier contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x332e050 - 2.5.5.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332dfd0 - 1.2.840.113556.1.4.121 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332df50 - securityIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x332ded0 - Security-Identifier contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x332de50 - struct dsdb_attribute contains 365 bytes in 9 blocks (ref 0) d=(nil) 0x332d7d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332dad0 - secretary contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x332dc60 - secretary contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x332dbe0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2c16d90 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332db60 - 0.9.2342.19200300.100.1.21 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x332da40 - secretary contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x332d9c0 - secretary contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x332d940 - struct dsdb_attribute contains 349 bytes in 8 blocks (ref 0) d=(nil) 0x332d260 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332d740 - Search-Guide contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x332d6c0 - Search-Guide contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x332d640 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332d550 - 2.5.4.14 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332d4d0 - searchGuide contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332d450 - Search-Guide contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x332d3d0 - struct dsdb_attribute contains 366 bytes in 9 blocks (ref 0) d=(nil) 0x332cd60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332d1d0 - Search-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x332d150 - Search-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x332d0d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x332b240 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332d050 - 1.2.840.113556.1.2.334 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332cfd0 - searchFlags contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332cf50 - Search-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x332ced0 - struct dsdb_attribute contains 390 bytes in 8 blocks (ref 0) d=(nil) 0x332c850 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332ccd0 - SD-Rights-Effective contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x332cc50 - SD-Rights-Effective contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x332cbd0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332cb50 - 1.2.840.113556.1.4.1304 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332cac0 - sDRightsEffective contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x332ca40 - SD-Rights-Effective contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x332c9c0 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x332c350 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332c7c0 - Script-Path contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332c740 - Script-Path contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332c6c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332c640 - 1.2.840.113556.1.4.62 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x332c5c0 - scriptPath contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x332c540 - Script-Path contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332c4c0 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x332be40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332c2c0 - Scope-Flags contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332c240 - Scope-Flags contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332c1c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332c140 - 1.2.840.113556.1.4.1354 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332c0b0 - scopeFlags contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x332c030 - Scope-Flags contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332bfb0 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x332b940 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332bdb0 - Schema-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x332bd30 - Schema-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x332bcb0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332bc30 - 1.2.840.113556.1.2.471 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332bbb0 - schemaVersion contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x332bb30 - Schema-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x332bab0 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x332b440 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332b8b0 - Schema-Update contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x332b830 - Schema-Update contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x332b7b0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332b730 - 1.2.840.113556.1.4.481 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332b6b0 - schemaUpdate contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x332b630 - Schema-Update contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x332b5b0 - struct dsdb_attribute contains 360 bytes in 8 blocks (ref 0) d=(nil) 0x332aec0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332b3b0 - Schema-Info contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332b330 - Schema-Info contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332b2b0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332b1c0 - 1.2.840.113556.1.4.1358 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332b130 - schemaInfo contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x332b0b0 - Schema-Info contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x332b030 - struct dsdb_attribute contains 378 bytes in 10 blocks (ref 0) d=(nil) 0x332a950 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332ae30 - Schema-ID-GUID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x332adb0 - Schema-ID-GUID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x332acc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x332ad40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x332a250 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332ac40 - 1.2.840.113556.1.4.148 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332abc0 - schemaIDGUID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x332ab40 - Schema-ID-GUID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x332aac0 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x332a450 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332a8c0 - Schema-Flags-Ex contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x332a840 - Schema-Flags-Ex contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x332a7c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x332a740 - 1.2.840.113556.1.4.120 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332a6c0 - schemaFlagsEx contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x332a640 - Schema-Flags-Ex contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x332a5c0 - struct dsdb_attribute contains 348 bytes in 8 blocks (ref 0) d=(nil) 0x3329ee0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x332a3c0 - Schedule contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332a340 - Schedule contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332a2c0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332a1d0 - 1.2.840.113556.1.4.211 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x332a150 - schedule contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332a0d0 - Schedule contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x332a050 - struct dsdb_attribute contains 391 bytes in 9 blocks (ref 0) d=(nil) 0x33299d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3329e50 - SAM-Domain-Updates contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3329dd0 - SAM-Domain-Updates contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3329d50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33297d0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3329cd0 - 1.2.840.113556.1.4.1969 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3329c40 - samDomainUpdates contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3329bc0 - SAM-Domain-Updates contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3329b40 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x3329460 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3329940 - SAM-Account-Type contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33298c0 - SAM-Account-Type contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3329840 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3329750 - 1.2.840.113556.1.4.302 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33296d0 - sAMAccountType contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3329650 - SAM-Account-Type contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33295d0 - struct dsdb_attribute contains 386 bytes in 10 blocks (ref 0) d=(nil) 0x3328ef0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33293d0 - SAM-Account-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3329350 - SAM-Account-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3329260 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33292e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33250e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33291e0 - 1.2.840.113556.1.4.221 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3329160 - sAMAccountName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33290e0 - SAM-Account-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3329060 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x33289f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3328e60 - rpc-Ns-Transfer-Syntax contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3328de0 - rpc-Ns-Transfer-Syntax contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3328d60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3328ce0 - 1.2.840.113556.1.4.314 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3328c60 - rpcNsTransferSyntax contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3328be0 - rpc-Ns-Transfer-Syntax contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3328b60 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x33284f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3328960 - rpc-Ns-Profile-Entry contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33288e0 - rpc-Ns-Profile-Entry contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3328860 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33287e0 - 1.2.840.113556.1.4.118 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3328760 - rpcNsProfileEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33286e0 - rpc-Ns-Profile-Entry contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3328660 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x3327ff0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3328460 - rpc-Ns-Priority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33283e0 - rpc-Ns-Priority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3328360 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33282e0 - 1.2.840.113556.1.4.117 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3328260 - rpcNsPriority contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33281e0 - rpc-Ns-Priority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3328160 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x3327af0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3327f60 - rpc-Ns-Object-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3327ee0 - rpc-Ns-Object-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3327e60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3327de0 - 1.2.840.113556.1.4.312 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3327d60 - rpcNsObjectID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3327ce0 - rpc-Ns-Object-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3327c60 - struct dsdb_attribute contains 389 bytes in 8 blocks (ref 0) d=(nil) 0x33275f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3327a60 - rpc-Ns-Interface-ID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33279e0 - rpc-Ns-Interface-ID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3327960 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33278e0 - 1.2.840.113556.1.4.115 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3327860 - rpcNsInterfaceID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33277e0 - rpc-Ns-Interface-ID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3327760 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x33270f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3327560 - rpc-Ns-Group contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33274e0 - rpc-Ns-Group contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3327460 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33273e0 - 1.2.840.113556.1.4.114 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3327360 - rpcNsGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33272e0 - rpc-Ns-Group contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3327260 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x3326bf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3327060 - rpc-Ns-Entry-Flags contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3326fe0 - rpc-Ns-Entry-Flags contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3326f60 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3326ee0 - 1.2.840.113556.1.4.754 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3326e60 - rpcNsEntryFlags contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3326de0 - rpc-Ns-Entry-Flags contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3326d60 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x33266f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3326b60 - rpc-Ns-Codeset contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3326ae0 - rpc-Ns-Codeset contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3326a60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33269e0 - 1.2.840.113556.1.4.367 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3326960 - rpcNsCodeset contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33268e0 - rpc-Ns-Codeset contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3326860 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x33261f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3326660 - rpc-Ns-Bindings contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33265e0 - rpc-Ns-Bindings contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3326560 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33264e0 - 1.2.840.113556.1.4.113 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3326460 - rpcNsBindings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33263e0 - rpc-Ns-Bindings contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3326360 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x3325cf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3326160 - rpc-Ns-Annotation contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33260e0 - rpc-Ns-Annotation contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3326060 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3325fe0 - 1.2.840.113556.1.4.366 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3325f60 - rpcNsAnnotation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3325ee0 - rpc-Ns-Annotation contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3325e60 - struct dsdb_attribute contains 364 bytes in 9 blocks (ref 0) d=(nil) 0x33257f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3325c60 - Root-Trust contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3325be0 - Root-Trust contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3325b60 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2bb2ad0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3325ae0 - 1.2.840.113556.1.4.674 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3325a60 - rootTrust contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33259e0 - Root-Trust contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3325960 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x33252e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3325760 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33256e0 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3325660 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33255e0 - 0.9.2342.19200300.100.1.6 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3325550 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33254d0 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3325450 - struct dsdb_attribute contains 362 bytes in 9 blocks (ref 0) d=(nil) 0x3324d70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3325250 - Role-Occupant contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33251d0 - Role-Occupant contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3325150 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2baac80 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3325060 - 2.5.4.33 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3324fe0 - roleOccupant contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3324f60 - Role-Occupant contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3324ee0 - struct dsdb_attribute contains 367 bytes in 10 blocks (ref 0) d=(nil) 0x3324800 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3324ce0 - Rights-Guid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3324c60 - Rights-Guid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3324b70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3324bf0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33227c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3324af0 - 1.2.840.113556.1.4.340 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3324a70 - rightsGuid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33249f0 - Rights-Guid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3324970 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x3324300 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3324770 - RID-Used-Pool contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33246f0 - RID-Used-Pool contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3324670 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33245f0 - 1.2.840.113556.1.4.373 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3324570 - rIDUsedPool contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33244f0 - RID-Used-Pool contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3324470 - struct dsdb_attribute contains 395 bytes in 9 blocks (ref 0) d=(nil) 0x3323e80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3324270 - RID-Set-References contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33241f0 - RID-Set-References contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3324170 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2b9e4e0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33240f0 - 1.2.840.113556.1.4.669 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3324070 - rIDSetReferences contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3323ff0 - RID-Set-References contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3323c50 - struct dsdb_attribute contains 425 bytes in 8 blocks (ref 0) d=(nil) 0x33238c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3323df0 - RID-Previous-Allocation-Pool contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3323d60 - RID-Previous-Allocation-Pool contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3323cd0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3323bd0 - 1.2.840.113556.1.4.372 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3323b50 - rIDPreviousAllocationPool contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3323ac0 - RID-Previous-Allocation-Pool contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3323a30 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x33233c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3323830 - RID-Next-RID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33237b0 - RID-Next-RID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3323730 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33236b0 - 1.2.840.113556.1.4.374 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3323630 - rIDNextRID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33235b0 - RID-Next-RID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3323530 - struct dsdb_attribute contains 407 bytes in 9 blocks (ref 0) d=(nil) 0x3322ec0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3323330 - RID-Manager-Reference contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33232b0 - RID-Manager-Reference contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3323230 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2b92440 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33231b0 - 1.2.840.113556.1.4.368 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3323130 - rIDManagerReference contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33230b0 - RID-Manager-Reference contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3323030 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x33229c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3322e30 - RID-Available-Pool contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3322db0 - RID-Available-Pool contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3322d30 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3322cb0 - 1.2.840.113556.1.4.370 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3322c30 - rIDAvailablePool contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3322bb0 - RID-Available-Pool contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3322b30 - struct dsdb_attribute contains 390 bytes in 8 blocks (ref 0) d=(nil) 0x3322450 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3322930 - RID-Allocation-Pool contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33228b0 - RID-Allocation-Pool contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3322830 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3322740 - 1.2.840.113556.1.4.371 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33226c0 - rIDAllocationPool contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3322640 - RID-Allocation-Pool contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33225c0 - struct dsdb_attribute contains 327 bytes in 8 blocks (ref 0) d=(nil) 0x3322000 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33223c0 - Rid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3322350 - Rid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33222e0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3322260 - 1.2.840.113556.1.4.153 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33221e0 - rid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3322170 - Rid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33218e0 - struct dsdb_attribute contains 347 bytes in 8 blocks (ref 0) d=(nil) 0x3321b80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3321f70 - Revision contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3321ef0 - Revision contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3321e70 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3321df0 - 1.2.840.113556.1.4.145 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3321d70 - revision contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3321cf0 - Revision contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3321950 - struct dsdb_attribute contains 421 bytes in 8 blocks (ref 0) d=(nil) 0x3321550 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3321af0 - Retired-Repl-DSA-Signatures contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3321a60 - Retired-Repl-DSA-Signatures contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33219d0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3321860 - 1.2.840.113556.1.4.673 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33217e0 - retiredReplDSASignatures contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3321750 - Retired-Repl-DSA-Signatures contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x33216c0 - struct dsdb_attribute contains 399 bytes in 10 blocks (ref 0) d=(nil) 0x3320fe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33214c0 - Required-Categories contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3321440 - Required-Categories contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3321350 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33213d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3320de0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33212d0 - 1.2.840.113556.1.4.321 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3321250 - requiredCategories contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33211d0 - Required-Categories contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3321150 - struct dsdb_attribute contains 353 bytes in 9 blocks (ref 0) d=(nil) 0x3320af0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3320f50 - Reps-To contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3320ed0 - Reps-To contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3320e50 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2b76040 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3320d60 - 1.2.840.113556.1.2.83 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3320ce0 - repsTo contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x331e070 - Reps-To contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3320c60 - struct dsdb_attribute contains 361 bytes in 9 blocks (ref 0) d=(nil) 0x33205f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3320a60 - Reps-From contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33209e0 - Reps-From contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3320960 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2b71cc0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33208e0 - 1.2.840.113556.1.2.91 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3320860 - repsFrom contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33207e0 - Reps-From contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3320760 - struct dsdb_attribute contains 359 bytes in 9 blocks (ref 0) d=(nil) 0x33200f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3320560 - Reports contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33204e0 - Reports contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3320460 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2b6db20 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33203e0 - 1.2.840.113556.1.2.436 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3320360 - directReports contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33202e0 - Reports contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3320260 - struct dsdb_attribute contains 392 bytes in 8 blocks (ref 0) d=(nil) 0x331fbf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3320060 - Repl-UpToDate-Vector contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x331ffe0 - Repl-UpToDate-Vector contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x331ff60 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331fee0 - 1.2.840.113556.1.4.4 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x331fe60 - replUpToDateVector contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331fde0 - Repl-UpToDate-Vector contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x331fd60 - struct dsdb_attribute contains 435 bytes in 8 blocks (ref 0) d=(nil) 0x331f730 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331fb60 - Repl-Topology-Stay-Of-Execution contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x331fad0 - Repl-Topology-Stay-Of-Execution contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x331fa40 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x331f9c0 - 1.2.840.113556.1.4.677 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331f500 - replTopologyStayOfExecution contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x331f930 - Repl-Topology-Stay-Of-Execution contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x331f8a0 - struct dsdb_attribute contains 403 bytes in 8 blocks (ref 0) d=(nil) 0x331f180 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331f6a0 - Repl-Property-Meta-Data contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331f610 - Repl-Property-Meta-Data contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331f580 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331f480 - 1.2.840.113556.1.4.3 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x331f400 - replPropertyMetaData contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x331f380 - Repl-Property-Meta-Data contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331f2f0 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x331ec70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331f0f0 - Repl-Interval contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x331f070 - Repl-Interval contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x331eff0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x331ef70 - 1.2.840.113556.1.4.1336 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331eee0 - replInterval contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x331ee60 - Repl-Interval contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x331ede0 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x331e770 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331ebe0 - Replica-Source contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x331eb60 - Replica-Source contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x331eae0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331ea60 - 1.2.840.113556.1.4.109 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331e9e0 - replicaSource contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x331e960 - Replica-Source contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x331e8e0 - struct dsdb_attribute contains 390 bytes in 8 blocks (ref 0) d=(nil) 0x331e270 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331e6e0 - Remote-Storage-GUID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x331e660 - Remote-Storage-GUID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x331e5e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331e560 - 1.2.840.113556.1.4.809 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331e4e0 - remoteStorageGUID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x331e460 - Remote-Storage-GUID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x331e3e0 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x331dd00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331e1e0 - Remote-Source-Type contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331e160 - Remote-Source-Type contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331e0e0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x331dff0 - 1.2.840.113556.1.4.108 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331df70 - remoteSourceType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x331def0 - Remote-Source-Type contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331de70 - struct dsdb_attribute contains 375 bytes in 10 blocks (ref 0) d=(nil) 0x331d790 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331dc70 - Remote-Source contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x331dbf0 - Remote-Source contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x331db00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x331db80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x331d590 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331da80 - 1.2.840.113556.1.4.107 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331da00 - remoteSource contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x331d980 - Remote-Source contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x331d900 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x331d220 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331d700 - Remote-Server-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331d680 - Remote-Server-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331d600 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331d510 - 1.2.840.113556.1.4.105 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331d490 - remoteServerName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x331d410 - Remote-Server-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331d390 - struct dsdb_attribute contains 381 bytes in 10 blocks (ref 0) d=(nil) 0x331ccb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331d190 - Registered-Address contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331d110 - Registered-Address contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331d020 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x331d0a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x331cab0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331cfa0 - 2.5.4.26 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331cf20 - registeredAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x331cea0 - Registered-Address contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331ce20 - struct dsdb_attribute contains 352 bytes in 8 blocks (ref 0) d=(nil) 0x331c7c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331cc20 - RDN-Att-ID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x331cba0 - RDN-Att-ID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x331cb20 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x331ca30 - 1.2.840.113556.1.2.26 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x331c9b0 - rDNAttID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331c930 - RDN-Att-ID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x331c560 - struct dsdb_attribute contains 335 bytes in 10 blocks (ref 0) d=(nil) 0x331c210 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331c730 - RDN contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x331c6c0 - RDN contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x331c650 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x331c5e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x331c4f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331c470 - 1.2.840.113556.1.4.1 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x331c3f0 - name contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x331c380 - RDN contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3319800 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x331bd10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331c180 - Range-Upper contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x331c100 - Range-Upper contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x331c080 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x331c000 - 1.2.840.113556.1.2.35 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x331bf80 - rangeUpper contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x331bf00 - Range-Upper contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x331be80 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x331b810 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331bc80 - Range-Lower contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x331bc00 - Range-Lower contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x331bb80 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x331bb00 - 1.2.840.113556.1.2.34 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x331ba80 - rangeLower contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x331ba00 - Range-Lower contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x331b980 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x331b310 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331b780 - Query-Policy-Object contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x331b700 - Query-Policy-Object contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x331b680 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2b30610 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x331b600 - 1.2.840.113556.1.4.607 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331b580 - queryPolicyObject contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x331b500 - Query-Policy-Object contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x331b480 - struct dsdb_attribute contains 383 bytes in 9 blocks (ref 0) d=(nil) 0x331ae10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331b280 - Query-Policy-BL contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x331b200 - Query-Policy-BL contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x331b180 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2b2c410 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x331b100 - 1.2.840.113556.1.4.608 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331b080 - queryPolicyBL contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x331b000 - Query-Policy-BL contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x331af80 - struct dsdb_attribute contains 356 bytes in 8 blocks (ref 0) d=(nil) 0x331a910 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331ad80 - QueryPoint contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x331ad00 - QueryPoint contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x331ac80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331ac00 - 1.2.840.113556.1.4.680 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331ab80 - queryPoint contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x331ab00 - QueryPoint contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x331aa80 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x331a400 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331a880 - Query-Filter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x331a800 - Query-Filter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x331a780 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x331a700 - 1.2.840.113556.1.4.1355 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331a670 - queryFilter contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x331a5f0 - Query-Filter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x331a570 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x3319f00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x331a370 - Quality-Of-Service contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331a2f0 - Quality-Of-Service contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331a270 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x331a1f0 - 1.2.840.113556.1.4.458 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x331a170 - qualityOfService contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x331a0f0 - Quality-Of-Service contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x331a070 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x3319a00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3319e70 - Pwd-Properties contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3319df0 - Pwd-Properties contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3319d70 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3319cf0 - 1.2.840.113556.1.4.93 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3319c70 - pwdProperties contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3319bf0 - Pwd-Properties contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3319b70 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x3319490 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3319970 - Pwd-Last-Set contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33198f0 - Pwd-Last-Set contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3319870 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3319780 - 1.2.840.113556.1.4.96 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3319700 - pwdLastSet contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3319680 - Pwd-Last-Set contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3319600 - struct dsdb_attribute contains 392 bytes in 10 blocks (ref 0) d=(nil) 0x3318eb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3319400 - Pwd-History-Length contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3319380 - Pwd-History-Length contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3319300 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3319290 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3319220 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33191a0 - 1.2.840.113556.1.4.95 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3319120 - pwdHistoryLength contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33190a0 - Pwd-History-Length contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3319020 - struct dsdb_attribute contains 387 bytes in 10 blocks (ref 0) d=(nil) 0x3318940 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3318e20 - Purported-Search contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3318da0 - Purported-Search contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3318cb0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3318d30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3317d20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3318c30 - 1.2.840.113556.1.4.886 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3318bb0 - purportedSearch contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3318b30 - Purported-Search contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3318ab0 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x3318440 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33188b0 - Public-Key-Policy contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3318830 - Public-Key-Policy contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33187b0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3318730 - 1.2.840.113556.1.4.420 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33186b0 - publicKeyPolicy contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3318630 - Public-Key-Policy contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33185b0 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x3317f40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33183b0 - Proxy-Lifetime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3318330 - Proxy-Lifetime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33182b0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3318230 - 1.2.840.113556.1.4.103 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33181b0 - proxyLifetime contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3318130 - Proxy-Lifetime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33180b0 - struct dsdb_attribute contains 409 bytes in 8 blocks (ref 0) d=(nil) 0x33179a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3317eb0 - Proxy-Generation-Enabled contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3317e20 - Proxy-Generation-Enabled contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3317d90 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3317ca0 - 1.2.840.113556.1.2.523 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3317c20 - proxyGenerationEnabled contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3317ba0 - Proxy-Generation-Enabled contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3317b10 - struct dsdb_attribute contains 383 bytes in 10 blocks (ref 0) d=(nil) 0x3317430 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3317910 - Proxy-Addresses contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3317890 - Proxy-Addresses contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33177a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3317820 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3316d20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3317720 - 1.2.840.113556.1.2.210 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33176a0 - proxyAddresses contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3317620 - Proxy-Addresses contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33175a0 - struct dsdb_attribute contains 401 bytes in 9 blocks (ref 0) d=(nil) 0x3316f20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33173a0 - Proxied-Object-Name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3317320 - Proxied-Object-Name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33172a0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2afb6f0 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3317220 - 1.2.840.113556.1.4.1249 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3317190 - proxiedObjectName contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3317110 - Proxied-Object-Name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3317090 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x33169b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3316e90 - Profile-Path contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3316e10 - Profile-Path contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3316d90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3316ca0 - 1.2.840.113556.1.4.139 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3316c20 - profilePath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3316ba0 - Profile-Path contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3316b20 - struct dsdb_attribute contains 371 bytes in 10 blocks (ref 0) d=(nil) 0x3316440 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3316920 - Product-Code contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33168a0 - Product-Code contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33167b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3316830 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3310d10 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3316730 - 1.2.840.113556.1.4.818 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33166b0 - productCode contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3316630 - Product-Code contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33165b0 - struct dsdb_attribute contains 375 bytes in 8 blocks (ref 0) d=(nil) 0x3315f40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33163b0 - Privilege-Value contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3316330 - Privilege-Value contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33162b0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3316230 - 1.2.840.113556.1.4.635 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33161b0 - privilegeValue contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3316130 - Privilege-Value contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33160b0 - struct dsdb_attribute contains 388 bytes in 9 blocks (ref 0) d=(nil) 0x3315a40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3315eb0 - Privilege-Holder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3315e30 - Privilege-Holder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3315db0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2aeb480 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3315d30 - 1.2.840.113556.1.4.637 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3315cb0 - privilegeHolder contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3315c30 - Privilege-Holder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3315bb0 - struct dsdb_attribute contains 402 bytes in 8 blocks (ref 0) d=(nil) 0x3315540 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33159b0 - Privilege-Display-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3315930 - Privilege-Display-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33158b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3315830 - 1.2.840.113556.1.4.634 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33157b0 - privilegeDisplayName contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3315730 - Privilege-Display-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33156b0 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x3315040 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33154b0 - Privilege-Attributes contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3315430 - Privilege-Attributes contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33153b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3315330 - 1.2.840.113556.1.4.636 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33152b0 - privilegeAttributes contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3315230 - Privilege-Attributes contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33151b0 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x3314b40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3314fb0 - Private-Key contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3314f30 - Private-Key contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3314eb0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3314e30 - 1.2.840.113556.1.4.101 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3314db0 - privateKey contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3314d30 - Private-Key contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3314cb0 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x3314640 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3314ab0 - Prior-Value contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3314a30 - Prior-Value contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33149b0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3314930 - 1.2.840.113556.1.4.100 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33148b0 - priorValue contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3314830 - Prior-Value contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33147b0 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x3314140 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33145b0 - Prior-Set-Time contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3314530 - Prior-Set-Time contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33144b0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3314430 - 1.2.840.113556.1.4.99 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33143b0 - priorSetTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3314330 - Prior-Set-Time contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33142b0 - struct dsdb_attribute contains 347 bytes in 8 blocks (ref 0) d=(nil) 0x3313c40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33140b0 - Priority contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3314030 - Priority contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3313fb0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3313f30 - 1.2.840.113556.1.4.231 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3313eb0 - priority contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3313e30 - Priority contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3313db0 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x3313740 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3313bb0 - Print-Status contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3313b30 - Print-Status contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3313ab0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3313a30 - 1.2.840.113556.1.4.273 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33139b0 - printStatus contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3313930 - Print-Status contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x33138b0 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x3313240 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33136b0 - Print-Start-Time contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3313630 - Print-Start-Time contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33135b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3313530 - 1.2.840.113556.1.4.233 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33134b0 - printStartTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3313430 - Print-Start-Time contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33133b0 - struct dsdb_attribute contains 409 bytes in 8 blocks (ref 0) d=(nil) 0x3312d10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33131b0 - Print-Stapling-Supported contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3313120 - Print-Stapling-Supported contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3313090 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3313010 - 1.2.840.113556.1.4.281 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3312f90 - printStaplingSupported contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3312f10 - Print-Stapling-Supported contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3312e80 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x3312810 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3312c80 - Print-Spooling contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3312c00 - Print-Spooling contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3312b80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3312b00 - 1.2.840.113556.1.4.274 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3312a80 - printSpooling contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3312a00 - Print-Spooling contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3312980 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x3312310 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3312780 - Print-Share-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3312700 - Print-Share-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3312680 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3312600 - 1.2.840.113556.1.4.270 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3312580 - printShareName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3312500 - Print-Share-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3312480 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x3311e10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3312280 - Print-Separator-File contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3312200 - Print-Separator-File contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3312180 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3312100 - 1.2.840.113556.1.4.230 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3312080 - printSeparatorFile contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3312000 - Print-Separator-File contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3311f80 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x3311910 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3311d80 - Print-Rate-Unit contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3311d00 - Print-Rate-Unit contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3311c80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3311c00 - 1.2.840.113556.1.4.286 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3311b80 - printRateUnit contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3311b00 - Print-Rate-Unit contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3311a80 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x3311410 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3311880 - Print-Rate contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3311800 - Print-Rate contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3311780 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3311700 - 1.2.840.113556.1.4.285 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3311680 - printRate contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3311600 - Print-Rate contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3311580 - struct dsdb_attribute contains 400 bytes in 8 blocks (ref 0) d=(nil) 0x3310f10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3311380 - Print-Pages-Per-Minute contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3311300 - Print-Pages-Per-Minute contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3311280 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3311200 - 1.2.840.113556.1.4.631 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3311180 - printPagesPerMinute contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3311100 - Print-Pages-Per-Minute contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3311080 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x3310a20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3310e80 - Print-Owner contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3310e00 - Print-Owner contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3310d80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3310c90 - 1.2.840.113556.1.4.271 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3310c10 - printOwner contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3310b90 - Print-Owner contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3310780 - struct dsdb_attribute contains 434 bytes in 10 blocks (ref 0) d=(nil) 0x33103f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3310990 - Print-Orientations-Supported contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3310900 - Print-Orientations-Supported contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3310870 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3310800 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x330c5b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3310700 - 1.2.840.113556.1.4.240 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3310680 - printOrientationsSupported contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x33105f0 - Print-Orientations-Supported contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3310560 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x330fef0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3310360 - Print-Number-Up contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x33102e0 - Print-Number-Up contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3310260 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33101e0 - 1.2.840.113556.1.4.290 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3310160 - printNumberUp contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33100e0 - Print-Number-Up contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3310060 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x330f9f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330fe60 - Print-Notify contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330fde0 - Print-Notify contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330fd60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x330fce0 - 1.2.840.113556.1.4.272 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330fc60 - printNotify contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x330fbe0 - Print-Notify contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330fb60 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x330f4f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330f960 - Print-Network-Address contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x330f8e0 - Print-Network-Address contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x330f860 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x330f7e0 - 1.2.840.113556.1.4.287 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330f760 - printNetworkAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x330f6e0 - Print-Network-Address contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x330f660 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x330eff0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330f460 - Print-Min-Y-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330f3e0 - Print-Min-Y-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330f360 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330f2e0 - 1.2.840.113556.1.4.280 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330f260 - printMinYExtent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x330f1e0 - Print-Min-Y-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330f160 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x330eaf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330ef60 - Print-Min-X-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330eee0 - Print-Min-X-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330ee60 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330ede0 - 1.2.840.113556.1.4.279 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330ed60 - printMinXExtent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x330ece0 - Print-Min-X-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330ec60 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x330e5f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330ea60 - Print-Memory contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330e9e0 - Print-Memory contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330e960 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330e8e0 - 1.2.840.113556.1.4.282 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330e860 - printMemory contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x330e7e0 - Print-Memory contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330e760 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x330e0f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330e560 - Print-Media-Supported contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x330e4e0 - Print-Media-Supported contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x330e460 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x330e3e0 - 1.2.840.113556.1.4.299 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330e360 - printMediaSupported contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x330e2e0 - Print-Media-Supported contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x330e260 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x330dbf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330e060 - Print-Media-Ready contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x330dfe0 - Print-Media-Ready contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x330df60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x330dee0 - 1.2.840.113556.1.4.289 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330de60 - printMediaReady contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x330dde0 - Print-Media-Ready contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x330dd60 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x330d6f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330db60 - Print-Max-Y-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330dae0 - Print-Max-Y-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330da60 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330d9e0 - 1.2.840.113556.1.4.278 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330d960 - printMaxYExtent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x330d8e0 - Print-Max-Y-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330d860 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x330d1f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330d660 - Print-Max-X-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330d5e0 - Print-Max-X-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330d560 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330d4e0 - 1.2.840.113556.1.4.277 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330d460 - printMaxXExtent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x330d3e0 - Print-Max-X-Extent contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x330d360 - struct dsdb_attribute contains 432 bytes in 8 blocks (ref 0) d=(nil) 0x330ccb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330d160 - Print-Max-Resolution-Supported contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x330d0d0 - Print-Max-Resolution-Supported contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x330d040 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330cfc0 - 1.2.840.113556.1.4.238 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330cf40 - printMaxResolutionSupported contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x330ceb0 - Print-Max-Resolution-Supported contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x330ce20 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x330c7b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330cc20 - Print-Max-Copies contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x330cba0 - Print-Max-Copies contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x330cb20 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330caa0 - 1.2.840.113556.1.4.241 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330ca20 - printMaxCopies contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x330c9a0 - Print-Max-Copies contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x330c920 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x330c240 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330c720 - Print-MAC-Address contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x330c6a0 - Print-MAC-Address contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x330c620 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x330c530 - 1.2.840.113556.1.4.288 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330c4b0 - printMACAddress contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x330c430 - Print-MAC-Address contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x330c3b0 - struct dsdb_attribute contains 379 bytes in 10 blocks (ref 0) d=(nil) 0x330bcd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330c1b0 - Print-Language contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x330c130 - Print-Language contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x330c040 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x330c0c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3306520 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x330bfc0 - 1.2.840.113556.1.4.246 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330bf40 - printLanguage contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x330bec0 - Print-Language contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x330be40 - struct dsdb_attribute contains 404 bytes in 8 blocks (ref 0) d=(nil) 0x330b7a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330bc40 - Print-Keep-Printed-Jobs contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330bbb0 - Print-Keep-Printed-Jobs contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330bb20 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330baa0 - 1.2.840.113556.1.4.275 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330ba20 - printKeepPrintedJobs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x330b9a0 - Print-Keep-Printed-Jobs contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330b910 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x330b2a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330b710 - Print-Form-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x330b690 - Print-Form-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x330b610 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x330b590 - 1.2.840.113556.1.4.235 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330b510 - printFormName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x330b490 - Print-Form-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x330b410 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x330ada0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330b210 - Printer-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330b190 - Printer-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330b110 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x330b090 - 1.2.840.113556.1.4.300 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330b010 - printerName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x330af90 - Printer-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330af10 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x330a8a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330ad10 - Print-End-Time contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x330ac90 - Print-End-Time contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x330ac10 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330ab90 - 1.2.840.113556.1.4.234 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330ab10 - printEndTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x330aa90 - Print-End-Time contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x330aa10 - struct dsdb_attribute contains 402 bytes in 8 blocks (ref 0) d=(nil) 0x330a390 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330a810 - Print-Duplex-Supported contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330a790 - Print-Duplex-Supported contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330a710 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330a690 - 1.2.840.113556.1.4.1311 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330a600 - printDuplexSupported contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x330a580 - Print-Duplex-Supported contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330a500 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x3309e90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x330a300 - Print-Color contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x330a280 - Print-Color contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x330a200 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x330a180 - 1.2.840.113556.1.4.243 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x330a100 - printColor contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x330a080 - Print-Color contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x330a000 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x3309990 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3309e00 - Print-Collate contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3309d80 - Print-Collate contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3309d00 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3309c80 - 1.2.840.113556.1.4.242 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3309c00 - printCollate contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3309b80 - Print-Collate contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3309b00 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x3309490 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3309900 - Print-Bin-Names contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3309880 - Print-Bin-Names contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3309800 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3309780 - 1.2.840.113556.1.4.237 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3309700 - printBinNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3309680 - Print-Bin-Names contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3309600 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x3308f90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3309400 - Print-Attributes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3309380 - Print-Attributes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3309300 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3309280 - 1.2.840.113556.1.4.247 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3309200 - printAttributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3309180 - Print-Attributes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3309100 - struct dsdb_attribute contains 390 bytes in 8 blocks (ref 0) d=(nil) 0x3308a80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3308f00 - Primary-Group-Token contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3308e80 - Primary-Group-Token contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3308e00 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3308d80 - 1.2.840.113556.1.4.1412 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3308cf0 - primaryGroupToken contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3308c70 - Primary-Group-Token contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3308bf0 - struct dsdb_attribute contains 376 bytes in 8 blocks (ref 0) d=(nil) 0x3308580 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33089f0 - Primary-Group-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3308970 - Primary-Group-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33088f0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3308870 - 1.2.840.113556.1.4.98 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33087f0 - primaryGroupID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3308770 - Primary-Group-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33086f0 - struct dsdb_attribute contains 395 bytes in 9 blocks (ref 0) d=(nil) 0x3308100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33084f0 - Previous-Parent-CA contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3308470 - Previous-Parent-CA contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33083f0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2a417f0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3308370 - 1.2.840.113556.1.4.694 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33082f0 - previousParentCA contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3308270 - Previous-Parent-CA contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3307ed0 - struct dsdb_attribute contains 410 bytes in 8 blocks (ref 0) d=(nil) 0x3307b50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3308070 - Previous-CA-Certificates contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3307fe0 - Previous-CA-Certificates contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3307f50 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3307e50 - 1.2.840.113556.1.4.692 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3307dd0 - previousCACertificates contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3307d50 - Previous-CA-Certificates contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3307cc0 - struct dsdb_attribute contains 391 bytes in 9 blocks (ref 0) d=(nil) 0x3307650 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3307ac0 - Presentation-Address contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3307a40 - Presentation-Address contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33079c0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2a399f0 - 2.5.5.13 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3307940 - 2.5.4.29 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33078c0 - presentationAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3307840 - Presentation-Address contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33077c0 - struct dsdb_attribute contains 355 bytes in 8 blocks (ref 0) d=(nil) 0x3307150 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33075c0 - Prefix-Map contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x3307540 - Prefix-Map contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33074c0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3307440 - 1.2.840.113556.1.4.538 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33073c0 - prefixMap contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3307340 - Prefix-Map contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33072c0 - struct dsdb_attribute contains 371 bytes in 9 blocks (ref 0) d=(nil) 0x3306c50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33070c0 - Preferred-OU contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3307040 - Preferred-OU contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3306fc0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2a31a00 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3306f40 - 1.2.840.113556.1.4.97 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3306ec0 - preferredOU contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3306e40 - Preferred-OU contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3306dc0 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x3306740 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3306bc0 - preferredLanguage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3306b40 - preferredLanguage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3306ac0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3306a40 - 2.16.840.1.113730.3.1.39 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x33069b0 - preferredLanguage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3306930 - preferredLanguage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x33068b0 - struct dsdb_attribute contains 399 bytes in 8 blocks (ref 0) d=(nil) 0x3306190 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33066b0 - Preferred-Delivery-Method contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3306620 - Preferred-Delivery-Method contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3306590 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33064a0 - 2.5.4.28 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3306420 - preferredDeliveryMethod contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3306390 - Preferred-Delivery-Method contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x3306300 - struct dsdb_attribute contains 368 bytes in 10 blocks (ref 0) d=(nil) 0x3305bb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3306100 - Post-Office-Box contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3306080 - Post-Office-Box contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3305f90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3306010 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3305f20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3305ea0 - 2.5.4.18 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3305e20 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3305da0 - Post-Office-Box contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3305d20 - struct dsdb_attribute contains 353 bytes in 10 blocks (ref 0) d=(nil) 0x33055d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3305b20 - Postal-Code contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3305aa0 - Postal-Code contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33059b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3305a30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3305940 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33058c0 - 2.5.4.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3305840 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x33057c0 - Postal-Code contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3305740 - struct dsdb_attribute contains 365 bytes in 10 blocks (ref 0) d=(nil) 0x3305060 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3305540 - Postal-Address contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33054c0 - Postal-Address contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33053d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3305450 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3303f40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3305350 - 2.5.4.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33052d0 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3305250 - Postal-Address contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x33051d0 - struct dsdb_attribute contains 368 bytes in 8 blocks (ref 0) d=(nil) 0x3304b60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3304fd0 - Poss-Superiors contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3304f50 - Poss-Superiors contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3304ed0 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3304e50 - 1.2.840.113556.1.2.8 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3304dd0 - possSuperiors contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3304d50 - Poss-Superiors contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3304cd0 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x3304660 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3304ad0 - Possible-Inferiors contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3304a50 - Possible-Inferiors contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33049d0 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3304950 - 1.2.840.113556.1.4.915 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33048d0 - possibleInferiors contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3304850 - Possible-Inferiors contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33047d0 - struct dsdb_attribute contains 351 bytes in 8 blocks (ref 0) d=(nil) 0x3304160 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33045d0 - Port-Name contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3304550 - Port-Name contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33044d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3304450 - 1.2.840.113556.1.4.228 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33043d0 - portName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3304350 - Port-Name contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x33042d0 - struct dsdb_attribute contains 409 bytes in 8 blocks (ref 0) d=(nil) 0x3303bc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33040d0 - Policy-Replication-Flags contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3304040 - Policy-Replication-Flags contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3303fb0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3303ec0 - 1.2.840.113556.1.4.633 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3303e40 - policyReplicationFlags contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3303dc0 - Policy-Replication-Flags contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3303d30 - struct dsdb_attribute contains 355 bytes in 10 blocks (ref 0) d=(nil) 0x3303660 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3303b30 - PKT-Guid contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3303ab0 - PKT-Guid contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33039c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3303a40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3303950 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33038d0 - 1.2.840.113556.1.4.205 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3303850 - pKTGuid contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33037d0 - PKT-Guid contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3303470 - struct dsdb_attribute contains 332 bytes in 9 blocks (ref 0) d=(nil) 0x3303120 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x33035d0 - PKT contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3303560 - PKT contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x33034f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3303400 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3303380 - 1.2.840.113556.1.4.206 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3303300 - pKT contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3303290 - PKT contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3300680 - struct dsdb_attribute contains 387 bytes in 8 blocks (ref 0) d=(nil) 0x3302c10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3303090 - PKI-Overlap-Period contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3303010 - PKI-Overlap-Period contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3302f90 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3302f10 - 1.2.840.113556.1.4.1332 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3302e80 - pKIOverlapPeriod contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3302e00 - PKI-Overlap-Period contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3302d80 - struct dsdb_attribute contains 397 bytes in 8 blocks (ref 0) d=(nil) 0x3302700 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3302b80 - PKI-Max-Issuing-Depth contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3302b00 - PKI-Max-Issuing-Depth contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3302a80 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3302a00 - 1.2.840.113556.1.4.1329 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3302970 - pKIMaxIssuingDepth contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x33028f0 - PKI-Max-Issuing-Depth contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3302870 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x33021f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3302670 - PKI-Key-Usage contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x33025f0 - PKI-Key-Usage contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3302570 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33024f0 - 1.2.840.113556.1.4.1328 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3302460 - pKIKeyUsage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x33023e0 - PKI-Key-Usage contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3302360 - struct dsdb_attribute contains 402 bytes in 8 blocks (ref 0) d=(nil) 0x3301ce0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3302160 - PKI-Extended-Key-Usage contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x33020e0 - PKI-Extended-Key-Usage contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3302060 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3301fe0 - 1.2.840.113556.1.4.1333 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3301f50 - pKIExtendedKeyUsage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3301ed0 - PKI-Extended-Key-Usage contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3301e50 - struct dsdb_attribute contains 399 bytes in 8 blocks (ref 0) d=(nil) 0x33017d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3301c50 - PKI-Expiration-Period contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3301bd0 - PKI-Expiration-Period contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3301b50 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3301ad0 - 1.2.840.113556.1.4.1331 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3301a40 - pKIExpirationPeriod contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33019c0 - PKI-Expiration-Period contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3301940 - struct dsdb_attribute contains 399 bytes in 8 blocks (ref 0) d=(nil) 0x33012c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3301740 - PKI-Enrollment-Access contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33016c0 - PKI-Enrollment-Access contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3301640 - 2.5.5.15 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x33015c0 - 1.2.840.113556.1.4.1335 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3301530 - pKIEnrollmentAccess contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x33014b0 - PKI-Enrollment-Access contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3301430 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x3300db0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3301230 - PKI-Default-Key-Spec contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x33011b0 - PKI-Default-Key-Spec contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3301130 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33010b0 - 1.2.840.113556.1.4.1327 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3301020 - pKIDefaultKeySpec contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3300fa0 - PKI-Default-Key-Spec contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3300f20 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x3300920 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3300d20 - PKI-Default-CSPs contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3300ca0 - PKI-Default-CSPs contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3300c20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3300ba0 - 1.2.840.113556.1.4.1334 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3300b10 - pKIDefaultCSPs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3300a90 - PKI-Default-CSPs contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x33006f0 - struct dsdb_attribute contains 407 bytes in 8 blocks (ref 0) d=(nil) 0x33002f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3300890 - PKI-Critical-Extensions contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3300800 - PKI-Critical-Extensions contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3300770 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3300600 - 1.2.840.113556.1.4.1330 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3300570 - pKICriticalExtensions contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x33004f0 - PKI-Critical-Extensions contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3300460 - struct dsdb_attribute contains 361 bytes in 10 blocks (ref 0) d=(nil) 0x32ffd70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3300260 - Picture contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33001e0 - Picture contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x33000f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3300170 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ffb50 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3300070 - 2.16.840.1.113730.3.1.35 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32fffe0 - thumbnailPhoto contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32fff60 - Picture contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ffee0 - struct dsdb_attribute contains 419 bytes in 9 blocks (ref 0) d=(nil) 0x32ff850 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ffce0 - Physical-Location-Object contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ffc50 - Physical-Location-Object contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ffbc0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x29d8ae0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ffad0 - 1.2.840.113556.1.4.514 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ffa50 - physicalLocationObject contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ff5b0 - Physical-Location-Object contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ff9c0 - struct dsdb_attribute contains 423 bytes in 10 blocks (ref 0) d=(nil) 0x32ff230 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ff7c0 - Physical-Delivery-Office-Name contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32ff730 - Physical-Delivery-Office-Name contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32ff6a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ff630 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ff540 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ff4c0 - 2.5.4.19 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ff0b0 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32ff430 - Physical-Delivery-Office-Name contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32ff3a0 - struct dsdb_attribute contains 339 bytes in 8 blocks (ref 0) d=(nil) 0x32fecd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ff1a0 - photo contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x32ff130 - photo contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x32ff040 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fefb0 - 0.9.2342.19200300.100.1.7 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32fef20 - photo contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x32feeb0 - photo contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x32fee40 - struct dsdb_attribute contains 390 bytes in 10 blocks (ref 0) d=(nil) 0x32fe6e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fec40 - Phone-Pager-Primary contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32febc0 - Phone-Pager-Primary contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32fead0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32feb50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fea60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fe9d0 - 0.9.2342.19200300.100.1.42 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32fe940 - pager contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x32fe8d0 - Phone-Pager-Primary contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32fe850 - struct dsdb_attribute contains 385 bytes in 10 blocks (ref 0) d=(nil) 0x32fe100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fe650 - Phone-Pager-Other contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32fe5d0 - Phone-Pager-Other contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32fe4e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fe560 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fe470 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fe3f0 - 1.2.840.113556.1.2.118 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32fe370 - otherPager contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32fe2f0 - Phone-Pager-Other contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32fe270 - struct dsdb_attribute contains 391 bytes in 10 blocks (ref 0) d=(nil) 0x32fdb20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fe070 - Phone-Office-Other contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fdff0 - Phone-Office-Other contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fdf00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fdf80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fde90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fde10 - 1.2.840.113556.1.2.18 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32fdd90 - otherTelephone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32fdd10 - Phone-Office-Other contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fdc90 - struct dsdb_attribute contains 394 bytes in 10 blocks (ref 0) d=(nil) 0x32fd530 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fda90 - Phone-Mobile-Primary contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32fda10 - Phone-Mobile-Primary contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32fd920 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fd9a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fd8b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fd820 - 0.9.2342.19200300.100.1.41 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32fd790 - mobile contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x32fd720 - Phone-Mobile-Primary contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32fd6a0 - struct dsdb_attribute contains 389 bytes in 10 blocks (ref 0) d=(nil) 0x32fcf50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fd4a0 - Phone-Mobile-Other contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fd420 - Phone-Mobile-Other contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fd330 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fd3b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fd2c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fd240 - 1.2.840.113556.1.4.647 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32fd1c0 - otherMobile contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32fd140 - Phone-Mobile-Other contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fd0c0 - struct dsdb_attribute contains 408 bytes in 10 blocks (ref 0) d=(nil) 0x32fc960 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fcec0 - Phone-ISDN-Primary contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fce40 - Phone-ISDN-Primary contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fcd50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fcdd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fcce0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fcc60 - 1.2.840.113556.1.4.649 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32fcbe0 - primaryInternationalISDNNumber contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32fcb50 - Phone-ISDN-Primary contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fcad0 - struct dsdb_attribute contains 375 bytes in 9 blocks (ref 0) d=(nil) 0x32fc460 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fc8d0 - Phone-Ip-Primary contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32fc850 - Phone-Ip-Primary contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32fc7d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fc260 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fc750 - 1.2.840.113556.1.4.721 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32fc6d0 - ipPhone contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32fc650 - Phone-Ip-Primary contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32fc5d0 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x32fbef0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fc3d0 - Phone-Ip-Other contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32fc350 - Phone-Ip-Other contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32fc2d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fc1e0 - 1.2.840.113556.1.4.722 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32fc160 - otherIpPhone contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32fc0e0 - Phone-Ip-Other contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32fc060 - struct dsdb_attribute contains 391 bytes in 10 blocks (ref 0) d=(nil) 0x32fb8f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fbe60 - Phone-Home-Primary contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fbde0 - Phone-Home-Primary contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fbcf0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fbd70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fbc80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fbbf0 - 0.9.2342.19200300.100.1.20 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32fbb60 - homePhone contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32fbae0 - Phone-Home-Primary contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32fba60 - struct dsdb_attribute contains 386 bytes in 10 blocks (ref 0) d=(nil) 0x32fb310 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fb860 - Phone-Home-Other contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32fb7e0 - Phone-Home-Other contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32fb6f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fb770 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fb680 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fb600 - 1.2.840.113556.1.2.277 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32fb580 - otherHomePhone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32fb500 - Phone-Home-Other contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32fb480 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x32fad20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fb280 - Phone-Fax-Other contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32fb200 - Phone-Fax-Other contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32fb110 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fb190 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fb0a0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fb020 - 1.2.840.113556.1.4.646 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32fafa0 - otherFacsimileTelephoneNumber contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32faf10 - Phone-Fax-Other contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32fae90 - struct dsdb_attribute contains 379 bytes in 10 blocks (ref 0) d=(nil) 0x32fa7c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fac90 - Personal-Title contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32fac10 - Personal-Title contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32fab20 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32faba0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32faab0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32faa30 - 1.2.840.113556.1.2.615 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32fa9b0 - personalTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32fa930 - Personal-Title contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32fa520 - struct dsdb_attribute contains 440 bytes in 10 blocks (ref 0) d=(nil) 0x32fa1a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fa730 - Per-Recip-Dialog-Display-Table contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32fa6a0 - Per-Recip-Dialog-Display-Table contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32fa610 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fa5a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32fa4b0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32fa430 - 1.2.840.113556.1.2.326 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f9f00 - perRecipDialogDisplayTable contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32fa3a0 - Per-Recip-Dialog-Display-Table contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32fa310 - struct dsdb_attribute contains 432 bytes in 10 blocks (ref 0) d=(nil) 0x32f9b70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32fa110 - Per-Msg-Dialog-Display-Table contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32fa080 - Per-Msg-Dialog-Display-Table contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32f9ff0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f9f80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f6180 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f9e80 - 1.2.840.113556.1.2.325 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f9e00 - perMsgDialogDisplayTable contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f9d70 - Per-Msg-Dialog-Display-Table contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32f9ce0 - struct dsdb_attribute contains 391 bytes in 9 blocks (ref 0) d=(nil) 0x32f96f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f9ae0 - Pending-Parent-CA contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32f9a60 - Pending-Parent-CA contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32f99e0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2990e20 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f9960 - 1.2.840.113556.1.4.695 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f98e0 - pendingParentCA contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32f9860 - Pending-Parent-CA contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32f94c0 - struct dsdb_attribute contains 406 bytes in 8 blocks (ref 0) d=(nil) 0x32f9140 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f9660 - Pending-CA-Certificates contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f95d0 - Pending-CA-Certificates contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f9540 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f9440 - 1.2.840.113556.1.4.693 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f93c0 - pendingCACertificates contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32f9340 - Pending-CA-Certificates contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f92b0 - struct dsdb_attribute contains 347 bytes in 8 blocks (ref 0) d=(nil) 0x32f8cc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f90b0 - Pek-List contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f9030 - Pek-List contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f8fb0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f8f30 - 1.2.840.113556.1.4.865 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f8eb0 - pekList contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f8e30 - Pek-List contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f8a90 - struct dsdb_attribute contains 405 bytes in 8 blocks (ref 0) d=(nil) 0x32f8710 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f8c30 - Pek-Key-Change-Interval contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f8ba0 - Pek-Key-Change-Interval contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f8b10 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f8a10 - 1.2.840.113556.1.4.866 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f8990 - pekKeyChangeInterval contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32f8910 - Pek-Key-Change-Interval contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f8880 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x32f8290 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f8680 - Partial-Attribute-Set contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32f8600 - Partial-Attribute-Set contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32f8580 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f8500 - 1.2.840.113556.1.4.640 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f8480 - partialAttributeSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32f8400 - Partial-Attribute-Set contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32f8060 - struct dsdb_attribute contains 437 bytes in 8 blocks (ref 0) d=(nil) 0x32f7cd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f8200 - Partial-Attribute-Deletion-List contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x32f8170 - Partial-Attribute-Deletion-List contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x32f80e0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f7fe0 - 1.2.840.113556.1.4.663 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f7f60 - partialAttributeDeletionList contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32f7ed0 - Partial-Attribute-Deletion-List contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x32f7e40 - struct dsdb_attribute contains 360 bytes in 8 blocks (ref 0) d=(nil) 0x32f7840 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f7c40 - Parent-GUID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32f7bc0 - Parent-GUID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32f7b40 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f7ac0 - 1.2.840.113556.1.4.1224 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f7a30 - parentGUID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32f79b0 - Parent-GUID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32f7610 - struct dsdb_attribute contains 421 bytes in 8 blocks (ref 0) d=(nil) 0x32f7280 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f77b0 - Parent-CA-Certificate-Chain contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32f7720 - Parent-CA-Certificate-Chain contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32f7690 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f7590 - 1.2.840.113556.1.4.685 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f7510 - parentCACertificateChain contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f7480 - Parent-CA-Certificate-Chain contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32f73f0 - struct dsdb_attribute contains 360 bytes in 9 blocks (ref 0) d=(nil) 0x32f6d80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f71f0 - Parent-CA contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32f7170 - Parent-CA contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32f70f0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2971120 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f7070 - 1.2.840.113556.1.4.557 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f6ff0 - parentCA contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f6f70 - Parent-CA contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32f6ef0 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x32f6880 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f6cf0 - Package-Type contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32f6c70 - Package-Type contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32f6bf0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f6b70 - 1.2.840.113556.1.4.324 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f6af0 - packageType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32f6a70 - Package-Type contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32f69f0 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x32f6380 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f67f0 - Package-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32f6770 - Package-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32f66f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f6670 - 1.2.840.113556.1.4.326 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f65f0 - packageName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32f6570 - Package-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32f64f0 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x32f5e10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f62f0 - Package-Flags contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32f6270 - Package-Flags contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32f61f0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f6100 - 1.2.840.113556.1.4.327 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f6080 - packageFlags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32f6000 - Package-Flags contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32f5f80 - struct dsdb_attribute contains 331 bytes in 9 blocks (ref 0) d=(nil) 0x32f5950 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f5d80 - Owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x32f5d10 - Owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x32f5ca0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2961610 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f5c20 - 2.5.4.32 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f5ba0 - owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x32f5b30 - Owner contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x32f5ac0 - struct dsdb_attribute contains 428 bytes in 11 blocks (ref 0) d=(nil) 0x32f5330 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f58c0 - Other-Well-Known-Objects contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f5830 - Other-Well-Known-Objects contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f57a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f5730 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f56c0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x295d330 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f5640 - 1.2.840.113556.1.4.1359 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f55b0 - otherWellKnownObjects contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32f5530 - Other-Well-Known-Objects contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f54a0 - struct dsdb_attribute contains 366 bytes in 10 blocks (ref 0) d=(nil) 0x32f4db0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f50b0 - Other-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32f52b0 - Other-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32f51c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f5240 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f4bb0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f5140 - 2.16.840.1.113730.3.1.34 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f5020 - middleName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32f4fa0 - Other-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32f4f20 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x32f48c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f4d20 - Other-Mailbox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32f4ca0 - Other-Mailbox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32f4c20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f4b30 - 1.2.840.113556.1.4.651 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f4ab0 - otherMailbox contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32f4a30 - Other-Mailbox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32f4620 - struct dsdb_attribute contains 417 bytes in 10 blocks (ref 0) d=(nil) 0x32f42b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f4830 - Other-Login-Workstations contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f47a0 - Other-Login-Workstations contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f4710 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f46a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f45b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f4530 - 1.2.840.113556.1.4.91 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32f44b0 - otherLoginWorkstations contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f4010 - Other-Login-Workstations contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f4420 - struct dsdb_attribute contains 433 bytes in 10 blocks (ref 0) d=(nil) 0x32f3c10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f4220 - Original-Display-Table-MSDOS contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32f4190 - Original-Display-Table-MSDOS contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32f4100 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f4090 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f3fa0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f3f20 - 1.2.840.113556.1.2.214 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f3ea0 - originalDisplayTableMSDOS contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32f3e10 - Original-Display-Table-MSDOS contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32f3d80 - struct dsdb_attribute contains 410 bytes in 10 blocks (ref 0) d=(nil) 0x32f3630 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f3b80 - Original-Display-Table contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f3b00 - Original-Display-Table contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f3a10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f3a90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f39a0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f3920 - 1.2.840.113556.1.2.445 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f38a0 - originalDisplayTable contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32f3820 - Original-Display-Table contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f37a0 - struct dsdb_attribute contains 362 bytes in 10 blocks (ref 0) d=(nil) 0x32f30e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f35a0 - Organization-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32f3520 - Organization-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32f3430 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f34b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f33c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f3340 - 2.5.4.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f32c0 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x32f3250 - Organization-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32f2e40 - struct dsdb_attribute contains 384 bytes in 10 blocks (ref 0) d=(nil) 0x32f2a60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f3050 - Organizational-Unit-Name contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f2fc0 - Organizational-Unit-Name contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f2f30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f2ec0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f2dd0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f2d50 - 2.5.4.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f2cd0 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x32f2c60 - Organizational-Unit-Name contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f2bd0 - struct dsdb_attribute contains 408 bytes in 10 blocks (ref 0) d=(nil) 0x32f24e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f27e0 - organizationalStatus contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32f29e0 - organizationalStatus contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32f28f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32f2970 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32efa40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f2870 - 0.9.2342.19200300.100.1.45 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32f2750 - organizationalStatus contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32f26d0 - organizationalStatus contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32f2650 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x32f1fe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f2450 - Options-Location contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32f23d0 - Options-Location contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32f2350 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f22d0 - 1.2.840.113556.1.4.713 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f2250 - optionsLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32f21d0 - Options-Location contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32f2150 - struct dsdb_attribute contains 343 bytes in 8 blocks (ref 0) d=(nil) 0x32f1ae0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f1f50 - Options contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f1ed0 - Options contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f1e50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f1dd0 - 1.2.840.113556.1.4.307 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f1d50 - options contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f1cd0 - Options contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f1c50 - struct dsdb_attribute contains 387 bytes in 8 blocks (ref 0) d=(nil) 0x32f15e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f1a50 - Option-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32f19d0 - Option-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32f1950 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f18d0 - 1.2.840.113556.1.4.712 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f1850 - optionDescription contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32f17d0 - Option-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32f1750 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x32f1160 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f1550 - Operator-Count contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32f14d0 - Operator-Count contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32f1450 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32f13d0 - 1.2.840.113556.1.4.144 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f1350 - operatorCount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32f12d0 - Operator-Count contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32f0f30 - struct dsdb_attribute contains 410 bytes in 8 blocks (ref 0) d=(nil) 0x32f0c30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f10d0 - Operating-System-Version contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f1040 - Operating-System-Version contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f0fb0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f0eb0 - 1.2.840.113556.1.4.364 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f0e30 - operatingSystemVersion contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f0a00 - Operating-System-Version contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32f0da0 - struct dsdb_attribute contains 429 bytes in 8 blocks (ref 0) d=(nil) 0x32f06f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f0ba0 - Operating-System-Service-Pack contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32f0b10 - Operating-System-Service-Pack contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32f0a80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f0980 - 1.2.840.113556.1.4.365 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f04c0 - operatingSystemServicePack contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32f08f0 - Operating-System-Service-Pack contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32f0860 - struct dsdb_attribute contains 406 bytes in 8 blocks (ref 0) d=(nil) 0x32f0140 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f0660 - Operating-System-Hotfix contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f05d0 - Operating-System-Hotfix contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f0540 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32f0440 - 1.2.840.113556.1.4.415 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32f03c0 - operatingSystemHotfix contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32f0340 - Operating-System-Hotfix contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f02b0 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x32efc40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32f00b0 - Operating-System contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32f0030 - Operating-System contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32effb0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32eff30 - 1.2.840.113556.1.4.363 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32efeb0 - operatingSystem contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32efe30 - Operating-System contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32efdb0 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x32ef6d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32efbb0 - OncRpcNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32efb30 - OncRpcNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32efab0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ef9c0 - 1.3.6.1.1.1.1.18 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32ef940 - oncRpcNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32ef8c0 - OncRpcNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32ef840 - struct dsdb_attribute contains 374 bytes in 10 blocks (ref 0) d=(nil) 0x32ef0f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ef640 - OMT-Indx-Guid contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32ef5c0 - OMT-Indx-Guid contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32ef4d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ef550 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ef460 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ef3e0 - 1.2.840.113556.1.4.333 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ef360 - oMTIndxGuid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32ef2e0 - OMT-Indx-Guid contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32ef260 - struct dsdb_attribute contains 355 bytes in 10 blocks (ref 0) d=(nil) 0x32eeb80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ef060 - OMT-Guid contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32eefe0 - OMT-Guid contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32eeef0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32eef70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ee480 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32eee70 - 1.2.840.113556.1.4.505 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32eedf0 - oMTGuid contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32eed70 - OMT-Guid contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32eecf0 - struct dsdb_attribute contains 350 bytes in 8 blocks (ref 0) d=(nil) 0x32ee680 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32eeaf0 - OM-Syntax contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32eea70 - OM-Syntax contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32ee9f0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ee970 - 1.2.840.113556.1.2.231 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ee8f0 - oMSyntax contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ee870 - OM-Syntax contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32ee7f0 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x32ee110 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ee5f0 - OM-Object-Class contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32ee570 - OM-Object-Class contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32ee4f0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ee400 - 1.2.840.113556.1.2.218 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ee380 - oMObjectClass contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32ee300 - OM-Object-Class contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32ee280 - struct dsdb_attribute contains 383 bytes in 10 blocks (ref 0) d=(nil) 0x32edba0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ee080 - OEM-Information contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32ee000 - OEM-Information contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32edf10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32edf90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ed9a0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ede90 - 1.2.840.113556.1.4.151 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ede10 - oEMInformation contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32edd90 - OEM-Information contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32edd10 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x32ed630 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32edb10 - Object-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32eda90 - Object-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32eda10 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ed920 - 1.2.840.113556.1.2.76 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ed8a0 - objectVersion contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32ed820 - Object-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32ed7a0 - struct dsdb_attribute contains 363 bytes in 10 blocks (ref 0) d=(nil) 0x32ed050 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ed5a0 - Object-Sid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32ed520 - Object-Sid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32ed430 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ed4b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ed3c0 - 2.5.5.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ed340 - 1.2.840.113556.1.4.146 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ed2c0 - objectSid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32ed240 - Object-Sid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32ed1c0 - struct dsdb_attribute contains 365 bytes in 10 blocks (ref 0) d=(nil) 0x32ecae0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ecfc0 - Object-Guid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32ecf40 - Object-Guid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32ece50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32eced0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ec3e0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ecdd0 - 1.2.840.113556.1.4.2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32ecd50 - objectGUID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32eccd0 - Object-Guid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32ecc50 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x32ec5e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32eca50 - Object-Count contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32ec9d0 - Object-Count contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32ec950 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ec8d0 - 1.2.840.113556.1.4.506 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ec850 - objectCount contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32ec7d0 - Object-Count contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32ec750 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x32ec070 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ec550 - Object-Classes contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32ec4d0 - Object-Classes contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32ec450 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ec360 - 2.5.21.6 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ec2e0 - objectClasses contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32ec260 - Object-Classes contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32ec1e0 - struct dsdb_attribute contains 405 bytes in 10 blocks (ref 0) d=(nil) 0x32ebb00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ebfe0 - Object-Class-Category contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ebf60 - Object-Class-Category contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ebee0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ebe70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32eaf00 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ebdf0 - 1.2.840.113556.1.2.370 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ebd70 - objectClassCategory contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32ebcf0 - Object-Class-Category contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ebc70 - struct dsdb_attribute contains 347 bytes in 8 blocks (ref 0) d=(nil) 0x32eb600 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32eba70 - Object-Class contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32eb9f0 - Object-Class contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32eb970 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32eb8f0 - 2.5.4.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32eb870 - objectClass contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32eb7f0 - Object-Class contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32eb770 - struct dsdb_attribute contains 384 bytes in 9 blocks (ref 0) d=(nil) 0x32eb100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32eb570 - Object-Category contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32eb4f0 - Object-Category contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32eb470 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x28e1850 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32eb3f0 - 1.2.840.113556.1.4.782 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32eb370 - objectCategory contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32eb2f0 - Object-Category contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32eb270 - struct dsdb_attribute contains 367 bytes in 9 blocks (ref 0) d=(nil) 0x32eab90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32eb070 - Obj-Dist-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32eaff0 - Obj-Dist-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32eaf70 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x28dd260 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32eae80 - 2.5.4.49 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32eae00 - distinguishedName contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ead80 - Obj-Dist-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32ead00 - struct dsdb_attribute contains 410 bytes in 10 blocks (ref 0) d=(nil) 0x32ea620 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32eab00 - NT-Security-Descriptor contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32eaa80 - NT-Security-Descriptor contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ea990 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32eaa10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e8b20 - 2.5.5.15 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ea910 - 1.2.840.113556.1.2.281 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ea890 - nTSecurityDescriptor contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32ea810 - NT-Security-Descriptor contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ea790 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x32ea120 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ea590 - Nt-Pwd-History contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32ea510 - Nt-Pwd-History contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32ea490 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ea410 - 1.2.840.113556.1.4.94 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ea390 - ntPwdHistory contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32ea310 - Nt-Pwd-History contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32ea290 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x32e9c20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ea090 - NT-Mixed-Domain contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32ea010 - NT-Mixed-Domain contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32e9f90 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e9f10 - 1.2.840.113556.1.4.357 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e9e90 - nTMixedDomain contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32e9e10 - NT-Mixed-Domain contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32e9d90 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x32e9720 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e9b90 - NT-Group-Members contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e9b10 - NT-Group-Members contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e9a90 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e9a10 - 1.2.840.113556.1.4.89 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e9990 - nTGroupMembers contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e9910 - NT-Group-Members contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e9890 - struct dsdb_attribute contains 392 bytes in 9 blocks (ref 0) d=(nil) 0x32e9220 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e9690 - Notification-List contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32e9610 - Notification-List contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32e9590 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x28c8c10 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e9510 - 1.2.840.113556.1.4.303 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e9490 - notificationList contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e9410 - Notification-List contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32e9390 - struct dsdb_attribute contains 410 bytes in 9 blocks (ref 0) d=(nil) 0x32e8d20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e9190 - Non-Security-Member-BL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e9110 - Non-Security-Member-BL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e9090 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x28c4c90 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e9010 - 1.2.840.113556.1.4.531 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e8f90 - nonSecurityMemberBL contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32e8f10 - Non-Security-Member-BL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e8e90 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x32e87b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e8c90 - Non-Security-Member contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32e8c10 - Non-Security-Member contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32e8b90 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x28c0ae0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e8aa0 - 1.2.840.113556.1.4.530 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e8a20 - nonSecurityMember contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32e89a0 - Non-Security-Member contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32e8920 - struct dsdb_attribute contains 381 bytes in 9 blocks (ref 0) d=(nil) 0x32e8240 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e8720 - NisNetgroupTriple contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32e86a0 - NisNetgroupTriple contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32e8620 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e85b0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e8530 - 1.3.6.1.1.1.1.14 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e84b0 - nisNetgroupTriple contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32e8430 - NisNetgroupTriple contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32e83b0 - struct dsdb_attribute contains 353 bytes in 9 blocks (ref 0) d=(nil) 0x32e7cd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e81b0 - NisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32e8130 - NisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32e80b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e8040 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e7fc0 - 1.3.6.1.1.1.1.26 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e7f40 - nisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32e7ec0 - NisMapName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32e7e40 - struct dsdb_attribute contains 357 bytes in 9 blocks (ref 0) d=(nil) 0x32e77d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e7c40 - NisMapEntry contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32e7bc0 - NisMapEntry contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32e7b40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e70d0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e7ac0 - 1.3.6.1.1.1.1.27 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e7a40 - nisMapEntry contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32e79c0 - NisMapEntry contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32e7940 - struct dsdb_attribute contains 345 bytes in 8 blocks (ref 0) d=(nil) 0x32e72d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e7740 - Next-Rid contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e76c0 - Next-Rid contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e7640 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e75c0 - 1.2.840.113556.1.4.88 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e7540 - nextRid contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e74c0 - Next-Rid contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e7440 - struct dsdb_attribute contains 387 bytes in 9 blocks (ref 0) d=(nil) 0x32e6d60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e7240 - Next-Level-Store contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e71c0 - Next-Level-Store contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e7140 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x28acdb0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e7050 - 1.2.840.113556.1.4.214 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e6fd0 - nextLevelStore contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e6f50 - Next-Level-Store contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e6ed0 - struct dsdb_attribute contains 382 bytes in 10 blocks (ref 0) d=(nil) 0x32e67f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e6cd0 - Network-Address contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32e6c50 - Network-Address contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32e6bd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e6b60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e28b0 - 2.5.5.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e6ae0 - 1.2.840.113556.1.2.459 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e6a60 - networkAddress contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e69e0 - Network-Address contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32e6960 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x32e62f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e6760 - netboot-Tools contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32e66e0 - netboot-Tools contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32e6660 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e65e0 - 1.2.840.113556.1.4.858 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e6560 - netbootTools contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32e64e0 - netboot-Tools contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32e6460 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x32e5de0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e6260 - Netboot-SIF-File contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e61e0 - Netboot-SIF-File contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e6160 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e60e0 - 1.2.840.113556.1.4.1240 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e6050 - netbootSIFFile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e5fd0 - Netboot-SIF-File contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32e5f50 - struct dsdb_attribute contains 380 bytes in 9 blocks (ref 0) d=(nil) 0x32e58e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e5d50 - netboot-Server contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e5cd0 - netboot-Server contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e5c50 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x289cf10 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e5bd0 - 1.2.840.113556.1.4.860 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e5b50 - netbootServer contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32e5ad0 - netboot-Server contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e5a50 - struct dsdb_attribute contains 379 bytes in 9 blocks (ref 0) d=(nil) 0x32e53e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e5850 - netboot-SCP-BL contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e57d0 - netboot-SCP-BL contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e5750 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2898d80 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e56d0 - 1.2.840.113556.1.4.864 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e5650 - netbootSCPBL contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32e55d0 - netboot-SCP-BL contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32e5550 - struct dsdb_attribute contains 410 bytes in 9 blocks (ref 0) d=(nil) 0x32e4f60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e5350 - netboot-New-Machine-OU contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e52d0 - netboot-New-Machine-OU contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e5250 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2894d50 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e51d0 - 1.2.840.113556.1.4.856 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e5150 - netbootNewMachineOU contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32e50d0 - netboot-New-Machine-OU contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e4d30 - struct dsdb_attribute contains 444 bytes in 8 blocks (ref 0) d=(nil) 0x32e4a20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e4ed0 - netboot-New-Machine-Naming-Policy contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32e4e40 - netboot-New-Machine-Naming-Policy contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32e4db0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e4cb0 - 1.2.840.113556.1.4.855 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e47f0 - netbootNewMachineNamingPolicy contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32e4c20 - netboot-New-Machine-Naming-Policy contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32e4b90 - struct dsdb_attribute contains 410 bytes in 8 blocks (ref 0) d=(nil) 0x32e4460 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e4990 - Netboot-Mirror-Data-File contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32e4900 - Netboot-Mirror-Data-File contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32e4870 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e4770 - 1.2.840.113556.1.4.1241 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e46e0 - netbootMirrorDataFile contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e4660 - Netboot-Mirror-Data-File contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32e45d0 - struct dsdb_attribute contains 389 bytes in 8 blocks (ref 0) d=(nil) 0x32e3fe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e43d0 - netboot-Max-Clients contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32e4350 - netboot-Max-Clients contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32e42d0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e4250 - 1.2.840.113556.1.4.851 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e41d0 - netbootMaxClients contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32e4150 - netboot-Max-Clients contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32e3db0 - struct dsdb_attribute contains 413 bytes in 8 blocks (ref 0) d=(nil) 0x32e3ab0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e3f50 - Netboot-Machine-File-Path contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32e3ec0 - Netboot-Machine-File-Path contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32e3e30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e3d30 - 1.2.840.113556.1.4.361 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e3cb0 - netbootMachineFilePath contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e3880 - Netboot-Machine-File-Path contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32e3c20 - struct dsdb_attribute contains 433 bytes in 8 blocks (ref 0) d=(nil) 0x32e34f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e3a20 - netboot-Locally-Installed-OSes contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32e3990 - netboot-Locally-Installed-OSes contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32e3900 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e3800 - 1.2.840.113556.1.4.859 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e3780 - netbootLocallyInstalledOSes contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32e36f0 - netboot-Locally-Installed-OSes contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32e3660 - struct dsdb_attribute contains 397 bytes in 8 blocks (ref 0) d=(nil) 0x32e3070 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e3460 - netboot-Limit-Clients contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e33e0 - netboot-Limit-Clients contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e3360 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e32e0 - 1.2.840.113556.1.4.850 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e3260 - netbootLimitClients contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32e31e0 - netboot-Limit-Clients contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e2e40 - struct dsdb_attribute contains 418 bytes in 8 blocks (ref 0) d=(nil) 0x32e2ab0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e2fe0 - netboot-IntelliMirror-OSes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32e2f50 - netboot-IntelliMirror-OSes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32e2ec0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e2dc0 - 1.2.840.113556.1.4.857 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e2d40 - netbootIntelliMirrorOSes contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32e2cb0 - netboot-IntelliMirror-OSes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32e2c20 - struct dsdb_attribute contains 403 bytes in 8 blocks (ref 0) d=(nil) 0x32e2540 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e2a20 - Netboot-Initialization contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e29a0 - Netboot-Initialization contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e2920 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e2830 - 1.2.840.113556.1.4.358 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e27b0 - netbootInitialization contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e2730 - Netboot-Initialization contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e26b0 - struct dsdb_attribute contains 371 bytes in 10 blocks (ref 0) d=(nil) 0x32e1fd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e24b0 - Netboot-GUID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32e2430 - Netboot-GUID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32e2340 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e23c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e0e00 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e22c0 - 1.2.840.113556.1.4.359 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e2240 - netbootGUID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32e21c0 - Netboot-GUID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32e2140 - struct dsdb_attribute contains 424 bytes in 8 blocks (ref 0) d=(nil) 0x32e1a90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e1f40 - netboot-Current-Client-Count contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32e1eb0 - netboot-Current-Client-Count contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32e1e20 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e1da0 - 1.2.840.113556.1.4.852 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e1d20 - netbootCurrentClientCount contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32e1c90 - netboot-Current-Client-Count contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32e1c00 - struct dsdb_attribute contains 405 bytes in 8 blocks (ref 0) d=(nil) 0x32e1560 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e1a00 - netboot-Answer-Requests contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e1970 - netboot-Answer-Requests contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e18e0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e1860 - 1.2.840.113556.1.4.853 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e17e0 - netbootAnswerRequests contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e1760 - netboot-Answer-Requests contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e16d0 - struct dsdb_attribute contains 443 bytes in 8 blocks (ref 0) d=(nil) 0x32e1020 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e14d0 - netboot-Answer-Only-Valid-Clients contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32e1440 - netboot-Answer-Only-Valid-Clients contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32e13b0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e1330 - 1.2.840.113556.1.4.854 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e12b0 - netbootAnswerOnlyValidClients contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32e1220 - netboot-Answer-Only-Valid-Clients contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32e1190 - struct dsdb_attribute contains 412 bytes in 8 blocks (ref 0) d=(nil) 0x32e0a80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e0f90 - netboot-Allow-New-Clients contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32e0f00 - netboot-Allow-New-Clients contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32e0e70 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e0d80 - 1.2.840.113556.1.4.849 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e0d00 - netbootAllowNewClients contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32e0c80 - netboot-Allow-New-Clients contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32e0bf0 - struct dsdb_attribute contains 370 bytes in 10 blocks (ref 0) d=(nil) 0x32e0510 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e09f0 - NETBIOS-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32e0970 - NETBIOS-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32e0880 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e0900 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32e0310 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32e0800 - 1.2.840.113556.1.4.87 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e0780 - nETBIOSName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32e0700 - NETBIOS-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32e0680 - struct dsdb_attribute contains 351 bytes in 9 blocks (ref 0) d=(nil) 0x32e0020 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32e0480 - NC-Name contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e0400 - NC-Name contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e0380 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2859790 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e0290 - 1.2.840.113556.1.2.16 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32e0210 - nCName contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x32d3850 - NC-Name contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32e0190 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x32dfb20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dff90 - Name-Service-Flags contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32dff10 - Name-Service-Flags contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32dfe90 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32dfe10 - 1.2.840.113556.1.4.753 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32dfd90 - nameServiceFlags contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32dfd10 - Name-Service-Flags contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32dfc90 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x32df620 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dfa90 - Must-Contain contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32dfa10 - Must-Contain contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32df990 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32df910 - 1.2.840.113556.1.2.24 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32df890 - mustContain contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32df810 - Must-Contain contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32df790 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x32df110 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32df590 - ms-WMI-TargetType contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32df510 - ms-WMI-TargetType contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32df490 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32df410 - 1.2.840.113556.1.4.1649 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32df380 - msWMI-TargetType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32df300 - ms-WMI-TargetType contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32df280 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x32dec00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32df080 - ms-WMI-TargetPath contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32df000 - ms-WMI-TargetPath contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32def80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32def00 - 1.2.840.113556.1.4.1648 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dee70 - msWMI-TargetPath contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32dedf0 - ms-WMI-TargetPath contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ded70 - struct dsdb_attribute contains 392 bytes in 8 blocks (ref 0) d=(nil) 0x32de6f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32deb70 - ms-WMI-TargetObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32deaf0 - ms-WMI-TargetObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32dea70 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32de9f0 - 1.2.840.113556.1.4.1647 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32de960 - msWMI-TargetObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32de8e0 - ms-WMI-TargetObject contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32de860 - struct dsdb_attribute contains 404 bytes in 8 blocks (ref 0) d=(nil) 0x32de1e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32de660 - ms-WMI-TargetNameSpace contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32de5e0 - ms-WMI-TargetNameSpace contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32de560 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32de4e0 - 1.2.840.113556.1.4.1646 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32de450 - msWMI-TargetNameSpace contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32de3d0 - ms-WMI-TargetNameSpace contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32de350 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x32ddd50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32de150 - ms-WMI-TargetClass contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32de0d0 - ms-WMI-TargetClass contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32de050 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ddfd0 - 1.2.840.113556.1.4.1645 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ddf40 - msWMI-TargetClass contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ddec0 - ms-WMI-TargetClass contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32ddb20 - struct dsdb_attribute contains 412 bytes in 8 blocks (ref 0) d=(nil) 0x32dd780 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ddcc0 - ms-WMI-stringValidValues contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ddc30 - ms-WMI-stringValidValues contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ddba0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ddaa0 - 1.2.840.113556.1.4.1637 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dda10 - msWMI-StringValidValues contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dd980 - ms-WMI-stringValidValues contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32dd8f0 - struct dsdb_attribute contains 396 bytes in 8 blocks (ref 0) d=(nil) 0x32dd2f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dd6f0 - ms-WMI-stringDefault contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32dd670 - ms-WMI-stringDefault contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32dd5f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32dd570 - 1.2.840.113556.1.4.1636 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dd4e0 - msWMI-StringDefault contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32dd460 - ms-WMI-stringDefault contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32dd0c0 - struct dsdb_attribute contains 416 bytes in 8 blocks (ref 0) d=(nil) 0x32dcd20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dd260 - ms-WMI-SourceOrganization contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32dd1d0 - ms-WMI-SourceOrganization contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32dd140 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32dd040 - 1.2.840.113556.1.4.1644 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dcfb0 - msWMI-SourceOrganization contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32dcf20 - ms-WMI-SourceOrganization contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32dce90 - struct dsdb_attribute contains 380 bytes in 8 blocks (ref 0) d=(nil) 0x32dc810 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dcc90 - ms-WMI-ScopeGuid contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32dcc10 - ms-WMI-ScopeGuid contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32dcb90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32dcb10 - 1.2.840.113556.1.4.1686 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dca80 - msWMI-ScopeGuid contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32dca00 - ms-WMI-ScopeGuid contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32dc980 - struct dsdb_attribute contains 396 bytes in 8 blocks (ref 0) d=(nil) 0x32dc300 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dc780 - ms-WMI-QueryLanguage contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32dc700 - ms-WMI-QueryLanguage contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32dc680 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32dc600 - 1.2.840.113556.1.4.1643 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dc570 - msWMI-QueryLanguage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32dc4f0 - ms-WMI-QueryLanguage contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32dc470 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x32dbdf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dc270 - ms-WMI-Query contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32dc1f0 - ms-WMI-Query contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32dc170 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32dc0f0 - 1.2.840.113556.1.4.1642 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dc060 - msWMI-Query contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32dbfe0 - ms-WMI-Query contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32dbf60 - struct dsdb_attribute contains 392 bytes in 8 blocks (ref 0) d=(nil) 0x32db8e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dbd60 - ms-WMI-PropertyName contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32dbce0 - ms-WMI-PropertyName contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32dbc60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32dbbe0 - 1.2.840.113556.1.4.1641 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dbb50 - msWMI-PropertyName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32dbad0 - ms-WMI-PropertyName contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32dba50 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x32db3d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32db850 - ms-WMI-Parm4 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32db7d0 - ms-WMI-Parm4 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32db750 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32db6d0 - 1.2.840.113556.1.4.1685 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32db640 - msWMI-Parm4 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32db5c0 - ms-WMI-Parm4 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32db540 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x32daec0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32db340 - ms-WMI-Parm3 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32db2c0 - ms-WMI-Parm3 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32db240 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32db1c0 - 1.2.840.113556.1.4.1684 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32db130 - msWMI-Parm3 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32db0b0 - ms-WMI-Parm3 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32db030 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x32da9b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dae30 - ms-WMI-Parm2 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32dadb0 - ms-WMI-Parm2 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32dad30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32dacb0 - 1.2.840.113556.1.4.1683 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32dac20 - msWMI-Parm2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32daba0 - ms-WMI-Parm2 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32dab20 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x32da4a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32da920 - ms-WMI-Parm1 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32da8a0 - ms-WMI-Parm1 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32da820 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32da7a0 - 1.2.840.113556.1.4.1682 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32da710 - msWMI-Parm1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32da690 - ms-WMI-Parm1 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32da610 - struct dsdb_attribute contains 404 bytes in 8 blocks (ref 0) d=(nil) 0x32d9f90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32da410 - ms-WMI-NormalizedClass contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32da390 - ms-WMI-NormalizedClass contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32da310 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32da290 - 1.2.840.113556.1.4.1640 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32da200 - msWMI-NormalizedClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32da180 - ms-WMI-NormalizedClass contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32da100 - struct dsdb_attribute contains 360 bytes in 8 blocks (ref 0) d=(nil) 0x32d9a80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d9f00 - ms-WMI-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32d9e80 - ms-WMI-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32d9e00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d9d80 - 1.2.840.113556.1.4.1639 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d9cf0 - msWMI-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32d9c70 - ms-WMI-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32d9bf0 - struct dsdb_attribute contains 356 bytes in 8 blocks (ref 0) d=(nil) 0x32d9570 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d99f0 - ms-WMI-Mof contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32d9970 - ms-WMI-Mof contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32d98f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d9870 - 1.2.840.113556.1.4.1638 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d97e0 - msWMI-Mof contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32d9760 - ms-WMI-Mof contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32d96e0 - struct dsdb_attribute contains 399 bytes in 8 blocks (ref 0) d=(nil) 0x32d9060 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d94e0 - ms-WMI-intValidValues contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32d9460 - ms-WMI-intValidValues contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32d93e0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d9360 - 1.2.840.113556.1.4.1631 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d92d0 - msWMI-IntValidValues contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32d9250 - ms-WMI-intValidValues contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32d91d0 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x32d8b50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d8fd0 - ms-WMI-intMin contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d8f50 - ms-WMI-intMin contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d8ed0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d8e50 - 1.2.840.113556.1.4.1630 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d8dc0 - msWMI-IntMin contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32d8d40 - ms-WMI-intMin contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d8cc0 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x32d8640 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d8ac0 - ms-WMI-intMax contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d8a40 - ms-WMI-intMax contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d89c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d8940 - 1.2.840.113556.1.4.1629 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d88b0 - msWMI-IntMax contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32d8830 - ms-WMI-intMax contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d87b0 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x32d8130 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d85b0 - ms-WMI-intFlags4 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d8530 - ms-WMI-intFlags4 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d84b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d8430 - 1.2.840.113556.1.4.1681 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d83a0 - msWMI-intFlags4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32d8320 - ms-WMI-intFlags4 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d82a0 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x32d7c20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d80a0 - ms-WMI-intFlags3 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d8020 - ms-WMI-intFlags3 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d7fa0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d7f20 - 1.2.840.113556.1.4.1680 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d7e90 - msWMI-intFlags3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32d7e10 - ms-WMI-intFlags3 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d7d90 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x32d7710 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d7b90 - ms-WMI-intFlags2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d7b10 - ms-WMI-intFlags2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d7a90 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d7a10 - 1.2.840.113556.1.4.1679 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d7980 - msWMI-intFlags2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32d7900 - ms-WMI-intFlags2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d7880 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x32d7200 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d7680 - ms-WMI-intFlags1 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d7600 - ms-WMI-intFlags1 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d7580 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d7500 - 1.2.840.113556.1.4.1678 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d7470 - msWMI-intFlags1 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32d73f0 - ms-WMI-intFlags1 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d7370 - struct dsdb_attribute contains 383 bytes in 8 blocks (ref 0) d=(nil) 0x32d6cf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d7170 - ms-WMI-intDefault contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32d70f0 - ms-WMI-intDefault contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32d7070 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d6ff0 - 1.2.840.113556.1.4.1628 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d6f60 - msWMI-IntDefault contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d6ee0 - ms-WMI-intDefault contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32d6e60 - struct dsdb_attribute contains 404 bytes in 8 blocks (ref 0) d=(nil) 0x32d67e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d6c60 - ms-WMI-int8ValidValues contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32d6be0 - ms-WMI-int8ValidValues contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32d6b60 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d6ae0 - 1.2.840.113556.1.4.1635 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d6a50 - msWMI-Int8ValidValues contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32d69d0 - ms-WMI-int8ValidValues contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32d6950 - struct dsdb_attribute contains 372 bytes in 8 blocks (ref 0) d=(nil) 0x32d62d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d6750 - ms-WMI-int8Min contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32d66d0 - ms-WMI-int8Min contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32d6650 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d65d0 - 1.2.840.113556.1.4.1634 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d6540 - msWMI-Int8Min contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d64c0 - ms-WMI-int8Min contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32d6440 - struct dsdb_attribute contains 372 bytes in 8 blocks (ref 0) d=(nil) 0x32d5dc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d6240 - ms-WMI-int8Max contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32d61c0 - ms-WMI-int8Max contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32d6140 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d60c0 - 1.2.840.113556.1.4.1633 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d6030 - msWMI-Int8Max contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d5fb0 - ms-WMI-int8Max contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32d5f30 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x32d58b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d5d30 - ms-WMI-int8Default contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32d5cb0 - ms-WMI-int8Default contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32d5c30 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d5bb0 - 1.2.840.113556.1.4.1632 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d5b20 - msWMI-Int8Default contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32d5aa0 - ms-WMI-int8Default contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32d5a20 - struct dsdb_attribute contains 352 bytes in 8 blocks (ref 0) d=(nil) 0x32d53a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d5820 - ms-WMI-ID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32d57a0 - ms-WMI-ID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32d5720 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d56a0 - 1.2.840.113556.1.4.1627 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d5610 - msWMI-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d5590 - ms-WMI-ID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32d5510 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x32d4e90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d5310 - ms-WMI-Genus contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32d5290 - ms-WMI-Genus contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32d5210 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d5190 - 1.2.840.113556.1.4.1677 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d5100 - msWMI-Genus contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32d5080 - ms-WMI-Genus contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32d5000 - struct dsdb_attribute contains 392 bytes in 8 blocks (ref 0) d=(nil) 0x32d4980 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d4e00 - ms-WMI-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32d4d80 - ms-WMI-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32d4d00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d4c80 - 1.2.840.113556.1.4.1626 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d4bf0 - msWMI-CreationDate contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32d4b70 - ms-WMI-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32d4af0 - struct dsdb_attribute contains 404 bytes in 8 blocks (ref 0) d=(nil) 0x32d4470 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d48f0 - ms-WMI-ClassDefinition contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32d4870 - ms-WMI-ClassDefinition contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32d47f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d4770 - 1.2.840.113556.1.4.1625 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d46e0 - msWMI-ClassDefinition contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32d4660 - ms-WMI-ClassDefinition contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32d45e0 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x32d3f60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d43e0 - ms-WMI-Class contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32d4360 - ms-WMI-Class contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32d42e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d4260 - 1.2.840.113556.1.4.1676 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d41d0 - msWMI-Class contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32d4150 - ms-WMI-Class contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32d40d0 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x32d3a50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d3ed0 - ms-WMI-ChangeDate contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32d3e50 - ms-WMI-ChangeDate contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32d3dd0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d3d50 - 1.2.840.113556.1.4.1624 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d3cc0 - msWMI-ChangeDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d3c40 - ms-WMI-ChangeDate contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32d3bc0 - struct dsdb_attribute contains 368 bytes in 8 blocks (ref 0) d=(nil) 0x32d34d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d39c0 - ms-WMI-Author contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d3940 - ms-WMI-Author contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d38c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d37d0 - 1.2.840.113556.1.4.1623 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d3740 - msWMI-Author contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32d36c0 - ms-WMI-Author contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32d3640 - struct dsdb_attribute contains 402 bytes in 10 blocks (ref 0) d=(nil) 0x32d2f50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d3440 - ms-TS-Work-Directory contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32d33c0 - ms-TS-Work-Directory contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32d32d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32d3350 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32d1da0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d3250 - 1.2.840.113556.1.4.1989 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d31c0 - msTSWorkDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32d3140 - ms-TS-Work-Directory contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32d30c0 - struct dsdb_attribute contains 419 bytes in 9 blocks (ref 0) d=(nil) 0x32d2a10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d2ec0 - ms-TS-Secondary-Desktops contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32d2e30 - ms-TS-Secondary-Desktops contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32d2da0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x27b5bb0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d2d20 - 1.2.840.113556.1.4.2075 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d2c90 - msTSSecondaryDesktops contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32d2c10 - ms-TS-Secondary-Desktops contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32d2b80 - struct dsdb_attribute contains 426 bytes in 9 blocks (ref 0) d=(nil) 0x32d24d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d2980 - ms-TS-Secondary-Desktop-BL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32d28f0 - ms-TS-Secondary-Desktop-BL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32d2860 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x27b1940 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d27e0 - 1.2.840.113556.1.4.2078 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d2750 - msTSSecondaryDesktopBL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32d26d0 - ms-TS-Secondary-Desktop-BL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32d2640 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x32d1fc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d2440 - ms-TS-Remote-Control contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32d23c0 - ms-TS-Remote-Control contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32d2340 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d22c0 - 1.2.840.113556.1.4.1980 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d2230 - msTSRemoteControl contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32d21b0 - ms-TS-Remote-Control contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32d2130 - struct dsdb_attribute contains 413 bytes in 8 blocks (ref 0) d=(nil) 0x32d1a10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d1f30 - ms-TS-Reconnection-Action contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32d1ea0 - ms-TS-Reconnection-Action contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32d1e10 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d1d20 - 1.2.840.113556.1.4.1984 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d1c90 - msTSReconnectionAction contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32d1c10 - ms-TS-Reconnection-Action contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32d1b80 - struct dsdb_attribute contains 387 bytes in 10 blocks (ref 0) d=(nil) 0x32d1420 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d1980 - MS-TS-Property02 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d1900 - MS-TS-Property02 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d1810 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32d1890 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32d17a0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d1720 - 1.2.840.113556.1.4.1992 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d1690 - msTSProperty02 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32d1610 - MS-TS-Property02 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d1590 - struct dsdb_attribute contains 387 bytes in 10 blocks (ref 0) d=(nil) 0x32d0e30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d1390 - MS-TS-Property01 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d1310 - MS-TS-Property01 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d1220 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32d12a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32d11b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d1130 - 1.2.840.113556.1.4.1991 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d10a0 - msTSProperty01 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32d1020 - MS-TS-Property01 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32d0fa0 - struct dsdb_attribute contains 394 bytes in 10 blocks (ref 0) d=(nil) 0x32d08b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d0da0 - ms-TS-Profile-Path contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32d0d20 - ms-TS-Profile-Path contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32d0c30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32d0cb0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32cf1e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32d0bb0 - 1.2.840.113556.1.4.1976 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d0b20 - msTSProfilePath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32d0aa0 - ms-TS-Profile-Path contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32d0a20 - struct dsdb_attribute contains 418 bytes in 9 blocks (ref 0) d=(nil) 0x32d0370 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d0820 - ms-TS-Primary-Desktop-BL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32d0790 - ms-TS-Primary-Desktop-BL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32d0700 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2799590 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d0680 - 1.2.840.113556.1.4.2074 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d05f0 - msTSPrimaryDesktopBL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32d0570 - ms-TS-Primary-Desktop-BL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32d04e0 - struct dsdb_attribute contains 407 bytes in 9 blocks (ref 0) d=(nil) 0x32cfe60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d02e0 - ms-TS-Primary-Desktop contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32d0260 - ms-TS-Primary-Desktop contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32d01e0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2795430 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32d0160 - 1.2.840.113556.1.4.2073 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32d00d0 - msTSPrimaryDesktop contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32d0050 - ms-TS-Primary-Desktop contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cffd0 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x32cf950 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cfdd0 - ms-TS-Max-Idle-Time contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32cfd50 - ms-TS-Max-Idle-Time contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32cfcd0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32cfc50 - 1.2.840.113556.1.4.1983 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cfbc0 - msTSMaxIdleTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32cfb40 - ms-TS-Max-Idle-Time contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32cfac0 - struct dsdb_attribute contains 424 bytes in 8 blocks (ref 0) d=(nil) 0x32cf400 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cf8c0 - ms-TS-Max-Disconnection-Time contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32cf830 - ms-TS-Max-Disconnection-Time contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32cf7a0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32cf720 - 1.2.840.113556.1.4.1981 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cf690 - msTSMaxDisconnectionTime contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32cf600 - ms-TS-Max-Disconnection-Time contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32cf570 - struct dsdb_attribute contains 412 bytes in 8 blocks (ref 0) d=(nil) 0x32cee50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cf370 - ms-TS-Max-Connection-Time contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32cf2e0 - ms-TS-Max-Connection-Time contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32cf250 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32cf160 - 1.2.840.113556.1.4.1982 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cf0d0 - msTSMaxConnectionTime contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cf050 - ms-TS-Max-Connection-Time contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32cefc0 - struct dsdb_attribute contains 391 bytes in 10 blocks (ref 0) d=(nil) 0x32ce860 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cedc0 - MS-TS-ManagingLS4 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ced40 - MS-TS-ManagingLS4 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32cec50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32cecd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32cebe0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ceb60 - 1.2.840.113556.1.4.2008 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cead0 - msTSManagingLS4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32cea50 - MS-TS-ManagingLS4 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ce9d0 - struct dsdb_attribute contains 391 bytes in 10 blocks (ref 0) d=(nil) 0x32ce270 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ce7d0 - MS-TS-ManagingLS3 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ce750 - MS-TS-ManagingLS3 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ce660 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ce6e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ce5f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ce570 - 1.2.840.113556.1.4.2005 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ce4e0 - msTSManagingLS3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32ce460 - MS-TS-ManagingLS3 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ce3e0 - struct dsdb_attribute contains 391 bytes in 10 blocks (ref 0) d=(nil) 0x32cdcf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ce1e0 - MS-TS-ManagingLS2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ce160 - MS-TS-ManagingLS2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ce070 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32ce0f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32cdaf0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cdff0 - 1.2.840.113556.1.4.2002 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cdf60 - msTSManagingLS2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32cdee0 - MS-TS-ManagingLS2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32cde60 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x32cd770 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cdc60 - MS-TS-ManagingLS contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32cdbe0 - MS-TS-ManagingLS contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32cdb60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cda70 - 1.2.840.113556.1.4.1995 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cd9e0 - msTSManagingLS contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32cd960 - MS-TS-ManagingLS contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32cd8e0 - struct dsdb_attribute contains 395 bytes in 10 blocks (ref 0) d=(nil) 0x32cd180 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cd6e0 - MS-TSLS-Property02 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32cd660 - MS-TSLS-Property02 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32cd570 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32cd5f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32cd500 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cd480 - 1.2.840.113556.1.4.2010 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cd3f0 - msTSLSProperty02 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32cd370 - MS-TSLS-Property02 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32cd2f0 - struct dsdb_attribute contains 395 bytes in 10 blocks (ref 0) d=(nil) 0x32ccc00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cd0f0 - MS-TSLS-Property01 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32cd070 - MS-TSLS-Property01 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32ccf80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32cd000 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x23ec0c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ccf00 - 1.2.840.113556.1.4.2009 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cce70 - msTSLSProperty01 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32ccdf0 - MS-TSLS-Property01 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32ccd70 - struct dsdb_attribute contains 407 bytes in 10 blocks (ref 0) d=(nil) 0x32cc6f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ccb70 - MS-TS-LicenseVersion4 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ccaf0 - MS-TS-LicenseVersion4 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cca70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2b12b70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f75290 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cc9f0 - 1.2.840.113556.1.4.2007 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cc960 - msTSLicenseVersion4 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32cc8e0 - MS-TS-LicenseVersion4 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cc860 - struct dsdb_attribute contains 407 bytes in 10 blocks (ref 0) d=(nil) 0x32cc1e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cc660 - MS-TS-LicenseVersion3 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cc5e0 - MS-TS-LicenseVersion3 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cc560 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fd2290 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2c84a50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cc4e0 - 1.2.840.113556.1.4.2004 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cc450 - msTSLicenseVersion3 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32cc3d0 - MS-TS-LicenseVersion3 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cc350 - struct dsdb_attribute contains 407 bytes in 10 blocks (ref 0) d=(nil) 0x32cbcd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cc150 - MS-TS-LicenseVersion2 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cc0d0 - MS-TS-LicenseVersion2 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cc050 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3045270 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196cbe0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cbfd0 - 1.2.840.113556.1.4.2001 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cbf40 - msTSLicenseVersion2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32cbec0 - MS-TS-LicenseVersion2 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cbe40 - struct dsdb_attribute contains 395 bytes in 8 blocks (ref 0) d=(nil) 0x32cb7c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cbc40 - MS-TS-LicenseVersion contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32cbbc0 - MS-TS-LicenseVersion contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32cbb40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cbac0 - 1.2.840.113556.1.4.1994 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cba30 - msTSLicenseVersion contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32cb9b0 - MS-TS-LicenseVersion contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32cb930 - struct dsdb_attribute contains 406 bytes in 10 blocks (ref 0) d=(nil) 0x32cb2b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cb730 - ms-TS-Initial-Program contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cb6b0 - ms-TS-Initial-Program contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cb630 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ab5140 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f70d80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cb5b0 - 1.2.840.113556.1.4.1990 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cb520 - msTSInitialProgram contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32cb4a0 - ms-TS-Initial-Program contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32cb420 - struct dsdb_attribute contains 386 bytes in 10 blocks (ref 0) d=(nil) 0x32cada0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cb220 - ms-TS-Home-Drive contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32cb1a0 - ms-TS-Home-Drive contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32cb120 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x21928e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x236e5e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cb0a0 - 1.2.840.113556.1.4.1978 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cb010 - msTSHomeDrive contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32caf90 - ms-TS-Home-Drive contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32caf10 - struct dsdb_attribute contains 402 bytes in 10 blocks (ref 0) d=(nil) 0x32ca890 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cad10 - ms-TS-Home-Directory contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32cac90 - ms-TS-Home-Directory contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32cac10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x23cff40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x23e8c20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32cab90 - 1.2.840.113556.1.4.1977 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32cab00 - msTSHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32caa80 - ms-TS-Home-Directory contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32caa00 - struct dsdb_attribute contains 383 bytes in 8 blocks (ref 0) d=(nil) 0x32ca380 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ca800 - MS-TS-ExpireDate4 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ca780 - MS-TS-ExpireDate4 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ca700 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ca680 - 1.2.840.113556.1.4.2006 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ca5f0 - msTSExpireDate4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32ca570 - MS-TS-ExpireDate4 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ca4f0 - struct dsdb_attribute contains 383 bytes in 8 blocks (ref 0) d=(nil) 0x32c9e70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ca2f0 - MS-TS-ExpireDate3 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ca270 - MS-TS-ExpireDate3 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ca1f0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ca170 - 1.2.840.113556.1.4.2003 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ca0e0 - msTSExpireDate3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32ca060 - MS-TS-ExpireDate3 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c9fe0 - struct dsdb_attribute contains 383 bytes in 8 blocks (ref 0) d=(nil) 0x32c9960 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c9de0 - MS-TS-ExpireDate2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c9d60 - MS-TS-ExpireDate2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c9ce0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c9c60 - 1.2.840.113556.1.4.2000 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c9bd0 - msTSExpireDate2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32c9b50 - MS-TS-ExpireDate2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c9ad0 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x32c9450 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c98d0 - MS-TS-ExpireDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c9850 - MS-TS-ExpireDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c97d0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c9750 - 1.2.840.113556.1.4.1993 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c96c0 - msTSExpireDate contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32c9640 - MS-TS-ExpireDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c95c0 - struct dsdb_attribute contains 389 bytes in 8 blocks (ref 0) d=(nil) 0x32c8f40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c93c0 - ms-TS-Endpoint-Type contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32c9340 - ms-TS-Endpoint-Type contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32c92c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32c9240 - 1.2.840.113556.1.4.2071 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c91b0 - msTSEndpointType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c9130 - ms-TS-Endpoint-Type contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32c90b0 - struct dsdb_attribute contains 406 bytes in 10 blocks (ref 0) d=(nil) 0x32c8a30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c8eb0 - ms-TS-Endpoint-Plugin contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c8e30 - ms-TS-Endpoint-Plugin contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c8db0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x254ffd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x259f3d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c8d30 - 1.2.840.113556.1.4.2072 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c8ca0 - msTSEndpointPlugin contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32c8c20 - ms-TS-Endpoint-Plugin contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c8ba0 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x32c8520 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c89a0 - ms-TS-Endpoint-Data contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32c8920 - ms-TS-Endpoint-Data contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32c88a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fda030 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x30bfa00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c8820 - 1.2.840.113556.1.4.2070 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c8790 - msTSEndpointData contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c8710 - ms-TS-Endpoint-Data contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32c8690 - struct dsdb_attribute contains 427 bytes in 8 blocks (ref 0) d=(nil) 0x32c7fd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c8490 - ms-TS-Default-To-Main-Printer contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32c8400 - ms-TS-Default-To-Main-Printer contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32c8370 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32c82f0 - 1.2.840.113556.1.4.1988 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c8260 - msTSDefaultToMainPrinter contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32c81d0 - ms-TS-Default-To-Main-Printer contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32c8140 - struct dsdb_attribute contains 424 bytes in 8 blocks (ref 0) d=(nil) 0x32c7a80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c7f40 - ms-TS-Connect-Printer-Drives contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32c7eb0 - ms-TS-Connect-Printer-Drives contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32c7e20 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32c7da0 - 1.2.840.113556.1.4.1987 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c7d10 - msTSConnectPrinterDrives contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32c7c80 - ms-TS-Connect-Printer-Drives contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x32c7bf0 - struct dsdb_attribute contains 420 bytes in 8 blocks (ref 0) d=(nil) 0x32c7530 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c79f0 - ms-TS-Connect-Client-Drives contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32c7960 - ms-TS-Connect-Client-Drives contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32c78d0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32c7850 - 1.2.840.113556.1.4.1986 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c77c0 - msTSConnectClientDrives contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c7730 - ms-TS-Connect-Client-Drives contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32c76a0 - struct dsdb_attribute contains 432 bytes in 8 blocks (ref 0) d=(nil) 0x32c6fe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c74a0 - ms-TS-Broken-Connection-Action contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32c7410 - ms-TS-Broken-Connection-Action contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32c7380 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32c7300 - 1.2.840.113556.1.4.1985 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c7270 - msTSBrokenConnectionAction contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32c71e0 - ms-TS-Broken-Connection-Action contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32c7150 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x32c6b50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c6f50 - ms-TS-Allow-Logon contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c6ed0 - ms-TS-Allow-Logon contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c6e50 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32c6dd0 - 1.2.840.113556.1.4.1979 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c6d40 - msTSAllowLogon contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32c6cc0 - ms-TS-Allow-Logon contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c6920 - struct dsdb_attribute contains 412 bytes in 9 blocks (ref 0) d=(nil) 0x32c6610 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c6ac0 - ms-TPM-OwnerInformation contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c6a30 - ms-TPM-OwnerInformation contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c69a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19be460 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c68a0 - 1.2.840.113556.1.4.1966 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c6810 - msTPM-OwnerInformation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32c63e0 - ms-TPM-OwnerInformation contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c6780 - struct dsdb_attribute contains 406 bytes in 9 blocks (ref 0) d=(nil) 0x32c6050 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c6580 - ms-TAPI-Unique-Identifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32c64f0 - ms-TAPI-Unique-Identifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32c6460 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x23cf310 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c6360 - 1.2.840.113556.1.4.1698 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c62d0 - msTAPI-uid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32c6250 - ms-TAPI-Unique-Identifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32c61c0 - struct dsdb_attribute contains 391 bytes in 8 blocks (ref 0) d=(nil) 0x32c5b40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c5fc0 - ms-TAPI-Protocol-Id contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32c5f40 - ms-TAPI-Protocol-Id contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32c5ec0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c5e40 - 1.2.840.113556.1.4.1699 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c5db0 - msTAPI-ProtocolId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c5d30 - ms-TAPI-Protocol-Id contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32c5cb0 - struct dsdb_attribute contains 387 bytes in 8 blocks (ref 0) d=(nil) 0x32c56b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c5ab0 - ms-TAPI-Ip-Address contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32c5a30 - ms-TAPI-Ip-Address contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32c59b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c5930 - 1.2.840.113556.1.4.1701 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c58a0 - msTAPI-IpAddress contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c5820 - ms-TAPI-Ip-Address contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32c5480 - struct dsdb_attribute contains 407 bytes in 8 blocks (ref 0) d=(nil) 0x32c50f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c5620 - ms-TAPI-Conference-Blob contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c5590 - ms-TAPI-Conference-Blob contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c5500 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c5400 - 1.2.840.113556.1.4.1700 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c5370 - msTAPI-ConferenceBlob contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c52f0 - ms-TAPI-Conference-Blob contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c5260 - struct dsdb_attribute contains 365 bytes in 8 blocks (ref 0) d=(nil) 0x32c4be0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c5060 - MS-SQL-Vines contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32c4fe0 - MS-SQL-Vines contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32c4f60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c4ee0 - 1.2.840.113556.1.4.1379 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c4e50 - mS-SQL-Vines contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32c4dd0 - MS-SQL-Vines contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32c4d50 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x32c46d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c4b50 - MS-SQL-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32c4ad0 - MS-SQL-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32c4a50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c49d0 - 1.2.840.113556.1.4.1388 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c4940 - mS-SQL-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32c48c0 - MS-SQL-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32c4840 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x32c4180 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c4640 - MS-SQL-UnicodeSortOrder contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c45b0 - MS-SQL-UnicodeSortOrder contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c4520 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32c44a0 - 1.2.840.113556.1.4.1372 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c4410 - mS-SQL-UnicodeSortOrder contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c4380 - MS-SQL-UnicodeSortOrder contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c42f0 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x32c3c70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c40f0 - MS-SQL-Type contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c4070 - MS-SQL-Type contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c3ff0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c3f70 - 1.2.840.113556.1.4.1391 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c3ee0 - mS-SQL-Type contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c3e60 - MS-SQL-Type contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c3de0 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x32c3760 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c3be0 - MS-SQL-ThirdParty contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c3b60 - MS-SQL-ThirdParty contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c3ae0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32c3a60 - 1.2.840.113556.1.4.1407 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c39d0 - mS-SQL-ThirdParty contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c3950 - MS-SQL-ThirdParty contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32c38d0 - struct dsdb_attribute contains 365 bytes in 8 blocks (ref 0) d=(nil) 0x32c3250 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c36d0 - MS-SQL-TCPIP contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32c3650 - MS-SQL-TCPIP contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32c35d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c3550 - 1.2.840.113556.1.4.1377 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c34c0 - mS-SQL-TCPIP contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32c3440 - MS-SQL-TCPIP contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32c33c0 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x32c2d40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c31c0 - MS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32c3140 - MS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32c30c0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c3040 - 1.2.840.113556.1.4.1380 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c2fb0 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32c2f30 - MS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32c2eb0 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x32c2830 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c2cb0 - MS-SQL-SPX contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32c2c30 - MS-SQL-SPX contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32c2bb0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c2b30 - 1.2.840.113556.1.4.1376 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c2aa0 - mS-SQL-SPX contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32c2a20 - MS-SQL-SPX contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x32c29a0 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x32c2320 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c27a0 - MS-SQL-SortOrder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c2720 - MS-SQL-SortOrder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c26a0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c2620 - 1.2.840.113556.1.4.1371 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c2590 - mS-SQL-SortOrder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c2510 - MS-SQL-SortOrder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c2490 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x32c1e10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c2290 - MS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c2210 - MS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c2190 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c2110 - 1.2.840.113556.1.4.1396 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c2080 - mS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c2000 - MS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c1f80 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x32c1900 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c1d80 - MS-SQL-ServiceAccount contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c1d00 - MS-SQL-ServiceAccount contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c1c80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c1c00 - 1.2.840.113556.1.4.1369 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c1b70 - mS-SQL-ServiceAccount contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c1af0 - MS-SQL-ServiceAccount contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c1a70 - struct dsdb_attribute contains 405 bytes in 8 blocks (ref 0) d=(nil) 0x32c13f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c1870 - MS-SQL-RegisteredOwner contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32c17f0 - MS-SQL-RegisteredOwner contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32c1770 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c16f0 - 1.2.840.113556.1.4.1364 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c1660 - mS-SQL-RegisteredOwner contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32c15e0 - MS-SQL-RegisteredOwner contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32c1560 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x32c0ee0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c1360 - MS-SQL-Publisher contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c12e0 - MS-SQL-Publisher contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c1260 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c11e0 - 1.2.840.113556.1.4.1402 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c1150 - mS-SQL-Publisher contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c10d0 - MS-SQL-Publisher contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c1050 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x32c09d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c0e50 - MS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c0dd0 - MS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c0d50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c0cd0 - 1.2.840.113556.1.4.1384 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c0c40 - mS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c0bc0 - MS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32c0b40 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x32c04c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c0940 - MS-SQL-NamedPipe contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c08c0 - MS-SQL-NamedPipe contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c0840 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c07c0 - 1.2.840.113556.1.4.1374 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c0730 - mS-SQL-NamedPipe contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c06b0 - MS-SQL-NamedPipe contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32c0630 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x32bffb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c0430 - MS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c03b0 - MS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c0330 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32c02b0 - 1.2.840.113556.1.4.1363 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32c0220 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c01a0 - MS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32c0120 - struct dsdb_attribute contains 397 bytes in 8 blocks (ref 0) d=(nil) 0x32bfaa0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bff20 - MS-SQL-MultiProtocol contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32bfea0 - MS-SQL-MultiProtocol contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32bfe20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bfda0 - 1.2.840.113556.1.4.1375 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bfd10 - mS-SQL-MultiProtocol contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32bfc90 - MS-SQL-MultiProtocol contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32bfc10 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x32bf590 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bfa10 - MS-SQL-Memory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32bf990 - MS-SQL-Memory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32bf910 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bf890 - 1.2.840.113556.1.4.1367 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bf800 - mS-SQL-Memory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32bf780 - MS-SQL-Memory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32bf700 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x32bf080 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bf500 - MS-SQL-Location contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bf480 - MS-SQL-Location contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bf400 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bf380 - 1.2.840.113556.1.4.1366 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bf2f0 - mS-SQL-Location contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bf270 - MS-SQL-Location contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bf1f0 - struct dsdb_attribute contains 405 bytes in 8 blocks (ref 0) d=(nil) 0x32bebf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32beff0 - MS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32bef70 - MS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32beef0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bee70 - 1.2.840.113556.1.4.1381 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bede0 - mS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32bed60 - MS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32be9c0 - struct dsdb_attribute contains 417 bytes in 8 blocks (ref 0) d=(nil) 0x32be620 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32beb60 - MS-SQL-LastDiagnosticDate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32bead0 - MS-SQL-LastDiagnosticDate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32bea40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32be940 - 1.2.840.113556.1.4.1399 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32be8b0 - mS-SQL-LastDiagnosticDate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32be820 - MS-SQL-LastDiagnosticDate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32be790 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x32be110 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32be590 - MS-SQL-LastBackupDate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32be510 - MS-SQL-LastBackupDate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32be490 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32be410 - 1.2.840.113556.1.4.1398 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32be380 - mS-SQL-LastBackupDate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32be300 - MS-SQL-LastBackupDate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32be280 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x32bdc00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32be080 - MS-SQL-Language contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32be000 - MS-SQL-Language contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bdf80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bdf00 - 1.2.840.113556.1.4.1389 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bde70 - mS-SQL-Language contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bddf0 - MS-SQL-Language contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bdd70 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x32bd6f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bdb70 - MS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bdaf0 - MS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bda70 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bd9f0 - 1.2.840.113556.1.4.1401 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bd960 - mS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bd8e0 - MS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bd860 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x32bd1e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bd660 - MS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32bd5e0 - MS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32bd560 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bd4e0 - 1.2.840.113556.1.4.1382 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bd450 - mS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32bd3d0 - MS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32bd350 - struct dsdb_attribute contains 424 bytes in 8 blocks (ref 0) d=(nil) 0x32bcc90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bd150 - MS-SQL-InformationDirectory contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32bd0c0 - MS-SQL-InformationDirectory contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32bd030 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32bcfb0 - 1.2.840.113556.1.4.1392 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bcf20 - mS-SQL-InformationDirectory contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32bce90 - MS-SQL-InformationDirectory contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32bce00 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x32bc780 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bcc00 - MS-SQL-GPSLongitude contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32bcb80 - MS-SQL-GPSLongitude contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32bcb00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bca80 - 1.2.840.113556.1.4.1386 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bc9f0 - mS-SQL-GPSLongitude contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32bc970 - MS-SQL-GPSLongitude contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32bc8f0 - struct dsdb_attribute contains 389 bytes in 8 blocks (ref 0) d=(nil) 0x32bc270 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bc6f0 - MS-SQL-GPSLatitude contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32bc670 - MS-SQL-GPSLatitude contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32bc5f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bc570 - 1.2.840.113556.1.4.1385 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bc4e0 - mS-SQL-GPSLatitude contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32bc460 - MS-SQL-GPSLatitude contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32bc3e0 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x32bbd60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bc1e0 - MS-SQL-GPSHeight contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32bc160 - MS-SQL-GPSHeight contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32bc0e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bc060 - 1.2.840.113556.1.4.1387 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bbfd0 - mS-SQL-GPSHeight contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32bbf50 - MS-SQL-GPSHeight contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32bbed0 - struct dsdb_attribute contains 389 bytes in 8 blocks (ref 0) d=(nil) 0x32bb850 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bbcd0 - MS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32bbc50 - MS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32bbbd0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bbb50 - 1.2.840.113556.1.4.1390 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bbac0 - mS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32bba40 - MS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32bb9c0 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x32bb340 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bb7c0 - MS-SQL-Database contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bb740 - MS-SQL-Database contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bb6c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bb640 - 1.2.840.113556.1.4.1393 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bb5b0 - mS-SQL-Database contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bb530 - MS-SQL-Database contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32bb4b0 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x32bae30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bb2b0 - MS-SQL-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32bb230 - MS-SQL-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32bb1b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bb130 - 1.2.840.113556.1.4.1397 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bb0a0 - mS-SQL-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32bb020 - MS-SQL-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32bafa0 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x32ba920 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bada0 - MS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32bad20 - MS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32baca0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32bac20 - 1.2.840.113556.1.4.1365 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32bab90 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32bab10 - MS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32baa90 - struct dsdb_attribute contains 397 bytes in 8 blocks (ref 0) d=(nil) 0x32ba410 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ba890 - MS-SQL-ConnectionURL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32ba810 - MS-SQL-ConnectionURL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32ba790 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ba710 - 1.2.840.113556.1.4.1383 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ba680 - mS-SQL-ConnectionURL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32ba600 - MS-SQL-ConnectionURL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32ba580 - struct dsdb_attribute contains 380 bytes in 8 blocks (ref 0) d=(nil) 0x32b9f00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ba380 - MS-SQL-Clustered contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32ba300 - MS-SQL-Clustered contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32ba280 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ba200 - 1.2.840.113556.1.4.1373 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ba170 - mS-SQL-Clustered contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32ba0f0 - MS-SQL-Clustered contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32ba070 - struct dsdb_attribute contains 392 bytes in 8 blocks (ref 0) d=(nil) 0x32b99f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b9e70 - MS-SQL-CharacterSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b9df0 - MS-SQL-CharacterSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b9d70 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b9cf0 - 1.2.840.113556.1.4.1370 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b9c60 - mS-SQL-CharacterSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b9be0 - MS-SQL-CharacterSet contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b9b60 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x32b94e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b9960 - MS-SQL-Build contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32b98e0 - MS-SQL-Build contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32b9860 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b97e0 - 1.2.840.113556.1.4.1368 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b9750 - mS-SQL-Build contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32b96d0 - MS-SQL-Build contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32b9650 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x32b8fd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b9450 - MS-SQL-Applications contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b93d0 - MS-SQL-Applications contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b9350 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b92d0 - 1.2.840.113556.1.4.1400 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b9240 - mS-SQL-Applications contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b91c0 - MS-SQL-Applications contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b9140 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x32b8ac0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b8f40 - MS-SQL-AppleTalk contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32b8ec0 - MS-SQL-AppleTalk contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32b8e40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b8dc0 - 1.2.840.113556.1.4.1378 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b8d30 - mS-SQL-AppleTalk contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32b8cb0 - MS-SQL-AppleTalk contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32b8c30 - struct dsdb_attribute contains 472 bytes in 8 blocks (ref 0) d=(nil) 0x32b8530 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b8a30 - MS-SQL-AllowSnapshotFilesFTPDownloading contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x32b8990 - MS-SQL-AllowSnapshotFilesFTPDownloading contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x32b88f0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b8870 - 1.2.840.113556.1.4.1406 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b87e0 - mS-SQL-AllowSnapshotFilesFTPDownloading contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x32b8740 - MS-SQL-AllowSnapshotFilesFTPDownloading contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x32b86a0 - struct dsdb_attribute contains 468 bytes in 8 blocks (ref 0) d=(nil) 0x32b7fe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b84a0 - MS-SQL-AllowQueuedUpdatingSubscription contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x32b8410 - MS-SQL-AllowQueuedUpdatingSubscription contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x32b8380 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b8300 - 1.2.840.113556.1.4.1405 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b8270 - mS-SQL-AllowQueuedUpdatingSubscription contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x32b81e0 - MS-SQL-AllowQueuedUpdatingSubscription contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x32b8150 - struct dsdb_attribute contains 448 bytes in 8 blocks (ref 0) d=(nil) 0x32b7a90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b7f50 - MS-SQL-AllowKnownPullSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32b7ec0 - MS-SQL-AllowKnownPullSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32b7e30 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b7db0 - 1.2.840.113556.1.4.1403 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b7d20 - mS-SQL-AllowKnownPullSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32b7c90 - MS-SQL-AllowKnownPullSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32b7c00 - struct dsdb_attribute contains 480 bytes in 8 blocks (ref 0) d=(nil) 0x32b7500 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b7a00 - MS-SQL-AllowImmediateUpdatingSubscription contains 42 bytes in 1 blocks (ref 0) d=(nil) 0x32b7960 - MS-SQL-AllowImmediateUpdatingSubscription contains 42 bytes in 1 blocks (ref 0) d=(nil) 0x32b78c0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b7840 - 1.2.840.113556.1.4.1404 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b77b0 - mS-SQL-AllowImmediateUpdatingSubscription contains 42 bytes in 1 blocks (ref 0) d=(nil) 0x32b7710 - MS-SQL-AllowImmediateUpdatingSubscription contains 42 bytes in 1 blocks (ref 0) d=(nil) 0x32b7670 - struct dsdb_attribute contains 448 bytes in 8 blocks (ref 0) d=(nil) 0x32b6fb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b7470 - MS-SQL-AllowAnonymousSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32b73e0 - MS-SQL-AllowAnonymousSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32b7350 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b72d0 - 1.2.840.113556.1.4.1394 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b7240 - mS-SQL-AllowAnonymousSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32b71b0 - MS-SQL-AllowAnonymousSubscription contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x32b7120 - struct dsdb_attribute contains 365 bytes in 8 blocks (ref 0) d=(nil) 0x32b6aa0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b6f20 - MS-SQL-Alias contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32b6ea0 - MS-SQL-Alias contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32b6e20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b6da0 - 1.2.840.113556.1.4.1395 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b6d10 - mS-SQL-Alias contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32b6c90 - MS-SQL-Alias contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x32b6c10 - struct dsdb_attribute contains 397 bytes in 9 blocks (ref 0) d=(nil) 0x32b6610 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b6890 - msSFU-30-Yp-Servers contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b6a20 - msSFU-30-Yp-Servers contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b69a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2dd4e20 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b6920 - 1.2.840.113556.1.6.18.1.341 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b6800 - msSFU30YpServers contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32b6780 - msSFU-30-Yp-Servers contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b6470 - struct dsdb_attribute contains 422 bytes in 9 blocks (ref 0) d=(nil) 0x32b60d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b6580 - msSFU-30-Search-Container contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32b64f0 - msSFU-30-Search-Container contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32b6360 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2f1b180 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b63f0 - 1.2.840.113556.1.6.18.1.300 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b62d0 - msSFU30SearchContainer contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32b5f30 - msSFU-30-Search-Container contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32b6240 - struct dsdb_attribute contains 426 bytes in 9 blocks (ref 0) d=(nil) 0x32b5b80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b6040 - msSFU-30-Search-Attributes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32b5fb0 - msSFU-30-Search-Attributes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32b5ea0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2f29060 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b59e0 - 1.2.840.113556.1.6.18.1.304 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b5e10 - msSFU30SearchAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b5d80 - msSFU-30-Search-Attributes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32b5cf0 - struct dsdb_attribute contains 426 bytes in 9 blocks (ref 0) d=(nil) 0x32b55b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b5af0 - msSFU-30-Result-Attributes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32b5a60 - msSFU-30-Result-Attributes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32b58d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2fa8540 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b5960 - 1.2.840.113556.1.6.18.1.305 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b5840 - msSFU30ResultAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b57b0 - msSFU-30-Result-Attributes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32b5720 - struct dsdb_attribute contains 422 bytes in 9 blocks (ref 0) d=(nil) 0x32b5070 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b5520 - msSFU-30-Posix-Member-Of contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32b5490 - msSFU-30-Posix-Member-Of contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32b5380 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x264db00 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b5410 - 1.2.840.113556.1.6.18.1.347 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b52f0 - msSFU30PosixMemberOf contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32b5270 - msSFU-30-Posix-Member-Of contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32b51e0 - struct dsdb_attribute contains 411 bytes in 9 blocks (ref 0) d=(nil) 0x32b4b60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b4e60 - msSFU-30-Posix-Member contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32b4ff0 - msSFU-30-Posix-Member contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32b4f70 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2649b40 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b4ef0 - 1.2.840.113556.1.6.18.1.346 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b4dd0 - msSFU30PosixMember contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32b4d50 - msSFU-30-Posix-Member contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32b4cd0 - struct dsdb_attribute contains 406 bytes in 9 blocks (ref 0) d=(nil) 0x32b4650 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b4950 - msSFU-30-Order-Number contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32b4ae0 - msSFU-30-Order-Number contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32b4a60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2fb1260 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b49e0 - 1.2.840.113556.1.6.18.1.308 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b48c0 - msSFU30OrderNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32b4840 - msSFU-30-Order-Number contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32b47c0 - struct dsdb_attribute contains 436 bytes in 9 blocks (ref 0) d=(nil) 0x32b4100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b45c0 - msSFU-30-NSMAP-Field-Position contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32b4530 - msSFU-30-NSMAP-Field-Position contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32b4420 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31002a0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b44b0 - 1.2.840.113556.1.6.18.1.345 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b4390 - msSFU30NSMAPFieldPosition contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32b4300 - msSFU-30-NSMAP-Field-Position contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32b4270 - struct dsdb_attribute contains 397 bytes in 9 blocks (ref 0) d=(nil) 0x32b3bf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b3ef0 - msSFU-30-Nis-Domain contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b4080 - msSFU-30-Nis-Domain contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b4000 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31e9500 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b3f80 - 1.2.840.113556.1.6.18.1.339 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b3e60 - msSFU30NisDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32b3de0 - msSFU-30-Nis-Domain contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b3d60 - struct dsdb_attribute contains 447 bytes in 9 blocks (ref 0) d=(nil) 0x32b36a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b3b60 - msSFU-30-Netgroup-User-At-Domain contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x32b3ad0 - msSFU-30-Netgroup-User-At-Domain contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x32b39c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31ed990 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b3a50 - 1.2.840.113556.1.6.18.1.349 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b3930 - msSFU30NetgroupUserAtDomain contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b38a0 - msSFU-30-Netgroup-User-At-Domain contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x32b3810 - struct dsdb_attribute contains 447 bytes in 9 blocks (ref 0) d=(nil) 0x32b3150 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b3610 - msSFU-30-Netgroup-Host-At-Domain contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x32b3580 - msSFU-30-Netgroup-Host-At-Domain contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x32b3470 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x325f4b0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b3500 - 1.2.840.113556.1.6.18.1.348 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b33e0 - msSFU30NetgroupHostAtDomain contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b3350 - msSFU-30-Netgroup-Host-At-Domain contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x32b32c0 - struct dsdb_attribute contains 374 bytes in 9 blocks (ref 0) d=(nil) 0x32b2c40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b2f40 - msSFU-30-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32b30d0 - msSFU-30-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32b3050 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x326c1c0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b2fd0 - 1.2.840.113556.1.6.18.1.309 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b2eb0 - msSFU30Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x32b2e30 - msSFU-30-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x32b2db0 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x32b2700 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b2bb0 - msSFU-30-Max-Uid-Number contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b2b20 - msSFU-30-Max-Uid-Number contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b2a10 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b2aa0 - 1.2.840.113556.1.6.18.1.343 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b2980 - msSFU30MaxUidNumber contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b2900 - msSFU-30-Max-Uid-Number contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b2870 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x32b2240 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b2670 - msSFU-30-Max-Gid-Number contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b25e0 - msSFU-30-Max-Gid-Number contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b24d0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b2560 - 1.2.840.113556.1.6.18.1.342 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b2440 - msSFU30MaxGidNumber contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b20a0 - msSFU-30-Max-Gid-Number contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b23b0 - struct dsdb_attribute contains 429 bytes in 9 blocks (ref 0) d=(nil) 0x32b1c70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b21b0 - msSFU-30-Master-Server-Name contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b2120 - msSFU-30-Master-Server-Name contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b1f90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b34450 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b2020 - 1.2.840.113556.1.6.18.1.307 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b1f00 - msSFU30MasterServerName contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b1e70 - msSFU-30-Master-Server-Name contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b1de0 - struct dsdb_attribute contains 398 bytes in 9 blocks (ref 0) d=(nil) 0x32b1760 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b1a60 - msSFU-30-Map-Filter contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b1bf0 - msSFU-30-Map-Filter contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b1b70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1cc29b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b1af0 - 1.2.840.113556.1.6.18.1.306 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b19d0 - msSFU30MapFilter contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32b1950 - msSFU-30-Map-Filter contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b18d0 - struct dsdb_attribute contains 397 bytes in 9 blocks (ref 0) d=(nil) 0x32b12d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b1550 - msSFU-30-Key-Values contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b16e0 - msSFU-30-Key-Values contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b1660 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e5fab0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b15e0 - 1.2.840.113556.1.6.18.1.324 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b14c0 - msSFU30KeyValues contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32b1440 - msSFU-30-Key-Values contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32b1130 - struct dsdb_attribute contains 414 bytes in 9 blocks (ref 0) d=(nil) 0x32b0d10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b1240 - msSFU-30-Key-Attributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b11b0 - msSFU-30-Key-Attributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b1020 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ecfc20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b10b0 - 1.2.840.113556.1.6.18.1.301 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b0f90 - msSFU30KeyAttributes contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x32b0f10 - msSFU-30-Key-Attributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b0e80 - struct dsdb_attribute contains 424 bytes in 8 blocks (ref 0) d=(nil) 0x32b0840 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b0c80 - msSFU-30-Is-Valid-Container contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b0bf0 - msSFU-30-Is-Valid-Container contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b0b60 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32b06a0 - 1.2.840.113556.1.6.18.1.350 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b0ad0 - msSFU30IsValidContainer contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b0a40 - msSFU-30-Is-Valid-Container contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b09b0 - struct dsdb_attribute contains 441 bytes in 9 blocks (ref 0) d=(nil) 0x32b02f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b07b0 - msSFU-30-Intra-Field-Separator contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32b0720 - msSFU-30-Intra-Field-Separator contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32b0610 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f041d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b0150 - 1.2.840.113556.1.6.18.1.303 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32b0580 - msSFU30IntraFieldSeparator contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32b04f0 - msSFU-30-Intra-Field-Separator contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32b0460 - struct dsdb_attribute contains 418 bytes in 9 blocks (ref 0) d=(nil) 0x32afd30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32b0260 - msSFU-30-Field-Separator contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32b01d0 - msSFU-30-Field-Separator contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32b0040 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fe99e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32b00d0 - 1.2.840.113556.1.6.18.1.302 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32affb0 - msSFU30FieldSeparator contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32aff30 - msSFU-30-Field-Separator contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32afea0 - struct dsdb_attribute contains 386 bytes in 9 blocks (ref 0) d=(nil) 0x32af820 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32afb20 - msSFU-30-Domains contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32afcb0 - msSFU-30-Domains contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32afc30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2018700 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32afbb0 - 1.2.840.113556.1.6.18.1.340 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32afa90 - msSFU30Domains contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32afa10 - msSFU-30-Domains contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32af990 - struct dsdb_attribute contains 405 bytes in 9 blocks (ref 0) d=(nil) 0x32af310 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32af610 - msSFU-30-Crypt-Method contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32af7a0 - msSFU-30-Crypt-Method contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32af720 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x202fdc0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32af6a0 - 1.2.840.113556.1.6.18.1.352 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32af580 - msSFU30CryptMethod contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x32af500 - msSFU-30-Crypt-Method contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32af480 - struct dsdb_attribute contains 386 bytes in 9 blocks (ref 0) d=(nil) 0x32aee80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32af100 - msSFU-30-Aliases contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32af290 - msSFU-30-Aliases contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32af210 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2057d50 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32af190 - 1.2.840.113556.1.6.18.1.323 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32af070 - msSFU30Aliases contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x32aeff0 - msSFU-30-Aliases contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x32aec50 - struct dsdb_attribute contains 432 bytes in 8 blocks (ref 0) d=(nil) 0x32ae8c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aedf0 - ms-RRAS-Vendor-Attribute-Entry contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32aed60 - ms-RRAS-Vendor-Attribute-Entry contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32aecd0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32aebd0 - 1.2.840.113556.1.4.883 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32aeb50 - msRRASVendorAttributeEntry contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32aeac0 - ms-RRAS-Vendor-Attribute-Entry contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32aea30 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x32ae3c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ae830 - ms-RRAS-Attribute contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ae7b0 - ms-RRAS-Attribute contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ae730 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32ae6b0 - 1.2.840.113556.1.4.884 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32ae630 - msRRASAttribute contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x32ae5b0 - ms-RRAS-Attribute contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32ae530 - struct dsdb_attribute contains 400 bytes in 8 blocks (ref 0) d=(nil) 0x32adeb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ae330 - msRASSavedFramedRoute contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ae2b0 - msRASSavedFramedRoute contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ae230 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ae1b0 - 1.2.840.113556.1.4.1191 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ae120 - msRASSavedFramedRoute contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ae0a0 - msRASSavedFramedRoute contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x32ae020 - struct dsdb_attribute contains 416 bytes in 8 blocks (ref 0) d=(nil) 0x32ad960 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ade20 - msRASSavedFramedIPAddress contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32add90 - msRASSavedFramedIPAddress contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32add00 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32adc80 - 1.2.840.113556.1.4.1190 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32adbf0 - msRASSavedFramedIPAddress contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32adb60 - msRASSavedFramedIPAddress contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32adad0 - struct dsdb_attribute contains 412 bytes in 8 blocks (ref 0) d=(nil) 0x32ad410 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ad8d0 - msRASSavedCallbackNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ad840 - msRASSavedCallbackNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ad7b0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ad730 - 1.2.840.113556.1.4.1189 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ad6a0 - msRASSavedCallbackNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ad610 - msRASSavedCallbackNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ad580 - struct dsdb_attribute contains 392 bytes in 8 blocks (ref 0) d=(nil) 0x32acf00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ad380 - msRADIUSServiceType contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32ad300 - msRADIUSServiceType contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32ad280 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ad200 - 1.2.840.113556.1.4.1171 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ad170 - msRADIUSServiceType contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32ad0f0 - msRADIUSServiceType contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32ad070 - struct dsdb_attribute contains 439 bytes in 9 blocks (ref 0) d=(nil) 0x32ac9b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ace70 - ms-RADIUS-SavedFramedIpv6Route contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32acde0 - ms-RADIUS-SavedFramedIpv6Route contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32acd50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x21bbd30 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32accd0 - 1.2.840.113556.1.4.1918 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32acc40 - msRADIUS-SavedFramedIpv6Route contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32acbb0 - ms-RADIUS-SavedFramedIpv6Route contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32acb20 - struct dsdb_attribute contains 443 bytes in 9 blocks (ref 0) d=(nil) 0x32ac460 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ac920 - ms-RADIUS-SavedFramedIpv6Prefix contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x32ac890 - ms-RADIUS-SavedFramedIpv6Prefix contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x32ac800 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x22c0fe0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ac780 - 1.2.840.113556.1.4.1916 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ac6f0 - msRADIUS-SavedFramedIpv6Prefix contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32ac660 - ms-RADIUS-SavedFramedIpv6Prefix contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x32ac5d0 - struct dsdb_attribute contains 447 bytes in 9 blocks (ref 0) d=(nil) 0x32abf10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ac3d0 - ms-RADIUS-SavedFramedInterfaceId contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x32ac340 - ms-RADIUS-SavedFramedInterfaceId contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x32ac2b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2401310 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ac230 - 1.2.840.113556.1.4.1914 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ac1a0 - msRADIUS-SavedFramedInterfaceId contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x32ac110 - ms-RADIUS-SavedFramedInterfaceId contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x32ac080 - struct dsdb_attribute contains 392 bytes in 8 blocks (ref 0) d=(nil) 0x32aba00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32abe80 - msRADIUSFramedRoute contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32abe00 - msRADIUSFramedRoute contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32abd80 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32abd00 - 1.2.840.113556.1.4.1158 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32abc70 - msRADIUSFramedRoute contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32abbf0 - msRADIUSFramedRoute contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32abb70 - struct dsdb_attribute contains 419 bytes in 9 blocks (ref 0) d=(nil) 0x32ab4b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ab970 - ms-RADIUS-FramedIpv6Route contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32ab8e0 - ms-RADIUS-FramedIpv6Route contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32ab850 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x249ad40 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ab7d0 - 1.2.840.113556.1.4.1917 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ab740 - msRADIUS-FramedIpv6Route contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32ab6b0 - ms-RADIUS-FramedIpv6Route contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32ab620 - struct dsdb_attribute contains 423 bytes in 9 blocks (ref 0) d=(nil) 0x32aaf60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ab420 - ms-RADIUS-FramedIpv6Prefix contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32ab390 - ms-RADIUS-FramedIpv6Prefix contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32ab300 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x25cebe0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32ab280 - 1.2.840.113556.1.4.1915 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32ab1f0 - msRADIUS-FramedIpv6Prefix contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x32ab160 - ms-RADIUS-FramedIpv6Prefix contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32ab0d0 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x32aaa10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aaed0 - msRADIUSFramedIPAddress contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aae40 - msRADIUSFramedIPAddress contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aadb0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32aad30 - 1.2.840.113556.1.4.1153 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aaca0 - msRADIUSFramedIPAddress contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aac10 - msRADIUSFramedIPAddress contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aab80 - struct dsdb_attribute contains 427 bytes in 9 blocks (ref 0) d=(nil) 0x32aa4c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aa980 - ms-RADIUS-FramedInterfaceId contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32aa8f0 - ms-RADIUS-FramedInterfaceId contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32aa860 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2b27090 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32aa7e0 - 1.2.840.113556.1.4.1913 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aa750 - msRADIUS-FramedInterfaceId contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x32aa6c0 - ms-RADIUS-FramedInterfaceId contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32aa630 - struct dsdb_attribute contains 404 bytes in 8 blocks (ref 0) d=(nil) 0x32a9fb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aa430 - msRADIUSCallbackNumber contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32aa3b0 - msRADIUSCallbackNumber contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32aa330 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32aa2b0 - 1.2.840.113556.1.4.1145 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32aa220 - msRADIUSCallbackNumber contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32aa1a0 - msRADIUSCallbackNumber contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x32aa120 - struct dsdb_attribute contains 435 bytes in 8 blocks (ref 0) d=(nil) 0x32a9a60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32a9f20 - ms-PKI-Template-Schema-Version contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32a9e90 - ms-PKI-Template-Schema-Version contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32a9e00 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32a9d80 - 1.2.840.113556.1.4.1434 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32a9cf0 - msPKI-Template-Schema-Version contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x32a9c60 - ms-PKI-Template-Schema-Version contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32a9bd0 - struct dsdb_attribute contains 435 bytes in 8 blocks (ref 0) d=(nil) 0x32a9740 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32a99d0 - ms-PKI-Template-Minor-Revision contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32a9940 - ms-PKI-Template-Minor-Revision contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32a98b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1e88110 - 1.2.840.113556.1.4.1435 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23e0120 - msPKI-Template-Minor-Revision contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x23e0090 - ms-PKI-Template-Minor-Revision contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x23c3aa0 - struct dsdb_attribute contains 420 bytes in 8 blocks (ref 0) d=(nil) 0x32a95d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23c3a10 - ms-PKI-Supersede-Templates contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1d7d170 - ms-PKI-Supersede-Templates contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1d7d0e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1e88090 - 1.2.840.113556.1.4.1437 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x217a140 - msPKI-Supersede-Templates contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x217a0b0 - ms-PKI-Supersede-Templates contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x21d37f0 - struct dsdb_attribute contains 384 bytes in 9 blocks (ref 0) d=(nil) 0x32a9460 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21d3760 - ms-PKI-Site-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2362020 - ms-PKI-Site-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2361fa0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2db3300 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2629710 - 1.2.840.113556.1.4.2077 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2629680 - msPKI-Site-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a43050 - ms-PKI-Site-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1b5ccb0 - struct dsdb_attribute contains 407 bytes in 8 blocks (ref 0) d=(nil) 0x32a92f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a42fc0 - ms-PKI-RoamingTimeStamp contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a6ea50 - ms-PKI-RoamingTimeStamp contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e9c0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1b5cc30 - 1.2.840.113556.1.4.1892 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bd28d0 - msPKIRoamingTimeStamp contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1bd2850 - ms-PKI-RoamingTimeStamp contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cce920 - struct dsdb_attribute contains 391 bytes in 8 blocks (ref 0) d=(nil) 0x32a9180 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cce890 - ms-PKI-RA-Signature contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1d4beb0 - ms-PKI-RA-Signature contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1d4be30 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1e8cb40 - 1.2.840.113556.1.4.1429 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e8cab0 - msPKI-RA-Signature contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1ec0030 - ms-PKI-RA-Signature contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1ebffb0 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x32a9010 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f14200 - ms-PKI-RA-Policies contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1f14180 - ms-PKI-RA-Policies contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1ff9d30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1ff9cb0 - 1.2.840.113556.1.4.1438 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x200cfb0 - msPKI-RA-Policies contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x200cf30 - ms-PKI-RA-Policies contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x214d380 - struct dsdb_attribute contains 436 bytes in 8 blocks (ref 0) d=(nil) 0x32a8ea0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2104c30 - ms-PKI-RA-Application-Policies contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x2104ba0 - ms-PKI-RA-Application-Policies contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x214d400 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21db580 - 1.2.840.113556.1.4.1675 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21db4f0 - msPKI-RA-Application-Policies contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x21eb660 - ms-PKI-RA-Application-Policies contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x21eb5d0 - struct dsdb_attribute contains 407 bytes in 8 blocks (ref 0) d=(nil) 0x32a8d30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2286f90 - ms-PKI-Private-Key-Flag contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2286f00 - ms-PKI-Private-Key-Flag contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22c09a0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x22c0920 - 1.2.840.113556.1.4.1431 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x230a750 - msPKI-Private-Key-Flag contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x230a6d0 - ms-PKI-Private-Key-Flag contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x231abe0 - struct dsdb_attribute contains 408 bytes in 9 blocks (ref 0) d=(nil) 0x32a8bc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x231ab50 - ms-PKI-OID-User-Notice contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x232b280 - ms-PKI-OID-User-Notice contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x232b200 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a59580 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2463210 - 1.2.840.113556.1.4.1673 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2463180 - msPKI-OID-User-Notice contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2543ce0 - ms-PKI-OID-User-Notice contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x264bf70 - struct dsdb_attribute contains 415 bytes in 9 blocks (ref 0) d=(nil) 0x32a8a50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2543c50 - ms-PKI-OID-LocalizedName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x25f2ea0 - ms-PKI-OID-LocalizedName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x25f2e10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x214d230 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x264bef0 - 1.2.840.113556.1.4.1712 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a6fcf0 - msPKI-OIDLocalizedName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a6fc70 - ms-PKI-OID-LocalizedName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19e9b00 - struct dsdb_attribute contains 376 bytes in 9 blocks (ref 0) d=(nil) 0x32a88e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19e9a70 - ms-PKI-OID-CPS contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1aa0ac0 - ms-PKI-OID-CPS contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1aa0a40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x21d3e30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2658310 - 1.2.840.113556.1.4.1672 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2658280 - msPKI-OID-CPS contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2726c70 - ms-PKI-OID-CPS contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2726bf0 - struct dsdb_attribute contains 395 bytes in 8 blocks (ref 0) d=(nil) 0x32a8770 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x196a410 - ms-PKI-OID-Attribute contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x196a390 - ms-PKI-OID-Attribute contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1a8f640 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1a8f5c0 - 1.2.840.113556.1.4.1671 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28f3f40 - msPKI-OID-Attribute contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x28f3ec0 - ms-PKI-OID-Attribute contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2e46c60 - struct dsdb_attribute contains 407 bytes in 8 blocks (ref 0) d=(nil) 0x32a8600 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e46bd0 - ms-PKI-Minimal-Key-Size contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20a8a60 - ms-PKI-Minimal-Key-Size contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20a89d0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x23e86d0 - 1.2.840.113556.1.4.1433 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23e8640 - msPKI-Minimal-Key-Size contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x24c24e0 - ms-PKI-Minimal-Key-Size contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3173250 - struct dsdb_attribute contains 420 bytes in 9 blocks (ref 0) d=(nil) 0x32a8490 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31731c0 - ms-PKI-Enrollment-Servers contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x316e1b0 - ms-PKI-Enrollment-Servers contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x316e120 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x22075b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x24c2460 - 1.2.840.113556.1.4.2076 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ddc920 - msPKI-Enrollment-Servers contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2ddc890 - ms-PKI-Enrollment-Servers contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2ee1ce0 - struct dsdb_attribute contains 403 bytes in 8 blocks (ref 0) d=(nil) 0x32a8320 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ee1c50 - ms-PKI-Enrollment-Flag contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f69800 - ms-PKI-Enrollment-Flag contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f69780 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1a3afa0 - 1.2.840.113556.1.4.1430 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a3af10 - msPKI-Enrollment-Flag contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1bb16c0 - ms-PKI-Enrollment-Flag contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1bb1640 - struct dsdb_attribute contains 413 bytes in 9 blocks (ref 0) d=(nil) 0x32a81b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f60fd0 - ms-PKI-DPAPIMasterKeys contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1f60f50 - ms-PKI-DPAPIMasterKeys contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2736230 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x25852f0 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x27361b0 - 1.2.840.113556.1.4.1893 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28f0850 - msPKIDPAPIMasterKeys contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x28f07d0 - ms-PKI-DPAPIMasterKeys contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28f9010 - struct dsdb_attribute contains 452 bytes in 9 blocks (ref 0) d=(nil) 0x32a8040 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28f8f80 - ms-PKI-Credential-Roaming-Tokens contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x2d41700 - ms-PKI-Credential-Roaming-Tokens contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x2d41670 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2581170 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x31e8cb0 - 1.2.840.113556.1.4.2050 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f63fe0 - msPKI-CredentialRoamingTokens contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2f63f50 - ms-PKI-Credential-Roaming-Tokens contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x30a0400 - struct dsdb_attribute contains 412 bytes in 8 blocks (ref 0) d=(nil) 0x32a7ed0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30a0370 - ms-PKI-Cert-Template-OID contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x309b2b0 - ms-PKI-Cert-Template-OID contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x309b220 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a370e0 - 1.2.840.113556.1.4.1436 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31e8c20 - msPKI-Cert-Template-OID contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3210e50 - ms-PKI-Cert-Template-OID contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3210dc0 - struct dsdb_attribute contains 416 bytes in 8 blocks (ref 0) d=(nil) 0x32a7d60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19e19a0 - ms-PKI-Certificate-Policy contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19e1910 - ms-PKI-Certificate-Policy contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1a37160 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1bb6110 - 1.2.840.113556.1.4.1439 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bb6080 - msPKI-Certificate-Policy contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1dce130 - ms-PKI-Certificate-Policy contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1dce0a0 - struct dsdb_attribute contains 427 bytes in 8 blocks (ref 0) d=(nil) 0x32a7bf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e4f180 - ms-PKI-Certificate-Name-Flag contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1e4f0f0 - ms-PKI-Certificate-Name-Flag contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2169880 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x22abd20 - 1.2.840.113556.1.4.1432 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21697f0 - msPKI-Certificate-Name-Flag contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2171c70 - ms-PKI-Certificate-Name-Flag contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2171be0 - struct dsdb_attribute contains 464 bytes in 8 blocks (ref 0) d=(nil) 0x32a7a80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22a7bd0 - ms-PKI-Certificate-Application-Policy contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x22a7b40 - ms-PKI-Certificate-Application-Policy contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x22abda0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x25eeb70 - 1.2.840.113556.1.4.1674 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25eeae0 - msPKI-Certificate-Application-Policy contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x26253d0 - ms-PKI-Certificate-Application-Policy contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x2625340 - struct dsdb_attribute contains 425 bytes in 9 blocks (ref 0) d=(nil) 0x32a7910 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x272e4e0 - ms-PKI-AccountCredentials contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x272e450 - ms-PKI-AccountCredentials contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x29bd570 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x256d2b0 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x29bd4f0 - 1.2.840.113556.1.4.1894 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29dae60 - msPKIAccountCredentials contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29dadd0 - ms-PKI-AccountCredentials contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2b6bc60 - struct dsdb_attribute contains 416 bytes in 8 blocks (ref 0) d=(nil) 0x32a77a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b6bbd0 - msNPSavedCallingStationID contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2c3e690 - msNPSavedCallingStationID contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2c3e600 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e86ac0 - 1.2.840.113556.1.4.1130 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e86a30 - msNPSavedCallingStationID contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2ead060 - msNPSavedCallingStationID contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2eacfd0 - struct dsdb_attribute contains 396 bytes in 8 blocks (ref 0) d=(nil) 0x32a7630 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ed83f0 - msNPCallingStationID contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2ed8370 - msNPCallingStationID contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2fb9680 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2fb9600 - 1.2.840.113556.1.4.1124 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fd4d20 - msNPCallingStationID contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2fd4ca0 - msNPCallingStationID contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3036730 - struct dsdb_attribute contains 392 bytes in 8 blocks (ref 0) d=(nil) 0x32a74c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30366a0 - msNPCalledStationID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3060190 - msNPCalledStationID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3060110 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x310d890 - 1.2.840.113556.1.4.1123 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x310d800 - msNPCalledStationID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3108940 - msNPCalledStationID contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x31088c0 - struct dsdb_attribute contains 376 bytes in 8 blocks (ref 0) d=(nil) 0x32a7350 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3132890 - msNPAllowDialin contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3132810 - msNPAllowDialin contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x31e4000 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x31e3f80 - 1.2.840.113556.1.4.1119 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x323f5b0 - msNPAllowDialin contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x323f530 - msNPAllowDialin contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1fb5e30 - struct dsdb_attribute contains 457 bytes in 9 blocks (ref 0) d=(nil) 0x32a71e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3262d00 - ms-net-ieee-8023-GP-PolicyReserved contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x3262c70 - ms-net-ieee-8023-GP-PolicyReserved contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1fb5eb0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x232b8f0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a77260 - 1.2.840.113556.1.4.1956 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19f54e0 - ms-net-ieee-8023-GP-PolicyReserved contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x19f5450 - ms-net-ieee-8023-GP-PolicyReserved contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1a1fb90 - struct dsdb_attribute contains 441 bytes in 9 blocks (ref 0) d=(nil) 0x32a7070 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a1fb00 - ms-net-ieee-8023-GP-PolicyGUID contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1a27850 - ms-net-ieee-8023-GP-PolicyGUID contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1a277c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b70c40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1adc800 - 1.2.840.113556.1.4.1954 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a771d0 - ms-net-ieee-8023-GP-PolicyGUID contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1a836b0 - ms-net-ieee-8023-GP-PolicyGUID contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1a83620 - struct dsdb_attribute contains 441 bytes in 9 blocks (ref 0) d=(nil) 0x32a6f00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ad8a10 - ms-net-ieee-8023-GP-PolicyData contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1ad8980 - ms-net-ieee-8023-GP-PolicyData contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1adc880 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ccb390 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1e77b60 - 1.2.840.113556.1.4.1955 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c92cd0 - ms-net-ieee-8023-GP-PolicyData contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1c92c40 - ms-net-ieee-8023-GP-PolicyData contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1ccaaf0 - struct dsdb_attribute contains 461 bytes in 9 blocks (ref 0) d=(nil) 0x32a6d90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ccaa60 - ms-net-ieee-80211-GP-PolicyReserved contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1db5ba0 - ms-net-ieee-80211-GP-PolicyReserved contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1db5b10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e46fc0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1f5d110 - 1.2.840.113556.1.4.1953 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e77ad0 - ms-net-ieee-80211-GP-PolicyReserved contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1ef7750 - ms-net-ieee-80211-GP-PolicyReserved contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1ef76c0 - struct dsdb_attribute contains 445 bytes in 9 blocks (ref 0) d=(nil) 0x32a6c20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f03860 - ms-net-ieee-80211-GP-PolicyGUID contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x1f037d0 - ms-net-ieee-80211-GP-PolicyGUID contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x1f5d190 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e4fa10 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x220ac60 - 1.2.840.113556.1.4.1951 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20b0120 - ms-net-ieee-80211-GP-PolicyGUID contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x20b0090 - ms-net-ieee-80211-GP-PolicyGUID contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x20c3a70 - struct dsdb_attribute contains 445 bytes in 9 blocks (ref 0) d=(nil) 0x32a6ab0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20c39e0 - ms-net-ieee-80211-GP-PolicyData contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x20cf540 - ms-net-ieee-80211-GP-PolicyData contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x20cf4b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x209bd80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x220abe0 - 1.2.840.113556.1.4.1952 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22207f0 - ms-net-ieee-80211-GP-PolicyData contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2220760 - ms-net-ieee-80211-GP-PolicyData contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2245bf0 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x32a6940 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2245b60 - MSMQ-Version contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x226e220 - MSMQ-Version contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x226e1a0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2344d20 - 1.2.840.113556.1.4.942 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2344ca0 - mSMQVersion contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x234d770 - MSMQ-Version contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x234d6f0 - struct dsdb_attribute contains 375 bytes in 10 blocks (ref 0) d=(nil) 0x32a67d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23b77a0 - MSMQ-User-Sid contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x23b7720 - MSMQ-User-Sid contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x24cece0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2381dc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x28f98a0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x24cec60 - 1.2.840.113556.1.4.1337 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25778f0 - mSMQUserSid contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2577870 - MSMQ-User-Sid contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x257f5e0 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x32a6660 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x257f550 - MSMQ-Transactional contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x25c6f80 - MSMQ-Transactional contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x25c6f00 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x262cec0 - 1.2.840.113556.1.4.926 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x262ce40 - mSMQTransactional contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x265fa50 - MSMQ-Transactional contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x265f9d0 - struct dsdb_attribute contains 363 bytes in 10 blocks (ref 0) d=(nil) 0x32a64f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x266b820 - MSMQ-Sites contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x266b7a0 - MSMQ-Sites contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x27afdb0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2953db0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x299be00 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x27afd30 - 1.2.840.113556.1.4.927 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2844510 - mSMQSites contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2844490 - MSMQ-Sites contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2883850 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x32a6380 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28837c0 - MSMQ-Site-Name-Ex contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x287ff10 - MSMQ-Site-Name-Ex contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x287fe90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2947110 - 1.2.840.113556.1.4.1416 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2947080 - mSMQSiteNameEx contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2952fd0 - MSMQ-Site-Name-Ex contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2952f50 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x32a6210 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29c1b70 - MSMQ-Site-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x29c1af0 - MSMQ-Site-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x29d70e0 - 2.5.5.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x29d7060 - 1.2.840.113556.1.4.965 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a239d0 - mSMQSiteName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2a23950 - MSMQ-Site-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2a1f6f0 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x32a60a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a1f660 - MSMQ-Site-ID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2a3c020 - MSMQ-Site-ID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2a3bfa0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2cd7970 - 1.2.840.113556.1.4.953 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2cd78f0 - mSMQSiteID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2ce6ea0 - MSMQ-Site-ID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2ce6e20 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x32a5f30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d2d670 - MSMQ-Site-Gates-Mig contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2d2d5f0 - MSMQ-Site-Gates-Mig contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2dd91a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25251a0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2dd9120 - 1.2.840.113556.1.4.1310 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e61ae0 - mSMQSiteGatesMig contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2e61a60 - MSMQ-Site-Gates-Mig contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2e6b760 - struct dsdb_attribute contains 383 bytes in 9 blocks (ref 0) d=(nil) 0x32a5dc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e6b6d0 - MSMQ-Site-Gates contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2e79540 - MSMQ-Site-Gates contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2e794c0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2521150 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2ea7e10 - 1.2.840.113556.1.4.945 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ea7d90 - mSMQSiteGates contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2ecaf70 - MSMQ-Site-Gates contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2ecaef0 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x32a5c50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ec59d0 - MSMQ-Site-Foreign contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ec5950 - MSMQ-Site-Foreign contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2f03670 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2f035f0 - 1.2.840.113556.1.4.961 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f11480 - mSMQSiteForeign contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2f11400 - MSMQ-Site-Foreign contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2f3e3b0 - struct dsdb_attribute contains 367 bytes in 9 blocks (ref 0) d=(nil) 0x32a5ae0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f3e320 - MSMQ-Site-2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2f4d150 - MSMQ-Site-2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2f4d0d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25192e0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2f964f0 - 1.2.840.113556.1.4.944 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f96470 - mSMQSite2 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2f91ce0 - MSMQ-Site-2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2f91c60 - struct dsdb_attribute contains 367 bytes in 9 blocks (ref 0) d=(nil) 0x32a5970 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fac9e0 - MSMQ-Site-1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2fac960 - MSMQ-Site-1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2fcf810 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25152e0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2fcf790 - 1.2.840.113556.1.4.943 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x300c280 - mSMQSite1 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x300c200 - MSMQ-Site-1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3015f80 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x32a5800 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3015ef0 - MSMQ-Sign-Key contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x303b5a0 - MSMQ-Sign-Key contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x303b520 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x305bc80 - 1.2.840.113556.1.4.937 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x305bc00 - mSMQSignKey contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3084220 - MSMQ-Sign-Key contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x30ad640 - struct dsdb_attribute contains 421 bytes in 9 blocks (ref 0) d=(nil) 0x32a5690 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3084190 - MSMQ-Sign-Certificates-Mig contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x307fb20 - MSMQ-Sign-Certificates-Mig contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x307fa90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x29caeb0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30ad5c0 - 1.2.840.113556.1.4.967 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x30d11a0 - mSMQSignCertificatesMig contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30d1110 - MSMQ-Sign-Certificates-Mig contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x30ecdb0 - struct dsdb_attribute contains 406 bytes in 9 blocks (ref 0) d=(nil) 0x32a5520 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30ecd20 - MSMQ-Sign-Certificates contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x30fb700 - MSMQ-Sign-Certificates contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x30fb680 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x29d31f0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x313b680 - 1.2.840.113556.1.4.947 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x313b600 - mSMQSignCertificates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3148bb0 - MSMQ-Sign-Certificates contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3148b30 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x32a53b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3156ce0 - MSMQ-Service-Type contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3156c60 - MSMQ-Service-Type contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x318fe70 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x318fdf0 - 1.2.840.113556.1.4.930 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x31a67c0 - mSMQServiceType contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x31a6740 - MSMQ-Service-Type contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x31bdd60 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x32a5240 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31bdcd0 - MSMQ-Services contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x31cd190 - MSMQ-Services contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x31cd110 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x32078c0 - 1.2.840.113556.1.4.950 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3207840 - mSMQServices contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3214ce0 - MSMQ-Services contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x3214c60 - struct dsdb_attribute contains 391 bytes in 8 blocks (ref 0) d=(nil) 0x32a50d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3243bc0 - MSMQ-Secured-Source contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3243b40 - MSMQ-Secured-Source contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x326b940 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x326b8c0 - 1.2.840.113556.1.4.1713 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3278f80 - MSMQ-SecuredSource contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3278f00 - MSMQ-Secured-Source contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x32952e0 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x32a4f60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3295250 - MSMQ-Routing-Services contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1e3a250 - MSMQ-Routing-Services contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1e3a1d0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3224ea0 - 1.2.840.113556.1.4.1227 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3224e10 - mSMQRoutingServices contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19c2850 - MSMQ-Routing-Services contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19c27d0 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x32a4df0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ddaa0 - MSMQ-Routing-Service contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19dda20 - MSMQ-Routing-Service contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1a04d70 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1a04cf0 - 1.2.840.113556.1.4.1237 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a102a0 - mSMQRoutingService contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1a10220 - MSMQ-Routing-Service contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1a17ed0 - struct dsdb_attribute contains 425 bytes in 10 blocks (ref 0) d=(nil) 0x32a4c80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a10750 - MSMQ-Recipient-FormatName contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1a106c0 - MSMQ-Recipient-FormatName contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1a17f50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x29db6d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2b6c4d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a27c90 - 1.2.840.113556.1.4.1695 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a27c00 - msMQ-Recipient-FormatName contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1a2f520 - MSMQ-Recipient-FormatName contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1a2f490 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x32a4b10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a33390 - MSMQ-Quota contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1a33310 - MSMQ-Quota contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1a4a7d0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1a4a750 - 1.2.840.113556.1.4.919 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1a5dda0 - mSMQQuota contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1a5dd20 - MSMQ-Quota contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1a65630 - struct dsdb_attribute contains 382 bytes in 10 blocks (ref 0) d=(nil) 0x32a49a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a655a0 - MSMQ-Queue-Type contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e4d0 - MSMQ-Queue-Type contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e450 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2c21d50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2cc3600 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a94270 - 1.2.840.113556.1.4.917 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1a941f0 - mSMQQueueType contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1a989d0 - MSMQ-Queue-Type contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a98950 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x32a4830 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1aa89e0 - MSMQ-Queue-Quota contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1aa8960 - MSMQ-Queue-Quota contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1b28a70 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1b289f0 - 1.2.840.113556.1.4.962 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1b688e0 - mSMQQueueQuota contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1b68860 - MSMQ-Queue-Quota contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1b703d0 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x32a46c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b70340 - MSMQ-Queue-Name-Ext contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1b85010 - MSMQ-Queue-Name-Ext contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1b84f90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2d41ed0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2d77740 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1bda430 - 1.2.840.113556.1.4.1243 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bda3a0 - mSMQQueueNameExt contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c1ac50 - MSMQ-Queue-Name-Ext contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1c1abd0 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x32a4550 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c6dac0 - MSMQ-Queue-Journal-Quota contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1c6da30 - MSMQ-Queue-Journal-Quota contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1ce3100 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1ce3080 - 1.2.840.113556.1.4.963 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1cfb790 - mSMQQueueJournalQuota contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1cfb710 - MSMQ-Queue-Journal-Quota contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1d0b660 - struct dsdb_attribute contains 362 bytes in 10 blocks (ref 0) d=(nil) 0x32a43e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d0b5d0 - MSMQ-QM-ID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1d854c0 - MSMQ-QM-ID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1d85440 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2dedb40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2e6c000 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1e42420 - 1.2.840.113556.1.4.951 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1e423a0 - mSMQQMID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1e46720 - MSMQ-QM-ID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1e466a0 - struct dsdb_attribute contains 393 bytes in 10 blocks (ref 0) d=(nil) 0x32a4270 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e4ae60 - MSMQ-Privacy-Level contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1e4ade0 - MSMQ-Privacy-Level contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1e88530 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ecb690 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ede0a0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1e884b0 - 1.2.840.113556.1.4.924 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1ec7820 - mSMQPrivacyLevel contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1ec77a0 - MSMQ-Privacy-Level contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf620 - struct dsdb_attribute contains 403 bytes in 9 blocks (ref 0) d=(nil) 0x32a4100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf590 - MSMQ-Prev-Site-Gates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1eea770 - MSMQ-Prev-Site-Gates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1eea6f0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x24d0690 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1f0ff10 - 1.2.840.113556.1.4.1225 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f0fe80 - mSMQPrevSiteGates contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1f340b0 - MSMQ-Prev-Site-Gates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1f34030 - struct dsdb_attribute contains 374 bytes in 10 blocks (ref 0) d=(nil) 0x32a3f90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f58200 - MSMQ-Owner-ID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1f58180 - MSMQ-Owner-ID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2033cd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ef1370 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2f5bd90 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2033c50 - 1.2.840.113556.1.4.925 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2077a80 - mSMQOwnerID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2077a00 - MSMQ-Owner-ID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x20900c0 - struct dsdb_attribute contains 418 bytes in 9 blocks (ref 0) d=(nil) 0x32a3e20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2090030 - MSMQ-Out-Routing-Servers contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x20a04d0 - MSMQ-Out-Routing-Servers contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x20a0440 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x24c8050 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x20b7e00 - 1.2.840.113556.1.4.928 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20b7d80 - mSMQOutRoutingServers contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x20bfc70 - MSMQ-Out-Routing-Servers contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x20bfbe0 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x32a3cb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20c7820 - MSMQ-OS-Type contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x20c77a0 - MSMQ-OS-Type contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x20d6cc0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x20d6c40 - 1.2.840.113556.1.4.935 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x211bbf0 - mSMQOSType contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x211bb70 - MSMQ-OS-Type contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x212a880 - struct dsdb_attribute contains 365 bytes in 8 blocks (ref 0) d=(nil) 0x32a3b40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x212a7f0 - MSMQ-Nt4-Stub contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2148f30 - MSMQ-Nt4-Stub contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2148eb0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x21cb5d0 - 1.2.840.113556.1.4.960 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x21cb550 - mSMQNt4Stub contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x21f3520 - MSMQ-Nt4-Stub contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x21f34a0 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x32a39d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2202f70 - MSMQ-Nt4-Flags contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2202ef0 - MSMQ-Nt4-Flags contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2234760 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x22346e0 - 1.2.840.113556.1.4.964 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2230850 - mSMQNt4Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x22307d0 - MSMQ-Nt4-Flags contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x223d780 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x32a3860 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x223d6f0 - MSMQ-Name-Style contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2238ba0 - MSMQ-Name-Style contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2238b20 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x22764b0 - 1.2.840.113556.1.4.939 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2276430 - mSMQNameStyle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x227e9c0 - MSMQ-Name-Style contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x227e940 - struct dsdb_attribute contains 408 bytes in 9 blocks (ref 0) d=(nil) 0x32a36f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x229f840 - MSMQ-Multicast-Address contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x229f7c0 - MSMQ-Multicast-Address contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x22b8380 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2f69f30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x22b8300 - 1.2.840.113556.1.4.1714 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2302290 - MSMQ-MulticastAddress contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2302210 - MSMQ-Multicast-Address contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x23337c0 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x32a3580 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2333730 - MSMQ-Migrated contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x233bdb0 - MSMQ-Migrated contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x233bd30 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x238e330 - 1.2.840.113556.1.4.952 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x238e2b0 - mSMQMigrated contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x239e930 - MSMQ-Migrated contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x239e8b0 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x32a3410 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23af020 - MSMQ-Long-Lived contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x23aefa0 - MSMQ-Long-Lived contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x23f8a80 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x23f8a00 - 1.2.840.113556.1.4.941 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2428a40 - mSMQLongLived contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x24289c0 - MSMQ-Long-Lived contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2475ec0 - struct dsdb_attribute contains 375 bytes in 10 blocks (ref 0) d=(nil) 0x32a32a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2475e30 - MSMQ-Label-Ex contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x248e890 - MSMQ-Label-Ex contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x248e810 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2f72a80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2f84930 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x24df1b0 - 1.2.840.113556.1.4.1415 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24df120 - mSMQLabelEx contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x25579e0 - MSMQ-Label-Ex contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2557960 - struct dsdb_attribute contains 362 bytes in 10 blocks (ref 0) d=(nil) 0x32a3130 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25678a0 - MSMQ-Label contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2567820 - MSMQ-Label contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x257b420 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2fcbe10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3029370 - 2.5.5.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x257b3a0 - 1.2.840.113556.1.4.922 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2587c40 - mSMQLabel contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2587bc0 - MSMQ-Label contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x25a7500 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x32a2fc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25a7470 - MSMQ-Journal-Quota contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x25bf280 - MSMQ-Journal-Quota contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x25bf200 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x25f6810 - 1.2.840.113556.1.4.921 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x25f6790 - mSMQJournalQuota contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2615c20 - MSMQ-Journal-Quota contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2615ba0 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x32a2e50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x261d740 - MSMQ-Journal contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x261d6c0 - MSMQ-Journal contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x263c600 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x263c580 - 1.2.840.113556.1.4.918 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2644270 - mSMQJournal contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x26441f0 - MSMQ-Journal contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2653fd0 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x32a2ce0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2653f40 - MSMQ-Interval2 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x265bcd0 - MSMQ-Interval2 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x265bc50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x269e7b0 - 1.2.840.113556.1.4.1309 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x269e720 - mSMQInterval2 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x26c1290 - MSMQ-Interval2 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x26c1210 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x32a2b70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x271af10 - MSMQ-Interval1 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x271ae90 - MSMQ-Interval1 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2756b40 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2756ac0 - 1.2.840.113556.1.4.1308 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2766b90 - mSMQInterval1 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2766b10 - MSMQ-Interval1 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2787e60 - struct dsdb_attribute contains 414 bytes in 9 blocks (ref 0) d=(nil) 0x32a2a00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2787dd0 - MSMQ-In-Routing-Servers contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x278fb50 - MSMQ-In-Routing-Servers contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x278fac0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2490290 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x286be90 - 1.2.840.113556.1.4.929 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x286be10 - mSMQInRoutingServers contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2874080 - MSMQ-In-Routing-Servers contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2873ff0 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x32a2890 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x287bc40 - MSMQ-Foreign contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x287bbc0 - MSMQ-Foreign contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x28cee90 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x28cee10 - 1.2.840.113556.1.4.934 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28db4d0 - mSMQForeign contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x28db450 - MSMQ-Foreign contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x28d6d50 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x32a2720 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28d6cc0 - MSMQ-Encrypt-Key contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x28df7b0 - MSMQ-Encrypt-Key contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x28df730 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x291e3e0 - 1.2.840.113556.1.4.936 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x291e360 - mSMQEncryptKey contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2926220 - MSMQ-Encrypt-Key contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x29261a0 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x32a25b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2939b40 - MSMQ-Ds-Services contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2939ac0 - MSMQ-Ds-Services contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x297f7a0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x297f720 - 1.2.840.113556.1.4.1228 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2997590 - mSMQDsServices contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2997510 - MSMQ-Ds-Services contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x29a8360 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x32a2440 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29a82d0 - MSMQ-Ds-Service contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x29b4fb0 - MSMQ-Ds-Service contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x29b4f30 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x29ca7a0 - 1.2.840.113556.1.4.1238 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29ca710 - mSMQDsService contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x29d23f0 - MSMQ-Ds-Service contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x29d2370 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x32a22d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29ced50 - MSMQ-Digests-Mig contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x29cecd0 - MSMQ-Digests-Mig contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x29eb510 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x29eb490 - 1.2.840.113556.1.4.966 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a0b3b0 - mSMQDigestsMig contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2a0b330 - MSMQ-Digests-Mig contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2a1afe0 - struct dsdb_attribute contains 371 bytes in 10 blocks (ref 0) d=(nil) 0x32a2160 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a1af50 - MSMQ-Digests contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2a16bb0 - MSMQ-Digests contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2a16b30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x307b5a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3097080 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2af9d00 - 1.2.840.113556.1.4.948 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2af9c80 - mSMQDigests contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2af5790 - MSMQ-Digests contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2af5710 - struct dsdb_attribute contains 433 bytes in 8 blocks (ref 0) d=(nil) 0x32a1ff0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b3b450 - MSMQ-Dependent-Client-Services contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x2b3b3c0 - MSMQ-Dependent-Client-Services contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x2c8d1e0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2c8d160 - 1.2.840.113556.1.4.1226 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cbe8d0 - mSMQDependentClientServices contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2cbe840 - MSMQ-Dependent-Client-Services contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x2cba510 - struct dsdb_attribute contains 429 bytes in 8 blocks (ref 0) d=(nil) 0x32a1e80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cba480 - MSMQ-Dependent-Client-Service contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2cc2d90 - MSMQ-Dependent-Client-Service contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2cc2d00 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2d0fc40 - 1.2.840.113556.1.4.1239 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d0fbb0 - mSMQDependentClientService contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2d0ba80 - MSMQ-Dependent-Client-Service contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2d0b9f0 - struct dsdb_attribute contains 365 bytes in 8 blocks (ref 0) d=(nil) 0x32a1d10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d183e0 - MSMQ-CSP-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2d18360 - MSMQ-CSP-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2d49f20 - 2.5.5.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2d49ea0 - 1.2.840.113556.1.4.940 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d76ea0 - mSMQCSPName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2d76e20 - MSMQ-CSP-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2dc38b0 - struct dsdb_attribute contains 350 bytes in 8 blocks (ref 0) d=(nil) 0x32a1ba0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2dc3820 - MSMQ-Cost contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2dd4580 - MSMQ-Cost contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2dd4500 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2ded290 - 1.2.840.113556.1.4.946 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ded210 - mSMQCost contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2e2dd20 - MSMQ-Cost contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2e2dca0 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x32a1a30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e4f240 - MSMQ-Computer-Type-Ex contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2e4f1c0 - MSMQ-Computer-Type-Ex contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2e66ab0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2e66a30 - 1.2.840.113556.1.4.1417 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e74ce0 - mSMQComputerTypeEx contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2e74c60 - MSMQ-Computer-Type-Ex contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2e70190 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x32a18c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e70100 - MSMQ-Computer-Type contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2e7db20 - MSMQ-Computer-Type contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2e7daa0 - 2.5.5.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e990c0 - 1.2.840.113556.1.4.933 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2e99040 - mSMQComputerType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2e94300 - MSMQ-Computer-Type contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2e94280 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x32a1750 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e9e130 - MSMQ-Base-Priority contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2e9e0b0 - MSMQ-Base-Priority contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2eb8070 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2eb7ff0 - 1.2.840.113556.1.4.920 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2eb1330 - mSMQBasePriority contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2eb12b0 - MSMQ-Base-Priority contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2ec1320 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x32a15e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ec1290 - MSMQ-Authenticate contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ebc480 - MSMQ-Authenticate contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ebc400 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2ed3ff0 - 1.2.840.113556.1.4.923 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ed3f70 - mSMQAuthenticate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2ecf080 - MSMQ-Authenticate contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ecf000 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x32a1470 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2edd980 - Msi-Script-Size contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2edd900 - Msi-Script-Size contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2ef0ac0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2ef0a40 - 1.2.840.113556.1.4.846 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2eeb630 - msiScriptSize contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2eeb5b0 - Msi-Script-Size contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2efa350 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x32a1300 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2efa2c0 - Msi-Script-Path contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2ef54b0 - Msi-Script-Path contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2ef5430 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2f1a920 - 1.2.840.113556.1.4.15 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2f1a8a0 - msiScriptPath contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2f287c0 - Msi-Script-Path contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2f28740 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x32a1190 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f31da0 - Msi-Script-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2f31d20 - Msi-Script-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2f46f90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2f46f10 - 1.2.840.113556.1.4.845 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f56bc0 - msiScriptName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2f56b40 - Msi-Script-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2f5fb70 - struct dsdb_attribute contains 355 bytes in 8 blocks (ref 0) d=(nil) 0x32a1020 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f5fae0 - Msi-Script contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2f5b4f0 - Msi-Script contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2f5b470 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2f721d0 - 1.2.840.113556.1.4.814 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f72150 - msiScript contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2f840b0 - Msi-Script contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2f84030 - struct dsdb_attribute contains 403 bytes in 9 blocks (ref 0) d=(nil) 0x32a0eb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f7fc70 - ms-Imaging-PSP-String contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2f7fbf0 - ms-Imaging-PSP-String contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2f9ee20 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x314e000 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2f9eda0 - 1.2.840.113556.1.4.2054 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f9a6d0 - msImaging-PSPString contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2f9a650 - ms-Imaging-PSP-String contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2fb0400 - struct dsdb_attribute contains 415 bytes in 8 blocks (ref 0) d=(nil) 0x32a0d40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fa7cd0 - ms-Imaging-PSP-Identifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2fa7c40 - ms-Imaging-PSP-Identifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2fb0480 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2fbd8c0 - 1.2.840.113556.1.4.2053 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fbd830 - msImaging-PSPIdentifier contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fcb580 - ms-Imaging-PSP-Identifier contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2fcb4f0 - struct dsdb_attribute contains 383 bytes in 10 blocks (ref 0) d=(nil) 0x32a0bd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fc6a00 - ms-IIS-FTP-Root contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2fc6980 - ms-IIS-FTP-Root contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2fde9c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3173af0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3203a80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2fde940 - 1.2.840.113556.1.4.1785 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fe7a80 - msIIS-FTPRoot contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2fe7a00 - ms-IIS-FTP-Root contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2ff0d30 - struct dsdb_attribute contains 379 bytes in 10 blocks (ref 0) d=(nil) 0x32a0a60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ff0ca0 - ms-IIS-FTP-Dir contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2fec310 - ms-IIS-FTP-Dir contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2fec290 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3229670 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3232700 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3028ae0 - 1.2.840.113556.1.4.1786 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3028a50 - msIIS-FTPDir contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3032160 - ms-IIS-FTP-Dir contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x30320e0 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x32a08f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x302d0e0 - Msi-File-List contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x302d060 - Msi-File-List contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x30449d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3044950 - 1.2.840.113556.1.4.671 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3040290 - msiFileList contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3040210 - Msi-File-List contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x304e180 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x32a0780 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x304e0f0 - ms-ieee-80211-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3052490 - ms-ieee-80211-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3052410 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30696a0 - 1.2.840.113556.1.4.1823 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3069610 - msieee80211-ID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3064690 - ms-ieee-80211-ID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3064610 - struct dsdb_attribute contains 405 bytes in 8 blocks (ref 0) d=(nil) 0x32a0610 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3071f80 - ms-ieee-80211-Data-Type contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3071ef0 - ms-ieee-80211-Data-Type contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x308d030 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x308cfb0 - 1.2.840.113556.1.4.1822 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3088670 - msieee80211-DataType contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x30885f0 - ms-ieee-80211-Data-Type contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30967f0 - struct dsdb_attribute contains 387 bytes in 8 blocks (ref 0) d=(nil) 0x32a04a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3096760 - ms-ieee-80211-Data contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x30915d0 - ms-ieee-80211-Data contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3091550 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30a8d20 - 1.2.840.113556.1.4.1821 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30a8c90 - msieee80211-Data contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x30a4700 - ms-ieee-80211-Data contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x30a4680 - struct dsdb_attribute contains 388 bytes in 9 blocks (ref 0) d=(nil) 0x32a0330 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30b2200 - ms-FVE-VolumeGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x30b2180 - ms-FVE-VolumeGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x30df0a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3256060 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30df020 - 1.2.840.113556.1.4.1998 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30e8910 - msFVE-VolumeGuid contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x30e8890 - ms-FVE-VolumeGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x30f2740 - struct dsdb_attribute contains 412 bytes in 9 blocks (ref 0) d=(nil) 0x32a01c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30e3890 - ms-FVE-RecoveryPassword contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30e3800 - ms-FVE-RecoveryPassword contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30f27c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x252bbc0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30f69c0 - 1.2.840.113556.1.4.1964 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30f6930 - msFVE-RecoveryPassword contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3104810 - ms-FVE-RecoveryPassword contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3104780 - struct dsdb_attribute contains 396 bytes in 9 blocks (ref 0) d=(nil) 0x32a0050 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30ff9a0 - ms-FVE-RecoveryGuid contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x30ff920 - ms-FVE-RecoveryGuid contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x31176f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2773910 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3117670 - 1.2.840.113556.1.4.1965 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31205e0 - msFVE-RecoveryGuid contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3120560 - ms-FVE-RecoveryGuid contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x31292b0 - struct dsdb_attribute contains 388 bytes in 9 blocks (ref 0) d=(nil) 0x329fee0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3129220 - ms-FVE-KeyPackage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3124d30 - ms-FVE-KeyPackage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3124cb0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2048540 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x31444d0 - 1.2.840.113556.1.4.1999 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3144440 - msFVE-KeyPackage contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x313f9b0 - ms-FVE-KeyPackage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x313f930 - struct dsdb_attribute contains 396 bytes in 8 blocks (ref 0) d=(nil) 0x329fd70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x314d760 - ms-FRS-Topology-Pref contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x314d6e0 - ms-FRS-Topology-Pref contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3151e60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3151de0 - 1.2.840.113556.1.4.1692 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x315b4a0 - msFRS-Topology-Pref contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x315b420 - ms-FRS-Topology-Pref contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3169bf0 - struct dsdb_attribute contains 393 bytes in 9 blocks (ref 0) d=(nil) 0x329fc00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3169b60 - ms-FRS-Hub-Member contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3165200 - ms-FRS-Hub-Member contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3165180 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x24128c0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x317caa0 - 1.2.840.113556.1.4.1693 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x317ca10 - msFRS-Hub-Member contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3185f70 - ms-FRS-Hub-Member contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3185ef0 - struct dsdb_attribute contains 380 bytes in 9 blocks (ref 0) d=(nil) 0x329fa90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31813c0 - ms-Exch-Owner-BL contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3181340 - ms-Exch-Owner-BL contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x31a0ff0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x240e700 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x31a0f70 - 1.2.840.113556.1.2.104 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x31afbc0 - ownerBL contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x31afb40 - ms-Exch-Owner-BL contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x31ab2f0 - struct dsdb_attribute contains 394 bytes in 10 blocks (ref 0) d=(nil) 0x329f920 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31ab260 - ms-Exch-LabeledURI contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x31c2390 - ms-Exch-LabeledURI contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x31c2310 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ddd1c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2e79df0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x31c8370 - 1.2.840.113556.1.2.593 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x31c82f0 - msExchLabeledURI contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x31d5f70 - ms-Exch-LabeledURI contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x31ed110 - struct dsdb_attribute contains 417 bytes in 10 blocks (ref 0) d=(nil) 0x329f7b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31d5ee0 - ms-Exch-House-Identifier contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x31daa90 - ms-Exch-House-Identifier contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x31daa00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1de2650 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2de9a30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x31ed090 - 1.2.840.113556.1.2.596 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x31f5ea0 - msExchHouseIdentifier contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x31f5e20 - ms-Exch-House-Identifier contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x32031f0 - struct dsdb_attribute contains 409 bytes in 10 blocks (ref 0) d=(nil) 0x329f640 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3203160 - ms-Exch-Assistant-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x31fe820 - ms-Exch-Assistant-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x31fe7a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2f24db0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a83c00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3228dd0 - 1.2.840.113556.1.2.444 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3228d50 - msExchAssistantName contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x323aff0 - ms-Exch-Assistant-Name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x324d670 - struct dsdb_attribute contains 421 bytes in 8 blocks (ref 0) d=(nil) 0x329f4d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x323af60 - ms-DS-USN-Last-Sync-Success contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32360f0 - ms-DS-USN-Last-Sync-Success contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3236060 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x325eb80 - 1.2.840.113556.1.4.2055 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x324d5e0 - msDS-USNLastSyncSuccess contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3255810 - ms-DS-USN-Last-Sync-Success contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3255780 - struct dsdb_attribute contains 472 bytes in 8 blocks (ref 0) d=(nil) 0x329f360 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3251500 - ms-DS-User-Password-Expiry-Time-Computed contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x3251460 - ms-DS-User-Password-Expiry-Time-Computed contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x325ec00 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x32746d0 - 1.2.840.113556.1.4.1996 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3274640 - msDS-UserPasswordExpiryTimeComputed contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x3286650 - ms-DS-User-Password-Expiry-Time-Computed contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x32865b0 - struct dsdb_attribute contains 455 bytes in 8 blocks (ref 0) d=(nil) 0x329f1f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32811d0 - ms-DS-User-Account-Control-Computed contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x3281140 - ms-DS-User-Account-Control-Computed contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x2e82730 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e826b0 - 1.2.840.113556.1.4.1460 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f08760 - msDS-User-Account-Control-Computed contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x2f086d0 - ms-DS-User-Account-Control-Computed contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x306de70 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x329f080 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x306dde0 - ms-DS-UpdateScript contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x31d20b0 - ms-DS-UpdateScript contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x31d2030 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x325a990 - 1.2.840.113556.1.4.1721 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x325a900 - msDS-UpdateScript contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1966110 - ms-DS-UpdateScript contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2a24260 - struct dsdb_attribute contains 429 bytes in 8 blocks (ref 0) d=(nil) 0x329ef10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1966080 - ms-DS-Trust-Forest-Trust-Info contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1964470 - ms-DS-Trust-Forest-Trust-Info contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19643e0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2a241e0 - 1.2.840.113556.1.4.1702 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b12ae0 - msDS-TrustForestTrustInfo contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1f75200 - ms-DS-Trust-Forest-Trust-Info contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1fd2200 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x329eda0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c849c0 - ms-DS-Top-Quota-Usage contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2d52010 - ms-DS-Top-Quota-Usage contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2d51f90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30608a0 - 1.2.840.113556.1.4.1850 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30451e0 - msDS-TopQuotaUsage contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3060820 - ms-DS-Top-Quota-Usage contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x217a790 - struct dsdb_attribute contains 433 bytes in 10 blocks (ref 0) d=(nil) 0x329ec30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x196cb50 - ms-DS-Tombstone-Quota-Factor contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1ab50b0 - ms-DS-Tombstone-Quota-Factor contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1f70cf0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x26c9470 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ec1b90 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x217a710 - 1.2.840.113556.1.4.1847 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2192850 - msDS-TombstoneQuotaFactor contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x236e550 - ms-DS-Tombstone-Quota-Factor contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x23cfeb0 - struct dsdb_attribute contains 425 bytes in 9 blocks (ref 0) d=(nil) 0x329eac0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23e8b90 - ms-DS-Tasks-For-Az-Task-BL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x254ff40 - ms-DS-Tasks-For-Az-Task-BL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x259f340 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23e1cc0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x21001e0 - 1.2.840.113556.1.4.1811 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fd9fa0 - msDS-TasksForAzTaskBL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2100160 - ms-DS-Tasks-For-Az-Task-BL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x30bf970 - struct dsdb_attribute contains 414 bytes in 9 blocks (ref 0) d=(nil) 0x329e950 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19be3d0 - ms-DS-Tasks-For-Az-Task contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23cf280 - ms-DS-Tasks-For-Az-Task contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23ec030 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23ddb00 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2de1330 - 1.2.840.113556.1.4.1810 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2dd4d90 - msDS-TasksForAzTask contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2de12b0 - ms-DS-Tasks-For-Az-Task contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f1b0f0 - struct dsdb_attribute contains 425 bytes in 9 blocks (ref 0) d=(nil) 0x329e7e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f28fd0 - ms-DS-Tasks-For-Az-Role-BL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2fa84b0 - ms-DS-Tasks-For-Az-Role-BL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2fb11d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23d9870 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3117f90 - 1.2.840.113556.1.4.1815 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3100210 - msDS-TasksForAzRoleBL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3117f10 - ms-DS-Tasks-For-Az-Role-BL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x31e9470 - struct dsdb_attribute contains 414 bytes in 9 blocks (ref 0) d=(nil) 0x329e670 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31ed900 - ms-DS-Tasks-For-Az-Role contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x325f420 - ms-DS-Tasks-For-Az-Role contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x326c130 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23d5690 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1b5bfc0 - 1.2.840.113556.1.4.1814 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b343c0 - msDS-TasksForAzRole contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1b5bf40 - ms-DS-Tasks-For-Az-Role contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cc2920 - struct dsdb_attribute contains 441 bytes in 8 blocks (ref 0) d=(nil) 0x329e500 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e5fa20 - ms-DS-Supported-Encryption-Types contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x1ecfb90 - ms-DS-Supported-Encryption-Types contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x1f04140 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x207fa30 - 1.2.840.113556.1.4.1963 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fe9950 - msDS-SupportedEncryptionTypes contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2018670 - ms-DS-Supported-Encryption-Types contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x202fd30 - struct dsdb_attribute contains 391 bytes in 9 blocks (ref 0) d=(nil) 0x329e390 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2057cc0 - ms-DS-SPN-Suffixes contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x207f9b0 - ms-DS-SPN-Suffixes contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x21a2f50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x308d8e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21a2ed0 - 1.2.840.113556.1.4.1715 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21bbca0 - msDS-SPNSuffixes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2218700 - ms-DS-SPN-Suffixes contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2218680 - struct dsdb_attribute contains 410 bytes in 10 blocks (ref 0) d=(nil) 0x329e220 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22c0f50 - ms-DS-Source-Object-DN contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x231b240 - ms-DS-Source-Object-DN contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x231b1c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x30a95d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x316a490 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2424c10 - 1.2.840.113556.1.4.1879 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2401280 - msDS-SourceObjectDN contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2424b90 - ms-DS-Source-Object-DN contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x251f460 - struct dsdb_attribute contains 372 bytes in 8 blocks (ref 0) d=(nil) 0x329e0b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x249acb0 - ms-DS-SiteName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x251f3e0 - ms-DS-SiteName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x25b6eb0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x25b6e30 - 1.2.840.113556.1.4.1961 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25ceb50 - msDS-SiteName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x274e030 - ms-DS-SiteName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x274dfb0 - struct dsdb_attribute contains 392 bytes in 8 blocks (ref 0) d=(nil) 0x329df40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b27000 - ms-DS-Site-Affinity contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2b64380 - ms-DS-Site-Affinity contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2b64300 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a08d50 - 1.2.840.113556.1.4.1443 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2db3270 - msDS-Site-Affinity contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1a08cd0 - ms-DS-Site-Affinity contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1d71190 - struct dsdb_attribute contains 376 bytes in 9 blocks (ref 0) d=(nil) 0x329ddd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a594f0 - ms-DS-Settings contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1d71110 - ms-DS-Settings contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2110a50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31d6810 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21109d0 - 1.2.840.113556.1.4.1697 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x214d1a0 - msDS-Settings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x266be50 - ms-DS-Settings contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x266bdd0 - struct dsdb_attribute contains 452 bytes in 8 blocks (ref 0) d=(nil) 0x329dc60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21d3da0 - ms-DS-Security-Group-Extra-Classes contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x2207520 - ms-DS-Security-Group-Extra-Classes contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x232b860 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x26304f0 - 1.2.840.113556.1.4.1688 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b70bb0 - msDS-Security-Group-Extra-Classes contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1ccb300 - ms-DS-Security-Group-Extra-Classes contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1e46f30 - struct dsdb_attribute contains 437 bytes in 10 blocks (ref 0) d=(nil) 0x329daf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e4f980 - ms-DS-Secondary-KrbTgt-Number contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x209bcf0 - ms-DS-Secondary-KrbTgt-Number contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2381d30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3281ee0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e6c260 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2630470 - 1.2.840.113556.1.4.1929 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28f9810 - msDS-SecondaryKrbTgtNumber contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2953d20 - ms-DS-Secondary-KrbTgt-Number contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x299bd70 - struct dsdb_attribute contains 423 bytes in 9 blocks (ref 0) d=(nil) 0x329d980 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29cae20 - ms-DS-SD-Reference-Domain contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x29d3160 - ms-DS-SD-Reference-Domain contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x29db640 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23b0bb0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2dc84d0 - 1.2.840.113556.1.4.1711 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b6c440 - msDS-SDReferenceDomain contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2dc8450 - ms-DS-SD-Reference-Domain contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2c21cc0 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x329d810 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cc3570 - ms-ds-Schema-Extensions contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d41e40 - ms-ds-Schema-Extensions contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d776b0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2e62370 - 1.2.840.113556.1.4.1440 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2dedab0 - msDs-Schema-Extensions contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2e622f0 - ms-ds-Schema-Extensions contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e6bf70 - struct dsdb_attribute contains 431 bytes in 9 blocks (ref 0) d=(nil) 0x329d6a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ecb600 - ms-DS-Reveal-OnDemand-Group contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2ede010 - ms-DS-Reveal-OnDemand-Group contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2ef12e0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23a8a00 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2f9f690 - 1.2.840.113556.1.4.1928 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f5bd00 - msDS-RevealOnDemandGroup contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2f69ea0 - ms-DS-Reveal-OnDemand-Group contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2f729f0 - struct dsdb_attribute contains 405 bytes in 9 blocks (ref 0) d=(nil) 0x329d530 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f848a0 - ms-DS-Revealed-Users contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2f9f610 - ms-DS-Revealed-Users contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2fb9da0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x23a4660 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2fb9d20 - 1.2.840.113556.1.4.1924 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fcbd80 - msDS-RevealedUsers contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2fdf0d0 - ms-DS-Revealed-Users contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2fdf050 - struct dsdb_attribute contains 411 bytes in 9 blocks (ref 0) d=(nil) 0x329d3c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30292e0 - ms-DS-Revealed-List-BL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x303be30 - ms-DS-Revealed-List-BL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x303bdb0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23a0310 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x30803a0 - 1.2.840.113556.1.4.1975 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x307b510 - msDS-RevealedListBL contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3080320 - ms-DS-Revealed-List-BL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x30d1a30 - struct dsdb_attribute contains 402 bytes in 9 blocks (ref 0) d=(nil) 0x329d250 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3096ff0 - ms-DS-Revealed-List contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x30d19b0 - ms-DS-Revealed-List contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3120e70 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x239c150 - 2.5.5.14 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3120df0 - 1.2.840.113556.1.4.1940 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x314df70 - msDS-RevealedList contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x315bd30 - ms-DS-Revealed-List contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x315bcb0 - struct dsdb_attribute contains 400 bytes in 9 blocks (ref 0) d=(nil) 0x329d0e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3173a60 - ms-DS-Revealed-DSAs contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x31867d0 - ms-DS-Revealed-DSAs contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3186750 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2398090 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x3215570 - 1.2.840.113556.1.4.1930 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32039f0 - msDS-RevealedDSAs contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x32154f0 - ms-DS-Revealed-DSAs contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3286ec0 - struct dsdb_attribute contains 441 bytes in 8 blocks (ref 0) d=(nil) 0x329cf70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x32295e0 - ms-DS-Retired-Repl-NC-Signatures contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x3232670 - ms-DS-Retired-Repl-NC-Signatures contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x3255fd0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3286e40 - 1.2.840.113556.1.4.1826 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2dfa620 - msDS-RetiredReplNCSignatures contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2e2adb0 - ms-DS-Retired-Repl-NC-Signatures contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x1c273b0 - struct dsdb_attribute contains 400 bytes in 9 blocks (ref 0) d=(nil) 0x329ce00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1dda150 - ms-DS-Resultant-PSO contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x252bb40 - ms-DS-Resultant-PSO contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2773890 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x238fd00 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x20484c0 - 1.2.840.113556.1.4.2022 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x257bc60 - msDS-ResultantPSO contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ddd140 - ms-DS-Resultant-PSO contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2e79d70 - struct dsdb_attribute contains 464 bytes in 8 blocks (ref 0) d=(nil) 0x329cc90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30df8d0 - ms-DS-Required-Forest-Behavior-Version contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x30e9140 - ms-DS-Required-Forest-Behavior-Version contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x189ce20 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1de25d0 - 1.2.840.113556.1.4.2079 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1dea9e0 - msDS-RequiredForestBehaviorVersion contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1eeb530 - ms-DS-Required-Forest-Behavior-Version contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x1f44a90 - struct dsdb_attribute contains 464 bytes in 8 blocks (ref 0) d=(nil) 0x329cb20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fc67d0 - ms-DS-Required-Domain-Behavior-Version contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x1fde450 - ms-DS-Required-Domain-Behavior-Version contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x21ebc50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2de99b0 - 1.2.840.113556.1.4.2066 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27c7ba0 - msDS-RequiredDomainBehaviorVersion contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x2ba12c0 - ms-DS-Required-Domain-Behavior-Version contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x2bd8c00 - struct dsdb_attribute contains 417 bytes in 8 blocks (ref 0) d=(nil) 0x329c9b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2be92c0 - ms-DS-Repl-Value-Meta-Data contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2c99be0 - ms-DS-Repl-Value-Meta-Data contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2d1cb90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2f24d30 - 1.2.840.113556.1.4.1708 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2287580 - msDS-ReplValueMetaData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1a83b80 - ms-DS-Repl-Value-Meta-Data contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1a94aa0 - struct dsdb_attribute contains 495 bytes in 8 blocks (ref 0) d=(nil) 0x329c840 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d174c0 - ms-DS-Replication-Notify-Subsequent-DSA-Delay contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x1e36460 - ms-DS-Replication-Notify-Subsequent-DSA-Delay contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x1eef7c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x26c93f0 - 1.2.840.113556.1.4.1664 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2802760 - msDS-Replication-Notify-Subsequent-DSA-Delay contains 45 bytes in 1 blocks (ref 0) d=(nil) 0x284c680 - ms-DS-Replication-Notify-Subsequent-DSA-Delay contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x28dfff0 - struct dsdb_attribute contains 475 bytes in 8 blocks (ref 0) d=(nil) 0x329c6d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29b57e0 - ms-DS-Replication-Notify-First-DSA-Delay contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x29c23a0 - ms-DS-Replication-Notify-First-DSA-Delay contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x2bb5820 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2ec1b10 - 1.2.840.113556.1.4.1663 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ed90a0 - msDS-Replication-Notify-First-DSA-Delay contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2f3e8d0 - ms-DS-Replication-Notify-First-DSA-Delay contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x30167a0 - struct dsdb_attribute contains 403 bytes in 8 blocks (ref 0) d=(nil) 0x329c560 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3032990 - ms-DS-ReplicationEpoch contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x308d860 - ms-DS-ReplicationEpoch contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x30a9550 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x316a410 - 1.2.840.113556.1.4.1720 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31abb20 - msDS-ReplicationEpoch contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x31d6790 - ms-DS-ReplicationEpoch contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3281e60 - struct dsdb_attribute contains 429 bytes in 9 blocks (ref 0) d=(nil) 0x329c3f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c152b0 - MS-DS-Replicates-NC-Reason contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1bad760 - MS-DS-Replicates-NC-Reason contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2b67a90 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2373aa0 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x29c5c60 - 1.2.840.113556.1.4.1408 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bc6010 - mS-DS-ReplicatesNCReason contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1eb76c0 - MS-DS-Replicates-NC-Reason contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1efbd70 - struct dsdb_attribute contains 433 bytes in 8 blocks (ref 0) d=(nil) 0x329c280 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x215d860 - ms-DS-Repl-Attribute-Meta-Data contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x2351cf0 - ms-DS-Repl-Attribute-Meta-Data contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x295f530 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2dbf440 - 1.2.840.113556.1.4.1707 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fa3130 - msDS-ReplAttributeMetaData contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1f64de0 - ms-DS-Repl-Attribute-Meta-Data contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1fa5450 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x329c110 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1895bb0 - ms-DS-Quota-Used contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1af0280 - ms-DS-Quota-Used contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1afcc10 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1c3a510 - 1.2.840.113556.1.4.1849 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c7a320 - msDS-QuotaUsed contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1c7f240 - ms-DS-Quota-Used contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c9eba0 - struct dsdb_attribute contains 399 bytes in 10 blocks (ref 0) d=(nil) 0x329bfa0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cd2d30 - ms-DS-Quota-Trustee contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1d12e70 - ms-DS-Quota-Trustee contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1e78100 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e6c1f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19b5b00 - 2.5.5.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1f3be10 - 1.2.840.113556.1.4.1844 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f9d780 - msDS-QuotaTrustee contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1fb51d0 - ms-DS-Quota-Trustee contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2005370 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x19b6270 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x205bbf0 - ms-DS-Quota-Effective contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x20879d0 - ms-DS-Quota-Effective contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x20e2c50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2466300 - 1.2.840.113556.1.4.1848 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24ab340 - msDS-QuotaEffective contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x24cae40 - ms-DS-Quota-Effective contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19b63e0 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x19b5ef0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2605930 - ms-DS-Quota-Amount contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x287b880 - ms-DS-Quota-Amount contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x290dcf0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b61f0 - 1.2.840.113556.1.4.1845 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b6160 - msDS-QuotaAmount contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19b60e0 - ms-DS-Quota-Amount contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19b6060 - struct dsdb_attribute contains 403 bytes in 9 blocks (ref 0) d=(nil) 0x19b5b70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x296f190 - ms-DS-PSO-Applies-To contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2986ef0 - ms-DS-PSO-Applies-To contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x29ace60 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x235b550 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b5e70 - 1.2.840.113556.1.4.2020 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b5de0 - msDS-PSOAppliesTo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19b5d60 - ms-DS-PSO-Applies-To contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19b5ce0 - struct dsdb_attribute contains 392 bytes in 9 blocks (ref 0) d=(nil) 0x19b5800 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29fed80 - ms-DS-PSO-Applied contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2a06bb0 - ms-DS-PSO-Applied contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ad18a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23571c0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b5a80 - 1.2.840.113556.1.4.2021 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b59f0 - msDS-PSOApplied contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19b5970 - ms-DS-PSO-Applied contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2c093a0 - struct dsdb_attribute contains 415 bytes in 9 blocks (ref 0) d=(nil) 0x19b5470 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b84440 - ms-DS-Promotion-Settings contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2b88fb0 - ms-DS-Promotion-Settings contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2c01400 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32677a0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19b5780 - 1.2.840.113556.1.4.1962 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b56f0 - msDS-PromotionSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19b5670 - ms-DS-Promotion-Settings contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19b55e0 - struct dsdb_attribute contains 395 bytes in 8 blocks (ref 0) d=(nil) 0x19b50f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c1cf10 - ms-DS-Principal-Name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2d45f70 - ms-DS-Principal-Name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2d934a0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19b53f0 - 1.2.840.113556.1.4.1865 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b5360 - msDS-PrincipalName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19b52e0 - ms-DS-Principal-Name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19b5260 - struct dsdb_attribute contains 417 bytes in 9 blocks (ref 0) d=(nil) 0x19b4de0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e1aa40 - ms-DS-Preferred-GC-Site contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e4b730 - ms-DS-Preferred-GC-Site contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2efe990 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x234aff0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b5070 - 1.2.840.113556.1.4.1444 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b4fe0 - msDS-Preferred-GC-Site contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1b953d0 - ms-DS-Preferred-GC-Site contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b4f50 - struct dsdb_attribute contains 418 bytes in 10 blocks (ref 0) d=(nil) 0x19b4ad0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30ba660 - ms-DS-Phonetic-Last-Name contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x31f1700 - ms-DS-Phonetic-Last-Name contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3231f70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3267730 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x288b7c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19b4d60 - 1.2.840.113556.1.4.1943 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b4cd0 - msDS-PhoneticLastName contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2ab1ff0 - ms-DS-Phonetic-Last-Name contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19b4c40 - struct dsdb_attribute contains 422 bytes in 10 blocks (ref 0) d=(nil) 0x19b4750 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22760f0 - ms-DS-Phonetic-First-Name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x27328b0 - ms-DS-Phonetic-First-Name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2c4ad70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x288b750 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19b4a60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19b49e0 - 1.2.840.113556.1.4.1942 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b4950 - msDS-PhoneticFirstName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x204c3a0 - ms-DS-Phonetic-First-Name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19b48c0 - struct dsdb_attribute contains 430 bytes in 10 blocks (ref 0) d=(nil) 0x19b43c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c91860 - ms-DS-Phonetic-Display-Name contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2cff3f0 - ms-DS-Phonetic-Display-Name contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1d44190 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x203fd80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19b46e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1bdeb30 - 1.2.840.113556.1.4.1946 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b4650 - msDS-PhoneticDisplayName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19b45c0 - ms-DS-Phonetic-Display-Name contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19b4530 - struct dsdb_attribute contains 423 bytes in 10 blocks (ref 0) d=(nil) 0x19b4030 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31d15c0 - ms-DS-Phonetic-Department contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1ab05b0 - ms-DS-Phonetic-Department contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x293a820 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2cbf100 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19b4350 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2aaa300 - 1.2.840.113556.1.4.1944 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b42c0 - msDS-PhoneticDepartment contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b4230 - ms-DS-Phonetic-Department contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19b41a0 - struct dsdb_attribute contains 430 bytes in 10 blocks (ref 0) d=(nil) 0x19b3c90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2643c60 - ms-DS-Phonetic-Company-Name contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x26dff00 - ms-DS-Phonetic-Company-Name contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x28b2dd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2905a80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19b3880 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19b3fb0 - 1.2.840.113556.1.4.1945 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b3f20 - msDS-PhoneticCompanyName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19b3e90 - ms-DS-Phonetic-Company-Name contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19b3e00 - struct dsdb_attribute contains 459 bytes in 8 blocks (ref 0) d=(nil) 0x19b38f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2dd0020 - MS-DS-Per-User-Trust-Tombstones-Quota contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x2dd8690 - MS-DS-Per-User-Trust-Tombstones-Quota contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x306d370 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b3c10 - 1.2.840.113556.1.4.1790 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b3b80 - msDS-PerUserTrustTombstonesQuota contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x19b3af0 - MS-DS-Per-User-Trust-Tombstones-Quota contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x19b3a60 - struct dsdb_attribute contains 416 bytes in 8 blocks (ref 0) d=(nil) 0x19b34f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1afbea0 - MS-DS-Per-User-Trust-Quota contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2322a30 - MS-DS-Per-User-Trust-Quota contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x26a9d60 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b3800 - 1.2.840.113556.1.4.1788 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b3770 - msDS-PerUserTrustQuota contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19b36f0 - MS-DS-Per-User-Trust-Quota contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19b3660 - struct dsdb_attribute contains 453 bytes in 9 blocks (ref 0) d=(nil) 0x19b3150 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ae8280 - ms-DS-Password-Settings-Precedence contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1b08dc0 - ms-DS-Password-Settings-Precedence contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1bba560 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19b30e0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b3470 - 1.2.840.113556.1.4.2023 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b33e0 - msDS-PasswordSettingsPrecedence contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x19b3350 - ms-DS-Password-Settings-Precedence contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x19b32c0 - struct dsdb_attribute contains 488 bytes in 8 blocks (ref 0) d=(nil) 0x19b2d20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1db9f20 - ms-DS-Password-Reversible-Encryption-Enabled contains 45 bytes in 1 blocks (ref 0) d=(nil) 0x1f70ac0 - ms-DS-Password-Reversible-Encryption-Enabled contains 45 bytes in 1 blocks (ref 0) d=(nil) 0x1f78d50 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b3060 - 1.2.840.113556.1.4.2016 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b2fd0 - msDS-PasswordReversibleEncryptionEnabled contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x19b2f30 - ms-DS-Password-Reversible-Encryption-Enabled contains 45 bytes in 1 blocks (ref 0) d=(nil) 0x19b2e90 - struct dsdb_attribute contains 437 bytes in 10 blocks (ref 0) d=(nil) 0x19b2980 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21e32b0 - ms-DS-Password-History-Length contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x22d8c90 - ms-DS-Password-History-Length contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x24feff0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x25271b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19b2570 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b2ca0 - 1.2.840.113556.1.4.2014 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b2c10 - msDS-PasswordHistoryLength contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19b2b80 - ms-DS-Password-History-Length contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19b2af0 - struct dsdb_attribute contains 445 bytes in 8 blocks (ref 0) d=(nil) 0x19b25e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x278f530 - ms-DS-Password-Complexity-Enabled contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x279f740 - ms-DS-Password-Complexity-Enabled contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x288f9d0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b2900 - 1.2.840.113556.1.4.2015 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b2870 - msDS-PasswordComplexityEnabled contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x19b27e0 - ms-DS-Password-Complexity-Enabled contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x19b2750 - struct dsdb_attribute contains 396 bytes in 8 blocks (ref 0) d=(nil) 0x19b2270 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2935aa0 - ms-DS-Other-Settings contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x29a4930 - ms-DS-Other-Settings contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x29e2f40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19b24f0 - 1.2.840.113556.1.4.1621 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b2460 - msDS-Other-Settings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19b23e0 - ms-DS-Other-Settings contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2c5e5e0 - struct dsdb_attribute contains 430 bytes in 10 blocks (ref 0) d=(nil) 0x19b1ed0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b0ec70 - ms-DS-Optional-Feature-GUID contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2b22790 - ms-DS-Optional-Feature-GUID contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2b99090 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ba9670 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19adbd0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19b21f0 - 1.2.840.113556.1.4.2062 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b2160 - msDS-OptionalFeatureGUID contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19b20d0 - ms-DS-Optional-Feature-GUID contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19b2040 - struct dsdb_attribute contains 425 bytes in 8 blocks (ref 0) d=(nil) 0x19b1b30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d204c0 - ms-DS-Optional-Feature-Flags contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2d6ee30 - ms-DS-Optional-Feature-Flags contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2d832b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b1e50 - 1.2.840.113556.1.4.2063 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b1dc0 - msDS-OptionalFeatureFlags contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19b1d30 - ms-DS-Optional-Feature-Flags contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x19b1ca0 - struct dsdb_attribute contains 445 bytes in 9 blocks (ref 0) d=(nil) 0x19b1790 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2dfdc30 - ms-DS-Operations-For-Az-Task-BL contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2e2a1e0 - ms-DS-Operations-For-Az-Task-BL contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2ffa1a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x230c290 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b1ab0 - 1.2.840.113556.1.4.1809 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b1a20 - msDS-OperationsForAzTaskBL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19b1990 - ms-DS-Operations-For-Az-Task-BL contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x19b1900 - struct dsdb_attribute contains 434 bytes in 9 blocks (ref 0) d=(nil) 0x19b13f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31fa110 - ms-DS-Operations-For-Az-Task contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x324caf0 - ms-DS-Operations-For-Az-Task contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3259e90 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23080a0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b1710 - 1.2.840.113556.1.4.1808 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b1680 - msDS-OperationsForAzTask contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19b15f0 - ms-DS-Operations-For-Az-Task contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x19b1560 - struct dsdb_attribute contains 445 bytes in 9 blocks (ref 0) d=(nil) 0x19b1050 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e02540 - ms-DS-Operations-For-Az-Role-BL contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x20105b0 - ms-DS-Operations-For-Az-Role-BL contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x227a2a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2303e20 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b1370 - 1.2.840.113556.1.4.1813 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b12e0 - msDS-OperationsForAzRoleBL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19b1250 - ms-DS-Operations-For-Az-Role-BL contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x19b11c0 - struct dsdb_attribute contains 434 bytes in 9 blocks (ref 0) d=(nil) 0x19b0cb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x275e0b0 - ms-DS-Operations-For-Az-Role contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1c1b460 - ms-DS-Operations-For-Az-Role contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1f58ed0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22ffc60 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b0fd0 - 1.2.840.113556.1.4.1812 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b0f40 - msDS-OperationsForAzRole contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19b0eb0 - ms-DS-Operations-For-Az-Role contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x19b0e20 - struct dsdb_attribute contains 419 bytes in 9 blocks (ref 0) d=(nil) 0x19b0920 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31a6fd0 - ms-DS-OIDToGroup-Link-BL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x3279780 - ms-DS-OIDToGroup-Link-BL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x328d0e0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22fb8d0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b0c30 - 1.2.840.113556.1.4.2052 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b0ba0 - msDS-OIDToGroupLinkBl contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19b0b20 - ms-DS-OIDToGroup-Link-BL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19b0a90 - struct dsdb_attribute contains 408 bytes in 9 blocks (ref 0) d=(nil) 0x19b05a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b6c200 - ms-DS-OIDToGroup-Link contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b74540 - ms-DS-OIDToGroup-Link contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b78ed0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22f75d0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b08a0 - 1.2.840.113556.1.4.2051 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b0810 - msDS-OIDToGroupLink contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19b0790 - ms-DS-OIDToGroup-Link contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19b0710 - struct dsdb_attribute contains 423 bytes in 9 blocks (ref 0) d=(nil) 0x19b0210 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c3e6e0 - ms-DS-Object-Reference-BL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1c8ace0 - ms-DS-Object-Reference-BL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1d2c160 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22f3510 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b0520 - 1.2.840.113556.1.4.1841 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b0490 - msDS-ObjectReferenceBL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19b0410 - ms-DS-Object-Reference-BL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19b0380 - struct dsdb_attribute contains 412 bytes in 9 blocks (ref 0) d=(nil) 0x19aff10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e7f900 - ms-DS-Object-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1ee68d0 - ms-DS-Object-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1f24020 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22ef550 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b0190 - 1.2.840.113556.1.4.1840 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b0100 - msDS-ObjectReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19b0080 - ms-DS-Object-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20088d0 - struct dsdb_attribute contains 468 bytes in 8 blocks (ref 0) d=(nil) 0x19afb70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f99410 - ms-DS-Non-Security-Group-Extra-Classes contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x1fa8eb0 - ms-DS-Non-Security-Group-Extra-Classes contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x2000d00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19afe90 - 1.2.840.113556.1.4.1689 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19afe00 - msDS-Non-Security-Group-Extra-Classes contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x19afd70 - ms-DS-Non-Security-Group-Extra-Classes contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x19afce0 - struct dsdb_attribute contains 403 bytes in 9 blocks (ref 0) d=(nil) 0x19af7f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20cef20 - ms-DS-Non-Members-BL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x20f4d10 - ms-DS-Non-Members-BL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x219a7b0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22e7550 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19afaf0 - 1.2.840.113556.1.4.1794 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19afa60 - msDS-NonMembersBL contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19af9e0 - ms-DS-Non-Members-BL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19af960 - struct dsdb_attribute contains 392 bytes in 9 blocks (ref 0) d=(nil) 0x19af470 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22e0fc0 - ms-DS-Non-Members contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x245e9a0 - ms-DS-Non-Members contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x24930b0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22e3120 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19af770 - 1.2.840.113556.1.4.1793 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19af6e0 - msDS-NonMembers contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19af660 - ms-DS-Non-Members contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19af5e0 - struct dsdb_attribute contains 419 bytes in 9 blocks (ref 0) d=(nil) 0x19af0e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2597200 - ms-DS-Never-Reveal-Group contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x25b6c00 - ms-DS-Never-Reveal-Group contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x25c2590 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22dee30 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19af3f0 - 1.2.840.113556.1.4.1926 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19af360 - msDS-NeverRevealGroup contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19af2e0 - ms-DS-Never-Reveal-Group contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19af250 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x19aed60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2755fc0 - ms-DS-NC-Type contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x276eb20 - ms-DS-NC-Type contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2776e80 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19af060 - 1.2.840.113556.1.4.2024 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19aefd0 - msDS-NcType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19aef50 - ms-DS-NC-Type contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19aeed0 - struct dsdb_attribute contains 453 bytes in 9 blocks (ref 0) d=(nil) 0x19ae9c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x283c350 - ms-DS-NC-RO-Replica-Locations-BL contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x2850570 - ms-DS-NC-RO-Replica-Locations-BL contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x286f190 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22d6c80 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19aece0 - 1.2.840.113556.1.4.1968 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19aec50 - msDS-NC-RO-Replica-Locations-BL contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x19aebc0 - ms-DS-NC-RO-Replica-Locations-BL contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x19aeb30 - struct dsdb_attribute contains 441 bytes in 9 blocks (ref 0) d=(nil) 0x19ae6a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28e3da0 - ms-DS-NC-RO-Replica-Locations contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x28ec570 - ms-DS-NC-RO-Replica-Locations contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x28fd400 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22d29b0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x29a3d60 - 1.2.840.113556.1.4.1967 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ae930 - msDS-NC-RO-Replica-Locations contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x19ae8a0 - ms-DS-NC-RO-Replica-Locations contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19ae810 - struct dsdb_attribute contains 441 bytes in 8 blocks (ref 0) d=(nil) 0x19ae380 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2972be0 - ms-DS-NC-Repl-Outbound-Neighbors contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x298aa90 - ms-DS-NC-Repl-Outbound-Neighbors contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x299f690 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2a9e010 - 1.2.840.113556.1.4.1706 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ae610 - msDS-NCReplOutboundNeighbors contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x19ae580 - ms-DS-NC-Repl-Outbound-Neighbors contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x19ae4f0 - struct dsdb_attribute contains 437 bytes in 8 blocks (ref 0) d=(nil) 0x19adfe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a2bca0 - ms-DS-NC-Repl-Inbound-Neighbors contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2a4bc00 - ms-DS-NC-Repl-Inbound-Neighbors contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2a67fe0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19ae300 - 1.2.840.113556.1.4.1705 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ae270 - msDS-NCReplInboundNeighbors contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19ae1e0 - ms-DS-NC-Repl-Inbound-Neighbors contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x19ae150 - struct dsdb_attribute contains 429 bytes in 9 blocks (ref 0) d=(nil) 0x19adc40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ac9c60 - ms-DS-NC-Replica-Locations contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2afe5e0 - ms-DS-NC-Replica-Locations contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2b0e0a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22c6480 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19adf60 - 1.2.840.113556.1.4.1661 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19aded0 - msDS-NC-Replica-Locations contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19ade40 - ms-DS-NC-Replica-Locations contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19addb0 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x19ad850 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b36e80 - ms-DS-NC-Repl-Cursors contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2b8c340 - ms-DS-NC-Repl-Cursors contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2b9c510 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19adb50 - 1.2.840.113556.1.4.1704 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19adac0 - msDS-NCReplCursors contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19ada40 - ms-DS-NC-Repl-Cursors contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19ad9c0 - struct dsdb_attribute contains 437 bytes in 10 blocks (ref 0) d=(nil) 0x19ad4c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bd8020 - ms-DS-Minimum-Password-Length contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2bec760 - ms-DS-Minimum-Password-Length contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2c2d870 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2c35ed0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19ad7e0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2ce3360 - 1.2.840.113556.1.4.2013 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ad750 - msDS-MinimumPasswordLength contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19ad6c0 - ms-DS-Minimum-Password-Length contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19ad630 - struct dsdb_attribute contains 422 bytes in 9 blocks (ref 0) d=(nil) 0x19ad120 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ca1fd0 - ms-DS-Minimum-Password-Age contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2cc6d60 - ms-DS-Minimum-Password-Age contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2ccf1e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19acd10 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19ad440 - 1.2.840.113556.1.4.2012 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ad3b0 - msDS-MinimumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ad320 - ms-DS-Minimum-Password-Age contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19ad290 - struct dsdb_attribute contains 433 bytes in 9 blocks (ref 0) d=(nil) 0x19acd80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d396d0 - ms-DS-Members-For-Az-Role-BL contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2d3d7e0 - ms-DS-Members-For-Az-Role-BL contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2d59ed0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22b5cd0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19ad0a0 - 1.2.840.113556.1.4.1807 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ad010 - msDS-MembersForAzRoleBL contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19acf80 - ms-DS-Members-For-Az-Role-BL contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x19acef0 - struct dsdb_attribute contains 422 bytes in 9 blocks (ref 0) d=(nil) 0x19ac980 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d7f930 - ms-DS-Members-For-Az-Role contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2db3040 - ms-DS-Members-For-Az-Role contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2dbb1f0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22b1930 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19acc90 - 1.2.840.113556.1.4.1806 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19acc00 - msDS-MembersForAzRole contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19acb80 - ms-DS-Members-For-Az-Role contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19acaf0 - struct dsdb_attribute contains 382 bytes in 9 blocks (ref 0) d=(nil) 0x19ac610 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2de0530 - ms-DS-Max-Values contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2de8de0 - ms-DS-Max-Values contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2df57d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19ac910 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19ac890 - 1.2.840.113556.1.4.1842 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ac800 - msDs-MaxValues contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19ac780 - ms-DS-Max-Values contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2f8d3d0 - struct dsdb_attribute contains 422 bytes in 9 blocks (ref 0) d=(nil) 0x19ac270 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e81c40 - ms-DS-Maximum-Password-Age contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2ee6e80 - ms-DS-Maximum-Password-Age contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2f24160 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19abe80 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19ac590 - 1.2.840.113556.1.4.2011 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ac500 - msDS-MaximumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ac470 - ms-DS-Maximum-Password-Age contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19ac3e0 - struct dsdb_attribute contains 392 bytes in 9 blocks (ref 0) d=(nil) 0x19abef0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30c33b0 - ms-DS-Mastered-By contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x3160a70 - ms-DS-Mastered-By contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x31b92c0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22a5390 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19ac1f0 - 1.2.840.113556.1.4.1837 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ac160 - msDs-masteredBy contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19ac0e0 - ms-DS-Mastered-By contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19ac060 - struct dsdb_attribute contains 422 bytes in 8 blocks (ref 0) d=(nil) 0x19abae0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3210350 - MS-DS-Machine-Account-Quota contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3224380 - MS-DS-Machine-Account-Quota contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x322cfd0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19abe00 - 1.2.840.113556.1.4.1411 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19abd70 - ms-DS-MachineAccountQuota contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19abce0 - MS-DS-Machine-Account-Quota contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19abc50 - struct dsdb_attribute contains 436 bytes in 9 blocks (ref 0) d=(nil) 0x19ab6d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x326ffa0 - ms-DS-Logon-Time-Sync-Interval contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x19f0ac0 - ms-DS-Logon-Time-Sync-Interval contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x19fc4a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19aba70 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19ab9f0 - 1.2.840.113556.1.4.1784 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ab960 - msDS-LogonTimeSyncInterval contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19ab8d0 - ms-DS-Logon-Time-Sync-Interval contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x19ab840 - struct dsdb_attribute contains 414 bytes in 10 blocks (ref 0) d=(nil) 0x19ab350 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b1c380 - ms-DS-Lockout-Threshold contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c96dc0 - ms-DS-Lockout-Threshold contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d34ab0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1d3bf40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19ab660 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19ab5e0 - 1.2.840.113556.1.4.2019 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ab550 - msDS-LockoutThreshold contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x21f7880 - ms-DS-Lockout-Threshold contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ab4c0 - struct dsdb_attribute contains 446 bytes in 9 blocks (ref 0) d=(nil) 0x19aaf40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20a7d50 - ms-DS-Lockout-Observation-Window contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x216d9f0 - ms-DS-Lockout-Observation-Window contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x2181c00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19ab2e0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19ab260 - 1.2.840.113556.1.4.2017 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ab1d0 - msDS-LockoutObservationWindow contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19ab140 - ms-DS-Lockout-Observation-Window contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x19ab0b0 - struct dsdb_attribute contains 407 bytes in 9 blocks (ref 0) d=(nil) 0x19aac40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2365460 - ms-DS-Lockout-Duration contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2375ac0 - ms-DS-Lockout-Duration contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x256ef50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19aa590 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19aaec0 - 1.2.840.113556.1.4.2018 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19aae30 - msDS-LockoutDuration contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19aadb0 - ms-DS-Lockout-Duration contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1bb6940 - struct dsdb_attribute contains 449 bytes in 8 blocks (ref 0) d=(nil) 0x19aa920 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29f2d10 - ms-DS-Local-Effective-Recycle-Time contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x3056930 - ms-DS-Local-Effective-Recycle-Time contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1b85850 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x28f1090 - 1.2.840.113556.1.4.2060 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19aabb0 - msDS-LocalEffectiveRecycleTime contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x19aab20 - ms-DS-Local-Effective-Recycle-Time contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x19aaa90 - struct dsdb_attribute contains 453 bytes in 8 blocks (ref 0) d=(nil) 0x19aa600 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fa55c0 - ms-DS-Local-Effective-Deletion-Time contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x203c1a0 - ms-DS-Local-Effective-Deletion-Time contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x2228770 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2fc76d0 - 1.2.840.113556.1.4.2059 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19aa890 - msDS-LocalEffectiveDeletionTime contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x19aa800 - ms-DS-Local-Effective-Deletion-Time contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x19aa770 - struct dsdb_attribute contains 488 bytes in 8 blocks (ref 0) d=(nil) 0x19aa1d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ce7b60 - ms-DS-Last-Successful-Interactive-Logon-Time contains 45 bytes in 1 blocks (ref 0) d=(nil) 0x2ea8ad0 - ms-DS-Last-Successful-Interactive-Logon-Time contains 45 bytes in 1 blocks (ref 0) d=(nil) 0x2ebd140 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19aa510 - 1.2.840.113556.1.4.1970 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19aa480 - msDS-LastSuccessfulInteractiveLogonTime contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x19aa3e0 - ms-DS-Last-Successful-Interactive-Logon-Time contains 45 bytes in 1 blocks (ref 0) d=(nil) 0x19aa340 - struct dsdb_attribute contains 402 bytes in 10 blocks (ref 0) d=(nil) 0x19a9ed0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a87c20 - ms-DS-Last-Known-RDN contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1ab95c0 - ms-DS-Last-Known-RDN contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1ac9470 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1abd780 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a6ca0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19aa150 - 1.2.840.113556.1.4.2067 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19aa0c0 - msDS-LastKnownRDN contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19aa040 - ms-DS-Last-Known-RDN contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1b50c10 - struct dsdb_attribute contains 472 bytes in 8 blocks (ref 0) d=(nil) 0x19a9b20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b14140 - ms-DS-Last-Failed-Interactive-Logon-Time contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x1b1d090 - ms-DS-Last-Failed-Interactive-Logon-Time contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x1b388d0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a9e50 - 1.2.840.113556.1.4.1971 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a9dc0 - msDS-LastFailedInteractiveLogonTime contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x19a9d30 - ms-DS-Last-Failed-Interactive-Logon-Time contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x19a9c90 - struct dsdb_attribute contains 403 bytes in 9 blocks (ref 0) d=(nil) 0x19a97a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b89470 - ms-DS-KrbTgt-Link-BL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1b91760 - ms-DS-KrbTgt-Link-BL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1b99710 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2278000 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a9aa0 - 1.2.840.113556.1.4.1931 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a9a10 - msDS-KrbTgtLinkBl contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19a9990 - ms-DS-KrbTgt-Link-BL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19a9910 - struct dsdb_attribute contains 392 bytes in 9 blocks (ref 0) d=(nil) 0x19a9420 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c09d60 - ms-DS-KrbTgt-Link contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1c169d0 - ms-DS-KrbTgt-Link contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1c1f100 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2273c90 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a9720 - 1.2.840.113556.1.4.1923 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a9690 - msDS-KrbTgtLink contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19a9610 - ms-DS-KrbTgt-Link contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19a9590 - struct dsdb_attribute contains 403 bytes in 8 blocks (ref 0) d=(nil) 0x19a90a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cceb20 - ms-DS-KeyVersionNumber contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1ce70f0 - ms-DS-KeyVersionNumber contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1d1b770 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a93a0 - 1.2.840.113556.1.4.1782 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a9310 - msDS-KeyVersionNumber contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19a9290 - ms-DS-KeyVersionNumber contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19a9210 - struct dsdb_attribute contains 431 bytes in 8 blocks (ref 0) d=(nil) 0x19a8d00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d6c240 - ms-DS-Is-User-Cachable-At-Rodc contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1d951b0 - ms-DS-Is-User-Cachable-At-Rodc contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1d9d0a0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a9020 - 1.2.840.113556.1.4.2025 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a8f90 - msDS-IsUserCachableAtRodc contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19a8f00 - ms-DS-Is-User-Cachable-At-Rodc contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x19a8e70 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x19a8980 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e981e0 - ms-DS-isRODC contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1eb44b0 - ms-DS-isRODC contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1ebf540 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a8c80 - 1.2.840.113556.1.4.1960 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a8bf0 - msDS-isRODC contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19a8b70 - ms-DS-isRODC contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19a8af0 - struct dsdb_attribute contains 434 bytes in 9 blocks (ref 0) d=(nil) 0x19a85e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f2fae0 - ms-DS-Is-Partial-Replica-For contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1f3fe50 - ms-DS-Is-Partial-Replica-For contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1f4cf90 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2263c20 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a8900 - 1.2.840.113556.1.4.1934 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a8870 - msDS-IsPartialReplicaFor contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19a87e0 - ms-DS-Is-Partial-Replica-For contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x19a8750 - struct dsdb_attribute contains 355 bytes in 8 blocks (ref 0) d=(nil) 0x19a8260 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f811e0 - ms-DS-isGC contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1f890f0 - ms-DS-isGC contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1f91650 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a8560 - 1.2.840.113556.1.4.1959 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a84d0 - msDS-isGC contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19a8450 - ms-DS-isGC contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19a83d0 - struct dsdb_attribute contains 422 bytes in 9 blocks (ref 0) d=(nil) 0x19a7ed0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fad130 - ms-DS-Is-Full-Replica-For contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1fd9d70 - ms-DS-Is-Full-Replica-For contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1fe1ae0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x225bae0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a81e0 - 1.2.840.113556.1.4.1932 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a8150 - msDS-IsFullReplicaFor contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19a80d0 - ms-DS-Is-Full-Replica-For contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19a8040 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x19a7b50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20150a0 - ms-DS-Is-Domain-For contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x201ff40 - ms-DS-Is-Domain-For contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2037640 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2257820 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a7e50 - 1.2.840.113556.1.4.1933 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a7dc0 - msDS-IsDomainFor contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19a7d40 - ms-DS-Is-Domain-For contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19a7cc0 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x19a77d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x205fc30 - ms-DS-IntId contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x206f270 - ms-DS-IntId contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x207f780 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a7ad0 - 1.2.840.113556.1.4.1716 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a7a40 - msDS-IntId contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19a79c0 - ms-DS-IntId contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19a7940 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x19a7450 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2122930 - ms-DS-Integer contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x21318e0 - ms-DS-Integer contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x215c6c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a7750 - 1.2.840.113556.1.4.1835 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a76c0 - msDS-Integer contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19a7640 - ms-DS-Integer contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19a75c0 - struct dsdb_attribute contains 438 bytes in 9 blocks (ref 0) d=(nil) 0x19a70b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x224db50 - ms-DS-Host-Service-Account-BL contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x225da80 - ms-DS-Host-Service-Account-BL contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2265cb0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x224bb40 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a73d0 - 1.2.840.113556.1.4.2057 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a7340 - msDS-HostServiceAccountBL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19a72b0 - ms-DS-Host-Service-Account-BL contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19a7220 - struct dsdb_attribute contains 427 bytes in 9 blocks (ref 0) d=(nil) 0x19a6d10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2355060 - ms-DS-Host-Service-Account contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x23f0040 - ms-DS-Host-Service-Account contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2408590 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2247790 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a7030 - 1.2.840.113556.1.4.2056 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a6fa0 - msDS-HostServiceAccount contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a6f10 - ms-DS-Host-Service-Account contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19a6e80 - struct dsdb_attribute contains 403 bytes in 9 blocks (ref 0) d=(nil) 0x19a6920 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x250f400 - ms-DS-Has-Master-NCs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1964230 - ms-DS-Has-Master-NCs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x189bf00 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2243420 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a6c20 - 1.2.840.113556.1.4.1836 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a6b90 - msDS-hasMasterNCs contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19a6b10 - ms-DS-Has-Master-NCs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19a6a90 - struct dsdb_attribute contains 436 bytes in 11 blocks (ref 0) d=(nil) 0x19a6580 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a1b330 - ms-DS-Has-Instantiated-NCs contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1a1b1e0 - ms-DS-Has-Instantiated-NCs contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1af7d10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b1c130 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a6510 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x223f0c0 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a68a0 - 1.2.840.113556.1.4.1709 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a6810 - msDS-HasInstantiatedNCs contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a6780 - ms-DS-Has-Instantiated-NCs contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19a66f0 - struct dsdb_attribute contains 426 bytes in 9 blocks (ref 0) d=(nil) 0x19a6180 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b4c0a0 - ms-DS-Has-Full-Replica-NCs contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1ba9320 - ms-DS-Has-Full-Replica-NCs contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1c06390 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x223aa20 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a6490 - 1.2.840.113556.1.4.1925 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a6400 - msDS-hasFullReplicaNCs contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19a6380 - ms-DS-Has-Full-Replica-NCs contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19a62f0 - struct dsdb_attribute contains 411 bytes in 11 blocks (ref 0) d=(nil) 0x19a5e00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c71540 - ms-DS-Has-Domain-NCs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1c7e1b0 - ms-DS-Has-Domain-NCs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1c9e690 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1d02f40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a5d90 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22365f0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a6100 - 1.2.840.113556.1.4.1820 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a6070 - msDS-HasDomainNCs contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19a5ff0 - ms-DS-Has-Domain-NCs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19a5f70 - struct dsdb_attribute contains 413 bytes in 8 blocks (ref 0) d=(nil) 0x19a5a80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d37b30 - ms-DS-HAB-Seniority-Index contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1df5770 - ms-DS-HAB-Seniority-Index contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1e0a5c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a5d10 - 1.2.840.113556.1.4.1997 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a5c80 - msDS-HABSeniorityIndex contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1fa0c80 - ms-DS-HAB-Seniority-Index contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19a5bf0 - struct dsdb_attribute contains 415 bytes in 10 blocks (ref 0) d=(nil) 0x19a56f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e3ddc0 - ms-DS-Filter-Containers contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ec73d0 - ms-DS-Filter-Containers contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f13170 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f7dcf0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a52b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a5a00 - 1.2.840.113556.1.4.1703 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a5970 - msDS-FilterContainers contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19a58f0 - ms-DS-Filter-Containers contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a5860 - struct dsdb_attribute contains 552 bytes in 8 blocks (ref 0) d=(nil) 0x19a5320 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fb9bc0 - ms-DS-Failed-Interactive-Logon-Count-At-Last-Successful-Logon contains 62 bytes in 1 blocks (ref 0) d=(nil) 0x1fe6030 - ms-DS-Failed-Interactive-Logon-Count-At-Last-Successful-Logon contains 62 bytes in 1 blocks (ref 0) d=(nil) 0x20675f0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a5670 - 1.2.840.113556.1.4.1973 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a55e0 - msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x19a5540 - ms-DS-Failed-Interactive-Logon-Count-At-Last-Successful-Logon contains 62 bytes in 1 blocks (ref 0) d=(nil) 0x19a5490 - struct dsdb_attribute contains 456 bytes in 8 blocks (ref 0) d=(nil) 0x19a4f10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20afcc0 - ms-DS-Failed-Interactive-Logon-Count contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x20b79b0 - ms-DS-Failed-Interactive-Logon-Count contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x20bb0f0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a5230 - 1.2.840.113556.1.4.1972 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a51a0 - msDS-FailedInteractiveLogonCount contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x19a5110 - ms-DS-Failed-Interactive-Logon-Count contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x19a5080 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x19a4b20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20dde70 - ms-DS-External-Store contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x20de400 - ms-DS-External-Store contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2100da0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a4ea0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a4e20 - 1.2.840.113556.1.4.1834 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a4d90 - msDS-ExternalStore contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19a4d10 - ms-DS-External-Store contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19a4c90 - struct dsdb_attribute contains 391 bytes in 9 blocks (ref 0) d=(nil) 0x19a47b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21224e0 - ms-DS-External-Key contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x21f68b0 - ms-DS-External-Key contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2245790 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a4ab0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a4a30 - 1.2.840.113556.1.4.1833 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a49a0 - msDS-ExternalKey contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19a4920 - ms-DS-External-Key contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x227e570 - struct dsdb_attribute contains 432 bytes in 10 blocks (ref 0) d=(nil) 0x19a4490 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22551b0 - ms-DS-ExecuteScriptPassword contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x225a740 - ms-DS-ExecuteScriptPassword contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2262900 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2272250 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a3d00 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2317160 - 1.2.840.113556.1.4.1783 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a4720 - msDS-ExecuteScriptPassword contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19a4690 - ms-DS-ExecuteScriptPassword contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19a4600 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x19a4100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x228e3b0 - ms-DS-Entry-Time-To-Die contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22af3b0 - ms-DS-Entry-Time-To-Die contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22f98f0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a4410 - 1.2.840.113556.1.4.1622 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a4380 - msDS-Entry-Time-To-Die contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19a4300 - ms-DS-Entry-Time-To-Die contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a4270 - struct dsdb_attribute contains 419 bytes in 9 blocks (ref 0) d=(nil) 0x19a3d70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2336b40 - ms-DS-Enabled-Feature-BL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2348760 - ms-DS-Enabled-Feature-BL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x236a470 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2211430 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a4080 - 1.2.840.113556.1.4.2069 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a3ff0 - msDS-EnabledFeatureBL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19a3f70 - ms-DS-Enabled-Feature-BL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19a3ee0 - struct dsdb_attribute contains 408 bytes in 9 blocks (ref 0) d=(nil) 0x19a3980 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23aebd0 - ms-DS-Enabled-Feature contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x23bebf0 - ms-DS-Enabled-Feature contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x23c6be0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x220cf30 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a3c80 - 1.2.840.113556.1.4.2061 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a3bf0 - msDS-EnabledFeature contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19a3b70 - ms-DS-Enabled-Feature contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19a3af0 - struct dsdb_attribute contains 396 bytes in 10 blocks (ref 0) d=(nil) 0x19a3600 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x245a3a0 - ms-DS-DnsRootAlias contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x246e220 - ms-DS-DnsRootAlias contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x24f6c20 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x24eec20 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a1db0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a3900 - 1.2.840.113556.1.4.1719 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a3870 - msDS-DnsRootAlias contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19a37f0 - ms-DS-DnsRootAlias contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19a3770 - struct dsdb_attribute contains 429 bytes in 8 blocks (ref 0) d=(nil) 0x19a3260 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x255f070 - ms-DS-Deleted-Object-Lifetime contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2562ce0 - ms-DS-Deleted-Object-Lifetime contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x256f7c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a3580 - 1.2.840.113556.1.4.2068 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a34f0 - msDS-DeletedObjectLifetime contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19a3460 - ms-DS-Deleted-Object-Lifetime contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19a33d0 - struct dsdb_attribute contains 390 bytes in 8 blocks (ref 0) d=(nil) 0x19a2ee0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2572f40 - ms-DS-Default-Quota contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2582cc0 - ms-DS-Default-Quota contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x25ae7d0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a31e0 - 1.2.840.113556.1.4.1846 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a3150 - msDS-DefaultQuota contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19a30d0 - ms-DS-Default-Quota contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19a3050 - struct dsdb_attribute contains 375 bytes in 8 blocks (ref 0) d=(nil) 0x19a2b60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25bee30 - ms-DS-Date-Time contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x25de7a0 - ms-DS-Date-Time contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x25ea090 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a2e60 - 1.2.840.113556.1.4.1832 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a2dd0 - msDS-DateTime contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19a2d50 - ms-DS-Date-Time contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19a2cd0 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x19a27e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x260d550 - MS-DS-Creator-SID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x260dae0 - MS-DS-Creator-SID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2611210 - 2.5.5.17 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a2ae0 - 1.2.840.113556.1.4.1410 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a2a50 - mS-DS-CreatorSID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19a29d0 - MS-DS-Creator-SID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19a2950 - struct dsdb_attribute contains 404 bytes in 8 blocks (ref 0) d=(nil) 0x19a2460 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2618d50 - MS-DS-Consistency-Guid contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x26209c0 - MS-DS-Consistency-Guid contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x263c1b0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a2760 - 1.2.840.113556.1.4.1360 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a26d0 - mS-DS-ConsistencyGuid contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19a2650 - MS-DS-Consistency-Guid contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19a25d0 - struct dsdb_attribute contains 430 bytes in 8 blocks (ref 0) d=(nil) 0x19a2140 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x264f630 - MS-DS-Consistency-Child-Count contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x267a710 - MS-DS-Consistency-Child-Count contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2689f40 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x270e640 - 1.2.840.113556.1.4.1361 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a23d0 - mS-DS-ConsistencyChildCount contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19a2340 - MS-DS-Consistency-Child-Count contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19a22b0 - struct dsdb_attribute contains 452 bytes in 8 blocks (ref 0) d=(nil) 0x19a1e20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26b8c30 - ms-DS-Cached-Membership-Time-Stamp contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x26d7f80 - ms-DS-Cached-Membership-Time-Stamp contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x26dfac0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2787a00 - 1.2.840.113556.1.4.1442 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a20b0 - msDS-Cached-Membership-Time-Stamp contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x19a2020 - ms-DS-Cached-Membership-Time-Stamp contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x19a1f90 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x19a1a20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27162c0 - ms-DS-Cached-Membership contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x272e080 - ms-DS-Cached-Membership contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2761c40 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a1d30 - 1.2.840.113556.1.4.1441 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a1ca0 - msDS-Cached-Membership contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19a1c20 - ms-DS-Cached-Membership contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a1b90 - struct dsdb_attribute contains 383 bytes in 9 blocks (ref 0) d=(nil) 0x19a16a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x291df90 - ms-DS-Byte-Array contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x29326e0 - ms-DS-Byte-Array contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x29642c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a1630 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a19a0 - 1.2.840.113556.1.4.1831 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a1910 - msDS-ByteArray contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19a1890 - ms-DS-Byte-Array contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19a1810 - struct dsdb_attribute contains 440 bytes in 9 blocks (ref 0) d=(nil) 0x19a1290 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29faa00 - ms-DS-BridgeHead-Servers-Used contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2a8a8a0 - ms-DS-BridgeHead-Servers-Used contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2a9a2b0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x21e1220 - 2.5.5.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a15b0 - 1.2.840.113556.1.4.2049 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a1520 - msDS-BridgeHeadServersUsed contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19a1490 - ms-DS-BridgeHead-Servers-Used contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19a1400 - struct dsdb_attribute contains 407 bytes in 9 blocks (ref 0) d=(nil) 0x19a0f10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ab9c30 - ms-DS-Behavior-Version contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2abd970 - ms-DS-Behavior-Version contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2b53530 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a0ea0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a1210 - 1.2.840.113556.1.4.1459 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a1180 - msDS-Behavior-Version contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19a1100 - ms-DS-Behavior-Version contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19a1080 - struct dsdb_attribute contains 439 bytes in 8 blocks (ref 0) d=(nil) 0x19a0b00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bd3b20 - ms-DS-Az-Task-Is-Role-Definition contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x2c28d90 - ms-DS-Az-Task-Is-Role-Definition contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x2cdec20 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a0e20 - 1.2.840.113556.1.4.1818 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a0d90 - msDS-AzTaskIsRoleDefinition contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19a0d00 - ms-DS-Az-Task-Is-Role-Definition contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x19a0c70 - struct dsdb_attribute contains 409 bytes in 9 blocks (ref 0) d=(nil) 0x19a0700 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e47b60 - ms-DS-Az-Script-Timeout contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e53080 - ms-DS-Az-Script-Timeout contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e5c7b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a0a90 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a0a10 - 1.2.840.113556.1.4.1797 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a0980 - msDS-AzScriptTimeout contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19a0900 - ms-DS-Az-Script-Timeout contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a0870 - struct dsdb_attribute contains 443 bytes in 9 blocks (ref 0) d=(nil) 0x19a02f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e90250 - ms-DS-Az-Script-Engine-Cache-Max contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x2f6d0f0 - ms-DS-Az-Script-Engine-Cache-Max contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x2fb4440 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a0690 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19a0610 - 1.2.840.113556.1.4.1796 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a0580 - msDS-AzScriptEngineCacheMax contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19a04f0 - ms-DS-Az-Script-Engine-Cache-Max contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x19a0460 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x199ff00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2fd9530 - ms-DS-Az-Scope-Name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2fe24c0 - ms-DS-Az-Scope-Name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3010420 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x30076e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19a0280 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19a0200 - 1.2.840.113556.1.4.1799 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19a0170 - msDS-AzScopeName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19a00f0 - ms-DS-Az-Scope-Name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19a0070 - struct dsdb_attribute contains 401 bytes in 9 blocks (ref 0) d=(nil) 0x199fb10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3023850 - ms-DS-Az-Operation-ID contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3048a70 - ms-DS-Az-Operation-ID contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x307adf0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199fe90 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199fe10 - 1.2.840.113556.1.4.1800 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199fd80 - msDS-AzOperationID contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x199fd00 - ms-DS-Az-Operation-ID contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x199fc80 - struct dsdb_attribute contains 402 bytes in 10 blocks (ref 0) d=(nil) 0x199f720 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3075d20 - ms-DS-Az-Object-Guid contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x30d4cf0 - ms-DS-Az-Object-Guid contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3111c90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x30d9930 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199faa0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199fa20 - 1.2.840.113556.1.4.1949 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199f990 - msDS-AzObjectGuid contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x199f910 - ms-DS-Az-Object-Guid contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x199f890 - struct dsdb_attribute contains 405 bytes in 9 blocks (ref 0) d=(nil) 0x199f330 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x311b260 - ms-DS-Az-Minor-Version contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x312cd10 - ms-DS-Az-Minor-Version contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3136330 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199f6b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199f630 - 1.2.840.113556.1.4.1825 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199f5a0 - msDS-AzMinorVersion contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x199f520 - ms-DS-Az-Minor-Version contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x199f4a0 - struct dsdb_attribute contains 405 bytes in 9 blocks (ref 0) d=(nil) 0x199ef40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31775d0 - ms-DS-Az-Major-Version contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3189d80 - ms-DS-Az-Major-Version contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x319ad40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199f2c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199f240 - 1.2.840.113556.1.4.1824 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199f1b0 - msDS-AzMajorVersion contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x199f130 - ms-DS-Az-Major-Version contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x199f0b0 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x199ebd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3195b20 - ms-DS-Az-LDAP-Query contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x31dff70 - ms-DS-Az-LDAP-Query contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x3220150 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x320bcf0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199eed0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199ee50 - 1.2.840.113556.1.4.1792 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199edc0 - msDS-AzLDAPQuery contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x199ed40 - ms-DS-Az-LDAP-Query contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x20a0070 - struct dsdb_attribute contains 463 bytes in 10 blocks (ref 0) d=(nil) 0x199e7c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19bb150 - ms-DS-Az-Last-Imported-Biz-Rule-Path contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x1a22e60 - ms-DS-Az-Last-Imported-Biz-Rule-Path contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x1b60b90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1c0e510 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199eb60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199eae0 - 1.2.840.113556.1.4.1803 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199ea50 - msDS-AzLastImportedBizRulePath contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x199e9c0 - ms-DS-Az-Last-Imported-Biz-Rule-Path contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x199e930 - struct dsdb_attribute contains 402 bytes in 9 blocks (ref 0) d=(nil) 0x199e440 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20dadf0 - ms-DS-Az-Generic-Data contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x20e9f90 - ms-DS-Az-Generic-Data contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x20f4770 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199e3d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199e740 - 1.2.840.113556.1.4.1950 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199e6b0 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x199e630 - ms-DS-Az-Generic-Data contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x199e5b0 - struct dsdb_attribute contains 409 bytes in 8 blocks (ref 0) d=(nil) 0x199e040 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x212e710 - ms-DS-Az-Generate-Audits contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2135790 - ms-DS-Az-Generate-Audits contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x21552d0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199e350 - 1.2.840.113556.1.4.1805 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199e2c0 - msDS-AzGenerateAudits contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x199e240 - ms-DS-Az-Generate-Audits contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x199e1b0 - struct dsdb_attribute contains 409 bytes in 9 blocks (ref 0) d=(nil) 0x199dc40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x219a970 - ms-DS-Az-Domain-Timeout contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2213770 - ms-DS-Az-Domain-Timeout contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22b7f30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199dfd0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199df50 - 1.2.840.113556.1.4.1795 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199dec0 - msDS-AzDomainTimeout contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x199de40 - ms-DS-Az-Domain-Timeout contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199ddb0 - struct dsdb_attribute contains 390 bytes in 10 blocks (ref 0) d=(nil) 0x199d8d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22bc9d0 - ms-DS-Az-Class-ID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2301e40 - ms-DS-Az-Class-ID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x23cbb80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x23720f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199dbd0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199db50 - 1.2.840.113556.1.4.1816 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199dac0 - msDS-AzClassId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x199da40 - ms-DS-Az-Class-ID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2946cb0 - struct dsdb_attribute contains 425 bytes in 10 blocks (ref 0) d=(nil) 0x199d4d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x253bba0 - ms-DS-Az-Biz-Rule-Language contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2543190 - ms-DS-Az-Biz-Rule-Language contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2634550 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x288b600 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199d860 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199d7e0 - 1.2.840.113556.1.4.1802 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199d750 - msDS-AzBizRuleLanguage contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x199d6d0 - ms-DS-Az-Biz-Rule-Language contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x199d640 - struct dsdb_attribute contains 390 bytes in 10 blocks (ref 0) d=(nil) 0x199d160 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cdf1b0 - ms-DS-Az-Biz-Rule contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2d49ad0 - ms-DS-Az-Biz-Rule contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1aacbd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1964770 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199d460 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199d3e0 - 1.2.840.113556.1.4.1801 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199d350 - msDS-AzBizRule contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x199d2d0 - ms-DS-Az-Biz-Rule contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1b640d0 - struct dsdb_attribute contains 430 bytes in 9 blocks (ref 0) d=(nil) 0x199cdd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1965090 - ms-DS-Az-Application-Version contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1a04260 - ms-DS-Az-Application-Version contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1aa4230 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199d0f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2151030 - 1.2.840.113556.1.4.1817 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199d060 - msDS-AzApplicationVersion contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x199cfd0 - ms-DS-Az-Application-Version contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x199cf40 - struct dsdb_attribute contains 422 bytes in 10 blocks (ref 0) d=(nil) 0x199ca50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d13360 - ms-DS-Az-Application-Name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1d7d740 - ms-DS-Az-Application-Name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1dc9ab0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2135ea0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199cd60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199cce0 - 1.2.840.113556.1.4.1798 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199cc50 - msDS-AzApplicationName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x220ef70 - ms-DS-Az-Application-Name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x199cbc0 - struct dsdb_attribute contains 418 bytes in 9 blocks (ref 0) d=(nil) 0x199c6c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21588f0 - ms-DS-Az-Application-Data contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x216cf40 - ms-DS-Az-Application-Data contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x21dbb20 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199b4d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199c9d0 - 1.2.840.113556.1.4.1819 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199c940 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x199c8c0 - ms-DS-Az-Application-Data contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x199c830 - struct dsdb_attribute contains 407 bytes in 8 blocks (ref 0) d=(nil) 0x199c330 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22b3bd0 - ms-DS-Auxiliary-Classes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22c86c0 - ms-DS-Auxiliary-Classes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22fdb70 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199c640 - 1.2.840.113556.1.4.1458 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199c5b0 - msDS-Auxiliary-Classes contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x199c530 - ms-DS-Auxiliary-Classes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199c4a0 - struct dsdb_attribute contains 456 bytes in 9 blocks (ref 0) d=(nil) 0x199bf90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x230ad30 - ms-DS-AuthenticatedTo-Accountlist contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2327180 - ms-DS-AuthenticatedTo-Accountlist contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2382480 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2188330 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199c2b0 - 1.2.840.113556.1.4.1957 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199c220 - msDS-AuthenticatedToAccountlist contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x199c190 - ms-DS-AuthenticatedTo-Accountlist contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x199c100 - struct dsdb_attribute contains 420 bytes in 9 blocks (ref 0) d=(nil) 0x199bc00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23e06f0 - ms-DS-AuthenticatedAt-DC contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x23f4160 - ms-DS-AuthenticatedAt-DC contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x253b020 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2183f20 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199bf10 - 1.2.840.113556.1.4.1958 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199be80 - msDS-AuthenticatedAtDC contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x199be00 - ms-DS-AuthenticatedAt-DC contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x199bd70 - struct dsdb_attribute contains 439 bytes in 8 blocks (ref 0) d=(nil) 0x199b860 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2547260 - ms-DS-Approx-Immed-Subordinates contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x256fd20 - ms-DS-Approx-Immed-Subordinates contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2667a20 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199bb80 - 1.2.840.113556.1.4.1669 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199baf0 - msDS-Approx-Immed-Subordinates contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x199ba60 - ms-DS-Approx-Immed-Subordinates contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x199b9d0 - struct dsdb_attribute contains 420 bytes in 8 blocks (ref 0) d=(nil) 0x199b540 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27223b0 - MS-DS-All-Users-Trust-Quota contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2941f10 - MS-DS-All-Users-Trust-Quota contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2cdb1f0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x21c7110 - 1.2.840.113556.1.4.1789 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199b7d0 - msDS-AllUsersTrustQuota contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199b740 - MS-DS-All-Users-Trust-Quota contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x199b6b0 - struct dsdb_attribute contains 425 bytes in 8 blocks (ref 0) d=(nil) 0x199b1b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d45410 - ms-DS-Allowed-To-Delegate-To contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1a904c0 - ms-DS-Allowed-To-Delegate-To contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x217db90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x231e640 - 1.2.840.113556.1.4.1787 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199b440 - msDS-AllowedToDelegateTo contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x199b3b0 - ms-DS-Allowed-To-Delegate-To contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x199b320 - struct dsdb_attribute contains 426 bytes in 10 blocks (ref 0) d=(nil) 0x199ae20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x220fed0 - ms-DS-Allowed-DNS-Suffixes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x228a9e0 - ms-DS-Allowed-DNS-Suffixes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x22c4370 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x22edfa0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199b140 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x20e66e0 - 1.2.840.113556.1.4.1710 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199b0b0 - msDS-AllowedDNSSuffixes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199b020 - ms-DS-Allowed-DNS-Suffixes contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x199af90 - struct dsdb_attribute contains 453 bytes in 10 blocks (ref 0) d=(nil) 0x199aa90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2389d50 - ms-DS-Additional-Sam-Account-Name contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x28872a0 - ms-DS-Additional-Sam-Account-Name contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1b0cf80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ef3720 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199adb0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2ea37f0 - 1.2.840.113556.1.4.1718 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199ad20 - msDS-AdditionalSamAccountName contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x199ac90 - ms-DS-Additional-Sam-Account-Name contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x199ac00 - struct dsdb_attribute contains 441 bytes in 10 blocks (ref 0) d=(nil) 0x199a700 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28dbd30 - ms-DS-Additional-Dns-Host-Name contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x2bdc7e0 - ms-DS-Additional-Dns-Host-Name contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x2dc40e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2e87320 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199aa20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2ee2530 - 1.2.840.113556.1.4.1717 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199a990 - msDS-AdditionalDnsHostName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x199a900 - ms-DS-Additional-Dns-Host-Name contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x199a870 - struct dsdb_attribute contains 431 bytes in 10 blocks (ref 0) d=(nil) 0x199a360 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2eb88d0 - MS-DRM-Identity-Certificate contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2eb2010 - MS-DRM-Identity-Certificate contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2ec6690 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ecfd40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x199a2f0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x199a680 - 1.2.840.113556.1.4.1843 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199a5f0 - msDRM-IdentityCertificate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x199a560 - MS-DRM-Identity-Certificate contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x199a4d0 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x1999f70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2efab60 - ms-DFS-Ttl-v2 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2ef6170 - ms-DFS-Ttl-v2 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2f03eb0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x199a270 - 1.2.840.113556.1.4.2035 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x199a1e0 - msDFS-Ttlv2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x199a160 - ms-DFS-Ttl-v2 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x199a0e0 - struct dsdb_attribute contains 406 bytes in 10 blocks (ref 0) d=(nil) 0x1999c00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f432c0 - ms-DFS-Target-List-v2 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2f4d9b0 - ms-DFS-Target-List-v2 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2fd5560 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2fbe0f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1999f00 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1999e80 - 1.2.840.113556.1.4.2038 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1999df0 - msDFS-TargetListv2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1999d70 - ms-DFS-Target-List-v2 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3144d20 - struct dsdb_attribute contains 440 bytes in 10 blocks (ref 0) d=(nil) 0x19997f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30373f0 - ms-DFS-Short-Name-Link-Path-v2 contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x30922a0 - ms-DFS-Short-Name-Link-Path-v2 contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x3109620 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3125590 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1999b90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1999b10 - 1.2.840.113556.1.4.2042 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1999a80 - msDFS-ShortNameLinkPathv2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19999f0 - ms-DFS-Short-Name-Link-Path-v2 contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1999960 - struct dsdb_attribute contains 429 bytes in 10 blocks (ref 0) d=(nil) 0x19993e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3157540 - ms-DFS-Schema-Minor-Version contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x317d300 - ms-DFS-Schema-Minor-Version contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x3182090 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31c2bf0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1999780 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1999700 - 1.2.840.113556.1.4.2031 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1999670 - msDFS-SchemaMinorVersion contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19995e0 - ms-DFS-Schema-Minor-Version contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1999550 - struct dsdb_attribute contains 429 bytes in 10 blocks (ref 0) d=(nil) 0x1998fd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3236db0 - ms-DFS-Schema-Major-Version contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x323fe20 - ms-DFS-Schema-Major-Version contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x32521a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3295b00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1999370 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19992f0 - 1.2.840.113556.1.4.2030 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1999260 - msDFS-SchemaMajorVersion contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19991d0 - ms-DFS-Schema-Major-Version contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1999140 - struct dsdb_attribute contains 382 bytes in 9 blocks (ref 0) d=(nil) 0x1998bd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1998ed0 - ms-DFSR-Version contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1965870 - ms-DFSR-Version contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1965c80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1998f60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2463000 - 1.2.840.113556.1.6.13.3.1 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1998e40 - msDFSR-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1998dc0 - ms-DFSR-Version contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1998d40 - struct dsdb_attribute contains 438 bytes in 10 blocks (ref 0) d=(nil) 0x19987b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x196de90 - ms-DFSR-TombstoneExpiryInMin contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2192d20 - ms-DFSR-TombstoneExpiryInMin contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1998ad0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x21ab550 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1998b60 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x25d7050 - 1.2.840.113556.1.6.13.3.11 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1998a40 - msDFSR-TombstoneExpiryInMin contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19989b0 - ms-DFSR-TombstoneExpiryInMin contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1998920 - struct dsdb_attribute contains 414 bytes in 9 blocks (ref 0) d=(nil) 0x19983a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25cf020 - ms-DFSR-StagingSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25aeae0 - ms-DFSR-StagingSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19986b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1998740 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2b02710 - 1.2.840.113556.1.6.13.3.6 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1998620 - msDFSR-StagingSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19985a0 - ms-DFSR-StagingSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1998510 - struct dsdb_attribute contains 402 bytes in 10 blocks (ref 0) d=(nil) 0x1998010 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1998310 - ms-DFSR-StagingPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x276b120 - ms-DFSR-StagingPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x292e550 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x289f8e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1997fa0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x296b250 - 1.2.840.113556.1.6.13.3.5 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1998280 - msDFSR-StagingPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1998200 - ms-DFSR-StagingPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1998180 - struct dsdb_attribute contains 470 bytes in 8 blocks (ref 0) d=(nil) 0x1997bf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29b1160 - ms-DFSR-StagingCleanupTriggerInPercent contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x2a03630 - ms-DFSR-StagingCleanupTriggerInPercent contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x1997f10 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2a382d0 - 1.2.840.113556.1.6.13.3.40 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1997e80 - msDFSR-StagingCleanupTriggerInPercent contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x1997df0 - ms-DFSR-StagingCleanupTriggerInPercent contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x1997d60 - struct dsdb_attribute contains 391 bytes in 10 blocks (ref 0) d=(nil) 0x19977f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1997af0 - ms-DFSR-Schedule contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2a57e70 - ms-DFSR-Schedule contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x246ea90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x22e1a40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1997b80 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x255fe40 - 1.2.840.113556.1.6.13.3.14 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1997a60 - msDFSR-Schedule contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19979e0 - ms-DFSR-Schedule contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1997960 - struct dsdb_attribute contains 402 bytes in 9 blocks (ref 0) d=(nil) 0x19973f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19976f0 - ms-DFSR-RootSizeInMb contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x257f990 - ms-DFSR-RootSizeInMb contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3129a90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1997780 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3113000 - 1.2.840.113556.1.6.13.3.4 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1997660 - msDFSR-RootSizeInMb contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19975e0 - ms-DFSR-RootSizeInMb contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1997560 - struct dsdb_attribute contains 390 bytes in 10 blocks (ref 0) d=(nil) 0x1997060 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1997360 - ms-DFSR-RootPath contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3104c20 - ms-DFSR-RootPath contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x30f2e40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x30fbd70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1996c60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30daca0 - 1.2.840.113556.1.6.13.3.3 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19972d0 - msDFSR-RootPath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1997250 - ms-DFSR-RootPath contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19971d0 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x1996cd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1996fd0 - ms-DFSR-RootFence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x30d4b90 - ms-DFSR-RootFence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x30bf810 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x30b63a0 - 1.2.840.113556.1.6.13.3.22 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1996f40 - msDFSR-RootFence contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1996ec0 - ms-DFSR-RootFence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1996e40 - struct dsdb_attribute contains 430 bytes in 8 blocks (ref 0) d=(nil) 0x19968b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30b1d20 - ms-DFSR-ReplicationGroupType contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x309ba90 - ms-DFSR-ReplicationGroupType contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1996bd0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x305c0a0 - 1.2.840.113556.1.6.13.3.10 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1996b40 - msDFSR-ReplicationGroupType contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1996ab0 - ms-DFSR-ReplicationGroupType contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1996a20 - struct dsdb_attribute contains 439 bytes in 10 blocks (ref 0) d=(nil) 0x1996500 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3095ad0 - ms-DFSR-ReplicationGroupGuid contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x3077090 - ms-DFSR-ReplicationGroupGuid contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1996820 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3064e40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1996490 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30579b0 - 1.2.840.113556.1.6.13.3.23 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1996790 - msDFSR-ReplicationGroupGuid contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1996700 - ms-DFSR-ReplicationGroupGuid contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1996670 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x1996180 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1996400 - ms-DFSR-ReadOnly contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x304e800 - ms-DFSR-ReadOnly contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x302ddd0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x301aca0 - 1.2.840.113556.1.6.13.3.28 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1996370 - msDFSR-ReadOnly contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19962f0 - ms-DFSR-ReadOnly contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3003f20 - struct dsdb_attribute contains 427 bytes in 9 blocks (ref 0) d=(nil) 0x1995dd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3011780 - ms-DFSR-RdcMinFileSizeInKb contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x300ced0 - ms-DFSR-RdcMinFileSizeInKb contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19960f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19952b0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2ffac10 - 1.2.840.113556.1.6.13.3.20 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1996060 - msDFSR-RdcMinFileSizeInKb contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1995fd0 - ms-DFSR-RdcMinFileSizeInKb contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1995f40 - struct dsdb_attribute contains 390 bytes in 8 blocks (ref 0) d=(nil) 0x1995a40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1995d40 - ms-DFSR-RdcEnabled contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2ff15a0 - ms-DFSR-RdcEnabled contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2fe8270 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2fddb20 - 1.2.840.113556.1.6.13.3.19 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1995cb0 - msDFSR-RdcEnabled contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1995c30 - ms-DFSR-RdcEnabled contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1995bb0 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x19956b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19959b0 - ms-DFSR-Priority contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2face00 - ms-DFSR-Priority contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2fa6fd0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2f96950 - 1.2.840.113556.1.6.13.3.25 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1995920 - msDFSR-Priority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19958a0 - ms-DFSR-Priority contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1995820 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x1995320 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1995620 - ms-DFSR-Options2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2f8de40 - ms-DFSR-Options2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2f77120 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2f643b0 - 1.2.840.113556.1.6.13.3.37 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1995590 - msDFSR-Options2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1995510 - ms-DFSR-Options2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1995490 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x1994fa0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1995220 - ms-DFSR-Options contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2f51fd0 - ms-DFSR-Options contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2f47c80 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2f24bd0 - 1.2.840.113556.1.6.13.3.17 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1995190 - msDFSR-Options contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1995110 - ms-DFSR-Options contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2ead6c0 - struct dsdb_attribute contains 467 bytes in 10 blocks (ref 0) d=(nil) 0x1994b80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f15fd0 - ms-DFSR-OnDemandExclusionFileFilter contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x2eff480 - ms-DFSR-OnDemandExclusionFileFilter contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1994ea0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ee7980 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1994f30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3285920 - 1.2.840.113556.1.6.13.3.35 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1994e10 - msDFSR-OnDemandExclusionFileFilter contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1994d80 - ms-DFSR-OnDemandExclusionFileFilter contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1994cf0 - struct dsdb_attribute contains 487 bytes in 10 blocks (ref 0) d=(nil) 0x1994880 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1994a80 - ms-DFSR-OnDemandExclusionDirectoryFilter contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x2ea2260 - ms-DFSR-OnDemandExclusionDirectoryFilter contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x2e8bdb0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3270aa0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1994b10 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1965e40 - 1.2.840.113556.1.6.13.3.36 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19949f0 - msDFSR-OnDemandExclusionDirectoryFilter contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x19b7060 - ms-DFSR-OnDemandExclusionDirectoryFilter contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x19beb20 - struct dsdb_attribute contains 438 bytes in 9 blocks (ref 0) d=(nil) 0x19944d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19c2dd0 - ms-DFSR-MinDurationCacheInMin contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19c9e00 - ms-DFSR-MinDurationCacheInMin contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19947f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19940b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19cdc10 - 1.2.840.113556.1.6.13.3.30 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1994760 - msDFSR-MinDurationCacheInMin contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x19946d0 - ms-DFSR-MinDurationCacheInMin contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1994640 - struct dsdb_attribute contains 429 bytes in 9 blocks (ref 0) d=(nil) 0x1994120 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19d1ab0 - ms-DFSR-MemberReferenceBL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19d5840 - ms-DFSR-MemberReferenceBL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1994440 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x21027c0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19e5d70 - 1.2.840.113556.1.6.13.3.102 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19943b0 - msDFSR-MemberReferenceBL contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1994320 - ms-DFSR-MemberReferenceBL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1994290 - struct dsdb_attribute contains 421 bytes in 9 blocks (ref 0) d=(nil) 0x1993d10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ed4d0 - ms-DFSR-MemberReference contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19f0c70 - ms-DFSR-MemberReference contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1994020 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x20fe940 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19f4a10 - 1.2.840.113556.1.6.13.3.100 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1993f90 - msDFSR-MemberReference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1993f10 - ms-DFSR-MemberReference contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1993e80 - struct dsdb_attribute contains 426 bytes in 9 blocks (ref 0) d=(nil) 0x19938f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19fc650 - ms-DFSR-MaxAgeInCacheInMin contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1a00470 - ms-DFSR-MaxAgeInCacheInMin contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1993c10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1993ca0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1a3edb0 - 1.2.840.113556.1.6.13.3.31 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1993b80 - msDFSR-MaxAgeInCacheInMin contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1993af0 - ms-DFSR-MaxAgeInCacheInMin contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1993a60 - struct dsdb_attribute contains 391 bytes in 10 blocks (ref 0) d=(nil) 0x1993560 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1993860 - ms-DFSR-Keywords contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1a42320 - ms-DFSR-Keywords contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1a51dc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a4e6f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19934f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a55b60 - 1.2.840.113556.1.6.13.3.15 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19937d0 - msDFSR-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1993750 - ms-DFSR-Keywords contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19936d0 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x1993160 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1993460 - ms-DFSR-Flags contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1a62010 - ms-DFSR-Flags contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1a614a0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1a8b9f0 - 1.2.840.113556.1.6.13.3.16 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19933d0 - msDFSR-Flags contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1993350 - ms-DFSR-Flags contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19932d0 - struct dsdb_attribute contains 399 bytes in 10 blocks (ref 0) d=(nil) 0x1992d60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1993060 - ms-DFSR-FileFilter contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1a9c8a0 - ms-DFSR-FileFilter contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1ab0760 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a9cda0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19930f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1ab8920 - 1.2.840.113556.1.6.13.3.12 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1992fd0 - msDFSR-FileFilter contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1992f50 - ms-DFSR-FileFilter contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1992ed0 - struct dsdb_attribute contains 394 bytes in 10 blocks (ref 0) d=(nil) 0x19929d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1992cd0 - ms-DFSR-Extension contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1ac4a30 - ms-DFSR-Extension contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1ad08b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ac8890 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19925d0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1ad46a0 - 1.2.840.113556.1.6.13.3.2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1992c40 - msDFSR-Extension contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1992bc0 - ms-DFSR-Extension contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1992b40 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x1992640 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1992940 - ms-DFSR-Enabled contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1ae0670 - ms-DFSR-Enabled contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1adbe40 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1aec230 - 1.2.840.113556.1.6.13.3.9 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19928b0 - msDFSR-Enabled contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1992830 - ms-DFSR-Enabled contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19927b0 - struct dsdb_attribute contains 430 bytes in 8 blocks (ref 0) d=(nil) 0x1992220 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1af4040 - ms-DFSR-DisablePacketPrivacy contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1afc050 - ms-DFSR-DisablePacketPrivacy contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1992540 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1b1c4c0 - 1.2.840.113556.1.6.13.3.32 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19924b0 - msDFSR-DisablePacketPrivacy contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1992420 - ms-DFSR-DisablePacketPrivacy contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1992390 - struct dsdb_attribute contains 419 bytes in 10 blocks (ref 0) d=(nil) 0x1991e10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b03fb0 - ms-DFSR-DirectoryFilter contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b081a0 - ms-DFSR-DirectoryFilter contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1992120 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b18120 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19921b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1b28fc0 - 1.2.840.113556.1.6.13.3.13 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1992090 - msDFSR-DirectoryFilter contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1992010 - ms-DFSR-DirectoryFilter contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1991f80 - struct dsdb_attribute contains 387 bytes in 10 blocks (ref 0) d=(nil) 0x1991a10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1991d10 - ms-DFSR-DfsPath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1b30420 - ms-DFSR-DfsPath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1b40620 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b3c8b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1991da0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1b446c0 - 1.2.840.113556.1.6.13.3.21 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1991c80 - msDFSR-DfsPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1991c00 - ms-DFSR-DfsPath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1991b80 - struct dsdb_attribute contains 411 bytes in 10 blocks (ref 0) d=(nil) 0x1991700 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1991980 - ms-DFSR-DfsLinkTarget contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b484e0 - ms-DFSR-DfsLinkTarget contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b782f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b50010 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1991690 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1b95610 - 1.2.840.113556.1.6.13.3.24 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19918f0 - msDFSR-DfsLinkTarget contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1991870 - ms-DFSR-DfsLinkTarget contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1bc22e0 - struct dsdb_attribute contains 411 bytes in 8 blocks (ref 0) d=(nil) 0x19912f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ba5830 - ms-DFSR-DeletedSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bbe260 - ms-DFSR-DeletedSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1991600 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1bca060 - 1.2.840.113556.1.6.13.3.27 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1991570 - msDFSR-DeletedSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19914f0 - ms-DFSR-DeletedSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1991460 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x1990f70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19911f0 - ms-DFSR-DeletedPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1bd1d20 - ms-DFSR-DeletedPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1bd5b60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1991280 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1be5fd0 - 1.2.840.113556.1.6.13.3.26 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1991160 - msDFSR-DeletedPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19910e0 - ms-DFSR-DeletedPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1c27280 - struct dsdb_attribute contains 491 bytes in 10 blocks (ref 0) d=(nil) 0x1990c70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1990e70 - ms-DFSR-DefaultCompressionExclusionFilter contains 42 bytes in 1 blocks (ref 0) d=(nil) 0x1bea0d0 - ms-DFSR-DefaultCompressionExclusionFilter contains 42 bytes in 1 blocks (ref 0) d=(nil) 0x1bf6200 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1c06060 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1990f00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1c2afa0 - 1.2.840.113556.1.6.13.3.34 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1990de0 - msDFSR-DefaultCompressionExclusionFilter contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x1c32bb0 - ms-DFSR-DefaultCompressionExclusionFilter contains 42 bytes in 1 blocks (ref 0) d=(nil) 0x1c36a40 - struct dsdb_attribute contains 415 bytes in 10 blocks (ref 0) d=(nil) 0x19908f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1990b70 - ms-DFSR-ContentSetGuid contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1c424b0 - ms-DFSR-ContentSetGuid contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1c51e70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1c4a190 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1990c00 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1c59ce0 - 1.2.840.113556.1.6.13.3.18 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1990ae0 - msDFSR-ContentSetGuid contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1990a60 - ms-DFSR-ContentSetGuid contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1c696d0 - struct dsdb_attribute contains 418 bytes in 9 blocks (ref 0) d=(nil) 0x19904d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c5dbe0 - ms-DFSR-ConflictSizeInMb contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1c619d0 - ms-DFSR-ConflictSizeInMb contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19907f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1990880 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1c762c0 - 1.2.840.113556.1.6.13.3.8 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1990760 - msDFSR-ConflictSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19906d0 - ms-DFSR-ConflictSizeInMb contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1990640 - struct dsdb_attribute contains 406 bytes in 10 blocks (ref 0) d=(nil) 0x1990140 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1990440 - ms-DFSR-ConflictPath contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1c75e80 - ms-DFSR-ConflictPath contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1c96f70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1c86a60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x198fd20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1c9ab50 - 1.2.840.113556.1.6.13.3.7 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19903b0 - msDFSR-ConflictPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1990330 - ms-DFSR-ConflictPath contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19902b0 - struct dsdb_attribute contains 437 bytes in 9 blocks (ref 0) d=(nil) 0x198fd90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ca2860 - ms-DFSR-ComputerReferenceBL contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1cab0e0 - ms-DFSR-ComputerReferenceBL contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19900b0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x20bd800 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1cb2620 - 1.2.840.113556.1.6.13.3.103 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1990020 - msDFSR-ComputerReferenceBL contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x198ff90 - ms-DFSR-ComputerReferenceBL contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x198ff00 - struct dsdb_attribute contains 429 bytes in 9 blocks (ref 0) d=(nil) 0x198f970 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cae7d0 - ms-DFSR-ComputerReference contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1cb64f0 - ms-DFSR-ComputerReference contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x198fc90 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x20b9930 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1ceb110 - 1.2.840.113556.1.6.13.3.101 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x198fc00 - msDFSR-ComputerReference contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x198fb70 - ms-DFSR-ComputerReference contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x198fae0 - struct dsdb_attribute contains 439 bytes in 9 blocks (ref 0) d=(nil) 0x198f550 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cc26a0 - ms-DFSR-CommonStagingSizeInMb contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1cd6a40 - ms-DFSR-CommonStagingSizeInMb contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x198f870 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x198f900 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1d06e50 - 1.2.840.113556.1.6.13.3.39 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x198f7e0 - msDFSR-CommonStagingSizeInMb contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x198f750 - ms-DFSR-CommonStagingSizeInMb contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x198f6c0 - struct dsdb_attribute contains 427 bytes in 10 blocks (ref 0) d=(nil) 0x198f1a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ce6cc0 - ms-DFSR-CommonStagingPath contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1cf3120 - ms-DFSR-CommonStagingPath contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x198f4c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1cf6d70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x198f130 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1d23c90 - 1.2.840.113556.1.6.13.3.38 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x198f430 - msDFSR-CommonStagingPath contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x198f3a0 - ms-DFSR-CommonStagingPath contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x198f310 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x198eda0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198f0a0 - ms-DFSR-CachePolicy contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1d33e40 - ms-DFSR-CachePolicy contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1d2fe20 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1d3c0f0 - 1.2.840.113556.1.6.13.3.29 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x198f010 - msDFSR-CachePolicy contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x198ef90 - ms-DFSR-CachePolicy contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x198ef10 - struct dsdb_attribute contains 403 bytes in 10 blocks (ref 0) d=(nil) 0x198ea30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d40110 - ms-DFS-Properties-v2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1d482d0 - ms-DFS-Properties-v2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1d507a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1d544f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x198ed30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198ecb0 - 1.2.840.113556.1.4.2037 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198ec20 - msDFS-Propertiesv2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x198eba0 - ms-DFS-Properties-v2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1d74830 - struct dsdb_attribute contains 453 bytes in 10 blocks (ref 0) d=(nil) 0x198e710 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d5c310 - ms-DFS-Namespace-Identity-GUID-v2 contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1d581a0 - ms-DFS-Namespace-Identity-GUID-v2 contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1d64390 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1d682c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x198e6a0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1d89100 - 1.2.840.113556.1.4.2033 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198e9a0 - msDFS-NamespaceIdentityGUIDv2 contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x198e910 - ms-DFS-Namespace-Identity-GUID-v2 contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x198e880 - struct dsdb_attribute contains 449 bytes in 8 blocks (ref 0) d=(nil) 0x198e300 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d703c0 - ms-DFS-Link-Security-Descriptor-v2 contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1d80c70 - ms-DFS-Link-Security-Descriptor-v2 contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1d8cda0 - 2.5.5.15 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198e620 - 1.2.840.113556.1.4.2040 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198e590 - msDFS-LinkSecurityDescriptorv2 contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x198e500 - ms-DFS-Link-Security-Descriptor-v2 contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x198e470 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x198df90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d993e0 - ms-DFS-Link-Path-v2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1da5ef0 - ms-DFS-Link-Path-v2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1db1330 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1da9ff0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x198e290 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198e210 - 1.2.840.113556.1.4.2039 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198e180 - msDFS-LinkPathv2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x198e100 - ms-DFS-Link-Path-v2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1de9d80 - struct dsdb_attribute contains 433 bytes in 10 blocks (ref 0) d=(nil) 0x198dc70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1db92a0 - ms-DFS-Link-Identity-GUID-v2 contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1dc15c0 - ms-DFS-Link-Identity-GUID-v2 contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1dd24b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1de19e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x198dc00 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1e0e860 - 1.2.840.113556.1.4.2041 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198df00 - msDFS-LinkIdentityGUIDv2 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x198de70 - ms-DFS-Link-Identity-GUID-v2 contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x198dde0 - struct dsdb_attribute contains 406 bytes in 8 blocks (ref 0) d=(nil) 0x198d8f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1df1a80 - ms-DFS-Last-Modified-v2 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1df9f60 - ms-DFS-Last-Modified-v2 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e01ef0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198db80 - 1.2.840.113556.1.4.2034 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198daf0 - msDFS-LastModifiedv2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1e29d50 - ms-DFS-Last-Modified-v2 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198da60 - struct dsdb_attribute contains 422 bytes in 10 blocks (ref 0) d=(nil) 0x198d4f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e1e8d0 - ms-DFS-Generation-GUID-v2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1e1a320 - ms-DFS-Generation-GUID-v2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1e25f30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e21ea0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x198d880 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198d800 - 1.2.840.113556.1.4.2032 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198d770 - msDFS-GenerationGUIDv2 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x198d6f0 - ms-DFS-Generation-GUID-v2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x198d660 - struct dsdb_attribute contains 391 bytes in 10 blocks (ref 0) d=(nil) 0x198d170 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e35820 - ms-DFS-Comment-v2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1e318c0 - ms-DFS-Comment-v2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1e56fd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e53940 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19899a0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198d470 - 1.2.840.113556.1.4.2036 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198d3e0 - msDFS-Commentv2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x198d360 - ms-DFS-Comment-v2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x198d2e0 - struct dsdb_attribute contains 350 bytes in 8 blocks (ref 0) d=(nil) 0x198ce00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e5b070 - Mscope-Id contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1e67310 - Mscope-Id contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1e633c0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x198d0f0 - 1.2.840.113556.1.4.716 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x198d070 - mscopeId contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198cff0 - Mscope-Id contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x198cf70 - struct dsdb_attribute contains 433 bytes in 9 blocks (ref 0) d=(nil) 0x198ca60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e7b430 - ms-COM-UserPartitionSetLink contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1e90c10 - ms-COM-UserPartitionSetLink contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1ea0160 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2085b40 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x198cd80 - 1.2.840.113556.1.4.1426 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198ccf0 - msCOM-UserPartitionSetLink contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x198cc60 - ms-COM-UserPartitionSetLink contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x198cbd0 - struct dsdb_attribute contains 385 bytes in 9 blocks (ref 0) d=(nil) 0x198c6e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ea7e80 - ms-COM-UserLink contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1eaf960 - ms-COM-UserLink contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1eabbf0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x20818b0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x198c9e0 - 1.2.840.113556.1.4.1425 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198c950 - msCOM-UserLink contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x198c8d0 - ms-COM-UserLink contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x198c850 - struct dsdb_attribute contains 417 bytes in 9 blocks (ref 0) d=(nil) 0x198c350 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ed2ea0 - ms-COM-PartitionSetLink contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ede9b0 - ms-COM-PartitionSetLink contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1edaf80 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x207d7e0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x198c660 - 1.2.840.113556.1.4.1424 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198c5d0 - msCOM-PartitionSetLink contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x198c550 - ms-COM-PartitionSetLink contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198c4c0 - struct dsdb_attribute contains 405 bytes in 9 blocks (ref 0) d=(nil) 0x198bfd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ee2720 - ms-COM-PartitionLink contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1ef2a90 - ms-COM-PartitionLink contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1f0b370 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x20795b0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x198c2d0 - 1.2.840.113556.1.4.1423 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198c240 - msCOM-PartitionLink contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x198c1c0 - ms-COM-PartitionLink contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x198c140 - struct dsdb_attribute contains 376 bytes in 8 blocks (ref 0) d=(nil) 0x198bc50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f1bf40 - ms-COM-ObjectId contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1f1b1d0 - ms-COM-ObjectId contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1f345f0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198bf50 - 1.2.840.113556.1.4.1428 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198bec0 - msCOM-ObjectId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x198be40 - ms-COM-ObjectId contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x198bdc0 - struct dsdb_attribute contains 433 bytes in 9 blocks (ref 0) d=(nil) 0x198b8b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f3b750 - ms-COM-DefaultPartitionLink contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1f43c40 - ms-COM-DefaultPartitionLink contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1f5cd20 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2071680 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x198bbd0 - 1.2.840.113556.1.4.1427 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198bb40 - msCOM-DefaultPartitionLink contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x198bab0 - ms-COM-DefaultPartitionLink contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x198ba20 - struct dsdb_attribute contains 375 bytes in 8 blocks (ref 0) d=(nil) 0x198b530 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fa4ef0 - Move-Tree-State contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1fbd940 - Move-Tree-State contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1fc5b10 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198b830 - 1.2.840.113556.1.4.1305 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198b7a0 - moveTreeState contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x198b720 - Move-Tree-State contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x198b6a0 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x198b1c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fd1f10 - Moniker-Display-Name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1fe96d0 - Moniker-Display-Name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1fee2f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198b4b0 - 1.2.840.113556.1.4.83 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x198b430 - monikerDisplayName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x198b3b0 - Moniker-Display-Name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x198b330 - struct dsdb_attribute contains 343 bytes in 8 blocks (ref 0) d=(nil) 0x198ae50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fed590 - Moniker contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1ff91a0 - Moniker contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2010760 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198b140 - 1.2.840.113556.1.4.82 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x198b0c0 - moniker contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x198b040 - Moniker contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x198afc0 - struct dsdb_attribute contains 368 bytes in 8 blocks (ref 0) d=(nil) 0x198ab60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x201c1d0 - Modify-Time-Stamp contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2027e30 - Modify-Time-Stamp contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2023eb0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198add0 - 2.5.18.2 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198ad50 - modifyTimeStamp contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x198acd0 - Modify-Time-Stamp contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x20439a0 - struct dsdb_attribute contains 419 bytes in 8 blocks (ref 0) d=(nil) 0x198a7d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x202fab0 - Modified-Count-At-Last-Prom contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x203b480 - Modified-Count-At-Last-Prom contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2047890 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198aae0 - 1.2.840.113556.1.4.81 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x198aa60 - modifiedCountAtLastProm contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x198a9d0 - Modified-Count-At-Last-Prom contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x198a940 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x198a460 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x204b470 - Modified-Count contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2057a40 - Modified-Count contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2063a40 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198a750 - 1.2.840.113556.1.4.168 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x198a6d0 - modifiedCount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x198a650 - Modified-Count contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x198a5d0 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x198a0f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2073710 - Min-Ticket-Age contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2083860 - Min-Ticket-Age contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x208b930 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x198a3e0 - 1.2.840.113556.1.4.80 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x198a360 - minTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x198a2e0 - Min-Ticket-Age contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x198a260 - struct dsdb_attribute contains 368 bytes in 8 blocks (ref 0) d=(nil) 0x1989d80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2098710 - Min-Pwd-Length contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x209c440 - Min-Pwd-Length contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x20a7f00 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x198a070 - 1.2.840.113556.1.4.79 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1989ff0 - minPwdLength contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1989f70 - Min-Pwd-Length contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1989ef0 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x1989a10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20d29e0 - Min-Pwd-Age contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x20e1f40 - Min-Pwd-Age contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x20ed320 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1989d00 - 1.2.840.113556.1.4.78 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1989c80 - minPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1989c00 - Min-Pwd-Age contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1989b80 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x1989630 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20e9470 - MHS-OR-Address contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x20f1210 - MHS-OR-Address contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x21081b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1989920 - 1.2.840.113556.1.4.650 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19898a0 - mhsORAddress contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1989820 - MHS-OR-Address contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19897a0 - struct dsdb_attribute contains 349 bytes in 9 blocks (ref 0) d=(nil) 0x1989250 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2110010 - MemberUid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x21261a0 - MemberUid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x212ddc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19895c0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1989540 - 1.3.6.1.1.1.1.12 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19894c0 - memberUid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1989440 - MemberUid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19893c0 - struct dsdb_attribute contains 381 bytes in 9 blocks (ref 0) d=(nil) 0x1988e70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2139290 - MemberNisNetgroup contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x21449e0 - MemberNisNetgroup contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x21546f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19891e0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1989160 - 1.3.6.1.1.1.1.13 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19890e0 - memberNisNetgroup contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1989060 - MemberNisNetgroup contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1988fe0 - struct dsdb_attribute contains 335 bytes in 9 blocks (ref 0) d=(nil) 0x1988b20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2181db0 - Member contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x217e290 - Member contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1988e00 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x203d830 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1988d80 - 2.5.4.31 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1988d00 - member contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1988c90 - Member contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1982010 - struct dsdb_attribute contains 356 bytes in 8 blocks (ref 0) d=(nil) 0x19887b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x218b150 - meetingURL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2196900 - meetingURL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x21b3310 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1988aa0 - 1.2.840.113556.1.4.583 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1988a20 - meetingURL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19889a0 - meetingURL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1988920 - struct dsdb_attribute contains 360 bytes in 8 blocks (ref 0) d=(nil) 0x1988440 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21aec60 - meetingType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x21c3b80 - meetingType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x21c7810 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1988730 - 1.2.840.113556.1.4.571 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19886b0 - meetingType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1988630 - meetingType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19885b0 - struct dsdb_attribute contains 380 bytes in 8 blocks (ref 0) d=(nil) 0x19880d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21cf830 - meetingStartTime contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x21eefa0 - meetingStartTime contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x21fac80 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19883c0 - 1.2.840.113556.1.4.587 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1988340 - meetingStartTime contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19882c0 - meetingStartTime contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1988240 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x1987d60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21fe700 - meetingScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2213c00 - meetingScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x22178e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1988050 - 1.2.840.113556.1.4.581 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1987fd0 - meetingScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1987f50 - meetingScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1987ed0 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x19879f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22200e0 - meetingRecurrence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x222c970 - meetingRecurrence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x22498a0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1987ce0 - 1.2.840.113556.1.4.586 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1987c60 - meetingRecurrence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1987be0 - meetingRecurrence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1987b60 - struct dsdb_attribute contains 368 bytes in 8 blocks (ref 0) d=(nil) 0x1987680 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2251800 - meetingRating contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2269ad0 - meetingRating contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2282d80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1987970 - 1.2.840.113556.1.4.584 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19878f0 - meetingRating contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1987870 - meetingRating contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19877f0 - struct dsdb_attribute contains 376 bytes in 8 blocks (ref 0) d=(nil) 0x1987310 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x228b0e0 - meetingProtocol contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x229afa0 - meetingProtocol contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x22a30c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1987600 - 1.2.840.113556.1.4.570 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1987580 - meetingProtocol contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1987500 - meetingProtocol contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1987480 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x1986fa0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22c4a70 - meetingOwner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x22ccd50 - meetingOwner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x22d4c50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1987290 - 1.2.840.113556.1.4.579 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1987210 - meetingOwner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1987190 - meetingOwner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1987110 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x1986c30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22dcc60 - meetingOriginator contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x22f1f40 - meetingOriginator contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x22f9d80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1986f20 - 1.2.840.113556.1.4.577 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1986ea0 - meetingOriginator contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1986e20 - meetingOriginator contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1986da0 - struct dsdb_attribute contains 360 bytes in 8 blocks (ref 0) d=(nil) 0x19868c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x231ed40 - meetingName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x23333b0 - meetingName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2351150 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1986bb0 - 1.2.840.113556.1.4.566 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1986b30 - meetingName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1986ab0 - meetingName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1986a30 - struct dsdb_attribute contains 403 bytes in 8 blocks (ref 0) d=(nil) 0x1986550 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2359500 - meetingMaxParticipants contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2365610 - meetingMaxParticipants contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x23612f0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1986840 - 1.2.840.113556.1.4.576 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19867c0 - meetingMaxParticipants contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1986740 - meetingMaxParticipants contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19866c0 - struct dsdb_attribute contains 376 bytes in 8 blocks (ref 0) d=(nil) 0x19861e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2375c70 - meetingLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x238a450 - meetingLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x239a270 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19864d0 - 1.2.840.113556.1.4.569 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1986450 - meetingLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19863d0 - meetingLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1986350 - struct dsdb_attribute contains 376 bytes in 8 blocks (ref 0) d=(nil) 0x1985e70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23b2cb0 - meetingLanguage contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x23baf80 - meetingLanguage contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x23c2dc0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1986160 - 1.2.840.113556.1.4.574 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19860e0 - meetingLanguage contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1986060 - meetingLanguage contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1985fe0 - struct dsdb_attribute contains 372 bytes in 8 blocks (ref 0) d=(nil) 0x1985b00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23cf9d0 - meetingKeyword contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x23d7700 - meetingKeyword contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x23d3560 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1985df0 - 1.2.840.113556.1.4.568 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1985d70 - meetingKeyword contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1985cf0 - meetingKeyword contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1985c70 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x1985790 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23ec780 - meetingIsEncrypted contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x24044e0 - meetingIsEncrypted contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x240c650 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1985a80 - 1.2.840.113556.1.4.585 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1985a00 - meetingIsEncrypted contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1985980 - meetingIsEncrypted contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1985900 - struct dsdb_attribute contains 352 bytes in 8 blocks (ref 0) d=(nil) 0x1985420 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24146c0 - meetingIP contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x241be80 - meetingIP contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2427ee0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1985710 - 1.2.840.113556.1.4.580 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1985690 - meetingIP contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1985610 - meetingIP contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1985590 - struct dsdb_attribute contains 352 bytes in 8 blocks (ref 0) d=(nil) 0x19850b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2437240 - meetingID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2447750 - meetingID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2443210 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19853a0 - 1.2.840.113556.1.4.565 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1985320 - meetingID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19852a0 - meetingID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1985220 - struct dsdb_attribute contains 372 bytes in 8 blocks (ref 0) d=(nil) 0x1984d40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x244ec70 - meetingEndTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x244ad10 - meetingEndTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x24568e0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1985030 - 1.2.840.113556.1.4.588 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1984fb0 - meetingEndTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1984f30 - meetingEndTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1984eb0 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x19849d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2462650 - meetingDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2471d30 - meetingDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x247e340 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1984cc0 - 1.2.840.113556.1.4.567 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1984c40 - meetingDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1984bc0 - meetingDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1984b40 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x1984660 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x247a2a0 - meetingContactInfo contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x24861f0 - meetingContactInfo contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x248a040 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1984950 - 1.2.840.113556.1.4.578 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19848d0 - meetingContactInfo contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1984850 - meetingContactInfo contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19847d0 - struct dsdb_attribute contains 360 bytes in 8 blocks (ref 0) d=(nil) 0x19842f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2496190 - meetingBlob contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x24ae470 - meetingBlob contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x24aa790 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19845e0 - 1.2.840.113556.1.4.590 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1984560 - meetingBlob contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19844e0 - meetingBlob contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1984460 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x1983f80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24b22b0 - meetingBandwidth contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x24be180 - meetingBandwidth contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x24ba1c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1984270 - 1.2.840.113556.1.4.589 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19841f0 - meetingBandwidth contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1984170 - meetingBandwidth contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19840f0 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x1983c10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24ca090 - meetingApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x24daa00 - meetingApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x24e6df0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1983f00 - 1.2.840.113556.1.4.573 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1983e80 - meetingApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1983e00 - meetingApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1983d80 - struct dsdb_attribute contains 400 bytes in 8 blocks (ref 0) d=(nil) 0x19838a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24e2d70 - meetingAdvertiseScope contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x24eb1f0 - meetingAdvertiseScope contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x24f3240 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1983b90 - 1.2.840.113556.1.4.582 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1983b10 - meetingAdvertiseScope contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1983a90 - meetingAdvertiseScope contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1983a10 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x1983530 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x250b190 - May-Contain contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x25172f0 - May-Contain contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2513190 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1983820 - 1.2.840.113556.1.2.25 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19837a0 - mayContain contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1983720 - May-Contain contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19836a0 - struct dsdb_attribute contains 369 bytes in 8 blocks (ref 0) d=(nil) 0x19831c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x251f160 - Max-Ticket-Age contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2523090 - Max-Ticket-Age contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x252ed00 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19834b0 - 1.2.840.113556.1.4.77 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1983430 - maxTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19833b0 - Max-Ticket-Age contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1983330 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x1982e50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x252ad50 - Max-Storage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x25337c0 - Max-Storage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x25438a0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1983140 - 1.2.840.113556.1.4.76 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19830c0 - maxStorage contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1983040 - Max-Storage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1982fc0 - struct dsdb_attribute contains 365 bytes in 8 blocks (ref 0) d=(nil) 0x1982ae0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25530b0 - Max-Renew-Age contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2597850 - Max-Renew-Age contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x25a3010 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1982dd0 - 1.2.840.113556.1.4.75 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1982d50 - maxRenewAge contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1982cd0 - Max-Renew-Age contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1982c50 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x1982770 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25aae20 - Max-Pwd-Age contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x25f22d0 - Max-Pwd-Age contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x25f9f20 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1982a60 - 1.2.840.113556.1.4.74 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19829e0 - maxPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1982960 - Max-Pwd-Age contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19828e0 - struct dsdb_attribute contains 369 bytes in 9 blocks (ref 0) d=(nil) 0x19823f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2601d60 - Mastered-By contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2628b50 - Mastered-By contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2634ab0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1fc7d50 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19826f0 - 1.2.840.113556.1.4.1409 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1982660 - masteredBy contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19825e0 - Mastered-By contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1982560 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x1982080 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2630bc0 - Marshalled-Interface contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2657750 - Marshalled-Interface contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2663bf0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1982370 - 1.2.840.113556.1.4.72 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19822f0 - marshalledInterface contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1982270 - Marshalled-Interface contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19821f0 - struct dsdb_attribute contains 341 bytes in 8 blocks (ref 0) d=(nil) 0x1981d20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x266ee50 - MAPI-ID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x267e7b0 - MAPI-ID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2686350 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1981f90 - 1.2.840.113556.1.2.49 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1981f10 - mAPIID contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1980850 - MAPI-ID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1981e90 - struct dsdb_attribute contains 357 bytes in 9 blocks (ref 0) d=(nil) 0x1981990 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1981c90 - Manager contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x268e080 - Manager contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2699d20 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1fbb9c0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2695bb0 - 0.9.2342.19200300.100.1.10 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1981c00 - manager contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1981b80 - Manager contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1981b00 - struct dsdb_attribute contains 384 bytes in 9 blocks (ref 0) d=(nil) 0x1981620 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26a1a50 - Managed-Objects contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x269dce0 - Managed-Objects contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x26aa3a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1fb7660 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1981910 - 1.2.840.113556.1.4.654 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1981890 - managedObjects contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1981810 - Managed-Objects contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1981790 - struct dsdb_attribute contains 364 bytes in 9 blocks (ref 0) d=(nil) 0x19812b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26b1a00 - Managed-By contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x26bcd30 - Managed-By contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x26c87c0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1fb3120 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19815a0 - 1.2.840.113556.1.4.653 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1981520 - managedBy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19814a0 - Managed-By contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1981420 - struct dsdb_attribute contains 390 bytes in 8 blocks (ref 0) d=(nil) 0x1980f40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26c4ac0 - Machine-Wide-Policy contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x26d0c20 - Machine-Wide-Policy contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x26cc590 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1981230 - 1.2.840.113556.1.4.459 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19811b0 - machineWidePolicy contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1981130 - Machine-Wide-Policy contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19810b0 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x1980c50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26d4450 - Machine-Role contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x26e7ff0 - Machine-Role contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x26e3ac0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1980ec0 - 1.2.840.113556.1.4.71 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1980e40 - machineRole contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1980dc0 - Machine-Role contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x26fedf0 - struct dsdb_attribute contains 441 bytes in 8 blocks (ref 0) d=(nil) 0x19808c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26ef4a0 - Machine-Password-Change-Interval contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x26eb5c0 - Machine-Password-Change-Interval contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x26f7170 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1980bd0 - 1.2.840.113556.1.4.520 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1980b50 - machinePasswordChangeInterval contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1980ac0 - Machine-Password-Change-Interval contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x1980a30 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x19804e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26fb0c0 - Machine-Architecture contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2707270 - Machine-Architecture contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x270ab10 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19807d0 - 1.2.840.113556.1.4.68 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1980750 - machineArchitecture contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19806d0 - Machine-Architecture contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1980650 - struct dsdb_attribute contains 353 bytes in 9 blocks (ref 0) d=(nil) 0x1980170 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2712920 - MacAddress contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x271a350 - MacAddress contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2731d00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x197f340 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1980460 - 1.3.6.1.1.1.1.22 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19803e0 - macAddress contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1980360 - MacAddress contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19802e0 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x197fe00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x273df00 - LSA-Modified-Count contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2739d10 - LSA-Modified-Count contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2745c60 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19800f0 - 1.2.840.113556.1.4.67 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1980070 - lSAModifiedCount contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x197fff0 - LSA-Modified-Count contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x197ff70 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x197fa90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2741b00 - LSA-Creation-Time contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x274dd30 - LSA-Creation-Time contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x275e260 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197fd80 - 1.2.840.113556.1.4.66 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197fd00 - lSACreationTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x197fc80 - LSA-Creation-Time contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x197fc00 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x197f720 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x276a760 - Logon-Workstation contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2772bf0 - Logon-Workstation contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x277ac90 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197fa10 - 1.2.840.113556.1.4.65 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197f990 - logonWorkstation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x197f910 - Logon-Workstation contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x197f890 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x197f3b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2793070 - Logon-Hours contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x27ab9b0 - Logon-Hours contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x27b38a0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197f6a0 - 1.2.840.113556.1.4.64 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197f620 - logonHours contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x197f5a0 - Logon-Hours contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x197f520 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x197f050 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27bfa30 - Logon-Count contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x27bbb40 - Logon-Count contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x27cf9c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197f2c0 - 1.2.840.113556.1.4.169 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197f240 - logonCount contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x197f1c0 - Logon-Count contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x27deae0 - struct dsdb_attribute contains 351 bytes in 10 blocks (ref 0) d=(nil) 0x197ec60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x197ef50 - Logo contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x27cb3a0 - Logo contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x27d6e30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x27d30f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x197efe0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x27dad90 - 2.16.840.1.113730.3.1.36 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x197eec0 - thumbnailLogo contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x197ee40 - Logo contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x197edd0 - struct dsdb_attribute contains 352 bytes in 9 blocks (ref 0) d=(nil) 0x197e8f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27e6540 - LoginShell contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x27e28b0 - LoginShell contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x27ee380 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x197e880 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197ebe0 - 1.3.6.1.1.1.1.4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x197eb60 - loginShell contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x197eae0 - LoginShell contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x197ea60 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x197e510 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27ea3a0 - Lockout-Time contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x27f6070 - Lockout-Time contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x27fdd00 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197e800 - 1.2.840.113556.1.4.662 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197e780 - lockoutTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x197e700 - Lockout-Time contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x197e680 - struct dsdb_attribute contains 385 bytes in 9 blocks (ref 0) d=(nil) 0x197e220 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27f9fc0 - Lockout-Threshold contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2805830 - Lockout-Threshold contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x28019c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x197de20 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197e490 - 1.2.840.113556.1.4.73 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197e410 - lockoutThreshold contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x197e390 - Lockout-Threshold contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x281cf10 - struct dsdb_attribute contains 420 bytes in 8 blocks (ref 0) d=(nil) 0x197de90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2809700 - Lock-Out-Observation-Window contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2815260 - Lock-Out-Observation-Window contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2811330 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197e1a0 - 1.2.840.113556.1.4.61 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197e120 - lockOutObservationWindow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x197e090 - Lock-Out-Observation-Window contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x197e000 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x197dab0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28191a0 - Lockout-Duration contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2824be0 - Lockout-Duration contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2820e50 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197dda0 - 1.2.840.113556.1.4.60 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197dd20 - lockoutDuration contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x197dca0 - Lockout-Duration contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x197dc20 - struct dsdb_attribute contains 356 bytes in 10 blocks (ref 0) d=(nil) 0x197d740 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x282c930 - Location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2828ba0 - Location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2840060 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x28312f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x197cc80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197da30 - 1.2.840.113556.1.4.222 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197d9b0 - location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197d930 - Location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197d8b0 - struct dsdb_attribute contains 411 bytes in 9 blocks (ref 0) d=(nil) 0x197d3d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x284ba40 - Local-Policy-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2847b30 - Local-Policy-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28538c0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1f6a670 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197d6c0 - 1.2.840.113556.1.4.457 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197d640 - localPolicyReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x197d5c0 - Local-Policy-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197d540 - struct dsdb_attribute contains 384 bytes in 8 blocks (ref 0) d=(nil) 0x197d060 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x284f7a0 - Local-Policy-Flags contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2857800 - Local-Policy-Flags contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2867950 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197d350 - 1.2.840.113556.1.4.56 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197d2d0 - localPolicyFlags contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x197d250 - Local-Policy-Flags contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x197d1d0 - struct dsdb_attribute contains 399 bytes in 8 blocks (ref 0) d=(nil) 0x197ccf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x287f450 - Localized-Description contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x28879a0 - Localized-Description contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x288edb0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197cfe0 - 1.2.840.113556.1.4.817 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197cf60 - localizedDescription contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x197cee0 - Localized-Description contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197ce60 - struct dsdb_attribute contains 406 bytes in 8 blocks (ref 0) d=(nil) 0x197c8f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28a2d80 - Localization-Display-Id contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x289edc0 - Localization-Display-Id contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28ba9e0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197cc00 - 1.2.840.113556.1.4.1353 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x197cb70 - localizationDisplayId contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197caf0 - Localization-Display-Id contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x197ca60 - struct dsdb_attribute contains 349 bytes in 10 blocks (ref 0) d=(nil) 0x197c610 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28b6cb0 - Locality-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x28be750 - Locality-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x28c6b40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x28cac20 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x197c880 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x28d2a80 - 2.5.4.7 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197c800 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x197c230 - Locality-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x197c780 - struct dsdb_attribute contains 349 bytes in 8 blocks (ref 0) d=(nil) 0x197c2a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28e8050 - Locale-ID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2909a40 - Locale-ID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2921a40 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197c590 - 1.2.840.113556.1.4.58 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197c510 - localeID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197c490 - Locale-ID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x197c410 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x197bec0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x292db90 - Lm-Pwd-History contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2931b40 - Lm-Pwd-History contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x294ab60 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197c1b0 - 1.2.840.113556.1.4.160 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197c130 - lmPwdHistory contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x197c0b0 - Lm-Pwd-History contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x197c030 - struct dsdb_attribute contains 390 bytes in 10 blocks (ref 0) d=(nil) 0x197bb50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2956db0 - Link-Track-Secret contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x295adc0 - Link-Track-Secret contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2977680 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x29674e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x197bae0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197be40 - 1.2.840.113556.1.4.269 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197bdc0 - linkTrackSecret contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x197bd40 - Link-Track-Secret contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x197bcc0 - struct dsdb_attribute contains 341 bytes in 8 blocks (ref 0) d=(nil) 0x197b7f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x297b040 - Link-ID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2983e50 - Link-ID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x29ac1b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197ba60 - 1.2.840.113556.1.2.50 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197b9e0 - linkID contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x197b410 - Link-ID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197b960 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x197b480 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29e6f50 - Legacy-Exchange-DN contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x29f2ec0 - Legacy-Exchange-DN contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x29eec50 - 2.5.5.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x197b770 - 1.2.840.113556.1.4.655 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197b6f0 - legacyExchangeDN contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x197b670 - Legacy-Exchange-DN contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x197b5f0 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x197b0a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29f6d20 - LDAP-IPDeny-List contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2a02cc0 - LDAP-IPDeny-List contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2a128d0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197b390 - 1.2.840.113556.1.4.844 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197b310 - lDAPIPDenyList contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x197b290 - LDAP-IPDeny-List contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x197b210 - struct dsdb_attribute contains 390 bytes in 10 blocks (ref 0) d=(nil) 0x197ad30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a0ea20 - LDAP-Display-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2a276d0 - LDAP-Display-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2a43780 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2a37910 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1978ab0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197b020 - 1.2.840.113556.1.2.460 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197afa0 - lDAPDisplayName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x197af20 - LDAP-Display-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x197aea0 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x197a9c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a3f890 - LDAP-Admin-Limits contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2a47b00 - LDAP-Admin-Limits contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2a537d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197acb0 - 1.2.840.113556.1.4.843 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197ac30 - lDAPAdminLimits contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x197abb0 - LDAP-Admin-Limits contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x197ab30 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x197a650 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a4f820 - Last-Update-Sequence contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2a57530 - Last-Update-Sequence contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2a63400 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197a940 - 1.2.840.113556.1.4.330 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x197a8c0 - lastUpdateSequence contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x197a840 - Last-Update-Sequence contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x197a7c0 - struct dsdb_attribute contains 365 bytes in 8 blocks (ref 0) d=(nil) 0x197a2e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a5f4b0 - Last-Set-Time contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2a67a60 - Last-Set-Time contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2a82dd0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197a5d0 - 1.2.840.113556.1.4.53 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x197a550 - lastSetTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x197a4d0 - Last-Set-Time contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x197a450 - struct dsdb_attribute contains 395 bytes in 8 blocks (ref 0) d=(nil) 0x1979f60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a7efa0 - Last-Logon-Timestamp contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2a86b20 - Last-Logon-Timestamp contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2a92920 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x197a260 - 1.2.840.113556.1.4.1696 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x197a1d0 - lastLogonTimestamp contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x197a150 - Last-Logon-Timestamp contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x197a0d0 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x1979bf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a8e820 - Last-Logon contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2a96700 - Last-Logon contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2aa2280 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1979ee0 - 1.2.840.113556.1.4.52 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1979e60 - lastLogon contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1979de0 - Last-Logon contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1979d60 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x1979880 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2aadfa0 - Last-Logoff contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2ab5f40 - Last-Logoff contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2ac1d70 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1979b70 - 1.2.840.113556.1.4.51 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1979af0 - lastLogoff contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1979a70 - Last-Logoff contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19799f0 - struct dsdb_attribute contains 391 bytes in 9 blocks (ref 0) d=(nil) 0x1979510 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2acd980 - Last-Known-Parent contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ad9630 - Last-Known-Parent contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ad54a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1f21210 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1979800 - 1.2.840.113556.1.4.781 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1979780 - lastKnownParent contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1979700 - Last-Known-Parent contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1979680 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x1979220 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ade1e0 - Last-Content-Indexed contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2af1240 - Last-Content-Indexed contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2b05d60 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1979490 - 1.2.840.113556.1.4.50 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1979410 - lastContentIndexed contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1979390 - Last-Content-Indexed contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2b43590 - struct dsdb_attribute contains 425 bytes in 8 blocks (ref 0) d=(nil) 0x1978e90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b1e6b0 - Last-Backup-Restoration-Time contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2b2a230 - Last-Backup-Restoration-Time contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2b264d0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19791a0 - 1.2.840.113556.1.4.519 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1979120 - lastBackupRestorationTime contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1979090 - Last-Backup-Restoration-Time contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1979000 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x1978b20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b3f150 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2b4b850 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2b4f9c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1978e10 - 1.3.6.1.4.1.250.1.57 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1978d90 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1978d10 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1978c90 - struct dsdb_attribute contains 383 bytes in 8 blocks (ref 0) d=(nil) 0x19787c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b5b490 - Knowledge-Information contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2b576b0 - Knowledge-Information contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2b6fa40 - 2.5.5.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2b782b0 - 2.5.4.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1978a30 - knowledgeInformation contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19789b0 - Knowledge-Information contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1978930 - struct dsdb_attribute contains 355 bytes in 10 blocks (ref 0) d=(nil) 0x1978450 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b80670 - Keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2b88400 - Keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2bb0980 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ba89e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1976490 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1978740 - 1.2.840.113556.1.4.48 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19786c0 - keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1978640 - Keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19785c0 - struct dsdb_attribute contains 356 bytes in 8 blocks (ref 0) d=(nil) 0x19780c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19783c0 - jpegPhoto contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2bbc7f0 - jpegPhoto contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2bb8960 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2bc4470 - 0.9.2342.19200300.100.1.60 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1978330 - jpegPhoto contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19782b0 - jpegPhoto contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1978230 - struct dsdb_attribute contains 376 bytes in 8 blocks (ref 0) d=(nil) 0x1977d50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bc0710 - Is-Single-Valued contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2bcc110 - Is-Single-Valued contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2be8630 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1978040 - 1.2.840.113556.1.2.33 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1977fc0 - isSingleValued contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1977f40 - Is-Single-Valued contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1977ec0 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x19779d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bf06d0 - Is-Recycled contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2bfc760 - Is-Recycled contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2bf87d0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1977cd0 - 1.2.840.113556.1.4.2058 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1977c40 - isRecycled contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1977bc0 - Is-Recycled contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1977b40 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x1977660 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c045c0 - Is-Privilege-Holder contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2c00860 - Is-Privilege-Holder contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2c18bf0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1efd260 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1977950 - 1.2.840.113556.1.4.638 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19778d0 - isPrivilegeHolder contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1977850 - Is-Privilege-Holder contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19777d0 - struct dsdb_attribute contains 446 bytes in 8 blocks (ref 0) d=(nil) 0x19772d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c24f40 - Is-Member-Of-Partial-Attribute-Set contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x2c31b50 - Is-Member-Of-Partial-Attribute-Set contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x2c39cc0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19775e0 - 1.2.840.113556.1.4.639 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1977560 - isMemberOfPartialAttributeSet contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19774d0 - Is-Member-Of-Partial-Attribute-Set contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1977440 - struct dsdb_attribute contains 378 bytes in 9 blocks (ref 0) d=(nil) 0x1976f60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c46020 - Is-Member-Of-DL contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2c4dec0 - Is-Member-Of-DL contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2c4a1c0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ef4d30 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1977250 - 1.2.840.113556.1.2.102 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19771d0 - memberOf contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1977150 - Is-Member-Of-DL contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19770d0 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x1976be0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c55fe0 - Is-Ephemeral contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2c51cc0 - Is-Ephemeral contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2c66020 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1976ee0 - 1.2.840.113556.1.4.1212 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1976e50 - isEphemeral contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1976dd0 - Is-Ephemeral contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1976d50 - struct dsdb_attribute contains 353 bytes in 8 blocks (ref 0) d=(nil) 0x1976870 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c6d950 - Is-Deleted contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2c75190 - Is-Deleted contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2c715a0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1976b60 - 1.2.840.113556.1.2.48 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1976ae0 - isDeleted contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1976a60 - Is-Deleted contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19769e0 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x1976500 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c7ca40 - Is-Defunct contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2c78ec0 - Is-Defunct contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2c846d0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19767f0 - 1.2.840.113556.1.4.661 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1976770 - isDefunct contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19766f0 - Is-Defunct contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1976670 - struct dsdb_attribute contains 412 bytes in 8 blocks (ref 0) d=(nil) 0x1976110 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c885a0 - Is-Critical-System-Object contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2c90c60 - Is-Critical-System-Object contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2c98f70 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1976410 - 1.2.840.113556.1.4.868 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1976390 - isCriticalSystemObject contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1976310 - Is-Critical-System-Object contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1976280 - struct dsdb_attribute contains 381 bytes in 9 blocks (ref 0) d=(nil) 0x1975da0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ca1340 - IpServiceProtocol contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ca9a20 - IpServiceProtocol contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2cb5b90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1973120 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1976090 - 1.3.6.1.1.1.1.16 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1976010 - ipServiceProtocol contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1975f90 - IpServiceProtocol contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1975f10 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x1975a30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cd32c0 - IpServicePort contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2cef4a0 - IpServicePort contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2ceb180 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1975d20 - 1.3.6.1.1.1.1.15 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1975ca0 - ipServicePort contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1975c20 - IpServicePort contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1975ba0 - struct dsdb_attribute contains 411 bytes in 9 blocks (ref 0) d=(nil) 0x19756c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cf7690 - Ipsec-Policy-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2cf3800 - Ipsec-Policy-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d35140 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ed8eb0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19759b0 - 1.2.840.113556.1.4.517 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1975930 - ipsecPolicyReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19758b0 - Ipsec-Policy-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1975830 - struct dsdb_attribute contains 411 bytes in 9 blocks (ref 0) d=(nil) 0x1975350 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d55cb0 - Ipsec-Owners-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d6a0e0 - Ipsec-Owners-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d663b0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ed4f50 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1975640 - 1.2.840.113556.1.4.624 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19755c0 - ipsecOwnersReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1975540 - Ipsec-Owners-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19754c0 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x1975060 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d6e1a0 - Ipsec-NFA-Reference contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2d7eca0 - Ipsec-NFA-Reference contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2d8f530 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ed0fb0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19752d0 - 1.2.840.113556.1.4.627 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1975250 - ipsecNFAReference contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19751d0 - Ipsec-NFA-Reference contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2daaf90 - struct dsdb_attribute contains 429 bytes in 8 blocks (ref 0) d=(nil) 0x1974cd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d9b060 - IPSEC-Negotiation-Policy-Type contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2d96ec0 - IPSEC-Negotiation-Policy-Type contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2da3150 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1974fe0 - 1.2.840.113556.1.4.887 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1974f60 - iPSECNegotiationPolicyType contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1974ed0 - IPSEC-Negotiation-Policy-Type contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1974e40 - struct dsdb_attribute contains 458 bytes in 9 blocks (ref 0) d=(nil) 0x19749c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2da7210 - Ipsec-Negotiation-Policy-Reference contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x2dcba80 - Ipsec-Negotiation-Policy-Reference contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x2df9980 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ec9230 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1974c50 - 1.2.840.113556.1.4.628 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2e15f00 - ipsecNegotiationPolicyReference contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x1974bc0 - Ipsec-Negotiation-Policy-Reference contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1974b30 - struct dsdb_attribute contains 437 bytes in 8 blocks (ref 0) d=(nil) 0x1974630 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e01ab0 - IPSEC-Negotiation-Policy-Action contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2e0de60 - IPSEC-Negotiation-Policy-Action contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2e09c80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1974940 - 1.2.840.113556.1.4.888 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19748c0 - iPSECNegotiationPolicyAction contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1974830 - IPSEC-Negotiation-Policy-Action contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x19747a0 - struct dsdb_attribute contains 355 bytes in 8 blocks (ref 0) d=(nil) 0x19742c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e1dc40 - Ipsec-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2e31ff0 - Ipsec-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2e3eb60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19745b0 - 1.2.840.113556.1.4.620 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1974530 - ipsecName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19744b0 - Ipsec-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1974430 - struct dsdb_attribute contains 411 bytes in 9 blocks (ref 0) d=(nil) 0x1973f50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e3aa30 - Ipsec-ISAKMP-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2eff5a0 - Ipsec-ISAKMP-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f07bd0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ebd5b0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1974240 - 1.2.840.113556.1.4.626 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19741c0 - ipsecISAKMPReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1974140 - Ipsec-ISAKMP-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19740c0 - struct dsdb_attribute contains 347 bytes in 8 blocks (ref 0) d=(nil) 0x1973be0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f15960 - Ipsec-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2f39e90 - Ipsec-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2f358a0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1973ed0 - 1.2.840.113556.1.4.621 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1973e50 - ipsecID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1973dd0 - Ipsec-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1973d50 - struct dsdb_attribute contains 411 bytes in 9 blocks (ref 0) d=(nil) 0x1973870 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f514a0 - Ipsec-Filter-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f88420 - Ipsec-Filter-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x301f5d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1eb58a0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1973b60 - 1.2.840.113556.1.4.629 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1973ae0 - ipsecFilterReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1973a60 - Ipsec-Filter-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19739e0 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x1973500 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3057700 - Ipsec-Data-Type contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x30bedc0 - Ipsec-Data-Type contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x30cc280 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19737f0 - 1.2.840.113556.1.4.622 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1973770 - ipsecDataType contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19736f0 - Ipsec-Data-Type contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1973670 - struct dsdb_attribute contains 355 bytes in 8 blocks (ref 0) d=(nil) 0x1973190 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3298e20 - Ipsec-Data contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19b6a60 - Ipsec-Data contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19c6a20 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1973480 - 1.2.840.113556.1.4.623 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1973400 - ipsecData contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1973380 - Ipsec-Data contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1973300 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x1972db0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19ca740 - IpProtocolNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19ce560 - IpProtocolNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19d2370 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19730a0 - 1.3.6.1.1.1.1.17 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1973020 - ipProtocolNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1972fa0 - IpProtocolNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1972f20 - struct dsdb_attribute contains 373 bytes in 9 blocks (ref 0) d=(nil) 0x19729d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19d6190 - IpNetworkNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19d96e0 - IpNetworkNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19e5160 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1972d40 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1972cc0 - 1.3.6.1.1.1.1.20 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1972c40 - ipNetworkNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1972bc0 - IpNetworkNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1972b40 - struct dsdb_attribute contains 373 bytes in 9 blocks (ref 0) d=(nil) 0x19725f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19e98f0 - IpNetmaskNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19f47a0 - IpNetmaskNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19f8dc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1972960 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19728e0 - 1.3.6.1.1.1.1.21 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1972860 - ipNetmaskNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19727e0 - IpNetmaskNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1972760 - struct dsdb_attribute contains 361 bytes in 9 blocks (ref 0) d=(nil) 0x1972280 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a00200 - IpHostNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1a047d0 - IpHostNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1a086a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1971660 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1972570 - 1.3.6.1.1.1.1.19 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19724f0 - ipHostNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1972470 - IpHostNumber contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19723f0 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x1971e00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a1b6c0 - Invocation-Id contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1a232f0 - Invocation-Id contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1a3f050 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a42e40 - 1.2.840.113556.1.2.115 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1972070 - invocationId contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1971ff0 - Invocation-Id contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1971f70 - struct dsdb_attribute contains 413 bytes in 8 blocks (ref 0) d=(nil) 0x1971a70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a462c0 - Inter-Site-Topology-Renew contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1a4e990 - Inter-Site-Topology-Renew contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1a52690 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1971d80 - 1.2.840.113556.1.4.1247 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1971cf0 - interSiteTopologyRenew contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1971c70 - Inter-Site-Topology-Renew contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1971be0 - struct dsdb_attribute contains 439 bytes in 9 blocks (ref 0) d=(nil) 0x19716d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a564a0 - Inter-Site-Topology-Generator contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1a59a00 - Inter-Site-Topology-Generator contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1a6a690 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1e92080 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19719f0 - 1.2.840.113556.1.4.1246 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1971960 - interSiteTopologyGenerator contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19718d0 - Inter-Site-Topology-Generator contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1971840 - struct dsdb_attribute contains 425 bytes in 8 blocks (ref 0) d=(nil) 0x19712c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a88520 - Inter-Site-Topology-Failover contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1a8c330 - Inter-Site-Topology-Failover contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1aa08b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19715e0 - 1.2.840.113556.1.4.1248 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1971550 - interSiteTopologyFailover contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19714c0 - Inter-Site-Topology-Failover contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1971430 - struct dsdb_attribute contains 407 bytes in 10 blocks (ref 0) d=(nil) 0x1970f30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ab5320 - International-ISDN-Number contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1ab92e0 - International-ISDN-Number contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1abd4a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ac15c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1970b50 - 2.5.5.6 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1971240 - 2.5.4.25 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19711c0 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1971130 - International-ISDN-Number contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19710a0 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x1970bc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ac53e0 - Instance-Type contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1ac9190 - Instance-Type contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1acd3c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1970eb0 - 1.2.840.113556.1.2.1 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1970e30 - instanceType contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1970db0 - Instance-Type contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1970d30 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x19707e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ad11f0 - Install-Ui-Level contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1ad5060 - Install-Ui-Level contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1ae0910 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1970ad0 - 1.2.840.113556.1.4.847 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1970a50 - installUiLevel contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19709d0 - Install-Ui-Level contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1970950 - struct dsdb_attribute contains 342 bytes in 10 blocks (ref 0) d=(nil) 0x1970470 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ae3f30 - Initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1ae8b80 - Initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1af0ac0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1aecb70 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196fd20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1970760 - 2.5.4.43 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19706e0 - initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1970660 - Initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19705e0 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x1970100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1af49f0 - Initial-Auth-Outgoing contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1af8020 - Initial-Auth-Outgoing contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b00ab0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19703f0 - 1.2.840.113556.1.4.540 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1970370 - initialAuthOutgoing contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19702f0 - Initial-Auth-Outgoing contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1970270 - struct dsdb_attribute contains 398 bytes in 8 blocks (ref 0) d=(nil) 0x196fd90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b04ae0 - Initial-Auth-Incoming contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b08ae0 - Initial-Auth-Incoming contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b0cc80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1970080 - 1.2.840.113556.1.4.539 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1970000 - initialAuthIncoming contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x196ff80 - Initial-Auth-Incoming contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x196ff00 - struct dsdb_attribute contains 368 bytes in 8 blocks (ref 0) d=(nil) 0x196f9b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b14ba0 - IndexedScopes contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1b17eb0 - IndexedScopes contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1b20f10 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196fca0 - 1.2.840.113556.1.4.681 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196fc20 - indexedScopes contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x196fba0 - IndexedScopes contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x196fb20 - struct dsdb_attribute contains 411 bytes in 10 blocks (ref 0) d=(nil) 0x196f5d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b245c0 - Implemented-Categories contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1b2cb90 - Implemented-Categories contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1b34150 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b30e50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196f940 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196f8c0 - 1.2.840.113556.1.4.320 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196f840 - implementedCategories contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x196f7c0 - Implemented-Categories contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196f740 - struct dsdb_attribute contains 359 bytes in 10 blocks (ref 0) d=(nil) 0x196f1f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b391d0 - Icon-Path contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1b3d1d0 - Icon-Path contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1b45010 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b40fd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196f560 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196f4e0 - 1.2.840.113556.1.4.219 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196f460 - iconPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196f3e0 - Icon-Path contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x196f360 - struct dsdb_attribute contains 370 bytes in 10 blocks (ref 0) d=(nil) 0x196ee90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b48e00 - houseIdentifier contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1b4cbb0 - houseIdentifier contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1b54ad0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b50930 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196f180 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196f100 - 2.5.4.51 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196f080 - houseIdentifier contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x196f000 - houseIdentifier contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1b74e30 - struct dsdb_attribute contains 343 bytes in 10 blocks (ref 0) d=(nil) 0x196eb20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x196ed90 - host contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1b5cab0 - host contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1b5ff30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b6cb00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196ee20 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1b78bf0 - 0.9.2342.19200300.100.1.9 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x196ed00 - host contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x196ec90 - host contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x196e3d0 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x196e7b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b7cd80 - Home-Drive contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1b89d70 - Home-Drive contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1b8d120 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196eaa0 - 1.2.840.113556.1.4.45 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x196ea20 - homeDrive contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x196e9a0 - Home-Drive contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x196e920 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x196e440 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b92050 - Home-Directory contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1b9a000 - Home-Directory contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1ba61e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196e730 - 1.2.840.113556.1.4.44 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x196e6b0 - homeDirectory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x196e630 - Home-Directory contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x196e5b0 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x196e050 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ba96b0 - Hide-From-AB contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1bae0a0 - Hide-From-AB contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1bbae50 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x196e350 - 1.2.840.113556.1.4.1780 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x196e2c0 - hideFromAB contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x196e240 - Hide-From-AB contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x196e1c0 - struct dsdb_attribute contains 378 bytes in 10 blocks (ref 0) d=(nil) 0x328cd00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bbec20 - Help-File-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1bc2c30 - Help-File-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1bcaa10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1bc6a20 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x328d070 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x328cff0 - 1.2.840.113556.1.2.327 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x328cf70 - helpFileName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x328cef0 - Help-File-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x328ce70 - struct dsdb_attribute contains 365 bytes in 10 blocks (ref 0) d=(nil) 0x328c920 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bd26d0 - Help-Data32 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1bd5d80 - Help-Data32 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1be2980 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1bde850 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x328cc90 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x328cc10 - 1.2.840.113556.1.2.9 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x328cb90 - helpData32 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x328cb10 - Help-Data32 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x328ca90 - struct dsdb_attribute contains 367 bytes in 10 blocks (ref 0) d=(nil) 0x328c5b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1be6a10 - Help-Data16 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1beaa10 - Help-Data16 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1bfe130 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1bf6ac0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x328a9b0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x328c8a0 - 1.2.840.113556.1.2.402 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x328c820 - helpData16 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x328c7a0 - Help-Data16 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x328c720 - struct dsdb_attribute contains 413 bytes in 9 blocks (ref 0) d=(nil) 0x328c230 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c06c10 - Has-Partial-Replica-NCs contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c0a090 - Has-Partial-Replica-NCs contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c172d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1e441d0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x328c530 - 1.2.840.113556.1.2.15 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x328c4b0 - hasPartialReplicaNCs contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x328c430 - Has-Partial-Replica-NCs contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x328c3a0 - struct dsdb_attribute contains 378 bytes in 9 blocks (ref 0) d=(nil) 0x328bec0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c1f9f0 - Has-Master-NCs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1c22ed0 - Has-Master-NCs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1c27ad0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1e3fbb0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x328c1b0 - 1.2.840.113556.1.2.14 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x328c130 - hasMasterNCs contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x328c0b0 - Has-Master-NCs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x328c030 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x328bb50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c2b8c0 - Group-Type contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1c2edb0 - Group-Type contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1c33540 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x328be40 - 1.2.840.113556.1.4.750 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x328bdc0 - groupType contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x328bd40 - Group-Type contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x328bcc0 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x328b7e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c373f0 - Groups-to-Ignore contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c3a840 - Groups-to-Ignore contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c3f050 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x328bad0 - 1.2.840.113556.1.4.344 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x328ba50 - groupsToIgnore contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x328b9d0 - Groups-to-Ignore contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x328b950 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x328b470 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c42e60 - Group-Priority contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1c4ab40 - Group-Priority contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1c52820 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x328b760 - 1.2.840.113556.1.4.345 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x328b6e0 - groupPriority contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x328b660 - Group-Priority contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x328b5e0 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x328b100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c5a690 - Group-Membership-SAM contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1c5e590 - Group-Membership-SAM contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1c62360 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x328b3f0 - 1.2.840.113556.1.4.166 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x328b370 - groupMembershipSAM contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x328b2f0 - Group-Membership-SAM contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x328b270 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x328ad90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c6a090 - Group-Attributes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c72290 - Group-Attributes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c76c80 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x328b080 - 1.2.840.113556.1.4.152 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x328b000 - groupAttributes contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x328af80 - Group-Attributes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x328af00 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x328aa20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c7ac00 - GP-Options contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1c7ef70 - GP-Options contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1c830d0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x328ad10 - 1.2.840.113556.1.4.892 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x328ac90 - gPOptions contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x328ac10 - GP-Options contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x328ab90 - struct dsdb_attribute contains 343 bytes in 8 blocks (ref 0) d=(nil) 0x328a6c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c7e450 - GP-Link contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1c8b5e0 - GP-Link contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1c8f3b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x328a930 - 1.2.840.113556.1.4.891 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x328a8b0 - gPLink contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1969190 - GP-Link contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x328a830 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x328a3c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c9b600 - GPC-WQL-Filter contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1c9f430 - GPC-WQL-Filter contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1ca31f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x328a640 - 1.2.840.113556.1.4.1694 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x328a5b0 - gPCWQLFilter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x328a530 - GPC-WQL-Filter contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1cb6b80 - struct dsdb_attribute contains 410 bytes in 8 blocks (ref 0) d=(nil) 0x328a0b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c9e930 - GPC-User-Extension-Names contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1cab380 - GPC-User-Extension-Names contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1cb2fe0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x328a340 - 1.2.840.113556.1.4.1349 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x328a2b0 - gPCUserExtensionNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1cd36e0 - GPC-User-Extension-Names contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x328a220 - struct dsdb_attribute contains 422 bytes in 8 blocks (ref 0) d=(nil) 0x1969ff0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cbefd0 - GPC-Machine-Extension-Names contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1cc2fe0 - GPC-Machine-Extension-Names contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1ccf590 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196a310 - 1.2.840.113556.1.4.1348 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x196a280 - gPCMachineExtensionNames contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x196a1f0 - GPC-Machine-Extension-Names contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x196a160 - struct dsdb_attribute contains 413 bytes in 8 blocks (ref 0) d=(nil) 0x1969c60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cd6c90 - GPC-Functionality-Version contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1ce7af0 - GPC-Functionality-Version contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1ceba90 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1969f70 - 1.2.840.113556.1.4.893 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1969ef0 - gPCFunctionalityVersion contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1969e60 - GPC-Functionality-Version contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1969dd0 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x19698f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cefa50 - GPC-File-Sys-Path contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1cf3a60 - GPC-File-Sys-Path contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1cffc90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1969be0 - 1.2.840.113556.1.4.894 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1969b60 - gPCFileSysPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1969ae0 - GPC-File-Sys-Path contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1969a60 - struct dsdb_attribute contains 353 bytes in 8 blocks (ref 0) d=(nil) 0x1969580 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cff340 - Governs-ID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1d07030 - Governs-ID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1d13750 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1969870 - 1.2.840.113556.1.2.22 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19697f0 - governsID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1969770 - Governs-ID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19696f0 - struct dsdb_attribute contains 404 bytes in 9 blocks (ref 0) d=(nil) 0x1969200 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d0ed70 - Global-Address-List2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1d1c060 - Global-Address-List2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1d245d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1e087f0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1969500 - 1.2.840.113556.1.4.2047 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1969470 - globalAddressList2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19693f0 - Global-Address-List2 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1969370 - struct dsdb_attribute contains 400 bytes in 9 blocks (ref 0) d=(nil) 0x1968e10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d2ca60 - Global-Address-List contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1d27f60 - Global-Address-List contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1d347d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1e044b0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1969110 - 1.2.840.113556.1.4.1245 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1969080 - globalAddressList contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1969000 - Global-Address-List contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1968f80 - struct dsdb_attribute contains 349 bytes in 10 blocks (ref 0) d=(nil) 0x1968aa0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d37ed0 - Given-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1d44a80 - Given-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1d51040 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1d48d60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196b760 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1968d90 - 2.5.4.42 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1968d10 - givenName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1968c90 - Given-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1968c10 - struct dsdb_attribute contains 344 bytes in 8 blocks (ref 0) d=(nil) 0x196b3f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d54de0 - GidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1d58ce0 - GidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1d5ccc0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x196b6e0 - 1.3.6.1.1.1.1.1 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x196b660 - gidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x196b5e0 - GidNumber contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x196b560 - struct dsdb_attribute contains 389 bytes in 10 blocks (ref 0) d=(nil) 0x196b080 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d60eb0 - Generation-Qualifier contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1d64cd0 - Generation-Qualifier contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1d68050 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1d6cb30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196b010 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196b370 - 2.5.4.44 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196b2f0 - generationQualifier contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x196b270 - Generation-Qualifier contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x196b1f0 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x196aca0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d70150 - Generated-Connection contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1d788e0 - Generated-Connection contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1d898d0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x196af90 - 1.2.840.113556.1.4.41 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x196af10 - generatedConnection contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x196ae90 - Generated-Connection contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x196ae10 - struct dsdb_attribute contains 332 bytes in 9 blocks (ref 0) d=(nil) 0x196a950 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d8d6e0 - Gecos contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1d88e90 - Gecos contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1d95aa0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196ac30 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x196abb0 - 1.3.6.1.1.1.1.2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x196ab30 - gecos contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x196aac0 - Gecos contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1dbddd0 - struct dsdb_attribute contains 389 bytes in 8 blocks (ref 0) d=(nil) 0x196a5e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d9d990 - Garbage-Coll-Period contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1d99170 - Garbage-Coll-Period contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1da0d40 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x196a8d0 - 1.2.840.113556.1.2.301 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196a850 - garbageCollPeriod contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x196a7d0 - Garbage-Coll-Period contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x196a750 - struct dsdb_attribute contains 383 bytes in 9 blocks (ref 0) d=(nil) 0x1967090 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1dadb70 - FSMO-Role-Owner contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1da93f0 - FSMO-Role-Owner contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1db9c40 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1de7af0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1db9030 - 1.2.840.113556.1.4.369 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1dca2a0 - fSMORoleOwner contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1dc9840 - FSMO-Role-Owner contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1967200 - struct dsdb_attribute contains 386 bytes in 10 blocks (ref 0) d=(nil) 0x1966cb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1dd6020 - FRS-Working-Path contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1dde030 - FRS-Working-Path contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1de1770 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1de6420 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1967020 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1966fa0 - 1.2.840.113556.1.4.486 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1966f20 - fRSWorkingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1966ea0 - FRS-Working-Path contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1966e20 - struct dsdb_attribute contains 385 bytes in 10 blocks (ref 0) d=(nil) 0x19668d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1dee7d0 - FRS-Version-GUID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1de9b10 - FRS-Version-GUID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1dfa800 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1df5a90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1966c40 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1966bc0 - 1.2.840.113556.1.4.43 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1966b40 - fRSVersionGUID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1966ac0 - FRS-Version-GUID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1966a40 - struct dsdb_attribute contains 367 bytes in 10 blocks (ref 0) d=(nil) 0x1966560 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e0b230 - FRS-Version contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1e0f220 - FRS-Version contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1e125c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e0a9c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196c750 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1966850 - 1.2.840.113556.1.4.882 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19667d0 - fRSVersion contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1966750 - FRS-Version contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19666d0 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x1966270 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e1eb70 - FRS-Update-Timeout contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1e22900 - FRS-Update-Timeout contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1e268e0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19664e0 - 1.2.840.113556.1.4.485 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1966460 - fRSUpdateTimeout contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19663e0 - FRS-Update-Timeout contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1e361e0 - struct dsdb_attribute contains 420 bytes in 8 blocks (ref 0) d=(nil) 0x196c7c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e2a790 - FRS-Time-Last-Config-Change contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1e2dc70 - FRS-Time-Last-Config-Change contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1e323d0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196cad0 - 1.2.840.113556.1.4.881 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196ca50 - fRSTimeLastConfigChange contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x196c9c0 - FRS-Time-Last-Config-Change contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x196c930 - struct dsdb_attribute contains 397 bytes in 8 blocks (ref 0) d=(nil) 0x196c3e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e3a050 - FRS-Time-Last-Command contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1e53be0 - FRS-Time-Last-Command contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1e57980 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196c6d0 - 1.2.840.113556.1.4.880 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196c650 - fRSTimeLastCommand contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x196c5d0 - FRS-Time-Last-Command contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x196c550 - struct dsdb_attribute contains 386 bytes in 10 blocks (ref 0) d=(nil) 0x196c080 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e5fc90 - FRS-Staging-Path contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1e63cc0 - FRS-Staging-Path contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1e63150 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e67ca0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196c370 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196c2f0 - 1.2.840.113556.1.4.488 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196c270 - fRSStagingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x196c1f0 - FRS-Staging-Path contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1e83fe0 - struct dsdb_attribute contains 425 bytes in 10 blocks (ref 0) d=(nil) 0x196bc80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e70040 - FRS-Service-Command-Status contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1e6b4f0 - FRS-Service-Command-Status contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1e73800 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e80200 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x196c010 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196bf90 - 1.2.840.113556.1.4.879 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196bf10 - fRSServiceCommandStatus contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x196be80 - FRS-Service-Command-Status contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x196bdf0 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x19685c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19689a0 - FRS-Service-Command contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1e83940 - FRS-Service-Command contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1e8ff80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e98ad0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1968930 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19688b0 - 1.2.840.113556.1.4.500 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1968830 - fRSServiceCommand contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19687b0 - FRS-Service-Command contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1968730 - struct dsdb_attribute contains 390 bytes in 10 blocks (ref 0) d=(nil) 0x19681e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ea0b10 - FRS-Root-Security contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1ea8840 - FRS-Root-Security contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1eab980 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1eb0310 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1968550 - 2.5.5.15 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19684d0 - 1.2.840.113556.1.4.535 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1968450 - fRSRootSecurity contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19683d0 - FRS-Root-Security contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1968350 - struct dsdb_attribute contains 374 bytes in 10 blocks (ref 0) d=(nil) 0x1967e70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1eb8100 - FRS-Root-Path contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1eb3730 - FRS-Root-Path contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1ebb590 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ebfe30 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1967e00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1968160 - 1.2.840.113556.1.4.487 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19680e0 - fRSRootPath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1968060 - FRS-Root-Path contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1967fe0 - struct dsdb_attribute contains 391 bytes in 8 blocks (ref 0) d=(nil) 0x1967a90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ec31e0 - FRS-Replica-Set-Type contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1ecb0d0 - FRS-Replica-Set-Type contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1edb720 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1967d80 - 1.2.840.113556.1.4.31 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1967d00 - fRSReplicaSetType contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1967c80 - FRS-Replica-Set-Type contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1967c00 - struct dsdb_attribute contains 401 bytes in 10 blocks (ref 0) d=(nil) 0x196d0c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1edf300 - FRS-Replica-Set-GUID contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1edad10 - FRS-Replica-Set-GUID contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1ee71c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1964e40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1963220 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x196d3b0 - 1.2.840.113556.1.4.533 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196d330 - fRSReplicaSetGUID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x196d2b0 - FRS-Replica-Set-GUID contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x196d230 - struct dsdb_attribute contains 395 bytes in 9 blocks (ref 0) d=(nil) 0x196cd50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1eeb250 - FRS-Primary-Member contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1eef540 - FRS-Primary-Member contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1ef2890 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1daf3a0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x196d040 - 1.2.840.113556.1.4.878 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x196cfc0 - fRSPrimaryMember contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x196cf40 - FRS-Primary-Member contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x196cec0 - struct dsdb_attribute contains 400 bytes in 8 blocks (ref 0) d=(nil) 0x1964cd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1effbc0 - FRS-Partner-Auth-Level contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1f07f60 - FRS-Partner-Auth-Level contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1f14000 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1f17470 - 1.2.840.113556.1.4.877 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1f135f0 - fRSPartnerAuthLevel contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1f1fb40 - FRS-Partner-Auth-Level contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1f23d40 - struct dsdb_attribute contains 414 bytes in 9 blocks (ref 0) d=(nil) 0x1964950 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f27e60 - FRS-Member-Reference-BL contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f23330 - FRS-Member-Reference-BL contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f303d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1da74b0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1964c50 - 1.2.840.113556.1.4.876 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1964bd0 - fRSMemberReferenceBL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1964b50 - FRS-Member-Reference-BL contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1964ac0 - struct dsdb_attribute contains 403 bytes in 9 blocks (ref 0) d=(nil) 0x1965500 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f38170 - FRS-Member-Reference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1f33f00 - FRS-Member-Reference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1f40750 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1da30f0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19657f0 - 1.2.840.113556.1.4.875 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1965770 - fRSMemberReference contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19656f0 - FRS-Member-Reference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1965670 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x189d0a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f447b0 - FRS-Level-Limit contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1f48a80 - FRS-Level-Limit contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1f4ccb0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189d390 - 1.2.840.113556.1.4.534 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x189d310 - fRSLevelLimit contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x189d290 - FRS-Level-Limit contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x189d210 - struct dsdb_attribute contains 350 bytes in 8 blocks (ref 0) d=(nil) 0x1962f30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f50dc0 - FRS-Flags contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1f64c60 - FRS-Flags contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1f713c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1f797c0 - 1.2.840.113556.1.4.874 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19631a0 - fRSFlags contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1963120 - FRS-Flags contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19630a0 - struct dsdb_attribute contains 382 bytes in 10 blocks (ref 0) d=(nil) 0x1c461e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f7d8f0 - FRS-File-Filter contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1f81ad0 - FRS-File-Filter contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1f89b50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f7d7d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f91f50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1f8d970 - 1.2.840.113556.1.4.483 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1c46450 - fRSFileFilter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1c463d0 - FRS-File-Filter contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1c46350 - struct dsdb_attribute contains 398 bytes in 10 blocks (ref 0) d=(nil) 0x2583c20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f99ca0 - FRS-Fault-Condition contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1fa97a0 - FRS-Fault-Condition contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1fbe5e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fb5cb0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fc64f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1fca7e0 - 1.2.840.113556.1.4.491 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1fce950 - fRSFaultCondition contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2583e10 - FRS-Fault-Condition contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2583d90 - struct dsdb_attribute contains 379 bytes in 10 blocks (ref 0) d=(nil) 0x1965a90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fd28c0 - FRS-Extensions contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1fce680 - FRS-Extensions contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1fe23e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fda660 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ff5ac0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1fde320 - 1.2.840.113556.1.4.536 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1fea010 - fRSExtensions contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1fe5ea0 - FRS-Extensions contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1965c00 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x22e9b10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ff1e80 - FRS-DS-Poll contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1ff5df0 - FRS-DS-Poll contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1ff9b30 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2001700 - 1.2.840.113556.1.4.490 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1ffd590 - fRSDSPoll contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x22e9d00 - FRS-DS-Poll contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x22e9c80 - struct dsdb_attribute contains 402 bytes in 10 blocks (ref 0) d=(nil) 0x1967380 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2009330 - FRS-Directory-Filter contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x20051e0 - FRS-Directory-Filter contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2018d40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x200c5e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2014af0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x20209a0 - 1.2.840.113556.1.4.484 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1967570 - fRSDirectoryFilter contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19674f0 - FRS-Directory-Filter contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x202c2b0 - struct dsdb_attribute contains 433 bytes in 10 blocks (ref 0) d=(nil) 0x2386280 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20249e0 - FRS-Control-Outbound-Backlog contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x20287f0 - FRS-Control-Outbound-Backlog contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x202c5d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2030400 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2038090 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2040680 - 1.2.840.113556.1.4.873 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2058380 - fRSControlOutboundBacklog contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2044440 - FRS-Control-Outbound-Backlog contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x23863f0 - struct dsdb_attribute contains 429 bytes in 10 blocks (ref 0) d=(nil) 0x1b7cf00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2048240 - FRS-Control-Inbound-Backlog contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x204c0c0 - FRS-Control-Inbound-Backlog contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2050250 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x20543f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2060530 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2064520 - 1.2.840.113556.1.4.872 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2088410 - fRSControlInboundBacklog contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2067900 - FRS-Control-Inbound-Backlog contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1b7d070 - struct dsdb_attribute contains 421 bytes in 10 blocks (ref 0) d=(nil) 0x1f68b30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x206c1a0 - FRS-Control-Data-Creation contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x206f5a0 - FRS-Control-Data-Creation contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2073510 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2080070 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2255620 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x208c270 - 1.2.840.113556.1.4.871 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x208b730 - fRSControlDataCreation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2093b90 - FRS-Control-Data-Creation contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1f68ca0 - struct dsdb_attribute contains 422 bytes in 9 blocks (ref 0) d=(nil) 0x20fcca0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20a3c90 - Frs-Computer-Reference-BL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x20abfd0 - Frs-Computer-Reference-BL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x20b38a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1d76970 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x20bb510 - 1.2.840.113556.1.4.870 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20cae60 - frsComputerReferenceBL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20de180 - Frs-Computer-Reference-BL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x20fce10 - struct dsdb_attribute contains 411 bytes in 9 blocks (ref 0) d=(nil) 0x21411f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20da3f0 - Frs-Computer-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20e6460 - Frs-Computer-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20edce0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1d72690 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x20f1ae0 - 1.2.840.113556.1.4.869 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20f55a0 - frsComputerReference contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x20f8970 - Frs-Computer-Reference contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2141360 - struct dsdb_attribute contains 367 bytes in 9 blocks (ref 0) d=(nil) 0x2297230 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2117f20 - From-Server contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2123230 - From-Server contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2132170 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1d6e200 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x212db50 - 1.2.840.113556.1.4.40 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2139c50 - fromServer contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x213d020 - From-Server contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x22973a0 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x22d0c90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21503a0 - From-Entry contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2154480 - From-Entry contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x21615d0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x215caf0 - 1.2.840.113556.1.4.910 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x216ccd0 - fromEntry contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2186050 - From-Entry contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x22d0e00 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x2312730 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x219b0b0 - Friendly-Names contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x21a6c80 - Friendly-Names contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x21b2c00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21ae9f0 - 1.2.840.113556.1.4.682 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x21b6d10 - friendlyNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x21befb0 - Friendly-Names contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x23128a0 - struct dsdb_attribute contains 387 bytes in 8 blocks (ref 0) d=(nil) 0x23963d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21d7080 - Foreign-Identifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x21e3b40 - Foreign-Identifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x21df070 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21e6f20 - 1.2.840.113556.1.4.356 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x21fb5c0 - foreignIdentifier contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x21f6cc0 - Foreign-Identifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2396540 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x23a6ce0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2206c00 - Force-Logoff contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x221c590 - Force-Logoff contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2217670 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2223ed0 - 1.2.840.113556.1.4.39 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2224520 - forceLogoff contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2227a80 - Force-Logoff contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x23a6e50 - struct dsdb_attribute contains 351 bytes in 8 blocks (ref 0) d=(nil) 0x243fb70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2240e60 - Flat-Name contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x224e440 - Flat-Name contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2254dd0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2251590 - 1.2.840.113556.1.4.511 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x225e370 - flatName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x22597e0 - Flat-Name contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x243fce0 - struct dsdb_attribute contains 334 bytes in 8 blocks (ref 0) d=(nil) 0x2507350 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2266530 - Flags contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x2261980 - Flags contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x226a420 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x228e820 - 1.2.840.113556.1.4.38 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2292910 - flags contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x25074c0 - Flags contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x22d9580 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x27a7fc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x229b960 - File-Ext-Priority contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x22a3b80 - File-Ext-Priority contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x22af6d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x22d49e0 - 1.2.840.113556.1.4.816 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x22e18c0 - fileExtPriority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x27a8130 - File-Ext-Priority contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2305da0 - struct dsdb_attribute contains 412 bytes in 10 blocks (ref 0) d=(nil) 0x2834c00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22dc9f0 - Facsimile-Telephone-Number contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x22e5220 - Facsimile-Telephone-Number contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x22ed320 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x22f5400 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2350ee0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x230e180 - 2.5.4.23 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x232f2d0 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x23378a0 - Facsimile-Telephone-Number contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2834d70 - struct dsdb_attribute contains 368 bytes in 8 blocks (ref 0) d=(nil) 0x2864050 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2340160 - Extra-Columns contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2348b70 - Extra-Columns contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2355960 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x235dec0 - 1.2.840.113556.1.4.1687 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2359290 - extraColumns contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2361e20 - Extra-Columns contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x28641c0 - struct dsdb_attribute contains 379 bytes in 10 blocks (ref 0) d=(nil) 0x2b068a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x236d8c0 - Extension-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2391d30 - Extension-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x23a2350 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x239a070 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2437bf0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x23aab30 - 1.2.840.113556.1.2.227 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x23b3660 - extensionName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x23bef00 - Extension-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2b06a10 - struct dsdb_attribute contains 390 bytes in 8 blocks (ref 0) d=(nil) 0x2f363d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23bb930 - Extended-Class-Info contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x23c6ef0 - Extended-Class-Info contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x23c3880 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x23d32f0 - 1.2.840.113556.1.4.908 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x23db7e0 - extendedClassInfo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x23f0ab0 - Extended-Class-Info contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2f36540 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x30039c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23f3ef0 - Extended-Chars-Allowed contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2408e90 - Extended-Chars-Allowed contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2405010 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x240c3e0 - 1.2.840.113556.1.2.380 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2414450 - extendedCharsAllowed contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x3003b30 - Extended-Chars-Allowed contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2430130 - struct dsdb_attribute contains 406 bytes in 8 blocks (ref 0) d=(nil) 0x1aaca60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x241c840 - Extended-Attribute-Info contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2428830 - Extended-Attribute-Info contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2423f60 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x243b370 - 1.2.840.113556.1.4.909 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x24479f0 - extendedAttributeInfo contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2443bc0 - Extended-Attribute-Info contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x244f5b0 - struct dsdb_attribute contains 362 bytes in 10 blocks (ref 0) d=(nil) 0x1e16b90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x244b830 - Entry-TTL contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2457230 - Entry-TTL contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x245f230 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x245a820 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x24cab50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2466d40 - 1.3.6.1.4.1.1466.101.119.3 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x246dfa0 - entryTTL contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x246a160 - Entry-TTL contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1e16d00 - struct dsdb_attribute contains 395 bytes in 8 blocks (ref 0) d=(nil) 0x25e6d00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24726f0 - Enrollment-Providers contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x247ec80 - Enrollment-Providers contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x247add0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2486b40 - 1.2.840.113556.1.4.825 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x248aaf0 - enrollmentProviders contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2496b40 - Enrollment-Providers contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x25e6e70 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x2f7ba40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x249e960 - Enabled-Connection contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x24a6be0 - Enabled-Connection contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x24aee20 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x24aa520 - 1.2.840.113556.1.4.36 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x24b6ea0 - enabledConnection contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x24b2c60 - Enabled-Connection contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2f7bbb0 - struct dsdb_attribute contains 343 bytes in 8 blocks (ref 0) d=(nil) 0x196dd20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24beb30 - Enabled contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x24bace0 - Enabled contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x24c5f80 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x24d7330 - 1.2.840.113556.1.2.557 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x24db3c0 - Enabled contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x24e7730 - Enabled contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x24e3810 - struct dsdb_attribute contains 375 bytes in 10 blocks (ref 0) d=(nil) 0x2192bb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24eef30 - Employee-Type contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x24eaff0 - Employee-Type contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x24f2fd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x24f6f40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x24ff8e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2502c30 - 1.2.840.113556.1.2.613 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x250fc80 - employeeType contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x250bb40 - Employee-Type contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2517c30 - struct dsdb_attribute contains 383 bytes in 10 blocks (ref 0) d=(nil) 0x21ab3e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2513cc0 - Employee-Number contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x251faa0 - Employee-Number contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2527aa0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x251b290 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2523a40 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x252f650 - 1.2.840.113556.1.2.610 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x252b860 - employeeNumber contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2537890 - Employee-Number contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x253fc50 - struct dsdb_attribute contains 366 bytes in 10 blocks (ref 0) d=(nil) 0x25ceeb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x253adb0 - Employee-ID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x254f2b0 - Employee-ID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x255b3e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2553bd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1897a10 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2563580 - 1.2.840.113556.1.4.35 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x256afb0 - employeeID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x25733d0 - Employee-ID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2583150 - struct dsdb_attribute contains 379 bytes in 10 blocks (ref 0) d=(nil) 0x25d6ee0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x258b2e0 - E-mail-Addresses contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2597af0 - E-mail-Addresses contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x25932e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1bee360 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2667e50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x25a39d0 - 0.9.2342.19200300.100.1.3 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x25aabb0 - mail contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x278c170 - E-mail-Addresses contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x25b7500 - struct dsdb_attribute contains 352 bytes in 8 blocks (ref 0) d=(nil) 0x2b025a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25bad00 - EFSPolicy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25c29b0 - EFSPolicy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25d2820 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x25dec80 - 1.2.840.113556.1.4.268 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x25e2300 - eFSPolicy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25ea520 - EFSPolicy contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25f2c90 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x1a08a60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25fdf80 - Dynamic-LDAP-Server contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x25fa8e0 - Dynamic-LDAP-Server contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2605c60 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1d10e70 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2602720 - 1.2.840.113556.1.4.537 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x260d860 - dynamicLDAPServer contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2609a60 - Dynamic-LDAP-Server contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1a08bd0 - struct dsdb_attribute contains 389 bytes in 8 blocks (ref 0) d=(nil) 0x237e2c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26116a0 - DS-UI-Shell-Maximum contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x26191d0 - DS-UI-Shell-Maximum contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2620e50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2629500 - 1.2.840.113556.1.4.1345 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2638160 - dSUIShellMaximum contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x237e430 - DS-UI-Shell-Maximum contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2658100 - struct dsdb_attribute contains 410 bytes in 8 blocks (ref 0) d=(nil) 0x259f6a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x263fc90 - DS-UI-Admin-Notification contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2647920 - DS-UI-Admin-Notification contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x264fac0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x266f910 - 1.2.840.113556.1.4.1343 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x267aa30 - dSUIAdminNotification contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x267f170 - DS-UI-Admin-Notification contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x259f810 - struct dsdb_attribute contains 389 bytes in 8 blocks (ref 0) d=(nil) 0x1c55ee0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x268a2d0 - DS-UI-Admin-Maximum contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2686e70 - DS-UI-Admin-Maximum contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2691f50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x268ea30 - 1.2.840.113556.1.4.1344 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x269a6e0 - dSUIAdminMaximum contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x26966e0 - DS-UI-Admin-Maximum contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1c56050 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x2d07cc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26a23a0 - DS-Heuristics contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x269da70 - DS-Heuristics contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x26a5760 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x26b1ca0 - 1.2.840.113556.1.2.212 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x26b50c0 - dSHeuristics contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2d07e30 - DS-Heuristics contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x26d0ec0 - struct dsdb_attribute contains 410 bytes in 8 blocks (ref 0) d=(nil) 0x18978a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26bd6e0 - DS-Core-Propagation-Data contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x26c9170 - DS-Core-Propagation-Data contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x26c48c0 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x26ccf50 - 1.2.840.113556.1.4.1357 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26d8290 - dSCorePropagationData contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x26d4e10 - DS-Core-Propagation-Data contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x26dfdd0 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x1bee1f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26dbf80 - DSA-Signature contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x26e8290 - DSA-Signature contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x26e4480 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x26efe50 - 1.2.840.113556.1.2.74 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x26ec0e0 - dSASignature contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x26f7ab0 - DSA-Signature contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x26ff7a0 - struct dsdb_attribute contains 370 bytes in 8 blocks (ref 0) d=(nil) 0x2667ce0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26fae50 - Driver-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2707510 - Driver-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x270e950 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x270b4d0 - 1.2.840.113556.1.4.276 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x27165d0 - driverVersion contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x27126b0 - Driver-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x271ad10 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x278c000 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2726080 - Driver-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2729f00 - Driver-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2731b00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x273a6d0 - 1.2.840.113556.1.4.229 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2746620 - driverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2742630 - Driver-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x275a040 - struct dsdb_attribute contains 347 bytes in 10 blocks (ref 0) d=(nil) 0x2bd0a00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x274e680 - drink contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x2749c10 - drink contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x27568c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2751c80 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x276f420 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2762040 - 0.9.2342.19200300.100.1.5 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2777780 - drink contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x2bd0b70 - drink contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x2d25450 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x2d252e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27735b0 - Domain-Wide-Policy contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x277fa80 - Domain-Wide-Policy contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x277b650 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2783460 - 1.2.840.113556.1.4.421 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x278b540 - domainWidePolicy contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2793ba0 - Domain-Wide-Policy contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x27a0040 - struct dsdb_attribute contains 379 bytes in 10 blocks (ref 0) d=(nil) 0x2e4c2f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27a37c0 - Domain-Replica contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x27ab7b0 - Domain-Replica contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x27b41e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2e4c460 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2850290 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x27c0380 - 1.2.840.113556.1.4.158 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x27bc660 - domainReplica contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x27c76d0 - Domain-Replica contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x27c37b0 - struct dsdb_attribute contains 415 bytes in 9 blocks (ref 0) d=(nil) 0x196d660 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27cfc60 - Domain-Policy-Reference contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27cbd30 - Domain-Policy-Reference contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27d77f0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ce0b30 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x27d3aa0 - 1.2.840.113556.1.4.422 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x27df490 - domainPolicyReference contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x27dab20 - Domain-Policy-Reference contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27e7070 - struct dsdb_attribute contains 402 bytes in 9 blocks (ref 0) d=(nil) 0x1921b20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27e3270 - Domain-Policy-Object contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x27eed40 - Domain-Policy-Object contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x27eaed0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1cdcb50 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x27f69c0 - 1.2.840.113556.1.4.32 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x27fe6b0 - domainPolicyObject contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x27f9d50 - Domain-Policy-Object contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2806340 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x1b9d770 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28024e0 - Domain-Identifier contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x280a0b0 - Domain-Identifier contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2815ba0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2811e50 - 1.2.840.113556.1.4.755 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x281d850 - domainIdentifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2818f30 - Domain-Identifier contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2825590 - struct dsdb_attribute contains 360 bytes in 9 blocks (ref 0) d=(nil) 0x1bcde20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2820be0 - Domain-ID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x282d2f0 - Domain-ID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2828930 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1cd4d90 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x28306c0 - 1.2.840.113556.1.4.686 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x283cc50 - domainID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2838400 - Domain-ID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2840a20 - struct dsdb_attribute contains 387 bytes in 9 blocks (ref 0) d=(nil) 0x1cc67d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x284c400 - Domain-Cross-Ref contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x28485e0 - Domain-Cross-Ref contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2854280 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1cd0c60 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x285c250 - 1.2.840.113556.1.4.472 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2857590 - domainCrossRef contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x285fbb0 - Domain-Cross-Ref contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2868300 - struct dsdb_attribute contains 378 bytes in 10 blocks (ref 0) d=(nil) 0x1dadd80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x286f5a0 - Domain-Component contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2877730 - Domain-Component contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x288f6f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x287f250 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x28a36c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x289b6e0 - 0.9.2342.19200300.100.1.25 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x28b36c0 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x28c7660 - Domain-Component contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x28bb3a0 - struct dsdb_attribute contains 424 bytes in 9 blocks (ref 0) d=(nil) 0x1f28070 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28b6a40 - Domain-Certificate-Authorities contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x28bf0a0 - Domain-Certificate-Authorities contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x28cb570 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1cc8760 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x28d33c0 - 1.2.840.113556.1.4.668 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28e4690 - domainCAs contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x28ece60 - Domain-Certificate-Authorities contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x28e8a00 - struct dsdb_attribute contains 388 bytes in 10 blocks (ref 0) d=(nil) 0x24d7540 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28fdcf0 - documentVersion contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2906370 - documentVersion contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x290a560 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x290e5d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x29224f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2919c60 - 0.9.2342.19200300.100.1.13 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x29363a0 - documentVersion contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x29318d0 - documentVersion contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x293df20 - struct dsdb_attribute contains 380 bytes in 10 blocks (ref 0) d=(nil) 0x25df2d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x294b4a0 - documentTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x29576d0 - documentTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x295b8e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x295fe00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x296fa70 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2967e20 - 0.9.2342.19200300.100.1.12 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2977920 - documentTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2973010 - documentTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x297ae40 - struct dsdb_attribute contains 396 bytes in 10 blocks (ref 0) d=(nil) 0x19ba570 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2987930 - documentPublisher contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2983220 - documentPublisher contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x298aec0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x298f770 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x29a4650 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x299ff80 - 0.9.2342.19200300.100.1.56 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x29acb70 - documentPublisher contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x29b9820 - documentPublisher contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x29c6530 - struct dsdb_attribute contains 392 bytes in 10 blocks (ref 0) d=(nil) 0x1a7aa30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29e3840 - documentLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x29deb40 - documentLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x29ef700 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x29e6d50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x29f76e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x29fad10 - 0.9.2342.19200300.100.1.15 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x29ff660 - documentLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2a07490 - documentLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2a13290 - struct dsdb_attribute contains 400 bytes in 10 blocks (ref 0) d=(nil) 0x1a7f0c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a0f540 - documentIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2a2c5a0 - documentIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2a34330 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2a28080 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2a970b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2a2f9b0 - 0.9.2342.19200300.100.1.11 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2a44140 - documentIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2a3f690 - documentIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2a4c500 - struct dsdb_attribute contains 385 bytes in 9 blocks (ref 0) d=(nil) 0x1b10430 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a484b0 - documentAuthor contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2a54110 - documentAuthor contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2a50340 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1cb0840 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2a5b650 - 0.9.2342.19200300.100.1.14 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2a63d40 - documentAuthor contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2a5ffd0 - documentAuthor contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2a6b240 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x1b58350 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a67d00 - DNS-Tombstoned contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2a73b90 - DNS-Tombstoned contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2a7aee0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2a83720 - 1.2.840.113556.1.4.1414 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a7f960 - dNSTombstoned contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2a8abb0 - DNS-Tombstoned contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2a874d0 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x1bf6cc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a932e0 - Dns-Secure-Secondaries contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a8f350 - Dns-Secure-Secondaries contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a9a650 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2aa2bc0 - 1.2.840.113556.1.4.380 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a9e420 - dnsSecureSecondaries contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2aaabf0 - Dns-Secure-Secondaries contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2aa5fc0 - struct dsdb_attribute contains 354 bytes in 10 blocks (ref 0) d=(nil) 0x1bfa190 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ab28e0 - Dns-Root contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2aae950 - Dns-Root contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2ab6900 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ab9fc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2b3fc80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2ac2720 - 1.2.840.113556.1.4.28 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2abdd70 - dnsRoot contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2aca560 - Dns-Root contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2ad2180 - struct dsdb_attribute contains 355 bytes in 8 blocks (ref 0) d=(nil) 0x1c122b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ace330 - Dns-Record contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2ad9f70 - Dns-Record contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2ad5fc0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2add5c0 - 1.2.840.113556.1.4.382 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ae9c50 - dnsRecord contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2af1bf0 - Dns-Record contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2b0a690 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x1c658c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b06720 - DNS-Property contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2b0e990 - DNS-Property contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2b1aee0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2b23010 - 1.2.840.113556.1.4.1306 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b1f060 - dNSProperty contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2b2abe0 - DNS-Property contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2b269c0 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x1ca6a90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b330c0 - Dns-Notify-Secondaries contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2b37770 - Dns-Notify-Secondaries contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2b43f50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2b4c190 - 1.2.840.113556.1.4.381 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2b53850 - dnsNotifySecondaries contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2b50370 - Dns-Notify-Secondaries contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2b5be40 - struct dsdb_attribute contains 374 bytes in 10 blocks (ref 0) d=(nil) 0x1cba5f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b57440 - DNS-Host-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2b5f450 - DNS-Host-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2b6f7d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2b68370 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2bed050 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2b78bd0 - 1.2.840.113556.1.4.619 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2b84d00 - dNSHostName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2b80400 - DNS-Host-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2b8cc40 - struct dsdb_attribute contains 365 bytes in 8 blocks (ref 0) d=(nil) 0x1ceefb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b88190 - Dns-Allow-XFR contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2b94dc0 - Dns-Allow-XFR contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2b902d0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2b9ce10 - 1.2.840.113556.1.4.379 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ba5020 - dnsAllowXFR contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2bad5e0 - Dns-Allow-XFR contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2ba9390 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x1d03260 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bb55a0 - Dns-Allow-Dynamic contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2bb1330 - Dns-Allow-Dynamic contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2bbd1a0 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2bb9490 - 1.2.840.113556.1.4.378 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2bc4db0 - dnsAllowDynamic contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2bc04a0 - Dns-Allow-Dynamic contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2bccad0 - struct dsdb_attribute contains 400 bytes in 9 blocks (ref 0) d=(nil) 0x1d16f20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bcff40 - DN-Reference-Update contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2bd8920 - DN-Reference-Update contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2be4f40 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1c88b10 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2be8fe0 - 1.2.840.113556.1.4.1242 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bf5340 - dNReferenceUpdate contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2bf1080 - DN-Reference-Update contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2bfd0a0 - struct dsdb_attribute contains 355 bytes in 10 blocks (ref 0) d=(nil) 0x1d1f7d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bf92f0 - DMD-Name contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c04f00 - DMD-Name contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c0d340 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2c005f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2c367c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c156d0 - 1.2.840.113556.1.2.598 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2c10cf0 - dmdName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2c1d7f0 - DMD-Name contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c19720 - struct dsdb_attribute contains 371 bytes in 9 blocks (ref 0) d=(nil) 0x1d60410 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c25880 - DMD-Location contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2c2e170 - DMD-Location contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2c291a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1c80640 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2c32500 - 1.2.840.113556.1.2.36 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2c3a780 - dMDLocation contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2c469e0 - DMD-Location contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2c4e880 - struct dsdb_attribute contains 356 bytes in 10 blocks (ref 0) d=(nil) 0x1d90e90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c49f50 - Division contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c51ac0 - Division contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c669d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2c5eed0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2c89050 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c6e310 - 1.2.840.113556.1.4.261 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2c75b20 - division contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c71f50 - Division contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c7d400 - struct dsdb_attribute contains 368 bytes in 8 blocks (ref 0) d=(nil) 0x1dd1720 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c78c50 - DIT-Content-Rules contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2c85090 - DIT-Content-Rules contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2c80870 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c91580 - 2.5.21.2 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c9da80 - dITContentRules contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2c99900 - DIT-Content-Rules contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ca6080 - struct dsdb_attribute contains 409 bytes in 10 blocks (ref 0) d=(nil) 0x1dd93a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ca1cf0 - Display-Name-Printable contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2cae540 - Display-Name-Printable contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2caa3e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2cb64d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2cc7650 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2ccfae0 - 1.2.840.113556.1.2.353 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2cd3c70 - displayNamePrintable contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2cdef30 - Display-Name-Printable contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ce3c50 - struct dsdb_attribute contains 370 bytes in 10 blocks (ref 0) d=(nil) 0x1dfd920 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cefe50 - Display-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2cebcb0 - Display-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2cf3590 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2cf7fd0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a14520 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2cffe50 - 1.2.840.113556.1.2.13 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2d20db0 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2d292f0 - Display-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2d39fc0 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x1e52de0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d35af0 - dhcp-Update-Time contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2d3e0d0 - dhcp-Update-Time contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2d52660 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2d5a7d0 - 1.2.840.113556.1.4.720 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d567d0 - dhcpUpdateTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2d6aaa0 - dhcp-Update-Time contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2d66140 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x1e94130 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d6eb50 - dhcp-Unique-Key contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2d7b4d0 - dhcp-Unique-Key contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2d83bb0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2d7f650 - 1.2.840.113556.1.4.698 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d8bce0 - dhcpUniqueKey contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2d93d80 - dhcp-Unique-Key contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2d8fec0 - struct dsdb_attribute contains 350 bytes in 8 blocks (ref 0) d=(nil) 0x1e9c200 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d9ba10 - dhcp-Type contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d979f0 - dhcp-Type contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2da3a90 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2dab8e0 - 1.2.840.113556.1.4.699 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2da6fa0 - dhcpType contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2db3940 - dhcp-Type contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2daef40 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x1ea3e90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2dbbae0 - dhcp-Subnets contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2db6f20 - dhcp-Subnets contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2dbfd20 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2dcc430 - 1.2.840.113556.1.4.705 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2dd0910 - dhcpSubnets contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2dd8f90 - dhcp-Subnets contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2de5000 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x1efb030 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2de0a80 - dhcp-State contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2de96d0 - dhcp-State contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2df60c0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2df0f50 - 1.2.840.113556.1.4.717 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2dfe520 - dhcpState contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2dfa340 - dhcp-State contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2e06820 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x1f4c280 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e025d0 - dhcp-Sites contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2e0e750 - dhcp-Sites contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2e0a7a0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e168c0 - 1.2.840.113556.1.4.708 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2e1e5f0 - dhcpSites contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2e269c0 - dhcp-Sites contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2e2aad0 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x1f84f60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e37170 - dhcp-Servers contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2e329b0 - dhcp-Servers contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2e3f4a0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e3b4e0 - 1.2.840.113556.1.4.704 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2e42d10 - dhcpServers contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2e4c170 - dhcp-Servers contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2e53d40 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x1f92150 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e5d500 - dhcp-Reservations contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2e82530 - dhcp-Reservations contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ee7780 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2eff270 - 1.2.840.113556.1.4.709 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f0c790 - dhcpReservations contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2f08550 - dhcp-Reservations contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2f1fad0 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x1f954c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f24a50 - dhcp-Ranges contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2f31b10 - dhcp-Ranges contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2f2d380 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2f36250 - 1.2.840.113556.1.4.707 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f51e50 - dhcpRanges contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2f6de40 - dhcp-Ranges contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2f8dcc0 - struct dsdb_attribute contains 375 bytes in 8 blocks (ref 0) d=(nil) 0x1fb0c40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2f88ed0 - dhcp-Properties contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2fa39f0 - dhcp-Properties contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2fb5170 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2fc21b0 - 1.2.840.113556.1.4.718 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2fda280 - dhcpProperties contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2fe3180 - dhcp-Properties contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2ffaa90 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x206b6e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ffe640 - dhcp-Options contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x30083b0 - dhcp-Options contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3011150 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x301ff90 - 1.2.840.113556.1.4.714 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3024580 - dhcpOptions contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3049730 - dhcp-Options contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x306dc60 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x2113ac0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3076a50 - dhcp-Obj-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x30ba350 - dhcp-Obj-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x30b58e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30c3ca0 - 1.2.840.113556.1.4.702 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x30beb50 - dhcpObjName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x30d5a20 - dhcp-Obj-Name contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x30da660 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x211b040 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x31129e0 - dhcp-Obj-Description contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x311bf20 - dhcp-Obj-Description contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x312d9e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3137000 - 1.2.840.113556.1.4.703 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3161360 - dhcpObjDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3178300 - dhcp-Obj-Description contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x318aa50 - struct dsdb_attribute contains 359 bytes in 8 blocks (ref 0) d=(nil) 0x21a2c50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x319ba90 - dhcp-MaxKey contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x31967d0 - dhcp-MaxKey contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x31b9bb0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x31d1eb0 - 1.2.840.113556.1.4.719 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x31f1fe0 - dhcpMaxKey contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x31faa00 - dhcp-MaxKey contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x320c230 - struct dsdb_attribute contains 350 bytes in 8 blocks (ref 0) d=(nil) 0x23454d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3210c40 - dhcp-Mask contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x3224c80 - dhcp-Mask contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x322d8d0 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x324d3e0 - 1.2.840.113556.1.4.706 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3247df0 - dhcpMask contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x325a780 - dhcp-Mask contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x32708a0 - struct dsdb_attribute contains 391 bytes in 8 blocks (ref 0) d=(nil) 0x2410770 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19b6ea0 - dhcp-Identification contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19bb020 - dhcp-Identification contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19c2c70 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19c6ba0 - 1.2.840.113556.1.4.701 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19ca8c0 - dhcpIdentification contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19ce760 - dhcp-Identification contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19d24f0 - struct dsdb_attribute contains 355 bytes in 8 blocks (ref 0) d=(nil) 0x2418100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19da110 - dhcp-Flags contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19ddec0 - dhcp-Flags contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19e1db0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19e5c10 - 1.2.840.113556.1.4.700 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19ed700 - dhcpFlags contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19f16e0 - dhcp-Flags contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19f9170 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x242b970 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19fd0c0 - dhcp-Classes contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1a00ec0 - dhcp-Classes contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1a0c850 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a18370 - 1.2.840.113556.1.4.715 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1a1c170 - dhcpClasses contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1a1ff80 - dhcp-Classes contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1a23de0 - struct dsdb_attribute contains 392 bytes in 10 blocks (ref 0) d=(nil) 0x24332e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a2bad0 - Destination-Indicator contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1a2f930 - Destination-Indicator contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1a33790 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a37560 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a5e190 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1a3b370 - 2.5.4.27 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a3f1d0 - destinationIndicator contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1a46db0 - Destination-Indicator contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1a4abf0 - struct dsdb_attribute contains 375 bytes in 8 blocks (ref 0) d=(nil) 0x2452a20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a4eb10 - Desktop-Profile contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a52810 - Desktop-Profile contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a5a430 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a62330 - 1.2.840.113556.1.4.346 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1a66310 - desktopProfile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1a6a820 - Desktop-Profile contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e8b0 - struct dsdb_attribute contains 354 bytes in 10 blocks (ref 0) d=(nil) 0x2482100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a72610 - Description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1a76d70 - Description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1a82d50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a7e840 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ab11d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a88730 - 2.5.4.13 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1a8c4b0 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1a8fe60 - Description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1a98d90 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x24922d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a9cc40 - departmentNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1aa4c40 - departmentNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1aa8dd0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1ab5530 - 2.16.840.1.113730.3.1.2 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ab9460 - departmentNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1abd620 - departmentNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1ac1750 - struct dsdb_attribute contains 364 bytes in 10 blocks (ref 0) d=(nil) 0x2499ed0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ac5560 - Department contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1ac9310 - Department contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1ad1370 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1acd5c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ad5260 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1ad8e20 - 1.2.840.113556.1.2.141 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1adcc80 - department contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1ae0a90 - Department contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1ae4990 - struct dsdb_attribute contains 388 bytes in 9 blocks (ref 0) d=(nil) 0x24a1c60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ae8d80 - Delta-Revocation-List contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1aeccf0 - Delta-Revocation-List contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1af0c40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1af4b70 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1af8ae0 - 2.5.4.53 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1afcab0 - deltaRevocationList contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1b00cb0 - Delta-Revocation-List contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b18b00 - struct dsdb_attribute contains 430 bytes in 10 blocks (ref 0) d=(nil) 0x24baee0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b04ce0 - Default-Security-Descriptor contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1b08c60 - Default-Security-Descriptor contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1b10ea0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b14da0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1c02bf0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1b1cf30 - 1.2.840.113556.1.4.224 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1b21090 - defaultSecurityDescriptor contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1b25080 - Default-Security-Descriptor contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1b28e60 - struct dsdb_attribute contains 378 bytes in 8 blocks (ref 0) d=(nil) 0x24fae90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b2cd90 - Default-Priority contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1b30fd0 - Default-Priority contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1b34c70 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1b393d0 - 1.2.840.113556.1.4.232 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1b3d350 - defaultPriority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1b41150 - Default-Priority contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1b451a0 - struct dsdb_attribute contains 415 bytes in 9 blocks (ref 0) d=(nil) 0x25329e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b48f80 - Default-Object-Category contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b4cdb0 - Default-Object-Category contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b50ab0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1c041f0 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1b54cd0 - 1.2.840.113556.1.4.783 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1b58dc0 - defaultObjectCategory contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b60a20 - Default-Object-Category contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b64ae0 - struct dsdb_attribute contains 429 bytes in 9 blocks (ref 0) d=(nil) 0x255f390 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b68cd0 - Default-Local-Policy-Object contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1b6cc90 - Default-Local-Policy-Object contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1b75030 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1c00200 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1b78d70 - 1.2.840.113556.1.4.57 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1b841c0 - defaultLocalPolicyObject contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1b90e20 - Default-Local-Policy-Object contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1b921d0 - struct dsdb_attribute contains 393 bytes in 8 blocks (ref 0) d=(nil) 0x2676c90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b95fe0 - Default-Hiding-Value contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1b9a180 - Default-Hiding-Value contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1b9e420 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1ba2500 - 1.2.840.113556.1.4.518 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1ba6360 - defaultHidingValue contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1baa160 - Default-Hiding-Value contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1bae220 - struct dsdb_attribute contains 376 bytes in 9 blocks (ref 0) d=(nil) 0x26ad4a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bb5330 - Default-Group contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1bbb050 - Default-Group contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1bbeda0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1bf8170 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1bc2db0 - 1.2.840.113556.1.4.480 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1bc6ba0 - defaultGroup contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1bcab90 - Default-Group contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1bcea30 - struct dsdb_attribute contains 399 bytes in 9 blocks (ref 0) d=(nil) 0x26b8f50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bd6870 - Default-Class-Store contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1bda890 - Default-Class-Store contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1bde9d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1bf4240 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1be2b80 - 1.2.840.113556.1.4.213 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1be6c10 - defaultClassStore contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1beab90 - Default-Class-Store contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1beedc0 - struct dsdb_attribute contains 346 bytes in 8 blocks (ref 0) d=(nil) 0x26f3160 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bf2c80 - DBCS-Pwd contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1bfabb0 - DBCS-Pwd contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1bfec20 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1c06e10 - 1.2.840.113556.1.4.55 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1c0ab80 - dBCSPwd contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1c0f000 - DBCS-Pwd contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1c16040 - struct dsdb_attribute contains 382 bytes in 10 blocks (ref 0) d=(nil) 0x2702ba0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c174d0 - Curr-Machine-Id contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1c23900 - Curr-Machine-Id contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1c2ba40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1c27c50 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1c663d0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1c2f8e0 - 1.2.840.113556.1.4.337 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1c336c0 - currMachineId contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1c37570 - Curr-Machine-Id contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1c3b3f0 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x275ed30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c3f1d0 - Current-Value contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1c42fe0 - Current-Value contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1c46e90 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1c4acc0 - 1.2.840.113556.1.4.27 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1c4eb70 - currentValue contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1c529a0 - Current-Value contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1c569e0 - struct dsdb_attribute contains 391 bytes in 9 blocks (ref 0) d=(nil) 0x279b4c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c5a810 - Current-Parent-CA contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1c5e710 - Current-Parent-CA contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1c624e0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1be4030 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1c6a210 - 1.2.840.113556.1.4.696 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1c6e2a0 - currentParentCA contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1c728b0 - Current-Parent-CA contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1c76e00 - struct dsdb_attribute contains 387 bytes in 10 blocks (ref 0) d=(nil) 0x27f2050 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c7ad80 - Current-Location contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c7f0f0 - Current-Location contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c87520 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1c83250 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1c8b7e0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1c8f530 - 1.2.840.113556.1.4.335 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1c93440 - currentLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1c97a40 - Current-Location contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c9b780 - struct dsdb_attribute contains 392 bytes in 9 blocks (ref 0) d=(nil) 0x2896c10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c9f5b0 - Cross-Certificate-Pair contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1ca3370 - Cross-Certificate-Pair contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1ca76a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1cab500 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1caf300 - 2.5.4.40 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1cb3170 - crossCertificatePair contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1cb7300 - Cross-Certificate-Pair contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1ccf810 - struct dsdb_attribute contains 441 bytes in 9 blocks (ref 0) d=(nil) 0x28aadb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cbb110 - CRL-Partitioned-Revocation-List contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x1cbf1d0 - CRL-Partitioned-Revocation-List contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x1cc3160 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1da1a10 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1cd3860 - 1.2.840.113556.1.4.683 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1cd7820 - cRLPartitionedRevocationList contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1cdb590 - CRL-Partitioned-Revocation-List contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x1cdf530 - struct dsdb_attribute contains 364 bytes in 9 blocks (ref 0) d=(nil) 0x28a6a30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ce3890 - CRL-Object contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1ce7c80 - CRL-Object contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1cebc10 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1bd3d80 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1cefc50 - 1.2.840.113556.1.4.689 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1cf3be0 - cRLObject contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1cf79e0 - CRL-Object contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1cfbb90 - struct dsdb_attribute contains 344 bytes in 8 blocks (ref 0) d=(nil) 0x28aec70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cffe10 - Creator contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1d03d10 - Creator contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1d07c10 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1d0ba30 - 1.2.840.113556.1.4.679 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1d0f930 - creator contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1d13960 - Creator contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1d1c260 - struct dsdb_attribute contains 375 bytes in 8 blocks (ref 0) d=(nil) 0x2901490 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d20480 - Creation-Wizard contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1d24750 - Creation-Wizard contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1d289c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1d30b70 - 1.2.840.113556.1.4.498 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1d34950 - creationWizard contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1d38b80 - Creation-Wizard contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1d3cbd0 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x29160e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d40bc0 - Creation-Time contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1d44c80 - Creation-Time contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1d48ee0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1d4c660 - 1.2.840.113556.1.4.26 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1d511c0 - creationTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1d54f60 - Creation-Time contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1d58e60 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x2911e70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d5cec0 - Create-Wizard-Ext contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1d610c0 - Create-Wizard-Ext contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1d64e50 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1d68ce0 - 1.2.840.113556.1.4.812 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1d6ccb0 - createWizardExt contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1d70fb0 - Create-Wizard-Ext contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1d752a0 - struct dsdb_attribute contains 368 bytes in 8 blocks (ref 0) d=(nil) 0x2929ac0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d793f0 - Create-Time-Stamp contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1d7d5a0 - Create-Time-Stamp contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1d81750 - 2.5.5.11 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1d858a0 - 2.5.18.1 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1d89a50 - createTimeStamp contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1d8d8e0 - Create-Time-Stamp contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1d91a10 - struct dsdb_attribute contains 367 bytes in 8 blocks (ref 0) d=(nil) 0x29634f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d95ca0 - Create-Dialog contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1d99ca0 - Create-Dialog contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1d9db10 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1da5d50 - 1.2.840.113556.1.4.810 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1da9e90 - createDialog contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1db1de0 - Create-Dialog contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1db5f70 - struct dsdb_attribute contains 346 bytes in 10 blocks (ref 0) d=(nil) 0x2992c70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1db9dc0 - Country-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1dbe050 - Country-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1dc6280 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1dc2100 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1dce590 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1dca420 - 2.5.4.6 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1dd2350 - c contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1dd61b0 - Country-Name contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1dd9ff0 - struct dsdb_attribute contains 369 bytes in 10 blocks (ref 0) d=(nil) 0x299af50 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1dde1b0 - Country-Code contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1de2470 - Country-Code contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1de65a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1dea890 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1dee950 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1df27a0 - 1.2.840.113556.1.4.25 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1df6540 - countryCode contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1dfa980 - Country-Code contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1e01a30 - struct dsdb_attribute contains 331 bytes in 8 blocks (ref 0) d=(nil) 0x29e3a40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e02f50 - Cost contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1e07080 - Cost contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1e0b3b0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1e0f420 - 1.2.840.113556.1.2.135 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1e131b0 - cost contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1e17030 - Cost contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1e1ae50 - struct dsdb_attribute contains 406 bytes in 10 blocks (ref 0) d=(nil) 0x2a33a10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e1ecf0 - Control-Access-Rights contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1e22a80 - Control-Access-Rights contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1e2e690 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e26a60 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e80400 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1e32550 - 1.2.840.113556.1.4.200 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1e414c0 - controlAccessRights contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1e42a60 - Control-Access-Rights contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1e4e460 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x2a50540 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e53d60 - Context-Menu contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1e57b00 - Context-Menu contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1e5bd30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1e5fe10 - 1.2.840.113556.1.4.499 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1e63ec0 - contextMenu contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1e67e20 - Context-Menu contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1e6c090 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x2a6efe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e74000 - Content-Indexing-Allowed contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1e77f40 - Content-Indexing-Allowed contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1e7c050 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1e84160 - 1.2.840.113556.1.4.24 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1e90a70 - contentIndexingAllowed contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1e98c50 - Content-Indexing-Allowed contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1e9cee0 - struct dsdb_attribute contains 386 bytes in 10 blocks (ref 0) d=(nil) 0x2a76fb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ea0c90 - COM-Unique-LIBID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1ea4b80 - COM-Unique-LIBID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1eac680 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ea89c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1eb0490 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1eb4360 - 1.2.840.113556.1.4.250 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1eb8310 - cOMUniqueLIBID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1ebbff0 - COM-Unique-LIBID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1ec3dd0 - struct dsdb_attribute contains 378 bytes in 10 blocks (ref 0) d=(nil) 0x2ac5a30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ec7c60 - COM-Typelib-Id contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1ecbbe0 - COM-Typelib-Id contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1ed3990 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf9f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ed78f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1edb8a0 - 1.2.840.113556.1.4.254 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1edf480 - cOMTypelibId contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1ee3340 - COM-Typelib-Id contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1ee73d0 - struct dsdb_attribute contains 404 bytes in 10 blocks (ref 0) d=(nil) 0x2ad61c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1eeb3d0 - COM-Treat-As-Class-Id contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1ef7b80 - COM-Treat-As-Class-Id contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1effd40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1efbc10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f23ec0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1f03ff0 - 1.2.840.113556.1.4.251 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1f08170 - cOMTreatAsClassId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1f0c030 - COM-Treat-As-Class-Id contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1f102f0 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x2ae1690 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f17f60 - COM-ProgID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1f1bde0 - COM-ProgID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1f1fcc0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1f2c170 - 1.2.840.113556.1.4.21 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1f305d0 - cOMProgID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1f34490 - COM-ProgID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1f382f0 - struct dsdb_attribute contains 352 bytes in 10 blocks (ref 0) d=(nil) 0x2ae52c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f3c3e0 - Company contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1f40950 - Company contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1f48c00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f44940 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f6d110 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1f4ce30 - 1.2.840.113556.1.2.146 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1f50f40 - company contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1f54ef0 - Company contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1f5d590 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x2aed390 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f613c0 - COM-Other-Prog-Id contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1f651c0 - COM-Other-Prog-Id contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1f69090 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1f71540 - 1.2.840.113556.1.4.253 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1f799c0 - cOMOtherProgId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1f7db90 - COM-Other-Prog-Id contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1f81ce0 - struct dsdb_attribute contains 344 bytes in 10 blocks (ref 0) d=(nil) 0x2afd970 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1f85880 - Common-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1f89d50 - Common-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1f96010 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f8df00 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1f9dd30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1f99e30 - 2.5.4.3 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1fa1a50 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1fa9920 - Common-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1fad910 - struct dsdb_attribute contains 348 bytes in 10 blocks (ref 0) d=(nil) 0x2b15fe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fb4a30 - Comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1fba2a0 - Comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1fc2850 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fbe760 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fc6670 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1fca9e0 - 1.2.840.113556.1.2.81 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1fcead0 - info contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1fd2a40 - Comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1fd6810 - struct dsdb_attribute contains 382 bytes in 10 blocks (ref 0) d=(nil) 0x2b2e310 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fda7e0 - COM-InterfaceID contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1fde740 - COM-InterfaceID contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1fe63d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fe25f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1fea190 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1fee190 - 1.2.840.113556.1.4.20 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1ff2010 - cOMInterfaceID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1ff5f70 - COM-InterfaceID contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1ffd960 - struct dsdb_attribute contains 359 bytes in 10 blocks (ref 0) d=(nil) 0x2b47870 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2001910 - COM-CLSID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x20055d0 - COM-CLSID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x200d210 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x20094b0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x202c7d0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x20111b0 - 1.2.840.113556.1.4.249 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2014f40 - cOMCLSID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2018ec0 - COM-CLSID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x201cd20 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x2b73fc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2020ba0 - COM-ClassID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2024b60 - COM-ClassID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x20289f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2030580 - 1.2.840.113556.1.4.19 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2034330 - cOMClassID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x20382a0 - COM-ClassID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2040880 - struct dsdb_attribute contains 357 bytes in 10 blocks (ref 0) d=(nil) 0x2b94fc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20445c0 - Code-Page contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x204c240 - Code-Page contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x20504d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x20545f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2098570 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2058500 - 1.2.840.113556.1.4.16 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x20606b0 - codePage contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x20646a0 - Code-Page contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2068430 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x2b982b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x206c3a0 - Class-Display-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2070090 - Class-Display-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x20740c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2077e60 - 1.2.840.113556.1.4.610 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x207c070 - classDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x20801f0 - Class-Display-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2088620 - struct dsdb_attribute contains 399 bytes in 8 blocks (ref 0) d=(nil) 0x2ba04e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x208c3f0 - Certificate-Templates contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x20904b0 - Certificate-Templates contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2094740 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x209c760 - 1.2.840.113556.1.4.823 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20a0900 - certificateTemplates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x20acb40 - Certificate-Templates contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x20bc130 - struct dsdb_attribute contains 412 bytes in 9 blocks (ref 0) d=(nil) 0x2bc8130 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20b0510 - Certificate-Revocation-List contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x20b4430 - Certificate-Revocation-List contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x20b8200 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3132f10 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x20c00c0 - 2.5.4.39 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x20c3e60 - certificateRevocationList contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x20c7c10 - Certificate-Revocation-List contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x20cbb20 - struct dsdb_attribute contains 435 bytes in 9 blocks (ref 0) d=(nil) 0x2bd3e40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20cf910 - Certificate-Authority-Object contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x20d3570 - Certificate-Authority-Object contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x20d7130 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1b62000 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x20daf90 - 1.2.840.113556.1.4.684 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20dec50 - certificateAuthorityObject contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x20e2af0 - Certificate-Authority-Object contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x20ea130 - struct dsdb_attribute contains 354 bytes in 8 blocks (ref 0) d=(nil) 0x2bdfe30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20edef0 - CA-WEB-URL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x20f1ce0 - CA-WEB-URL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x20f5720 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x20f95f0 - 1.2.840.113556.1.4.688 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x20fd210 - cAWEBURL contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21010f0 - CA-WEB-URL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2105060 - struct dsdb_attribute contains 351 bytes in 8 blocks (ref 0) d=(nil) 0x2c085d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2108da0 - CA-Usages contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x210cca0 - CA-Usages contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2110bb0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2114570 - 1.2.840.113556.1.4.690 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x21180a0 - cAUsages contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21233b0 - CA-Usages contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x212ac90 - struct dsdb_attribute contains 367 bytes in 10 blocks (ref 0) d=(nil) 0x2c20eb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x212e930 - Category-Id contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x21322f0 - Category-Id contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x21361f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x312e000 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2eac190 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2139dd0 - 1.2.840.113556.1.4.322 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x213dd40 - categoryId contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2141740 - Category-Id contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x21455f0 - struct dsdb_attribute contains 364 bytes in 10 blocks (ref 0) d=(nil) 0x2c41f70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2149350 - Categories contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2150e90 - Categories contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2159380 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x313be90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2ed4670 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x215d700 - 1.2.840.113556.1.4.672 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x21617d0 - categories contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2165640 - Categories contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x216dcd0 - struct dsdb_attribute contains 348 bytes in 8 blocks (ref 0) d=(nil) 0x2c5a240 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2172080 - Catalogs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2176590 - Catalogs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x217a570 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2182820 - 1.2.840.113556.1.4.675 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2186da0 - catalogs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x218afb0 - Catalogs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x218f300 - struct dsdb_attribute contains 357 bytes in 8 blocks (ref 0) d=(nil) 0x2c62250 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x219b230 - carLicense contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x219f640 - carLicense contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x21a3680 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21ab860 - 2.16.840.1.113730.3.1.1 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21af8a0 - carLicense contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x21b36c0 - carLicense contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x21b7ad0 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x2c69af0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21bbb00 - Can-Upgrade-Script contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x21bfd00 - Can-Upgrade-Script contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x21c39e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21c7d60 - 1.2.840.113556.1.4.815 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x21cba30 - canUpgradeScript contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x21cfe30 - Can-Upgrade-Script contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x21d3c00 - struct dsdb_attribute contains 371 bytes in 8 blocks (ref 0) d=(nil) 0x2ccac30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21d7d80 - Canonical-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x21db980 - Canonical-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x21dfda0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x21e7cb0 - 1.2.840.113556.1.4.916 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x21ebab0 - canonicalName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x21efd50 - Canonical-Name contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x21f3910 - struct dsdb_attribute contains 355 bytes in 8 blocks (ref 0) d=(nil) 0x2cfb460 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x21f7a30 - CA-Connect contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x21fb740 - CA-Connect contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x21ff570 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2203390 - 1.2.840.113556.1.4.687 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2207710 - cAConnect contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x220fca0 - CA-Connect contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2213fc0 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x2d035d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2218520 - CA-Certificate-DN contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x221c720 - CA-Certificate-DN contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2224290 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x222c7d0 - 1.2.840.113556.1.4.697 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2230c50 - cACertificateDN contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2234de0 - CA-Certificate-DN contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2239310 - struct dsdb_attribute contains 365 bytes in 10 blocks (ref 0) d=(nil) 0x2d13610 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x223d250 - CA-Certificate contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2241e40 - CA-Certificate contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2246000 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3137650 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x314ca50 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x224a730 - 2.5.4.37 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x224e640 - cACertificate contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2254f50 - CA-Certificate contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x22560d0 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x2d1bdb0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x225a5e0 - Bytes-Per-Minute contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x225e580 - Bytes-Per-Minute contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x22627a0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2266730 - 1.2.840.113556.1.4.284 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x226a970 - bytesPerMinute contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x226e610 - Bytes-Per-Minute contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x226a5a0 - struct dsdb_attribute contains 377 bytes in 10 blocks (ref 0) d=(nil) 0x2d24660 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2276890 - Business-Category contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x227dbc0 - Business-Category contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x227eda0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3155fb0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3160130 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x22834f0 - 2.5.4.15 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x22873e0 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x228e150 - Business-Category contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x228f2e0 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x2d62480 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22938e0 - Builtin-Modified-Count contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x22977a0 - Builtin-Modified-Count contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2293400 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x229fce0 - 1.2.840.113556.1.4.14 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x229bae0 - builtinModifiedCount contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x22a7fe0 - Builtin-Modified-Count contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x22a3d00 - struct dsdb_attribute contains 397 bytes in 8 blocks (ref 0) d=(nil) 0x2d5e0e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22b01a0 - Builtin-Creation-Time contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x22ac1c0 - Builtin-Creation-Time contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x22b87a0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x22bcdc0 - 1.2.840.113556.1.4.13 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x22c0db0 - builtinCreationTime contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x22c9150 - Builtin-Creation-Time contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x22c4e10 - struct dsdb_attribute contains 376 bytes in 10 blocks (ref 0) d=(nil) 0x2d87170 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22d1220 - buildingName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x22cd000 - buildingName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x22d9700 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3161560 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3172530 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x22dda20 - 0.9.2342.19200300.100.1.48 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x22e8e00 - buildingName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x22ea010 - buildingName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x22e5ce0 - struct dsdb_attribute contains 423 bytes in 9 blocks (ref 0) d=(nil) 0x2d9f060 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22f1da0 - Bridgehead-Transport-List contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x22edd70 - Bridgehead-Transport-List contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x22fa140 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1b1e600 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x22f5ef0 - 1.2.840.113556.1.4.819 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x23026b0 - bridgeheadTransportList contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22fe600 - Bridgehead-Transport-List contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x230ab90 - struct dsdb_attribute contains 422 bytes in 9 blocks (ref 0) d=(nil) 0x2dbbce0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2306820 - Bridgehead-Server-List-BL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2312cc0 - Bridgehead-Server-List-BL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x230ec30 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1b1a280 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x231b020 - 1.2.840.113556.1.4.820 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x23234d0 - bridgeheadServerListBL contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x231f070 - Bridgehead-Server-List-BL contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x232b6c0 - struct dsdb_attribute contains 365 bytes in 9 blocks (ref 0) d=(nil) 0x2dc7640 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2327440 - BootParameter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2333290 - BootParameter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2337fe0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x317bd60 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x233c5d0 - 1.3.6.1.1.1.1.23 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2340fc0 - bootParameter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2349be0 - BootParameter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x234dbd0 - struct dsdb_attribute contains 345 bytes in 9 blocks (ref 0) d=(nil) 0x2e11e40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2349640 - BootFile contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2355ae0 - BootFile contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2351b90 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3178930 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x235e050 - 1.3.6.1.1.1.1.24 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2359f50 - bootFile contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x23660e0 - BootFile contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x236e3b0 - struct dsdb_attribute contains 379 bytes in 10 blocks (ref 0) d=(nil) 0x2e19c40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2376750 - Birth-Location contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2372440 - Birth-Location contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x237e7e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31904f0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x318b0d0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2386750 - 1.2.840.113556.1.4.332 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x238e710 - birthLocation contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x238a7f0 - Birth-Location contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2396920 - struct dsdb_attribute contains 364 bytes in 8 blocks (ref 0) d=(nil) 0x2e21d20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23927e0 - Bad-Pwd-Count contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x239ed20 - Bad-Pwd-Count contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x239acb0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x23a7270 - 1.2.840.113556.1.4.12 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x23a2e20 - badPwdCount contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x23af420 - Bad-Pwd-Count contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x23ab620 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x2ea2ae0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23b7be0 - Bad-Password-Time contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x23b37e0 - Bad-Password-Time contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x23bfa30 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x23bbab0 - 1.2.840.113556.1.4.49 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x23c79b0 - badPasswordTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x23d8180 - Bad-Password-Time contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x23d3f40 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x2f766c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x23e0550 - Auxiliary-Class contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x23dc260 - Auxiliary-Class contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x23e89f0 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x23f8ee0 - 1.2.840.113556.1.2.351 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x23f4b70 - auxiliaryClass contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x24010e0 - Auxiliary-Class contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x240d090 - struct dsdb_attribute contains 404 bytes in 9 blocks (ref 0) d=(nil) 0x2ff4f80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2409020 - Authority-Revocation-List contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2405210 - Authority-Revocation-List contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x24111a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x319c110 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2418ba0 - 2.5.4.38 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2415100 - authorityRevocationList contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2420af0 - Authority-Revocation-List contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x241c9c0 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x30c7840 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2424a30 - Authentication-Options contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x24302b0 - Authentication-Options contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x242c5f0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2437d70 - 1.2.840.113556.1.4.11 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2433f60 - authenticationOptions contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x24400e0 - Authentication-Options contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x243be30 - struct dsdb_attribute contains 375 bytes in 8 blocks (ref 0) d=(nil) 0x31b4580 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2447c00 - Auditing-Policy contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2443d40 - Auditing-Policy contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x244f7b0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x244ba30 - 1.2.840.113556.1.4.202 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x24573b0 - auditingPolicy contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2453550 - Auditing-Policy contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x245b2e0 - struct dsdb_attribute contains 344 bytes in 9 blocks (ref 0) d=(nil) 0x321ac10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x245f440 - audio contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x3196e00 - audio contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x31aed10 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31b0200 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2466f50 - 0.9.2342.19200300.100.1.55 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x246ac50 - audio contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x31b9db0 - audio contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x31b5010 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x1e8bb60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2476320 - Attribute-Types contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2472870 - Attribute-Types contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x247ee80 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x247afd0 - 2.5.21.5 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2486cc0 - attributeTypes contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2482c10 - Attribute-Types contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x248ec90 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x1f6c7f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x248ac70 - Attribute-Syntax contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2496cc0 - Attribute-Syntax contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2492f50 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x249eaf0 - 1.2.840.113556.1.2.32 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x249ab50 - attributeSyntax contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x24a6d60 - Attribute-Syntax contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x24b70a0 - struct dsdb_attribute contains 414 bytes in 10 blocks (ref 0) d=(nil) 0x1fa0fa0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24a28e0 - Attribute-Security-GUID contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24aefa0 - Attribute-Security-GUID contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24ab1e0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31cc2d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31cd810 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x24b2de0 - 1.2.840.113556.1.4.149 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x24bed30 - attributeSecurityGUID contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x24c6a50 - Attribute-Security-GUID contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24c2af0 - struct dsdb_attribute contains 361 bytes in 8 blocks (ref 0) d=(nil) 0x2053b10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24cf0c0 - Attribute-ID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x24cace0 - Attribute-ID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x24df580 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x24db540 - 1.2.840.113556.1.2.30 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x24e78b0 - attributeID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x24e3990 - Attribute-ID contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x24f3c80 - struct dsdb_attribute contains 406 bytes in 8 blocks (ref 0) d=(nil) 0x207b5b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24efa00 - Attribute-Display-Names contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24ebc30 - Attribute-Display-Names contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x24f7a00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x24ffa60 - 1.2.840.113556.1.4.748 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x24fbb20 - attributeDisplayNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2517db0 - Attribute-Display-Names contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25078b0 - struct dsdb_attribute contains 418 bytes in 8 blocks (ref 0) d=(nil) 0x2117580 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2503720 - attributeCertificateAttribute contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x250fe80 - attributeCertificateAttribute contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x250bcc0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2513ec0 - 2.5.4.58 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x251fc20 - attributeCertificateAttribute contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x251bd40 - attributeCertificateAttribute contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2527ca0 - struct dsdb_attribute contains 379 bytes in 8 blocks (ref 0) d=(nil) 0x211ea60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2523bc0 - Assoc-NT-Account contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x252f850 - Assoc-NT-Account contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x252b9e0 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2537a20 - 1.2.840.113556.1.4.1213 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2533660 - assocNTAccount contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x253fdd0 - Assoc-NT-Account contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x253ba30 - struct dsdb_attribute contains 385 bytes in 9 blocks (ref 0) d=(nil) 0x214c700 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2547cf0 - associatedName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x254fda0 - associatedName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2557e20 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ad2890 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2553d50 - 0.9.2342.19200300.100.1.38 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x255be90 - associatedName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2567ca0 - associatedName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2563dd0 - struct dsdb_attribute contains 387 bytes in 9 blocks (ref 0) d=(nil) 0x21758e0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x256ffe0 - associatedDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x256baa0 - associatedDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2577cf0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31c9070 - 2.5.5.5 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2573ea0 - 0.9.2342.19200300.100.1.37 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2588030 - associatedDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x258ffe0 - associatedDomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x258bd90 - struct dsdb_attribute contains 361 bytes in 9 blocks (ref 0) d=(nil) 0x218e620 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2597c70 - Assistant contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2593db0 - Assistant contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25a7910 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1aca860 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x25a3b60 - 1.2.840.113556.1.4.652 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x25af610 - assistant contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25ab800 - Assistant contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25b7680 - struct dsdb_attribute contains 363 bytes in 8 blocks (ref 0) d=(nil) 0x219e900 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25bf6a0 - Asset-Number contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x25bb7f0 - Asset-Number contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x25c73f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x25c34a0 - 1.2.840.113556.1.4.283 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x25d7360 - assetNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x25d32d0 - Asset-Number contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x25e71a0 - struct dsdb_attribute contains 385 bytes in 8 blocks (ref 0) d=(nil) 0x22bbe10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25e2db0 - App-Schema-Version contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x25eef60 - App-Schema-Version contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x25eaff0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x25f6c00 - 1.2.840.113556.1.4.848 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x25fea70 - appSchemaVersion contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x25faa60 - App-Schema-Version contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2606820 - struct dsdb_attribute contains 363 bytes in 10 blocks (ref 0) d=(nil) 0x2316590 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26028a0 - Applies-To contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x260e330 - Applies-To contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x260a550 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3020110 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31e0670 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2616040 - 1.2.840.113556.1.4.341 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2612170 - appliesTo contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x261db20 - Applies-To contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2619c80 - struct dsdb_attribute contains 387 bytes in 10 blocks (ref 0) d=(nil) 0x23698c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26257e0 - Application-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2621920 - Application-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x262d2c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3024bc0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31e7fc0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2634d60 - 1.2.840.113556.1.4.218 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x263c9e0 - applicationName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2638c50 - Application-Name contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2640750 - struct dsdb_attribute contains 329 bytes in 8 blocks (ref 0) d=(nil) 0x2379b00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26446e0 - ANR contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x30406b0 - ANR contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31f0df0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2663ea0 - 1.2.840.113556.1.4.1208 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2648410 - aNR contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31f2160 - ANR contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31fac00 - struct dsdb_attribute contains 406 bytes in 8 blocks (ref 0) d=(nil) 0x23cafe0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26543e0 - Alt-Security-Identities contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2650590 - Alt-Security-Identities contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x265c0b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x265feb0 - 1.2.840.113556.1.4.867 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x266bb60 - altSecurityIdentities contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2673870 - Alt-Security-Identities contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x266fa90 - struct dsdb_attribute contains 436 bytes in 8 blocks (ref 0) d=(nil) 0x23e3c30 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x267b4e0 - Allowed-Child-Classes-Effective contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2677720 - Allowed-Child-Classes-Effective contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2683110 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x267f2f0 - 1.2.840.113556.1.4.912 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x268ad70 - allowedChildClassesEffective contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2692970 - Allowed-Child-Classes-Effective contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x268ebb0 - struct dsdb_attribute contains 397 bytes in 8 blocks (ref 0) d=(nil) 0x23fc5a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x269a8f0 - Allowed-Child-Classes contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x26968e0 - Allowed-Child-Classes contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x26a2530 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x26aa140 - 1.2.840.113556.1.4.911 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x26a61b0 - allowedChildClasses contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x26b1e20 - Allowed-Child-Classes contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x26ae120 - struct dsdb_attribute contains 425 bytes in 8 blocks (ref 0) d=(nil) 0x24d2600 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26b9a10 - Allowed-Attributes-Effective contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x26b5b90 - Allowed-Attributes-Effective contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x26c1680 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x26bd860 - 1.2.840.113556.1.4.914 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x26c5480 - allowedAttributesEffective contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x26d1040 - Allowed-Attributes-Effective contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x26cd0d0 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x254b180 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26d8dd0 - Allowed-Attributes contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x26d4f90 - Allowed-Attributes contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x26e0910 - 2.5.5.2 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x26dca40 - 1.2.840.113556.1.4.913 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x26e8410 - allowedAttributes contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x26e4600 - Allowed-Attributes contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x26effd0 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x259b0a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26ec2e0 - Admin-Property-Pages contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x26f7c30 - Admin-Property-Pages contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x26f3df0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x26ff920 - 1.2.840.113556.1.4.562 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x26fbaa0 - adminPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2707690 - Admin-Property-Pages contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2717100 - struct dsdb_attribute contains 442 bytes in 8 blocks (ref 0) d=(nil) 0x25b2920 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27036b0 - Admin-Multiselect-Property-Pages contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x270f420 - Admin-Multiselect-Property-Pages contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x270b660 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2713300 - 1.2.840.113556.1.4.1690 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x271ef10 - adminMultiselectPropertyPages contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2722dc0 - Admin-Multiselect-Property-Pages contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x272e8f0 - struct dsdb_attribute contains 394 bytes in 10 blocks (ref 0) d=(nil) 0x25ca840 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x272a9f0 - Admin-Display-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2736690 - Admin-Display-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2732750 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x31f6720 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x320b370 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x273e9d0 - 1.2.840.113556.1.2.194 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x273a850 - adminDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x27467a0 - Admin-Display-Name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2742830 - struct dsdb_attribute contains 391 bytes in 10 blocks (ref 0) d=(nil) 0x25daa10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x274e800 - Admin-Description contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x274a6c0 - Admin-Description contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2752740 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x320c8c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32080b0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x275ab00 - 1.2.840.113556.1.2.226 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2766ec0 - adminDescription contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2762b00 - Admin-Description contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x276f630 - struct dsdb_attribute contains 358 bytes in 8 blocks (ref 0) d=(nil) 0x2d4db20 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x276b2b0 - Admin-Count contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2777980 - Admin-Count contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2773730 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x277fc80 - 1.2.840.113556.1.4.150 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x277b7d0 - adminCount contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2788250 - Admin-Count contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2783f50 - struct dsdb_attribute contains 386 bytes in 8 blocks (ref 0) d=(nil) 0x2f2c8b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x278ffa0 - Admin-Context-Menu contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2797e20 - Admin-Context-Menu contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2793d30 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x27a01c0 - 1.2.840.113556.1.4.614 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x279c150 - adminContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x27a8530 - Admin-Context-Menu contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x27a4270 - struct dsdb_attribute contains 370 bytes in 10 blocks (ref 0) d=(nil) 0x1965300 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27b01d0 - Address-Type contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x27ac390 - Address-Type contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x27b8540 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32239c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x30bae00 - 2.5.5.4 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x27b4360 - 1.2.840.113556.1.2.350 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x27c0580 - addressType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x27c8100 - Address-Type contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x27c4260 - struct dsdb_attribute contains 379 bytes in 10 blocks (ref 0) d=(nil) 0x1d2cc70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27cfde0 - Address-Syntax contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x27cbeb0 - Address-Syntax contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x27d7980 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32280c0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x322da50 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x27d3c20 - 1.2.840.113556.1.2.255 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x27df690 - addressSyntax contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x27db7e0 - Address-Syntax contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x27e71f0 - struct dsdb_attribute contains 377 bytes in 10 blocks (ref 0) d=(nil) 0x2987b40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27e33f0 - Address-Home contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x27eef40 - Address-Home contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x27eb0d0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x323b400 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3244200 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x27f6b40 - 1.2.840.113556.1.2.617 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x27f2cd0 - homePostalAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x27fe830 - Address-Home contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x280a230 - struct dsdb_attribute contains 452 bytes in 10 blocks (ref 0) d=(nil) 0x2b7cac0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x27faa10 - Address-Entry-Display-Table-MSDOS contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x28064c0 - Address-Entry-Display-Table-MSDOS contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x280e180 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x32488a0 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3267e30 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2815da0 - 1.2.840.113556.1.2.400 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x282d470 - addressEntryDisplayTableMSDOS contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2812050 - Address-Entry-Display-Table-MSDOS contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x281d9d0 - struct dsdb_attribute contains 429 bytes in 10 blocks (ref 0) d=(nil) 0x2c95660 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2819be0 - Address-Entry-Display-Table contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2825710 - Address-Entry-Display-Table contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2821890 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x326f660 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x310df00 - 2.5.5.10 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2829580 - 1.2.840.113556.1.2.324 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2835150 - addressEntryDisplayTable contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2831190 - Address-Entry-Display-Table contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x283ce60 - struct dsdb_attribute contains 400 bytes in 9 blocks (ref 0) d=(nil) 0x2cb1bd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2838ec0 - Address-Book-Roots2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x28448f0 - Address-Book-Roots2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2840ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1a70020 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2848760 - 1.2.840.113556.1.4.2046 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2854490 - addressBookRoots2 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2850410 - Address-Book-Roots2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x285c3d0 - struct dsdb_attribute contains 396 bytes in 9 blocks (ref 0) d=(nil) 0x2e8b930 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28581e0 - Address-Book-Roots contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x28645f0 - Address-Book-Roots contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2860680 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1a6bd70 - 2.5.5.1 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x286c2b0 - 1.2.840.113556.1.4.1244 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2868480 - addressBookRoots contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x28744e0 - Address-Book-Roots contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2870090 - struct dsdb_attribute contains 358 bytes in 10 blocks (ref 0) d=(nil) 0x2f11c10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x287c030 - Address contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2878220 - Address contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2883c40 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x3295890 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x311c550 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2887cc0 - 1.2.840.113556.1.2.256 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2893790 - streetAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x288f870 - Address contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x289fae0 - struct dsdb_attribute contains 441 bytes in 8 blocks (ref 0) d=(nil) 0x23f0cc0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x289b8e0 - Additional-Trusted-Service-Names contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x2897730 - Additional-Trusted-Service-Names contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x28a3840 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x28ab7e0 - 1.2.840.113556.1.4.889 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28a7690 - additionalTrustedServiceNames contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x28b3840 - Additional-Trusted-Service-Names contains 33 bytes in 1 blocks (ref 0) d=(nil) 0x28af8f0 - struct dsdb_attribute contains 391 bytes in 9 blocks (ref 0) d=(nil) 0x1964580 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28bb520 - Additional-Information contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28b76f0 - Additional-Information contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28c3550 - uint32_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x189a6c0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x28bf220 - 1.2.840.113556.1.4.265 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28cb6f0 - notes contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1921cd0 - Additional-Information contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28c7860 - struct dsdb_attribute contains 395 bytes in 8 blocks (ref 0) d=(nil) 0x19d6390 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28d3540 - ACS-Total-No-Of-Flows contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x28cf6b0 - ACS-Total-No-Of-Flows contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x28e3460 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x28e4890 - 1.2.840.113556.1.4.763 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x28ed060 - aCSTotalNoOfFlows contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x28e8b80 - ACS-Total-No-Of-Flows contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x28f4760 - struct dsdb_attribute contains 373 bytes in 8 blocks (ref 0) d=(nil) 0x1a566a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28fdef0 - ACS-Time-Of-Day contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2906570 - ACS-Time-Of-Day contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2901f00 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x290e750 - 1.2.840.113556.1.4.756 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x290a760 - aCSTimeOfDay contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2916b00 - ACS-Time-Of-Day contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2912910 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x1b89f70 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x291e7e0 - ACS-Service-Type contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x291a750 - ACS-Service-Type contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2926620 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2922670 - 1.2.840.113556.1.4.762 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x292e6e0 - aCSServiceType contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x292a720 - ACS-Service-Type contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2936520 - struct dsdb_attribute contains 375 bytes in 8 blocks (ref 0) d=(nil) 0x1ba2050 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2932580 - ACS-Server-List contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x293e5a0 - ACS-Server-List contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x29474f0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x29429a0 - 1.2.840.113556.1.4.1312 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x294f940 - aCSServerList contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x294b620 - ACS-Server-List contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2967fa0 - struct dsdb_attribute contains 420 bytes in 8 blocks (ref 0) d=(nil) 0x1bf27f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2957850 - ACS-RSVP-Log-Files-Location contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x295ff80 - ACS-RSVP-Log-Files-Location contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x295bae0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2964170 - 1.2.840.113556.1.4.773 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x297ba20 - aCSRSVPLogFilesLocation contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x296fc80 - ACS-RSVP-Log-Files-Location contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x296bd40 - struct dsdb_attribute contains 436 bytes in 8 blocks (ref 0) d=(nil) 0x1c02740 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2977aa0 - ACS-RSVP-Account-Files-Location contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2973b00 - ACS-RSVP-Account-Files-Location contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x297fb90 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2983cf0 - 1.2.840.113556.1.4.900 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x298f8f0 - aCSRSVPAccountFilesLocation contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x298b9b0 - ACS-RSVP-Account-Files-Location contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x29979b0 - struct dsdb_attribute contains 362 bytes in 8 blocks (ref 0) d=(nil) 0x1c1fbf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x299ed50 - ACS-Priority contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x29a0100 - ACS-Priority contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x29a8bd0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x29a47d0 - 1.2.840.113556.1.4.764 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x29b1360 - aCSPriority contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x29acd00 - ACS-Priority contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x29b9a30 - struct dsdb_attribute contains 374 bytes in 8 blocks (ref 0) d=(nil) 0x1cdb100 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29c98f0 - ACS-Policy-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x29c6740 - ACS-Policy-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x29cf150 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x29d74e0 - 1.2.840.113556.1.4.772 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x29df5f0 - aCSPolicyName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x29eb900 - ACS-Policy-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x29e79a0 - struct dsdb_attribute contains 390 bytes in 8 blocks (ref 0) d=(nil) 0x1da58a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29f39a0 - ACS-Permission-Bits contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x29ef880 - ACS-Permission-Bits contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x29fb850 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x29f7870 - 1.2.840.113556.1.4.765 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a037b0 - aCSPermissionBits contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x29ff7e0 - ACS-Permission-Bits contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2a0f740 - struct dsdb_attribute contains 408 bytes in 8 blocks (ref 0) d=(nil) 0x1dc5db0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a0b7b0 - ACS-Non-Reserved-Tx-Size contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2a07610 - ACS-Non-Reserved-Tx-Size contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2a134a0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2a1b7a0 - 1.2.840.113556.1.4.898 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a22cc0 - aCSNonReservedTxSize contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2a30460 - ACS-Non-Reserved-Tx-Size contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2a1fae0 - struct dsdb_attribute contains 412 bytes in 8 blocks (ref 0) d=(nil) 0x1e06bf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a2c7a0 - ACS-Non-Reserved-Tx-Limit contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2a28200 - ACS-Non-Reserved-Tx-Limit contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2a344b0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2a3c420 - 1.2.840.113556.1.4.780 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a38460 - aCSNonReservedTxLimit contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2a54310 - ACS-Non-Reserved-Tx-Limit contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2a44340 - struct dsdb_attribute contains 421 bytes in 8 blocks (ref 0) d=(nil) 0x1e2a990 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a40250 - ACS-Non-Reserved-Token-Size contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2a4c700 - ACS-Non-Reserved-Token-Size contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2a48630 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2a7b9d0 - 1.2.840.113556.1.4.1319 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a5c080 - aCSNonReservedTokenSize contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a57ff0 - ACS-Non-Reserved-Token-Size contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2a63f40 - struct dsdb_attribute contains 417 bytes in 8 blocks (ref 0) d=(nil) 0x1e70240 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a6bd10 - ACS-Non-Reserved-Peak-Rate contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2a67e80 - ACS-Non-Reserved-Peak-Rate contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2a73d10 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2a77a70 - 1.2.840.113556.1.4.1318 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a838b0 - aCSNonReservedPeakRate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2a8f560 - ACS-Non-Reserved-Peak-Rate contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2a7fae0 - struct dsdb_attribute contains 444 bytes in 8 blocks (ref 0) d=(nil) 0x1ed7450 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a8b670 - ACS-Non-Reserved-Min-Policed-Size contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2a87650 - ACS-Non-Reserved-Min-Policed-Size contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2a934f0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2aaead0 - 1.2.840.113556.1.4.1321 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a9b080 - aCSNonReservedMinPolicedSize contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2a97230 - ACS-Non-Reserved-Min-Policed-Size contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2aa2dc0 - struct dsdb_attribute contains 428 bytes in 8 blocks (ref 0) d=(nil) 0x1fc23c0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a9ef10 - ACS-Non-Reserved-Max-SDU-Size contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2aa6a80 - ACS-Non-Reserved-Max-SDU-Size contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2ab2af0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2ad2390 - 1.2.840.113556.1.4.1320 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2aba9e0 - aCSNonReservedMaxSDUSize contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2ab6a80 - ACS-Non-Reserved-Max-SDU-Size contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2ac2920 - struct dsdb_attribute contains 410 bytes in 8 blocks (ref 0) d=(nil) 0x20980a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2abe840 - ACS-Minimum-Policed-Size contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2aca6e0 - ACS-Minimum-Policed-Size contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2ac66b0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2ace4b0 - 1.2.840.113556.1.4.1315 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ada0f0 - aCSMinimumPolicedSize contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2ae20b0 - ACS-Minimum-Policed-Size contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2ade080 - struct dsdb_attribute contains 391 bytes in 8 blocks (ref 0) d=(nil) 0x210c7b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ae9dd0 - ACS-Minimum-Latency contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2ae5f40 - ACS-Minimum-Latency contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2af1d70 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2aee010 - 1.2.840.113556.1.4.1316 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2afa0e0 - aCSMinimumLatency contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2af5f80 - ACS-Minimum-Latency contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2b1b0e0 - struct dsdb_attribute contains 422 bytes in 8 blocks (ref 0) d=(nil) 0x21693a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2afe480 - ACS-Minimum-Delay-Variation contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2b0a890 - ACS-Minimum-Delay-Variation contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2b0eb10 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2b2ef90 - 1.2.840.113556.1.4.1317 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b16b10 - aCSMinimumDelayVariation contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2b23210 - ACS-Minimum-Delay-Variation contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2b1f1e0 - struct dsdb_attribute contains 419 bytes in 8 blocks (ref 0) d=(nil) 0x218ab00 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b2ae60 - ACS-Max-Token-Rate-Per-Flow contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2b26ea0 - ACS-Max-Token-Rate-Per-Flow contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2b33240 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2b3ba60 - 1.2.840.113556.1.4.758 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2b37980 - aCSMaxTokenRatePerFlow contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2b54300 - ACS-Max-Token-Rate-Per-Flow contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2b440e0 - struct dsdb_attribute contains 428 bytes in 8 blocks (ref 0) d=(nil) 0x21bb660 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b3fe90 - ACS-Max-Token-Bucket-Per-Flow contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2b4c310 - ACS-Max-Token-Bucket-Per-Flow contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2b48510 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2b504f0 - 1.2.840.113556.1.4.1313 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b5c0c0 - aCSMaxTokenBucketPerFlow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2b58090 - ACS-Max-Token-Bucket-Per-Flow contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2b64160 - struct dsdb_attribute contains 425 bytes in 8 blocks (ref 0) d=(nil) 0x21c3550 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b5ff00 - ACS-Max-Size-Of-RSVP-Log-File contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2b68580 - ACS-Max-Size-Of-RSVP-Log-File contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2b74a30 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2b70480 - 1.2.840.113556.1.4.775 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2b7cfa0 - aCSMaxSizeOfRSVPLogFile contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b78d50 - ACS-Max-Size-Of-RSVP-Log-File contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2b84e80 - struct dsdb_attribute contains 441 bytes in 8 blocks (ref 0) d=(nil) 0x21e3d40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b810b0 - ACS-Max-Size-Of-RSVP-Account-File contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2b8cdd0 - ACS-Max-Size-Of-RSVP-Account-File contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2b88e50 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2b90dc0 - 1.2.840.113556.1.4.902 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ba9510 - aCSMaxSizeOfRSVPAccountFile contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2b9d020 - ACS-Max-Size-Of-RSVP-Account-File contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2b98f30 - struct dsdb_attribute contains 435 bytes in 8 blocks (ref 0) d=(nil) 0x220b930 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ba51a0 - ACS-Max-Peak-Bandwidth-Per-Flow contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2ba1160 - ACS-Max-Peak-Bandwidth-Per-Flow contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2bad7f0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2bb14b0 - 1.2.840.113556.1.4.759 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2bbd3a0 - aCSMaxPeakBandwidthPerFlow contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2bb96a0 - ACS-Max-Peak-Bandwidth-Per-Flow contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2bc4f30 - struct dsdb_attribute contains 401 bytes in 8 blocks (ref 0) d=(nil) 0x222c320 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bc1150 - ACS-Max-Peak-Bandwidth contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2bccc50 - ACS-Max-Peak-Bandwidth contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2bc8db0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2bd48f0 - 1.2.840.113556.1.4.767 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2bd8aa0 - aCSMaxPeakBandwidth contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2be5150 - ACS-Max-Peak-Bandwidth contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2be08a0 - struct dsdb_attribute contains 402 bytes in 8 blocks (ref 0) d=(nil) 0x22f18f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bed2d0 - ACS-Max-No-Of-Log-Files contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2be9160 - ACS-Max-No-Of-Log-Files contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2bf5540 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2bf1200 - 1.2.840.113556.1.4.774 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2bfd2a0 - aCSMaxNoOfLogFiles contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2bf94f0 - ACS-Max-No-Of-Log-Files contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c05080 - struct dsdb_attribute contains 418 bytes in 8 blocks (ref 0) d=(nil) 0x2400c40 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c012a0 - ACS-Max-No-Of-Account-Files contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2c0d4c0 - ACS-Max-No-Of-Account-Files contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2c09250 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2c158e0 - 1.2.840.113556.1.4.901 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2c117a0 - aCSMaxNoOfAccountFiles contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2c1d970 - ACS-Max-No-Of-Account-Files contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2c19920 - struct dsdb_attribute contains 394 bytes in 8 blocks (ref 0) d=(nil) 0x2420640 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c25a00 - ACS-Maximum-SDU-Size contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2c2e370 - ACS-Maximum-SDU-Size contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2c29c50 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c369c0 - 1.2.840.113556.1.4.1314 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c32680 - aCSMaximumSDUSize contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2c3eaa0 - ACS-Maximum-SDU-Size contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2c3a900 - struct dsdb_attribute contains 411 bytes in 8 blocks (ref 0) d=(nil) 0x264c390 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c46b70 - ACS-Max-Duration-Per-Flow contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2c42c10 - ACS-Max-Duration-Per-Flow contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2c4ea00 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2c4ac10 - 1.2.840.113556.1.4.761 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2c56a50 - aCSMaxDurationPerFlow contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2c62ed0 - ACS-Max-Duration-Per-Flow contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2c52690 - struct dsdb_attribute contains 454 bytes in 8 blocks (ref 0) d=(nil) 0x2682c80 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c5f050 - ACS-Max-Aggregate-Peak-Rate-Per-User contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x2c5aec0 - ACS-Max-Aggregate-Peak-Rate-Per-User contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x2c66b50 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c6e490 - 1.2.840.113556.1.4.897 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2c6a750 - aCSMaxAggregatePeakRatePerUser contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x2c75ca0 - ACS-Max-Aggregate-Peak-Rate-Per-User contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x2c720d0 - struct dsdb_attribute contains 382 bytes in 8 blocks (ref 0) d=(nil) 0x2687070 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c7d590 - ACS-Identity-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2c79900 - ACS-Identity-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2c85210 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2c81320 - 1.2.840.113556.1.4.784 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2c8d600 - aCSIdentityName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2c891d0 - ACS-Identity-Name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2c95b00 - struct dsdb_attribute contains 388 bytes in 8 blocks (ref 0) d=(nil) 0x271ea60 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c91700 - ACS-Event-Log-Level contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2c9dc80 - ACS-Event-Log-Level contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2c99a80 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2ca6300 - 1.2.840.113556.1.4.769 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ca1e70 - aCSEventLogLevel contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2cae740 - ACS-Event-Log-Level contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2caa560 - struct dsdb_attribute contains 435 bytes in 8 blocks (ref 0) d=(nil) 0x27b80b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cb6650 - ACS-Enable-RSVP-Message-Logging contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2cb2050 - ACS-Enable-RSVP-Message-Logging contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2cba900 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2cc7850 - 1.2.840.113556.1.4.768 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ccfce0 - aCSEnableRSVPMessageLogging contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x2ccb750 - ACS-Enable-RSVP-Message-Logging contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2cd7d70 - struct dsdb_attribute contains 416 bytes in 8 blocks (ref 0) d=(nil) 0x27bc860 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cd3df0 - ACS-Enable-RSVP-Accounting contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2cdfa00 - ACS-Enable-RSVP-Accounting contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2cdbc80 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2ce3dd0 - 1.2.840.113556.1.4.899 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2cf0050 - aCSEnableRSVPAccounting contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cebeb0 - ACS-Enable-RSVP-Accounting contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x2cf8150 - struct dsdb_attribute contains 400 bytes in 8 blocks (ref 0) d=(nil) 0x280dce0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cf4250 - ACS-Enable-ACS-Service contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d00050 - ACS-Enable-ACS-Service contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2cfbf10 - 2.5.5.8 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2d040e0 - 1.2.840.113556.1.4.770 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d10020 - aCSEnableACSService contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2d174f0 - ACS-Enable-ACS-Service contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d18800 - struct dsdb_attribute contains 377 bytes in 8 blocks (ref 0) d=(nil) 0x28932f0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d1fb80 - ACS-DSBM-Refresh contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2d20f30 - ACS-DSBM-Refresh contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2d1ca30 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2d29470 - 1.2.840.113556.1.4.777 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d34bb0 - aCSDSBMRefresh contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2d2da70 - ACS-DSBM-Refresh contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2d3a1c0 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x28c30b0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d35c70 - ACS-DSBM-Priority contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2d3e250 - ACS-DSBM-Priority contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2d4a2e0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2d45e10 - 1.2.840.113556.1.4.776 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2d527f0 - aCSDSBMPriority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2d5a960 - ACS-DSBM-Priority contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2e93a40 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x294f490 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d569d0 - ACS-DSBM-DeadTime contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2e99750 - ACS-DSBM-DeadTime contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2ef9640 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2f0d3b0 - 1.2.840.113556.1.4.778 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f20580 - aCSDSBMDeadTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2f3a5f0 - ACS-DSBM-DeadTime contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2f56fb0 - struct dsdb_attribute contains 366 bytes in 8 blocks (ref 0) d=(nil) 0x2a601d0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d62ea0 - ACS-Direction contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2f5f690 - ACS-Direction contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2f6e4c0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2f8ca90 - 1.2.840.113556.1.4.757 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2f89050 - aCSDirection contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2f924b0 - ACS-Direction contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2fa3c00 - struct dsdb_attribute contains 381 bytes in 8 blocks (ref 0) d=(nil) 0x2aaadf0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d5ed40 - ACS-Cache-Timeout contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2fc2c80 - ACS-Cache-Timeout contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2fda8a0 - 2.5.5.9 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2fe37d0 - 1.2.840.113556.1.4.779 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2ff9860 - aCSCacheTimeout contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2ff5c20 - ACS-Cache-Timeout contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2fff100 - struct dsdb_attribute contains 425 bytes in 8 blocks (ref 0) d=(nil) 0x2b63c90 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d6ac20 - ACS-Allocable-RSVP-Bandwidth contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2d66df0 - ACS-Allocable-RSVP-Bandwidth contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2d73160 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3008a00 - 1.2.840.113556.1.4.766 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3049d80 - aCSAllocableRSVPBandwidth contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2d6ecd0 - ACS-Allocable-RSVP-Bandwidth contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2d7b6d0 - struct dsdb_attribute contains 443 bytes in 8 blocks (ref 0) d=(nil) 0x2d72cd0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d83dc0 - ACS-Aggregate-Token-Rate-Per-User contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2d7f7d0 - ACS-Aggregate-Token-Rate-Per-User contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2d8bee0 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x3052cb0 - 1.2.840.113556.1.4.760 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x3069170 - aCSAggregateTokenRatePerUser contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x2d87bc0 - ACS-Aggregate-Token-Rate-Per-User contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2d93f00 - struct dsdb_attribute contains 395 bytes in 8 blocks (ref 0) d=(nil) 0x2fb57a0 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d90040 - Account-Name-History contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x30727b0 - Account-Name-History contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x30849e0 - 2.5.5.12 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x309ff20 - 1.2.840.113556.1.4.1307 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d9bb90 - accountNameHistory contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x30a4b00 - Account-Name-History contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x30c3e20 - struct dsdb_attribute contains 375 bytes in 8 blocks (ref 0) d=(nil) 0x30ade10 - struct ldb_schema_attribute contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x196dfc0 - Account-Expires contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x30cccf0 - Account-Expires contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x30d6050 - 2.5.5.16 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x30f1900 - 1.2.840.113556.1.4.159 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x30fa840 - accountExpires contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x30f76a0 - Account-Expires contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1962d60 - FF0000000000000000000000000000000000000000 contains 43 bytes in 1 blocks (ref 0) d=(nil) 0x2d97bf0 - struct dsdb_schema_prefixmap contains 1318 bytes in 43 blocks (ref 0) d=(nil) 0x2e7e170 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2da3c10 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2d9fb80 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x2daba60 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x2da7c50 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2db3ac0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2daf9f0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2db79d0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2dbff30 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2dcc5b0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2dd0b20 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2de5390 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2de9850 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2df62c0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2df1a20 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2dfe7a0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2dfa4c0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2e069a0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2e027d0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2e0e8d0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2e0a920 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2e16a40 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2e12ad0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x2e1e770 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x2e1a8e0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x2e26b40 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2e22980 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2e2ea10 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2e2ac50 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e37370 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e32b30 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e3f620 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e3b660 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x2e47460 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e437c0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e52ea0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e5c5e0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e54370 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e5db20 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2e677a0 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x2e75350 - DATA_BLOB: ../source4/dsdb/schema/schema_prefixmap.c:548 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x2e70560 - struct dsdb_schema_prefixmap_oid contains 984 bytes in 1 blocks (ref 0) d=(nil) 0x196d8d0 - struct ldb_dn contains 130 bytes in 2 blocks (ref 0) d=(nil) 0x1965140 - CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x196d430 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18415a0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1840d50 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183f960 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183f060 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183e6b0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183df20 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183dea0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183d520 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183cb80 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183c1c0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183ba00 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x183a780 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1839d70 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1839410 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1838cb0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1838270 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1837ab0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18370c0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18366f0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1835e20 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1835350 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1834ab0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1833ef0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1833770 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1832fd0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18323d0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1831970 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18311d0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1830a30 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x182ffe0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x182f600 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x182ecb0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x182e2a0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x182d990 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x182d080 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x182b3c0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x182aa70 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18291f0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18288a0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1828820 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18287a0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1827d60 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1802850 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18027d0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1801da0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18016c0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x17fc1f0 - struct ops_list_entry contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x17fdfa0 - struct auth_session_info contains 808 bytes in 20 blocks (ref 3) d=0x2af2789e17b4 0x17fc760 - struct cli_credentials contains 381 bytes in 5 blocks (ref 0) d=(nil) 0x17fca30 - SAMBA2000.EXAMPLE.COM contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x17fc010 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x17fc6f0 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x17fc170 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x17fbfa0 - struct dom_sid contains 68 bytes in 1 blocks (ref 0) d=(nil) 0x17fc0c0 - struct auth_user_info contains 163 bytes in 9 blocks (ref 0) d=(nil) 0x17fc270 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x17fc680 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x17fc610 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x17fc5a0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x17fc530 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x17fc4c0 - System contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x17fc450 - NT AUTHORITY contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x17fc3d0 - SYSTEM contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x17fc360 - struct security_token contains 100 bytes in 2 blocks (ref 0) d=(nil) 0x17fcc40 - struct dom_sid contains 68 bytes in 1 blocks (ref 0) d=(nil) 0x17fccd0 - DATA_BLOB: ../source4/auth/session.c:81 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x17fc9b0 - struct auth_user_info_torture contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x17fc8a0 - struct tevent_context contains 272489 bytes in 7793 blocks (ref 1) d=0x2af2770dc78a 0x17fbbb0 - struct task_server contains 1348 bytes in 30 blocks (ref 0) d=(nil) 0x1adca60 - struct stream_socket contains 232 bytes in 6 blocks (ref 0) d=(nil) 0x25f69e0 - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x25f6b20 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1b68af0 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x25f6a80 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x25f6890 - struct stream_socket contains 232 bytes in 6 blocks (ref 0) d=(nil) 0x1b28af0 - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1b28c30 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x25f6910 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x1b28b90 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1b28d20 - struct imessaging_context contains 820 bytes in 17 blocks (ref 0) d=(nil) 0x1adcb10 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2af9ed0 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x2af9d80 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2af9e30 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2625670 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2625510 - struct socket_address contains 100 bytes in 2 blocks (ref 0) d=(nil) 0x29d7290 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.14 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x29d7330 - struct socket_context contains 108 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x29d71f0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.14 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x2625460 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29d7160 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x286f2b0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.14 contains 65 bytes in 3 blocks (ref 0) d=(nil) 0x286f3f0 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 5 bytes in 2 blocks (ref 0) d=(nil) 0x226e5a0 - 1.14 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x23af3b0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x286f350 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x21413e0 - struct task_server contains 2386 bytes in 40 blocks (ref 0) d=(nil) 0x25679f0 - struct echo_server contains 1012 bytes in 17 blocks (ref 0) d=(nil) 0x2883b30 - struct echo_socket contains 1004 bytes in 16 blocks (ref 0) d=(nil) 0x343a880 - struct echo_udp_socket contains 828 bytes in 13 blocks (ref 0) d=(nil) 0x3003bb0 - struct tevent_req contains 464 bytes in 6 blocks (ref 0) d=(nil) 0x2c28fd0 - struct tdgram_recvfrom_state contains 272 bytes in 4 blocks (ref 0) d=0x2af27c33ffee 0x27a81b0 - struct tevent_req contains 232 bytes in 3 blocks (ref 0) d=(nil) 0x27a8250 - struct tdgram_bsd_recvfrom_state contains 40 bytes in 1 blocks (ref 0) d=0x2af27c3432f9 0x27a83f0 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x27a8330 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x2c290b0 - struct tevent_queue contains 148 bytes in 3 blocks (ref 0) d=0x2af2770de48c 0x3003d90 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x2c28f10 - echo_udp_send_queue contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2c28e90 - struct tdgram_context contains 192 bytes in 3 blocks (ref 0) d=0x2af27c33fe7e 0x3003c40 - struct tdgram_bsd contains 152 bytes in 2 blocks (ref 0) d=0x2af27c343df5 0x3003ce0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1adc990 - struct tsocket_address contains 160 bytes in 2 blocks (ref 0) d=(nil) 0x1d135a0 - struct tsocket_address_bsd contains 136 bytes in 1 blocks (ref 0) d=(nil) 0x21f3770 - struct interface contains 490 bytes in 5 blocks (ref 0) d=(nil) 0x2587d40 - 255.0.0.0 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x29eb880 - 127.255.255.255 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e640 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1a374e0 - 127.0.0.25/8 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2cd79f0 - struct imessaging_context contains 820 bytes in 17 blocks (ref 0) d=(nil) 0x2090280 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x21f36c0 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x2230ab0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1d13500 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1d13460 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x22309e0 - struct socket_address contains 100 bytes in 2 blocks (ref 0) d=(nil) 0x248e9b0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.13 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x2abd9f0 - struct socket_context contains 108 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x248e910 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.13 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x2abdaa0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x239eb30 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22a7df0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.13 contains 65 bytes in 3 blocks (ref 0) d=(nil) 0x22a7d40 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 5 bytes in 2 blocks (ref 0) d=(nil) 0x1a5de20 - 1.13 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x2f56c40 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x239ebd0 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2cd7c80 - struct task_server contains 5342 bytes in 79 blocks (ref 0) d=(nil) 0x1a5de90 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x297fab0 - reference to: struct dns_socket - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x297f8c0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1a5df50 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x22976e0 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2d2d9f0 - struct dns_server contains 4226 bytes in 54 blocks (ref 0) d=(nil) 0x2a3c1a0 - struct dns_socket contains 1003 bytes in 16 blocks (ref 1) d=(nil) 0x2abdbf0 - struct dns_udp_socket contains 827 bytes in 13 blocks (ref 0) d=(nil) 0x2a3c0a0 - struct tevent_req contains 464 bytes in 6 blocks (ref 0) d=(nil) 0x272e7a0 - struct tdgram_recvfrom_state contains 272 bytes in 4 blocks (ref 0) d=0x2af27c33ffee 0x1a335c0 - struct tevent_req contains 232 bytes in 3 blocks (ref 0) d=(nil) 0x2883970 - struct tdgram_bsd_recvfrom_state contains 40 bytes in 1 blocks (ref 0) d=0x2af27c3432f9 0x1a33660 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x2567930 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x2567b30 - struct tevent_queue contains 147 bytes in 3 blocks (ref 0) d=0x2af2770de48c 0x2a3c2e0 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x1f5d470 - dns_udp_send_queue contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3003ea0 - struct tdgram_context contains 192 bytes in 3 blocks (ref 0) d=0x2af27c33fe7e 0x1a33420 - struct tdgram_bsd contains 152 bytes in 2 blocks (ref 0) d=0x2af27c343df5 0x25eed60 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1ad8aa0 - struct tsocket_address contains 160 bytes in 2 blocks (ref 0) d=(nil) 0x23af1c0 - struct tsocket_address_bsd contains 136 bytes in 1 blocks (ref 0) d=(nil) 0x1a37360 - struct dns_server_zone contains 186 bytes in 3 blocks (ref 0) d=(nil) 0x2297420 - struct ldb_dn contains 154 bytes in 2 blocks (ref 0) d=(nil) 0x239e9b0 - DC=samba2000.example.com,CN=MicrosoftDNS,CN=System,DC=samba2000,DC=example,DC=com contains 82 bytes in 1 blocks (ref 0) d=(nil) 0x239ea70 - struct ldb_result contains 1119 bytes in 12 blocks (ref 0) d=(nil) 0x248ebf0 - struct ldb_message * contains 1079 bytes in 11 blocks (ref 0) d=(nil) 0x2567aa0 - struct ldb_message contains 540 bytes in 5 blocks (ref 0) d=(nil) 0x29d7450 - struct ldb_message_element contains 516 bytes in 4 blocks (ref 0) d=(nil) 0x1f5d220 - struct ldb_val contains 31 bytes in 2 blocks (ref 0) d=(nil) 0x1d13640 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x21f3640 - name contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x2c28e20 - struct ldb_message contains 515 bytes in 5 blocks (ref 0) d=(nil) 0x27a84a0 - struct ldb_message_element contains 491 bytes in 4 blocks (ref 0) d=(nil) 0x272e570 - struct ldb_val contains 38 bytes in 2 blocks (ref 0) d=(nil) 0x297f990 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1adc910 - name contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x2883ac0 - struct dns_server_tkey_store contains 1040 bytes in 2 blocks (ref 0) d=(nil) 0x22308d0 - struct dns_server_tkey * contains 1024 bytes in 1 blocks (ref 0) d=(nil) 0x27c7c30 - reference to: struct ldb_context - struct cli_credentials contains 838 bytes in 19 blocks (ref 0) d=(nil) 0x23487f0 - struct keytab_container contains 24 bytes in 2 blocks (ref 0) d=0x2af275fd9c7e 0x2625750 - reference to: struct smb_krb5_context - struct smb_krb5_context contains 24 bytes in 1 blocks (ref 1) d=0x2af27a4dcdf0 0x286f510 - DC5$ contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x2cd7a70 - SAMBA2000.EXAMPLE.COM contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1a33520 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e550 - password set via cli_credentials_set_password contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x239eca0 - host/dc5.samba2000.example.com@SAMBA2000.EXAMPLE.COM contains 53 bytes in 1 blocks (ref 0) d=(nil) 0x28838d0 - (&(flatname=SAMBA2000)(objectclass=primaryDomain)) contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x21f35a0 - struct db_context contains 200 bytes in 4 blocks (ref 0) d=(nil) 0x2cd7b60 - struct db_tdb_ctx contains 32 bytes in 3 blocks (ref 0) d=(nil) 0x1ad8d00 - struct tdb_wrap contains 8 bytes in 2 blocks (ref 0) d=(nil) 0x1a5e080 - reference to: struct tdb_wrap_private - /home/rusty/samba/st/fl2000dc/private/secrets.tdb contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x297fa10 - SAMBA2000.EXAMPLE.COM contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2a3c240 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2cd7d00 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d2d770 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x23489f0 - struct imessaging_context contains 820 bytes in 17 blocks (ref 0) d=(nil) 0x2348a60 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x29cef50 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x2f56cb0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x29ceeb0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2abdc70 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x210ca90 - struct socket_address contains 100 bytes in 2 blocks (ref 0) d=(nil) 0x297f820 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.12 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x1ad8c10 - struct socket_context contains 108 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1a372c0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.12 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x210c920 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2883bb0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1d136c0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.12 contains 65 bytes in 3 blocks (ref 0) d=(nil) 0x22a7c60 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 5 bytes in 2 blocks (ref 0) d=(nil) 0x2f56db0 - 1.12 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x2090210 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x1e0a7b0 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2587cc0 - struct task_server contains 1230 bytes in 25 blocks (ref 0) d=(nil) 0x25eee70 - struct dnsupdate_service contains 256 bytes in 4 blocks (ref 0) d=(nil) 0x1a371f0 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x2297570 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x22974b0 - reference to: struct ldb_context - struct imessaging_context contains 910 bytes in 20 blocks (ref 0) d=(nil) 0x20fd000 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2297630 - const char * contains 26 bytes in 2 blocks (ref 0) d=(nil) 0x21415f0 - dnsupdate contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23af0b0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x29eb6e0 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x29eb590 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x29eb640 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x25eecc0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x25eebf0 - struct socket_address contains 100 bytes in 2 blocks (ref 0) d=(nil) 0x226e350 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.11 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x23af250 - struct socket_context contains 108 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x343aa60 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.11 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x23af300 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a33700 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x238e520 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.11 contains 65 bytes in 3 blocks (ref 0) d=(nil) 0x226e2a0 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 5 bytes in 2 blocks (ref 0) d=(nil) 0x2d2d700 - 1.11 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x2d2d7f0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x2577a40 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x343a790 - struct task_server contains 2781 bytes in 72 blocks (ref 0) d=(nil) 0x2077b00 - struct kccsrv_service contains 1746 bytes in 50 blocks (ref 0) d=(nil) 0x2b7ce40 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x1f10030 - struct ldb_dn contains 360 bytes in 11 blocks (ref 0) d=(nil) 0x1e0a8e0 - struct ldb_dn_component contains 240 bytes in 9 blocks (ref 0) d=(nil) 0x1f100f0 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2a1f9b0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x20fcf90 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x27881d0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x20fcea0 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ec7720 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x343a9f0 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2788040 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x343a900 - CN=Configuration,DC=samba2000,DC=example,DC=com contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x2a1f820 - struct kccsrv_partition contains 460 bytes in 14 blocks (ref 0) d=(nil) 0x2761fb0 - struct ldb_dn contains 428 bytes in 13 blocks (ref 0) d=(nil) 0x2090140 - struct ldb_dn_component contains 298 bytes in 11 blocks (ref 0) d=(nil) 0x1e0a650 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x343a810 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2141460 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1a37460 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1d133f0 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1d85540 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e810 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2d0ffa0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e7a0 - Schema contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e730 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e6c0 - CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x2761e50 - struct kccsrv_partition contains 392 bytes in 12 blocks (ref 0) d=(nil) 0x1a5e100 - struct ldb_dn contains 360 bytes in 11 blocks (ref 0) d=(nil) 0x2f56e20 - struct ldb_dn_component contains 240 bytes in 9 blocks (ref 0) d=(nil) 0x238e3b0 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e5d0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2141670 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x23aee20 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2141580 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x27880c0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2141510 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x287bef0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1db5e40 - CN=Configuration,DC=samba2000,DC=example,DC=com contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1f0ff90 - struct kccsrv_partition contains 310 bytes in 10 blocks (ref 0) d=(nil) 0x29eb7f0 - struct ldb_dn contains 278 bytes in 9 blocks (ref 0) d=(nil) 0x2577980 - struct ldb_dn_component contains 175 bytes in 7 blocks (ref 0) d=(nil) 0x238e5b0 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf880 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1ec7520 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x265bd50 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x20b7d10 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x24cedf0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1e16fc0 - DC=samba2000,DC=example,DC=com contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1e0a850 - reference to: struct ldb_context - struct imessaging_context contains 971 bytes in 21 blocks (ref 0) d=(nil) 0x2077bb0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2f56ee0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2a1f770 - const char * contains 23 bytes in 2 blocks (ref 0) d=(nil) 0x20fcf10 - kccsrv contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x263c460 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2b7cd90 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x2b7cc40 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2b7ccf0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2396880 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2396720 - struct socket_address contains 100 bytes in 2 blocks (ref 0) d=(nil) 0x1e77e40 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.10 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x23965c0 - struct socket_context contains 108 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1e77da0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.10 contains 60 bytes in 1 blocks (ref 0) d=(nil) 0x2396670 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e77d10 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1e77c80 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.10 contains 65 bytes in 3 blocks (ref 0) d=(nil) 0x2077d50 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 5 bytes in 2 blocks (ref 0) d=(nil) 0x20c3df0 - 1.10 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf6a0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x1e77be0 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x26c1600 - struct task_server contains 1282 bytes in 29 blocks (ref 0) d=(nil) 0x226a8c0 - struct stream_socket contains 332 bytes in 8 blocks (ref 0) d=(nil) 0x29472e0 - reference to: struct ntp_signd_server - reference to: struct loadparm_context - struct socket_context contains 190 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2947380 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1f34300 - /home/rusty/samba/st/fl2000dc/ntp_signd_socket/socket contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x1f34260 - struct socket_address contains 94 bytes in 2 blocks (ref 0) d=(nil) 0x2947420 - /home/rusty/samba/st/fl2000dc/ntp_signd_socket/socket contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x1f34130 - struct ntp_signd_server contains 70 bytes in 3 blocks (ref 1) d=(nil) 0x2f64130 - /home/rusty/samba/st/fl2000dc/ntp_signd_socket/socket contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x2947240 - reference to: struct ldb_context - struct imessaging_context contains 816 bytes in 17 blocks (ref 0) d=(nil) 0x2d49b50 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2947190 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x1a1fe20 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1a1fed0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1a1fd80 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1a1fc20 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x1a3b150 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.9 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x1a3b1f0 - struct socket_context contains 107 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1a3b0b0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.9 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x1a3b2a0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a3b020 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d49c60 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.9 contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x2d49da0 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 4 bytes in 2 blocks (ref 0) d=(nil) 0x20cf810 - 1.9 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf790 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x2d49d00 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2098210 - struct task_server contains 9595 bytes in 159 blocks (ref 0) d=(nil) 0x238a600 - struct stream_socket contains 348 bytes in 8 blocks (ref 0) d=(nil) 0x22b8100 - reference to: struct wbsrv_listen_socket - reference to: struct loadparm_context - struct socket_context contains 198 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x22b81a0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x261d9c0 - /home/rusty/samba/st/fl2000dc/winbindd_privileged_socket/pipe contains 62 bytes in 1 blocks (ref 0) d=(nil) 0x261d910 - struct socket_address contains 102 bytes in 2 blocks (ref 0) d=(nil) 0x22b8240 - /home/rusty/samba/st/fl2000dc/winbindd_privileged_socket/pipe contains 62 bytes in 1 blocks (ref 0) d=(nil) 0x261d7d0 - struct stream_socket contains 326 bytes in 8 blocks (ref 0) d=(nil) 0x20c7930 - reference to: struct wbsrv_listen_socket - reference to: struct loadparm_context - struct socket_context contains 187 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x20c79d0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1f61210 - /home/rusty/samba/st/fl2000dc/winbindd_socket/pipe contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x1f61170 - struct socket_address contains 91 bytes in 2 blocks (ref 0) d=(nil) 0x20c7a70 - /home/rusty/samba/st/fl2000dc/winbindd_socket/pipe contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x20c7b10 - struct wbsrv_service contains 7818 bytes in 120 blocks (ref 0) d=(nil) 0x2224130 - struct wbsrv_listen_socket contains 86 bytes in 2 blocks (ref 1) d=(nil) 0x22b7fc0 - /home/rusty/samba/st/fl2000dc/winbindd_privileged_socket/pipe contains 62 bytes in 1 blocks (ref 0) d=(nil) 0x22b8050 - struct wbsrv_listen_socket contains 75 bytes in 2 blocks (ref 1) d=(nil) 0x227e7c0 - /home/rusty/samba/st/fl2000dc/winbindd_socket/pipe contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x227e850 - struct dom_sid contains 68 bytes in 1 blocks (ref 0) d=(nil) 0x227eb80 - struct dom_sid contains 68 bytes in 1 blocks (ref 0) d=(nil) 0x2787f80 - struct ldb_context contains 2587 bytes in 29 blocks (ref 0) d=0x2af275bb6e14 0x287bd50 - struct ldb_wrap contains 82 bytes in 3 blocks (ref 0) d=0x2af27642a067 0x20b7ac0 - reference to: struct auth_session_info - idmap.ldb contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d0fcc0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x227eaf0 - NULL Base DN invalid for a base search contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x227e730 - ldb_tdb backend contains 400 bytes in 13 blocks (ref 0) d=(nil) 0x2098460 - struct ltdb_private contains 360 bytes in 12 blocks (ref 0) d=(nil) 0x2d0fee0 - struct ltdb_cache contains 248 bytes in 10 blocks (ref 0) d=(nil) 0x2276530 - struct ldb_message contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22765c0 - struct ldb_message contains 200 bytes in 8 blocks (ref 0) d=(nil) 0x2276650 - struct ldb_message_element contains 93 bytes in 5 blocks (ref 0) d=(nil) 0x1d85700 - struct ldb_val contains 52 bytes in 3 blocks (ref 0) d=(nil) 0x1db5cb0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1db5dc0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1db5d40 - @IDXATTR contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1db5c30 - struct ldb_dn contains 83 bytes in 2 blocks (ref 0) d=(nil) 0x1d855c0 - @INDEXLIST contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1d85680 - struct ltdb_wrap contains 40 bytes in 1 blocks (ref 0) d=0x2af290dc12e8 0x20983c0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x287be60 - /home/rusty/samba/st/fl2000dc/private/idmap.ldb contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x263c710 - /home/rusty/samba/st/fl2000dc/private/idmap.ldb contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1ffd890 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2245aa0 - struct ldb_dn_extended_syntax contains 320 bytes in 1 blocks (ref 0) d=(nil) 0x22bcb80 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2098330 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x263c680 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2276730 - /home/rusty/samba/bin/modules/ldb contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x263c880 - struct ldb_schema_attribute contains 1320 bytes in 1 blocks (ref 0) d=(nil) 0x2fda300 - struct idmap_context contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x24cee70 - reference to: struct ldb_context - struct dom_sid contains 68 bytes in 1 blocks (ref 0) d=(nil) 0x1db5eb0 - struct ldb_dn contains 254 bytes in 5 blocks (ref 0) d=(nil) 0x26c1540 - struct ldb_dn_component contains 163 bytes in 3 blocks (ref 0) d=(nil) 0x1dc5f20 - Primary Domains contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1dc6020 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x20c3bd0 - cn=Primary Domains contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1a98c70 - struct ldb_context contains 4516 bytes in 76 blocks (ref 0) d=0x2af275bb6e14 0x26c1390 - struct ldb_message contains 947 bytes in 15 blocks (ref 0) d=(nil) 0x2e70440 - struct ldb_message_element contains 631 bytes in 7 blocks (ref 0) d=(nil) 0x2245810 - struct ldb_val contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x265bf50 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x24df480 - secureChannelType contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x265bdd0 - struct ldb_val contains 41 bytes in 2 blocks (ref 0) d=(nil) 0x2d0fe60 - ../lib/ldb/common/ldb_pack.c:264 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x22bcd30 - objectSid contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d0fde0 - struct ldb_dn contains 292 bytes in 7 blocks (ref 0) d=(nil) 0x265be50 - struct ldb_dn_component contains 182 bytes in 5 blocks (ref 0) d=(nil) 0x1ffd610 - Primary Domains contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1ffd810 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x263c810 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ffd790 - flatname contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1ffd710 - flatname=SAMBA2000,cn=Primary Domains contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x1dc60a0 - struct ldb_wrap contains 84 bytes in 2 blocks (ref 0) d=0x2af27642a067 0x1aa8af0 - secrets.ldb contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1f69010 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x263c3d0 - ldb_module: update_keytab contains 74 bytes in 3 blocks (ref 0) d=(nil) 0x26a9df0 - struct update_kt_private contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x20a03c0 - .name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1a08720 - ldb_module: secrets_tdb_sync contains 135 bytes in 4 blocks (ref 0) d=(nil) 0x1aa8cf0 - struct secrets_tdb_sync_private contains 66 bytes in 2 blocks (ref 0) d=(nil) 0x26c1310 - /home/rusty/samba/st/fl2000dc/private contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x20b01b0 - .name contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1ec7600 - ldb_module: objectguid contains 63 bytes in 2 blocks (ref 0) d=(nil) 0x2b63f00 - .name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x272e110 - ldb_module: rdn_name contains 61 bytes in 2 blocks (ref 0) d=(nil) 0x2224050 - .name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2844760 - ldb_module: samba_secrets contains 66 bytes in 2 blocks (ref 0) d=(nil) 0x218aee0 - .name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1a08880 - ldb_tdb backend contains 791 bytes in 29 blocks (ref 0) d=(nil) 0x2946fd0 - struct ltdb_private contains 751 bytes in 28 blocks (ref 0) d=(nil) 0x1e883f0 - struct ltdb_cache contains 639 bytes in 26 blocks (ref 0) d=(nil) 0x1f65110 - struct ldb_message contains 401 bytes in 16 blocks (ref 0) d=(nil) 0x272e390 - struct ldb_message_element contains 293 bytes in 13 blocks (ref 0) d=(nil) 0x24df230 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1f68ec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1aa8a70 - sAMAccountName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1f68e40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x20c3d70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1f68dc0 - realm contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x20cf720 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1f5ce40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x20c3cf0 - flatname contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1f5cdc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x2834f40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2834fc0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2bc06a0 - struct ldb_dn contains 84 bytes in 2 blocks (ref 0) d=(nil) 0x263c230 - @ATTRIBUTES contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2946db0 - struct ldb_message contains 214 bytes in 9 blocks (ref 0) d=(nil) 0x2844590 - struct ldb_message_element contains 107 bytes in 6 blocks (ref 0) d=(nil) 0x2301ec0 - struct ldb_val contains 66 bytes in 4 blocks (ref 0) d=(nil) 0x1f5cf90 - ../lib/ldb/common/ldb_pack.c:264 contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x2400fb0 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x20b0380 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2e8bca0 - @IDXATTR contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x24df400 - struct ldb_dn contains 83 bytes in 2 blocks (ref 0) d=(nil) 0x2cba820 - @INDEXLIST contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2cba6b0 - struct ltdb_wrap contains 40 bytes in 1 blocks (ref 0) d=0x2af290dc12e8 0x23aecd0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x227e5f0 - /home/rusty/samba/st/fl2000dc/private/secrets.ldb contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x1dc61d0 - /home/rusty/samba/st/fl2000dc/private/secrets.ldb contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x227ed00 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20a02a0 - struct ldb_dn_extended_syntax contains 320 bytes in 1 blocks (ref 0) d=(nil) 0x2787a80 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x28446d0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a089d0 - /home/rusty/samba/bin/modules/ldb contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x24df4f0 - struct ldb_schema_attribute contains 1425 bytes in 5 blocks (ref 0) d=(nil) 0x319bb30 - sAMAccountName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2946d30 - realm contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1c029b0 - flatname contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x20b0400 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x218ae00 - struct tevent_context contains 144 bytes in 2 blocks (ref 0) d=0x2af2770dc78a 0x22f1a60 - struct std_event_context contains 24 bytes in 1 blocks (ref 0) d=0x2af2770e1c09 0x20a0330 - struct imessaging_context contains 1039 bytes in 22 blocks (ref 0) d=(nil) 0x2cba5a0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x226a810 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x226a760 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x226a620 - const char * contains 31 bytes in 2 blocks (ref 0) d=(nil) 0x20b7b80 - winbind_server contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x20b7a40 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x227e680 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x20c3c40 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x218ad60 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2d0fd40 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2302020 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x2946f30 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.8 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x1a98bb0 - struct socket_context contains 107 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1dc6130 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.8 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x227ec50 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x263c340 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1c02a20 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.8 contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x1f68f50 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 4 bytes in 2 blocks (ref 0) d=(nil) 0x271ae20 - 1.8 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ec7590 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x22bca60 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x263c910 - struct task_server contains 8348 bytes in 112 blocks (ref 0) d=(nil) 0x268a1f0 - struct dreplsrv_service contains 6931 bytes in 84 blocks (ref 0) d=(nil) 0x1e88240 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x20b8060 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x2466dc0 - struct dreplsrv_partition contains 2799 bytes in 24 blocks (ref 0) d=(nil) 0x20a00f0 - struct drsuapi_DsReplicaCursor2 contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x22b8710 - DC=samba2000,DC=example,DC=com contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1f5d080 - struct ldb_dn contains 2536 bytes in 21 blocks (ref 0) d=(nil) 0x28447e0 - struct ldb_dn_ext_component contains 2105 bytes in 5 blocks (ref 0) d=(nil) 0x2787c30 - uint8_t contains 1024 bytes in 1 blocks (ref 0) d=(nil) 0x26345e0 - SID contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2787cd0 - uint8_t contains 1024 bytes in 1 blocks (ref 0) d=(nil) 0x256f850 - GUID contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x2d4a090 - struct ldb_dn_component contains 206 bytes in 13 blocks (ref 0) d=(nil) 0x2b63fe0 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1aa8c70 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1aa8c00 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2d4a010 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2d49fa0 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1a98b30 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x20a0230 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a98ac0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1a98a50 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2302180 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2787d40 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x20b0300 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2b640e0 - DC=samba2000,DC=example,DC=com contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x23020f0 - ;;DC=samba2000,DC=example,DC=com contains 122 bytes in 1 blocks (ref 0) d=(nil) 0x218ac70 - struct dreplsrv_partition contains 1931 bytes in 30 blocks (ref 0) d=(nil) 0x2834e00 - struct drsuapi_DsReplicaCursor2 contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x2e704d0 - CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x29263f0 - struct ldb_dn contains 1641 bytes in 27 blocks (ref 0) d=(nil) 0x2835090 - struct ldb_dn_ext_component contains 1053 bytes in 3 blocks (ref 0) d=(nil) 0x20cf690 - uint8_t contains 1024 bytes in 1 blocks (ref 0) d=(nil) 0x320bd60 - GUID contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x2844660 - struct ldb_dn_component contains 356 bytes in 21 blocks (ref 0) d=(nil) 0x272e190 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x20b0280 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2b63e80 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2b63e00 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x23aef20 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x23aeea0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2946ec0 - CONFIGURATION contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2946e30 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2223fd0 - SCHEMA contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x2223f50 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf970 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2d4a1c0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2224200 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1f68d30 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x20b0480 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x20cf880 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf710 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x20cf790 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x20c78b0 - Schema contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1a08950 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf800 - CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x2f64070 - ;CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 102 bytes in 1 blocks (ref 0) d=(nil) 0x20c3b00 - struct dreplsrv_partition contains 1833 bytes in 26 blocks (ref 0) d=(nil) 0x2f64250 - struct drsuapi_DsReplicaCursor2 contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x24ced60 - CN=Configuration,DC=samba2000,DC=example,DC=com contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x286bf10 - struct ldb_dn contains 1553 bytes in 23 blocks (ref 0) d=(nil) 0x287bf70 - struct ldb_dn_ext_component contains 1053 bytes in 3 blocks (ref 0) d=(nil) 0x272e300 - uint8_t contains 1024 bytes in 1 blocks (ref 0) d=(nil) 0x21c7890 - GUID contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1fe60f0 - struct ldb_dn_component contains 288 bytes in 17 blocks (ref 0) d=(nil) 0x26a9fe0 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1ecf8f0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2301fb0 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1a08800 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1e88380 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1a98cf0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x238a750 - CONFIGURATION contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x23aed80 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x23aec60 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x218ae70 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1f5cf20 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x287bcd0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1d85830 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x26a9ed0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x266baf0 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1f61060 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x20aff70 - CN=Configuration,DC=samba2000,DC=example,DC=com contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x2f641b0 - ;CN=Configuration,DC=samba2000,DC=example,DC=com contains 92 bytes in 1 blocks (ref 0) d=(nil) 0x22767c0 - reference to: struct ldb_context - struct imessaging_context contains 1353 bytes in 27 blocks (ref 0) d=(nil) 0x2de5240 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2d4a100 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1ec7460 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1c02ab0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2e70210 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2d4a230 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x263c4d0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x22f1cd0 - const char * contains 25 bytes in 2 blocks (ref 0) d=(nil) 0x1c02930 - dreplsrv contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x22bcb00 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1e88190 - struct dispatch_fn * contains 200 bytes in 4 blocks (ref 0) d=(nil) 0x20b7c50 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2787ee0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x238a6b0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x238a560 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1d0b8f0 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x1d0b6f0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.7 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x1d0b790 - struct socket_context contains 107 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1cdb4f0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.7 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x1d0b840 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cdb270 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1cdb460 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.7 contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x1cdb3b0 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 4 bytes in 2 blocks (ref 0) d=(nil) 0x2213f50 - 1.7 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x226a530 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x1cdb310 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2de5110 - struct task_server contains 6873 bytes in 137 blocks (ref 0) d=(nil) 0x291e210 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x2cb1e50 - reference to: struct kdc_socket - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x2a9a3e0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x28c33c0 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x2a9a340 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1c06310 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x1a9cb70 - reference to: struct kdc_socket - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x24f6ca0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x21bb9a0 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x2682df0 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19f90b0 - struct kdc_server contains 4948 bytes in 97 blocks (ref 0) d=(nil) 0x2543aa0 - struct kdc_socket contains 1011 bytes in 16 blocks (ref 0) d=(nil) 0x287baf0 - struct kdc_udp_socket contains 827 bytes in 13 blocks (ref 0) d=(nil) 0x2213d80 - struct tevent_req contains 464 bytes in 6 blocks (ref 0) d=(nil) 0x2c959c0 - struct tdgram_recvfrom_state contains 272 bytes in 4 blocks (ref 0) d=0x2af27c33ffee 0x2893520 - struct tevent_req contains 232 bytes in 3 blocks (ref 0) d=(nil) 0x28935c0 - struct tdgram_bsd_recvfrom_state contains 40 bytes in 1 blocks (ref 0) d=0x2af27c3432f9 0x2689fd0 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x28936a0 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x2893460 - struct tevent_queue contains 147 bytes in 3 blocks (ref 0) d=0x2af2770de48c 0x2c957e0 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x2c95900 - kdc_udp_send_queue contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2c95880 - struct tdgram_context contains 192 bytes in 3 blocks (ref 0) d=0x2af27c33fe7e 0x1c3a790 - struct tdgram_bsd contains 152 bytes in 2 blocks (ref 0) d=0x2af27c343df5 0x2213e90 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x268a070 - struct tsocket_address contains 160 bytes in 2 blocks (ref 0) d=(nil) 0x1c3a700 - struct tsocket_address_bsd contains 136 bytes in 1 blocks (ref 0) d=(nil) 0x2213c80 - struct kdc_socket contains 1011 bytes in 16 blocks (ref 0) d=(nil) 0x2400f20 - struct kdc_udp_socket contains 827 bytes in 13 blocks (ref 0) d=(nil) 0x2ab9e50 - struct tevent_req contains 464 bytes in 6 blocks (ref 0) d=(nil) 0x21d3880 - struct tdgram_recvfrom_state contains 272 bytes in 4 blocks (ref 0) d=0x2af27c33ffee 0x21f6930 - struct tevent_req contains 232 bytes in 3 blocks (ref 0) d=(nil) 0x30a0210 - struct tdgram_bsd_recvfrom_state contains 40 bytes in 1 blocks (ref 0) d=0x2af27c3432f9 0x2098290 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x2af9f80 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x3295100 - struct tevent_queue contains 147 bytes in 3 blocks (ref 0) d=0x2af2770de48c 0x287ba50 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x1d37c50 - kdc_udp_send_queue contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1ff5cd0 - struct tdgram_context contains 192 bytes in 3 blocks (ref 0) d=0x2af27c33fe7e 0x287b900 - struct tdgram_bsd contains 152 bytes in 2 blocks (ref 0) d=0x2af27c343df5 0x287b9a0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1c3a630 - struct tsocket_address contains 160 bytes in 2 blocks (ref 0) d=(nil) 0x2ab9cc0 - struct tsocket_address_bsd contains 136 bytes in 1 blocks (ref 0) d=(nil) 0x2ab9d50 - struct kdc_socket contains 1011 bytes in 16 blocks (ref 1) d=(nil) 0x222c560 - struct kdc_udp_socket contains 827 bytes in 13 blocks (ref 0) d=(nil) 0x1ed75c0 - struct tevent_req contains 464 bytes in 6 blocks (ref 0) d=(nil) 0x1ff5b30 - struct tdgram_recvfrom_state contains 272 bytes in 4 blocks (ref 0) d=0x2af27c33ffee 0x237e4c0 - struct tevent_req contains 232 bytes in 3 blocks (ref 0) d=(nil) 0x237e560 - struct tdgram_bsd_recvfrom_state contains 40 bytes in 1 blocks (ref 0) d=0x2af27c3432f9 0x2400db0 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x237e640 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x1ff5c10 - struct tevent_queue contains 147 bytes in 3 blocks (ref 0) d=0x2af2770de48c 0x24208d0 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x24209f0 - kdc_udp_send_queue contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2420970 - struct tdgram_context contains 192 bytes in 3 blocks (ref 0) d=0x2af27c33fe7e 0x1ed7650 - struct tdgram_bsd contains 152 bytes in 2 blocks (ref 0) d=0x2af27c343df5 0x1ed76f0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2400e50 - struct tsocket_address contains 160 bytes in 2 blocks (ref 0) d=(nil) 0x222c5f0 - struct tsocket_address_bsd contains 136 bytes in 1 blocks (ref 0) d=(nil) 0x2cb1d50 - struct kdc_socket contains 1011 bytes in 16 blocks (ref 1) d=(nil) 0x24207b0 - struct kdc_udp_socket contains 827 bytes in 13 blocks (ref 0) d=(nil) 0x2d72ed0 - struct tevent_req contains 464 bytes in 6 blocks (ref 0) d=(nil) 0x1e06ee0 - struct tdgram_recvfrom_state contains 272 bytes in 4 blocks (ref 0) d=0x2af27c33ffee 0x2682f70 - struct tevent_req contains 232 bytes in 3 blocks (ref 0) d=(nil) 0x2683010 - struct tdgram_bsd_recvfrom_state contains 40 bytes in 1 blocks (ref 0) d=0x2af27c3432f9 0x1a9c9e0 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x1a9c920 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x1e06fc0 - struct tevent_queue contains 147 bytes in 3 blocks (ref 0) d=0x2af2770de48c 0x1fe6260 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x1fe6300 - kdc_udp_send_queue contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2cb1fd0 - struct tdgram_context contains 192 bytes in 3 blocks (ref 0) d=0x2af27c33fe7e 0x1da5ab0 - struct tdgram_bsd contains 152 bytes in 2 blocks (ref 0) d=0x2af27c343df5 0x1da5b50 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x222c490 - struct tsocket_address contains 160 bytes in 2 blocks (ref 0) d=(nil) 0x1bf2bf0 - struct tsocket_address_bsd contains 136 bytes in 1 blocks (ref 0) d=(nil) 0x2d73020 - struct samba_kdc_base_context contains 824 bytes in 28 blocks (ref 0) d=(nil) 0x1fe61e0 - HDB contains 808 bytes in 27 blocks (ref 0) d=(nil) 0x1fc2650 - struct samba_kdc_db_context contains 584 bytes in 26 blocks (ref 0) d=(nil) 0x1c060d0 - struct ldb_dn contains 512 bytes in 24 blocks (ref 0) d=(nil) 0x271ed10 - char contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x212a980 - struct ldb_dn_component contains 340 bytes in 21 blocks (ref 0) d=(nil) 0x1dce430 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1a10500 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x266b8b0 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x28642b0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1a10490 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2122850 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2864240 - USERS contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x24df320 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x21cb700 - KRBTGT contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x2c15540 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x30b1e40 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2883a50 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2a3c380 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x29262a0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x210cb90 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x309ffa0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x29d73e0 - Users contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x2577c80 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x3456750 - krbtgt contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x29cf0e0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x30a4a90 - CN=krbtgt,CN=Users,DC=samba2000,DC=example,DC=com contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x28c32a0 - reference to: struct ldb_context - struct HDB * contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x21bb920 - struct smb_krb5_context contains 24 bytes in 2 blocks (ref 0) d=0x2af27a4dcdf0 0x2cb1f40 - reference to: struct tevent_context - reference to: struct ldb_context - struct interface contains 490 bytes in 5 blocks (ref 0) d=(nil) 0x294f6a0 - 255.0.0.0 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2543a20 - 127.255.255.255 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x25439a0 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2543920 - 127.0.0.25/8 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1ba2480 - struct imessaging_context contains 907 bytes in 20 blocks (ref 0) d=(nil) 0x27b82f0 - const char * contains 27 bytes in 2 blocks (ref 0) d=(nil) 0x1e06de0 - kdc_server contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2de51c0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x268a140 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1ba23d0 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x2333650 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1ba2330 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1ba2290 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2333580 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x291e2c0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.6 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x2e8bbf0 - struct socket_context contains 107 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x27b84a0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.6 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x23334d0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e8bb60 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x20afeb0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.6 contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x2e8bab0 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 4 bytes in 2 blocks (ref 0) d=(nil) 0x1ba9640 - 1.6 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2756a50 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x27b8400 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x22fa0c0 - struct task_server contains 3209 bytes in 55 blocks (ref 0) d=(nil) 0x2543ba0 - struct cldapd_server contains 1810 bytes in 30 blocks (ref 0) d=(nil) 0x2605a60 - struct cldap_socket contains 897 bytes in 14 blocks (ref 0) d=0x2af27ec689f0 0x25beec0 - struct tevent_req contains 464 bytes in 6 blocks (ref 0) d=(nil) 0x280e070 - struct tdgram_recvfrom_state contains 272 bytes in 4 blocks (ref 0) d=0x2af27c33ffee 0x21b3570 - struct tevent_req contains 232 bytes in 3 blocks (ref 0) d=(nil) 0x2100e20 - struct tdgram_bsd_recvfrom_state contains 40 bytes in 1 blocks (ref 0) d=0x2af27c3432f9 0x21b3610 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x2100f00 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x21b34b0 - struct tevent_queue contains 145 bytes in 3 blocks (ref 0) d=0x2af2770de48c 0x20afd50 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x20afdf0 - cldap_send_queue contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x21b3390 - struct tdgram_context contains 192 bytes in 3 blocks (ref 0) d=0x2af27c33fe7e 0x25bf010 - struct tdgram_bsd contains 152 bytes in 2 blocks (ref 0) d=0x2af27c343df5 0x2372240 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x291e140 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25bef80 - struct cldap_socket contains 897 bytes in 14 blocks (ref 0) d=0x2af27ec689f0 0x2169630 - struct tevent_req contains 464 bytes in 6 blocks (ref 0) d=(nil) 0x25e7020 - struct tdgram_recvfrom_state contains 272 bytes in 4 blocks (ref 0) d=0x2af27c33ffee 0x25bf0e0 - struct tevent_req contains 232 bytes in 3 blocks (ref 0) d=(nil) 0x2372160 - struct tdgram_bsd_recvfrom_state contains 40 bytes in 1 blocks (ref 0) d=0x2af27c3432f9 0x22fa020 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x22f9f60 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x257f660 - struct tevent_queue contains 145 bytes in 3 blocks (ref 0) d=0x2af2770de48c 0x22e9f40 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x2276350 - cldap_send_queue contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x24eec90 - struct tdgram_context contains 192 bytes in 3 blocks (ref 0) d=0x2af27c33fe7e 0x257f830 - struct tdgram_bsd contains 152 bytes in 2 blocks (ref 0) d=0x2af27c343df5 0x1ba94e0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x280dfa0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22c4bb0 - reference to: struct ldb_context - struct interface contains 490 bytes in 5 blocks (ref 0) d=(nil) 0x2135f10 - 255.0.0.0 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x24eedb0 - 127.255.255.255 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2169510 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2766d40 - 127.0.0.25/8 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2766c20 - struct imessaging_context contains 845 bytes in 19 blocks (ref 0) d=(nil) 0x22c4cf0 - const char * contains 29 bytes in 2 blocks (ref 0) d=(nil) 0x23723c0 - cldap_server contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x25bf180 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1ba9590 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x2766dc0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x23e88f0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x24eee30 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1ba21c0 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x294f600 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.5 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x2b53760 - struct socket_context contains 107 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x21b3410 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.5 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x2605b70 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2605ae0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2b53650 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.5 contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x257f780 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 4 bytes in 2 blocks (ref 0) d=(nil) 0x1dbdfe0 - 1.5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x24eb180 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x1da5a10 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x22e9ec0 - struct task_server contains 3080 bytes in 74 blocks (ref 0) d=(nil) 0x2df61c0 - struct stream_socket contains 332 bytes in 8 blocks (ref 0) d=(nil) 0x2276180 - reference to: struct ldapsrv_service - reference to: struct loadparm_context - struct socket_context contains 190 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x22762b0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x22f9e00 - /home/rusty/samba/st/fl2000dc/private/ldap_priv/ldapi contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x2333430 - struct socket_address contains 94 bytes in 2 blocks (ref 0) d=(nil) 0x22c4b10 - /home/rusty/samba/st/fl2000dc/private/ldap_priv/ldapi contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x1ba9440 - struct stream_socket contains 312 bytes in 8 blocks (ref 0) d=(nil) 0x2e8bd10 - reference to: struct ldapsrv_service - reference to: struct loadparm_context - struct socket_context contains 180 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x291e0a0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x23722f0 - /home/rusty/samba/st/fl2000dc/private/ldapi contains 44 bytes in 1 blocks (ref 0) d=(nil) 0x257f8e0 - struct socket_address contains 84 bytes in 2 blocks (ref 0) d=(nil) 0x2169590 - /home/rusty/samba/st/fl2000dc/private/ldapi contains 44 bytes in 1 blocks (ref 0) d=(nil) 0x25e6f80 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x26059c0 - reference to: struct ldapsrv_service - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x24eed10 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x27b8220 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x1fc27b0 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x23e8870 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x23e87d0 - reference to: struct ldapsrv_service - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x2b535b0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x280ded0 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x2766ca0 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2887a20 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x1967960 - reference to: struct ldapsrv_service - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1a1b460 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2887aa0 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x1a1b3c0 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x26dfb50 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x2bb95d0 - reference to: struct ldapsrv_service - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1a1b5e0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2386650 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x21ab780 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x21ab5c0 - struct ldapsrv_service contains 628 bytes in 12 blocks (ref 6) d=(nil) 0x19ed570 - struct tevent_queue contains 147 bytes in 3 blocks (ref 0) d=0x2af2770de48c 0x1a1b540 - struct tevent_immediate contains 80 bytes in 1 blocks (ref 0) d=(nil) 0x22e9e00 - ldapsrv_call_queue contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x22e9d80 - struct tstream_tls_params contains 226 bytes in 2 blocks (ref 0) d=0x2af27a4d8b44 0x26d8010 - ../lib/util/util_file.c:180 contains 202 bytes in 1 blocks (ref 0) d=(nil) 0x2386510 - /home/rusty/samba/st/fl2000dc/private/tls/key.pem contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x2dbfe40 - /home/rusty/samba/st/fl2000dc/private/tls/cert.pem contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x2dbfda0 - /home/rusty/samba/st/fl2000dc/private/tls/ca.pem contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x2d83cd0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1ebff40 - /home/rusty/samba/st/fl2000dc/private/tls/dhparms.pem contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x2d83c30 - DC5.samba2000.example.com contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x2854400 - struct imessaging_context contains 816 bytes in 17 blocks (ref 0) d=(nil) 0x239a160 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2c368d0 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x2bad700 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2c36830 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2bad660 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x22edec0 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x24d73b0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.4 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x24d7450 - struct socket_context contains 107 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1d95b90 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.4 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x22ede10 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x324d460 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c157d0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.4 contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x2b37890 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 4 bytes in 2 blocks (ref 0) d=(nil) 0x235dfe0 - 1.4 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x252b970 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x2b377f0 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2088550 - struct task_server contains 4717 bytes in 65 blocks (ref 0) d=(nil) 0x29064c0 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x2bb9510 - reference to: struct wreplsrv_service - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x29e6dc0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x31fab00 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x19ed600 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2001780 - struct wreplsrv_service contains 3576 bytes in 38 blocks (ref 1) d=(nil) 0x2d7b550 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x1b00b30 - struct wreplsrv_owner contains 67 bytes in 2 blocks (ref 0) d=(nil) 0x1e80270 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x27569d0 - struct wreplsrv_partner contains 206 bytes in 3 blocks (ref 0) d=(nil) 0x2be4fc0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2001800 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x212e820 - struct ldb_context contains 2428 bytes in 21 blocks (ref 0) d=0x2af275bb6e14 0x24eb070 - struct ldb_wrap contains 126 bytes in 3 blocks (ref 0) d=0x2af27642a067 0x2088490 - reference to: struct auth_session_info - /home/rusty/samba/st/fl2000dc/private/wins_config.ldb contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x1f07fe0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2001880 - ldb_tdb backend contains 224 bytes in 6 blocks (ref 0) d=(nil) 0x1c8b660 - struct ltdb_private contains 184 bytes in 5 blocks (ref 0) d=(nil) 0x2cae5c0 - struct ltdb_cache contains 72 bytes in 3 blocks (ref 0) d=(nil) 0x1c8b700 - struct ldb_message contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b89df0 - struct ldb_message contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b89e80 - struct ltdb_wrap contains 40 bytes in 1 blocks (ref 0) d=0x2af290dc12e8 0x2cae680 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a3f7b0 - /home/rusty/samba/st/fl2000dc/private/wins_config.ldb contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x2a3f710 - /home/rusty/samba/st/fl2000dc/private/wins_config.ldb contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x2ad2200 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1be2a00 - struct ldb_dn_extended_syntax contains 320 bytes in 1 blocks (ref 0) d=(nil) 0x34397b0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2d97a70 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2040700 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2ad2300 - /home/rusty/samba/bin/modules/ldb contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1be2af0 - struct ldb_schema_attribute contains 1320 bytes in 1 blocks (ref 0) d=(nil) 0x3076af0 - /home/rusty/samba/st/fl2000dc/private/wins_config.ldb contains 54 bytes in 1 blocks (ref 0) d=(nil) 0x2756930 - struct winsdb_handle contains 91 bytes in 4 blocks (ref 0) d=(nil) 0x1f89cc0 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1b54bf0 - reference to: struct ldb_context - /home/rusty/samba/st/fl2000dc/statedir/wins.ldb contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1b54b50 - struct interface contains 490 bytes in 5 blocks (ref 0) d=(nil) 0x2327210 - 255.0.0.0 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1b74eb0 - 127.255.255.255 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1bbafc0 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1d5ce30 - 127.0.0.25/8 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2ac2890 - struct imessaging_context contains 845 bytes in 19 blocks (ref 0) d=(nil) 0x31613e0 - const char * contains 29 bytes in 2 blocks (ref 0) d=(nil) 0x2c15860 - wrepl_server contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x289f9d0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x2bfd1c0 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x1acd4e0 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x2bfd120 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1acd440 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1ae8cb0 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x2ee7800 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.3 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x2ee78a0 - struct socket_context contains 107 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x1e63e00 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.3 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x1ae8c00 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b2cc10 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x290a6d0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.3 contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x2d3a110 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 4 bytes in 2 blocks (ref 0) d=(nil) 0x1b5cbc0 - 1.3 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b50a40 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x1b00bf0 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2c2e2c0 - struct task_server contains 14180 bytes in 191 blocks (ref 0) d=(nil) 0x2bf53e0 - struct interface contains 490 bytes in 5 blocks (ref 0) d=(nil) 0x2667ab0 - 255.0.0.0 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2777820 - 127.255.255.255 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x24bec90 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x202c740 - 127.0.0.25/8 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1f30540 - struct nbtd_server contains 12017 bytes in 156 blocks (ref 0) d=(nil) 0x1b04b80 - struct wins_server contains 3119 bytes in 33 blocks (ref 0) d=(nil) 0x1e2a900 - struct winsdb_handle contains 3095 bytes in 32 blocks (ref 0) d=(nil) 0x27778a0 - struct ldb_context contains 3004 bytes in 29 blocks (ref 1) d=0x2af275bb6e14 0x1a56540 - struct ldb_wrap contains 120 bytes in 2 blocks (ref 0) d=0x2af27642a067 0x269a810 - /home/rusty/samba/st/fl2000dc/statedir/wins.ldb contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x2040790 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1dadc10 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x269a780 - ldb_module: wins_ldb contains 594 bytes in 9 blocks (ref 0) d=(nil) 0x1d2cb00 - struct winsdb_handle contains 43 bytes in 2 blocks (ref 0) d=(nil) 0x1d60f50 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1d60fe0 - struct interface contains 490 bytes in 5 blocks (ref 0) d=(nil) 0x1e539b0 - 255.0.0.0 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2a93410 - 127.255.255.255 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1d2cbb0 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1e0f2a0 - 127.0.0.25/8 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x29b1200 - .name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1e0f320 - ldb_tdb backend contains 224 bytes in 6 blocks (ref 0) d=(nil) 0x1b2cca0 - struct ltdb_private contains 184 bytes in 5 blocks (ref 0) d=(nil) 0x2987a70 - struct ltdb_cache contains 72 bytes in 3 blocks (ref 0) d=(nil) 0x2513d60 - struct ldb_message contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2513df0 - struct ldb_message contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a93380 - struct ltdb_wrap contains 40 bytes in 1 blocks (ref 0) d=0x2af290dc12e8 0x1a88640 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19d62c0 - /home/rusty/samba/st/fl2000dc/statedir/wins.ldb contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1e5fb20 - /home/rusty/samba/st/fl2000dc/statedir/wins.ldb contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1f27f00 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1ab53c0 - struct ldb_dn_extended_syntax contains 320 bytes in 1 blocks (ref 0) d=(nil) 0x207f800 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19d6230 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29b1280 - /home/rusty/samba/bin/modules/ldb contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x28fdd90 - struct ldb_schema_attribute contains 1320 bytes in 1 blocks (ref 0) d=(nil) 0x312da60 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1a885c0 - /home/rusty/samba/st/fl2000dc/statedir/wins.ldb contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x28fde20 - reference to: struct ldb_context - struct nbtd_interface contains 936 bytes in 19 blocks (ref 0) d=(nil) 0x24bebd0 - struct nbtd_iface_name contains 90 bytes in 2 blocks (ref 0) d=(nil) 0x2c2e1f0 - * contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1e67db0 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x2d56850 - __SAMBA__ contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1ad51b0 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x19ce5e0 - __SAMBA__ contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2cebe00 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x196d4e0 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2c51c10 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x2020a20 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2b88230 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x2cc7780 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d8bd60 - struct nbtd_iface_name contains 92 bytes in 2 blocks (ref 0) d=(nil) 0x2ad6040 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2a50490 - struct nbtd_iface_name contains 92 bytes in 2 blocks (ref 0) d=(nil) 0x2a60050 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x289b840 - struct nbtd_iface_name contains 92 bytes in 2 blocks (ref 0) d=(nil) 0x27eaf50 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e0f3a0 - struct nbtd_interface contains 6265 bytes in 67 blocks (ref 0) d=(nil) 0x1cbf070 - struct nbtd_iface_name contains 90 bytes in 2 blocks (ref 0) d=(nil) 0x29063f0 - * contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x2c46b00 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x1f79840 - __SAMBA__ contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19ce6b0 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x2405090 - __SAMBA__ contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x196d5b0 - struct nbtd_iface_name contains 178 bytes in 3 blocks (ref 0) d=(nil) 0x297aec0 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x2b94f00 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2020af0 - struct nbtd_iface_name contains 178 bytes in 3 blocks (ref 0) d=(nil) 0x2b575c0 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x2cc76c0 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d8bde0 - struct nbtd_iface_name contains 178 bytes in 3 blocks (ref 0) d=(nil) 0x296fae0 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x2a1fa20 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1b4cd30 - struct nbtd_iface_name contains 172 bytes in 3 blocks (ref 0) d=(nil) 0x2aa2c40 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x20fd110 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2a60120 - struct nbtd_iface_name contains 172 bytes in 3 blocks (ref 0) d=(nil) 0x2811ed0 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x2a54250 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x27eb020 - struct nbtd_iface_name contains 172 bytes in 3 blocks (ref 0) d=(nil) 0x2ab2980 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x1ef2910 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1cce9b0 - struct nbt_dgram_socket contains 398 bytes in 9 blocks (ref 0) d=(nil) 0x2028890 - struct dgram_mailslot_handler contains 65 bytes in 2 blocks (ref 0) d=0x2af278253b94 0x244b8d0 - \MAILSLOT\BROWSE contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x244b970 - struct dgram_mailslot_handler contains 70 bytes in 2 blocks (ref 0) d=0x2af278253b94 0x2266670 - \MAILSLOT\NET\NTLOGON contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1c17440 - struct dgram_mailslot_handler contains 71 bytes in 2 blocks (ref 0) d=0x2af278253b94 0x1e70190 - \MAILSLOT\NET\NETLOGON contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x29f2e40 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x202c670 - struct socket_context contains 48 bytes in 1 blocks (ref 0) d=0x2af27c33abf0 0x2028940 - struct nbt_dgram_socket contains 398 bytes in 9 blocks (ref 0) d=(nil) 0x1e700e0 - struct dgram_mailslot_handler contains 65 bytes in 2 blocks (ref 0) d=0x2af278253b94 0x244f650 - \MAILSLOT\BROWSE contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x244f6f0 - struct dgram_mailslot_handler contains 70 bytes in 2 blocks (ref 0) d=0x2af278253b94 0x22665d0 - \MAILSLOT\NET\NTLOGON contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x206c2e0 - struct dgram_mailslot_handler contains 71 bytes in 2 blocks (ref 0) d=0x2af278253b94 0x206c240 - \MAILSLOT\NET\NETLOGON contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1afbfd0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1f30470 - struct socket_context contains 48 bytes in 1 blocks (ref 0) d=0x2af27c33abf0 0x1d8d840 - struct nbt_name_socket contains 3776 bytes in 17 blocks (ref 0) d=(nil) 0x1d8d780 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1e2a830 - struct idr_context contains 3560 bytes in 14 blocks (ref 0) d=(nil) 0x1be6b80 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x2815c20 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x2ccfb60 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x27c0400 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x27426b0 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x26ec160 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x2696760 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x2686ef0 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x252f6d0 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x2527b20 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x250fd00 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x24bad60 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x24b6f20 - struct idr_layer contains 272 bytes in 1 blocks (ref 0) d=(nil) 0x247ae50 - struct socket_context contains 48 bytes in 1 blocks (ref 0) d=0x2af27c33abf0 0x1cefbb0 - struct nbt_name_socket contains 240 bytes in 4 blocks (ref 0) d=(nil) 0x1cefaf0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1d06ed0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b04c50 - struct socket_context contains 48 bytes in 1 blocks (ref 0) d=0x2af27c33abf0 0x1cbf130 - 255.0.0.0 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x217a690 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1966000 - 127.255.255.255 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x20ea0b0 - struct nbtd_interface contains 1609 bytes in 35 blocks (ref 0) d=(nil) 0x1b14c40 - struct nbtd_iface_name contains 90 bytes in 2 blocks (ref 0) d=(nil) 0x2d3a040 - * contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1eb0420 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x1ad50e0 - __SAMBA__ contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1f79910 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x2cebd30 - __SAMBA__ contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2405160 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x2c51b40 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x297af90 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x2c9db00 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1b4ccb0 - struct nbtd_iface_name contains 98 bytes in 2 blocks (ref 0) d=(nil) 0x296fbb0 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2d8be60 - struct nbtd_iface_name contains 92 bytes in 2 blocks (ref 0) d=(nil) 0x2bbd220 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2aa2d10 - struct nbtd_iface_name contains 92 bytes in 2 blocks (ref 0) d=(nil) 0x2a503c0 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2811fa0 - struct nbtd_iface_name contains 92 bytes in 2 blocks (ref 0) d=(nil) 0x27eedc0 - DC5 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1dadcd0 - struct nbt_dgram_socket contains 398 bytes in 9 blocks (ref 0) d=(nil) 0x1c06cb0 - struct dgram_mailslot_handler contains 65 bytes in 2 blocks (ref 0) d=0x2af278253b94 0x1c1fb30 - \MAILSLOT\BROWSE contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x254fec0 - struct dgram_mailslot_handler contains 70 bytes in 2 blocks (ref 0) d=0x2af278253b94 0x1c1fa90 - \MAILSLOT\NET\NTLOGON contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2401200 - struct dgram_mailslot_handler contains 71 bytes in 2 blocks (ref 0) d=0x2af278253b94 0x1c06d60 - \MAILSLOT\NET\NETLOGON contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x23e8b10 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1c17370 - struct socket_context contains 48 bytes in 1 blocks (ref 0) d=0x2af27c33abf0 0x1b39330 - struct nbt_name_socket contains 240 bytes in 4 blocks (ref 0) d=(nil) 0x1b39270 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1be6ab0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2e52ff0 - struct socket_context contains 48 bytes in 1 blocks (ref 0) d=0x2af27c33abf0 0x1b14d00 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x21d3d20 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x21c3b00 - 255.255.255.255 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x21dbaa0 - struct interface contains 490 bytes in 5 blocks (ref 0) d=(nil) 0x2634b30 - 255.0.0.0 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x21a2e50 - 127.255.255.255 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1aecc70 - 127.0.0.25 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1da5e70 - 127.0.0.25/8 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1d7d6c0 - struct imessaging_context contains 1119 bytes in 24 blocks (ref 0) d=(nil) 0x2bf9390 - const char * contains 47 bytes in 3 blocks (ref 0) d=(nil) 0x1e5fbe0 - nbt_server contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2d56920 - wins_server contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1f27fa0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1eb8250 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1eb81a0 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1ccea30 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1ab5450 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x26c4a00 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x2073650 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x26c4960 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x20735b0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2e52f20 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x2e02710 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.2 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x2e37210 - struct socket_context contains 107 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x2e02670 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.2 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x2e372c0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2dbbc30 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2cefef0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.2 contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x2dbbb80 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 4 bytes in 2 blocks (ref 0) d=(nil) 0x2967f30 - 1.2 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x29577e0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x2ceff90 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x275e1e0 - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x19f0bf0 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 248 bytes in 9 blocks (ref 1) d=(nil) 0x1c96ef0 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x21f7900 - reference to: struct dcesrv_socket_context - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x219a8d0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1965d00 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x219a830 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x20106e0 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 334 bytes in 10 blocks (ref 1) d=(nil) 0x2d5a8e0 - struct stream_socket contains 318 bytes in 8 blocks (ref 0) d=(nil) 0x217a5f0 - reference to: struct dcesrv_socket_context - reference to: struct loadparm_context - struct socket_context contains 183 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x218b030 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x20985e0 - /home/rusty/samba/st/fl2000dc/ncalrpc/EPMAPPER contains 47 bytes in 1 blocks (ref 0) d=(nil) 0x1ecfa60 - struct socket_address contains 87 bytes in 2 blocks (ref 0) d=(nil) 0x22c0e30 - /home/rusty/samba/st/fl2000dc/ncalrpc/EPMAPPER contains 47 bytes in 1 blocks (ref 0) d=(nil) 0x2375b40 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x1d48e60 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 248 bytes in 9 blocks (ref 1) d=(nil) 0x3426d30 - struct stream_socket contains 232 bytes in 7 blocks (ref 0) d=(nil) 0x21c3a60 - reference to: struct dcesrv_socket_context - reference to: struct loadparm_context - struct socket_context contains 136 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x21dba00 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x222c850 - struct socket_address contains 48 bytes in 2 blocks (ref 0) d=(nil) 0x21d3c80 - 0.0.0.0 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2d52770 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 332 bytes in 10 blocks (ref 1) d=(nil) 0x1d6cc30 - struct stream_socket contains 316 bytes in 8 blocks (ref 0) d=(nil) 0x275e140 - reference to: struct dcesrv_socket_context - reference to: struct loadparm_context - struct socket_context contains 182 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x29f2da0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1e90af0 - /home/rusty/samba/st/fl2000dc/ncalrpc/DEFAULT contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x1da5dd0 - struct socket_address contains 86 bytes in 2 blocks (ref 0) d=(nil) 0x19b6f40 - /home/rusty/samba/st/fl2000dc/ncalrpc/DEFAULT contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x1d7d620 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x2080170 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x22d9680 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x2553cd0 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x2793cb0 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x29a4750 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x2a971b0 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x26d4f10 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x24e3910 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x253fd50 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x2707610 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x27b42e0 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x2c91680 - reference to: struct dcesrv_context - struct dcesrv_socket_context contains 16 bytes in 2 blocks (ref 0) d=(nil) 0x2c05000 - reference to: struct dcesrv_context - struct dcesrv_context contains 18538 bytes in 413 blocks (ref 19) d=(nil) 0x215d780 - struct named_pipe_socket contains 421 bytes in 11 blocks (ref 1) d=(nil) 0x2e5c660 - struct stream_socket contains 324 bytes in 8 blocks (ref 0) d=(nil) 0x29e3980 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 186 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2e5c6f0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2a63de0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/epmapper contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x2a44270 - struct socket_address contains 90 bytes in 2 blocks (ref 0) d=(nil) 0x2a0f5e0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/epmapper contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x2a0f680 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/epmapper contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x29e38e0 - \pipe\epmapper contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19fc5d0 - /home/rusty/samba/st/fl2000dc/ncalrpc/EPMAPPER contains 47 bytes in 1 blocks (ref 0) d=(nil) 0x20ea010 - struct named_pipe_socket contains 413 bytes in 11 blocks (ref 1) d=(nil) 0x22874f0 - struct stream_socket contains 320 bytes in 8 blocks (ref 0) d=(nil) 0x236e430 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 184 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x23e8a70 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x24cabc0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/wkssvc contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1965f60 - struct socket_address contains 88 bytes in 2 blocks (ref 0) d=(nil) 0x2401160 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/wkssvc contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x254fe20 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/wkssvc contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x231b0a0 - \pipe\wkssvc contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1bde950 - 1024 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x2d3e1e0 - /home/rusty/samba/st/fl2000dc/ncalrpc/DEFAULT contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x2181c90 - DEFAULT contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1e98bd0 - struct named_pipe_socket contains 417 bytes in 11 blocks (ref 1) d=(nil) 0x1b6cc00 - struct stream_socket contains 322 bytes in 8 blocks (ref 0) d=(nil) 0x19fc530 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 185 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x1ab0640 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x20a7de0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/rpcecho contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x2010640 - struct socket_address contains 89 bytes in 2 blocks (ref 0) d=(nil) 0x1afbf30 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/rpcecho contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x1c96e50 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/rpcecho contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x19f0b50 - \pipe\rpcecho contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2060630 - struct named_pipe_socket contains 405 bytes in 11 blocks (ref 1) d=(nil) 0x2d526e0 - struct stream_socket contains 316 bytes in 8 blocks (ref 0) d=(nil) 0x3224d00 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 182 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2cf8040 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1bc6a90 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/samr contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x2030470 - struct socket_address contains 86 bytes in 2 blocks (ref 0) d=(nil) 0x2c890c0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/samr contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x295fe70 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/samr contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x2dd9010 - \pipe\samr contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x20daf10 - struct named_pipe_socket contains 421 bytes in 11 blocks (ref 1) d=(nil) 0x1bde8c0 - struct stream_socket contains 324 bytes in 8 blocks (ref 0) d=(nil) 0x1b509a0 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 186 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x1b45090 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2005260 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/netlogon contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x1fe5f20 - struct socket_address contains 90 bytes in 2 blocks (ref 0) d=(nil) 0x1b41040 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/netlogon contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x1b30ec0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/netlogon contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x1b5cb20 - \pipe\netlogon contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x25379a0 - struct named_pipe_socket contains 413 bytes in 11 blocks (ref 1) d=(nil) 0x20605a0 - struct stream_socket contains 320 bytes in 8 blocks (ref 0) d=(nil) 0x1fc6560 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 184 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x1fb5d20 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x1de6490 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/lsarpc contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1e67d10 - struct socket_address contains 88 bytes in 2 blocks (ref 0) d=(nil) 0x1ebfea0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/lsarpc contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1eb0380 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/lsarpc contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1fda6d0 - \pipe\lsarpc contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x25a3ae0 - struct named_pipe_socket contains 409 bytes in 11 blocks (ref 1) d=(nil) 0x2537910 - struct stream_socket contains 318 bytes in 8 blocks (ref 0) d=(nil) 0x2437c60 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 183 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2408f10 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x221c610 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/lsass contains 47 bytes in 1 blocks (ref 0) d=(nil) 0x226a490 - struct socket_address contains 87 bytes in 2 blocks (ref 0) d=(nil) 0x23c3900 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/lsass contains 47 bytes in 1 blocks (ref 0) d=(nil) 0x235df40 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/lsass contains 47 bytes in 1 blocks (ref 0) d=(nil) 0x24ff950 - \pipe\lsass contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x298f870 - struct named_pipe_socket contains 417 bytes in 11 blocks (ref 1) d=(nil) 0x298f7e0 - struct stream_socket contains 322 bytes in 8 blocks (ref 0) d=(nil) 0x2922560 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 185 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x290e640 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x270b550 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/spoolss contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x276b1a0 - struct socket_address contains 89 bytes in 2 blocks (ref 0) d=(nil) 0x28a3730 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/spoolss contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x2850300 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/spoolss contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x292e5d0 - \pipe\spoolss contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2a28180 - struct named_pipe_socket contains 457 bytes in 11 blocks (ref 1) d=(nil) 0x271ad90 - struct stream_socket contains 342 bytes in 8 blocks (ref 0) d=(nil) 0x24e77b0 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 195 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2c46a60 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2a38350 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/protected_storage contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x2a837a0 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x2b8ccc0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/protected_storage contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x2b43fd0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/protected_storage contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x266f990 - \pipe\protected_storage contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x280a130 - struct named_pipe_socket contains 421 bytes in 11 blocks (ref 1) d=(nil) 0x26e4500 - struct stream_socket contains 324 bytes in 8 blocks (ref 0) d=(nil) 0x2e0e7d0 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 186 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2ad9ff0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2496bc0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/unixinfo contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x24a6c60 - struct socket_address contains 90 bytes in 2 blocks (ref 0) d=(nil) 0x26ccfd0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/unixinfo contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x2aca5e0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/unixinfo contains 50 bytes in 1 blocks (ref 0) d=(nil) 0x2e2ab50 - \pipe\unixinfo contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x26d4e90 - struct named_pipe_socket contains 417 bytes in 11 blocks (ref 1) d=(nil) 0x2825610 - struct stream_socket contains 322 bytes in 8 blocks (ref 0) d=(nil) 0x24b2ce0 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 185 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x277b6d0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2b0ea10 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/browser contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x2dfa3c0 - struct socket_address contains 89 bytes in 2 blocks (ref 0) d=(nil) 0x27a00c0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/browser contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x2f362d0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/browser contains 49 bytes in 1 blocks (ref 0) d=(nil) 0x24db440 - \pipe\browser contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x24e3890 - struct named_pipe_socket contains 413 bytes in 11 blocks (ref 1) d=(nil) 0x252b8e0 - struct stream_socket contains 320 bytes in 8 blocks (ref 0) d=(nil) 0x282d370 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 184 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2840aa0 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x28bb420 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/ntsvcs contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x288f770 - struct socket_address contains 88 bytes in 2 blocks (ref 0) d=(nil) 0x2848660 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/ntsvcs contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x285c2d0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/ntsvcs contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x281d8d0 - \pipe\ntsvcs contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x253fcd0 - struct named_pipe_socket contains 425 bytes in 11 blocks (ref 1) d=(nil) 0x26ff820 - struct stream_socket contains 326 bytes in 8 blocks (ref 0) d=(nil) 0x27466a0 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 187 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2597b70 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2517cb0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/dnsserver contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x27fe730 - struct socket_address contains 91 bytes in 2 blocks (ref 0) d=(nil) 0x250bbc0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/dnsserver contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x27f6a40 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/dnsserver contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x273a750 - \pipe\dnsserver contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2707590 - struct named_pipe_socket contains 413 bytes in 11 blocks (ref 1) d=(nil) 0x27d3b20 - struct stream_socket contains 320 bytes in 8 blocks (ref 0) d=(nil) 0x26027a0 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 184 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2629580 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x26d0f40 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/winreg contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x26b1d20 - struct socket_address contains 88 bytes in 2 blocks (ref 0) d=(nil) 0x2658180 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/winreg contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x267f1f0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/winreg contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x25fa960 - \pipe\winreg contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x27b4260 - struct named_pipe_socket contains 413 bytes in 11 blocks (ref 1) d=(nil) 0x2c85110 - struct stream_socket contains 320 bytes in 8 blocks (ref 0) d=(nil) 0x2d20e30 - reference to: struct named_pipe_socket - reference to: struct loadparm_context - struct socket_context contains 184 bytes in 3 blocks (ref 0) d=0x2af27c33abf0 0x2d29370 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x2b78c50 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/srvsvc contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x2b503f0 - struct socket_address contains 88 bytes in 2 blocks (ref 0) d=(nil) 0x2caa460 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/srvsvc contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x2cd3cf0 - /home/rusty/samba/st/fl2000dc/ncalrpc/np/srvsvc contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x2ce3cd0 - \pipe\srvsvc contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2c91600 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2c71fd0 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2c6e390 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2c75ba0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2c66a50 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2c4e900 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2c1d900 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2c3a800 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2c32580 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x2c0d3c0 - reference to: struct dcerpc_binding - \pipe\srvsvc contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2a73c90 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x2ab6980 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2c04f80 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2aaea40 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2a57ef0 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2a343b0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2aae9d0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2a87550 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2a07510 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2bd8a30 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2be9060 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2bf1100 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x29ef780 - reference to: struct dcerpc_binding - \pipe\winreg contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2ba5120 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x2b4c210 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2a73c10 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2bb1440 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2ae9cd0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2bc4e30 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x2b84d80 - reference to: struct dcerpc_binding - \pipe\dnsserver contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2e26ac0 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x2ba9410 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2ba50a0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2da3b80 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2bccb50 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2d8ff40 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2da3b10 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2d93e00 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2d7f6d0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2e3f5b0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2d6ab20 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2e3b560 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x2e32a30 - reference to: struct dcerpc_binding - \pipe\ntsvcs contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2e1e670 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x2e16940 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2e26a40 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2e1e6f0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2e0a820 - \pipe\protected_storage contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x2e06910 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 0) d=(nil) 0x2de9750 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x31d1fb0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2e068a0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2dcc4b0 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2db39c0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2e4c260 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2dab960 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2e825b0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2e4c1f0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2f085d0 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2f51ed0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x30200a0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2f8dd40 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2ffab10 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x30c3d20 - reference to: struct dcerpc_binding - \pipe\browser contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x21bbc20 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x31f2060 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x31d1f30 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x196ccc0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x19b71f0 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x325a800 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x196cc50 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x322d950 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2b64200 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x230acc0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x23e05f0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x232b760 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x22f1e40 - reference to: struct dcerpc_binding - \pipe\unixinfo contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a42ec0 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x1f64ce0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x21bbba0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x19c6b10 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1967280 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x19d23f0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x19c6aa0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1a3f0d0 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x1ac9210 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1a42f40 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1ae0990 - \pipe\lsass contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1b3d2d0 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 0) d=(nil) 0x1b08b60 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1af0bb0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1af0b40 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1b20f90 - \pipe\lsarpc contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1bc2cb0 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 0) d=(nil) 0x1b78c70 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1b3d250 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1bc2d30 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1b9a080 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x1ba6260 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1c33650 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1bae120 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x1bcaa90 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1c4ac50 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1beaa90 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1c27b50 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x1c3f0d0 - reference to: struct dcerpc_binding - \pipe\protected_storage contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1c4abc0 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x1c5e610 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1c528a0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1c52920 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1c623e0 - \pipe\lsass contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1c76d00 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 0) d=(nil) 0x1c7eff0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1c76d80 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1c9f540 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1c83150 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1c8f430 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x1ca3270 - reference to: struct dcerpc_binding - \pipe\spoolss contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1d510c0 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x1cf3ae0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1cd37d0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1cd3760 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1cffd10 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x1d24650 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1d51140 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1d34850 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x1d58d60 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1db9d50 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1d64d50 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1d89950 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x1dca320 - reference to: struct dcerpc_binding - \pipe\lsass contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1e269e0 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x1dfa880 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1dde120 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1dde0b0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1e22980 - \pipe\netlogon contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1f14100 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 0) d=(nil) 0x1e53c60 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1e26960 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1ea8950 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1e57a00 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1e84060 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x1edb7a0 - reference to: struct dcerpc_binding - \pipe\lsarpc contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1ff9c30 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x1f1fbc0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1f14080 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1f48b70 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1f23dc0 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x1f4cd30 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1f48b00 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1f71440 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x1fa9820 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1fea120 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1fbe660 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1fce9d0 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x1ff5e70 - reference to: struct dcerpc_binding - \pipe\netlogon contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x22a3c80 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x2018dc0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1ff9bb0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2064610 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2058400 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x208c2f0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x20645a0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x20f5620 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x21232b0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x21fb6d0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x21321f0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2139cd0 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x2254e50 - reference to: struct dcerpc_binding - \pipe\samr contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2207690 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x22e1940 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x22a3c00 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2361f10 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x23559e0 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x23b36e0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2361ea0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x24301b0 - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x2443c40 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2486c50 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x24572b0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2463080 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x248ab70 - reference to: struct dcerpc_binding - \pipe\rpcecho contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1a9cce0 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x1fc66e0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2a67f20 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2207620 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x249ea00 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x253bab0 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x1ff1f20 - reference to: struct dcerpc_binding - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 1) d=(nil) 0x34393f0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1dd6130 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1a6a730 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1b60aa0 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x1ce7b90 - reference to: struct dcerpc_binding - struct dcerpc_binding contains 81 bytes in 2 blocks (ref 1) d=(nil) 0x1efbc80 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1dd60c0 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1f23f30 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1f44850 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x27d7890 - reference to: struct dcerpc_binding - \pipe\wkssvc contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x20e2b90 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x26a2440 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x22185c0 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2351c80 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2e1a950 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1aa0950 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x1de24f0 - reference to: struct dcerpc_binding - EPMAPPER contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2b26f40 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x2ba9590 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1b50b50 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x2351c10 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1c2b960 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x2f24c50 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x2110ad0 - reference to: struct dcerpc_binding - 135 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1fee280 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x30d4c10 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1db9e60 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1fee210 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x1fd2960 - struct dcesrv_if_list contains 104 bytes in 1 blocks (ref 0) d=(nil) 0x249abd0 - struct dcesrv_endpoint contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x19e9990 - reference to: struct dcerpc_binding - \pipe\epmapper contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2eff520 - struct dcerpc_binding contains 97 bytes in 3 blocks (ref 1) d=(nil) 0x1f449b0 - const char * contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2c01340 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x189a650 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a67da0 - struct task_server contains 880 bytes in 18 blocks (ref 0) d=(nil) 0x19c2cf0 - struct imessaging_context contains 816 bytes in 17 blocks (ref 0) d=(nil) 0x2c5ef40 - struct irpc_list contains 64 bytes in 1 blocks (ref 0) d=(nil) 0x1ab9380 - struct dispatch_fn * contains 136 bytes in 3 blocks (ref 0) d=(nil) 0x1d71030 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1a52730 - struct dispatch_fn contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1cebb30 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x19e5c90 - struct socket_address contains 99 bytes in 2 blocks (ref 0) d=(nil) 0x1ea0bb0 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.1 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x28b3760 - struct socket_context contains 107 bytes in 2 blocks (ref 0) d=0x2af27c33abf0 0x229ba00 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.1 contains 59 bytes in 1 blocks (ref 0) d=(nil) 0x1966190 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2014fc0 - struct idr_context contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2a48550 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg/msg.1.1 contains 63 bytes in 3 blocks (ref 0) d=(nil) 0x1e0b2d0 - talloc_new: ../source4/lib/messaging/messaging.c:138 contains 4 bytes in 2 blocks (ref 0) d=(nil) 0x1a08c60 - 1.1 contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2f24b60 - /home/rusty/samba/st/fl2000dc/private/smbd.tmp/msg contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x1e5fd30 - reference to: struct loadparm_context - struct task_state contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1b28f00 - talloc_new: ../source4/smbd/server.c:191 contains 186762 bytes in 6208 blocks (ref 0) d=(nil) 0x17fbf30 - struct ldb_context contains 3017 bytes in 40 blocks (ref 0) d=0x2af275bb6e14 0x2cb6540 - struct ldb_wrap contains 86 bytes in 2 blocks (ref 0) d=0x2af27642a067 0x2c917a0 - privilege.ldb contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2333310 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1b08d00 - NULL Base DN invalid for a base search contains 39 bytes in 1 blocks (ref 0) d=(nil) 0x19bb0a0 - ldb_tdb backend contains 632 bytes in 22 blocks (ref 0) d=(nil) 0x1f7d840 - struct ltdb_private contains 592 bytes in 21 blocks (ref 0) d=(nil) 0x2533700 - struct ltdb_cache contains 480 bytes in 19 blocks (ref 0) d=(nil) 0x1fde3a0 - struct ldb_message contains 256 bytes in 10 blocks (ref 0) d=(nil) 0x17fd020 - struct ldb_message_element contains 148 bytes in 7 blocks (ref 0) d=(nil) 0x29641f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1eeb2f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1c7aca0 - privilege contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1dd23d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x27e3310 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x27e7110 - comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1c7f170 - struct ldb_dn contains 84 bytes in 2 blocks (ref 0) d=(nil) 0x1f04070 - @ATTRIBUTES contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1eb43e0 - struct ldb_message contains 200 bytes in 8 blocks (ref 0) d=(nil) 0x1f33f80 - struct ldb_message_element contains 93 bytes in 5 blocks (ref 0) d=(nil) 0x225a680 - struct ldb_val contains 52 bytes in 3 blocks (ref 0) d=(nil) 0x2b0ebb0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2b98fd0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2afe520 - @IDXATTR contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x2d7f870 - struct ldb_dn contains 83 bytes in 2 blocks (ref 0) d=(nil) 0x2be9200 - @INDEXLIST contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2932620 - struct ltdb_wrap contains 40 bytes in 1 blocks (ref 0) d=0x2af290dc12e8 0x1c27300 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3439680 - /home/rusty/samba/st/fl2000dc/private/privilege.ldb contains 52 bytes in 1 blocks (ref 0) d=(nil) 0x2c092f0 - /home/rusty/samba/st/fl2000dc/private/privilege.ldb contains 52 bytes in 1 blocks (ref 0) d=(nil) 0x18417b0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x3437ee0 - struct ldb_dn_extended_syntax contains 320 bytes in 1 blocks (ref 0) d=(nil) 0x1cd6ae0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x26dfe70 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a6e930 - /home/rusty/samba/bin/modules/ldb contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x196df30 - struct ldb_schema_attribute contains 1386 bytes in 3 blocks (ref 0) d=(nil) 0x3137080 - privilege contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2424ad0 - comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2d6ed70 - struct tevent_context contains 144 bytes in 2 blocks (ref 0) d=0x2af2770dc78a 0x29acc10 - struct std_event_context contains 24 bytes in 1 blocks (ref 0) d=0x2af2770e1c09 0x3456320 - struct ldb_context contains 183745 bytes in 6167 blocks (ref 11) d=0x2af275bb6e14 0x17fe020 - struct GUID contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1d857b0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x265c000 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1fc25c0 - bool contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x24aef30 - struct GUID contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1d44b00 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2c49ff0 - struct ldb_wrap contains 80 bytes in 3 blocks (ref 0) d=0x2af27642a067 0x1ab9500 - reference to: struct auth_session_info - sam.ldb contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x204c160 - reference to: struct dsdb_schema - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x29a4850 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1a1b270 - int contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x2f24af0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1bbecc0 - int contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1b1c410 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1965470 - int contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1965200 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34567c0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x34563b0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1894240 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x189b5d0 - struct ldb_dn contains 340 bytes in 16 blocks (ref 0) d=(nil) 0x189a380 - char contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x32809e0 - struct ldb_dn_component contains 206 bytes in 13 blocks (ref 0) d=(nil) 0x189a440 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x19b72f0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189d030 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19b7170 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1968a30 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1965ee0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1972120 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x189bb90 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189bb20 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x17fef90 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1893790 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1894610 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189a540 - DC=samba2000,DC=example,DC=com contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x189b440 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x189b330 - struct ldb_dn contains 544 bytes in 24 blocks (ref 0) d=(nil) 0x17fed60 - char contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x1972190 - struct ldb_dn_component contains 356 bytes in 21 blocks (ref 0) d=(nil) 0x189a1b0 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1962c70 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19642f0 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189c3a0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1962ec0 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1964360 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1962e50 - CONFIGURATION contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1921a90 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1962de0 - SCHEMA contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x19646f0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1962cf0 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x189a310 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1899210 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x17ff390 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18991a0 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x17ff310 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x17fec60 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x17ff1e0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1893920 - Schema contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x18938b0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1893840 - CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x18990f0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x189b2a0 - struct ldb_dn contains 456 bytes in 20 blocks (ref 0) d=(nil) 0x1893320 - char contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x1c06190 - struct ldb_dn_component contains 288 bytes in 17 blocks (ref 0) d=(nil) 0x189a780 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1e16e00 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x29e6ee0 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1e16d80 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x2868410 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1da5c20 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x22244b0 - CONFIGURATION contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1da5ca0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x31614f0 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1893ed0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189a8b0 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x17fe720 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189af10 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1894010 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x17fee60 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x17fd890 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189b760 - CN=Configuration,DC=samba2000,DC=example,DC=com contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x189b8d0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x189b210 - struct ldb_dn contains 278 bytes in 9 blocks (ref 0) d=(nil) 0x189b040 - struct ldb_dn_component contains 175 bytes in 7 blocks (ref 0) d=(nil) 0x1894090 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x18941d0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1893590 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x17fe3d0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x17ff410 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18932a0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18936a0 - DC=samba2000,DC=example,DC=com contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x189b180 - ldb_module: resolve_oids contains 65 bytes in 2 blocks (ref 0) d=(nil) 0x189a080 - .name contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x189a120 - ldb_module: rootdse contains 1895 bytes in 80 blocks (ref 0) d=(nil) 0x1899fe0 - struct private_data contains 1835 bytes in 78 blocks (ref 0) d=(nil) 0x1894350 - struct ldb_dn * contains 1227 bytes in 58 blocks (ref 0) d=(nil) 0x1963290 - struct ldb_dn contains 486 bytes in 23 blocks (ref 0) d=(nil) 0x1963910 - CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x1922660 - struct ldb_dn_component contains 356 bytes in 21 blocks (ref 0) d=(nil) 0x1963320 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19225f0 - uint8_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1922580 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1921890 - uint8_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1921820 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19217b0 - uint8_t contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1921730 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1923030 - uint8_t contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1922fb0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1922f40 - uint8_t contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1922260 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19221f0 - uint8_t contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1922170 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189edb0 - uint8_t contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1964500 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189ed40 - uint8_t contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1896490 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189ecd0 - uint8_t contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x18a3b00 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1963bc0 - uint8_t contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1922370 - struct ldb_dn contains 408 bytes in 19 blocks (ref 0) d=(nil) 0x189c420 - CN=Configuration,DC=samba2000,DC=example,DC=com contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x18a3a60 - struct ldb_dn_component contains 288 bytes in 17 blocks (ref 0) d=(nil) 0x1896d50 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18a39f0 - uint8_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1897450 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18973e0 - uint8_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1897220 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18971b0 - uint8_t contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1897740 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189e9a0 - uint8_t contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18976c0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18975e0 - uint8_t contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x189e920 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1897570 - uint8_t contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1921340 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189e680 - uint8_t contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x189dd00 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1921640 - uint8_t contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1921d40 - struct ldb_dn contains 309 bytes in 15 blocks (ref 0) d=(nil) 0x1896510 - DC=samba2000,DC=example,DC=com contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1895c90 - struct ldb_dn_component contains 206 bytes in 13 blocks (ref 0) d=(nil) 0x1895d20 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189e610 - uint8_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x189e5a0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189db70 - uint8_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x189db00 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189da90 - uint8_t contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189eb80 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189eb10 - uint8_t contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189e450 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189e3e0 - uint8_t contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x189f220 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189f0c0 - uint8_t contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x189f1a0 - char * contains 568 bytes in 19 blocks (ref 0) d=(nil) 0x1921240 - 1.2.840.113556.1.4.1341 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x189bd10 - 1.2.840.113556.1.4.1413 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18e5d10 - 1.2.840.113556.1.4.1340 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1922710 - 1.2.840.113556.1.4.1339 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x189bfc0 - 1.2.840.113556.1.4.1413 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1922810 - 1.2.840.113556.1.4.1413 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18959b0 - 1.2.840.113556.1.4.1413 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x189ea10 - 1.2.840.113556.1.4.2064 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x189ad60 - 1.2.840.113556.1.4.417 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x189b550 - 1.2.840.113556.1.4.529 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18942d0 - 1.2.840.113556.1.4.1338 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x17ff480 - 1.2.840.113556.1.4.805 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x189b3c0 - 1.2.840.113556.1.4.801 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x189ac60 - 1.2.840.113556.1.4.801 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x189ab50 - 1.2.840.113556.1.4.1504 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x17fe5d0 - 1.2.840.113556.1.4.473 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1894e80 - 1.2.840.113556.1.4.319 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x189aad0 - 1.2.840.113556.1.4.841 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x189a930 - .name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1894a80 - ldb_module: schema_load contains 88 bytes in 5 blocks (ref 0) d=(nil) 0x1895020 - struct schema_load_private_data contains 24 bytes in 3 blocks (ref 0) d=(nil) 0x189ae10 - struct tdb_wrap contains 8 bytes in 2 blocks (ref 0) d=(nil) 0x196a560 - reference to: struct tdb_wrap_private - .name contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18950c0 - ldb_module: lazy_commit contains 64 bytes in 2 blocks (ref 0) d=(nil) 0x1898f80 - .name contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1894f90 - ldb_module: dirsync contains 60 bytes in 2 blocks (ref 0) d=(nil) 0x1898ee0 - .name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1893d10 - ldb_module: paged_results contains 82 bytes in 3 blocks (ref 0) d=(nil) 0x1895200 - struct private_data contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x189aa50 - .name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18952a0 - ldb_module: ranged_results contains 67 bytes in 2 blocks (ref 0) d=(nil) 0x1894ba0 - .name contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1841620 - ldb_module: anr contains 56 bytes in 2 blocks (ref 0) d=(nil) 0x1899f40 - .name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1894950 - ldb_module: server_sort contains 64 bytes in 2 blocks (ref 0) d=(nil) 0x1899e10 - .name contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1899eb0 - ldb_module: asq contains 56 bytes in 2 blocks (ref 0) d=(nil) 0x1899d70 - .name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18948d0 - ldb_module: extended_dn_store contains 70 bytes in 2 blocks (ref 0) d=(nil) 0x1899c40 - .name contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1899ce0 - ldb_module: extended_dn_in contains 67 bytes in 2 blocks (ref 0) d=(nil) 0x1899b10 - .name contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1899bb0 - ldb_module: objectclass contains 64 bytes in 2 blocks (ref 0) d=(nil) 0x18999e0 - .name contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1899a80 - ldb_module: descriptor contains 63 bytes in 2 blocks (ref 0) d=(nil) 0x1899940 - .name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18933e0 - ldb_module: acl contains 520 bytes in 22 blocks (ref 0) d=(nil) 0x18998a0 - struct acl_private contains 464 bytes in 20 blocks (ref 0) d=(nil) 0x189a9b0 - const char * contains 416 bytes in 19 blocks (ref 0) d=(nil) 0x189bc00 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x189cc70 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x189cbf0 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x189cb70 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x189caf0 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x189ca70 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x189c9f0 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18944f0 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x189c970 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x189c8f0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x189c870 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189c7f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189c770 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x189c6f0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x189c670 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18947a0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1894720 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1894470 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x189b850 - .name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1893d90 - ldb_module: aclread contains 61 bytes in 3 blocks (ref 0) d=(nil) 0x1899800 - struct aclread_private contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1893520 - .name contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1893710 - ldb_module: samldb contains 59 bytes in 2 blocks (ref 0) d=(nil) 0x1899760 - .name contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x17fe4d0 - ldb_module: password_hash contains 66 bytes in 2 blocks (ref 0) d=(nil) 0x1899630 - .name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18996d0 - ldb_module: operational contains 72 bytes in 3 blocks (ref 0) d=(nil) 0x1899500 - struct operational_data contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189c260 - .name contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18995a0 - ldb_module: instancetype contains 65 bytes in 2 blocks (ref 0) d=(nil) 0x18993d0 - .name contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1899470 - ldb_module: objectclass_attrs contains 70 bytes in 2 blocks (ref 0) d=(nil) 0x18992a0 - .name contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1899340 - ldb_module: rdn_name contains 61 bytes in 2 blocks (ref 0) d=(nil) 0x1893c70 - .name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x17fdd70 - ldb_module: subtree_delete contains 67 bytes in 2 blocks (ref 0) d=(nil) 0x1893b40 - .name contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1893be0 - ldb_module: repl_meta_data contains 107 bytes in 3 blocks (ref 0) d=(nil) 0x1893600 - struct replmd_private contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x189a5b0 - .name contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1893ab0 - ldb_module: subtree_rename contains 67 bytes in 2 blocks (ref 0) d=(nil) 0x17fe660 - .name contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1893460 - ldb_module: linked_attributes contains 70 bytes in 2 blocks (ref 0) d=(nil) 0x1841710 - .name contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1895170 - ldb_module: extended_dn_out_ldb contains 97 bytes in 4 blocks (ref 0) d=(nil) 0x17feed0 - struct extended_dn_out_private contains 25 bytes in 2 blocks (ref 0) d=(nil) 0x189abd0 - struct dsdb_extended_dn_store_format contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x1893a40 - .name contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x1894f00 - ldb_module: show_deleted contains 67 bytes in 3 blocks (ref 0) d=(nil) 0x1894b00 - struct show_deleted_state contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1893fa0 - .name contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1894df0 - ldb_module: new_partition contains 66 bytes in 2 blocks (ref 0) d=(nil) 0x1893990 - .name contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1894d60 - ldb_module: partition contains 110216 bytes in 4014 blocks (ref 0) d=(nil) 0x1899050 - struct partition_private_data contains 110154 bytes in 4012 blocks (ref 0) d=(nil) 0x1894820 - struct partition_metadata contains 117 bytes in 4 blocks (ref 0) d=(nil) 0x189c050 - struct tdb_wrap contains 101 bytes in 3 blocks (ref 0) d=(nil) 0x189ae90 - struct tdb_wrap_private contains 93 bytes in 2 blocks (ref 1) d=0x2af279e7ff20 0x189cf10 - /home/rusty/samba/st/fl2000dc/private/sam.ldb.d/metadata.tdb contains 61 bytes in 1 blocks (ref 0) d=(nil) 0x1921190 - struct dsdb_partition * contains 109106 bytes in 3970 blocks (ref 0) d=(nil) 0x1896cc0 - struct dsdb_partition contains 52516 bytes in 1919 blocks (ref 0) d=(nil) 0x189ee40 - ../lib/ldb/common/ldb_pack.c:264 contains 130 bytes in 1 blocks (ref 0) d=(nil) 0x189d5b0 - partition_next contains 622 bytes in 19 blocks (ref 0) d=(nil) 0x1922e90 - ldb_module: schema_data contains 582 bytes in 18 blocks (ref 0) d=(nil) 0x1922ba0 - struct schema_data_private_data contains 518 bytes in 16 blocks (ref 0) d=(nil) 0x1896690 - struct ldb_dn contains 502 bytes in 15 blocks (ref 0) d=(nil) 0x19277f0 - CN=Aggregate,CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 71 bytes in 1 blocks (ref 0) d=(nil) 0x1922910 - struct ldb_dn_component contains 359 bytes in 13 blocks (ref 0) d=(nil) 0x19223f0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19228a0 - uint8_t contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19222f0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1922e20 - uint8_t contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1922db0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1922d40 - uint8_t contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1922cc0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1922c50 - uint8_t contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1927920 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19278b0 - uint8_t contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1922ae0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1922a70 - uint8_t contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1922a00 - .name contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19220e0 - ldb_tdb backend contains 51046 bytes in 1872 blocks (ref 0) d=(nil) 0x18969f0 - struct ltdb_private contains 51006 bytes in 1871 blocks (ref 0) d=(nil) 0x1896810 - struct ltdb_cache contains 50894 bytes in 1869 blocks (ref 0) d=(nil) 0x1921f30 - struct ldb_message contains 46931 bytes in 1741 blocks (ref 0) d=(nil) 0x1921fc0 - struct ldb_message_element contains 46823 bytes in 1738 blocks (ref 0) d=(nil) 0x1927af0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1962b70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1962bf0 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1962af0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19629f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1962a70 - wWWHomePage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1962970 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1962870 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19628f0 - wbemPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19627f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19626f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1962770 - vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1962680 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1962580 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1962600 - uSNSource contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1962500 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1962400 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1962480 - uSNLastObjRem contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1962380 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1962280 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1962300 - uSNDSALastObjRemoved contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1962200 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1962100 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1962180 - uSNCreated contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1962080 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1961f80 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1962000 - uSNChanged contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1961f00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961e00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961e80 - userWorkstations contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961d80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961c80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961d00 - userSharedFolderOther contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1961c00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961b00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961b80 - userSharedFolder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961a80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961a00 - userPrincipalName contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1961900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961880 - userParameters contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1961780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961700 - userClass contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1961600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961580 - url contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1961490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961410 - uPNSuffixes contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1961310 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961210 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961290 - unstructuredAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1961190 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1961090 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961110 - uniqueIdentifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1961010 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1960f10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1960f90 - uNCName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1960e90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1960d90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1960e10 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1960d20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1960c20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1960ca0 - trustPartner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1960ba0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1960aa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1960b20 - treeName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1960a20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1960920 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19609a0 - transportDLLName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19608a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19607a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1960820 - transportAddressAttribute contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1960710 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1960610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1960690 - title contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x19605a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19604a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1960520 - timeVolChange contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1960420 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1960320 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19603a0 - timeRefresh contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19602a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19601a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1960220 - textEncodedORAddress contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1960120 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1960020 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19600a0 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x195ffa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195fea0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195ff20 - systemPossSuperiors contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x195fe20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195fd20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195fda0 - systemMustContain contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x195fca0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195fba0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195fc20 - systemMayContain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195fb20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195fa20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195faa0 - systemAuxiliaryClass contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x195f9a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195f8a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195f920 - superScopeDescription contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x195f820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195f720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195f7a0 - superiorDNSRoot contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x195f6a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195f5a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195f620 - subClassOf contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x195f520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195f420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195f4a0 - structuralObjectClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x195f3a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195f2a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195f320 - streetAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x195f220 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195f120 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195f1a0 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x195f0b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195efb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195f030 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x195ef40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195ee40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195eec0 - sPNMappings contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x195edc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195ecc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195ed40 - sn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x195ec50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195eb50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195ebd0 - signatureAlgorithms contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x195ead0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195e9d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195ea50 - shortServerName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x195e950 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195e850 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195e8d0 - shellPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x195e7d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195e6d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195e750 - shellContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195e650 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195e550 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195e5d0 - setupCommand contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x195e4d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195e3d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195e450 - servicePrincipalName contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x195e350 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195e250 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195e2d0 - serviceDNSNameType contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x195e1d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195e0d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195e150 - serviceDNSName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x195e050 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195df50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195dfd0 - serviceClassName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195ded0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195ddd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195de50 - serviceBindingInformation contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x195dd40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195dc40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195dcc0 - serverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x195dbc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195dac0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195db40 - scriptPath contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x195da40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195d940 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195d9c0 - sAMAccountName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x195d8c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195d7c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195d840 - rpcNsTransferSyntax contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x195d740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195d640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195d6c0 - rpcNsProfileEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x195d5c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195d4c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195d540 - rpcNsObjectID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x195d440 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195d340 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195d3c0 - rpcNsInterfaceID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195d2c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195d1c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195d240 - rpcNsGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x195d140 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195d040 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195d0c0 - rpcNsCodeset contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x195cfc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195cec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195cf40 - rpcNsBindings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x195ce40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195cd40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195cdc0 - rpcNsAnnotation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x195ccc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195cbc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195cc40 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x195cb40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195ca40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195cac0 - rightsGuid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x195c9c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x195c8c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x195c940 - rIDUsedPool contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x195c840 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x195c740 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x195c7c0 - rIDPreviousAllocationPool contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x195c6b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x195c5b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x195c630 - rIDAvailablePool contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195c530 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x195c430 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x195c4b0 - rIDAllocationPool contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x195c3b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195c2b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195c330 - replicaSource contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x195c230 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195c130 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195c1b0 - remoteStorageGUID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x195c0b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195bfb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195c030 - remoteSource contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x195bf30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195be30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195beb0 - remoteServerName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195bdb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195bcb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195bd30 - rDNAttID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x195bc30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195bb30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195bbb0 - queryPoint contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x195bab0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195b9b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195ba30 - queryFilter contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x195b930 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x195b830 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x195b8b0 - pwdLastSet contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x195b7b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195b6b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195b730 - purportedSearch contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x195b630 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x195b530 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x195b5b0 - proxyLifetime contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x195b4b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195b3b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195b430 - proxyAddresses contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x195b330 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195b230 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195b2b0 - profilePath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x195b1b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x195b0b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x195b130 - privilegeValue contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x195b030 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195af30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195afb0 - privilegeDisplayName contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x195aeb0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x195adb0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x195ae30 - priorSetTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x195ad30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195ac30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195acb0 - printStatus contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x195abb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195aab0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195ab30 - printSpooling contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x195aa30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195a930 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195a9b0 - printShareName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x195a8b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195a7b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195a830 - printSeparatorFile contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x195a730 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195a630 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195a6b0 - printRateUnit contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x195a5b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195a4b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195a530 - printOwner contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x195a430 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195a330 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195a3b0 - printOrientationsSupported contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x195a2a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195a1a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195a220 - printNotify contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x195a120 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x195a020 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x195a0a0 - printNetworkAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1959fa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1959ea0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1959f20 - printMediaSupported contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1959e20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1959d20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1959da0 - printMediaReady contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1959ca0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1959ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1959c20 - printMACAddress contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1959b20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1959a20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1959aa0 - printLanguage contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19599a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19598a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1959920 - printFormName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1959820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1959720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19597a0 - printerName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19596a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19595a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1959620 - printBinNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1959520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1959420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19594a0 - primaryTelexNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19593a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19592a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1959320 - primaryInternationalISDNNumber contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1959210 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1959110 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1959190 - presentationAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1959090 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958f90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1959010 - preferredLanguage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1958f10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958e10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958e90 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1958d90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958c90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958d10 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1958c10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958b10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958b90 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1958a90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958990 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958a10 - possSuperiors contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1958910 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958810 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958890 - possibleInferiors contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1958790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958710 - portName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1958610 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958510 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958590 - pKIExtendedKeyUsage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1958490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958410 - pKIDefaultCSPs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1958310 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958210 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958290 - pKICriticalExtensions contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1958190 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1958090 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1958110 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1958000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1957f00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1957f80 - personalTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1957e80 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1957d80 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1957e00 - pekKeyChangeInterval contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1957d00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1957c00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1957c80 - pager contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1957b90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1957a90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1957b10 - packageName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1957a10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1957910 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1957990 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19578a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19577a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1957820 - otherTelephone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1957720 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1957620 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19576a0 - otherPager contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19575a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19574a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1957520 - otherMobile contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1957420 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1957320 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19573a0 - otherMailbox contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19572a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19571a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1957220 - otherLoginWorkstations contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1957120 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1957020 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19570a0 - otherIpPhone contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1956fa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956ea0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956f20 - otherHomePhone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1956e20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956d20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956da0 - otherFacsimileTelephoneNumber contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1956c90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956b90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956c10 - organizationalStatus contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1956b10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956a10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956a90 - optionDescription contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1956990 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956890 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956910 - operatingSystemVersion contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1956810 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956710 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956790 - operatingSystemServicePack contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1956680 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956580 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956600 - operatingSystemHotfix contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1956500 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956400 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956480 - operatingSystem contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1956380 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956280 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956300 - oEMInformation contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1956200 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1956100 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956180 - objectClasses contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1956080 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1955f80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1956000 - objectClass contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1955f00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1955e00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1955e80 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1955d90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1955c90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1955d10 - notes contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1955c20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1955b20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1955ba0 - networkAddress contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1955aa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19559a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1955a20 - netbootTools contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1955920 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1955820 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19558a0 - netbootSIFFile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19557a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19556a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1955720 - netbootNewMachineNamingPolicy contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1955610 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1955510 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1955590 - netbootMirrorDataFile contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1955490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1955390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1955410 - netbootMachineFilePath contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1955310 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1955210 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1955290 - netbootLocallyInstalledOSes contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1955180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1955080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1955100 - netbootIntelliMirrorOSes contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1954ff0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954ef0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954f70 - netbootInitialization contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1954e70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954d70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954df0 - nETBIOSName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1954cf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954bf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954c70 - name contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1954b80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954a80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954b00 - mustContain contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1954a00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954900 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954980 - msWMI-TargetType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954880 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954800 - msWMI-TargetPath contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954700 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954600 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954680 - msWMI-TargetNameSpace contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1954580 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954480 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954500 - msWMI-TargetClass contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1954400 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954300 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954380 - msWMI-StringValidValues contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1954270 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1954170 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19541f0 - msWMI-StringDefault contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19540f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1953ff0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1954070 - msWMI-SourceOrganization contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1953f60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1953e60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1953ee0 - msWMI-ScopeGuid contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1953de0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1953ce0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1953d60 - msWMI-QueryLanguage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1953c60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1953b60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1953be0 - msWMI-Query contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1953ae0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19539e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1953a60 - msWMI-PropertyName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1953960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1953860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19538e0 - msWMI-Parm4 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19537e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19536e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1953760 - msWMI-Parm3 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1953660 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1953560 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19535e0 - msWMI-Parm2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19534e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19533e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1953460 - msWMI-Parm1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1953360 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1953260 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19532e0 - msWMI-NormalizedClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19531e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19530e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1953160 - msWMI-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1953060 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1952f60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1952fe0 - msWMI-Mof contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1952ee0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1952de0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1952e60 - msWMI-Int8ValidValues contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1952d60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1952c60 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1952ce0 - msWMI-Int8Min contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1952be0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1952ae0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1952b60 - msWMI-Int8Max contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1952a60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1952960 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19529e0 - msWMI-Int8Default contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19528e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19527e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1952860 - msWMI-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1952760 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1952660 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19526e0 - msWMI-CreationDate contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19525e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19524e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1952560 - msWMI-ClassDefinition contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1952460 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1952360 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19523e0 - msWMI-Class contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19522e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19521e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1952260 - msWMI-ChangeDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1952160 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1952060 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19520e0 - msWMI-Author contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1951fe0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1951ee0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1951f60 - msTSWorkDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1951e60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1951d60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1951de0 - msTSProperty02 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1951ce0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1951be0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1951c60 - msTSProperty01 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1951b60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1951a60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1951ae0 - msTSProfilePath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19519e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19518e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1951960 - msTSManagingLS4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1951860 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1951760 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19517e0 - msTSManagingLS3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19516e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19515e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1951660 - msTSManagingLS2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1951560 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1951460 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19514e0 - msTSManagingLS contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19513e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19512e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1951360 - msTSLSProperty02 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1951260 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1951160 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19511e0 - msTSLSProperty01 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19510e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1950fe0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1951060 - msTSLicenseVersion4 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1950f60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1950e60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1950ee0 - msTSLicenseVersion3 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1950de0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1950ce0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1950d60 - msTSLicenseVersion2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1950c60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1950b60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1950be0 - msTSLicenseVersion contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1950ae0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19509e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1950a60 - msTSInitialProgram contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1950960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1950860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19508e0 - msTSHomeDrive contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19507e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19506e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1950760 - msTSHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1950660 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1950560 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19505e0 - msTSEndpointPlugin contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19504e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19503e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1950460 - msTSEndpointData contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1950360 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1950260 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19502e0 - msTPM-OwnerInformation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19501e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19500e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1950160 - msTAPI-uid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1950060 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194ff60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194ffe0 - msTAPI-ProtocolId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x194fee0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194fde0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194fe60 - msTAPI-IpAddress contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194fd60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194fc60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194fce0 - msSFU30SearchContainer contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x194fbe0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194fae0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194fb60 - msSFU30SearchAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x194fa50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194f950 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194f9d0 - msSFU30ResultAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x194f8c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194f7c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194f840 - msSFU30OrderNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x194f740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194f640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194f6c0 - msSFU30MasterServerName contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x194f5b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194f4b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194f530 - msSFU30MapFilter contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194f430 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194f330 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194f3b0 - msSFU30KeyAttributes contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x194f2b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194f1b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194f230 - msSFU30IntraFieldSeparator contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x194f120 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194f020 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194f0a0 - msSFU30FieldSeparator contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x194efa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194eea0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194ef20 - msRRASVendorAttributeEntry contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x194ee10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194ed10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194ed90 - msRRASAttribute contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x194ec90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194eb90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194ec10 - msPKI-Supersede-Templates contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x194eb00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194ea00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194ea80 - msPKI-Site-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x194e980 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194e880 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194e900 - msPKI-RA-Policies contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x194e800 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194e700 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194e780 - msPKI-RA-Application-Policies contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x194e670 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194e570 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194e5f0 - msPKI-OIDLocalizedName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x194e4f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194e3f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194e470 - msPKI-OID-User-Notice contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x194e370 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194e270 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194e2f0 - msPKI-OID-CPS contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x194e1f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194e0f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194e170 - msPKI-Enrollment-Servers contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x194e060 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194df60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194dfe0 - msPKI-Certificate-Policy contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x194ded0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194ddd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194de50 - msPKI-Certificate-Application-Policy contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x194dd40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194dc40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194dcc0 - msPKI-Cert-Template-OID contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x194dbb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194dab0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194db30 - mSMQSiteNameEx contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x194da30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194d930 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194d9b0 - mSMQSiteName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x194d8b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194d7b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194d830 - mSMQQueueNameExt contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194d730 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194d630 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194d6b0 - mSMQLabelEx contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x194d5b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194d4b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194d530 - mSMQLabel contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x194d430 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194d330 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194d3b0 - mSMQCSPName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x194d2b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194d1b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194d230 - mSMQComputerTypeEx contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x194d130 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194d030 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194d0b0 - mSMQComputerType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194cfb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194ceb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194cf30 - msMQ-Recipient-FormatName contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x194ce20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194cd20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194cda0 - MSMQ-MulticastAddress contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x194cca0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194cba0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194cc20 - msiScriptPath contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x194cb20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194ca20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194caa0 - msiScriptName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x194c9a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194c8a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194c920 - msImaging-PSPString contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x194c820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194c720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194c7a0 - msIIS-FTPRoot contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x194c6a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194c5a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194c620 - msIIS-FTPDir contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x194c520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194c420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194c4a0 - msiFileList contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x194c3a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194c2a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194c320 - msieee80211-ID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x194c220 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194c120 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194c1a0 - msFVE-RecoveryPassword contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x194c0a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194bfa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194c020 - msFRS-Topology-Pref contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x194bf20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194be20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194bea0 - msExchLabeledURI contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194bda0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194bca0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194bd20 - msExchHouseIdentifier contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x194bc20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194bb20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194bba0 - msExchAssistantName contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x194baa0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x194b9a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x194ba20 - msDS-USNLastSyncSuccess contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x194b910 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x194b810 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x194b890 - msDS-UserPasswordExpiryTimeComputed contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x194b780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194b680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194b700 - msDS-UpdateScript contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x194b600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194b500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194b580 - msDS-TopQuotaUsage contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x194b480 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194b380 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194b400 - msDS-SPNSuffixes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194b300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194b200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194b280 - msDS-SourceObjectDN contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x194b180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194b080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194b100 - msDS-SiteName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x194b000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194af00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194af80 - msDS-Settings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x194ae80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194ad80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194ae00 - msDS-Security-Group-Extra-Classes contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x194acf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194abf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194ac70 - msDS-ReplValueMetaData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x194ab70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194aa70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194aaf0 - msDS-ReplAttributeMetaData contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x194a9e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194a8e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194a960 - msDS-PromotionSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x194a860 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194a760 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194a7e0 - msDS-PrincipalName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x194a6e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194a5e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194a660 - msDS-PhoneticLastName contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x194a560 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194a460 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194a4e0 - msDS-PhoneticFirstName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x194a3e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194a2e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194a360 - msDS-PhoneticDisplayName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x194a250 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x194a150 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194a1d0 - msDS-PhoneticDepartment contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x194a0c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1949fc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x194a040 - msDS-PhoneticCompanyName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1949f30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1949e30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1949eb0 - msDS-Other-Settings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1949db0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1949cb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1949d30 - msDS-Non-Security-Group-Extra-Classes contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x1949c20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1949b20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1949ba0 - msDS-NCReplOutboundNeighbors contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1949a90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1949990 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1949a10 - msDS-NCReplInboundNeighbors contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1949900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1949800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1949880 - msDS-NCReplCursors contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1949780 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1949680 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1949700 - msDS-MinimumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19495f0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19494f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1949570 - msDS-MaximumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1949460 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1949360 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19493e0 - msDS-LockoutObservationWindow contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19492d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19491d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1949250 - msDS-LockoutDuration contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1949150 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1949050 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19490d0 - msDS-LastSuccessfulInteractiveLogonTime contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1948fb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1948eb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948f30 - msDS-LastKnownRDN contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1948e30 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1948d30 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1948db0 - msDS-LastFailedInteractiveLogonTime contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1948ca0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1948ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948c20 - msDS-FilterContainers contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1948b20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1948a20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948aa0 - msDS-ExternalStore contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19489a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19488a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948920 - msDS-ExternalKey contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1948720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19487a0 - msDS-DnsRootAlias contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19486a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19485a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1948620 - msDS-Cached-Membership-Time-Stamp contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1948510 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1948410 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948490 - msDS-AzScopeName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948390 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1948290 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948310 - msDS-AzLDAPQuery contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948210 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1948110 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948190 - msDS-AzLastImportedBizRulePath contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1948080 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1947f80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1948000 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1947f00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1947e00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1947e80 - msDS-AzClassId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1947d80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1947c80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1947d00 - msDS-AzBizRuleLanguage contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1947c00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1947b00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1947b80 - msDS-AzBizRule contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1947a80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1947980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1947a00 - msDS-AzApplicationVersion contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19478f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19477f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1947870 - msDS-AzApplicationName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1947770 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1947670 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19476f0 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19475f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19474f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1947570 - msDS-Auxiliary-Classes contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1947470 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1947370 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19473f0 - msDS-AllowedToDelegateTo contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19472e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19471e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1947260 - msDS-AllowedDNSSuffixes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1947150 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1947050 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19470d0 - msDS-AdditionalSamAccountName contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1946fc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1946ec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1946f40 - msDS-AdditionalDnsHostName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1946e30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1946d30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1946db0 - msDFSR-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1946cb0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1946bb0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1946c30 - msDFSR-StagingSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1946b30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1946a30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1946ab0 - msDFSR-StagingPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19469b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19468b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1946930 - msDFSR-RootSizeInMb contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1946830 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1946730 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19467b0 - msDFSR-RootPath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19466b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19465b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1946630 - msDFSR-RdcMinFileSizeInKb contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1946520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1946420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19464a0 - msDFSR-OnDemandExclusionFileFilter contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1946390 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1946290 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1946310 - msDFSR-OnDemandExclusionDirectoryFilter contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x19461f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19460f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1946170 - msDFSR-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1946070 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1945f70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1945ff0 - msDFSR-FileFilter contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1945ef0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1945df0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1945e70 - msDFSR-DirectoryFilter contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1945d70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1945c70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1945cf0 - msDFSR-DfsPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1945bf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1945af0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1945b70 - msDFSR-DfsLinkTarget contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1945a70 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1945970 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19459f0 - msDFSR-DeletedSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19458f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19457f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1945870 - msDFSR-DeletedPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1945770 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1945670 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19456f0 - msDFSR-DefaultCompressionExclusionFilter contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x19455d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19454d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1945550 - msDFSR-ConflictSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1945440 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1945340 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19453c0 - msDFSR-ConflictPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19452c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19451c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1945240 - msDFSR-CommonStagingSizeInMb contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1945130 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1945030 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19450b0 - msDFSR-CommonStagingPath contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1944fa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1944ea0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944f20 - msDFS-ShortNameLinkPathv2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1944e10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1944d10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944d90 - msDFS-Propertiesv2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1944c90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1944b90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944c10 - msDFS-LinkPathv2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944b10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1944a10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944a90 - msDFS-Commentv2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1944990 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1944890 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944910 - mS-SQL-Vines contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1944810 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1944710 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944790 - mS-SQL-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1944690 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1944590 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944610 - mS-SQL-Type contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1944510 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1944410 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944490 - mS-SQL-TCPIP contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1944390 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1944290 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1944310 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1944210 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1944110 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944190 - mS-SQL-SPX contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1944090 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1943f90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1944010 - mS-SQL-SortOrder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943f10 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1943e10 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1943e90 - mS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1943d90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1943c90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943d10 - mS-SQL-ServiceAccount contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1943c10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1943b10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943b90 - mS-SQL-RegisteredOwner contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1943a90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1943990 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943a10 - mS-SQL-Publisher contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943910 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1943810 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943890 - mS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1943790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1943690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943710 - mS-SQL-NamedPipe contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943610 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1943510 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943590 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1943490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1943390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943410 - mS-SQL-MultiProtocol contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1943310 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1943210 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1943290 - mS-SQL-Memory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1943190 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1943090 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1943110 - mS-SQL-Location contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1943010 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942f10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942f90 - mS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1942e90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942d90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942e10 - mS-SQL-LastDiagnosticDate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1942d00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942c00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942c80 - mS-SQL-LastBackupDate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1942b80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942a80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942b00 - mS-SQL-Language contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1942a00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942900 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942980 - mS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1942880 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942800 - mS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1942700 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942600 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942680 - mS-SQL-GPSLongitude contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1942580 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942480 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942500 - mS-SQL-GPSLatitude contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1942400 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942300 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942380 - mS-SQL-GPSHeight contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942280 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942180 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942200 - mS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1942100 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1942000 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1942080 - mS-SQL-Database contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1941f80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1941e80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941f00 - mS-SQL-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1941e00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1941d00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941d80 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1941c80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1941b80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941c00 - mS-SQL-ConnectionURL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1941b00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1941a00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941a80 - mS-SQL-Applications contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1941980 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1941880 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941900 - mS-SQL-AppleTalk contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941800 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1941700 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941780 - mS-SQL-Alias contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1941680 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1941580 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941600 - ms-net-ieee-8023-GP-PolicyGUID contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x19414f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19413f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941470 - ms-net-ieee-8023-GP-PolicyData contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1941360 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1941260 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19412e0 - ms-net-ieee-80211-GP-PolicyGUID contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x19411d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19410d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1941150 - ms-net-ieee-80211-GP-PolicyData contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x1941040 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1940f40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1940fc0 - monikerDisplayName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1940ec0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1940dc0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1940e40 - modifiedCountAtLastProm contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1940d30 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1940c30 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1940cb0 - modifiedCount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1940bb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1940ab0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1940b30 - mobile contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1940a40 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1940940 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19409c0 - minTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19408c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19407c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1940840 - minPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1940740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1940640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19406c0 - middleName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19405c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19404c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1940540 - mhsORAddress contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1940440 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1940340 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19403c0 - meetingURL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19402c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19401c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1940240 - meetingType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1940140 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1940040 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19400c0 - meetingScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x193ffc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193fec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193ff40 - meetingRecurrence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x193fe40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193fd40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193fdc0 - meetingRating contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x193fcc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193fbc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193fc40 - meetingProtocol contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x193fb40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193fa40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193fac0 - meetingOwner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x193f9c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193f8c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193f940 - meetingOriginator contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x193f840 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193f740 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193f7c0 - meetingName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x193f6c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193f5c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193f640 - meetingLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x193f540 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193f440 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193f4c0 - meetingLanguage contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x193f3c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193f2c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193f340 - meetingKeyword contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x193f240 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193f140 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193f1c0 - meetingIsEncrypted contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x193f0c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193efc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193f040 - meetingIP contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x193ef40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193ee40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193eec0 - meetingID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x193edc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193ecc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193ed40 - meetingDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x193ec40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193eb40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193ebc0 - meetingContactInfo contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x193eac0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193e9c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193ea40 - meetingApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x193e940 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193e840 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193e8c0 - meetingAdvertiseScope contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x193e7c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193e6c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193e740 - mayContain contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x193e640 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193e540 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193e5c0 - maxTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x193e4c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193e3c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193e440 - maxStorage contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x193e340 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193e240 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193e2c0 - maxRenewAge contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x193e1c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193e0c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193e140 - maxPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x193e040 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193df40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193dfc0 - mailAddress contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x193dec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193ddc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193de40 - mail contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x193dd50 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193dc50 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193dcd0 - machinePasswordChangeInterval contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x193dbc0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193dac0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193db40 - lSAModifiedCount contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193da40 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193d940 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193d9c0 - lSACreationTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x193d8c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193d7c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193d840 - lockoutTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x193d740 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193d640 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193d6c0 - lockOutObservationWindow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x193d5b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193d4b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193d530 - lockoutDuration contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x193d430 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193d330 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193d3b0 - location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x193d2b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193d1b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193d230 - localizedDescription contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x193d130 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193d030 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193d0b0 - legacyExchangeDN contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193cfb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193ceb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193cf30 - lDAPDisplayName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x193ce30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193cd30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193cdb0 - lDAPAdminLimits contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x193ccb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193cbb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193cc30 - lastUpdateSequence contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x193cb30 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193ca30 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193cab0 - lastSetTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x193c9b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193c8b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193c930 - lastLogonTimestamp contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x193c830 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193c730 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193c7b0 - lastLogon contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x193c6b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193c5b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193c630 - lastLogoff contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x193c530 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193c430 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193c4b0 - lastContentIndexed contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x193c3b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x193c2b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193c330 - lastBackupRestorationTime contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x193c220 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193c120 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193c1a0 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x193c0a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193bfa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193c020 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x193bf30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193be30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193beb0 - knowledgeInformation contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x193bdb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193bcb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193bd30 - keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x193bc30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193bb30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193bbb0 - iPSECNegotiationPolicyType contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x193baa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193b9a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193ba20 - iPSECNegotiationPolicyAction contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x193b910 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193b810 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193b890 - ipsecName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x193b790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193b690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193b710 - ipsecID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193b610 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193b510 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193b590 - ipPhone contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x193b490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193b390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193b410 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x193b300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193b200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193b280 - initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x193b180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193b080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193b100 - initialAuthOutgoing contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x193b000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193af00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193af80 - initialAuthIncoming contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x193ae80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193ad80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193ae00 - info contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x193ad10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193ac10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193ac90 - indexedScopes contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x193ab90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193aa90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193ab10 - iconPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x193aa10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193a910 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193a990 - houseIdentifier contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x193a890 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193a790 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193a810 - host contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x193a720 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193a620 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193a6a0 - homePostalAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x193a5a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193a4a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193a520 - homePhone contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x193a420 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193a320 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193a3a0 - homeDrive contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x193a2a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193a1a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193a220 - homeDirectory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x193a120 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x193a020 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x193a0a0 - helpFileName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1939fa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1939ea0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1939f20 - groupsToIgnore contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1939e20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1939d20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1939da0 - groupPriority contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1939ca0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1939ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1939c20 - gPLink contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1939b30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1939a30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1939ab0 - gPCWQLFilter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19399b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19398b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1939930 - gPCUserExtensionNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1939830 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1939730 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19397b0 - gPCMachineExtensionNames contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19396a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19395a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1939620 - gPCFileSysPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1939520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1939420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19394a0 - governsID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19393a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19392a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1939320 - givenName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1939220 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1939120 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19391a0 - generationQualifier contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19390a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938fa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1939020 - fRSWorkingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1938f20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938e20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938ea0 - fRSVersion contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1938da0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938ca0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938d20 - fRSStagingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1938c20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938b20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938ba0 - fRSServiceCommandStatus contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1938a90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938990 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938a10 - fRSServiceCommand contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1938910 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938810 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938890 - fRSRootPath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1938790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938710 - fRSFileFilter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1938610 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938510 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938590 - fRSFaultCondition contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1938490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938410 - fRSDirectoryFilter contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1938310 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938210 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938290 - fRSControlOutboundBacklog contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1938180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1938080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1938100 - fRSControlInboundBacklog contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1937ff0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1937ef0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1937f70 - fRSControlDataCreation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1937e70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1937d70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1937df0 - friendlyNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1937cf0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1937bf0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1937c70 - forceLogoff contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1937b70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1937a70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1937af0 - flatName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19379f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19378f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1937970 - fileExtPriority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1937870 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1937770 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19377f0 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19376e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19375e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1937660 - extraColumns contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1937560 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1937460 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19374e0 - extensionName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19373e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19372e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1937360 - extendedClassInfo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1937260 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1937160 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19371e0 - extendedAttributeInfo contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19370e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1936fe0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1937060 - enrollmentProviders contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1936f60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1936e60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1936ee0 - employeeType contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1936de0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1936ce0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1936d60 - employeeNumber contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1936c60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1936b60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1936be0 - employeeID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1936ae0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19369e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1936a60 - dSUIAdminNotification contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1936960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1936860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19368e0 - dSHeuristics contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19367e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19366e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1936760 - driverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1936660 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1936560 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19365e0 - drink contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x19364f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19363f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1936470 - domainReplica contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1936370 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1936270 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19362f0 - documentVersion contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19361f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19360f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1936170 - documentTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1936070 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1935f70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1935ff0 - documentPublisher contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1935ef0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1935df0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1935e70 - documentLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1935d70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1935c70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1935cf0 - documentIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1935bf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1935af0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1935b70 - dnsRoot contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1935a70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1935970 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19359f0 - dNSHostName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19358f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19357f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1935870 - dmdName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1935770 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1935670 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19356f0 - division contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19355f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19354f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1935570 - dITContentRules contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1935470 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1935370 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19353f0 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19352f0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19351f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1935270 - dhcpUpdateTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1935170 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1935070 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19350f0 - dhcpUniqueKey contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1934ff0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1934ef0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1934f70 - dhcpObjName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1934e70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1934d70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1934df0 - dhcpObjDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1934cf0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1934bf0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1934c70 - dhcpMaxKey contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1934b70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1934a70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1934af0 - dhcpIdentification contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19349f0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19348f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1934970 - dhcpFlags contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1934870 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1934770 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19347f0 - desktopProfile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19346f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19345f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1934670 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1934570 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1934470 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19344f0 - departmentNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19343f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19342f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1934370 - department contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1934270 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1934170 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19341f0 - defaultSecurityDescriptor contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x19340e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1933fe0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1934060 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1933f70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1933e70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1933ef0 - creator contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1933df0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1933cf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1933d70 - creationWizard contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1933c70 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1933b70 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1933bf0 - creationTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1933af0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19339f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1933a70 - createWizardExt contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1933970 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1933870 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19338f0 - createDialog contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19337f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19336f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1933770 - contextMenu contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1933670 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1933570 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19335f0 - cOMUniqueLIBID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19334f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19333f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1933470 - cOMTypelibId contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1933370 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1933270 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19332f0 - cOMTreatAsClassId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19331f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19330f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1933170 - cOMProgID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1933070 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932f70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932ff0 - company contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1932ef0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932df0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932e70 - cOMOtherProgId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1932d70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932c70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932cf0 - comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1932bf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932af0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932b70 - cOMInterfaceID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1932a70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932970 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19329f0 - cOMCLSID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19328f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19327f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932870 - cOMClassID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1932770 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932670 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19326f0 - co contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1932600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932580 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1932490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932410 - classDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932310 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932210 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932290 - certificateTemplates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1932190 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1932090 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1932110 - cAWEBURL contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1932010 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1931f10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931f90 - cAUsages contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1931e90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1931d90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931e10 - categories contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1931d10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1931c10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931c90 - catalogs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1931b90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1931a90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931b10 - carLicense contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1931a10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1931910 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931990 - canUpgradeScript contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931890 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1931790 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931810 - canonicalName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1931710 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1931610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931690 - cAConnect contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1931590 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1931490 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931510 - cACertificateDN contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1931410 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1931310 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931390 - c contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x19312a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19311a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931220 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1931120 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1931020 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19310a0 - builtinModifiedCount contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1930fa0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1930ea0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1930f20 - builtinCreationTime contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1930e20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1930d20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1930da0 - buildingName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1930ca0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1930ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1930c20 - badPasswordTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1930b20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1930a20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1930aa0 - auxiliaryClass contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19309a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19308a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1930920 - attributeTypes contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1930820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1930720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19307a0 - attributeSyntax contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19306a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19305a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1930620 - attributeID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1930520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1930420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19304a0 - attributeDisplayNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19303a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19302a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1930320 - assetNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1930220 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1930120 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19301a0 - appliesTo contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x19300a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192ffa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1930020 - applicationName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x192ff20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192fe20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192fea0 - aNR contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x192fdb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192fcb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192fd30 - altSecurityIdentities contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x192fc30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192fb30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192fbb0 - allowedChildClassesEffective contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x192faa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192f9a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192fa20 - allowedChildClasses contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x192f920 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192f820 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192f8a0 - allowedAttributesEffective contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x192f790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192f690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192f710 - allowedAttributes contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x192f610 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192f510 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192f590 - adminPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x192f490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192f390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192f410 - adminMultiselectPropertyPages contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x192f300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192f200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192f280 - adminDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192f180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192f080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192f100 - adminDescription contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192f000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192ef00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192ef80 - adminContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192ee80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192ed80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192ee00 - addressType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x192ed00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192ec00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192ec80 - additionalTrustedServiceNames contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x192eb70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192ea70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192eaf0 - aCSTimeOfDay contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x192e9f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192e8f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192e970 - aCSServerList contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x192e870 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192e770 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192e7f0 - aCSRSVPLogFilesLocation contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x192e6e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192e5e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192e660 - aCSRSVPAccountFilesLocation contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x192e550 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192e450 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192e4d0 - aCSPolicyName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x192e3d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192e2d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192e350 - aCSPermissionBits contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x192e250 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192e150 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192e1d0 - aCSNonReservedTxSize contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x192e0d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192dfd0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192e050 - aCSNonReservedTxLimit contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x192df50 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192de50 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192ded0 - aCSNonReservedTokenSize contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x192ddc0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192dcc0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192dd40 - aCSNonReservedPeakRate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x192dc40 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192db40 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192dbc0 - aCSNonReservedMinPolicedSize contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x192dab0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192d9b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192da30 - aCSNonReservedMaxSDUSize contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x192d920 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192d820 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192d8a0 - aCSMinimumPolicedSize contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x192d7a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192d6a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192d720 - aCSMinimumLatency contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x192d620 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192d520 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192d5a0 - aCSMinimumDelayVariation contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x192d490 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192d390 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192d410 - aCSMaxTokenRatePerFlow contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x192d310 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192d210 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192d290 - aCSMaxTokenBucketPerFlow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x192d180 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192d080 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192d100 - aCSMaxPeakBandwidthPerFlow contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x192cff0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192cef0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192cf70 - aCSMaxPeakBandwidth contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x192ce70 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192cd70 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192cdf0 - aCSMaximumSDUSize contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x192ccf0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192cbf0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192cc70 - aCSMaxAggregatePeakRatePerUser contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x192cb60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192ca60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192cae0 - aCSIdentityName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x192c9e0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192c8e0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192c960 - aCSAllocableRSVPBandwidth contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x192c850 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192c750 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192c7d0 - aCSAggregateTokenRatePerUser contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x192c6c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x192c5c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x192c640 - accountNameHistory contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x192c540 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x192c440 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x192c4c0 - accountExpires contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x192c3c0 - struct ldb_dn contains 84 bytes in 2 blocks (ref 0) d=(nil) 0x19279b0 - @ATTRIBUTES contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1927a70 - struct ldb_message contains 3939 bytes in 127 blocks (ref 0) d=(nil) 0x1922050 - struct ldb_message_element contains 3832 bytes in 124 blocks (ref 0) d=(nil) 0x1923230 - struct ldb_val contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x1927700 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1927780 - @IDXVERSION contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1927680 - struct ldb_val contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x1927590 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1927610 - @IDXONE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1927510 - struct ldb_val contains 3671 bytes in 116 blocks (ref 0) d=(nil) 0x1923380 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1927490 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1927410 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1927390 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1927320 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19272a0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1927220 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19271a0 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1927120 - ../lib/ldb/common/ldb_pack.c:264 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x19270b0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1927030 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1926fb0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1926f30 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1926eb0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1926e30 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1926db0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1926d30 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1926cb0 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1926c30 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1926bb0 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1926b30 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1926ab0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1926a30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19269b0 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1926940 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x19268c0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1926840 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19267b0 - ../lib/ldb/common/ldb_pack.c:264 contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1926720 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x19266a0 - ../lib/ldb/common/ldb_pack.c:264 contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1926610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1926590 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1926510 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1926490 - ../lib/ldb/common/ldb_pack.c:264 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1926400 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1926370 - ../lib/ldb/common/ldb_pack.c:264 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19262e0 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1926260 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19261e0 - ../lib/ldb/common/ldb_pack.c:264 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1926150 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19260d0 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1926050 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1925fd0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1925f50 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1925ed0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1925e50 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1925dd0 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1925d50 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1925cc0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1925c40 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1925bb0 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1925b20 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1925aa0 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1925a20 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19259a0 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1925910 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1925880 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1925800 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1925780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1925700 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1925680 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1925600 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1925580 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1925500 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1925480 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1925400 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1925380 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1925300 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1925280 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1925200 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1925180 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1925100 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1925080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1925000 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1924f80 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1924f00 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1924e80 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1924e00 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1924d80 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1924d00 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1924c80 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1924c00 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1924b80 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1924b00 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1924a80 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1924a00 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1924980 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1924910 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1924890 - ../lib/ldb/common/ldb_pack.c:264 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1924800 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1924780 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1924700 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1924680 - ../lib/ldb/common/ldb_pack.c:264 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1924610 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1924590 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1924510 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1924490 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1924410 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1924390 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1924310 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1924290 - ../lib/ldb/common/ldb_pack.c:264 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1924210 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1924190 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1924110 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19240a0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1924020 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1923fa0 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1923f20 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1923ea0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1923e20 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1923da0 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1923d20 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1923ca0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1923c20 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1923ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1923b20 - @IDXATTR contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1923300 - struct ldb_dn contains 83 bytes in 2 blocks (ref 0) d=(nil) 0x19230f0 - @INDEXLIST contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19231b0 - struct ltdb_wrap contains 40 bytes in 1 blocks (ref 0) d=0x2af290dc12e8 0x18968d0 - /home/rusty/samba/st/fl2000dc/private/sam.ldb.d/CN=SCHEMA,CN=CONFIGURATION,DC=SAMBA2000,DC=EXAMPLE,DC=COM.ldb contains 110 bytes in 1 blocks (ref 0) d=(nil) 0x1896730 - struct dsdb_control_current_partition contains 560 bytes in 25 blocks (ref 0) d=(nil) 0x189eee0 - struct ldb_dn contains 544 bytes in 24 blocks (ref 0) d=(nil) 0x19640c0 - char contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x19675f0 - struct ldb_dn_component contains 356 bytes in 21 blocks (ref 0) d=(nil) 0x1963f20 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1963890 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1963e30 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1963ea0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1963d40 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1963db0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1963c50 - CONFIGURATION contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1963500 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1963b50 - SCHEMA contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1963cc0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1963590 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1963a60 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19639f0 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1963ad0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1963490 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1963810 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19637a0 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1963720 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19636b0 - Schema contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1963640 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19227a0 - CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x1964180 - struct dsdb_partition contains 51816 bytes in 1897 blocks (ref 0) d=(nil) 0x1896a90 - ../lib/ldb/common/ldb_pack.c:264 contains 110 bytes in 1 blocks (ref 0) d=(nil) 0x189d4d0 - partition_next contains 51086 bytes in 1873 blocks (ref 0) d=(nil) 0x1896e80 - ldb_tdb backend contains 51046 bytes in 1872 blocks (ref 0) d=(nil) 0x1895760 - struct ltdb_private contains 51006 bytes in 1871 blocks (ref 0) d=(nil) 0x1895530 - struct ltdb_cache contains 50894 bytes in 1869 blocks (ref 0) d=(nil) 0x1895800 - struct ldb_message contains 46931 bytes in 1741 blocks (ref 0) d=(nil) 0x1895890 - struct ldb_message_element contains 46823 bytes in 1738 blocks (ref 0) d=(nil) 0x18e6010 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1921090 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1921110 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1921010 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1920f10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1920f90 - wWWHomePage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1920e90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1920d90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1920e10 - wbemPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1920d10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1920c10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1920c90 - vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1920ba0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1920aa0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1920b20 - uSNSource contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1920a20 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1920920 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19209a0 - uSNLastObjRem contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19208a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19207a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1920820 - uSNDSALastObjRemoved contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1920720 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1920620 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19206a0 - uSNCreated contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19205a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19204a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1920520 - uSNChanged contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1920420 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1920320 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19203a0 - userWorkstations contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19202a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19201a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1920220 - userSharedFolderOther contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1920120 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1920020 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19200a0 - userSharedFolder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191ffa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191fea0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191ff20 - userPrincipalName contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x191fe20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191fd20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191fda0 - userParameters contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x191fca0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191fba0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191fc20 - userClass contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x191fb20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191fa20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191faa0 - url contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x191f9b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191f8b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191f930 - uPNSuffixes contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x191f830 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191f730 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191f7b0 - unstructuredAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x191f6b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191f5b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191f630 - uniqueIdentifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191f530 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191f430 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191f4b0 - uNCName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x191f3b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191f2b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191f330 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x191f240 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191f140 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191f1c0 - trustPartner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x191f0c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191efc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191f040 - treeName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x191ef40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191ee40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191eec0 - transportDLLName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191edc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191ecc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191ed40 - transportAddressAttribute contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x191ec30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191eb30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191ebb0 - title contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x191eac0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x191e9c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x191ea40 - timeVolChange contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x191e940 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x191e840 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x191e8c0 - timeRefresh contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x191e7c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191e6c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191e740 - textEncodedORAddress contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x191e640 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191e540 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191e5c0 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x191e4c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191e3c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191e440 - systemPossSuperiors contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x191e340 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191e240 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191e2c0 - systemMustContain contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x191e1c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191e0c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191e140 - systemMayContain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191e040 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191df40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191dfc0 - systemAuxiliaryClass contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x191dec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191ddc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191de40 - superScopeDescription contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x191dd40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191dc40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191dcc0 - superiorDNSRoot contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x191dbc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191dac0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191db40 - subClassOf contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x191da40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191d940 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191d9c0 - structuralObjectClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x191d8c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191d7c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191d840 - streetAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x191d740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191d640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191d6c0 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x191d5d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191d4d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191d550 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x191d460 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191d360 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191d3e0 - sPNMappings contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x191d2e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191d1e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191d260 - sn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x191d170 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191d070 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191d0f0 - signatureAlgorithms contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x191cff0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191cef0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191cf70 - shortServerName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x191ce70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191cd70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191cdf0 - shellPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x191ccf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191cbf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191cc70 - shellContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191cb70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191ca70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191caf0 - setupCommand contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x191c9f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191c8f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191c970 - servicePrincipalName contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x191c870 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191c770 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191c7f0 - serviceDNSNameType contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x191c6f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191c5f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191c670 - serviceDNSName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x191c570 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191c470 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191c4f0 - serviceClassName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191c3f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191c2f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191c370 - serviceBindingInformation contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x191c260 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191c160 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191c1e0 - serverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x191c0e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191bfe0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191c060 - scriptPath contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x191bf60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191be60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191bee0 - sAMAccountName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x191bde0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191bce0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191bd60 - rpcNsTransferSyntax contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x191bc60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191bb60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191bbe0 - rpcNsProfileEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x191bae0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191b9e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191ba60 - rpcNsObjectID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x191b960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191b860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191b8e0 - rpcNsInterfaceID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191b7e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191b6e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191b760 - rpcNsGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x191b660 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191b560 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191b5e0 - rpcNsCodeset contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x191b4e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191b3e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191b460 - rpcNsBindings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x191b360 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191b260 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191b2e0 - rpcNsAnnotation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x191b1e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191b0e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191b160 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x191b060 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191af60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191afe0 - rightsGuid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x191aee0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x191ade0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x191ae60 - rIDUsedPool contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x191ad60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x191ac60 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x191ace0 - rIDPreviousAllocationPool contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x191abd0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x191aad0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x191ab50 - rIDAvailablePool contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191aa50 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x191a950 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x191a9d0 - rIDAllocationPool contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x191a8d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191a7d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191a850 - replicaSource contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x191a750 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191a650 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191a6d0 - remoteStorageGUID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x191a5d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191a4d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191a550 - remoteSource contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x191a450 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191a350 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191a3d0 - remoteServerName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191a2d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191a1d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191a250 - rDNAttID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x191a150 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x191a050 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x191a0d0 - queryPoint contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1919fd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1919ed0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1919f50 - queryFilter contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1919e50 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1919d50 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1919dd0 - pwdLastSet contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1919cd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1919bd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1919c50 - purportedSearch contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1919b50 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1919a50 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1919ad0 - proxyLifetime contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19199d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19198d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1919950 - proxyAddresses contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1919850 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1919750 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19197d0 - profilePath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19196d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19195d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1919650 - privilegeValue contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1919550 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1919450 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19194d0 - privilegeDisplayName contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x19193d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19192d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1919350 - priorSetTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1919250 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1919150 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19191d0 - printStatus contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19190d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1918fd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1919050 - printSpooling contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1918f50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1918e50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1918ed0 - printShareName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1918dd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1918cd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1918d50 - printSeparatorFile contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1918c50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1918b50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1918bd0 - printRateUnit contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1918ad0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19189d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1918a50 - printOwner contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1918950 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1918850 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19188d0 - printOrientationsSupported contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x19187c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19186c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1918740 - printNotify contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1918640 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1918540 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19185c0 - printNetworkAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19184c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19183c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1918440 - printMediaSupported contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1918340 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1918240 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19182c0 - printMediaReady contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19181c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19180c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1918140 - printMACAddress contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1918040 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1917f40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1917fc0 - printLanguage contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1917ec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1917dc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1917e40 - printFormName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1917d40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1917c40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1917cc0 - printerName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1917bc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1917ac0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1917b40 - printBinNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1917a40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1917940 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19179c0 - primaryTelexNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19178c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19177c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1917840 - primaryInternationalISDNNumber contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1917730 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1917630 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19176b0 - presentationAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19175b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19174b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1917530 - preferredLanguage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1917430 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1917330 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19173b0 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19172b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19171b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1917230 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1917130 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1917030 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19170b0 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1916fb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1916eb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1916f30 - possSuperiors contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1916e30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1916d30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1916db0 - possibleInferiors contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1916cb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1916bb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1916c30 - portName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1916b30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1916a30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1916ab0 - pKIExtendedKeyUsage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19169b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19168b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1916930 - pKIDefaultCSPs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1916830 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1916730 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19167b0 - pKICriticalExtensions contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19166b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19165b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1916630 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1916520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1916420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19164a0 - personalTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19163a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19162a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1916320 - pekKeyChangeInterval contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1916220 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1916120 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19161a0 - pager contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x19160b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1915fb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1916030 - packageName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1915f30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1915e30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1915eb0 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1915dc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1915cc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1915d40 - otherTelephone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1915c40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1915b40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1915bc0 - otherPager contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1915ac0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19159c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1915a40 - otherMobile contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1915940 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1915840 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19158c0 - otherMailbox contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19157c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19156c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1915740 - otherLoginWorkstations contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1915640 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1915540 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19155c0 - otherIpPhone contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19154c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19153c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1915440 - otherHomePhone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1915340 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1915240 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19152c0 - otherFacsimileTelephoneNumber contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19151b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19150b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1915130 - organizationalStatus contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1915030 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1914f30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1914fb0 - optionDescription contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1914eb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1914db0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1914e30 - operatingSystemVersion contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1914d30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1914c30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1914cb0 - operatingSystemServicePack contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1914ba0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1914aa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1914b20 - operatingSystemHotfix contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1914a20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1914920 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19149a0 - operatingSystem contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19148a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19147a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1914820 - oEMInformation contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1914720 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1914620 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19146a0 - objectClasses contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19145a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19144a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1914520 - objectClass contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1914420 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1914320 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19143a0 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x19142b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19141b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1914230 - notes contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1914140 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1914040 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19140c0 - networkAddress contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1913fc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1913ec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913f40 - netbootTools contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1913e40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1913d40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913dc0 - netbootSIFFile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1913cc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1913bc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913c40 - netbootNewMachineNamingPolicy contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1913b30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1913a30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913ab0 - netbootMirrorDataFile contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19139b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19138b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913930 - netbootMachineFilePath contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1913830 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1913730 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19137b0 - netbootLocallyInstalledOSes contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x19136a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19135a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913620 - netbootIntelliMirrorOSes contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1913510 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1913410 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913490 - netbootInitialization contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1913390 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1913290 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913310 - nETBIOSName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1913210 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1913110 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913190 - name contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x19130a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912fa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1913020 - mustContain contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1912f20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912e20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912ea0 - msWMI-TargetType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912da0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912ca0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912d20 - msWMI-TargetPath contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912c20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912b20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912ba0 - msWMI-TargetNameSpace contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1912aa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19129a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912a20 - msWMI-TargetClass contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1912920 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912820 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19128a0 - msWMI-StringValidValues contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1912790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912710 - msWMI-StringDefault contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1912610 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912510 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912590 - msWMI-SourceOrganization contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1912480 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912380 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912400 - msWMI-ScopeGuid contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1912300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912280 - msWMI-QueryLanguage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1912180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1912080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1912100 - msWMI-Query contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1912000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1911f00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1911f80 - msWMI-PropertyName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1911e80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1911d80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1911e00 - msWMI-Parm4 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1911d00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1911c00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1911c80 - msWMI-Parm3 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1911b80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1911a80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1911b00 - msWMI-Parm2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1911a00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1911900 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1911980 - msWMI-Parm1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1911880 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1911780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1911800 - msWMI-NormalizedClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1911700 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1911600 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1911680 - msWMI-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1911580 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1911480 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1911500 - msWMI-Mof contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1911400 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1911300 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1911380 - msWMI-Int8ValidValues contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1911280 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1911180 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1911200 - msWMI-Int8Min contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1911100 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1911000 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1911080 - msWMI-Int8Max contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1910f80 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1910e80 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1910f00 - msWMI-Int8Default contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1910e00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1910d00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910d80 - msWMI-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1910c80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1910b80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910c00 - msWMI-CreationDate contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1910b00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1910a00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910a80 - msWMI-ClassDefinition contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1910980 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1910880 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910900 - msWMI-Class contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1910800 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1910700 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910780 - msWMI-ChangeDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910680 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1910580 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910600 - msWMI-Author contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1910500 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1910400 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910480 - msTSWorkDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1910380 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1910280 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910300 - msTSProperty02 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1910200 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1910100 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910180 - msTSProperty01 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1910080 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190ff80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1910000 - msTSProfilePath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x190ff00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190fe00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190fe80 - msTSManagingLS4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x190fd80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190fc80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190fd00 - msTSManagingLS3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x190fc00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190fb00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190fb80 - msTSManagingLS2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x190fa80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190f980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190fa00 - msTSManagingLS contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x190f900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190f800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190f880 - msTSLSProperty02 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190f780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190f680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190f700 - msTSLSProperty01 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190f600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190f500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190f580 - msTSLicenseVersion4 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x190f480 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190f380 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190f400 - msTSLicenseVersion3 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x190f300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190f200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190f280 - msTSLicenseVersion2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x190f180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190f080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190f100 - msTSLicenseVersion contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x190f000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190ef00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190ef80 - msTSInitialProgram contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x190ee80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190ed80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190ee00 - msTSHomeDrive contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x190ed00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190ec00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190ec80 - msTSHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x190eb80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190ea80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190eb00 - msTSEndpointPlugin contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x190ea00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190e900 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190e980 - msTSEndpointData contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190e880 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190e780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190e800 - msTPM-OwnerInformation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x190e700 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190e600 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190e680 - msTAPI-uid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x190e580 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190e480 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190e500 - msTAPI-ProtocolId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x190e400 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190e300 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190e380 - msTAPI-IpAddress contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190e280 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190e180 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190e200 - msSFU30SearchContainer contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x190e100 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190e000 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190e080 - msSFU30SearchAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x190df70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190de70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190def0 - msSFU30ResultAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x190dde0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190dce0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190dd60 - msSFU30OrderNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x190dc60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190db60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190dbe0 - msSFU30MasterServerName contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x190dad0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190d9d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190da50 - msSFU30MapFilter contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190d950 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190d850 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190d8d0 - msSFU30KeyAttributes contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x190d7d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190d6d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190d750 - msSFU30IntraFieldSeparator contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x190d640 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190d540 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190d5c0 - msSFU30FieldSeparator contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x190d4c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190d3c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190d440 - msRRASVendorAttributeEntry contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x190d330 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190d230 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190d2b0 - msRRASAttribute contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x190d1b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190d0b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190d130 - msPKI-Supersede-Templates contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x190d020 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190cf20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190cfa0 - msPKI-Site-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x190cea0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190cda0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190ce20 - msPKI-RA-Policies contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x190cd20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190cc20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190cca0 - msPKI-RA-Application-Policies contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x190cb90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190ca90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190cb10 - msPKI-OIDLocalizedName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x190ca10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190c910 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190c990 - msPKI-OID-User-Notice contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x190c890 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190c790 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190c810 - msPKI-OID-CPS contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x190c710 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190c610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190c690 - msPKI-Enrollment-Servers contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x190c580 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190c480 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190c500 - msPKI-Certificate-Policy contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x190c3f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190c2f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190c370 - msPKI-Certificate-Application-Policy contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x190c260 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190c160 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190c1e0 - msPKI-Cert-Template-OID contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x190c0d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190bfd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190c050 - mSMQSiteNameEx contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x190bf50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190be50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190bed0 - mSMQSiteName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x190bdd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190bcd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190bd50 - mSMQQueueNameExt contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190bc50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190bb50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190bbd0 - mSMQLabelEx contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x190bad0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190b9d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190ba50 - mSMQLabel contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x190b950 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190b850 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190b8d0 - mSMQCSPName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x190b7d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190b6d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190b750 - mSMQComputerTypeEx contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x190b650 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190b550 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190b5d0 - mSMQComputerType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190b4d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190b3d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190b450 - msMQ-Recipient-FormatName contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x190b340 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190b240 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190b2c0 - MSMQ-MulticastAddress contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x190b1c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190b0c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190b140 - msiScriptPath contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x190b040 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190af40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190afc0 - msiScriptName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x190aec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190adc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190ae40 - msImaging-PSPString contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x190ad40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190ac40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190acc0 - msIIS-FTPRoot contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x190abc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190aac0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190ab40 - msIIS-FTPDir contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x190aa40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190a940 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190a9c0 - msiFileList contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x190a8c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190a7c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190a840 - msieee80211-ID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x190a740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190a640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190a6c0 - msFVE-RecoveryPassword contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x190a5c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190a4c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190a540 - msFRS-Topology-Pref contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x190a440 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190a340 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190a3c0 - msExchLabeledURI contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190a2c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190a1c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190a240 - msExchHouseIdentifier contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x190a140 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x190a040 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x190a0c0 - msExchAssistantName contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1909fc0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1909ec0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1909f40 - msDS-USNLastSyncSuccess contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1909e30 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1909d30 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1909db0 - msDS-UserPasswordExpiryTimeComputed contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1909ca0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1909ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1909c20 - msDS-UpdateScript contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1909b20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1909a20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1909aa0 - msDS-TopQuotaUsage contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19099a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19098a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1909920 - msDS-SPNSuffixes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1909820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1909720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19097a0 - msDS-SourceObjectDN contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19096a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19095a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1909620 - msDS-SiteName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1909520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1909420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19094a0 - msDS-Settings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19093a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19092a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1909320 - msDS-Security-Group-Extra-Classes contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1909210 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1909110 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1909190 - msDS-ReplValueMetaData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1909090 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1908f90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1909010 - msDS-ReplAttributeMetaData contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1908f00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1908e00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1908e80 - msDS-PromotionSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1908d80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1908c80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1908d00 - msDS-PrincipalName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1908c00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1908b00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1908b80 - msDS-PhoneticLastName contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1908a80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1908980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1908a00 - msDS-PhoneticFirstName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1908900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1908800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1908880 - msDS-PhoneticDisplayName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1908770 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1908670 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19086f0 - msDS-PhoneticDepartment contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x19085e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19084e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1908560 - msDS-PhoneticCompanyName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1908450 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1908350 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19083d0 - msDS-Other-Settings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19082d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19081d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1908250 - msDS-Non-Security-Group-Extra-Classes contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x1908140 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1908040 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19080c0 - msDS-NCReplOutboundNeighbors contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1907fb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1907eb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1907f30 - msDS-NCReplInboundNeighbors contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1907e20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1907d20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1907da0 - msDS-NCReplCursors contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1907ca0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1907ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1907c20 - msDS-MinimumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1907b10 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1907a10 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1907a90 - msDS-MaximumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1907980 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1907880 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1907900 - msDS-LockoutObservationWindow contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19077f0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19076f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1907770 - msDS-LockoutDuration contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1907670 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1907570 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19075f0 - msDS-LastSuccessfulInteractiveLogonTime contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x19074d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19073d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1907450 - msDS-LastKnownRDN contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1907350 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1907250 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19072d0 - msDS-LastFailedInteractiveLogonTime contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x19071c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19070c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1907140 - msDS-FilterContainers contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1907040 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1906f40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1906fc0 - msDS-ExternalStore contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1906ec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1906dc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1906e40 - msDS-ExternalKey contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1906d40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1906c40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1906cc0 - msDS-DnsRootAlias contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1906bc0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1906ac0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1906b40 - msDS-Cached-Membership-Time-Stamp contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1906a30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1906930 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19069b0 - msDS-AzScopeName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19068b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19067b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1906830 - msDS-AzLDAPQuery contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1906730 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1906630 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19066b0 - msDS-AzLastImportedBizRulePath contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x19065a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19064a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1906520 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1906420 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1906320 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19063a0 - msDS-AzClassId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19062a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19061a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1906220 - msDS-AzBizRuleLanguage contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1906120 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1906020 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19060a0 - msDS-AzBizRule contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1905fa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1905ea0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1905f20 - msDS-AzApplicationVersion contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1905e10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1905d10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1905d90 - msDS-AzApplicationName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1905c90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1905b90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1905c10 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1905b10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1905a10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1905a90 - msDS-Auxiliary-Classes contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1905990 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1905890 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1905910 - msDS-AllowedToDelegateTo contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1905800 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1905700 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1905780 - msDS-AllowedDNSSuffixes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1905670 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1905570 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19055f0 - msDS-AdditionalSamAccountName contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x19054e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19053e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1905460 - msDS-AdditionalDnsHostName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1905350 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1905250 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19052d0 - msDFSR-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19051d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19050d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1905150 - msDFSR-StagingSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1905050 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1904f50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1904fd0 - msDFSR-StagingPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1904ed0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1904dd0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1904e50 - msDFSR-RootSizeInMb contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1904d50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1904c50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1904cd0 - msDFSR-RootPath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1904bd0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1904ad0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1904b50 - msDFSR-RdcMinFileSizeInKb contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1904a40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1904940 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19049c0 - msDFSR-OnDemandExclusionFileFilter contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x19048b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19047b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1904830 - msDFSR-OnDemandExclusionDirectoryFilter contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1904710 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1904610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1904690 - msDFSR-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1904590 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1904490 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1904510 - msDFSR-FileFilter contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1904410 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1904310 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1904390 - msDFSR-DirectoryFilter contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1904290 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1904190 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1904210 - msDFSR-DfsPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1904110 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1904010 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1904090 - msDFSR-DfsLinkTarget contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1903f90 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1903e90 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1903f10 - msDFSR-DeletedSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1903e10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1903d10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1903d90 - msDFSR-DeletedPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1903c90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1903b90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1903c10 - msDFSR-DefaultCompressionExclusionFilter contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x1903af0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19039f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1903a70 - msDFSR-ConflictSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1903960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1903860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19038e0 - msDFSR-ConflictPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x19037e0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19036e0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1903760 - msDFSR-CommonStagingSizeInMb contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1903650 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1903550 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19035d0 - msDFSR-CommonStagingPath contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x19034c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19033c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1903440 - msDFS-ShortNameLinkPathv2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1903330 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1903230 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19032b0 - msDFS-Propertiesv2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x19031b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19030b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1903130 - msDFS-LinkPathv2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1903030 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1902f30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1902fb0 - msDFS-Commentv2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1902eb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1902db0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1902e30 - mS-SQL-Vines contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1902d30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1902c30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1902cb0 - mS-SQL-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1902bb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1902ab0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1902b30 - mS-SQL-Type contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1902a30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1902930 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19029b0 - mS-SQL-TCPIP contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x19028b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x19027b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1902830 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1902730 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1902630 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19026b0 - mS-SQL-SPX contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x19025b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19024b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1902530 - mS-SQL-SortOrder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1902430 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1902330 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19023b0 - mS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19022b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19021b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1902230 - mS-SQL-ServiceAccount contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1902130 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1902030 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19020b0 - mS-SQL-RegisteredOwner contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1901fb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1901eb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901f30 - mS-SQL-Publisher contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901e30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1901d30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901db0 - mS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1901cb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1901bb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901c30 - mS-SQL-NamedPipe contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901b30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1901a30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901ab0 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x19019b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19018b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901930 - mS-SQL-MultiProtocol contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1901830 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1901730 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x19017b0 - mS-SQL-Memory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x19016b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19015b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901630 - mS-SQL-Location contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1901530 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1901430 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19014b0 - mS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x19013b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19012b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901330 - mS-SQL-LastDiagnosticDate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1901220 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1901120 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19011a0 - mS-SQL-LastBackupDate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x19010a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1900fa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1901020 - mS-SQL-Language contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1900f20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1900e20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1900ea0 - mS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1900da0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1900ca0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1900d20 - mS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1900c20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1900b20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1900ba0 - mS-SQL-GPSLongitude contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1900aa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19009a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1900a20 - mS-SQL-GPSLatitude contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1900920 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1900820 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19008a0 - mS-SQL-GPSHeight contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19007a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19006a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1900720 - mS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1900620 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1900520 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19005a0 - mS-SQL-Database contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x19004a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19003a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1900420 - mS-SQL-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1900320 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1900220 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x19002a0 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x19001a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x19000a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1900120 - mS-SQL-ConnectionURL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1900020 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fff20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fffa0 - mS-SQL-Applications contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18ffea0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ffda0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ffe20 - mS-SQL-AppleTalk contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ffd20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ffc20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ffca0 - mS-SQL-Alias contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18ffba0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ffaa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ffb20 - ms-net-ieee-8023-GP-PolicyGUID contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x18ffa10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ff910 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ff990 - ms-net-ieee-8023-GP-PolicyData contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x18ff880 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ff780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ff800 - ms-net-ieee-80211-GP-PolicyGUID contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x18ff6f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ff5f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ff670 - ms-net-ieee-80211-GP-PolicyData contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x18ff560 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ff460 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ff4e0 - monikerDisplayName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18ff3e0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ff2e0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ff360 - modifiedCountAtLastProm contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18ff250 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ff150 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ff1d0 - modifiedCount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18ff0d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fefd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ff050 - mobile contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x18fef60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fee60 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18feee0 - minTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18fede0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fece0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fed60 - minPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18fec60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18feb60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18febe0 - middleName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18feae0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fe9e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fea60 - mhsORAddress contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18fe960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fe860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fe8e0 - meetingURL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18fe7e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fe6e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fe760 - meetingType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18fe660 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fe560 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fe5e0 - meetingScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18fe4e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fe3e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fe460 - meetingRecurrence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18fe360 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fe260 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fe2e0 - meetingRating contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18fe1e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fe0e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fe160 - meetingProtocol contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18fe060 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fdf60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fdfe0 - meetingOwner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18fdee0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fdde0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fde60 - meetingOriginator contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18fdd60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fdc60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fdce0 - meetingName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18fdbe0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fdae0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fdb60 - meetingLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18fda60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fd960 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fd9e0 - meetingLanguage contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18fd8e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fd7e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fd860 - meetingKeyword contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18fd760 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fd660 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fd6e0 - meetingIsEncrypted contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18fd5e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fd4e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fd560 - meetingIP contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18fd460 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fd360 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fd3e0 - meetingID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18fd2e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fd1e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fd260 - meetingDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18fd160 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fd060 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fd0e0 - meetingContactInfo contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18fcfe0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fcee0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fcf60 - meetingApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18fce60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fcd60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fcde0 - meetingAdvertiseScope contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18fcce0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fcbe0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fcc60 - mayContain contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18fcb60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fca60 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fcae0 - maxTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18fc9e0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fc8e0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fc960 - maxStorage contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18fc860 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fc760 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fc7e0 - maxRenewAge contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18fc6e0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fc5e0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fc660 - maxPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18fc560 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fc460 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fc4e0 - mailAddress contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18fc3e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fc2e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fc360 - mail contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x18fc270 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fc170 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fc1f0 - machinePasswordChangeInterval contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x18fc0e0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fbfe0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fc060 - lSAModifiedCount contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fbf60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fbe60 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fbee0 - lSACreationTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18fbde0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fbce0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fbd60 - lockoutTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18fbc60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fbb60 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fbbe0 - lockOutObservationWindow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18fbad0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fb9d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fba50 - lockoutDuration contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18fb950 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fb850 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fb8d0 - location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18fb7d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fb6d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fb750 - localizedDescription contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18fb650 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fb550 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fb5d0 - legacyExchangeDN contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fb4d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fb3d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fb450 - lDAPDisplayName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18fb350 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fb250 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fb2d0 - lDAPAdminLimits contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18fb1d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fb0d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fb150 - lastUpdateSequence contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18fb050 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18faf50 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fafd0 - lastSetTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18faed0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fadd0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fae50 - lastLogonTimestamp contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18fad50 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fac50 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18facd0 - lastLogon contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18fabd0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18faad0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fab50 - lastLogoff contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18faa50 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fa950 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fa9d0 - lastContentIndexed contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18fa8d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18fa7d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18fa850 - lastBackupRestorationTime contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18fa740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fa640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fa6c0 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18fa5c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fa4c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fa540 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x18fa450 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fa350 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fa3d0 - knowledgeInformation contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18fa2d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fa1d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fa250 - keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18fa150 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18fa050 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18fa0d0 - iPSECNegotiationPolicyType contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x18f9fc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f9ec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f9f40 - iPSECNegotiationPolicyAction contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x18f9e30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f9d30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f9db0 - ipsecName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18f9cb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f9bb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f9c30 - ipsecID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f9b30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f9a30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f9ab0 - ipPhone contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f99b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f98b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f9930 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18f9820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f9720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f97a0 - initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18f96a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f95a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f9620 - initialAuthOutgoing contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18f9520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f9420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f94a0 - initialAuthIncoming contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18f93a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f92a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f9320 - info contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x18f9230 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f9130 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f91b0 - indexedScopes contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18f90b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f8fb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f9030 - iconPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18f8f30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f8e30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f8eb0 - houseIdentifier contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18f8db0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f8cb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f8d30 - host contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x18f8c40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f8b40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f8bc0 - homePostalAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18f8ac0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f89c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f8a40 - homePhone contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18f8940 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f8840 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f88c0 - homeDrive contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18f87c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f86c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f8740 - homeDirectory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18f8640 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f8540 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f85c0 - helpFileName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18f84c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f83c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f8440 - groupsToIgnore contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f8340 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f8240 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f82c0 - groupPriority contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18f81c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f80c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f8140 - gPLink contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x18f8050 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f7f50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f7fd0 - gPCWQLFilter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18f7ed0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f7dd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f7e50 - gPCUserExtensionNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18f7d50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f7c50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f7cd0 - gPCMachineExtensionNames contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18f7bc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f7ac0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f7b40 - gPCFileSysPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f7a40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f7940 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f79c0 - governsID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18f78c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f77c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f7840 - givenName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18f7740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f7640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f76c0 - generationQualifier contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18f75c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f74c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f7540 - fRSWorkingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f7440 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f7340 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f73c0 - fRSVersion contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18f72c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f71c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f7240 - fRSStagingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f7140 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f7040 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f70c0 - fRSServiceCommandStatus contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18f6fb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f6eb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f6f30 - fRSServiceCommand contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18f6e30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f6d30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f6db0 - fRSRootPath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18f6cb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f6bb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f6c30 - fRSFileFilter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18f6b30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f6a30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f6ab0 - fRSFaultCondition contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18f69b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f68b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f6930 - fRSDirectoryFilter contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18f6830 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f6730 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f67b0 - fRSControlOutboundBacklog contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18f66a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f65a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f6620 - fRSControlInboundBacklog contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18f6510 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f6410 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f6490 - fRSControlDataCreation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18f6390 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f6290 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f6310 - friendlyNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18f6210 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18f6110 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f6190 - forceLogoff contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18f6090 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5f90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f6010 - flatName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18f5f10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5e10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5e90 - fileExtPriority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18f5d90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5c90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5d10 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18f5c00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5b00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5b80 - extraColumns contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18f5a80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5a00 - extensionName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18f5900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5880 - extendedClassInfo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18f5780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5700 - extendedAttributeInfo contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18f5600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5580 - enrollmentProviders contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18f5480 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5380 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5400 - employeeType contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18f5300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5280 - employeeNumber contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f5180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f5080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f5100 - employeeID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18f5000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4f00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4f80 - dSUIAdminNotification contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18f4e80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4d80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4e00 - dSHeuristics contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18f4d00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4c00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4c80 - driverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18f4b80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4a80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4b00 - drink contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x18f4a10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4910 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4990 - domainReplica contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18f4890 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4790 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4810 - documentVersion contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18f4710 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4690 - documentTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18f4590 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4490 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4510 - documentPublisher contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18f4410 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4310 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4390 - documentLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4290 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4190 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4210 - documentIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18f4110 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f4010 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f4090 - dnsRoot contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f3f90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f3e90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f3f10 - dNSHostName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18f3e10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f3d10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f3d90 - dmdName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f3c90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f3b90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f3c10 - division contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18f3b10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f3a10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f3a90 - dITContentRules contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18f3990 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f3890 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f3910 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18f3810 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18f3710 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f3790 - dhcpUpdateTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f3690 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18f3590 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f3610 - dhcpUniqueKey contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18f3510 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f3410 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f3490 - dhcpObjName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18f3390 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f3290 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f3310 - dhcpObjDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18f3210 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18f3110 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f3190 - dhcpMaxKey contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18f3090 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f2f90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f3010 - dhcpIdentification contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18f2f10 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18f2e10 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f2e90 - dhcpFlags contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18f2d90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f2c90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f2d10 - desktopProfile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f2c10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f2b10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f2b90 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18f2a90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f2990 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f2a10 - departmentNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f2910 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f2810 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f2890 - department contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18f2790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f2690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f2710 - defaultSecurityDescriptor contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18f2600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f2500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f2580 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18f2490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f2390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f2410 - creator contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f2310 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f2210 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f2290 - creationWizard contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f2190 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18f2090 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f2110 - creationTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18f2010 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1f10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1f90 - createWizardExt contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18f1e90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1d90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1e10 - createDialog contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18f1d10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1c10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1c90 - contextMenu contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18f1b90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1a90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1b10 - cOMUniqueLIBID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f1a10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1910 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1990 - cOMTypelibId contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18f1890 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1790 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1810 - cOMTreatAsClassId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18f1710 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1690 - cOMProgID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18f1590 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1490 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1510 - company contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f1410 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1310 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1390 - cOMOtherProgId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f1290 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1190 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1210 - comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18f1110 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f1010 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f1090 - cOMInterfaceID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18f0f90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f0e90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f0f10 - cOMCLSID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18f0e10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f0d10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f0d90 - cOMClassID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18f0c90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f0b90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f0c10 - co contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18f0b20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f0a20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f0aa0 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18f09b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f08b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f0930 - classDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f0830 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f0730 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f07b0 - certificateTemplates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18f06b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f05b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f0630 - cAWEBURL contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18f0530 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f0430 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f04b0 - cAUsages contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18f03b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f02b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f0330 - categories contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18f0230 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18f0130 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f01b0 - catalogs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18f00b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18effb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18f0030 - carLicense contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18eff30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18efe30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18efeb0 - canUpgradeScript contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18efdb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18efcb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18efd30 - canonicalName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18efc30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18efb30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18efbb0 - cAConnect contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18efab0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ef9b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18efa30 - cACertificateDN contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18ef930 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ef830 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ef8b0 - c contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x18ef7c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ef6c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ef740 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ef640 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ef540 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ef5c0 - builtinModifiedCount contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18ef4c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ef3c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ef440 - builtinCreationTime contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18ef340 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ef240 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ef2c0 - buildingName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18ef1c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ef0c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ef140 - badPasswordTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18ef040 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18eef40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18eefc0 - auxiliaryClass contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18eeec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18eedc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18eee40 - attributeTypes contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18eed40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18eec40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18eecc0 - attributeSyntax contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18eebc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18eeac0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18eeb40 - attributeID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18eea40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ee940 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ee9c0 - attributeDisplayNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18ee8c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ee7c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ee840 - assetNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18ee740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ee640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ee6c0 - appliesTo contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18ee5c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ee4c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ee540 - applicationName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18ee440 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ee340 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ee3c0 - aNR contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x18ee2d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ee1d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ee250 - altSecurityIdentities contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18ee150 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ee050 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ee0d0 - allowedChildClassesEffective contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x18edfc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18edec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18edf40 - allowedChildClasses contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18ede40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18edd40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18eddc0 - allowedAttributesEffective contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x18edcb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18edbb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18edc30 - allowedAttributes contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18edb30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18eda30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18edab0 - adminPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18ed9b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ed8b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed930 - adminMultiselectPropertyPages contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x18ed820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ed720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed7a0 - adminDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed6a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ed5a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed620 - adminDescription contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ed420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed4a0 - adminContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed3a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ed2a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed320 - addressType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18ed220 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ed120 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed1a0 - additionalTrustedServiceNames contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x18ed090 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ecf90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ed010 - aCSTimeOfDay contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18ecf10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ece10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ece90 - aCSServerList contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18ecd90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ecc90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ecd10 - aCSRSVPLogFilesLocation contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18ecc00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ecb00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ecb80 - aCSRSVPAccountFilesLocation contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x18eca70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18ec970 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18ec9f0 - aCSPolicyName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18ec8f0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ec7f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ec870 - aCSPermissionBits contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18ec770 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ec670 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ec6f0 - aCSNonReservedTxSize contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18ec5f0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ec4f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ec570 - aCSNonReservedTxLimit contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18ec470 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ec370 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ec3f0 - aCSNonReservedTokenSize contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18ec2e0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ec1e0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ec260 - aCSNonReservedPeakRate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18ec160 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ec060 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ec0e0 - aCSNonReservedMinPolicedSize contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x18ebfd0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ebed0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ebf50 - aCSNonReservedMaxSDUSize contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18ebe40 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ebd40 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ebdc0 - aCSMinimumPolicedSize contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18ebcc0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ebbc0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ebc40 - aCSMinimumLatency contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18ebb40 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18eba40 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ebac0 - aCSMinimumDelayVariation contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18eb9b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18eb8b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18eb930 - aCSMaxTokenRatePerFlow contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18eb830 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18eb730 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18eb7b0 - aCSMaxTokenBucketPerFlow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18eb6a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18eb5a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18eb620 - aCSMaxPeakBandwidthPerFlow contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x18eb510 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18eb410 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18eb490 - aCSMaxPeakBandwidth contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18eb390 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18eb290 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18eb310 - aCSMaximumSDUSize contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18eb210 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18eb110 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18eb190 - aCSMaxAggregatePeakRatePerUser contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x18eb080 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18eaf80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18eb000 - aCSIdentityName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18eaf00 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18eae00 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18eae80 - aCSAllocableRSVPBandwidth contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18ead70 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18eac70 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18eacf0 - aCSAggregateTokenRatePerUser contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x18eabe0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18eaae0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18eab60 - accountNameHistory contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18eaa60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18ea960 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18ea9e0 - accountExpires contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18ea8e0 - struct ldb_dn contains 84 bytes in 2 blocks (ref 0) d=(nil) 0x18e5ed0 - @ATTRIBUTES contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e5f90 - struct ldb_message contains 3939 bytes in 127 blocks (ref 0) d=(nil) 0x1895920 - struct ldb_message_element contains 3832 bytes in 124 blocks (ref 0) d=(nil) 0x1897c30 - struct ldb_val contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x18e5c20 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x18e5ca0 - @IDXVERSION contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e5ba0 - struct ldb_val contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x18e5ab0 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x18e5b30 - @IDXONE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18e5a30 - struct ldb_val contains 3671 bytes in 116 blocks (ref 0) d=(nil) 0x1897d80 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18e59b0 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18e5930 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18e58b0 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18e5840 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18e57c0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e5740 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18e56c0 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18e5640 - ../lib/ldb/common/ldb_pack.c:264 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x18e55d0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e5550 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18e54d0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18e5450 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18e53d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18e5350 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18e52d0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e5250 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18e51d0 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18e5150 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18e50d0 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18e5050 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18e4fd0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e4f50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18e4ed0 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x18e4e60 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18e4de0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e4d60 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x18e4cd0 - ../lib/ldb/common/ldb_pack.c:264 contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x18e4c40 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18e4bc0 - ../lib/ldb/common/ldb_pack.c:264 contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x18e4b30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18e4ab0 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18e4a30 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18e49b0 - ../lib/ldb/common/ldb_pack.c:264 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18e4920 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18e4890 - ../lib/ldb/common/ldb_pack.c:264 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18e4800 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18e4780 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18e4700 - ../lib/ldb/common/ldb_pack.c:264 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x18e4670 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18e45f0 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18e4570 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18e44f0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e4470 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18e43f0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e4370 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e42f0 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18e4270 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18e41e0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e4160 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18e40d0 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18e4040 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18e3fc0 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18e3f40 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e3ec0 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x18e3e30 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x18e3da0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18e3d20 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18e3ca0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18e3c20 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18e3ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e3b20 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e3aa0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e3a20 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e39a0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e3920 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e38a0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e3820 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18e37a0 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18e3720 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18e36a0 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18e3620 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18e35a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18e3520 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e34a0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e3420 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e33a0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18e3320 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e32a0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e3220 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e31a0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e3120 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e30a0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e3020 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18e2fa0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18e2f20 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18e2ea0 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18e2e30 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18e2db0 - ../lib/ldb/common/ldb_pack.c:264 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x18e2d20 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18e2ca0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e2c20 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18e2ba0 - ../lib/ldb/common/ldb_pack.c:264 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x18e2b30 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18e2ab0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18e2a30 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18e29b0 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1898e10 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1898d90 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1898d10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1898c90 - ../lib/ldb/common/ldb_pack.c:264 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1898c10 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1898b90 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1898b10 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1898aa0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1898a20 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18989a0 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1898920 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18988a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1898820 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18987a0 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1898720 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18986a0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1898620 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18985a0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1898520 - @IDXATTR contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1897d00 - struct ldb_dn contains 83 bytes in 2 blocks (ref 0) d=(nil) 0x1897af0 - @INDEXLIST contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1897bb0 - struct ltdb_wrap contains 40 bytes in 1 blocks (ref 0) d=0x2af290dc12e8 0x1896c20 - /home/rusty/samba/st/fl2000dc/private/sam.ldb.d/CN=CONFIGURATION,DC=SAMBA2000,DC=EXAMPLE,DC=COM.ldb contains 100 bytes in 1 blocks (ref 0) d=(nil) 0x1895460 - struct dsdb_control_current_partition contains 472 bytes in 21 blocks (ref 0) d=(nil) 0x1896b30 - struct ldb_dn contains 456 bytes in 20 blocks (ref 0) d=(nil) 0x1921930 - char contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x19676e0 - struct ldb_dn_component contains 288 bytes in 17 blocks (ref 0) d=(nil) 0x1921420 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1921550 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1897650 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1897130 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1897500 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1897020 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19216c0 - CONFIGURATION contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18970a0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x19215d0 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x18972c0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1897830 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1896f30 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18977c0 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18e5db0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1896fb0 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1897360 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18e5e30 - CN=Configuration,DC=samba2000,DC=example,DC=com contains 48 bytes in 1 blocks (ref 0) d=(nil) 0x19219f0 - struct dsdb_partition contains 4742 bytes in 153 blocks (ref 0) d=(nil) 0x189dbe0 - ../lib/ldb/common/ldb_pack.c:264 contains 76 bytes in 1 blocks (ref 0) d=(nil) 0x189d410 - partition_next contains 4179 bytes in 133 blocks (ref 0) d=(nil) 0x18953c0 - ldb_tdb backend contains 4139 bytes in 132 blocks (ref 0) d=(nil) 0x189e090 - struct ltdb_private contains 4099 bytes in 131 blocks (ref 0) d=(nil) 0x189de60 - struct ltdb_cache contains 3987 bytes in 129 blocks (ref 0) d=(nil) 0x189e130 - struct ldb_message contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18a88c0 - struct ldb_message contains 3939 bytes in 127 blocks (ref 0) d=(nil) 0x189e1c0 - struct ldb_message_element contains 3832 bytes in 124 blocks (ref 0) d=(nil) 0x189f2a0 - struct ldb_val contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x2203180 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1a10420 - @IDXVERSION contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2203100 - struct ldb_val contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x2203080 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1a10330 - @IDXONE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x2203000 - struct ldb_val contains 3671 bytes in 116 blocks (ref 0) d=(nil) 0x3169c70 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x2997920 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x29978a0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2997820 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x262d120 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x29977a0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2997720 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x29976a0 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x2997620 - ../lib/ldb/common/ldb_pack.c:264 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x262d030 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2654350 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x26542d0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2654250 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x26541d0 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x2654150 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x26540d0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2654050 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x25a7880 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x25a7800 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x25a7780 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x25a7700 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x25a7680 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x25a7600 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x25a7580 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x262cf40 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x23025d0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2302550 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x23024c0 - ../lib/ldb/common/ldb_pack.c:264 contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x2302430 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x23023b0 - ../lib/ldb/common/ldb_pack.c:264 contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x2302320 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x22ac0e0 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x22ac060 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x22abfe0 - ../lib/ldb/common/ldb_pack.c:264 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x22abf50 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x22abec0 - ../lib/ldb/common/ldb_pack.c:264 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x22abe30 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x34566d0 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x3456650 - ../lib/ldb/common/ldb_pack.c:264 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x34565c0 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x3456540 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x34564c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x3456440 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x30a4a10 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x30a4990 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x30a4910 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x30a4890 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x30a4810 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x30a4780 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x25077d0 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x2507740 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x25076b0 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x2507630 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x25075b0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2507530 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1cfbaa0 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1cfba10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1cfb990 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1cfb910 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1cfb890 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x3104a90 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x3104a10 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x3104990 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3104910 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x3104890 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2facd30 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2faccb0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2facc30 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x2facbb0 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x21d3b50 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x21d3ad0 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x21d3a50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x21d39d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x2d18760 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2d186e0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2d18660 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2d185e0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x2c8d580 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2c8d500 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2c8d480 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2c8d400 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2c154c0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2c15440 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x2c153c0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2c15340 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18460e0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1846060 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x291e6a0 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x2172000 - ../lib/ldb/common/ldb_pack.c:264 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1845fd0 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x2171f80 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2171f00 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x323b260 - ../lib/ldb/common/ldb_pack.c:264 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x20b8190 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x323b1e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1a182a0 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1a18220 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x212ab70 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x212aaf0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18a8840 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18a87c0 - ../lib/ldb/common/ldb_pack.c:264 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x2a0b430 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x189f370 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x2a0b6f0 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1b68c60 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x2c15620 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1a10610 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x189e250 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x262d230 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x22c0d30 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x21f69d0 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x212a900 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x22c0c30 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1841850 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1895340 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1a2f820 - @IDXATTR contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18a8740 - struct ldb_dn contains 83 bytes in 2 blocks (ref 0) d=(nil) 0x189f430 - @INDEXLIST contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18a86c0 - struct ltdb_wrap contains 40 bytes in 1 blocks (ref 0) d=0x2af290dc12e8 0x189c1b0 - /home/rusty/samba/st/fl2000dc/private/sam.ldb.d/DC=SAMBA2000,DC=EXAMPLE,DC=COM.ldb contains 83 bytes in 1 blocks (ref 0) d=(nil) 0x189dda0 - struct dsdb_control_current_partition contains 356 bytes in 17 blocks (ref 0) d=(nil) 0x189dc80 - struct ldb_dn contains 340 bytes in 16 blocks (ref 0) d=(nil) 0x18965d0 - char contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x196d820 - struct ldb_dn_component contains 206 bytes in 13 blocks (ref 0) d=(nil) 0x1895e70 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1896410 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18963a0 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1896320 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18962b0 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1896230 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18961c0 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x1896150 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18960e0 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189f040 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1896070 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x189efc0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1896000 - DC=samba2000,DC=example,DC=com contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1895f70 - struct partition_module * contains 587 bytes in 30 blocks (ref 0) d=(nil) 0x189ba30 - struct partition_module contains 33 bytes in 3 blocks (ref 0) d=(nil) 0x189d6a0 - char * contains 17 bytes in 2 blocks (ref 0) d=(nil) 0x189da10 - contains 1 bytes in 1 blocks (ref 0) d=(nil) 0x189d9a0 - struct partition_module contains 530 bytes in 26 blocks (ref 0) d=(nil) 0x18943f0 - struct ldb_dn contains 486 bytes in 23 blocks (ref 0) d=(nil) 0x189c4f0 - struct ldb_dn_component contains 356 bytes in 21 blocks (ref 0) d=(nil) 0x189d840 - COM contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x189e8a0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189f130 - EXAMPLE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189e820 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189e370 - SAMBA2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x189e7a0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189e530 - CONFIGURATION contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x189e2e0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189eaa0 - SCHEMA contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x189e720 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189ec60 - com contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x189c140 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189c0d0 - example contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x189d7c0 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189d750 - samba2000 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x189b660 - DC contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189ccf0 - Configuration contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x189b4d0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x189be90 - Schema contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x189c2e0 - CN contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18931e0 - CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com contains 58 bytes in 1 blocks (ref 0) d=(nil) 0x189c5b0 - char * contains 28 bytes in 2 blocks (ref 0) d=(nil) 0x189b100 - schema_data contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x189afc0 - struct ldb_dn * contains 280 bytes in 7 blocks (ref 0) d=(nil) 0x189cfa0 - struct ldb_dn contains 81 bytes in 2 blocks (ref 0) d=(nil) 0x189b970 - @OPTIONS contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x189ace0 - struct ldb_dn contains 83 bytes in 2 blocks (ref 0) d=(nil) 0x189bdb0 - @INDEXLIST contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x189b6e0 - struct ldb_dn contains 84 bytes in 2 blocks (ref 0) d=(nil) 0x189cd60 - @ATTRIBUTES contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x189b7d0 - .name contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x17fe450 - struct ldb_message contains 275 bytes in 8 blocks (ref 0) d=(nil) 0x1894580 - struct ldb_message_element contains 145 bytes in 5 blocks (ref 0) d=(nil) 0x1894c40 - struct ldb_val contains 105 bytes in 3 blocks (ref 0) d=(nil) 0x17fdba0 - *: contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x17ff120 - CN=Schema,CN=Configuration,DC=samba2000,DC=example,DC=com:schema_data contains 70 bytes in 1 blocks (ref 0) d=(nil) 0x18949d0 - modules contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x17fe550 - struct ldb_dn contains 106 bytes in 2 blocks (ref 0) d=(nil) 0x1893e10 - @DSDB_OPAQUE_PARTITION_MODULE_MSG contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1894690 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1894cd0 - ldb_module: samba_dsdb contains 63 bytes in 2 blocks (ref 0) d=(nil) 0x17ff260 - .name contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x17ff0a0 - ldb_tdb backend contains 51046 bytes in 1872 blocks (ref 0) d=(nil) 0x17feaa0 - struct ltdb_private contains 51006 bytes in 1871 blocks (ref 0) d=(nil) 0x17fe1f0 - struct ltdb_cache contains 50894 bytes in 1869 blocks (ref 0) d=(nil) 0x17fe2b0 - struct ldb_message contains 46931 bytes in 1741 blocks (ref 0) d=(nil) 0x17feb40 - struct ldb_message_element contains 46823 bytes in 1738 blocks (ref 0) d=(nil) 0x18462d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1881350 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18813d0 - x121Address contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18812d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18811d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1881250 - wWWHomePage contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1881150 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1881050 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18810d0 - wbemPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1880fd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1880ed0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1880f50 - vendor contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1880e60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1880d60 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1880de0 - uSNSource contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1880ce0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1880be0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1880c60 - uSNLastObjRem contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1880b60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1880a60 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1880ae0 - uSNDSALastObjRemoved contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18809e0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18808e0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1880960 - uSNCreated contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1880860 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1880760 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18807e0 - uSNChanged contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18806e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18805e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1880660 - userWorkstations contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1880560 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1880460 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18804e0 - userSharedFolderOther contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18803e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18802e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1880360 - userSharedFolder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1880260 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1880160 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18801e0 - userPrincipalName contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18800e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187ffe0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1880060 - userParameters contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x187ff60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187fe60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187fee0 - userClass contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x187fde0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187fce0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187fd60 - url contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x187fc70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187fb70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187fbf0 - uPNSuffixes contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x187faf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187f9f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187fa70 - unstructuredAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x187f970 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187f870 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187f8f0 - uniqueIdentifier contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187f7f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187f6f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187f770 - uNCName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x187f670 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187f570 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187f5f0 - uid contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x187f500 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187f400 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187f480 - trustPartner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x187f380 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187f280 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187f300 - treeName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x187f200 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187f100 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187f180 - transportDLLName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187f080 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187ef80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187f000 - transportAddressAttribute contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x187eef0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187edf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187ee70 - title contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x187ed80 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x187ec80 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x187ed00 - timeVolChange contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x187ec00 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x187eb00 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x187eb80 - timeRefresh contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x187ea80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187e980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187ea00 - textEncodedORAddress contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x187e900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187e800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187e880 - telephoneNumber contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x187e780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187e680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187e700 - systemPossSuperiors contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x187e600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187e500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187e580 - systemMustContain contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x187e480 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187e380 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187e400 - systemMayContain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187e300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187e200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187e280 - systemAuxiliaryClass contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x187e180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187e080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187e100 - superScopeDescription contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x187e000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187df00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187df80 - superiorDNSRoot contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x187de80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187dd80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187de00 - subClassOf contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x187dd00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187dc00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187dc80 - structuralObjectClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x187db80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187da80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187db00 - streetAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x187da00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187d900 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187d980 - street contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x187d890 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187d790 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187d810 - st contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x187d720 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187d620 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187d6a0 - sPNMappings contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x187d5a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187d4a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187d520 - sn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x187d430 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187d330 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187d3b0 - signatureAlgorithms contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x187d2b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187d1b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187d230 - shortServerName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x187d130 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187d030 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187d0b0 - shellPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x187cfb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187ceb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187cf30 - shellContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187ce30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187cd30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187cdb0 - setupCommand contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x187ccb0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187cbb0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187cc30 - servicePrincipalName contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x187cb30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187ca30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187cab0 - serviceDNSNameType contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x187c9b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187c8b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187c930 - serviceDNSName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x187c830 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187c730 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187c7b0 - serviceClassName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187c6b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187c5b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187c630 - serviceBindingInformation contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x187c520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187c420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187c4a0 - serverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x187c3a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187c2a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187c320 - scriptPath contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x187c220 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187c120 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187c1a0 - sAMAccountName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x187c0a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187bfa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187c020 - rpcNsTransferSyntax contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x187bf20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187be20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187bea0 - rpcNsProfileEntry contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x187bda0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187bca0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187bd20 - rpcNsObjectID contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x187bc20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187bb20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187bba0 - rpcNsInterfaceID contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187baa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187b9a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187ba20 - rpcNsGroup contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x187b920 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187b820 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187b8a0 - rpcNsCodeset contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x187b7a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187b6a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187b720 - rpcNsBindings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x187b620 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187b520 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187b5a0 - rpcNsAnnotation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x187b4a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187b3a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187b420 - roomNumber contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x187b320 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187b220 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187b2a0 - rightsGuid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x187b1a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x187b0a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x187b120 - rIDUsedPool contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x187b020 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x187af20 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x187afa0 - rIDPreviousAllocationPool contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x187ae90 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x187ad90 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x187ae10 - rIDAvailablePool contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187ad10 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x187ac10 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x187ac90 - rIDAllocationPool contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x187ab90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187aa90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187ab10 - replicaSource contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x187aa10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187a910 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187a990 - remoteStorageGUID contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x187a890 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187a790 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187a810 - remoteSource contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x187a710 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187a610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187a690 - remoteServerName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187a590 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187a490 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187a510 - rDNAttID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x187a410 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187a310 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187a390 - queryPoint contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x187a290 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x187a190 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x187a210 - queryFilter contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x187a110 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x187a010 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x187a090 - pwdLastSet contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1879f90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1879e90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1879f10 - purportedSearch contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1879e10 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1879d10 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1879d90 - proxyLifetime contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1879c90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1879b90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1879c10 - proxyAddresses contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1879b10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1879a10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1879a90 - profilePath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1879990 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1879890 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1879910 - privilegeValue contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1879810 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1879710 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1879790 - privilegeDisplayName contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1879690 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1879590 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1879610 - priorSetTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1879510 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1879410 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1879490 - printStatus contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1879390 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1879290 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1879310 - printSpooling contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1879210 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1879110 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1879190 - printShareName contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1879090 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878f90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1879010 - printSeparatorFile contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1878f10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878e10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878e90 - printRateUnit contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1878d90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878c90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878d10 - printOwner contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1878c10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878b10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878b90 - printOrientationsSupported contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1878a80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878a00 - printNotify contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1878900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878880 - printNetworkAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1878780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878700 - printMediaSupported contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1878600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878580 - printMediaReady contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1878480 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878380 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878400 - printMACAddress contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1878300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878280 - printLanguage contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1878180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1878080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1878100 - printFormName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1878000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1877f00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1877f80 - printerName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1877e80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1877d80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1877e00 - printBinNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1877d00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1877c00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1877c80 - primaryTelexNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1877b80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1877a80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1877b00 - primaryInternationalISDNNumber contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x18779f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18778f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1877970 - presentationAddress contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1877870 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1877770 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18777f0 - preferredLanguage contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18776f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18775f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1877670 - postOfficeBox contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1877570 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1877470 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18774f0 - postalCode contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18773f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18772f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1877370 - postalAddress contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1877270 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1877170 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18771f0 - possSuperiors contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18770f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1876ff0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1877070 - possibleInferiors contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1876f70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1876e70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1876ef0 - portName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1876df0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1876cf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1876d70 - pKIExtendedKeyUsage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1876c70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1876b70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1876bf0 - pKIDefaultCSPs contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1876af0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18769f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1876a70 - pKICriticalExtensions contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1876970 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1876870 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18768f0 - physicalDeliveryOfficeName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x18767e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18766e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1876760 - personalTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1876660 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1876560 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18765e0 - pekKeyChangeInterval contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18764e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18763e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1876460 - pager contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1876370 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1876270 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18762f0 - packageName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18761f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18760f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1876170 - ou contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1876080 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875f80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1876000 - otherTelephone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1875f00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875e00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1875e80 - otherPager contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1875d80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875c80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1875d00 - otherMobile contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1875c00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875b00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1875b80 - otherMailbox contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1875a80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1875a00 - otherLoginWorkstations contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1875900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1875880 - otherIpPhone contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1875780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1875700 - otherHomePhone contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1875600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1875580 - otherFacsimileTelephoneNumber contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1875470 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875370 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18753f0 - organizationalStatus contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18752f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18751f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1875270 - optionDescription contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1875170 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1875070 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18750f0 - operatingSystemVersion contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1874ff0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1874ef0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1874f70 - operatingSystemServicePack contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1874e60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1874d60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1874de0 - operatingSystemHotfix contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1874ce0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1874be0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1874c60 - operatingSystem contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1874b60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1874a60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1874ae0 - oEMInformation contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18749e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18748e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1874960 - objectClasses contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1874860 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1874760 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18747e0 - objectClass contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18746e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18745e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1874660 - o contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1874570 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1874470 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18744f0 - notes contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1874400 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1874300 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1874380 - networkAddress contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1874280 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1874180 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1874200 - netbootTools contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1874100 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1874000 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1874080 - netbootSIFFile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1873f80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1873e80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1873f00 - netbootNewMachineNamingPolicy contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1873df0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1873cf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1873d70 - netbootMirrorDataFile contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1873c70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1873b70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1873bf0 - netbootMachineFilePath contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1873af0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18739f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1873a70 - netbootLocallyInstalledOSes contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1873960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1873860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18738e0 - netbootIntelliMirrorOSes contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18737d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18736d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1873750 - netbootInitialization contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1873650 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1873550 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18735d0 - nETBIOSName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18734d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18733d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1873450 - name contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1873360 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1873260 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18732e0 - mustContain contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18731e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18730e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1873160 - msWMI-TargetType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1873060 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1872f60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1872fe0 - msWMI-TargetPath contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1872ee0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1872de0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1872e60 - msWMI-TargetNameSpace contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1872d60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1872c60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1872ce0 - msWMI-TargetClass contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1872be0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1872ae0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1872b60 - msWMI-StringValidValues contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1872a50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1872950 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18729d0 - msWMI-StringDefault contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18728d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18727d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1872850 - msWMI-SourceOrganization contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1872740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1872640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18726c0 - msWMI-ScopeGuid contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18725c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18724c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1872540 - msWMI-QueryLanguage contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1872440 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1872340 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18723c0 - msWMI-Query contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18722c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18721c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1872240 - msWMI-PropertyName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1872140 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1872040 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18720c0 - msWMI-Parm4 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1871fc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1871ec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1871f40 - msWMI-Parm3 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1871e40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1871d40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1871dc0 - msWMI-Parm2 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1871cc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1871bc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1871c40 - msWMI-Parm1 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1871b40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1871a40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1871ac0 - msWMI-NormalizedClass contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18719c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18718c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1871940 - msWMI-Name contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1871840 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1871740 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18717c0 - msWMI-Mof contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18716c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18715c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1871640 - msWMI-Int8ValidValues contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1871540 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1871440 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18714c0 - msWMI-Int8Min contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18713c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18712c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1871340 - msWMI-Int8Max contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1871240 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1871140 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18711c0 - msWMI-Int8Default contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18710c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1870fc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1871040 - msWMI-ID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1870f40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1870e40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1870ec0 - msWMI-CreationDate contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1870dc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1870cc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1870d40 - msWMI-ClassDefinition contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1870c40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1870b40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1870bc0 - msWMI-Class contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1870ac0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18709c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1870a40 - msWMI-ChangeDate contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1870940 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1870840 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18708c0 - msWMI-Author contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18707c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18706c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1870740 - msTSWorkDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1870640 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1870540 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18705c0 - msTSProperty02 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18704c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18703c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1870440 - msTSProperty01 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1870340 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1870240 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18702c0 - msTSProfilePath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18701c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18700c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1870140 - msTSManagingLS4 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1870040 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186ff40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186ffc0 - msTSManagingLS3 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x186fec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186fdc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186fe40 - msTSManagingLS2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x186fd40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186fc40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186fcc0 - msTSManagingLS contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x186fbc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186fac0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186fb40 - msTSLSProperty02 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186fa40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186f940 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186f9c0 - msTSLSProperty01 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186f8c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186f7c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186f840 - msTSLicenseVersion4 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x186f740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186f640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186f6c0 - msTSLicenseVersion3 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x186f5c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186f4c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186f540 - msTSLicenseVersion2 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x186f440 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186f340 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186f3c0 - msTSLicenseVersion contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x186f2c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186f1c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186f240 - msTSInitialProgram contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x186f140 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186f040 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186f0c0 - msTSHomeDrive contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x186efc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186eec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186ef40 - msTSHomeDirectory contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x186ee40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186ed40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186edc0 - msTSEndpointPlugin contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x186ecc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186ebc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186ec40 - msTSEndpointData contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186eb40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186ea40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186eac0 - msTPM-OwnerInformation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x186e9c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186e8c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186e940 - msTAPI-uid contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x186e840 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186e740 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186e7c0 - msTAPI-ProtocolId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x186e6c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186e5c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186e640 - msTAPI-IpAddress contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186e540 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186e440 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186e4c0 - msSFU30SearchContainer contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x186e3c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186e2c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186e340 - msSFU30SearchAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x186e230 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186e130 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186e1b0 - msSFU30ResultAttributes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x186e0a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186dfa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186e020 - msSFU30OrderNumber contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x186df20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186de20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186dea0 - msSFU30MasterServerName contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x186dd90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186dc90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186dd10 - msSFU30MapFilter contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186dc10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186db10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186db90 - msSFU30KeyAttributes contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x186da90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186d990 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186da10 - msSFU30IntraFieldSeparator contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x186d900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186d800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186d880 - msSFU30FieldSeparator contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x186d780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186d680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186d700 - msRRASVendorAttributeEntry contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x186d5f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186d4f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186d570 - msRRASAttribute contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x186d470 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186d370 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186d3f0 - msPKI-Supersede-Templates contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x186d2e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186d1e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186d260 - msPKI-Site-Name contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x186d160 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186d060 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186d0e0 - msPKI-RA-Policies contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x186cfe0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186cee0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186cf60 - msPKI-RA-Application-Policies contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x186ce50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186cd50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186cdd0 - msPKI-OIDLocalizedName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x186ccd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186cbd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186cc50 - msPKI-OID-User-Notice contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x186cb50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186ca50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186cad0 - msPKI-OID-CPS contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x186c9d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186c8d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186c950 - msPKI-Enrollment-Servers contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x186c840 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186c740 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186c7c0 - msPKI-Certificate-Policy contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x186c6b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186c5b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186c630 - msPKI-Certificate-Application-Policy contains 37 bytes in 1 blocks (ref 0) d=(nil) 0x186c520 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186c420 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186c4a0 - msPKI-Cert-Template-OID contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x186c390 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186c290 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186c310 - mSMQSiteNameEx contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x186c210 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186c110 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186c190 - mSMQSiteName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x186c090 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186bf90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186c010 - mSMQQueueNameExt contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186bf10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186be10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186be90 - mSMQLabelEx contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x186bd90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186bc90 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186bd10 - mSMQLabel contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x186bc10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186bb10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186bb90 - mSMQCSPName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x186ba90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186b990 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186ba10 - mSMQComputerTypeEx contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x186b910 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186b810 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186b890 - mSMQComputerType contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186b790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186b690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186b710 - msMQ-Recipient-FormatName contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x186b600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186b500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186b580 - MSMQ-MulticastAddress contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x186b480 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186b380 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186b400 - msiScriptPath contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x186b300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186b200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186b280 - msiScriptName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x186b180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186b080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186b100 - msImaging-PSPString contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x186b000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186af00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186af80 - msIIS-FTPRoot contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x186ae80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186ad80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186ae00 - msIIS-FTPDir contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x186ad00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186ac00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186ac80 - msiFileList contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x186ab80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186aa80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186ab00 - msieee80211-ID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x186aa00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186a900 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186a980 - msFVE-RecoveryPassword contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x186a880 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186a780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186a800 - msFRS-Topology-Pref contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x186a700 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186a600 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186a680 - msExchLabeledURI contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186a580 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186a480 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186a500 - msExchHouseIdentifier contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x186a400 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x186a300 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x186a380 - msExchAssistantName contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x186a280 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x186a180 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x186a200 - msDS-USNLastSyncSuccess contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x186a0f0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1869ff0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x186a070 - msDS-UserPasswordExpiryTimeComputed contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1869f60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1869e60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1869ee0 - msDS-UpdateScript contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1869de0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1869ce0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1869d60 - msDS-TopQuotaUsage contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1869c60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1869b60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1869be0 - msDS-SPNSuffixes contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1869ae0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18699e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1869a60 - msDS-SourceObjectDN contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1869960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1869860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18698e0 - msDS-SiteName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18697e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18696e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1869760 - msDS-Settings contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1869660 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1869560 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18695e0 - msDS-Security-Group-Extra-Classes contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x18694d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18693d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1869450 - msDS-ReplValueMetaData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1869350 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1869250 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18692d0 - msDS-ReplAttributeMetaData contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x18691c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18690c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1869140 - msDS-PromotionSettings contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1869040 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1868f40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1868fc0 - msDS-PrincipalName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1868ec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1868dc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1868e40 - msDS-PhoneticLastName contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1868d40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1868c40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1868cc0 - msDS-PhoneticFirstName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1868bc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1868ac0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1868b40 - msDS-PhoneticDisplayName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1868a30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1868930 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18689b0 - msDS-PhoneticDepartment contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18688a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18687a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1868820 - msDS-PhoneticCompanyName contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1868710 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1868610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1868690 - msDS-Other-Settings contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1868590 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1868490 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1868510 - msDS-Non-Security-Group-Extra-Classes contains 38 bytes in 1 blocks (ref 0) d=(nil) 0x1868400 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1868300 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1868380 - msDS-NCReplOutboundNeighbors contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1868270 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1868170 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18681f0 - msDS-NCReplInboundNeighbors contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x18680e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1867fe0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1868060 - msDS-NCReplCursors contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1867f60 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1867e60 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1867ee0 - msDS-MinimumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1867dd0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1867cd0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1867d50 - msDS-MaximumPasswordAge contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1867c40 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1867b40 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1867bc0 - msDS-LockoutObservationWindow contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1867ab0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18679b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1867a30 - msDS-LockoutDuration contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1867930 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1867830 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18678b0 - msDS-LastSuccessfulInteractiveLogonTime contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x1867790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1867690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1867710 - msDS-LastKnownRDN contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1867610 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1867510 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1867590 - msDS-LastFailedInteractiveLogonTime contains 36 bytes in 1 blocks (ref 0) d=(nil) 0x1867480 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1867380 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1867400 - msDS-FilterContainers contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1867300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1867200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1867280 - msDS-ExternalStore contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1867180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1867080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1867100 - msDS-ExternalKey contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1867000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1866f00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1866f80 - msDS-DnsRootAlias contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1866e80 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1866d80 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1866e00 - msDS-Cached-Membership-Time-Stamp contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1866cf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1866bf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1866c70 - msDS-AzScopeName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1866b70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1866a70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1866af0 - msDS-AzLDAPQuery contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18669f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18668f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1866970 - msDS-AzLastImportedBizRulePath contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x1866860 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1866760 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18667e0 - msDS-AzGenericData contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18666e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18665e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1866660 - msDS-AzClassId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1866560 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1866460 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18664e0 - msDS-AzBizRuleLanguage contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18663e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18662e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1866360 - msDS-AzBizRule contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1866260 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1866160 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18661e0 - msDS-AzApplicationVersion contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18660d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1865fd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1866050 - msDS-AzApplicationName contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1865f50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1865e50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1865ed0 - msDS-AzApplicationData contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1865dd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1865cd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1865d50 - msDS-Auxiliary-Classes contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1865c50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1865b50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1865bd0 - msDS-AllowedToDelegateTo contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1865ac0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18659c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1865a40 - msDS-AllowedDNSSuffixes contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1865930 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1865830 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18658b0 - msDS-AdditionalSamAccountName contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x18657a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18656a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1865720 - msDS-AdditionalDnsHostName contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1865610 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1865510 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1865590 - msDFSR-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1865490 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1865390 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1865410 - msDFSR-StagingSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1865310 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1865210 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1865290 - msDFSR-StagingPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1865190 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1865090 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1865110 - msDFSR-RootSizeInMb contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1865010 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1864f10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1864f90 - msDFSR-RootPath contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1864e90 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1864d90 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1864e10 - msDFSR-RdcMinFileSizeInKb contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1864d00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1864c00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1864c80 - msDFSR-OnDemandExclusionFileFilter contains 35 bytes in 1 blocks (ref 0) d=(nil) 0x1864b70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1864a70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1864af0 - msDFSR-OnDemandExclusionDirectoryFilter contains 40 bytes in 1 blocks (ref 0) d=(nil) 0x18649d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18648d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1864950 - msDFSR-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1864850 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1864750 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18647d0 - msDFSR-FileFilter contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18646d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18645d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1864650 - msDFSR-DirectoryFilter contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1864550 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1864450 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18644d0 - msDFSR-DfsPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18643d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18642d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1864350 - msDFSR-DfsLinkTarget contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1864250 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1864150 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18641d0 - msDFSR-DeletedSizeInMb contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x18640d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1863fd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1864050 - msDFSR-DeletedPath contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1863f50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1863e50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1863ed0 - msDFSR-DefaultCompressionExclusionFilter contains 41 bytes in 1 blocks (ref 0) d=(nil) 0x1863db0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1863cb0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1863d30 - msDFSR-ConflictSizeInMb contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1863c20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1863b20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1863ba0 - msDFSR-ConflictPath contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1863aa0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18639a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1863a20 - msDFSR-CommonStagingSizeInMb contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x1863910 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1863810 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1863890 - msDFSR-CommonStagingPath contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1863780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1863680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1863700 - msDFS-ShortNameLinkPathv2 contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18635f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18634f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1863570 - msDFS-Propertiesv2 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1863470 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1863370 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18633f0 - msDFS-LinkPathv2 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18632f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18631f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1863270 - msDFS-Commentv2 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1863170 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1863070 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18630f0 - mS-SQL-Vines contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1862ff0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1862ef0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1862f70 - mS-SQL-Version contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1862e70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1862d70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1862df0 - mS-SQL-Type contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1862cf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1862bf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1862c70 - mS-SQL-TCPIP contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1862b70 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1862a70 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1862af0 - mS-SQL-Status contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18629f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18628f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1862970 - mS-SQL-SPX contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1862870 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1862770 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18627f0 - mS-SQL-SortOrder contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18626f0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18625f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1862670 - mS-SQL-Size contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1862570 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1862470 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18624f0 - mS-SQL-ServiceAccount contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18623f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18622f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1862370 - mS-SQL-RegisteredOwner contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1862270 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1862170 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18621f0 - mS-SQL-Publisher contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18620f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1861ff0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1862070 - mS-SQL-PublicationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1861f70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1861e70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1861ef0 - mS-SQL-NamedPipe contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1861df0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1861cf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1861d70 - mS-SQL-Name contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1861c70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1861b70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1861bf0 - mS-SQL-MultiProtocol contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1861af0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18619f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1861a70 - mS-SQL-Memory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1861970 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1861870 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18618f0 - mS-SQL-Location contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18617f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18616f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1861770 - mS-SQL-LastUpdatedDate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1861670 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1861570 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18615f0 - mS-SQL-LastDiagnosticDate contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18614e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18613e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1861460 - mS-SQL-LastBackupDate contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1861360 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1861260 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18612e0 - mS-SQL-Language contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18611e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18610e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1861160 - mS-SQL-Keywords contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1861060 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1860f60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1860fe0 - mS-SQL-InformationURL contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1860ee0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1860de0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1860e60 - mS-SQL-GPSLongitude contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1860d60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1860c60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1860ce0 - mS-SQL-GPSLatitude contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1860be0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1860ae0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1860b60 - mS-SQL-GPSHeight contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1860a60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1860960 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18609e0 - mS-SQL-Description contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18608e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18607e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1860860 - mS-SQL-Database contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1860760 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1860660 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18606e0 - mS-SQL-CreationDate contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18605e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18604e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1860560 - mS-SQL-Contact contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1860460 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1860360 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18603e0 - mS-SQL-ConnectionURL contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18602e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18601e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1860260 - mS-SQL-Applications contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1860160 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1860060 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18600e0 - mS-SQL-AppleTalk contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185ffe0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185fee0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185ff60 - mS-SQL-Alias contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x185fe60 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185fd60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185fde0 - ms-net-ieee-8023-GP-PolicyGUID contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x185fcd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185fbd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185fc50 - ms-net-ieee-8023-GP-PolicyData contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x185fb40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185fa40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185fac0 - ms-net-ieee-80211-GP-PolicyGUID contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x185f9b0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185f8b0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185f930 - ms-net-ieee-80211-GP-PolicyData contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x185f820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185f720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185f7a0 - monikerDisplayName contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x185f6a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185f5a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185f620 - modifiedCountAtLastProm contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x185f510 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185f410 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185f490 - modifiedCount contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x185f390 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185f290 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185f310 - mobile contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x185f220 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185f120 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185f1a0 - minTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x185f0a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185efa0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185f020 - minPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x185ef20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185ee20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185eea0 - middleName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x185eda0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185eca0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185ed20 - mhsORAddress contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x185ec20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185eb20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185eba0 - meetingURL contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x185eaa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185e9a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185ea20 - meetingType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x185e920 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185e820 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185e8a0 - meetingScope contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x185e7a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185e6a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185e720 - meetingRecurrence contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x185e620 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185e520 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185e5a0 - meetingRating contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x185e4a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185e3a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185e420 - meetingProtocol contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x185e320 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185e220 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185e2a0 - meetingOwner contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x185e1a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185e0a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185e120 - meetingOriginator contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x185e020 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185df20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185dfa0 - meetingName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x185dea0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185dda0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185de20 - meetingLocation contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x185dd20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185dc20 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185dca0 - meetingLanguage contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x185dba0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185daa0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185db20 - meetingKeyword contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x185da20 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185d920 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185d9a0 - meetingIsEncrypted contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x185d8a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185d7a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185d820 - meetingIP contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x185d720 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185d620 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185d6a0 - meetingID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x185d5a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185d4a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185d520 - meetingDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x185d420 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185d320 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185d3a0 - meetingContactInfo contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x185d2a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185d1a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185d220 - meetingApplication contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x185d120 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185d020 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185d0a0 - meetingAdvertiseScope contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x185cfa0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185cea0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185cf20 - mayContain contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x185ce20 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185cd20 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185cda0 - maxTicketAge contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x185cca0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185cba0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185cc20 - maxStorage contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x185cb20 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185ca20 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185caa0 - maxRenewAge contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x185c9a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185c8a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185c920 - maxPwdAge contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x185c820 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185c720 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185c7a0 - mailAddress contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x185c6a0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185c5a0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185c620 - mail contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x185c530 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185c430 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185c4b0 - machinePasswordChangeInterval contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x185c3a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185c2a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185c320 - lSAModifiedCount contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185c220 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185c120 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185c1a0 - lSACreationTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x185c0a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185bfa0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185c020 - lockoutTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x185bf20 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185be20 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185bea0 - lockOutObservationWindow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x185bd90 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185bc90 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185bd10 - lockoutDuration contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x185bc10 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185bb10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185bb90 - location contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x185ba90 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185b990 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185ba10 - localizedDescription contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x185b910 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185b810 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185b890 - legacyExchangeDN contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185b790 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185b690 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185b710 - lDAPDisplayName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x185b610 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185b510 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185b590 - lDAPAdminLimits contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x185b490 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185b390 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185b410 - lastUpdateSequence contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x185b310 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185b210 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185b290 - lastSetTime contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x185b190 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185b090 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185b110 - lastLogonTimestamp contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x185b010 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185af10 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185af90 - lastLogon contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x185ae90 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185ad90 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185ae10 - lastLogoff contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x185ad10 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185ac10 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185ac90 - lastContentIndexed contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x185ab90 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x185aa90 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x185ab10 - lastBackupRestorationTime contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x185aa00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185a900 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185a980 - labeledURI contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x185a880 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185a780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185a800 - l contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x185a710 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185a610 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185a690 - knowledgeInformation contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x185a590 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185a490 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185a510 - keywords contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x185a410 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185a310 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185a390 - iPSECNegotiationPolicyType contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x185a280 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x185a180 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185a200 - iPSECNegotiationPolicyAction contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x185a0f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1859ff0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x185a070 - ipsecName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1859f70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1859e70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1859ef0 - ipsecID contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1859df0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1859cf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1859d70 - ipPhone contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1859c70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1859b70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1859bf0 - internationalISDNNumber contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1859ae0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18599e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1859a60 - initials contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1859960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1859860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18598e0 - initialAuthOutgoing contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18597e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18596e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1859760 - initialAuthIncoming contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1859660 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1859560 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18595e0 - info contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x18594f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18593f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1859470 - indexedScopes contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1859370 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1859270 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18592f0 - iconPath contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18591f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18590f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1859170 - houseIdentifier contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1859070 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858f70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858ff0 - host contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1858f00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858e00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858e80 - homePostalAddress contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1858d80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858c80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858d00 - homePhone contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1858c00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858b00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858b80 - homeDrive contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1858a80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858a00 - homeDirectory contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1858900 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858800 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858880 - helpFileName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1858780 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858680 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858700 - groupsToIgnore contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1858600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858580 - groupPriority contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1858480 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858380 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858400 - gPLink contains 7 bytes in 1 blocks (ref 0) d=(nil) 0x1858310 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858210 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858290 - gPCWQLFilter contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1858190 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1858090 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1858110 - gPCUserExtensionNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1858010 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857f10 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857f90 - gPCMachineExtensionNames contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1857e80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857d80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857e00 - gPCFileSysPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1857d00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857c00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857c80 - governsID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1857b80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857a80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857b00 - givenName contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1857a00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857900 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857980 - generationQualifier contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1857880 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857800 - fRSWorkingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1857700 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857600 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857680 - fRSVersion contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1857580 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857480 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857500 - fRSStagingPath contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1857400 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857300 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857380 - fRSServiceCommandStatus contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1857270 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1857170 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18571f0 - fRSServiceCommand contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18570f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1856ff0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1857070 - fRSRootPath contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1856f70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1856e70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1856ef0 - fRSFileFilter contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1856df0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1856cf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1856d70 - fRSFaultCondition contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1856c70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1856b70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1856bf0 - fRSDirectoryFilter contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1856af0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18569f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1856a70 - fRSControlOutboundBacklog contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x1856960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1856860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18568e0 - fRSControlInboundBacklog contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x18567d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18566d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1856750 - fRSControlDataCreation contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1856650 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1856550 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18565d0 - friendlyNames contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18564d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18563d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1856450 - forceLogoff contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1856350 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1856250 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18562d0 - flatName contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18561d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18560d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1856150 - fileExtPriority contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1856050 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1855f50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1855fd0 - facsimileTelephoneNumber contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1855ec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1855dc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1855e40 - extraColumns contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1855d40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1855c40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1855cc0 - extensionName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1855bc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1855ac0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1855b40 - extendedClassInfo contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1855a40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1855940 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18559c0 - extendedAttributeInfo contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18558c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18557c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1855840 - enrollmentProviders contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1855740 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1855640 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18556c0 - employeeType contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18555c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18554c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1855540 - employeeNumber contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1855440 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1855340 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18553c0 - employeeID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18552c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18551c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1855240 - dSUIAdminNotification contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1855140 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1855040 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18550c0 - dSHeuristics contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1854fc0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1854ec0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1854f40 - driverName contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1854e40 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1854d40 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1854dc0 - drink contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x1854cd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1854bd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1854c50 - domainReplica contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1854b50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1854a50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1854ad0 - documentVersion contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18549d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18548d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1854950 - documentTitle contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1854850 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1854750 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18547d0 - documentPublisher contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18546d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18545d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1854650 - documentLocation contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1854550 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1854450 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18544d0 - documentIdentifier contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18543d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18542d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1854350 - dnsRoot contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1854250 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1854150 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18541d0 - dNSHostName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18540d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1853fd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1854050 - dmdName contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1853f50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1853e50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1853ed0 - division contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1853dd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1853cd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1853d50 - dITContentRules contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1853c50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1853b50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1853bd0 - displayName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1853ad0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18539d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1853a50 - dhcpUpdateTime contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1853950 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1853850 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18538d0 - dhcpUniqueKey contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x18537d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18536d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1853750 - dhcpObjName contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1853650 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1853550 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18535d0 - dhcpObjDescription contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18534d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18533d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1853450 - dhcpMaxKey contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1853350 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1853250 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18532d0 - dhcpIdentification contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18531d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x18530d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1853150 - dhcpFlags contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1853050 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1852f50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1852fd0 - desktopProfile contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1852ed0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1852dd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1852e50 - description contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1852d50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1852c50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1852cd0 - departmentNumber contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1852bd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1852ad0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1852b50 - department contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1852a50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1852950 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18529d0 - defaultSecurityDescriptor contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x18528c0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18527c0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1852840 - dc contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1852750 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1852650 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18526d0 - creator contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18525d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18524d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1852550 - creationWizard contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1852450 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x1852350 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18523d0 - creationTime contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x18522d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18521d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1852250 - createWizardExt contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1852150 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1852050 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18520d0 - createDialog contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1851fd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1851ed0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1851f50 - contextMenu contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1851e50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1851d50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1851dd0 - cOMUniqueLIBID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1851cd0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1851bd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1851c50 - cOMTypelibId contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1851b50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1851a50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1851ad0 - cOMTreatAsClassId contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x18519d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18518d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1851950 - cOMProgID contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1851850 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1851750 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18517d0 - company contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18516d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18515d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1851650 - cOMOtherProgId contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1851550 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1851450 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18514d0 - comment contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x18513d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18512d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1851350 - cOMInterfaceID contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1851250 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1851150 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18511d0 - cOMCLSID contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18510d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1850fd0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1851050 - cOMClassID contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1850f50 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1850e50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1850ed0 - co contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1850de0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1850ce0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1850d60 - cn contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1850c70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1850b70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1850bf0 - classDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1850af0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18509f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1850a70 - certificateTemplates contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1850970 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1850870 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18508f0 - cAWEBURL contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18507f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18506f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1850770 - cAUsages contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1850670 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1850570 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18505f0 - categories contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18504f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18503f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1850470 - catalogs contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1850370 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x1850270 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18502f0 - carLicense contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18501f0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x18500f0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1850170 - canUpgradeScript contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1850070 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184ff70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184fff0 - canonicalName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x184fef0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184fdf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184fe70 - cAConnect contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x184fd70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184fc70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184fcf0 - cACertificateDN contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x184fbf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184faf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184fb70 - c contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x184fa80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184f980 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184fa00 - businessCategory contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184f900 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184f800 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184f880 - builtinModifiedCount contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x184f780 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184f680 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184f700 - builtinCreationTime contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x184f600 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184f500 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184f580 - buildingName contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x184f480 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184f380 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184f400 - badPasswordTime contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x184f300 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184f200 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184f280 - auxiliaryClass contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x184f180 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184f080 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184f100 - attributeTypes contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x184f000 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184ef00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184ef80 - attributeSyntax contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x184ee80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184ed80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184ee00 - attributeID contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x184ed00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184ec00 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184ec80 - attributeDisplayNames contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x184eb80 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184ea80 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184eb00 - assetNumber contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x184ea00 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184e900 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184e980 - appliesTo contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x184e880 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184e780 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184e800 - applicationName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x184e700 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184e600 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184e680 - aNR contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x184e590 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184e490 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184e510 - altSecurityIdentities contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x184e410 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184e310 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184e390 - allowedChildClassesEffective contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x184e280 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184e180 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184e200 - allowedChildClasses contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x184e100 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184e000 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184e080 - allowedAttributesEffective contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x184df70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184de70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184def0 - allowedAttributes contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x184ddf0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184dcf0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184dd70 - adminPropertyPages contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x184dc70 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184db70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184dbf0 - adminMultiselectPropertyPages contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x184dae0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184d9e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184da60 - adminDisplayName contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184d960 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184d860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184d8e0 - adminDescription contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184d7e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184d6e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184d760 - adminContextMenu contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184d660 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184d560 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184d5e0 - addressType contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x184d4e0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184d3e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184d460 - additionalTrustedServiceNames contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x184d350 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184d250 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184d2d0 - aCSTimeOfDay contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x184d1d0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184d0d0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184d150 - aCSServerList contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x184d050 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184cf50 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184cfd0 - aCSRSVPLogFilesLocation contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x184cec0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184cdc0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184ce40 - aCSRSVPAccountFilesLocation contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x184cd30 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184cc30 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184ccb0 - aCSPolicyName contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x184cbb0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184cab0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184cb30 - aCSPermissionBits contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x184ca30 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184c930 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184c9b0 - aCSNonReservedTxSize contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x184c8b0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184c7b0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184c830 - aCSNonReservedTxLimit contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x184c730 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184c630 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184c6b0 - aCSNonReservedTokenSize contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x184c5a0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184c4a0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184c520 - aCSNonReservedPeakRate contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x184c420 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184c320 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184c3a0 - aCSNonReservedMinPolicedSize contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x184c290 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184c190 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184c210 - aCSNonReservedMaxSDUSize contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x184c100 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184c000 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184c080 - aCSMinimumPolicedSize contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x184bf80 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184be80 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184bf00 - aCSMinimumLatency contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x184be00 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184bd00 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184bd80 - aCSMinimumDelayVariation contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x184bc70 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184bb70 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184bbf0 - aCSMaxTokenRatePerFlow contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x184baf0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184b9f0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184ba70 - aCSMaxTokenBucketPerFlow contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x184b960 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184b860 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184b8e0 - aCSMaxPeakBandwidthPerFlow contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x184b7d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184b6d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184b750 - aCSMaxPeakBandwidth contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x184b650 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184b550 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184b5d0 - aCSMaximumSDUSize contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x184b4d0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184b3d0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184b450 - aCSMaxAggregatePeakRatePerUser contains 31 bytes in 1 blocks (ref 0) d=(nil) 0x184b340 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184b240 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184b2c0 - aCSIdentityName contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x184b1c0 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184b0c0 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184b140 - aCSAllocableRSVPBandwidth contains 26 bytes in 1 blocks (ref 0) d=(nil) 0x184b030 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184af30 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184afb0 - aCSAggregateTokenRatePerUser contains 29 bytes in 1 blocks (ref 0) d=(nil) 0x184aea0 - struct ldb_val contains 33 bytes in 2 blocks (ref 0) d=(nil) 0x184ada0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x184ae20 - accountNameHistory contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x184ad20 - struct ldb_val contains 24 bytes in 2 blocks (ref 0) d=(nil) 0x184ac20 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x184aca0 - accountExpires contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x184aba0 - struct ldb_dn contains 84 bytes in 2 blocks (ref 0) d=(nil) 0x1846190 - @ATTRIBUTES contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1846250 - struct ldb_message contains 3939 bytes in 127 blocks (ref 0) d=(nil) 0x17febd0 - struct ldb_message_element contains 3832 bytes in 124 blocks (ref 0) d=(nil) 0x1841a10 - struct ldb_val contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x1845ee0 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1845f60 - @IDXVERSION contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1845e60 - struct ldb_val contains 18 bytes in 2 blocks (ref 0) d=(nil) 0x1845d70 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1845df0 - @IDXONE contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1845cf0 - struct ldb_val contains 3671 bytes in 116 blocks (ref 0) d=(nil) 0x1841b60 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1845c70 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1845bf0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1845b70 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1845b00 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1845a80 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1845a00 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1845980 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1845900 - ../lib/ldb/common/ldb_pack.c:264 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1845890 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1845810 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1845790 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1845710 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1845690 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1845610 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1845590 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1845510 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1845490 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x1845410 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1845390 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1845310 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1845290 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1845210 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1845190 - ../lib/ldb/common/ldb_pack.c:264 contains 2 bytes in 1 blocks (ref 0) d=(nil) 0x1845120 - ../lib/ldb/common/ldb_pack.c:264 contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x18450a0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1845020 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1844f90 - ../lib/ldb/common/ldb_pack.c:264 contains 30 bytes in 1 blocks (ref 0) d=(nil) 0x1844f00 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1844e80 - ../lib/ldb/common/ldb_pack.c:264 contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x1844df0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1844d70 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1844cf0 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1844c70 - ../lib/ldb/common/ldb_pack.c:264 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1844be0 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1844b50 - ../lib/ldb/common/ldb_pack.c:264 contains 25 bytes in 1 blocks (ref 0) d=(nil) 0x1844ac0 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1844a40 - ../lib/ldb/common/ldb_pack.c:264 contains 22 bytes in 1 blocks (ref 0) d=(nil) 0x18449c0 - ../lib/ldb/common/ldb_pack.c:264 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1844930 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x18448b0 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1844830 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18447b0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1844730 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18446b0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1844630 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18445b0 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1844530 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x18444a0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1844420 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1844390 - ../lib/ldb/common/ldb_pack.c:264 contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x1844300 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1844280 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1844200 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1844180 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x18440f0 - ../lib/ldb/common/ldb_pack.c:264 contains 28 bytes in 1 blocks (ref 0) d=(nil) 0x1844060 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1843fe0 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1843f60 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1843ee0 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1843e60 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1843de0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1843d60 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1843ce0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1843c60 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1843be0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1843b60 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1843ae0 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1843a60 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18439e0 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1843960 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x18438e0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1843860 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x18437e0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1843760 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18436e0 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1843660 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x18435e0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1843560 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x18434e0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1843460 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18433e0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1843360 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x18432e0 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1843260 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x18431e0 - ../lib/ldb/common/ldb_pack.c:264 contains 12 bytes in 1 blocks (ref 0) d=(nil) 0x1843160 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x18430f0 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1843070 - ../lib/ldb/common/ldb_pack.c:264 contains 27 bytes in 1 blocks (ref 0) d=(nil) 0x1842fe0 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1842f60 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1842ee0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1842e60 - ../lib/ldb/common/ldb_pack.c:264 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x1842df0 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1842d70 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1842cf0 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1842c70 - ../lib/ldb/common/ldb_pack.c:264 contains 20 bytes in 1 blocks (ref 0) d=(nil) 0x1842bf0 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1842b70 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1842af0 - ../lib/ldb/common/ldb_pack.c:264 contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x1842a70 - ../lib/ldb/common/ldb_pack.c:264 contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x18429f0 - ../lib/ldb/common/ldb_pack.c:264 contains 23 bytes in 1 blocks (ref 0) d=(nil) 0x1842970 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x18428f0 - ../lib/ldb/common/ldb_pack.c:264 contains 3 bytes in 1 blocks (ref 0) d=(nil) 0x1842880 - ../lib/ldb/common/ldb_pack.c:264 contains 15 bytes in 1 blocks (ref 0) d=(nil) 0x1842800 - ../lib/ldb/common/ldb_pack.c:264 contains 14 bytes in 1 blocks (ref 0) d=(nil) 0x1842780 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1842700 - ../lib/ldb/common/ldb_pack.c:264 contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x1842680 - ../lib/ldb/common/ldb_pack.c:264 contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x1842600 - ../lib/ldb/common/ldb_pack.c:264 contains 19 bytes in 1 blocks (ref 0) d=(nil) 0x1842580 - ../lib/ldb/common/ldb_pack.c:264 contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x1842500 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1842480 - ../lib/ldb/common/ldb_pack.c:264 contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1842400 - ../lib/ldb/common/ldb_pack.c:264 contains 13 bytes in 1 blocks (ref 0) d=(nil) 0x1842380 - ../lib/ldb/common/ldb_pack.c:264 contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x1842300 - @IDXATTR contains 9 bytes in 1 blocks (ref 0) d=(nil) 0x1841ae0 - struct ldb_dn contains 83 bytes in 2 blocks (ref 0) d=(nil) 0x18418d0 - @INDEXLIST contains 11 bytes in 1 blocks (ref 0) d=(nil) 0x1841990 - struct ltdb_wrap contains 40 bytes in 1 blocks (ref 0) d=0x2af290dc12e8 0x17fdc90 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x17fd800 - /home/rusty/samba/st/fl2000dc/private/sam.ldb contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x17fe980 - /home/rusty/samba/st/fl2000dc/private/sam.ldb contains 46 bytes in 1 blocks (ref 0) d=(nil) 0x17fd700 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x17fda10 - struct ldb_dn_extended_syntax contains 320 bytes in 1 blocks (ref 0) d=(nil) 0x17fe7d0 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x17fcf90 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x17fd980 - struct ldb_opaque contains 24 bytes in 1 blocks (ref 0) d=(nil) 0x17fdb10 - /home/rusty/samba/bin/modules/ldb contains 34 bytes in 1 blocks (ref 0) d=(nil) 0x17fc920 - struct ldb_schema_attribute contains 15048 bytes in 1 blocks (ref 0) d=(nil) 0x18dee70 - struct tevent_timer contains 80 bytes in 1 blocks (ref 0) d=0x2af2770e2f2c 0x17fbe70 - struct tevent_fd contains 88 bytes in 1 blocks (ref 0) d=0x2af2770e2515 0x17fbd30 - struct std_event_context contains 24 bytes in 1 blocks (ref 0) d=0x2af2770e1c09 0x17fbca0 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb8e0 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb850 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb7c0 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb730 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb6a0 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb610 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb580 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb4f0 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb460 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb3d0 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb340 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb2b0 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb120 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb090 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17fb000 - struct registered_server contains 32 bytes in 1 blocks (ref 0) d=(nil) 0x17faf70 - struct auth_backend contains 358 bytes in 15 blocks (ref 0) d=(nil) 0x17fae50 - ../source4/auth/ntlm/auth.c:663 contains 37 bytes in 2 blocks (ref 0) d=(nil) 0x181b8c0 - unix contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x17faf00 - ../source4/auth/ntlm/auth.c:663 contains 49 bytes in 2 blocks (ref 0) d=(nil) 0x17fad40 - name_to_ntstatus contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x17fadd0 - ../source4/auth/ntlm/auth.c:663 contains 49 bytes in 2 blocks (ref 0) d=(nil) 0x17fac30 - winbind_wbclient contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x17facc0 - ../source4/auth/ntlm/auth.c:663 contains 40 bytes in 2 blocks (ref 0) d=(nil) 0x17fab20 - winbind contains 8 bytes in 1 blocks (ref 0) d=(nil) 0x17fabb0 - ../source4/auth/ntlm/auth.c:663 contains 42 bytes in 2 blocks (ref 0) d=(nil) 0x17faa10 - anonymous contains 10 bytes in 1 blocks (ref 0) d=(nil) 0x17faaa0 - ../source4/auth/ntlm/auth.c:663 contains 49 bytes in 2 blocks (ref 0) d=(nil) 0x17fa900 - sam_ignoredomain contains 17 bytes in 1 blocks (ref 0) d=(nil) 0x17fa990 - ../source4/auth/ntlm/auth.c:663 contains 36 bytes in 2 blocks (ref 0) d=(nil) 0x18039c0 - sam contains 4 bytes in 1 blocks (ref 0) d=(nil) 0x17fa890 - struct sys_notify_backend contains 16 bytes in 1 blocks (ref 0) d=(nil) 0x17d4460 - struct gensec_security_ops * contains 72 bytes in 1 blocks (ref 0) d=(nil) 0x17de590 - struct tdb_wrap contains 97 bytes in 3 blocks (ref 0) d=(nil) 0x17d4180 - struct tdb_wrap_private contains 89 bytes in 2 blocks (ref 0) d=0x2af279e7ff20 0x17d43d0 - /home/rusty/samba/st/fl2000dc/private/schannel_store.tdb contains 57 bytes in 1 blocks (ref 0) d=(nil) 0x17dd870 - struct tdb_wrap contains 91 bytes in 3 blocks (ref 0) d=(nil) 0x17d4220 - struct tdb_wrap_private contains 83 bytes in 2 blocks (ref 0) d=0x2af279e7ff20 0x17d42a0 - /home/rusty/samba/st/fl2000dc/private/randseed.tdb contains 51 bytes in 1 blocks (ref 0) d=(nil) 0x17d4330 - struct smb_iconv_handle contains 610 bytes in 8 blocks (ref 0) d=0x2af276ec3872 0x17d4590 - iconv(UTF8,CP850) contains 82 bytes in 2 blocks (ref 0) d=0x2af276ec79ca 0x21cb650 - .name contains 18 bytes in 1 blocks (ref 0) d=(nil) 0x2203200 - iconv(UTF8,UTF-16LE) contains 85 bytes in 2 blocks (ref 0) d=0x2af276ec79ca 0x25bf5f0 - .name contains 21 bytes in 1 blocks (ref 0) d=(nil) 0x1a103a0 - talloc_new: ../lib/util/charset/codepoints.c:251 contains 11 bytes in 3 blocks (ref 0) d=(nil) 0x17d47b0 - UTF8 contains 5 bytes in 1 blocks (ref 0) d=(nil) 0x17d4890 - CP850 contains 6 bytes in 1 blocks (ref 0) d=(nil) 0x17d4820 diff --git a/nostrdb/ccan/ccan/tal/str/LICENSE b/nostrdb/ccan/ccan/tal/str/LICENSE deleted file mode 120000 index 2b1feca547..0000000000 --- a/nostrdb/ccan/ccan/tal/str/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../../licenses/BSD-MIT \ No newline at end of file diff --git a/nostrdb/ccan/ccan/tal/str/_info b/nostrdb/ccan/ccan/tal/str/_info deleted file mode 100644 index 9b9c70b6be..0000000000 --- a/nostrdb/ccan/ccan/tal/str/_info +++ /dev/null @@ -1,61 +0,0 @@ -#include "config.h" -#include -#include - -/** - * tal/str - string helper routines which use tal - * - * This is a grab bag of functions for string operations, designed to enhance - * the standard string.h; these are separated from the non-tal-needing - * string utilities in "str.h". Each string created by this library - * will have tal_count() equal to strlen() + 1 (assuming you didn't create - * a string containing a NUL, such as using tal_fmt("%c", 0)). - * - * Example: - * #include - * #include - * #include - * - * // Dumb demo program to double-linespace a file. - * int main(int argc, char *argv[]) - * { - * char *textfile; - * char **lines; - * - * if (argc > 2) - * errx(1, "Takes 0 or 1 arguments"); - * // Grab lines in file. - * textfile = grab_file(NULL, argv[1]); - * if (!textfile) - * err(1, "Failed reading %s", argv[1]); - * lines = tal_strsplit(textfile, textfile, "\n", STR_EMPTY_OK); - * - * // Join them back together with two linefeeds. - * printf("%s", tal_strjoin(textfile, lines, "\n\n", STR_TRAIL)); - * - * // Free everything, just because we can. - * tal_free(textfile); - * return 0; - * } - * - * License: BSD-MIT - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - printf("ccan/str\n"); -#ifdef TAL_USE_TALLOC - printf("ccan/tal/talloc\n"); -#else - printf("ccan/tal\n"); -#endif - printf("ccan/take\n"); - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/tal/str/str.c b/nostrdb/ccan/ccan/tal/str/str.c deleted file mode 100644 index 617b942cd8..0000000000 --- a/nostrdb/ccan/ccan/tal/str/str.c +++ /dev/null @@ -1,286 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#include -#include -#include -#include -#include -#include "str.h" -#include -#include -#include -#include -#include -#include - -char *tal_strdup_(const tal_t *ctx, const char *p, const char *label) -{ - return tal_dup_arr_label(ctx, char, p, strlen(p) + 1, 0, label); -} - -char *tal_strndup_(const tal_t *ctx, const char *p, size_t n, const char *label) -{ - size_t len = strnlen(p, n); - char *ret; - - ret = tal_dup_arr_label(ctx, char, p, len, 1, label); - if (ret) - ret[len] = '\0'; - return ret; -} - -char *tal_fmt_(const tal_t *ctx, const char *label, const char *fmt, ...) -{ - va_list ap; - char *ret; - - va_start(ap, fmt); - ret = tal_vfmt_(ctx, fmt, ap, label); - va_end(ap); - - return ret; -} - -static bool do_vfmt(char **buf, size_t off, const char *fmt, va_list ap) -{ - /* A decent guess to start. */ - size_t max = strlen(fmt) * 2 + 1; - bool ok; - - for (;;) { - va_list ap2; - int ret; - - if (!tal_resize(buf, off + max)) { - ok = false; - break; - } - - va_copy(ap2, ap); - ret = vsnprintf(*buf + off, max, fmt, ap2); - va_end(ap2); - - if (ret < max) { - ok = true; - /* Make sure tal_count() is correct! */ - tal_resize(buf, off + ret + 1); - break; - } - max *= 2; - } - - if (taken(fmt)) - tal_free(fmt); - return ok; -} - -char *tal_vfmt_(const tal_t *ctx, const char *fmt, va_list ap, const char *label) -{ - char *buf; - - /* A decent guess to start. */ - buf = tal_arr_label(ctx, char, strlen(fmt) * 2, label); - if (!do_vfmt(&buf, 0, fmt, ap)) - buf = tal_free(buf); - return buf; -} - -bool tal_append_vfmt(char **baseptr, const char *fmt, va_list ap) -{ - return do_vfmt(baseptr, strlen(*baseptr), fmt, ap); -} - -bool tal_append_fmt(char **baseptr, const char *fmt, ...) -{ - va_list ap; - bool ret; - - va_start(ap, fmt); - ret = tal_append_vfmt(baseptr, fmt, ap); - va_end(ap); - - return ret; -} - -char *tal_strcat_(const tal_t *ctx, const char *s1, const char *s2, - const char *label) -{ - size_t len1, len2; - char *ret; - - len1 = strlen(s1); - len2 = strlen(s2); - - ret = tal_dup_arr_label(ctx, char, s1, len1, len2 + 1, label); - if (likely(ret)) - memcpy(ret + len1, s2, len2 + 1); - - if (taken(s2)) - tal_free(s2); - return ret; -} - -char **tal_strsplit_(const tal_t *ctx, - const char *string, const char *delims, enum strsplit flags, - const char *label) -{ - char **parts, *str; - size_t max = 64, num = 0; - - parts = tal_arr(ctx, char *, max + 1); - if (unlikely(!parts)) { - if (taken(string)) - tal_free(string); - if (taken(delims)) - tal_free(delims); - return parts; - } - str = tal_strdup(parts, string); - if (unlikely(!str)) - goto fail; - - if (flags == STR_NO_EMPTY) - str += strspn(str, delims); - - while (*str != '\0') { - size_t len = strcspn(str, delims), dlen; - - parts[num] = str; - dlen = strspn(str + len, delims); - parts[num][len] = '\0'; - if (flags == STR_EMPTY_OK && dlen) - dlen = 1; - str += len + dlen; - if (++num == max && !tal_resize(&parts, max*=2 + 1)) - goto fail; - } - parts[num] = NULL; - - /* Ensure that tal_count() is correct. */ - if (unlikely(!tal_resize(&parts, num+1))) - goto fail; - - if (taken(delims)) - tal_free(delims); - return parts; - -fail: -#ifdef CCAN_TAL_NEVER_RETURN_NULL - abort(); -#else - tal_free(parts); - if (taken(delims)) - tal_free(delims); - return NULL; -#endif -} - -char *tal_strjoin_(const tal_t *ctx, - char *strings[], const char *delim, enum strjoin flags, - const char *label) -{ - unsigned int i; - char *ret = NULL; - size_t totlen = 0, dlen; - - dlen = strlen(delim); - ret = tal_arr_label(ctx, char, dlen*2+1, label); - if (!ret) - goto fail; - - ret[0] = '\0'; - for (i = 0; strings[i]; i++) { - size_t len = strlen(strings[i]); - - if (flags == STR_NO_TRAIL && !strings[i+1]) - dlen = 0; - if (!tal_resize(&ret, totlen + len + dlen + 1)) - goto fail; - memcpy(ret + totlen, strings[i], len); - totlen += len; - memcpy(ret + totlen, delim, dlen); - totlen += dlen; - } - ret[totlen] = '\0'; - /* Make sure tal_count() is correct! */ - tal_resize(&ret, totlen+1); -out: - if (taken(strings)) - tal_free(strings); - if (taken(delim)) - tal_free(delim); - return ret; -fail: - ret = tal_free(ret); - goto out; -} - -static size_t count_open_braces(const char *string) -{ -#if 1 - size_t num = 0, esc = 0; - - while (*string) { - if (*string == '\\') - esc++; - else { - /* An odd number of \ means it's escaped. */ - if (*string == '(' && (esc & 1) == 0) - num++; - esc = 0; - } - string++; - } - return num; -#else - return strcount(string, "("); -#endif -} - -bool tal_strreg_(const tal_t *ctx, const char *string, const char *label, - const char *regex, ...) -{ - size_t nmatch = 1 + count_open_braces(regex); - regmatch_t matches[nmatch]; - regex_t r; - bool ret = false; - unsigned int i; - va_list ap; - - if (regcomp(&r, regex, REG_EXTENDED) != 0) - goto fail_no_re; - - if (regexec(&r, string, nmatch, matches, 0) != 0) - goto fail; - - ret = true; - va_start(ap, regex); - for (i = 1; i < nmatch; i++) { - char **arg = va_arg(ap, char **); - if (arg) { - /* eg. ([a-z])? can give "no match". */ - if (matches[i].rm_so == -1) - *arg = NULL; - else { - *arg = tal_strndup_(ctx, - string + matches[i].rm_so, - matches[i].rm_eo - - matches[i].rm_so, - label); - /* FIXME: If we fail, we set some and leak! */ - if (!*arg) { - ret = false; - break; - } - } - } - } - va_end(ap); -fail: - regfree(&r); -fail_no_re: - if (taken(regex)) - tal_free(regex); - if (taken(string)) - tal_free(string); - return ret; -} diff --git a/nostrdb/ccan/ccan/tal/str/str.h b/nostrdb/ccan/ccan/tal/str/str.h deleted file mode 100644 index 12b1647829..0000000000 --- a/nostrdb/ccan/ccan/tal/str/str.h +++ /dev/null @@ -1,232 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#ifndef CCAN_STR_TAL_H -#define CCAN_STR_TAL_H -#ifdef TAL_USE_TALLOC -#include -#else -#include -#endif -#include -#include - -/** - * tal_strdup - duplicate a string - * @ctx: NULL, or tal allocated object to be parent. - * @p: the string to copy (can be take(), must not be NULL). - * - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_strdup(ctx, p) tal_strdup_(ctx, p, TAL_LABEL(char, "[]")) -char *tal_strdup_(const tal_t *ctx, const char *p TAKES, const char *label) - TAL_RETURN_PTR NON_NULL_ARGS(2); - -/** - * tal_strndup - duplicate a limited amount of a string. - * @ctx: NULL, or tal allocated object to be parent. - * @p: the string to copy (can be take(), must not be NULL). - * @n: the maximum length to copy. - * - * Always gives a nul-terminated string, with strlen() <= @n. - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_strndup(ctx, p, n) tal_strndup_(ctx, p, n, TAL_LABEL(char, "[]")) -char *tal_strndup_(const tal_t *ctx, const char *p TAKES, size_t n, - const char *label) - TAL_RETURN_PTR NON_NULL_ARGS(2); - -/** - * tal_fmt - allocate a formatted string - * @ctx: NULL, or tal allocated object to be parent. - * @fmt: the printf-style format (can be take(), must not be NULL). - * - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_fmt(ctx, ...) \ - tal_fmt_(ctx, TAL_LABEL(char, "[]"), __VA_ARGS__) -char *tal_fmt_(const tal_t *ctx, const char *label, const char *fmt TAKES, - ...) PRINTF_FMT(3,4) TAL_RETURN_PTR NON_NULL_ARGS(3); - -/** - * tal_vfmt - allocate a formatted string (va_list version) - * @ctx: NULL, or tal allocated object to be parent. - * @fmt: the printf-style format (can be take(), must not be NULL). - * @va: the va_list containing the format args. - * - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_vfmt(ctx, fmt, va) \ - tal_vfmt_(ctx, fmt, va, TAL_LABEL(char, "[]")) -char *tal_vfmt_(const tal_t *ctx, const char *fmt TAKES, va_list ap, - const char *label) - PRINTF_FMT(2,0) TAL_RETURN_PTR NON_NULL_ARGS(2); - -/** - * tal_append_fmt - append a formatted string to a talloc string. - * @baseptr: a pointer to the tal string to be appended to. - * @fmt: the printf-style format (can be take(), must not be NULL). - * - * Returns false on allocation failure. - * Otherwise tal_count(*@baseptr) == strlen(*@baseptr) + 1. - */ -bool tal_append_fmt(char **baseptr, const char *fmt TAKES, ...) - PRINTF_FMT(2,3) NON_NULL_ARGS(2); - -/** - * tal_append_vfmt - append a formatted string to a talloc string (va_list) - * @baseptr: a pointer to the tal string to be appended to. - * @fmt: the printf-style format (can be take(), must not be NULL). - * @va: the va_list containing the format args. - * - * Returns false on allocation failure. - * Otherwise tal_count(*@baseptr) == strlen(*@baseptr) + 1. - */ -bool tal_append_vfmt(char **baseptr, const char *fmt TAKES, va_list ap) - NON_NULL_ARGS(2); - -/** - * tal_strcat - join two strings together - * @ctx: NULL, or tal allocated object to be parent. - * @s1: the first string (can be take(), must not be NULL). - * @s2: the second string (can be take(), must not be NULL). - * - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_strcat(ctx, s1, s2) tal_strcat_(ctx, s1, s2, TAL_LABEL(char, "[]")) -char *tal_strcat_(const tal_t *ctx, const char *s1 TAKES, const char *s2 TAKES, - const char *label) TAL_RETURN_PTR NON_NULL_ARGS(2,3); - -enum strsplit { - STR_EMPTY_OK, - STR_NO_EMPTY -}; - -/** - * tal_strsplit - Split string into an array of substrings - * @ctx: the context to tal from (often NULL). - * @string: the string to split (can be take(), must not be NULL). - * @delims: delimiters where lines should be split (can be take(), must not be NULL). - * @flags: whether to include empty substrings. - * - * This function splits a single string into multiple strings. - * - * If @string is take(), the returned array will point into the - * mangled @string. - * - * Multiple delimiters result in empty substrings. By definition, no - * delimiters will appear in the substrings. - * - * The final char * in the array will be NULL, and tal_count() will - * return the number of elements plus 1 (for that NULL). - * - * Example: - * #include - * ... - * static unsigned int count_long_lines(const char *string) - * { - * char **lines; - * unsigned int i, long_lines = 0; - * - * // Can only fail on out-of-memory. - * lines = tal_strsplit(NULL, string, "\n", STR_NO_EMPTY); - * for (i = 0; lines[i] != NULL; i++) - * if (strlen(lines[i]) > 80) - * long_lines++; - * tal_free(lines); - * return long_lines; - * } - */ -#define tal_strsplit(ctx, string, delims, flag) \ - tal_strsplit_(ctx, string, delims, flag, TAL_LABEL(char *, "[]")) -char **tal_strsplit_(const tal_t *ctx, - const char *string TAKES, - const char *delims TAKES, - enum strsplit flag, - const char *label) - TAL_RETURN_PTR NON_NULL_ARGS(2,3); - -enum strjoin { - STR_TRAIL, - STR_NO_TRAIL -}; - -/** - * tal_strjoin - Join an array of substrings into one long string - * @ctx: the context to tal from (often NULL). - * @strings: the NULL-terminated array of strings to join (can be take(), must not be NULL) - * @delim: the delimiter to insert between the strings (can be take(), must not be NULL) - * @flags: whether to add a delimieter to the end - * - * This function joins an array of strings into a single string. The - * return value is allocated using tal. Each string in @strings is - * followed by a copy of @delim. - * - * The returned string will have tal_count() == strlen() + 1. - * - * Example: - * // Append the string "--EOL" to each line. - * static char *append_to_all_lines(const char *string) - * { - * char **lines, *ret; - * - * lines = tal_strsplit(NULL, string, "\n", STR_EMPTY_OK); - * ret = tal_strjoin(NULL, lines, "-- EOL\n", STR_TRAIL); - * tal_free(lines); - * return ret; - * } - */ -#define tal_strjoin(ctx, strings, delim, flags) \ - tal_strjoin_(ctx, strings, delim, flags, TAL_LABEL(char, "[]")) -char *tal_strjoin_(const void *ctx, - char *strings[] TAKES, - const char *delim TAKES, - enum strjoin flags, - const char *label) - TAL_RETURN_PTR NON_NULL_ARGS(2,3); - -/** - * tal_strreg - match/extract from a string via (extended) regular expressions. - * @ctx: the context to tal from (often NULL) - * @string: the string to try to match (can be take(), must not be NULL) - * @regex: the regular expression to match (can be take(), must not be NULL) - * ...: pointers to strings to allocate for subexpressions. - * - * Returns true if we matched, in which case any parenthesized - * expressions in @regex are allocated and placed in the char ** - * arguments following @regex. NULL arguments mean the match is not - * saved. The order of the strings is the order - * of opening braces in the expression: in the case of repeated - * expressions (eg "([a-z])*") the last one is saved, in the case of - * non-existent matches (eg "([a-z]*)?") the pointer is set to NULL. - * - * Allocation failures or malformed regular expressions return false. - * The allocated strings will have tal_count() == strlen() + 1. - * - * See Also: - * regcomp(3), regex(3). - * - * Example: - * // Given "My name is Rusty" outputs "Hello Rusty!\n" - * // Given "my first name is Rusty Russell" outputs "Hello Rusty Russell!\n" - * // Given "My name isnt Rusty Russell" outputs "Hello there!\n" - * int main(int argc, char *argv[]) - * { - * char *person, *input; - * - * (void)argc; - * // Join args and trim trailing space. - * input = tal_strjoin(NULL, argv+1, " ", STR_NO_TRAIL); - * if (tal_strreg(NULL, input, - * "[Mm]y (first )?name is ([A-Za-z ]+)", - * NULL, &person)) - * printf("Hello %s!\n", person); - * else - * printf("Hello there!\n"); - * return 0; - * } - */ -#define tal_strreg(ctx, string, ...) \ - tal_strreg_(ctx, string, TAL_LABEL(char, "[]"), __VA_ARGS__) -bool tal_strreg_(const void *ctx, const char *string TAKES, - const char *label, const char *regex TAKES, ...) - NON_NULL_ARGS(2,4); -#endif /* CCAN_STR_TAL_H */ diff --git a/nostrdb/ccan/ccan/tal/tal.c b/nostrdb/ccan/ccan/tal/tal.c deleted file mode 100644 index e799059fc0..0000000000 --- a/nostrdb/ccan/ccan/tal/tal.c +++ /dev/null @@ -1,1031 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//#define TAL_DEBUG 1 - -#define NOTIFY_IS_DESTRUCTOR 512 -#define NOTIFY_EXTRA_ARG 1024 - -/* This makes our parent_child ptr stand out for to_tal_hdr checks */ -#define TAL_PTR_OBFUSTICATOR ((intptr_t)0x1984200820142016ULL) - -/* 32-bit type field, first byte 0 in either endianness. */ -enum prop_type { - CHILDREN = 0x00c1d500, - NAME = 0x00111100, - NOTIFIER = 0x00071f00, -}; - -struct tal_hdr { - struct list_node list; - /* Use is_prop_hdr tell if this is a struct prop_hdr or string! */ - char *prop; - /* XOR with TAL_PTR_OBFUSTICATOR */ - intptr_t parent_child; - size_t bytelen; -}; - -struct prop_hdr { - enum prop_type type; - /* Use is_prop_hdr to tell if this is a struct prop_hdr or string! */ - char *next; -}; - -struct children { - struct prop_hdr hdr; /* CHILDREN */ - struct tal_hdr *parent; - struct list_head children; /* Head of siblings. */ -}; - -struct name { - struct prop_hdr hdr; /* NAME */ - char name[]; -}; - -struct notifier { - struct prop_hdr hdr; /* NOTIFIER */ - enum tal_notify_type types; - union notifier_cb { - void (*notifyfn)(tal_t *, enum tal_notify_type, void *); - void (*destroy)(tal_t *); /* If NOTIFY_IS_DESTRUCTOR set */ - void (*destroy2)(tal_t *, void *); /* If NOTIFY_EXTRA_ARG */ - } u; -}; - -/* Extra arg */ -struct notifier_extra_arg { - struct notifier n; - void *arg; -}; - -#define EXTRA_ARG(n) (((struct notifier_extra_arg *)(n))->arg) - -static struct { - struct tal_hdr hdr; - struct children c; -} null_parent = { { { &null_parent.hdr.list, &null_parent.hdr.list }, - (char *)&null_parent.c.hdr, TAL_PTR_OBFUSTICATOR, 0 }, - { { CHILDREN, NULL }, - &null_parent.hdr, - { { &null_parent.c.children.n, - &null_parent.c.children.n } } - } -}; - - -static void *(*allocfn)(size_t size) = malloc; -static void *(*resizefn)(void *, size_t size) = realloc; -static void (*freefn)(void *) = free; -static void (*errorfn)(const char *msg) = (void *)abort; -/* Count on non-destrutor notifiers; often stays zero. */ -static size_t notifiers = 0; - -static inline void COLD call_error(const char *msg) -{ - errorfn(msg); -} - -static bool get_destroying_bit(intptr_t parent_child) -{ - return parent_child & 1; -} - -static void set_destroying_bit(intptr_t *parent_child) -{ - *parent_child |= 1; -} - -static struct children *ignore_destroying_bit(intptr_t parent_child) -{ - return (void *)((parent_child ^ TAL_PTR_OBFUSTICATOR) & ~(intptr_t)1); -} - -/* This means valgrind can see leaks. */ -void tal_cleanup(void) -{ - struct tal_hdr *i; - - while ((i = list_top(&null_parent.c.children, struct tal_hdr, list))) { - list_del(&i->list); - memset(i, 0, sizeof(*i)); - } - - /* Cleanup any taken pointers. */ - take_cleanup(); -} - -/* We carefully start all real properties with a zero byte. */ -static struct prop_hdr *is_prop_hdr(const char *ptr) -{ - if (*ptr != 0) - return NULL; - return (struct prop_hdr *)ptr; -} - -#ifndef NDEBUG -static const void *bounds_start, *bounds_end; - -static void update_bounds(const void *new, size_t size) -{ - if (unlikely(!bounds_start)) { - bounds_start = new; - bounds_end = (char *)new + size; - } else if (new < bounds_start) - bounds_start = new; - else if ((char *)new + size > (char *)bounds_end) - bounds_end = (char *)new + size; -} - -static bool in_bounds(const void *p) -{ - return !p - || (p >= (void *)&null_parent && p <= (void *)(&null_parent + 1)) - || (p >= bounds_start && p <= bounds_end); -} -#else -static void update_bounds(const void *new, size_t size) -{ -} - -static bool in_bounds(const void *p) -{ - return true; -} -#endif - -static void check_bounds(const void *p) -{ - if (!in_bounds(p)) - call_error("Not a valid header"); -} - -static struct tal_hdr *to_tal_hdr(const void *ctx) -{ - struct tal_hdr *t; - - t = (struct tal_hdr *)((char *)ctx - sizeof(struct tal_hdr)); - check_bounds(t); - check_bounds(ignore_destroying_bit(t->parent_child)); - check_bounds(t->list.next); - check_bounds(t->list.prev); - if (t->prop) { - struct prop_hdr *p = is_prop_hdr(t->prop); - if (p) - check_bounds(p); - } - return t; -} - -static struct tal_hdr *to_tal_hdr_or_null(const void *ctx) -{ - if (!ctx) - return &null_parent.hdr; - return to_tal_hdr(ctx); -} - -static void *from_tal_hdr(const struct tal_hdr *hdr) -{ - return (void *)(hdr + 1); -} - -static void *from_tal_hdr_or_null(const struct tal_hdr *hdr) -{ - if (hdr == &null_parent.hdr) - return NULL; - return from_tal_hdr(hdr); -} - -#ifdef TAL_DEBUG -static struct tal_hdr *debug_tal(struct tal_hdr *tal) -{ - tal_check(from_tal_hdr_or_null(tal), "TAL_DEBUG "); - return tal; -} -#else -static struct tal_hdr *debug_tal(struct tal_hdr *tal) -{ - return tal; -} -#endif - -static void notify(const struct tal_hdr *ctx, - enum tal_notify_type type, const void *info, - int saved_errno) -{ - const char *ptr; - const struct prop_hdr *p; - - for (ptr = ctx->prop; ptr && (p = is_prop_hdr(ptr)) != NULL; ptr = p->next) { - struct notifier *n; - - if (p->type != NOTIFIER) - continue; - n = (struct notifier *)p; - if (n->types & type) { - errno = saved_errno; - if (n->types & NOTIFY_IS_DESTRUCTOR) { - /* Blatt this notifier in case it tries to - * tal_del_destructor() from inside */ - union notifier_cb cb = n->u; - /* It's a union, so this NULLs destroy2 too! */ - n->u.destroy = NULL; - if (n->types & NOTIFY_EXTRA_ARG) - cb.destroy2(from_tal_hdr(ctx), - EXTRA_ARG(n)); - else - cb.destroy(from_tal_hdr(ctx)); - } else - n->u.notifyfn(from_tal_hdr_or_null(ctx), type, - (void *)info); - } - } -} - -static void *allocate(size_t size) -{ - void *ret = allocfn(size); - if (!ret) - call_error("allocation failed"); - else - update_bounds(ret, size); - return ret; -} - -/* Returns a pointer to the pointer: can cast (*ret) to a (struct prop_ptr *) */ -static char **find_property_ptr(struct tal_hdr *t, enum prop_type type) -{ - char **ptr; - struct prop_hdr *p; - - /* NAME is special, as it can be a literal: see find_name_property */ - assert(type != NAME); - for (ptr = &t->prop; *ptr; ptr = &p->next) { - if (!is_prop_hdr(*ptr)) - break; - p = (struct prop_hdr *)*ptr; - if (p->type == type) - return ptr; - } - return NULL; -} - -/* This is special: - * NULL - not found - * *literal: true - char **, pointer to literal pointer. - * *literal: false - struct prop_hdr **, pointer to header ptr. - */ -static char **find_name_property(struct tal_hdr *t, bool *literal) -{ - char **ptr; - struct prop_hdr *p; - - for (ptr = &t->prop; *ptr; ptr = &p->next) { - if (!is_prop_hdr(*ptr)) { - *literal = true; - return ptr; - } - p = (struct prop_hdr *)*ptr; - if (p->type == NAME) { - *literal = false; - return ptr; - } - } - return NULL; -} - -static void *find_property(struct tal_hdr *parent, enum prop_type type) -{ - char **ptr = find_property_ptr(parent, type); - - if (ptr) - return (struct prop_hdr *)*ptr; - return NULL; -} - -static void init_property(struct prop_hdr *hdr, - struct tal_hdr *parent, - enum prop_type type) -{ - hdr->type = type; - hdr->next = parent->prop; - parent->prop = (char *)hdr; -} - -static struct notifier *add_notifier_property(struct tal_hdr *t, - enum tal_notify_type types, - void (*fn)(void *, - enum tal_notify_type, - void *), - void *extra_arg) -{ - struct notifier *prop; - - if (types & NOTIFY_EXTRA_ARG) - prop = allocate(sizeof(struct notifier_extra_arg)); - else - prop = allocate(sizeof(struct notifier)); - - if (prop) { - init_property(&prop->hdr, t, NOTIFIER); - prop->types = types; - prop->u.notifyfn = fn; - if (types & NOTIFY_EXTRA_ARG) - EXTRA_ARG(prop) = extra_arg; - } - return prop; -} - -static enum tal_notify_type del_notifier_property(struct tal_hdr *t, - void (*fn)(tal_t *, - enum tal_notify_type, - void *), - bool match_extra_arg, - void *extra_arg) -{ - char **ptr; - struct prop_hdr *p; - - for (ptr = &t->prop; *ptr; ptr = &p->next) { - struct notifier *n; - enum tal_notify_type types; - - p = is_prop_hdr(*ptr); - if (!p) - break; - - if (p->type != NOTIFIER) - continue; - n = (struct notifier *)p; - if (n->u.notifyfn != fn) - continue; - - types = n->types; - if ((types & NOTIFY_EXTRA_ARG) - && match_extra_arg - && extra_arg != EXTRA_ARG(n)) - continue; - - *ptr = p->next; - freefn(p); - return types & ~(NOTIFY_IS_DESTRUCTOR|NOTIFY_EXTRA_ARG); - } - return 0; -} - -static struct name *add_name_property(struct tal_hdr *t, const char *name) -{ - struct name *prop; - - prop = allocate(sizeof(*prop) + strlen(name) + 1); - if (prop) { - init_property(&prop->hdr, t, NAME); - strcpy(prop->name, name); - } - return prop; -} - -static struct children *add_child_property(struct tal_hdr *parent, - struct tal_hdr *child UNNEEDED) -{ - struct children *prop = allocate(sizeof(*prop)); - if (prop) { - init_property(&prop->hdr, parent, CHILDREN); - prop->parent = parent; - list_head_init(&prop->children); - } - return prop; -} - -static bool add_child(struct tal_hdr *parent, struct tal_hdr *child) -{ - struct children *children = find_property(parent, CHILDREN); - - if (!children) { - children = add_child_property(parent, child); - if (!children) - return false; - } - list_add(&children->children, &child->list); - child->parent_child = (intptr_t)children ^ TAL_PTR_OBFUSTICATOR; - return true; -} - -static void del_tree(struct tal_hdr *t, const tal_t *orig, int saved_errno) -{ - struct prop_hdr *prop; - char *ptr, *next; - - assert(!taken(from_tal_hdr(t))); - - /* Already being destroyed? Don't loop. */ - if (unlikely(get_destroying_bit(t->parent_child))) - return; - - set_destroying_bit(&t->parent_child); - - /* Call free notifiers. */ - notify(t, TAL_NOTIFY_FREE, (tal_t *)orig, saved_errno); - - /* Now free children and groups. */ - prop = find_property(t, CHILDREN); - if (prop) { - struct tal_hdr *i; - struct children *c = (struct children *)prop; - - while ((i = list_top(&c->children, struct tal_hdr, list))) { - list_del(&i->list); - del_tree(i, orig, saved_errno); - } - } - - /* Finally free our properties. */ - for (ptr = t->prop; ptr && (prop = is_prop_hdr(ptr)); ptr = next) { - next = prop->next; - freefn(ptr); - } - freefn(t); -} - -/* Don't have compiler complain we're returning NULL if we promised not to! */ -static void *null_alloc_failed(void) -{ -#ifdef CCAN_TAL_NEVER_RETURN_NULL - abort(); -#else - return NULL; -#endif /* CCAN_TAL_NEVER_RETURN_NULL */ -} - -void *tal_alloc_(const tal_t *ctx, size_t size, bool clear, const char *label) -{ - struct tal_hdr *child, *parent = debug_tal(to_tal_hdr_or_null(ctx)); - - child = allocate(sizeof(struct tal_hdr) + size); - if (!child) - return null_alloc_failed(); - - if (clear) - memset(from_tal_hdr(child), 0, size); - child->prop = (void *)label; - child->bytelen = size; - - if (!add_child(parent, child)) { - freefn(child); - return null_alloc_failed(); - } - debug_tal(parent); - if (notifiers) - notify(parent, TAL_NOTIFY_ADD_CHILD, from_tal_hdr(child), 0); - return from_tal_hdr(debug_tal(child)); -} - -static bool adjust_size(size_t *size, size_t count) -{ - const size_t extra = sizeof(struct tal_hdr); - - /* Multiplication wrap */ - if (count && unlikely(*size * count / *size != count)) - goto overflow; - - *size *= count; - - /* Make sure we don't wrap adding header. */ - if (*size + extra < extra) - goto overflow; - return true; -overflow: - call_error("allocation size overflow"); - return false; -} - -void *tal_alloc_arr_(const tal_t *ctx, size_t size, size_t count, bool clear, - const char *label) -{ - if (!adjust_size(&size, count)) - return null_alloc_failed(); - - return tal_alloc_(ctx, size, clear, label); -} - -void *tal_free(const tal_t *ctx) -{ - if (ctx) { - struct tal_hdr *t; - int saved_errno = errno; - t = debug_tal(to_tal_hdr(ctx)); - if (unlikely(get_destroying_bit(t->parent_child))) - return NULL; - if (notifiers) - notify(ignore_destroying_bit(t->parent_child)->parent, - TAL_NOTIFY_DEL_CHILD, ctx, saved_errno); - list_del(&t->list); - del_tree(t, ctx, saved_errno); - errno = saved_errno; - } - return NULL; -} - -void *tal_steal_(const tal_t *new_parent, const tal_t *ctx) -{ - if (ctx) { - struct tal_hdr *newpar, *t, *old_parent; - - newpar = debug_tal(to_tal_hdr_or_null(new_parent)); - t = debug_tal(to_tal_hdr(ctx)); - - /* Unlink it from old parent. */ - list_del(&t->list); - old_parent = ignore_destroying_bit(t->parent_child)->parent; - - if (unlikely(!add_child(newpar, t))) { - /* We can always add to old parent, because it has a - * children property already. */ - if (!add_child(old_parent, t)) - abort(); - return NULL; - } - debug_tal(newpar); - if (notifiers) - notify(t, TAL_NOTIFY_STEAL, new_parent, 0); - } - return (void *)ctx; -} - -bool tal_add_destructor_(const tal_t *ctx, void (*destroy)(void *me)) -{ - tal_t *t = debug_tal(to_tal_hdr(ctx)); - return add_notifier_property(t, TAL_NOTIFY_FREE|NOTIFY_IS_DESTRUCTOR, - (void *)destroy, NULL); -} - -bool tal_add_destructor2_(const tal_t *ctx, void (*destroy)(void *me, void *arg), - void *arg) -{ - tal_t *t = debug_tal(to_tal_hdr(ctx)); - return add_notifier_property(t, TAL_NOTIFY_FREE|NOTIFY_IS_DESTRUCTOR - |NOTIFY_EXTRA_ARG, - (void *)destroy, arg); -} - -/* We could support notifiers with an extra arg, but we didn't add to API */ -bool tal_add_notifier_(const tal_t *ctx, enum tal_notify_type types, - void (*callback)(tal_t *, enum tal_notify_type, void *)) -{ - struct tal_hdr *t = debug_tal(to_tal_hdr_or_null(ctx)); - struct notifier *n; - - assert(types); - assert((types & ~(TAL_NOTIFY_FREE | TAL_NOTIFY_STEAL | TAL_NOTIFY_MOVE - | TAL_NOTIFY_RESIZE | TAL_NOTIFY_RENAME - | TAL_NOTIFY_ADD_CHILD | TAL_NOTIFY_DEL_CHILD - | TAL_NOTIFY_ADD_NOTIFIER - | TAL_NOTIFY_DEL_NOTIFIER)) == 0); - - /* Don't call notifier about itself: set types after! */ - n = add_notifier_property(t, 0, callback, NULL); - if (unlikely(!n)) - return false; - - if (notifiers) - notify(t, TAL_NOTIFY_ADD_NOTIFIER, callback, 0); - - n->types = types; - if (types != TAL_NOTIFY_FREE) - notifiers++; - return true; -} - -bool tal_del_notifier_(const tal_t *ctx, - void (*callback)(tal_t *, enum tal_notify_type, void *), - bool match_extra_arg, void *extra_arg) -{ - struct tal_hdr *t = debug_tal(to_tal_hdr_or_null(ctx)); - enum tal_notify_type types; - - types = del_notifier_property(t, callback, match_extra_arg, extra_arg); - if (types) { - notify(t, TAL_NOTIFY_DEL_NOTIFIER, callback, 0); - if (types != TAL_NOTIFY_FREE) - notifiers--; - return true; - } - return false; -} - -bool tal_del_destructor_(const tal_t *ctx, void (*destroy)(void *me)) -{ - return tal_del_notifier_(ctx, (void *)destroy, false, NULL); -} - -bool tal_del_destructor2_(const tal_t *ctx, void (*destroy)(void *me, void *arg), - void *arg) -{ - return tal_del_notifier_(ctx, (void *)destroy, true, arg); -} - -bool tal_set_name_(tal_t *ctx, const char *name, bool literal) -{ - struct tal_hdr *t = debug_tal(to_tal_hdr(ctx)); - bool was_literal; - char **nptr; - - /* Get rid of any old name */ - nptr = find_name_property(t, &was_literal); - if (nptr) { - if (was_literal) - *nptr = NULL; - else { - struct name *oldname; - - oldname = (struct name *)*nptr; - *nptr = oldname->hdr.next; - freefn(oldname); - } - } - - if (literal && name[0]) { - char **ptr; - struct prop_hdr *prop; - - /* Append literal. */ - for (ptr = &t->prop; *ptr; ptr = &prop->next) { - prop = is_prop_hdr(*ptr); - if (!prop) - break; - } - *ptr = (char *)name; - } else if (!add_name_property(t, name)) - return false; - - debug_tal(t); - if (notifiers) - notify(t, TAL_NOTIFY_RENAME, name, 0); - return true; -} - -const char *tal_name(const tal_t *t) -{ - char **nptr; - bool literal; - - nptr = find_name_property(debug_tal(to_tal_hdr(t)), &literal); - if (!nptr) - return NULL; - if (literal) - return *nptr; - - return ((struct name *)(*nptr))->name; -} - -size_t tal_bytelen(const tal_t *ptr) -{ - /* NULL -> null_parent which has bytelen 0 */ - struct tal_hdr *t = debug_tal(to_tal_hdr_or_null(ptr)); - - return t->bytelen; -} - -/* Start one past first child: make stopping natural in circ. list. */ -static struct tal_hdr *first_child(struct tal_hdr *parent) -{ - struct children *child; - - child = find_property(parent, CHILDREN); - if (!child) - return NULL; - - return list_top(&child->children, struct tal_hdr, list); -} - -tal_t *tal_first(const tal_t *root) -{ - struct tal_hdr *c, *t = debug_tal(to_tal_hdr_or_null(root)); - - c = first_child(t); - if (!c) - return NULL; - return from_tal_hdr(c); -} - -tal_t *tal_next(const tal_t *prev) -{ - struct tal_hdr *next, *prevhdr = debug_tal(to_tal_hdr(prev)); - struct list_head *head; - - head = &ignore_destroying_bit(prevhdr->parent_child)->children; - next = list_next(head, prevhdr, list); - if (!next) - return NULL; - return from_tal_hdr(next); -} - -tal_t *tal_parent(const tal_t *ctx) -{ - struct tal_hdr *t; - - if (!ctx) - return NULL; - - t = debug_tal(to_tal_hdr(ctx)); - if (ignore_destroying_bit(t->parent_child)->parent == &null_parent.hdr) - return NULL; - return from_tal_hdr(ignore_destroying_bit(t->parent_child)->parent); -} - -bool tal_resize_(tal_t **ctxp, size_t size, size_t count, bool clear) -{ - struct tal_hdr *old_t, *t; - struct children *child; - - old_t = debug_tal(to_tal_hdr(*ctxp)); - - if (!adjust_size(&size, count)) - return false; - - t = resizefn(old_t, sizeof(struct tal_hdr) + size); - if (!t) { - call_error("Reallocation failure"); - return false; - } - - /* Clear between old end and new end. */ - if (clear && size > t->bytelen) { - char *old_end = (char *)(t + 1) + t->bytelen; - memset(old_end, 0, size - t->bytelen); - } - - /* Update length. */ - t->bytelen = size; - update_bounds(t, sizeof(struct tal_hdr) + size); - - /* If it didn't move, we're done! */ - if (t != old_t) { - /* Fix up linked list pointers. */ - t->list.next->prev = t->list.prev->next = &t->list; - - /* Copy take() property. */ - if (taken(from_tal_hdr(old_t))) - take(from_tal_hdr(t)); - - /* Fix up child property's parent pointer. */ - child = find_property(t, CHILDREN); - if (child) { - assert(child->parent == old_t); - child->parent = t; - } - *ctxp = from_tal_hdr(debug_tal(t)); - if (notifiers) - notify(t, TAL_NOTIFY_MOVE, from_tal_hdr(old_t), 0); - } - if (notifiers) - notify(t, TAL_NOTIFY_RESIZE, (void *)size, 0); - - return true; -} - -bool tal_expand_(tal_t **ctxp, const void *src, size_t size, size_t count) -{ - size_t old_len; - bool ret = false; - - old_len = debug_tal(to_tal_hdr(*ctxp))->bytelen; - - /* Check for additive overflow */ - if (old_len + count * size < old_len) { - call_error("dup size overflow"); - goto out; - } - - /* Don't point src inside thing we're expanding! */ - assert(src < *ctxp - || (char *)src >= (char *)(*ctxp) + old_len); - - if (!tal_resize_(ctxp, size, old_len/size + count, false)) - goto out; - - memcpy((char *)*ctxp + old_len, src, count * size); - ret = true; - -out: - if (taken(src)) - tal_free(src); - return ret; -} - -void *tal_dup_(const tal_t *ctx, const void *p, size_t size, - size_t n, size_t extra, bool nullok, const char *label) -{ - void *ret; - size_t nbytes = size; - - if (nullok && p == NULL) { - /* take(NULL) works. */ - (void)taken(p); - return NULL; - } - - if (!adjust_size(&nbytes, n)) { - if (taken(p)) - tal_free(p); - return NULL; - } - - /* Beware addition overflow! */ - if (n + extra < n) { - call_error("dup size overflow"); - if (taken(p)) - tal_free(p); - return NULL; - } - - if (taken(p)) { - if (unlikely(!p)) - return NULL; - if (unlikely(!tal_resize_((void **)&p, size, n + extra, false))) - return tal_free(p); - if (unlikely(!tal_steal(ctx, p))) - return tal_free(p); - return (void *)p; - } - - ret = tal_alloc_arr_(ctx, size, n + extra, false, label); - if (ret && p) - memcpy(ret, p, nbytes); - return ret; -} - -void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src TAKES, const char *label) -{ - return tal_dup_(ctx, src, 1, tal_bytelen(src), 0, true, label); -} - -void tal_set_backend(void *(*alloc_fn)(size_t size), - void *(*resize_fn)(void *, size_t size), - void (*free_fn)(void *), - void (*error_fn)(const char *msg)) -{ - if (alloc_fn) - allocfn = alloc_fn; - if (resize_fn) - resizefn = resize_fn; - if (free_fn) - freefn = free_fn; - if (error_fn) - errorfn = error_fn; -} - -#ifdef CCAN_TAL_DEBUG -static void dump_node(unsigned int indent, const struct tal_hdr *t) -{ - unsigned int i; - const struct prop_hdr *prop; - const char *ptr; - - for (i = 0; i < indent; i++) - fprintf(stderr, " "); - fprintf(stderr, "%p len=%zu", t, t->bytelen); - for (ptr = t->prop; ptr; ptr = prop->next) { - struct children *c; - struct name *n; - struct notifier *no; - prop = is_prop_hdr(ptr); - if (!prop) { - fprintf(stderr, " \"%s\"", ptr); - break; - } - switch (prop->type) { - case CHILDREN: - c = (struct children *)prop; - fprintf(stderr, " CHILDREN(%p):parent=%p,children={%p,%p}", - prop, c->parent, - c->children.n.prev, c->children.n.next); - break; - case NAME: - n = (struct name *)prop; - fprintf(stderr, " NAME(%p):%s", prop, n->name); - break; - case NOTIFIER: - no = (struct notifier *)prop; - fprintf(stderr, " NOTIFIER(%p):fn=%p", prop, no->u.notifyfn); - break; - default: - fprintf(stderr, " **UNKNOWN(%p):%i**", prop, prop->type); - } - } - fprintf(stderr, "\n"); -} - -static void tal_dump_(unsigned int level, const struct tal_hdr *t) -{ - struct children *children; - - dump_node(level, t); - - children = find_property((struct tal_hdr *)t, CHILDREN); - if (children) { - struct tal_hdr *i; - - list_for_each(&children->children, i, list) - tal_dump_(level + 1, i); - } -} - -void tal_dump(void) -{ - tal_dump_(0, &null_parent.hdr); -} -#endif /* CCAN_TAL_DEBUG */ - -#ifndef NDEBUG -static bool check_err(struct tal_hdr *t, const char *errorstr, - const char *errmsg) -{ - if (errorstr) { - /* Try not to malloc: it may be corrupted. */ - char msg[strlen(errorstr) + 20 + strlen(errmsg) + 1]; - sprintf(msg, "%s:%p %s", errorstr, from_tal_hdr(t), errmsg); - call_error(msg); - } - return false; -} - -static bool check_node(struct children *parent_child, - struct tal_hdr *t, const char *errorstr) -{ - struct prop_hdr *prop; - char *p; - struct name *name = NULL; - struct children *children = NULL; - - if (!in_bounds(t)) - return check_err(t, errorstr, "invalid pointer"); - - if (ignore_destroying_bit(t->parent_child) != parent_child) - return check_err(t, errorstr, "incorrect parent"); - - for (p = t->prop; p; p = prop->next) { - prop = is_prop_hdr(p); - if (!prop) { - if (name) - return check_err(t, errorstr, - "has extra literal"); - break; - } - if (!in_bounds(prop)) - return check_err(t, errorstr, - "has bad property pointer"); - - switch (prop->type) { - case CHILDREN: - if (children) - return check_err(t, errorstr, - "has two child nodes"); - children = (struct children *)prop; - break; - case NOTIFIER: - break; - case NAME: - if (name) - return check_err(t, errorstr, - "has two names"); - name = (struct name *)prop; - break; - default: - return check_err(t, errorstr, "has unknown property"); - } - } - if (children) { - struct tal_hdr *i; - - if (!list_check(&children->children, errorstr)) - return false; - list_for_each(&children->children, i, list) { - if (!check_node(children, i, errorstr)) - return false; - } - } - return true; -} - -bool tal_check(const tal_t *ctx, const char *errorstr) -{ - struct tal_hdr *t = to_tal_hdr_or_null(ctx); - - return check_node(ignore_destroying_bit(t->parent_child), t, errorstr); -} -#else /* NDEBUG */ -bool tal_check(const tal_t *ctx, const char *errorstr) -{ - return true; -} -#endif diff --git a/nostrdb/ccan/ccan/tal/tal.h b/nostrdb/ccan/ccan/tal/tal.h deleted file mode 100644 index 347a5e8c80..0000000000 --- a/nostrdb/ccan/ccan/tal/tal.h +++ /dev/null @@ -1,563 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#ifndef CCAN_TAL_H -#define CCAN_TAL_H -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#include - -/* Define this for better optimization if you never override errfn - * to something tat returns */ -#ifdef CCAN_TAL_NEVER_RETURN_NULL -#define TAL_RETURN_PTR RETURNS_NONNULL -#else -#define TAL_RETURN_PTR -#endif /* CCAN_TAL_NEVER_RETURN_NULL */ - -/** - * tal_t - convenient alias for void to mark tal pointers. - * - * Since any pointer can be a tal-allocated pointer, it's often - * useful to use this typedef to mark them explicitly. - */ -typedef void tal_t; - -/** - * tal - basic allocator function - * @ctx: NULL, or tal allocated object to be parent. - * @type: the type to allocate. - * - * Allocates a specific type, with a given parent context. The name - * of the object is a string of the type, but if CCAN_TAL_DEBUG is - * defined it also contains the file and line which allocated it. - * - * tal_count() of the return will be 1. - * - * Example: - * int *p = tal(NULL, int); - * *p = 1; - */ -#define tal(ctx, type) \ - tal_label(ctx, type, TAL_LABEL(type, "")) - -/** - * talz - zeroing allocator function - * @ctx: NULL, or tal allocated object to be parent. - * @type: the type to allocate. - * - * Equivalent to tal() followed by memset() to zero. - * - * Example: - * p = talz(NULL, int); - * assert(*p == 0); - */ -#define talz(ctx, type) \ - talz_label(ctx, type, TAL_LABEL(type, "")) - -/** - * tal_free - free a tal-allocated pointer. - * @p: NULL, or tal allocated object to free. - * - * This calls the destructors for p (if any), then does the same for all its - * children (recursively) before finally freeing the memory. It returns - * NULL, for convenience. - * - * Note: errno is preserved by this call, and also saved and restored - * for any destructors or notifiers. - * - * Example: - * p = tal_free(p); - */ -void *tal_free(const tal_t *p); - -/** - * tal_arr - allocate an array of objects. - * @ctx: NULL, or tal allocated object to be parent. - * @type: the type to allocate. - * @count: the number to allocate. - * - * tal_count() of the returned pointer will be @count. - * - * Example: - * p = tal_arr(NULL, int, 2); - * p[0] = 0; - * p[1] = 1; - */ -#define tal_arr(ctx, type, count) \ - tal_arr_label(ctx, type, count, TAL_LABEL(type, "[]")) - -/** - * tal_arrz - allocate an array of zeroed objects. - * @ctx: NULL, or tal allocated object to be parent. - * @type: the type to allocate. - * @count: the number to allocate. - * - * Equivalent to tal_arr() followed by memset() to zero. - * - * Example: - * p = tal_arrz(NULL, int, 2); - * assert(p[0] == 0 && p[1] == 0); - */ -#define tal_arrz(ctx, type, count) \ - tal_arrz_label(ctx, type, count, TAL_LABEL(type, "[]")) - -/** - * tal_resize - enlarge or reduce a tal object. - * @p: A pointer to the tal allocated array to resize. - * @count: the number to allocate. - * - * This returns true on success (and may move *@p), or false on failure. - * On success, tal_count() of *@p will be @count. - * - * Note: if *p is take(), it will still be take() upon return, even if it - * has been moved. - * - * Example: - * tal_resize(&p, 100); - */ -#define tal_resize(p, count) \ - tal_resize_((void **)(p), sizeof**(p), (count), false) - -/** - * tal_resizez - enlarge or reduce a tal object; zero out extra. - * @p: A pointer to the tal allocated array to resize. - * @count: the number to allocate. - * - * This returns true on success (and may move *@p), or false on failure. - * - * Example: - * tal_resizez(&p, 200); - */ -#define tal_resizez(p, count) \ - tal_resize_((void **)(p), sizeof**(p), (count), true) - -/** - * tal_steal - change the parent of a tal-allocated pointer. - * @ctx: The new parent. - * @ptr: The tal allocated object to move, or NULL. - * - * This may need to perform an allocation, in which case it may fail; thus - * it can return NULL, otherwise returns @ptr. If @ptr is NULL, this function does - * nothing. - */ -#if HAVE_STATEMENT_EXPR -/* Weird macro avoids gcc's 'warning: value computed is not used'. */ -#define tal_steal(ctx, ptr) \ - ({ (tal_typeof(ptr) tal_steal_((ctx),(ptr))); }) -#else -#define tal_steal(ctx, ptr) \ - (tal_typeof(ptr) tal_steal_((ctx),(ptr))) -#endif - -/** - * tal_add_destructor - add a callback function when this context is destroyed. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * - * This is a more convenient form of tal_add_notifier(@ptr, - * TAL_NOTIFY_FREE, ...), in that the function prototype takes only @ptr. - * - * Note that this can only fail if your allocfn fails and your errorfn returns. - */ -#define tal_add_destructor(ptr, function) \ - tal_add_destructor_((ptr), typesafe_cb(void, void *, (function), (ptr))) - -/** - * tal_del_destructor - remove a destructor callback function. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * - * If @function has not been successfully added as a destructor, this returns - * false. Note that if we're inside the destructor call itself, this will - * return false. - */ -#define tal_del_destructor(ptr, function) \ - tal_del_destructor_((ptr), typesafe_cb(void, void *, (function), (ptr))) - -/** - * tal_add_destructor2 - add a 2-arg callback function when context is destroyed. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * @arg: the extra argument to the function. - * - * Sometimes an extra argument is required for a destructor; this - * saves the extra argument internally to avoid the caller having to - * do an extra allocation. - * - * Note that this can only fail if your allocfn fails and your errorfn returns. - */ -#define tal_add_destructor2(ptr, function, arg) \ - tal_add_destructor2_((ptr), \ - typesafe_cb_cast(void (*)(tal_t *, void *), \ - void (*)(__typeof__(ptr), \ - __typeof__(arg)), \ - (function)), \ - (arg)) - -/** - * tal_del_destructor - remove a destructor callback function. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * - * If @function has not been successfully added as a destructor, this returns - * false. Note that if we're inside the destructor call itself, this will - * return false. - */ -#define tal_del_destructor(ptr, function) \ - tal_del_destructor_((ptr), typesafe_cb(void, void *, (function), (ptr))) - -/** - * tal_del_destructor2 - remove 2-arg callback function. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * @arg: the extra argument to the function. - * - * If @function has not been successfully added as a destructor with - * @arg, this returns false. - */ -#define tal_del_destructor2(ptr, function, arg) \ - tal_del_destructor2_((ptr), \ - typesafe_cb_cast(void (*)(tal_t *, void *), \ - void (*)(__typeof__(ptr), \ - __typeof__(arg)), \ - (function)), \ - (arg)) -enum tal_notify_type { - TAL_NOTIFY_FREE = 1, - TAL_NOTIFY_STEAL = 2, - TAL_NOTIFY_MOVE = 4, - TAL_NOTIFY_RESIZE = 8, - TAL_NOTIFY_RENAME = 16, - TAL_NOTIFY_ADD_CHILD = 32, - TAL_NOTIFY_DEL_CHILD = 64, - TAL_NOTIFY_ADD_NOTIFIER = 128, - TAL_NOTIFY_DEL_NOTIFIER = 256 -}; - -/** - * tal_add_notifier - add a callback function when this context changes. - * @ptr: The tal allocated object, or NULL. - * @types: Bitwise OR of the types the callback is interested in. - * @callback: the function to call. - * - * Note that this can only fail if your allocfn fails and your errorfn - * returns. Also note that notifiers are not reliable in the case - * where an allocation fails, as they may be called before any - * allocation is actually done. - * - * TAL_NOTIFY_FREE is called when @ptr is freed, either directly or - * because an ancestor is freed: @info is the argument to tal_free(). - * It is exactly equivalent to a destructor, with more information. - * errno is set to the value it was at the call of tal_free(). - * - * TAL_NOTIFY_STEAL is called when @ptr's parent changes: @info is the - * new parent. - * - * TAL_NOTIFY_MOVE is called when @ptr is realloced (via tal_resize) - * and moved. In this case, @ptr arg here is the new memory, and - * @info is the old pointer. - * - * TAL_NOTIFY_RESIZE is called when @ptr is realloced via tal_resize: - * @info is the new size, in bytes. If the pointer has moved, - * TAL_NOTIFY_MOVE callbacks are called first. - * - * TAL_NOTIFY_ADD_CHILD/TAL_NOTIFY_DEL_CHILD are called when @ptr is - * the context for a tal() allocating call, or a direct child is - * tal_free()d: @info is the child. Note that TAL_NOTIFY_DEL_CHILD is - * not called when this context is tal_free()d: TAL_NOTIFY_FREE is - * considered sufficient for that case. - * - * TAL_NOTIFY_ADD_NOTIFIER/TAL_NOTIFIER_DEL_NOTIFIER are called when a - * notifier is added or removed (not for this notifier): @info is the - * callback. This is also called for tal_add_destructor and - * tal_del_destructor. - */ -#define tal_add_notifier(ptr, types, callback) \ - tal_add_notifier_((ptr), (types), \ - typesafe_cb_postargs(void, tal_t *, (callback), \ - (ptr), \ - enum tal_notify_type, void *)) - -/** - * tal_del_notifier - remove a notifier callback function. - * @ptr: The tal allocated object. - * @callback: the function to call. - */ -#define tal_del_notifier(ptr, callback) \ - tal_del_notifier_((ptr), \ - typesafe_cb_postargs(void, void *, (callback), \ - (ptr), \ - enum tal_notify_type, void *), \ - false, NULL) - -/** - * tal_set_name - attach a name to a tal pointer. - * @ptr: The tal allocated object. - * @name: The name to use. - * - * The name is copied, unless we're certain it's a string literal. - */ -#define tal_set_name(ptr, name) \ - tal_set_name_((ptr), (name), TAL_IS_LITERAL(name)) - -/** - * tal_name - get the name for a tal pointer. - * @ptr: The tal allocated object. - * - * Returns NULL if no name has been set. - */ -const char *tal_name(const tal_t *ptr); - -/** - * tal_count - get the count of objects in a tal object. - * @ptr: The tal allocated object (or NULL) - * - * Returns 0 if @ptr is NULL. Note that if the allocation was done as a - * different type to @ptr, the result may not match the @count argument - * (or implied 1) of that allocation! - */ -#define tal_count(p) (tal_bytelen(p) / sizeof(*p)) - -/** - * tal_bytelen - get the count of bytes in a tal object. - * @ptr: The tal allocated object (or NULL) - * - * Returns 0 if @ptr is NULL. - */ -size_t tal_bytelen(const tal_t *ptr); - -/** - * tal_first - get the first immediate tal object child. - * @root: The tal allocated object to start with, or NULL. - * - * Returns NULL if there are no children. - */ -tal_t *tal_first(const tal_t *root); - -/** - * tal_next - get the next immediate tal object child. - * @prev: The return value from tal_first or tal_next. - * - * Returns NULL if there are no more immediate children. This should be safe to - * call on an altering tree unless @prev is no longer valid. - */ -tal_t *tal_next(const tal_t *prev); - -/** - * tal_parent - get the parent of a tal object. - * @ctx: The tal allocated object. - * - * Returns the parent, which may be NULL. Returns NULL if @ctx is NULL. - */ -tal_t *tal_parent(const tal_t *ctx); - -/** - * tal_dup - duplicate an object. - * @ctx: The tal allocated object to be parent of the result (may be NULL). - * @type: the type (should match type of @p!) - * @p: the object to copy (or reparented if take()). Must not be NULL. - */ -#define tal_dup(ctx, type, p) \ - tal_dup_label(ctx, type, p, TAL_LABEL(type, ""), false) - -/** - * tal_dup_or_null - duplicate an object, or just pass NULL. - * @ctx: The tal allocated object to be parent of the result (may be NULL). - * @type: the type (should match type of @p!) - * @p: the object to copy (or reparented if take()) - * - * if @p is NULL, just return NULL, otherwise to tal_dup(). - */ -#define tal_dup_or_null(ctx, type, p) \ - tal_dup_label(ctx, type, p, TAL_LABEL(type, ""), true) - -/** - * tal_dup_arr - duplicate an array. - * @ctx: The tal allocated object to be parent of the result (may be NULL). - * @type: the type (should match type of @p!) - * @p: the array to copy (or resized & reparented if take()) - * @n: the number of sizeof(type) entries to copy. - * @extra: the number of extra sizeof(type) entries to allocate. - */ -#define tal_dup_arr(ctx, type, p, n, extra) \ - tal_dup_arr_label(ctx, type, p, n, extra, TAL_LABEL(type, "[]")) - - -/** - * tal_dup_arr - duplicate a tal array. - * @ctx: The tal allocated object to be parent of the result (may be NULL). - * @type: the type (should match type of @p!) - * @p: the tal array to copy (or resized & reparented if take()) - * - * The comon case of duplicating an entire tal array. - */ -#define tal_dup_talarr(ctx, type, p) \ - ((type *)tal_dup_talarr_((ctx), tal_typechk_(p, type *), \ - TAL_LABEL(type, "[]"))) -/* Lower-level interfaces, where you want to supply your own label string. */ -#define tal_label(ctx, type, label) \ - ((type *)tal_alloc_((ctx), sizeof(type), false, label)) -#define talz_label(ctx, type, label) \ - ((type *)tal_alloc_((ctx), sizeof(type), true, label)) -#define tal_arr_label(ctx, type, count, label) \ - ((type *)tal_alloc_arr_((ctx), sizeof(type), (count), false, label)) -#define tal_arrz_label(ctx, type, count, label) \ - ((type *)tal_alloc_arr_((ctx), sizeof(type), (count), true, label)) -#define tal_dup_label(ctx, type, p, label, nullok) \ - ((type *)tal_dup_((ctx), tal_typechk_(p, type *), \ - sizeof(type), 1, 0, nullok, \ - label)) -#define tal_dup_arr_label(ctx, type, p, n, extra, label) \ - ((type *)tal_dup_((ctx), tal_typechk_(p, type *), \ - sizeof(type), (n), (extra), false, \ - label)) - -/** - * tal_set_backend - set the allocation or error functions to use - * @alloc_fn: allocator or NULL (default is malloc) - * @resize_fn: re-allocator or NULL (default is realloc) - * @free_fn: free function or NULL (default is free) - * @error_fn: called on errors or NULL (default is abort) - * - * The defaults are set up so tal functions never return NULL, but you - * can override error_fn to change that. error_fn can return (only if - * you haven't defined CCAN_TAL_NEVER_RETURN_NULL!), and is - * called if alloc_fn or resize_fn fail. - * - * If any parameter is NULL, that function is unchanged. - */ -void tal_set_backend(void *(*alloc_fn)(size_t size), - void *(*resize_fn)(void *, size_t size), - void (*free_fn)(void *), - void (*error_fn)(const char *msg)); - -/** - * tal_expand - expand a tal array with contents. - * @a1p: a pointer to the tal array to expand. - * @a2: the second array (can be take()). - * @num2: the number of elements in the second array. - * - * Note that *@a1 and @a2 should be the same type. tal_count(@a1) will - * be increased by @num2. - * - * Example: - * int *arr1 = tal_arrz(NULL, int, 2); - * int arr2[2] = { 1, 3 }; - * - * tal_expand(&arr1, arr2, 2); - * assert(tal_count(arr1) == 4); - * assert(arr1[2] == 1); - * assert(arr1[3] == 3); - */ -#define tal_expand(a1p, a2, num2) \ - tal_expand_((void **)(a1p), (a2), sizeof**(a1p), \ - (num2) + 0*sizeof(*(a1p) == (a2))) - -/** - * tal_cleanup - remove pointers from NULL node - * - * Internally, tal keeps a list of nodes allocated from @ctx NULL; this - * prevents valgrind from noticing memory leaks. This re-initializes - * that list to empty. - * - * It also calls take_cleanup() for you. - */ -void tal_cleanup(void); - - -/** - * tal_check - sanity check a tal context and its children. - * @ctx: a tal context, or NULL. - * @errorstr: a string to prepend calls to error_fn, or NULL. - * - * This sanity-checks a tal tree (unless NDEBUG is defined, in which case - * it simply returns true). If errorstr is not null, error_fn is called - * when a problem is found, otherwise it is not. - * - * See also: - * tal_set_backend() - */ -bool tal_check(const tal_t *ctx, const char *errorstr); - -#ifdef CCAN_TAL_DEBUG -/** - * tal_dump - dump entire tal tree to stderr. - * - * This is a helper for debugging tal itself, which dumps all the tal internal - * state. - */ -void tal_dump(void); -#endif - -/* Internal support functions */ -#ifndef TAL_LABEL -#ifdef CCAN_TAL_NO_LABELS -#define TAL_LABEL(type, arr) NULL -#else -#ifdef CCAN_TAL_DEBUG -#define TAL_LABEL(type, arr) \ - __FILE__ ":" stringify(__LINE__) ":" stringify(type) arr -#else -#define TAL_LABEL(type, arr) stringify(type) arr -#endif /* CCAN_TAL_DEBUG */ -#endif -#endif - -#if HAVE_BUILTIN_CONSTANT_P -#define TAL_IS_LITERAL(str) __builtin_constant_p(str) -#else -#define TAL_IS_LITERAL(str) (sizeof(&*(str)) != sizeof(char *)) -#endif - -bool tal_set_name_(tal_t *ctx, const char *name, bool literal); - -#if HAVE_TYPEOF -#define tal_typeof(ptr) (__typeof__(ptr)) -#if HAVE_STATEMENT_EXPR -/* Careful: ptr can be const foo *, ptype is foo *. Also, ptr could - * be an array, eg "hello". */ -#define tal_typechk_(ptr, ptype) ({ __typeof__((ptr)+0) _p = (ptype)(ptr); _p; }) -#else -#define tal_typechk_(ptr, ptype) (ptr) -#endif -#else /* !HAVE_TYPEOF */ -#define tal_typeof(ptr) -#define tal_typechk_(ptr, ptype) (ptr) -#endif - -void *tal_alloc_(const tal_t *ctx, size_t bytes, bool clear, const char *label) - TAL_RETURN_PTR; -void *tal_alloc_arr_(const tal_t *ctx, size_t bytes, size_t count, bool clear, - const char *label) - TAL_RETURN_PTR; - -void *tal_dup_(const tal_t *ctx, const void *p TAKES, size_t size, - size_t n, size_t extra, bool nullok, const char *label); -void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src TAKES, - const char *label); - -tal_t *tal_steal_(const tal_t *new_parent, const tal_t *t); - -bool tal_resize_(tal_t **ctxp, size_t size, size_t count, bool clear); -bool tal_expand_(tal_t **ctxp, const void *src TAKES, size_t size, size_t count); - -bool tal_add_destructor_(const tal_t *ctx, void (*destroy)(void *me)); -bool tal_add_destructor2_(const tal_t *ctx, void (*destroy)(void *me, void *arg), - void *arg); -bool tal_del_destructor_(const tal_t *ctx, void (*destroy)(void *me)); -bool tal_del_destructor2_(const tal_t *ctx, void (*destroy)(void *me, void *arg), - void *arg); - -bool tal_add_notifier_(const tal_t *ctx, enum tal_notify_type types, - void (*notify)(tal_t *ctx, enum tal_notify_type, - void *info)); -bool tal_del_notifier_(const tal_t *ctx, - void (*notify)(tal_t *ctx, enum tal_notify_type, - void *info), - bool match_extra_arg, void *arg); -#endif /* CCAN_TAL_H */ diff --git a/nostrdb/ccan/ccan/typesafe_cb/LICENSE b/nostrdb/ccan/ccan/typesafe_cb/LICENSE deleted file mode 120000 index b7951dabdc..0000000000 --- a/nostrdb/ccan/ccan/typesafe_cb/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/nostrdb/ccan/ccan/typesafe_cb/_info b/nostrdb/ccan/ccan/typesafe_cb/_info deleted file mode 100644 index b4f379dd48..0000000000 --- a/nostrdb/ccan/ccan/typesafe_cb/_info +++ /dev/null @@ -1,151 +0,0 @@ -#include "config.h" -#include -#include - -/** - * typesafe_cb - macros for safe callbacks. - * - * The basis of the typesafe_cb header is typesafe_cb_cast(): a - * conditional cast macro. If an expression exactly matches a given - * type, it is cast to the target type, otherwise it is left alone. - * - * This allows us to create functions which take a small number of - * specific types, rather than being forced to use a void *. In - * particular, it is useful for creating typesafe callbacks as the - * helpers typesafe_cb(), typesafe_cb_preargs() and - * typesafe_cb_postargs() demonstrate. - * - * The standard way of passing arguments to callback functions in C is - * to use a void pointer, which the callback then casts back to the - * expected type. This unfortunately subverts the type checking the - * compiler would perform if it were a direct call. Here's an example: - * - * static void my_callback(void *_obj) - * { - * struct obj *obj = _obj; - * ... - * } - * ... - * register_callback(my_callback, &my_obj); - * - * If we wanted to use the natural type for my_callback (ie. "void - * my_callback(struct obj *obj)"), we could make register_callback() - * take a void * as its first argument, but this would subvert all - * type checking. We really want register_callback() to accept only - * the exactly correct function type to match the argument, or a - * function which takes a void *. - * - * This is where typesafe_cb() comes in: it uses typesafe_cb_cast() to - * cast the callback function if it matches the argument type: - * - * void _register_callback(void (*cb)(void *arg), void *arg); - * #define register_callback(cb, arg) \ - * _register_callback(typesafe_cb(void, void *, (cb), (arg)), \ - * (arg)) - * - * On compilers which don't support the extensions required - * typesafe_cb_cast() and friend become an unconditional cast, so your - * code will compile but you won't get type checking. - * - * Example: - * #include - * #include - * #include - * - * // Generic callback infrastructure. - * struct callback { - * struct callback *next; - * int value; - * int (*callback)(int value, void *arg); - * void *arg; - * }; - * static struct callback *callbacks; - * - * static void _register_callback(int value, int (*cb)(int, void *), - * void *arg) - * { - * struct callback *new = malloc(sizeof(*new)); - * new->next = callbacks; - * new->value = value; - * new->callback = cb; - * new->arg = arg; - * callbacks = new; - * } - * #define register_callback(value, cb, arg) \ - * _register_callback(value, \ - * typesafe_cb_preargs(int, void *, \ - * (cb), (arg), int),\ - * (arg)) - * - * static struct callback *find_callback(int value) - * { - * struct callback *i; - * - * for (i = callbacks; i; i = i->next) - * if (i->value == value) - * return i; - * return NULL; - * } - * - * // Define several silly callbacks. Note they don't use void *! - * #define DEF_CALLBACK(name, op) \ - * static int name(int val, int *arg) \ - * { \ - * printf("%s", #op); \ - * return val op *arg; \ - * } - * DEF_CALLBACK(multiply, *); - * DEF_CALLBACK(add, +); - * DEF_CALLBACK(divide, /); - * DEF_CALLBACK(sub, -); - * DEF_CALLBACK(or, |); - * DEF_CALLBACK(and, &); - * DEF_CALLBACK(xor, ^); - * DEF_CALLBACK(assign, =); - * - * // Silly game to find the longest chain of values. - * int main(int argc, char *argv[]) - * { - * int i, run = 1, num = argc > 1 ? atoi(argv[1]) : 0; - * - * for (i = 1; i < 1024;) { - * // Since run is an int, compiler checks "add" does too. - * register_callback(i++, add, &run); - * register_callback(i++, divide, &run); - * register_callback(i++, sub, &run); - * register_callback(i++, multiply, &run); - * register_callback(i++, or, &run); - * register_callback(i++, and, &run); - * register_callback(i++, xor, &run); - * register_callback(i++, assign, &run); - * } - * - * printf("%i ", num); - * while (run < 56) { - * struct callback *cb = find_callback(num % i); - * if (!cb) { - * printf("-> STOP\n"); - * return 1; - * } - * num = cb->callback(num, cb->arg); - * printf("->%i ", num); - * run++; - * } - * printf("-> Winner!\n"); - * return 0; - * } - * - * License: CC0 (Public domain) - * Author: Rusty Russell - */ -int main(int argc, char *argv[]) -{ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/typesafe_cb/typesafe_cb.h b/nostrdb/ccan/ccan/typesafe_cb/typesafe_cb.h deleted file mode 100644 index 126d325c78..0000000000 --- a/nostrdb/ccan/ccan/typesafe_cb/typesafe_cb.h +++ /dev/null @@ -1,134 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_TYPESAFE_CB_H -#define CCAN_TYPESAFE_CB_H -#include "config.h" - -#if HAVE_TYPEOF && HAVE_BUILTIN_CHOOSE_EXPR && HAVE_BUILTIN_TYPES_COMPATIBLE_P -/** - * typesafe_cb_cast - only cast an expression if it matches a given type - * @desttype: the type to cast to - * @oktype: the type we allow - * @expr: the expression to cast - * - * This macro is used to create functions which allow multiple types. - * The result of this macro is used somewhere that a @desttype type is - * expected: if @expr is exactly of type @oktype, then it will be - * cast to @desttype type, otherwise left alone. - * - * This macro can be used in static initializers. - * - * This is merely useful for warnings: if the compiler does not - * support the primitives required for typesafe_cb_cast(), it becomes an - * unconditional cast, and the @oktype argument is not used. In - * particular, this means that @oktype can be a type which uses the - * "typeof": it will not be evaluated if typeof is not supported. - * - * Example: - * // We can take either an unsigned long or a void *. - * void _set_some_value(void *val); - * #define set_some_value(e) \ - * _set_some_value(typesafe_cb_cast(void *, unsigned long, (e))) - */ -#define typesafe_cb_cast(desttype, oktype, expr) \ - __builtin_choose_expr( \ - __builtin_types_compatible_p(__typeof__(0?(expr):(expr)), \ - oktype), \ - (desttype)(expr), (expr)) -#else -#define typesafe_cb_cast(desttype, oktype, expr) ((desttype)(expr)) -#endif - -/** - * typesafe_cb_cast3 - only cast an expression if it matches given types - * @desttype: the type to cast to - * @ok1: the first type we allow - * @ok2: the second type we allow - * @ok3: the third type we allow - * @expr: the expression to cast - * - * This is a convenient wrapper for multiple typesafe_cb_cast() calls. - * You can chain them inside each other (ie. use typesafe_cb_cast() - * for expr) if you need more than 3 arguments. - * - * Example: - * // We can take either a long, unsigned long, void * or a const void *. - * void _set_some_value(void *val); - * #define set_some_value(expr) \ - * _set_some_value(typesafe_cb_cast3(void *,, \ - * long, unsigned long, const void *,\ - * (expr))) - */ -#define typesafe_cb_cast3(desttype, ok1, ok2, ok3, expr) \ - typesafe_cb_cast(desttype, ok1, \ - typesafe_cb_cast(desttype, ok2, \ - typesafe_cb_cast(desttype, ok3, \ - (expr)))) - -/** - * typesafe_cb - cast a callback function if it matches the arg - * @rtype: the return type of the callback function - * @atype: the (pointer) type which the callback function expects. - * @fn: the callback function to cast - * @arg: the (pointer) argument to hand to the callback function. - * - * If a callback function takes a single argument, this macro does - * appropriate casts to a function which takes a single atype argument if the - * callback provided matches the @arg. - * - * It is assumed that @arg is of pointer type: usually @arg is passed - * or assigned to a void * elsewhere anyway. - * - * Example: - * void _register_callback(void (*fn)(void *arg), void *arg); - * #define register_callback(fn, arg) \ - * _register_callback(typesafe_cb(void, (fn), void*, (arg)), (arg)) - */ -#define typesafe_cb(rtype, atype, fn, arg) \ - typesafe_cb_cast(rtype (*)(atype), \ - rtype (*)(__typeof__(arg)), \ - (fn)) - -/** - * typesafe_cb_preargs - cast a callback function if it matches the arg - * @rtype: the return type of the callback function - * @atype: the (pointer) type which the callback function expects. - * @fn: the callback function to cast - * @arg: the (pointer) argument to hand to the callback function. - * - * This is a version of typesafe_cb() for callbacks that take other arguments - * before the @arg. - * - * Example: - * void _register_callback(void (*fn)(int, void *arg), void *arg); - * #define register_callback(fn, arg) \ - * _register_callback(typesafe_cb_preargs(void, void *, \ - * (fn), (arg), int), \ - * (arg)) - */ -#define typesafe_cb_preargs(rtype, atype, fn, arg, ...) \ - typesafe_cb_cast(rtype (*)(__VA_ARGS__, atype), \ - rtype (*)(__VA_ARGS__, __typeof__(arg)), \ - (fn)) - -/** - * typesafe_cb_postargs - cast a callback function if it matches the arg - * @rtype: the return type of the callback function - * @atype: the (pointer) type which the callback function expects. - * @fn: the callback function to cast - * @arg: the (pointer) argument to hand to the callback function. - * - * This is a version of typesafe_cb() for callbacks that take other arguments - * after the @arg. - * - * Example: - * void _register_callback(void (*fn)(void *arg, int), void *arg); - * #define register_callback(fn, arg) \ - * _register_callback(typesafe_cb_postargs(void, (fn), void *, \ - * (arg), int), \ - * (arg)) - */ -#define typesafe_cb_postargs(rtype, atype, fn, arg, ...) \ - typesafe_cb_cast(rtype (*)(atype, __VA_ARGS__), \ - rtype (*)(__typeof__(arg), __VA_ARGS__), \ - (fn)) -#endif /* CCAN_CAST_IF_TYPE_H */ diff --git a/nostrdb/ccan/ccan/utf8/LICENSE b/nostrdb/ccan/ccan/utf8/LICENSE deleted file mode 120000 index 2354d12945..0000000000 --- a/nostrdb/ccan/ccan/utf8/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/BSD-MIT \ No newline at end of file diff --git a/nostrdb/ccan/ccan/utf8/_info b/nostrdb/ccan/ccan/utf8/_info deleted file mode 100644 index 4fe4437bd4..0000000000 --- a/nostrdb/ccan/ccan/utf8/_info +++ /dev/null @@ -1,48 +0,0 @@ -#include "config.h" -#include -#include - -/** - * utf8 - Simple routines to encode/decode valid UTF-8. - * - * This code contains routines to encode and decode UTF-8 characters. - * Table and test code stolen entirely from: - * Copyright (c) 2017 Christian Hansen - * - * - * Example: - * int main(int argc, char *argv[]) - * { - * size_t i; - * struct utf8_state utf8_state = UTF8_STATE_INIT; - * bool decoded = true; - * - * for (i = 0; i < strlen(argv[1]); i++) { - * decoded = utf8_decode(&utf8_state, argv[1][i]); - * if (decoded) { - * if (errno != 0) - * err(1, "Invalid UTF8 char %zu-%zu", - * i - utf8_state.used_len, i); - * printf("Character %u\n", utf8_state.c); - * } - * } - * - * if (!decoded) - * errx(1, "Incomplete UTF8"); - * return 0; - * } - * - * License: BSD-MIT - */ -int main(int argc, char *argv[]) -{ - /* Expect exactly one argument */ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - return 0; - } - - return 1; -} diff --git a/nostrdb/ccan/ccan/utf8/utf8.c b/nostrdb/ccan/ccan/utf8/utf8.c deleted file mode 100644 index cb18041a5d..0000000000 --- a/nostrdb/ccan/ccan/utf8/utf8.c +++ /dev/null @@ -1,178 +0,0 @@ -/* MIT (BSD) license - see LICENSE file for details */ -#include -#include -#include - -/* I loved this table, so I stole it: */ -/* - * Copyright (c) 2017 Christian Hansen - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -/* - * UTF-8 Encoding Form - * - * U+0000..U+007F 0xxxxxxx <= 7 bits - * U+0080..U+07FF 110xxxxx 10xxxxxx <= 11 bits - * U+0800..U+FFFF 1110xxxx 10xxxxxx 10xxxxxx <= 16 bits - * U+10000..U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx <= 21 bits - * - * - * U+0000..U+007F 00..7F - * N C0..C1 80..BF 1100000x 10xxxxxx - * U+0080..U+07FF C2..DF 80..BF - * N E0 80..9F 80..BF 11100000 100xxxxx - * U+0800..U+0FFF E0 A0..BF 80..BF - * U+1000..U+CFFF E1..EC 80..BF 80..BF - * U+D000..U+D7FF ED 80..9F 80..BF - * S ED A0..BF 80..BF 11101101 101xxxxx - * U+E000..U+FFFF EE..EF 80..BF 80..BF - * N F0 80..8F 80..BF 80..BF 11110000 1000xxxx - * U+10000..U+3FFFF F0 90..BF 80..BF 80..BF - * U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - * U+100000..U+10FFFF F4 80..8F 80..BF 80..BF 11110100 1000xxxx - * - * Legend: - * N = Non-shortest form - * S = Surrogates - */ -bool utf8_decode(struct utf8_state *utf8_state, char c) -{ - if (utf8_state->used_len == utf8_state->total_len) { - utf8_state->used_len = 1; - /* First character in sequence. */ - if (((unsigned char)c & 0x80) == 0) { - /* ASCII, easy. */ - if (c == 0) - goto bad_encoding; - utf8_state->total_len = 1; - utf8_state->c = c; - goto finished_decoding; - } else if (((unsigned char)c & 0xE0) == 0xC0) { - utf8_state->total_len = 2; - utf8_state->c = ((unsigned char)c & 0x1F); - return false; - } else if (((unsigned char)c & 0xF0) == 0xE0) { - utf8_state->total_len = 3; - utf8_state->c = ((unsigned char)c & 0x0F); - return false; - } else if (((unsigned char)c & 0xF8) == 0xF0) { - utf8_state->total_len = 4; - utf8_state->c = ((unsigned char)c & 0x07); - return false; - } - goto bad_encoding; - } - - if (((unsigned char)c & 0xC0) != 0x80) - goto bad_encoding; - - utf8_state->c <<= 6; - utf8_state->c |= ((unsigned char)c & 0x3F); - - utf8_state->used_len++; - if (utf8_state->used_len == utf8_state->total_len) - goto finished_decoding; - return false; - -finished_decoding: - if (utf8_state->c == 0 || utf8_state->c > 0x10FFFF) - errno = ERANGE; - /* The UTF-16 "surrogate range": illegal in UTF-8 */ - else if (utf8_state->total_len == 3 - && (utf8_state->c & 0xFFFFF800) == 0x0000D800) - errno = ERANGE; - else { - int min_bits; - switch (utf8_state->total_len) { - case 1: - min_bits = 0; - break; - case 2: - min_bits = 7; - break; - case 3: - min_bits = 11; - break; - case 4: - min_bits = 16; - break; - default: - abort(); - } - if ((utf8_state->c >> min_bits) == 0) - errno = EFBIG; - else - errno = 0; - } - return true; - -bad_encoding: - utf8_state->total_len = utf8_state->used_len; - errno = EINVAL; - return true; -} - -size_t utf8_encode(uint32_t point, char dest[UTF8_MAX_LEN]) -{ - if ((point >> 7) == 0) { - if (point == 0) { - errno = ERANGE; - return 0; - } - /* 0xxxxxxx */ - dest[0] = point; - return 1; - } - - if ((point >> 11) == 0) { - /* 110xxxxx 10xxxxxx */ - dest[1] = 0x80 | (point & 0x3F); - dest[0] = 0xC0 | (point >> 6); - return 2; - } - - if ((point >> 16) == 0) { - if (point >= 0xD800 && point <= 0xDFFF) { - errno = ERANGE; - return 0; - } - /* 1110xxxx 10xxxxxx 10xxxxxx */ - dest[2] = 0x80 | (point & 0x3F); - dest[1] = 0x80 | ((point >> 6) & 0x3F); - dest[0] = 0xE0 | (point >> 12); - return 3; - } - - if (point > 0x10FFFF) { - errno = ERANGE; - return 0; - } - - /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */ - dest[3] = 0x80 | (point & 0x3F); - dest[2] = 0x80 | ((point >> 6) & 0x3F); - dest[1] = 0x80 | ((point >> 12) & 0x3F); - dest[0] = 0xF0 | (point >> 18); - return 4; -} diff --git a/nostrdb/ccan/ccan/utf8/utf8.h b/nostrdb/ccan/ccan/utf8/utf8.h deleted file mode 100644 index 9a74696800..0000000000 --- a/nostrdb/ccan/ccan/utf8/utf8.h +++ /dev/null @@ -1,54 +0,0 @@ -/* MIT (BSD) license - see LICENSE file for details */ -#ifndef CCAN_UTF8_H -#define CCAN_UTF8_H -#include -#include -#include - -/* Unicode is limited to 21 bits. */ -#define UTF8_MAX_LEN 4 - -struct utf8_state { - /* How many characters we are expecting as part of this Unicode point */ - uint16_t total_len; - /* How many characters we've already seen. */ - uint16_t used_len; - /* Compound character, aka Unicode point. */ - uint32_t c; -}; - -#define UTF8_STATE_INIT { 0, 0, 0 } - -static inline void utf8_state_init(struct utf8_state *utf8_state) -{ - memset(utf8_state, 0, sizeof(*utf8_state)); -} - -/** - * utf8_decode - continue UTF8 decoding with this character. - * @utf8_state - initialized UTF8 state. - * @c - the character. - * - * Returns false if it needs another character to give results. - * Otherwise returns true, @utf8_state can be reused without initializeation, - * and sets errno: - * 0: success - * EINVAL: bad encoding (including a NUL character). - * EFBIG: not a minimal encoding. - * ERANGE: encoding of invalid character. - * - * You can extract the character from @utf8_state->c; @utf8_state->used_len - * indicates how many characters have been consumed. - */ -bool utf8_decode(struct utf8_state *utf8_state, char c); - -/** - * utf8_encode - encode a point into UTF8. - * @point - Unicode point to include. - * @dest - buffer to fill. - * - * Returns 0 if point was invalid, otherwise bytes of dest used. - * Sets errno to ERANGE if point was invalid. - */ -size_t utf8_encode(uint32_t point, char dest[UTF8_MAX_LEN]); -#endif /* CCAN_UTF8_H */ diff --git a/nostrdb/ccan/licenses/BSD-MIT b/nostrdb/ccan/licenses/BSD-MIT deleted file mode 100644 index 89de354795..0000000000 --- a/nostrdb/ccan/licenses/BSD-MIT +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nostrdb/ccan/licenses/CC0 b/nostrdb/ccan/licenses/CC0 deleted file mode 100644 index feb9b118e6..0000000000 --- a/nostrdb/ccan/licenses/CC0 +++ /dev/null @@ -1,28 +0,0 @@ -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: - - the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; - moral rights retained by the original author(s) and/or performer(s); - publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; - rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; - rights protecting the extraction, dissemination, use and reuse of data in a Work; - database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and - other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. - -4. Limitations and Disclaimers. - - No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. - Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. - Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. - Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. diff --git a/nostrdb/ccan/licenses/LGPL-2.1 b/nostrdb/ccan/licenses/LGPL-2.1 deleted file mode 100644 index 2d2d780e60..0000000000 --- a/nostrdb/ccan/licenses/LGPL-2.1 +++ /dev/null @@ -1,510 +0,0 @@ - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations -below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it -becomes a de-facto standard. To achieve this, non-free programs must -be allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control -compilation and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at least - three years, to give the same user the materials specified in - Subsection 6a, above, for a charge no more than the cost of - performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply, and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License -may add an explicit geographical distribution limitation excluding those -countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms -of the ordinary General Public License). - - To apply these terms, attach the following notices to the library. -It is safest to attach them to the start of each source file to most -effectively convey the exclusion of warranty; and each file should -have at least the "copyright" line and a pointer to where the full -notice is found. - - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or -your school, if any, to sign a "copyright disclaimer" for the library, -if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James - Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/nostrdb/ccan/licenses/LGPL-3 b/nostrdb/ccan/licenses/LGPL-3 deleted file mode 100644 index fc8a5de7ed..0000000000 --- a/nostrdb/ccan/licenses/LGPL-3 +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/nostrdb/check_type.h b/nostrdb/check_type.h deleted file mode 100644 index 22b6c7fb0b..0000000000 --- a/nostrdb/check_type.h +++ /dev/null @@ -1,64 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_CHECK_TYPE_H -#define CCAN_CHECK_TYPE_H -#include "config.h" - -/** - * check_type - issue a warning or build failure if type is not correct. - * @expr: the expression whose type we should check (not evaluated). - * @type: the exact type we expect the expression to be. - * - * This macro is usually used within other macros to try to ensure that a macro - * argument is of the expected type. No type promotion of the expression is - * done: an unsigned int is not the same as an int! - * - * check_type() always evaluates to 0. - * - * If your compiler does not support typeof, then the best we can do is fail - * to compile if the sizes of the types are unequal (a less complete check). - * - * Example: - * // They should always pass a 64-bit value to _set_some_value! - * #define set_some_value(expr) \ - * _set_some_value((check_type((expr), uint64_t), (expr))) - */ - -/** - * check_types_match - issue a warning or build failure if types are not same. - * @expr1: the first expression (not evaluated). - * @expr2: the second expression (not evaluated). - * - * This macro is usually used within other macros to try to ensure that - * arguments are of identical types. No type promotion of the expressions is - * done: an unsigned int is not the same as an int! - * - * check_types_match() always evaluates to 0. - * - * If your compiler does not support typeof, then the best we can do is fail - * to compile if the sizes of the types are unequal (a less complete check). - * - * Example: - * // Do subtraction to get to enclosing type, but make sure that - * // pointer is of correct type for that member. - * #define container_of(mbr_ptr, encl_type, mbr) \ - * (check_types_match((mbr_ptr), &((encl_type *)0)->mbr), \ - * ((encl_type *) \ - * ((char *)(mbr_ptr) - offsetof(encl_type, mbr)))) - */ -#if HAVE_TYPEOF -#define check_type(expr, type) \ - ((typeof(expr) *)0 != (type *)0) - -#define check_types_match(expr1, expr2) \ - ((typeof(expr1) *)0 != (typeof(expr2) *)0) -#else -#include -/* Without typeof, we can only test the sizes. */ -#define check_type(expr, type) \ - BUILD_ASSERT_OR_ZERO(sizeof(expr) == sizeof(type)) - -#define check_types_match(expr1, expr2) \ - BUILD_ASSERT_OR_ZERO(sizeof(expr1) == sizeof(expr2)) -#endif /* HAVE_TYPEOF */ - -#endif /* CCAN_CHECK_TYPE_H */ diff --git a/nostrdb/container_of.h b/nostrdb/container_of.h deleted file mode 100644 index 7c7a00b927..0000000000 --- a/nostrdb/container_of.h +++ /dev/null @@ -1,145 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_CONTAINER_OF_H -#define CCAN_CONTAINER_OF_H -#include - -#include "config.h" -#include "check_type.h" - -/** - * container_of - get pointer to enclosing structure - * @member_ptr: pointer to the structure member - * @containing_type: the type this member is within - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does pointer - * subtraction to return the pointer to the enclosing type. - * - * Example: - * struct foo { - * int fielda, fieldb; - * // ... - * }; - * struct info { - * int some_other_field; - * struct foo my_foo; - * }; - * - * static struct info *foo_to_info(struct foo *foo) - * { - * return container_of(foo, struct info, my_foo); - * } - */ -#define container_of(member_ptr, containing_type, member) \ - ((containing_type *) \ - ((char *)(member_ptr) \ - - container_off(containing_type, member)) \ - + check_types_match(*(member_ptr), ((containing_type *)0)->member)) - - -/** - * container_of_or_null - get pointer to enclosing structure, or NULL - * @member_ptr: pointer to the structure member - * @containing_type: the type this member is within - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does pointer - * subtraction to return the pointer to the enclosing type, unless it - * is given NULL, in which case it also returns NULL. - * - * Example: - * struct foo { - * int fielda, fieldb; - * // ... - * }; - * struct info { - * int some_other_field; - * struct foo my_foo; - * }; - * - * static struct info *foo_to_info_allowing_null(struct foo *foo) - * { - * return container_of_or_null(foo, struct info, my_foo); - * } - */ -static inline char *container_of_or_null_(void *member_ptr, size_t offset) -{ - return member_ptr ? (char *)member_ptr - offset : NULL; -} -#define container_of_or_null(member_ptr, containing_type, member) \ - ((containing_type *) \ - container_of_or_null_(member_ptr, \ - container_off(containing_type, member)) \ - + check_types_match(*(member_ptr), ((containing_type *)0)->member)) - -/** - * container_off - get offset to enclosing structure - * @containing_type: the type this member is within - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does - * typechecking and figures out the offset to the enclosing type. - * - * Example: - * struct foo { - * int fielda, fieldb; - * // ... - * }; - * struct info { - * int some_other_field; - * struct foo my_foo; - * }; - * - * static struct info *foo_to_info(struct foo *foo) - * { - * size_t off = container_off(struct info, my_foo); - * return (void *)((char *)foo - off); - * } - */ -#define container_off(containing_type, member) \ - offsetof(containing_type, member) - -/** - * container_of_var - get pointer to enclosing structure using a variable - * @member_ptr: pointer to the structure member - * @container_var: a pointer of same type as this member's container - * @member: the name of this member within the structure. - * - * Given a pointer to a member of a structure, this macro does pointer - * subtraction to return the pointer to the enclosing type. - * - * Example: - * static struct info *foo_to_i(struct foo *foo) - * { - * struct info *i = container_of_var(foo, i, my_foo); - * return i; - * } - */ -#if HAVE_TYPEOF -#define container_of_var(member_ptr, container_var, member) \ - container_of(member_ptr, typeof(*container_var), member) -#else -#define container_of_var(member_ptr, container_var, member) \ - ((void *)((char *)(member_ptr) - \ - container_off_var(container_var, member))) -#endif - -/** - * container_off_var - get offset of a field in enclosing structure - * @container_var: a pointer to a container structure - * @member: the name of a member within the structure. - * - * Given (any) pointer to a structure and a its member name, this - * macro does pointer subtraction to return offset of member in a - * structure memory layout. - * - */ -#if HAVE_TYPEOF -#define container_off_var(var, member) \ - container_off(typeof(*var), member) -#else -#define container_off_var(var, member) \ - ((const char *)&(var)->member - (const char *)(var)) -#endif - -#endif /* CCAN_CONTAINER_OF_H */ diff --git a/nostrdb/copy-ndb b/nostrdb/copy-ndb deleted file mode 100755 index a9784cf5c5..0000000000 --- a/nostrdb/copy-ndb +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -rm -rf flatcc bindings -mkdir -p flatcc -cp ~/src/c/nostrdb/nostrdb.{c,h} . -cp ~/src/c/nostrdb/{jsmn,threadpool,protected_queue,memchr,util}.h . -cp ~/src/c/nostrdb/deps/lmdb/{lmdb,midl}.h . -cp ~/src/c/nostrdb/deps/lmdb/mdb.c . -cp ~/src/c/nostrdb/deps/lmdb/midl.c . -cp -r ~/src/c/nostrdb/deps/flatcc/include/flatcc/* flatcc -cp ~/src/c/nostrdb/deps/flatcc/src/runtime/* flatcc -cp -r ~/src/c/nostrdb/bindings . -#patch -p2 < flatcc.patch -sed -i"" 's,import FlatBuffers,,' bindings/swift/NdbProfile.swift -sed -i"" 's,^#include "flatcc/,#include ",g' bindings/c/*.h flatcc/*.{c,h} diff --git a/nostrdb/cppmagic.h b/nostrdb/cppmagic.h deleted file mode 100644 index fa8d70e24d..0000000000 --- a/nostrdb/cppmagic.h +++ /dev/null @@ -1,191 +0,0 @@ -/* MIT (BSD) license - see LICENSE file for details */ -#ifndef CCAN_CPPMAGIC_H -#define CCAN_CPPMAGIC_H - -/** - * CPPMAGIC_NOTHING - expands to nothing - */ -#define CPPMAGIC_NOTHING() - -/** - * CPPMAGIC_STRINGIFY - convert arguments to a string literal - */ -#define _CPPMAGIC_STRINGIFY(...) #__VA_ARGS__ -#define CPPMAGIC_STRINGIFY(...) _CPPMAGIC_STRINGIFY(__VA_ARGS__) - -/** - * CPPMAGIC_GLUE2 - glue arguments together - * - * CPPMAGIC_GLUE2(@a_, @b_) - * expands to the expansion of @a_ followed immediately - * (combining tokens) by the expansion of @b_ - */ -#define _CPPMAGIC_GLUE2(a_, b_) a_##b_ -#define CPPMAGIC_GLUE2(a_, b_) _CPPMAGIC_GLUE2(a_, b_) - -/** - * CPPMAGIC_1ST - return 1st argument - * - * CPPMAGIC_1ST(@a_, ...) - * expands to the expansion of @a_ - */ -#define CPPMAGIC_1ST(a_, ...) a_ - -/** - * CPPMAGIC_2ND - return 2nd argument - * - * CPPMAGIC_2ST(@a_, @b_, ...) - * expands to the expansion of @b_ - */ -#define CPPMAGIC_2ND(a_, b_, ...) b_ - -/** - * CPPMAGIC_ISZERO - is argument '0' - * - * CPPMAGIC_ISZERO(@a) - * expands to '1' if @a is '0', otherwise expands to '0'. - */ -#define _CPPMAGIC_ISPROBE(...) CPPMAGIC_2ND(__VA_ARGS__, 0) -#define _CPPMAGIC_PROBE() $, 1 -#define _CPPMAGIC_ISZERO_0 _CPPMAGIC_PROBE() -#define CPPMAGIC_ISZERO(a_) \ - _CPPMAGIC_ISPROBE(CPPMAGIC_GLUE2(_CPPMAGIC_ISZERO_, a_)) - -/** - * CPPMAGIC_NONZERO - is argument not '0' - * - * CPPMAGIC_NONZERO(@a) - * expands to '0' if @a is '0', otherwise expands to '1'. - */ -#define CPPMAGIC_NONZERO(a_) CPPMAGIC_ISZERO(CPPMAGIC_ISZERO(a_)) - -/** - * CPPMAGIC_NONEMPTY - does the macro have any arguments? - * - * CPPMAGIC_NONEMPTY() - * expands to '0' - * CPPMAGIC_NONEMPTY(@a) - * CPPMAGIC_NONEMPTY(@a, ...) - * expand to '1' - */ -#define _CPPMAGIC_EOA() 0 -#define CPPMAGIC_NONEMPTY(...) \ - CPPMAGIC_NONZERO(CPPMAGIC_1ST(_CPPMAGIC_EOA __VA_ARGS__)()) - -/** - * CPPMAGIC_ISEMPTY - does the macro have no arguments? - * - * CPPMAGIC_ISEMPTY() - * expands to '1' - * CPPMAGIC_ISEMPTY(@a) - * CPPMAGIC_ISEMPTY(@a, ...) - * expand to '0' - */ -#define CPPMAGIC_ISEMPTY(...) \ - CPPMAGIC_ISZERO(CPPMAGIC_NONEMPTY(__VA_ARGS__)) - -/* - * CPPMAGIC_IFELSE - preprocessor conditional - * - * CPPMAGIC_IFELSE(@cond)(@if)(@else) - * expands to @else if @cond is '0', otherwise expands to @if - */ -#define _CPPMAGIC_IF_0(...) _CPPMAGIC_IF_0_ELSE -#define _CPPMAGIC_IF_1(...) __VA_ARGS__ _CPPMAGIC_IF_1_ELSE -#define _CPPMAGIC_IF_0_ELSE(...) __VA_ARGS__ -#define _CPPMAGIC_IF_1_ELSE(...) -#define _CPPMAGIC_IFELSE(cond_) CPPMAGIC_GLUE2(_CPPMAGIC_IF_, cond_) -#define CPPMAGIC_IFELSE(cond_) \ - _CPPMAGIC_IFELSE(CPPMAGIC_NONZERO(cond_)) - -/** - * CPPMAGIC_EVAL - force multiple expansion passes - * - * Forces macros in the arguments to be expanded repeatedly (up to - * 1024 times) even when CPP would usually stop expanding. - */ -#define CPPMAGIC_EVAL1(...) __VA_ARGS__ -#define CPPMAGIC_EVAL2(...) \ - CPPMAGIC_EVAL1(CPPMAGIC_EVAL1(__VA_ARGS__)) -#define CPPMAGIC_EVAL4(...) \ - CPPMAGIC_EVAL2(CPPMAGIC_EVAL2(__VA_ARGS__)) -#define CPPMAGIC_EVAL8(...) \ - CPPMAGIC_EVAL4(CPPMAGIC_EVAL4(__VA_ARGS__)) -#define CPPMAGIC_EVAL16(...) \ - CPPMAGIC_EVAL8(CPPMAGIC_EVAL8(__VA_ARGS__)) -#define CPPMAGIC_EVAL32(...) \ - CPPMAGIC_EVAL16(CPPMAGIC_EVAL16(__VA_ARGS__)) -#define CPPMAGIC_EVAL64(...) \ - CPPMAGIC_EVAL32(CPPMAGIC_EVAL32(__VA_ARGS__)) -#define CPPMAGIC_EVAL128(...) \ - CPPMAGIC_EVAL64(CPPMAGIC_EVAL64(__VA_ARGS__)) -#define CPPMAGIC_EVAL256(...) \ - CPPMAGIC_EVAL128(CPPMAGIC_EVAL128(__VA_ARGS__)) -#define CPPMAGIC_EVAL512(...) \ - CPPMAGIC_EVAL256(CPPMAGIC_EVAL256(__VA_ARGS__)) -#define CPPMAGIC_EVAL1024(...) \ - CPPMAGIC_EVAL512(CPPMAGIC_EVAL512(__VA_ARGS__)) -#define CPPMAGIC_EVAL(...) CPPMAGIC_EVAL1024(__VA_ARGS__) - -/** - * CPPMAGIC_DEFER1, CPPMAGIC_DEFER2 - defer expansion - */ -#define CPPMAGIC_DEFER1(a_) a_ CPPMAGIC_NOTHING() -#define CPPMAGIC_DEFER2(a_) a_ CPPMAGIC_NOTHING CPPMAGIC_NOTHING()() - -/** - * CPPMAGIC_MAP - iterate another macro across arguments - * @m: name of a one argument macro - * - * CPPMAGIC_MAP(@m, @a1, @a2, ... @an) - * expands to the expansion of @m(@a1) , @m(@a2) , ... , @m(@an) - */ -#define _CPPMAGIC_MAP_() _CPPMAGIC_MAP -#define _CPPMAGIC_MAP(m_, a_, ...) \ - m_(a_) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (, CPPMAGIC_DEFER2(_CPPMAGIC_MAP_)()(m_, __VA_ARGS__)) \ - () -#define CPPMAGIC_MAP(m_, ...) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (CPPMAGIC_EVAL(_CPPMAGIC_MAP(m_, __VA_ARGS__))) \ - () - -/** - * CPPMAGIC_2MAP - iterate another macro across pairs of arguments - * @m: name of a two argument macro - * - * CPPMAGIC_2MAP(@m, @a1, @b1, @a2, @b2, ..., @an, @bn) - * expands to the expansion of - * @m(@a1, @b1) , @m(@a2, @b2) , ... , @m(@an, @bn) - */ -#define _CPPMAGIC_2MAP_() _CPPMAGIC_2MAP -#define _CPPMAGIC_2MAP(m_, a_, b_, ...) \ - m_(a_, b_) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (, CPPMAGIC_DEFER2(_CPPMAGIC_2MAP_)()(m_, __VA_ARGS__)) \ - () -#define CPPMAGIC_2MAP(m_, ...) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (CPPMAGIC_EVAL(_CPPMAGIC_2MAP(m_, __VA_ARGS__))) \ - () - -/** - * CPPMAGIC_JOIN - separate arguments with given delimiter - * @d: delimiter - * - * CPPMAGIC_JOIN(@d, @a1, @a2, ..., @an) - * expands to the expansion of @a1 @d @a2 @d ... @d @an - */ -#define _CPPMAGIC_JOIN_() _CPPMAGIC_JOIN -#define _CPPMAGIC_JOIN(d_, a_, ...) \ - a_ \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (d_ CPPMAGIC_DEFER2(_CPPMAGIC_JOIN_)()(d_, __VA_ARGS__)) \ - () -#define CPPMAGIC_JOIN(d_, ...) \ - CPPMAGIC_IFELSE(CPPMAGIC_NONEMPTY(__VA_ARGS__)) \ - (CPPMAGIC_EVAL(_CPPMAGIC_JOIN(d_, __VA_ARGS__))) \ - () - -#endif /* CCAN_CPPMAGIC_H */ diff --git a/nostrdb/debug.h b/nostrdb/debug.h deleted file mode 100644 index 11a6344ec8..0000000000 --- a/nostrdb/debug.h +++ /dev/null @@ -1,15 +0,0 @@ - -#ifndef PROTOVERSE_DEBUG_H -#define PROTOVERSE_DEBUG_H - -#include - -#define unusual(...) fprintf(stderr, "UNUSUAL: " __VA_ARGS__) - -#ifdef DEBUG -#define debug(...) printf(__VA_ARGS__) -#else -#define debug(...) -#endif - -#endif /* PROTOVERSE_DEBUG_H */ diff --git a/nostrdb/error.c b/nostrdb/error.c deleted file mode 100644 index 5f26a2b8bc..0000000000 --- a/nostrdb/error.c +++ /dev/null @@ -1,34 +0,0 @@ - -#include "error.h" - -#include -#include - -int note_error_(struct errors *errs_, struct cursor *p, const char *fmt, ...) -{ - static char buf[512]; - struct error err; - struct cursor *errs; - va_list ap; - - errs = &errs_->cur; - - if (errs_->enabled == 0) - return 0; - - va_start(ap, fmt); - vsprintf(buf, fmt, ap); - va_end(ap); - - err.msg = buf; - err.pos = p ? (int)(p->p - p->start) : 0; - - if (!cursor_push_error(errs, &err)) { - fprintf(stderr, "arena OOM when recording error, "); - fprintf(stderr, "errs->p at %ld, remaining %ld, strlen %ld\n", - errs->p - errs->start, errs->end - errs->p, strlen(buf)); - } - - return 0; -} - diff --git a/nostrdb/error.h b/nostrdb/error.h deleted file mode 100644 index 48a6299650..0000000000 --- a/nostrdb/error.h +++ /dev/null @@ -1,33 +0,0 @@ - -#ifndef PROTOVERSE_ERROR_H -#define PROTOVERSE_ERROR_H - -#include "cursor.h" - -struct error { - int pos; - const char *msg; -}; - -struct errors { - struct cursor cur; - int enabled; -}; - -#define note_error(errs, p, fmt, ...) note_error_(errs, p, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__) - -static inline int cursor_push_error(struct cursor *cur, struct error *err) -{ - return cursor_push_int(cur, err->pos) && - cursor_push_c_str(cur, err->msg); -} - -static inline int cursor_pull_error(struct cursor *cur, struct error *err) -{ - return cursor_pull_int(cur, &err->pos) && - cursor_pull_c_str(cur, &err->msg); -} - -int note_error_(struct errors *errs, struct cursor *p, const char *fmt, ...); - -#endif /* PROTOVERSE_ERROR_H */ diff --git a/nostrdb/flatcc/CMakeLists.txt b/nostrdb/flatcc/CMakeLists.txt deleted file mode 100644 index 127e2a47ff..0000000000 --- a/nostrdb/flatcc/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -include_directories ( - "${PROJECT_SOURCE_DIR}/include" -) - -add_library(flatccrt - builder.c - emitter.c - refmap.c - verifier.c - json_parser.c - json_printer.c -) - -if (FLATCC_INSTALL) - install(TARGETS flatccrt DESTINATION ${lib_dir}) -endif() diff --git a/nostrdb/flatcc/builder.c b/nostrdb/flatcc/builder.c deleted file mode 100644 index 74535fb1cd..0000000000 --- a/nostrdb/flatcc/builder.c +++ /dev/null @@ -1,2050 +0,0 @@ -/* - * Codegenerator for C, building FlatBuffers. - * - * There are several approaches, some light, some requiring a library, - * some with vectored I/O etc. - * - * Here we focus on a reasonable balance of light code and efficiency. - * - * Builder code is generated to a separate file that includes the - * generated read-only code. - * - * Mutable buffers are not supported in this version. - * - */ - -#include -#include - -#include "flatcc_builder.h" -#include "flatcc_emitter.h" - -/* - * `check` is designed to handle incorrect use errors that can be - * ignored in production of a tested product. - * - * `check_error` fails if condition is false and is designed to return an - * error code in production. - */ - -#if FLATCC_BUILDER_ASSERT_ON_ERROR -#define check(cond, reason) FLATCC_BUILDER_ASSERT(cond, reason) -#else -#define check(cond, reason) ((void)0) -#endif - -#if FLATCC_BUILDER_SKIP_CHECKS -#define check_error(cond, err, reason) ((void)0) -#else -#define check_error(cond, err, reason) if (!(cond)) { check(cond, reason); return err; } -#endif - -/* `strnlen` not widely supported. */ -static inline size_t pstrnlen(const char *s, size_t max_len) -{ - const char *end = memchr(s, 0, max_len); - return end ? (size_t)(end - s) : max_len; -} -#undef strnlen -#define strnlen pstrnlen - -/* Padding can be up to 255 zeroes, and 1 zero string termination byte. - * When two paddings are combined at nested buffers, we need twice that. - * Visible to emitter so it can test for zero padding in iov. */ -const uint8_t flatcc_builder_padding_base[512] = { 0 }; -#define _pad flatcc_builder_padding_base - -#define uoffset_t flatbuffers_uoffset_t -#define soffset_t flatbuffers_soffset_t -#define voffset_t flatbuffers_voffset_t -#define utype_t flatbuffers_utype_t - -#define write_uoffset __flatbuffers_uoffset_write_to_pe -#define write_voffset __flatbuffers_voffset_write_to_pe -#define write_identifier __flatbuffers_uoffset_write_to_pe -#define write_utype __flatbuffers_utype_write_to_pe - -#define field_size sizeof(uoffset_t) -#define max_offset_count FLATBUFFERS_COUNT_MAX(field_size) -#define union_size sizeof(flatcc_builder_union_ref_t) -#define max_union_count FLATBUFFERS_COUNT_MAX(union_size) -#define utype_size sizeof(utype_t) -#define max_utype_count FLATBUFFERS_COUNT_MAX(utype_size) - -#define max_string_len FLATBUFFERS_COUNT_MAX(1) -#define identifier_size FLATBUFFERS_IDENTIFIER_SIZE - - -#define iovec_t flatcc_iovec_t -#define frame_size sizeof(__flatcc_builder_frame_t) -#define frame(x) (B->frame[0].x) - - -/* `align` must be a power of 2. */ -static inline uoffset_t alignup_uoffset(uoffset_t x, size_t align) -{ - return (x + (uoffset_t)align - 1u) & ~((uoffset_t)align - 1u); -} - -static inline size_t alignup_size(size_t x, size_t align) -{ - return (x + align - 1u) & ~(align - 1u); -} - - -typedef struct vtable_descriptor vtable_descriptor_t; -struct vtable_descriptor { - /* Where the vtable is emitted. */ - flatcc_builder_ref_t vt_ref; - /* Which buffer it was emitted to. */ - uoffset_t nest_id; - /* Where the vtable is cached. */ - uoffset_t vb_start; - /* Hash table collision chain. */ - uoffset_t next; -}; - -typedef struct flatcc_iov_state flatcc_iov_state_t; -struct flatcc_iov_state { - size_t len; - int count; - flatcc_iovec_t iov[FLATCC_IOV_COUNT_MAX]; -}; - -#define iov_state_t flatcc_iov_state_t - -/* This assumes `iov_state_t iov;` has been declared in scope */ -#define push_iov_cond(base, size, cond) if ((size) > 0 && (cond)) { iov.len += size;\ - iov.iov[iov.count].iov_base = (void *)(base); iov.iov[iov.count].iov_len = (size); ++iov.count; } -#define push_iov(base, size) push_iov_cond(base, size, 1) -#define init_iov() { iov.len = 0; iov.count = 0; } - - -int flatcc_builder_default_alloc(void *alloc_context, iovec_t *b, size_t request, int zero_fill, int hint) -{ - void *p; - size_t n; - - (void)alloc_context; - - if (request == 0) { - if (b->iov_base) { - FLATCC_BUILDER_FREE(b->iov_base); - b->iov_base = 0; - b->iov_len = 0; - } - return 0; - } - switch (hint) { - case flatcc_builder_alloc_ds: - n = 256; - break; - case flatcc_builder_alloc_ht: - /* Should be exact size, or space size is just wasted. */ - n = request; - break; - case flatcc_builder_alloc_fs: - n = sizeof(__flatcc_builder_frame_t) * 8; - break; - case flatcc_builder_alloc_us: - n = 64; - break; - default: - /* - * We have many small structures - vs stack for tables with few - * elements, and few offset fields in patch log. No need to - * overallocate in case of busy small messages. - */ - n = 32; - break; - } - while (n < request) { - n *= 2; - } - if (request <= b->iov_len && b->iov_len / 2 >= n) { - /* Add hysteresis to shrink. */ - return 0; - } - if (!(p = FLATCC_BUILDER_REALLOC(b->iov_base, n))) { - return -1; - } - /* Realloc might also shrink. */ - if (zero_fill && b->iov_len < n) { - memset((uint8_t *)p + b->iov_len, 0, n - b->iov_len); - } - b->iov_base = p; - b->iov_len = n; - return 0; -} - -#define T_ptr(base, pos) ((void *)((size_t)(base) + (size_t)(pos))) -#define ds_ptr(pos) (T_ptr(B->buffers[flatcc_builder_alloc_ds].iov_base, (pos))) -#define vs_ptr(pos) (T_ptr(B->buffers[flatcc_builder_alloc_vs].iov_base, (pos))) -#define pl_ptr(pos) (T_ptr(B->buffers[flatcc_builder_alloc_pl].iov_base, (pos))) -#define us_ptr(pos) (T_ptr(B->buffers[flatcc_builder_alloc_us].iov_base, (pos))) -#define vd_ptr(pos) (T_ptr(B->buffers[flatcc_builder_alloc_vd].iov_base, (pos))) -#define vb_ptr(pos) (T_ptr(B->buffers[flatcc_builder_alloc_vb].iov_base, (pos))) -#define vs_offset(ptr) ((uoffset_t)((size_t)(ptr) - (size_t)B->buffers[flatcc_builder_alloc_vs].iov_base)) -#define pl_offset(ptr) ((uoffset_t)((size_t)(ptr) - (size_t)B->buffers[flatcc_builder_alloc_pl].iov_base)) -#define us_offset(ptr) ((uoffset_t)((size_t)(ptr) - (size_t)B->buffers[flatcc_builder_alloc_us].iov_base)) - -#define table_limit (FLATBUFFERS_VOFFSET_MAX - field_size + 1) -#define data_limit (FLATBUFFERS_UOFFSET_MAX - field_size + 1) - -#define set_identifier(id) memcpy(&B->identifier, (id) ? (void *)(id) : (void *)_pad, identifier_size) - -/* Must also return true when no buffer has been started. */ -#define is_top_buffer(B) (B->nest_id == 0) - -/* - * Tables use a stack represention better suited for quickly adding - * fields to tables, but it must occasionally be refreshed following - * reallocation or reentry from child frame. - */ -static inline void refresh_ds(flatcc_builder_t *B, uoffset_t type_limit) -{ - iovec_t *buf = B->buffers + flatcc_builder_alloc_ds; - - B->ds = ds_ptr(B->ds_first); - B->ds_limit = (uoffset_t)buf->iov_len - B->ds_first; - /* - * So we don't allocate outside tables representation size, nor our - * current buffer size. - */ - if (B->ds_limit > type_limit) { - B->ds_limit = type_limit; - } - /* So exit frame can refresh fast. */ - frame(type_limit) = type_limit; -} - -static int reserve_ds(flatcc_builder_t *B, size_t need, uoffset_t limit) -{ - iovec_t *buf = B->buffers + flatcc_builder_alloc_ds; - - if (B->alloc(B->alloc_context, buf, B->ds_first + need, 1, flatcc_builder_alloc_ds)) { - return -1; - } - refresh_ds(B, limit); - return 0; -} - -/* - * Make sure there is always an extra zero termination on stack - * even if it isn't emitted such that string updates may count - * on zero termination being present always. - */ -static inline void *push_ds(flatcc_builder_t *B, uoffset_t size) -{ - size_t offset; - - offset = B->ds_offset; - if ((B->ds_offset += size) >= B->ds_limit) { - if (reserve_ds(B, B->ds_offset + 1, data_limit)) { - return 0; - } - } - return B->ds + offset; -} - -static inline void unpush_ds(flatcc_builder_t *B, uoffset_t size) -{ - B->ds_offset -= size; - memset(B->ds + B->ds_offset, 0, size); -} - -static inline void *push_ds_copy(flatcc_builder_t *B, const void *data, uoffset_t size) -{ - void *p; - - if (!(p = push_ds(B, size))) { - return 0; - } - memcpy(p, data, size); - return p; -} - -static inline void *push_ds_field(flatcc_builder_t *B, uoffset_t size, uint16_t align, voffset_t id) -{ - uoffset_t offset; - - /* - * We calculate table field alignment relative to first entry, not - * header field with vtable offset. - * - * Note: >= comparison handles special case where B->ds is not - * allocated yet and size is 0 so the return value would be mistaken - * for an error. - */ - offset = alignup_uoffset(B->ds_offset, align); - if ((B->ds_offset = offset + size) >= B->ds_limit) { - if (reserve_ds(B, B->ds_offset + 1, table_limit)) { - return 0; - } - } - B->vs[id] = (voffset_t)(offset + field_size); - if (id >= B->id_end) { - B->id_end = id + 1u; - } - return B->ds + offset; -} - -static inline void *push_ds_offset_field(flatcc_builder_t *B, voffset_t id) -{ - uoffset_t offset; - - offset = alignup_uoffset(B->ds_offset, field_size); - if ((B->ds_offset = offset + field_size) > B->ds_limit) { - if (reserve_ds(B, B->ds_offset, table_limit)) { - return 0; - } - } - B->vs[id] = (voffset_t)(offset + field_size); - if (id >= B->id_end) { - B->id_end = id + 1u; - } - *B->pl++ = (flatbuffers_voffset_t)offset; - return B->ds + offset; -} - -static inline void *reserve_buffer(flatcc_builder_t *B, int alloc_type, size_t used, size_t need, int zero_init) -{ - iovec_t *buf = B->buffers + alloc_type; - - if (used + need > buf->iov_len) { - if (B->alloc(B->alloc_context, buf, used + need, zero_init, alloc_type)) { - check(0, "memory allocation failed"); - return 0; - } - } - return (void *)((size_t)buf->iov_base + used); -} - -static inline int reserve_fields(flatcc_builder_t *B, int count) -{ - size_t used, need; - - /* Provide faster stack operations for common table operations. */ - used = frame(container.table.vs_end) + frame(container.table.id_end) * sizeof(voffset_t); - need = (size_t)(count + 2) * sizeof(voffset_t); - if (!(B->vs = reserve_buffer(B, flatcc_builder_alloc_vs, used, need, 1))) { - return -1; - } - /* Move past header for convenience. */ - B->vs += 2; - used = frame(container.table.pl_end); - /* Add one to handle special case of first table being empty. */ - need = (size_t)count * sizeof(*(B->pl)) + 1; - if (!(B->pl = reserve_buffer(B, flatcc_builder_alloc_pl, used, need, 0))) { - return -1; - } - return 0; -} - -static int alloc_ht(flatcc_builder_t *B) -{ - iovec_t *buf = B->buffers + flatcc_builder_alloc_ht; - - size_t size, k; - /* Allocate null entry so we can check for return errors. */ - FLATCC_ASSERT(B->vd_end == 0); - if (!reserve_buffer(B, flatcc_builder_alloc_vd, B->vd_end, sizeof(vtable_descriptor_t), 0)) { - return -1; - } - B->vd_end = sizeof(vtable_descriptor_t); - size = field_size * FLATCC_BUILDER_MIN_HASH_COUNT; - if (B->alloc(B->alloc_context, buf, size, 1, flatcc_builder_alloc_ht)) { - return -1; - } - while (size * 2 <= buf->iov_len) { - size *= 2; - } - size /= field_size; - for (k = 0; (((size_t)1) << k) < size; ++k) { - } - B->ht_width = k; - return 0; -} - -static inline uoffset_t *lookup_ht(flatcc_builder_t *B, uint32_t hash) -{ - uoffset_t *T; - - if (B->ht_width == 0) { - if (alloc_ht(B)) { - return 0; - } - } - T = B->buffers[flatcc_builder_alloc_ht].iov_base; - - return &T[FLATCC_BUILDER_BUCKET_VT_HASH(hash, B->ht_width)]; -} - -void flatcc_builder_flush_vtable_cache(flatcc_builder_t *B) -{ - iovec_t *buf = B->buffers + flatcc_builder_alloc_ht; - - if (B->ht_width == 0) { - return; - } - memset(buf->iov_base, 0, buf->iov_len); - /* Reserve the null entry. */ - B->vd_end = sizeof(vtable_descriptor_t); - B->vb_end = 0; -} - -int flatcc_builder_custom_init(flatcc_builder_t *B, - flatcc_builder_emit_fun *emit, void *emit_context, - flatcc_builder_alloc_fun *alloc, void *alloc_context) -{ - /* - * Do not allocate anything here. Only the required buffers will be - * allocated. For simple struct buffers, no allocation is required - * at all. - */ - memset(B, 0, sizeof(*B)); - - if (emit == 0) { - B->is_default_emitter = 1; - emit = flatcc_emitter; - emit_context = &B->default_emit_context; - } - if (alloc == 0) { - alloc = flatcc_builder_default_alloc; - } - B->alloc_context = alloc_context; - B->alloc = alloc; - B->emit_context = emit_context; - B->emit = emit; - return 0; -} - -int flatcc_builder_init(flatcc_builder_t *B) -{ - return flatcc_builder_custom_init(B, 0, 0, 0, 0); -} - -int flatcc_builder_custom_reset(flatcc_builder_t *B, int set_defaults, int reduce_buffers) -{ - iovec_t *buf; - int i; - - for (i = 0; i < FLATCC_BUILDER_ALLOC_BUFFER_COUNT; ++i) { - buf = B->buffers + i; - if (buf->iov_base) { - /* Don't try to reduce the hash table. */ - if (i != flatcc_builder_alloc_ht && - reduce_buffers && B->alloc(B->alloc_context, buf, 1, 1, i)) { - return -1; - } - memset(buf->iov_base, 0, buf->iov_len); - } else { - FLATCC_ASSERT(buf->iov_len == 0); - } - } - B->vb_end = 0; - if (B->vd_end > 0) { - /* Reset past null entry. */ - B->vd_end = sizeof(vtable_descriptor_t); - } - B->min_align = 0; - B->emit_start = 0; - B->emit_end = 0; - B->level = 0; - B->limit_level = 0; - B->ds_offset = 0; - B->ds_limit = 0; - B->nest_count = 0; - B->nest_id = 0; - /* Needed for correct offset calculation. */ - B->ds = B->buffers[flatcc_builder_alloc_ds].iov_base; - B->pl = B->buffers[flatcc_builder_alloc_pl].iov_base; - B->vs = B->buffers[flatcc_builder_alloc_vs].iov_base; - B->frame = 0; - if (set_defaults) { - B->vb_flush_limit = 0; - B->max_level = 0; - B->disable_vt_clustering = 0; - } - if (B->is_default_emitter) { - flatcc_emitter_reset(&B->default_emit_context); - } - if (B->refmap) { - flatcc_refmap_reset(B->refmap); - } - return 0; -} - -int flatcc_builder_reset(flatcc_builder_t *B) -{ - return flatcc_builder_custom_reset(B, 0, 0); -} - -void flatcc_builder_clear(flatcc_builder_t *B) -{ - iovec_t *buf; - int i; - - for (i = 0; i < FLATCC_BUILDER_ALLOC_BUFFER_COUNT; ++i) { - buf = B->buffers + i; - B->alloc(B->alloc_context, buf, 0, 0, i); - } - if (B->is_default_emitter) { - flatcc_emitter_clear(&B->default_emit_context); - } - if (B->refmap) { - flatcc_refmap_clear(B->refmap); - } - memset(B, 0, sizeof(*B)); -} - -static inline void set_min_align(flatcc_builder_t *B, uint16_t align) -{ - if (B->min_align < align) { - B->min_align = align; - } -} - -/* - * It's a max, but the minimum viable alignment is the largest observed - * alignment requirement, but no larger. - */ -static inline void get_min_align(uint16_t *align, uint16_t b) -{ - if (*align < b) { - *align = b; - } -} - -void *flatcc_builder_enter_user_frame_ptr(flatcc_builder_t *B, size_t size) -{ - size_t *frame; - - size = alignup_size(size, sizeof(size_t)) + sizeof(size_t); - - if (!(frame = reserve_buffer(B, flatcc_builder_alloc_us, B->user_frame_end, size, 0))) { - return 0; - } - memset(frame, 0, size); - *frame++ = B->user_frame_offset; - B->user_frame_offset = B->user_frame_end + sizeof(size_t); - B->user_frame_end += size; - return frame; -} - -size_t flatcc_builder_enter_user_frame(flatcc_builder_t *B, size_t size) -{ - size_t *frame; - - size = alignup_size(size, sizeof(size_t)) + sizeof(size_t); - - if (!(frame = reserve_buffer(B, flatcc_builder_alloc_us, B->user_frame_end, size, 0))) { - return 0; - } - memset(frame, 0, size); - *frame++ = B->user_frame_offset; - B->user_frame_offset = B->user_frame_end + sizeof(size_t); - B->user_frame_end += size; - return B->user_frame_offset; -} - - -size_t flatcc_builder_exit_user_frame(flatcc_builder_t *B) -{ - size_t *hdr; - - FLATCC_ASSERT(B->user_frame_offset > 0); - - hdr = us_ptr(B->user_frame_offset); - B->user_frame_end = B->user_frame_offset - sizeof(size_t); - return B->user_frame_offset = hdr[-1]; -} - -size_t flatcc_builder_exit_user_frame_at(flatcc_builder_t *B, size_t handle) -{ - FLATCC_ASSERT(B->user_frame_offset >= handle); - - B->user_frame_offset = handle; - return flatcc_builder_exit_user_frame(B); -} - -size_t flatcc_builder_get_current_user_frame(flatcc_builder_t *B) -{ - return B->user_frame_offset; -} - -void *flatcc_builder_get_user_frame_ptr(flatcc_builder_t *B, size_t handle) -{ - return us_ptr(handle); -} - -static int enter_frame(flatcc_builder_t *B, uint16_t align) -{ - if (++B->level > B->limit_level) { - if (B->max_level > 0 && B->level > B->max_level) { - return -1; - } - if (!(B->frame = reserve_buffer(B, flatcc_builder_alloc_fs, - (size_t)(B->level - 1) * frame_size, frame_size, 0))) { - return -1; - } - B->limit_level = (int)(B->buffers[flatcc_builder_alloc_fs].iov_len / frame_size); - if (B->max_level > 0 && B->max_level < B->limit_level) { - B->limit_level = B->max_level; - } - } else { - ++B->frame; - } - frame(ds_offset) = B->ds_offset; - frame(align) = B->align; - B->align = align; - /* Note: do not assume padding before first has been allocated! */ - frame(ds_first) = B->ds_first; - frame(type_limit) = data_limit; - B->ds_first = alignup_uoffset(B->ds_first + B->ds_offset, 8); - B->ds_offset = 0; - return 0; -} - -static inline void exit_frame(flatcc_builder_t *B) -{ - memset(B->ds, 0, B->ds_offset); - B->ds_offset = frame(ds_offset); - B->ds_first = frame(ds_first); - refresh_ds(B, frame(type_limit)); - - /* - * Restore local alignment: e.g. a table should not change alignment - * because a child table was just created elsewhere in the buffer, - * but the overall alignment (min align), should be aware of it. - * Each buffer has its own min align that then migrates up without - * being affected by sibling or child buffers. - */ - set_min_align(B, B->align); - B->align = frame(align); - - --B->frame; - --B->level; -} - -static inline uoffset_t front_pad(flatcc_builder_t *B, uoffset_t size, uint16_t align) -{ - return (uoffset_t)(B->emit_start - (flatcc_builder_ref_t)size) & (align - 1u); -} - -static inline uoffset_t back_pad(flatcc_builder_t *B, uint16_t align) -{ - return (uoffset_t)(B->emit_end) & (align - 1u); -} - -static inline flatcc_builder_ref_t emit_front(flatcc_builder_t *B, iov_state_t *iov) -{ - flatcc_builder_ref_t ref; - - /* - * We might have overflow when including headers, but without - * headers we should have checks to prevent overflow in the - * uoffset_t range, hence we subtract 16 to be safe. With that - * guarantee we can also make a safe check on the soffset_t range. - * - * We only allow buffers half the theoritical size of - * FLATBUFFERS_UOFFSET_MAX so we can safely use signed references. - * - * NOTE: vtables vt_offset field is signed, and the check in create - * table only ensures the signed limit. The check would fail if the - * total buffer size could grow beyond UOFFSET_MAX, and we prevent - * that by limiting the lower end to SOFFSET_MIN, and the upper end - * at emit_back to SOFFSET_MAX. - */ - ref = B->emit_start - (flatcc_builder_ref_t)iov->len; - if ((iov->len > 16 && iov->len - 16 > FLATBUFFERS_UOFFSET_MAX) || ref >= B->emit_start) { - check(0, "buffer too large to represent"); - return 0; - } - if (B->emit(B->emit_context, iov->iov, iov->count, ref, iov->len)) { - check(0, "emitter rejected buffer content"); - return 0; - } - return B->emit_start = ref; -} - -static inline flatcc_builder_ref_t emit_back(flatcc_builder_t *B, iov_state_t *iov) -{ - flatcc_builder_ref_t ref; - - ref = B->emit_end; - B->emit_end = ref + (flatcc_builder_ref_t)iov->len; - /* - * Similar to emit_front check, but since we only emit vtables and - * padding at the back, we are not concerned with iov->len overflow, - * only total buffer overflow. - * - * With this check, vtable soffset references at table header can - * still overflow in extreme cases, so this must be checked - * separately. - */ - if (B->emit_end < ref) { - check(0, "buffer too large to represent"); - return 0; - } - if (B->emit(B->emit_context, iov->iov, iov->count, ref, iov->len)) { - check(0, "emitter rejected buffer content"); - return 0; - } - /* - * Back references always return ref + 1 because ref == 0 is valid and - * should not be mistaken for error. vtables understand this. - */ - return ref + 1; -} - -/* If nested we cannot pad the end of the buffer without moving the entire buffer, so we don't. */ -static int align_buffer_end(flatcc_builder_t *B, uint16_t *align, uint16_t block_align, int is_nested) -{ - size_t end_pad; - iov_state_t iov; - - block_align = block_align ? block_align : B->block_align ? B->block_align : 1; - get_min_align(align, field_size); - get_min_align(align, block_align); - /* Pad end of buffer to multiple. */ - if (!is_nested) { - end_pad = back_pad(B, *align); - if (end_pad) { - init_iov(); - push_iov(_pad, end_pad); - if (0 == emit_back(B, &iov)) { - check(0, "emitter rejected buffer content"); - return -1; - } - } - } - return 0; -} - -flatcc_builder_ref_t flatcc_builder_embed_buffer(flatcc_builder_t *B, - uint16_t block_align, - const void *data, size_t size, uint16_t align, flatcc_builder_buffer_flags_t flags) -{ - uoffset_t size_field, pad; - iov_state_t iov; - int with_size = (flags & flatcc_builder_with_size) != 0; - - if (align_buffer_end(B, &align, block_align, !is_top_buffer(B))) { - return 0; - } - pad = front_pad(B, (uoffset_t)(size + (with_size ? field_size : 0)), align); - write_uoffset(&size_field, (uoffset_t)size + pad); - init_iov(); - /* Add ubyte vector size header if nested buffer. */ - push_iov_cond(&size_field, field_size, !is_top_buffer(B)); - push_iov(data, size); - push_iov(_pad, pad); - return emit_front(B, &iov); -} - -flatcc_builder_ref_t flatcc_builder_create_buffer(flatcc_builder_t *B, - const char identifier[identifier_size], uint16_t block_align, - flatcc_builder_ref_t object_ref, uint16_t align, flatcc_builder_buffer_flags_t flags) -{ - flatcc_builder_ref_t buffer_ref; - uoffset_t header_pad, id_size = 0; - uoffset_t object_offset, buffer_size, buffer_base; - iov_state_t iov; - flatcc_builder_identifier_t id_out = 0; - int is_nested = (flags & flatcc_builder_is_nested) != 0; - int with_size = (flags & flatcc_builder_with_size) != 0; - - if (align_buffer_end(B, &align, block_align, is_nested)) { - return 0; - } - set_min_align(B, align); - if (identifier) { - FLATCC_ASSERT(sizeof(flatcc_builder_identifier_t) == identifier_size); - FLATCC_ASSERT(sizeof(flatcc_builder_identifier_t) == field_size); - memcpy(&id_out, identifier, identifier_size); - id_out = __flatbuffers_thash_read_from_le(&id_out); - write_identifier(&id_out, id_out); - } - id_size = id_out ? identifier_size : 0; - header_pad = front_pad(B, field_size + id_size + (uoffset_t)(with_size ? field_size : 0), align); - init_iov(); - /* ubyte vectors size field wrapping nested buffer. */ - push_iov_cond(&buffer_size, field_size, is_nested || with_size); - push_iov(&object_offset, field_size); - /* Identifiers are not always present in buffer. */ - push_iov(&id_out, id_size); - push_iov(_pad, header_pad); - buffer_base = (uoffset_t)B->emit_start - (uoffset_t)iov.len + (uoffset_t)((is_nested || with_size) ? field_size : 0); - if (is_nested) { - write_uoffset(&buffer_size, (uoffset_t)B->buffer_mark - buffer_base); - } else { - /* Also include clustered vtables. */ - write_uoffset(&buffer_size, (uoffset_t)B->emit_end - buffer_base); - } - write_uoffset(&object_offset, (uoffset_t)object_ref - buffer_base); - if (0 == (buffer_ref = emit_front(B, &iov))) { - check(0, "emitter rejected buffer content"); - return 0; - } - return buffer_ref; -} - -flatcc_builder_ref_t flatcc_builder_create_struct(flatcc_builder_t *B, const void *data, size_t size, uint16_t align) -{ - size_t pad; - iov_state_t iov; - - check(align >= 1, "align cannot be 0"); - set_min_align(B, align); - pad = front_pad(B, (uoffset_t)size, align); - init_iov(); - push_iov(data, size); - /* - * Normally structs will already be a multiple of their alignment, - * so this padding will not likely be emitted. - */ - push_iov(_pad, pad); - return emit_front(B, &iov); -} - -int flatcc_builder_start_buffer(flatcc_builder_t *B, - const char identifier[identifier_size], uint16_t block_align, flatcc_builder_buffer_flags_t flags) -{ - /* - * This saves the parent `min_align` in the align field since we - * shouldn't use that for the current buffer. `exit_frame` - * automatically aggregates align up, so it is updated when the - * buffer frame exits. - */ - if (enter_frame(B, B->min_align)) { - return -1; - } - /* B->align now has parent min_align, and child frames will save it. */ - /* Since we allow objects to be created before the buffer at top level, - we need to respect min_align in that case. */ - if (!is_top_buffer(B) || B->min_align == 0) { - B->min_align = 1; - } - /* Save the parent block align, and set proper defaults for this buffer. */ - frame(container.buffer.block_align) = B->block_align; - B->block_align = block_align; - frame(container.buffer.flags = B->buffer_flags); - B->buffer_flags = (uint16_t)flags; - frame(container.buffer.mark) = B->buffer_mark; - frame(container.buffer.nest_id) = B->nest_id; - /* - * End of buffer when nested. Not defined for top-level because we - * here (on only here) permit strings etc. to be created before buffer start and - * because top-level buffer vtables can be clustered. - */ - B->buffer_mark = B->emit_start; - /* Must be 0 before and after entering top-level buffer, and unique otherwise. */ - B->nest_id = B->nest_count++; - frame(container.buffer.identifier) = B->identifier; - set_identifier(identifier); - frame(type) = flatcc_builder_buffer; - return 0; -} - -flatcc_builder_ref_t flatcc_builder_end_buffer(flatcc_builder_t *B, flatcc_builder_ref_t root) -{ - flatcc_builder_ref_t buffer_ref; - flatcc_builder_buffer_flags_t flags; - - flags = (flatcc_builder_buffer_flags_t)B->buffer_flags & flatcc_builder_with_size; - flags |= is_top_buffer(B) ? 0 : flatcc_builder_is_nested; - check(frame(type) == flatcc_builder_buffer, "expected buffer frame"); - set_min_align(B, B->block_align); - if (0 == (buffer_ref = flatcc_builder_create_buffer(B, (void *)&B->identifier, - B->block_align, root, B->min_align, flags))) { - return 0; - } - B->buffer_mark = frame(container.buffer.mark); - B->nest_id = frame(container.buffer.nest_id); - B->identifier = frame(container.buffer.identifier); - B->buffer_flags = frame(container.buffer.flags); - B->block_align = frame(container.buffer.block_align); - - exit_frame(B); - return buffer_ref; -} - -void *flatcc_builder_start_struct(flatcc_builder_t *B, size_t size, uint16_t align) -{ - /* Allocate space for the struct on the ds stack. */ - if (enter_frame(B, align)) { - return 0; - } - frame(type) = flatcc_builder_struct; - refresh_ds(B, data_limit); - return push_ds(B, (uoffset_t)size); -} - -void *flatcc_builder_struct_edit(flatcc_builder_t *B) -{ - return B->ds; -} - -flatcc_builder_ref_t flatcc_builder_end_struct(flatcc_builder_t *B) -{ - flatcc_builder_ref_t object_ref; - - check(frame(type) == flatcc_builder_struct, "expected struct frame"); - if (0 == (object_ref = flatcc_builder_create_struct(B, B->ds, B->ds_offset, B->align))) { - return 0; - } - exit_frame(B); - return object_ref; -} - -static inline int vector_count_add(flatcc_builder_t *B, uoffset_t count, uoffset_t max_count) -{ - uoffset_t n, n1; - n = frame(container.vector.count); - n1 = n + count; - /* - * This prevents elem_size * count from overflowing iff max_vector - * has been set sensible. Without this check we might allocate to - * little on the ds stack and return a buffer the user thinks is - * much larger which of course is bad even though the buffer eventually - * would fail anyway. - */ - check_error(n <= n1 && n1 <= max_count, -1, "vector too large to represent"); - frame(container.vector.count) = n1; - return 0; -} - -void *flatcc_builder_extend_vector(flatcc_builder_t *B, size_t count) -{ - if (vector_count_add(B, (uoffset_t)count, frame(container.vector.max_count))) { - return 0; - } - return push_ds(B, frame(container.vector.elem_size) * (uoffset_t)count); -} - -void *flatcc_builder_vector_push(flatcc_builder_t *B, const void *data) -{ - check(frame(type) == flatcc_builder_vector, "expected vector frame"); - check_error(frame(container.vector.count) <= frame(container.vector.max_count), 0, "vector max count exceeded"); - frame(container.vector.count) += 1; - return push_ds_copy(B, data, frame(container.vector.elem_size)); -} - -void *flatcc_builder_append_vector(flatcc_builder_t *B, const void *data, size_t count) -{ - check(frame(type) == flatcc_builder_vector, "expected vector frame"); - if (vector_count_add(B, (uoffset_t)count, frame(container.vector.max_count))) { - return 0; - } - return push_ds_copy(B, data, frame(container.vector.elem_size) * (uoffset_t)count); -} - -flatcc_builder_ref_t *flatcc_builder_extend_offset_vector(flatcc_builder_t *B, size_t count) -{ - if (vector_count_add(B, (uoffset_t)count, max_offset_count)) { - return 0; - } - return push_ds(B, (uoffset_t)(field_size * count)); -} - -flatcc_builder_ref_t *flatcc_builder_offset_vector_push(flatcc_builder_t *B, flatcc_builder_ref_t ref) -{ - flatcc_builder_ref_t *p; - - check(frame(type) == flatcc_builder_offset_vector, "expected offset vector frame"); - if (frame(container.vector.count) == max_offset_count) { - return 0; - } - frame(container.vector.count) += 1; - if (0 == (p = push_ds(B, field_size))) { - return 0; - } - *p = ref; - return p; -} - -flatcc_builder_ref_t *flatcc_builder_append_offset_vector(flatcc_builder_t *B, const flatcc_builder_ref_t *refs, size_t count) -{ - check(frame(type) == flatcc_builder_offset_vector, "expected offset vector frame"); - if (vector_count_add(B, (uoffset_t)count, max_offset_count)) { - return 0; - } - return push_ds_copy(B, refs, (uoffset_t)(field_size * count)); -} - -char *flatcc_builder_extend_string(flatcc_builder_t *B, size_t len) -{ - check(frame(type) == flatcc_builder_string, "expected string frame"); - if (vector_count_add(B, (uoffset_t)len, max_string_len)) { - return 0; - } - return push_ds(B, (uoffset_t)len); -} - -char *flatcc_builder_append_string(flatcc_builder_t *B, const char *s, size_t len) -{ - check(frame(type) == flatcc_builder_string, "expected string frame"); - if (vector_count_add(B, (uoffset_t)len, max_string_len)) { - return 0; - } - return push_ds_copy(B, s, (uoffset_t)len); -} - -char *flatcc_builder_append_string_str(flatcc_builder_t *B, const char *s) -{ - return flatcc_builder_append_string(B, s, strlen(s)); -} - -char *flatcc_builder_append_string_strn(flatcc_builder_t *B, const char *s, size_t max_len) -{ - return flatcc_builder_append_string(B, s, strnlen(s, max_len)); -} - -int flatcc_builder_truncate_vector(flatcc_builder_t *B, size_t count) -{ - check(frame(type) == flatcc_builder_vector, "expected vector frame"); - check_error(frame(container.vector.count) >= count, -1, "cannot truncate vector past empty"); - frame(container.vector.count) -= (uoffset_t)count; - unpush_ds(B, frame(container.vector.elem_size) * (uoffset_t)count); - return 0; -} - -int flatcc_builder_truncate_offset_vector(flatcc_builder_t *B, size_t count) -{ - check(frame(type) == flatcc_builder_offset_vector, "expected offset vector frame"); - check_error(frame(container.vector.count) >= (uoffset_t)count, -1, "cannot truncate vector past empty"); - frame(container.vector.count) -= (uoffset_t)count; - unpush_ds(B, frame(container.vector.elem_size) * (uoffset_t)count); - return 0; -} - -int flatcc_builder_truncate_string(flatcc_builder_t *B, size_t len) -{ - check(frame(type) == flatcc_builder_string, "expected string frame"); - check_error(frame(container.vector.count) >= len, -1, "cannot truncate string past empty"); - frame(container.vector.count) -= (uoffset_t)len; - unpush_ds(B, (uoffset_t)len); - return 0; -} - -int flatcc_builder_start_vector(flatcc_builder_t *B, size_t elem_size, uint16_t align, size_t max_count) -{ - get_min_align(&align, field_size); - if (enter_frame(B, align)) { - return -1; - } - frame(container.vector.elem_size) = (uoffset_t)elem_size; - frame(container.vector.count) = 0; - frame(container.vector.max_count) = (uoffset_t)max_count; - frame(type) = flatcc_builder_vector; - refresh_ds(B, data_limit); - return 0; -} - -int flatcc_builder_start_offset_vector(flatcc_builder_t *B) -{ - if (enter_frame(B, field_size)) { - return -1; - } - frame(container.vector.elem_size) = field_size; - frame(container.vector.count) = 0; - frame(type) = flatcc_builder_offset_vector; - refresh_ds(B, data_limit); - return 0; -} - -flatcc_builder_ref_t flatcc_builder_create_offset_vector(flatcc_builder_t *B, - const flatcc_builder_ref_t *vec, size_t count) -{ - flatcc_builder_ref_t *_vec; - - if (flatcc_builder_start_offset_vector(B)) { - return 0; - } - if (!(_vec = flatcc_builder_extend_offset_vector(B, count))) { - return 0; - } - memcpy(_vec, vec, count * field_size); - return flatcc_builder_end_offset_vector(B); -} - -int flatcc_builder_start_string(flatcc_builder_t *B) -{ - if (enter_frame(B, 1)) { - return -1; - } - frame(container.vector.elem_size) = 1; - frame(container.vector.count) = 0; - frame(type) = flatcc_builder_string; - refresh_ds(B, data_limit); - return 0; -} - -int flatcc_builder_reserve_table(flatcc_builder_t *B, int count) -{ - check(count >= 0, "cannot reserve negative count"); - return reserve_fields(B, count); -} - -int flatcc_builder_start_table(flatcc_builder_t *B, int count) -{ - if (enter_frame(B, field_size)) { - return -1; - } - frame(container.table.vs_end) = vs_offset(B->vs); - frame(container.table.pl_end) = pl_offset(B->pl); - frame(container.table.vt_hash) = B->vt_hash; - frame(container.table.id_end) = B->id_end; - B->vt_hash = 0; - FLATCC_BUILDER_INIT_VT_HASH(B->vt_hash); - B->id_end = 0; - frame(type) = flatcc_builder_table; - if (reserve_fields(B, count)) { - return -1; - } - refresh_ds(B, table_limit); - return 0; -} - -flatcc_builder_vt_ref_t flatcc_builder_create_vtable(flatcc_builder_t *B, - const voffset_t *vt, voffset_t vt_size) -{ - flatcc_builder_vt_ref_t vt_ref; - iov_state_t iov; - voffset_t *vt_; - size_t i; - - /* - * Only top-level buffer can cluster vtables because only it can - * extend beyond the end. - * - * We write the vtable after the referencing table to maintain - * the construction invariant that any offset reference has - * valid emitted data at a higher address, and also that any - * issued negative emit address represents an offset reference - * to some flatbuffer object or vector (or possibly a root - * struct). - * - * The vt_ref is stored as the reference + 1 to avoid having 0 as a - * valid reference (which usally means error). It also idententifies - * vtable references as the only uneven references, and the only - * references that can be used multiple times in the same buffer. - * - * We do the vtable conversion here so cached vtables can be built - * hashed and compared more efficiently, and so end users with - * direct vtable construction don't have to worry about endianness. - * This also ensures the hash function works the same wrt. - * collision frequency. - */ - - if (!flatbuffers_is_native_pe()) { - /* Make space in vtable cache for temporary endian conversion. */ - if (!(vt_ = reserve_buffer(B, flatcc_builder_alloc_vb, B->vb_end, vt_size, 0))) { - return 0; - } - for (i = 0; i < vt_size / sizeof(voffset_t); ++i) { - write_voffset(&vt_[i], vt[i]); - } - vt = vt_; - /* We don't need to free the reservation since we don't advance any base pointer. */ - } - - init_iov(); - push_iov(vt, vt_size); - if (is_top_buffer(B) && !B->disable_vt_clustering) { - /* Note that `emit_back` already returns ref + 1 as we require for vtables. */ - if (0 == (vt_ref = emit_back(B, &iov))) { - return 0; - } - } else { - if (0 == (vt_ref = emit_front(B, &iov))) { - return 0; - } - /* - * We don't have a valid 0 ref here, but to be consistent with - * clustered vtables we offset by one. This cannot be zero - * either. - */ - vt_ref += 1; - } - return vt_ref; -} - -flatcc_builder_vt_ref_t flatcc_builder_create_cached_vtable(flatcc_builder_t *B, - const voffset_t *vt, voffset_t vt_size, uint32_t vt_hash) -{ - vtable_descriptor_t *vd, *vd2; - uoffset_t *pvd, *pvd_head; - uoffset_t next; - voffset_t *vt_; - - /* This just gets the hash table slot, we still have to inspect it. */ - if (!(pvd_head = lookup_ht(B, vt_hash))) { - return 0; - } - pvd = pvd_head; - next = *pvd; - /* Tracks if there already is a cached copy. */ - vd2 = 0; - while (next) { - vd = vd_ptr(next); - vt_ = vb_ptr(vd->vb_start); - if (vt_[0] != vt_size || 0 != memcmp(vt, vt_, vt_size)) { - pvd = &vd->next; - next = vd->next; - continue; - } - /* Can't share emitted vtables between buffers, */ - if (vd->nest_id != B->nest_id) { - /* but we don't have to resubmit to cache. */ - vd2 = vd; - /* See if there is a better match. */ - pvd = &vd->next; - next = vd->next; - continue; - } - /* Move to front hash strategy. */ - if (pvd != pvd_head) { - *pvd = vd->next; - vd->next = *pvd_head; - *pvd_head = next; - } - /* vtable exists and has been emitted within current buffer. */ - return vd->vt_ref; - } - /* Allocate new descriptor. */ - if (!(vd = reserve_buffer(B, flatcc_builder_alloc_vd, B->vd_end, sizeof(vtable_descriptor_t), 0))) { - return 0; - } - next = B->vd_end; - B->vd_end += (uoffset_t)sizeof(vtable_descriptor_t); - - /* Identify the buffer this vtable descriptor belongs to. */ - vd->nest_id = B->nest_id; - - /* Move to front hash strategy. */ - vd->next = *pvd_head; - *pvd_head = next; - if (0 == (vd->vt_ref = flatcc_builder_create_vtable(B, vt, vt_size))) { - return 0; - } - if (vd2) { - /* Reuse cached copy. */ - vd->vb_start = vd2->vb_start; - } else { - if (B->vb_flush_limit && B->vb_flush_limit < B->vb_end + vt_size) { - flatcc_builder_flush_vtable_cache(B); - } else { - /* Make space in vtable cache. */ - if (!(vt_ = reserve_buffer(B, flatcc_builder_alloc_vb, B->vb_end, vt_size, 0))) { - return -1; - } - vd->vb_start = B->vb_end; - B->vb_end += vt_size; - memcpy(vt_, vt, vt_size); - } - } - return vd->vt_ref; -} - -flatcc_builder_ref_t flatcc_builder_create_table(flatcc_builder_t *B, const void *data, size_t size, uint16_t align, - flatbuffers_voffset_t *offsets, int offset_count, flatcc_builder_vt_ref_t vt_ref) -{ - int i; - uoffset_t pad, vt_offset, vt_offset_field, vt_base, base, offset, *offset_field; - iov_state_t iov; - - check(offset_count >= 0, "expected non-negative offset_count"); - /* - * vtable references are offset by 1 to avoid confusion with - * 0 as an error reference. It also uniquely identifies them - * as vtables being the only uneven reference type. - */ - check(vt_ref & 1, "invalid vtable referenc"); - get_min_align(&align, field_size); - set_min_align(B, align); - /* Alignment is calculated for the first element, not the header. */ - pad = front_pad(B, (uoffset_t)size, align); - base = (uoffset_t)B->emit_start - (uoffset_t)(pad + size + field_size); - /* Adjust by 1 to get unencoded vtable reference. */ - vt_base = (uoffset_t)(vt_ref - 1); - vt_offset = base - vt_base; - /* Avoid overflow. */ - if (base - vt_offset != vt_base) { - return -1; - } - /* Protocol endian encoding. */ - write_uoffset(&vt_offset_field, vt_offset); - for (i = 0; i < offset_count; ++i) { - offset_field = (uoffset_t *)((size_t)data + offsets[i]); - offset = *offset_field - base - offsets[i] - (uoffset_t)field_size; - write_uoffset(offset_field, offset); - } - init_iov(); - push_iov(&vt_offset_field, field_size); - push_iov(data, size); - push_iov(_pad, pad); - return emit_front(B, &iov); -} - -int flatcc_builder_check_required_field(flatcc_builder_t *B, flatbuffers_voffset_t id) -{ - check(frame(type) == flatcc_builder_table, "expected table frame"); - - return id < B->id_end && B->vs[id] != 0; -} - -int flatcc_builder_check_union_field(flatcc_builder_t *B, flatbuffers_voffset_t id) -{ - check(frame(type) == flatcc_builder_table, "expected table frame"); - - if (id == 0 || id >= B->id_end) { - return 0; - } - if (B->vs[id - 1] == 0) { - return B->vs[id] == 0; - } - if (*(uint8_t *)(B->ds + B->vs[id - 1])) { - return B->vs[id] != 0; - } - return B->vs[id] == 0; -} - -int flatcc_builder_check_required(flatcc_builder_t *B, const flatbuffers_voffset_t *required, int count) -{ - int i; - - check(frame(type) == flatcc_builder_table, "expected table frame"); - - if (B->id_end < count) { - return 0; - } - for (i = 0; i < count; ++i) { - if (B->vs[required[i]] == 0) { - return 0; - } - } - return 1; -} - -flatcc_builder_ref_t flatcc_builder_end_table(flatcc_builder_t *B) -{ - voffset_t *vt, vt_size; - flatcc_builder_ref_t table_ref, vt_ref; - int pl_count; - voffset_t *pl; - size_t tsize; - - check(frame(type) == flatcc_builder_table, "expected table frame"); - - /* We have `ds_limit`, so we should not have to check for overflow here. */ - - vt = B->vs - 2; - vt_size = (voffset_t)(sizeof(voffset_t) * (B->id_end + 2u)); - /* Update vtable header fields, first vtable size, then object table size. */ - vt[0] = vt_size; - /* - * The `ds` buffer is always at least `field_size` aligned but excludes the - * initial vtable offset field. Therefore `field_size` is added here - * to the total table size in the vtable. - */ - tsize = (size_t)(B->ds_offset + field_size); - /* - * Tables are limited to 64K in standard FlatBuffers format due to the voffset - * 16 bit size, but we must also be able to store the table size, so the - * table payload has to be slightly less than that. - */ - check(tsize <= FLATBUFFERS_VOFFSET_MAX, "table too large"); - vt[1] = (voffset_t)tsize; - FLATCC_BUILDER_UPDATE_VT_HASH(B->vt_hash, (uint32_t)vt[0], (uint32_t)vt[1]); - /* Find already emitted vtable, or emit a new one. */ - if (!(vt_ref = flatcc_builder_create_cached_vtable(B, vt, vt_size, B->vt_hash))) { - return 0; - } - /* Clear vs stack so it is ready for the next vtable (ds stack is cleared by exit frame). */ - memset(vt, 0, vt_size); - - pl = pl_ptr(frame(container.table.pl_end)); - pl_count = (int)(B->pl - pl); - if (0 == (table_ref = flatcc_builder_create_table(B, B->ds, B->ds_offset, B->align, pl, pl_count, vt_ref))) { - return 0; - } - B->vt_hash = frame(container.table.vt_hash); - B->id_end = frame(container.table.id_end); - B->vs = vs_ptr(frame(container.table.vs_end)); - B->pl = pl_ptr(frame(container.table.pl_end)); - exit_frame(B); - return table_ref; -} - -flatcc_builder_ref_t flatcc_builder_create_vector(flatcc_builder_t *B, - const void *data, size_t count, size_t elem_size, uint16_t align, size_t max_count) -{ - /* - * Note: it is important that vec_size is uoffset not size_t - * in case sizeof(uoffset_t) > sizeof(size_t) because max_count is - * defined in terms of uoffset_t representation size, and also - * because we risk accepting too large a vector even if max_count is - * not violated. - */ - uoffset_t vec_size, vec_pad, length_prefix; - iov_state_t iov; - - check_error(count <= max_count, 0, "vector max_count violated"); - get_min_align(&align, field_size); - set_min_align(B, align); - vec_size = (uoffset_t)count * (uoffset_t)elem_size; - /* - * That can happen on 32 bit systems when uoffset_t is defined as 64-bit. - * `emit_front/back` captures overflow, but not if our size type wraps first. - */ -#if FLATBUFFERS_UOFFSET_MAX > SIZE_MAX - check_error(vec_size < SIZE_MAX, 0, "vector larger than address space"); -#endif - write_uoffset(&length_prefix, (uoffset_t)count); - /* Alignment is calculated for the first element, not the header. */ - vec_pad = front_pad(B, vec_size, align); - init_iov(); - push_iov(&length_prefix, field_size); - push_iov(data, vec_size); - push_iov(_pad, vec_pad); - return emit_front(B, &iov); -} - -/* - * Note: FlatBuffers official documentation states that the size field of a - * vector is a 32-bit element count. It is not quite clear if the - * intention is to have the size field be of type uoffset_t since tables - * also have a uoffset_t sized header, or if the vector size should - * remain unchanged if uoffset is changed to 16- or 64-bits - * respectively. Since it makes most sense to have a vector compatible - * with the addressable space, we choose to use uoffset_t as size field, - * which remains compatible with the default 32-bit version of uoffset_t. - */ -flatcc_builder_ref_t flatcc_builder_end_vector(flatcc_builder_t *B) -{ - flatcc_builder_ref_t vector_ref; - - check(frame(type) == flatcc_builder_vector, "expected vector frame"); - - if (0 == (vector_ref = flatcc_builder_create_vector(B, B->ds, - frame(container.vector.count), frame(container.vector.elem_size), - B->align, frame(container.vector.max_count)))) { - return 0; - } - exit_frame(B); - return vector_ref; -} - -size_t flatcc_builder_vector_count(flatcc_builder_t *B) -{ - return frame(container.vector.count); -} - -void *flatcc_builder_vector_edit(flatcc_builder_t *B) -{ - return B->ds; -} - -/* This function destroys the source content but avoids stack allocation. */ -static flatcc_builder_ref_t _create_offset_vector_direct(flatcc_builder_t *B, - flatcc_builder_ref_t *vec, size_t count, const utype_t *types) -{ - uoffset_t vec_size, vec_pad; - uoffset_t length_prefix, offset; - uoffset_t i; - soffset_t base; - iov_state_t iov; - - if ((uoffset_t)count > max_offset_count) { - return 0; - } - set_min_align(B, field_size); - vec_size = (uoffset_t)(count * field_size); - write_uoffset(&length_prefix, (uoffset_t)count); - /* Alignment is calculated for the first element, not the header. */ - vec_pad = front_pad(B, vec_size, field_size); - init_iov(); - push_iov(&length_prefix, field_size); - push_iov(vec, vec_size); - push_iov(_pad, vec_pad); - base = B->emit_start - (soffset_t)iov.len; - for (i = 0; i < (uoffset_t)count; ++i) { - /* - * 0 is either end of buffer, start of vtables, or start of - * buffer depending on the direction in which the buffer is - * built. None of these can create a valid 0 reference but it - * is easy to create by mistake when manually building offset - * vectors. - * - * Unions do permit nulls, but only when the type is NONE. - */ - if (vec[i] != 0) { - offset = (uoffset_t) - (vec[i] - base - (soffset_t)(i * field_size) - (soffset_t)field_size); - write_uoffset(&vec[i], offset); - if (types) { - check(types[i] != 0, "union vector cannot have non-null element with type NONE"); - } - } else { - if (types) { - check(types[i] == 0, "union vector cannot have null element without type NONE"); - } else { - check(0, "offset vector cannot have null element"); - } - } - } - return emit_front(B, &iov); -} - -flatcc_builder_ref_t flatcc_builder_create_offset_vector_direct(flatcc_builder_t *B, - flatcc_builder_ref_t *vec, size_t count) -{ - return _create_offset_vector_direct(B, vec, count, 0); -} - -flatcc_builder_ref_t flatcc_builder_end_offset_vector(flatcc_builder_t *B) -{ - flatcc_builder_ref_t vector_ref; - - check(frame(type) == flatcc_builder_offset_vector, "expected offset vector frame"); - if (0 == (vector_ref = flatcc_builder_create_offset_vector_direct(B, - (flatcc_builder_ref_t *)B->ds, frame(container.vector.count)))) { - return 0; - } - exit_frame(B); - return vector_ref; -} - -flatcc_builder_ref_t flatcc_builder_end_offset_vector_for_unions(flatcc_builder_t *B, const utype_t *types) -{ - flatcc_builder_ref_t vector_ref; - - check(frame(type) == flatcc_builder_offset_vector, "expected offset vector frame"); - if (0 == (vector_ref = _create_offset_vector_direct(B, - (flatcc_builder_ref_t *)B->ds, frame(container.vector.count), types))) { - return 0; - } - exit_frame(B); - return vector_ref; -} - -void *flatcc_builder_offset_vector_edit(flatcc_builder_t *B) -{ - return B->ds; -} - -size_t flatcc_builder_offset_vector_count(flatcc_builder_t *B) -{ - return frame(container.vector.count); -} - -int flatcc_builder_table_add_union(flatcc_builder_t *B, int id, - flatcc_builder_union_ref_t uref) -{ - flatcc_builder_ref_t *pref; - flatcc_builder_utype_t *putype; - - check(frame(type) == flatcc_builder_table, "expected table frame"); - check_error(uref.type != 0 || uref.value == 0, -1, "expected null value for type NONE"); - if (uref.value != 0) { - pref = flatcc_builder_table_add_offset(B, id); - check_error(pref != 0, -1, "unable to add union value"); - *pref = uref.value; - } - putype = flatcc_builder_table_add(B, id - 1, utype_size, utype_size); - check_error(putype != 0, -1, "unable to add union type"); - write_utype(putype, uref.type); - return 0; -} - -int flatcc_builder_table_add_union_vector(flatcc_builder_t *B, int id, - flatcc_builder_union_vec_ref_t uvref) -{ - flatcc_builder_ref_t *pref; - - check(frame(type) == flatcc_builder_table, "expected table frame"); - check_error((uvref.type == 0) == (uvref.value == 0), -1, "expected both type and value vector, or neither"); - if (uvref.type != 0) { - pref = flatcc_builder_table_add_offset(B, id - 1); - check_error(pref != 0, -1, "unable to add union member"); - *pref = uvref.type; - - pref = flatcc_builder_table_add_offset(B, id); - check_error(pref != 0, -1, "unable to add union member"); - *pref = uvref.value; - } - return 0; -} - -flatcc_builder_union_vec_ref_t flatcc_builder_create_union_vector(flatcc_builder_t *B, - const flatcc_builder_union_ref_t *urefs, size_t count) -{ - flatcc_builder_union_vec_ref_t uvref = { 0, 0 }; - flatcc_builder_utype_t *types; - flatcc_builder_ref_t *refs; - size_t i; - - if (flatcc_builder_start_offset_vector(B)) { - return uvref; - } - if (0 == flatcc_builder_extend_offset_vector(B, count)) { - return uvref; - } - if (0 == (types = push_ds(B, (uoffset_t)(utype_size * count)))) { - return uvref; - } - - /* Safe even if push_ds caused stack reallocation. */ - refs = flatcc_builder_offset_vector_edit(B); - - for (i = 0; i < count; ++i) { - types[i] = urefs[i].type; - refs[i] = urefs[i].value; - } - uvref = flatcc_builder_create_union_vector_direct(B, - types, refs, count); - /* No need to clean up after out temporary types vector. */ - exit_frame(B); - return uvref; -} - -flatcc_builder_union_vec_ref_t flatcc_builder_create_union_vector_direct(flatcc_builder_t *B, - const flatcc_builder_utype_t *types, flatcc_builder_ref_t *data, size_t count) -{ - flatcc_builder_union_vec_ref_t uvref = { 0, 0 }; - - if (0 == (uvref.value = _create_offset_vector_direct(B, data, count, types))) { - return uvref; - } - if (0 == (uvref.type = flatcc_builder_create_type_vector(B, types, count))) { - return uvref; - } - return uvref; -} - -flatcc_builder_ref_t flatcc_builder_create_type_vector(flatcc_builder_t *B, - const flatcc_builder_utype_t *types, size_t count) -{ - return flatcc_builder_create_vector(B, types, count, - utype_size, utype_size, max_utype_count); -} - -int flatcc_builder_start_union_vector(flatcc_builder_t *B) -{ - if (enter_frame(B, field_size)) { - return -1; - } - frame(container.vector.elem_size) = union_size; - frame(container.vector.count) = 0; - frame(type) = flatcc_builder_union_vector; - refresh_ds(B, data_limit); - return 0; -} - -flatcc_builder_union_vec_ref_t flatcc_builder_end_union_vector(flatcc_builder_t *B) -{ - flatcc_builder_union_vec_ref_t uvref = { 0, 0 }; - flatcc_builder_utype_t *types; - flatcc_builder_union_ref_t *urefs; - flatcc_builder_ref_t *refs; - size_t i, count; - - check(frame(type) == flatcc_builder_union_vector, "expected union vector frame"); - - /* - * We could split the union vector in-place, but then we would have - * to deal with strict pointer aliasing rules which is not worthwhile - * so we create a new offset and type vector on the stack. - * - * We assume the stack is sufficiently aligned as is. - */ - count = flatcc_builder_union_vector_count(B); - if (0 == (refs = push_ds(B, (uoffset_t)(count * (utype_size + field_size))))) { - return uvref; - } - types = (flatcc_builder_utype_t *)(refs + count); - - /* Safe even if push_ds caused stack reallocation. */ - urefs = flatcc_builder_union_vector_edit(B); - - for (i = 0; i < count; ++i) { - types[i] = urefs[i].type; - refs[i] = urefs[i].value; - } - uvref = flatcc_builder_create_union_vector_direct(B, types, refs, count); - /* No need to clean up after out temporary types vector. */ - exit_frame(B); - return uvref; -} - -void *flatcc_builder_union_vector_edit(flatcc_builder_t *B) -{ - return B->ds; -} - -size_t flatcc_builder_union_vector_count(flatcc_builder_t *B) -{ - return frame(container.vector.count); -} - -flatcc_builder_union_ref_t *flatcc_builder_extend_union_vector(flatcc_builder_t *B, size_t count) -{ - if (vector_count_add(B, (uoffset_t)count, max_union_count)) { - return 0; - } - return push_ds(B, (uoffset_t)(union_size * count)); -} - -int flatcc_builder_truncate_union_vector(flatcc_builder_t *B, size_t count) -{ - check(frame(type) == flatcc_builder_union_vector, "expected union vector frame"); - check_error(frame(container.vector.count) >= (uoffset_t)count, -1, "cannot truncate vector past empty"); - frame(container.vector.count) -= (uoffset_t)count; - unpush_ds(B, frame(container.vector.elem_size) * (uoffset_t)count); - return 0; -} - -flatcc_builder_union_ref_t *flatcc_builder_union_vector_push(flatcc_builder_t *B, - flatcc_builder_union_ref_t uref) -{ - flatcc_builder_union_ref_t *p; - - check(frame(type) == flatcc_builder_union_vector, "expected union vector frame"); - if (frame(container.vector.count) == max_union_count) { - return 0; - } - frame(container.vector.count) += 1; - if (0 == (p = push_ds(B, union_size))) { - return 0; - } - *p = uref; - return p; -} - -flatcc_builder_union_ref_t *flatcc_builder_append_union_vector(flatcc_builder_t *B, - const flatcc_builder_union_ref_t *urefs, size_t count) -{ - check(frame(type) == flatcc_builder_union_vector, "expected union vector frame"); - if (vector_count_add(B, (uoffset_t)count, max_union_count)) { - return 0; - } - return push_ds_copy(B, urefs, (uoffset_t)(union_size * count)); -} - -flatcc_builder_ref_t flatcc_builder_create_string(flatcc_builder_t *B, const char *s, size_t len) -{ - uoffset_t s_pad; - uoffset_t length_prefix; - iov_state_t iov; - - if (len > max_string_len) { - return 0; - } - write_uoffset(&length_prefix, (uoffset_t)len); - /* Add 1 for zero termination. */ - s_pad = front_pad(B, (uoffset_t)len + 1, field_size) + 1; - init_iov(); - push_iov(&length_prefix, field_size); - push_iov(s, len); - push_iov(_pad, s_pad); - return emit_front(B, &iov); -} - -flatcc_builder_ref_t flatcc_builder_create_string_str(flatcc_builder_t *B, const char *s) -{ - return flatcc_builder_create_string(B, s, strlen(s)); -} - -flatcc_builder_ref_t flatcc_builder_create_string_strn(flatcc_builder_t *B, const char *s, size_t max_len) -{ - return flatcc_builder_create_string(B, s, strnlen(s, max_len)); -} - -flatcc_builder_ref_t flatcc_builder_end_string(flatcc_builder_t *B) -{ - flatcc_builder_ref_t string_ref; - - check(frame(type) == flatcc_builder_string, "expected string frame"); - FLATCC_ASSERT(frame(container.vector.count) == B->ds_offset); - if (0 == (string_ref = flatcc_builder_create_string(B, - (const char *)B->ds, B->ds_offset))) { - return 0; - } - exit_frame(B); - return string_ref; -} - -char *flatcc_builder_string_edit(flatcc_builder_t *B) -{ - return (char *)B->ds; -} - -size_t flatcc_builder_string_len(flatcc_builder_t *B) -{ - return frame(container.vector.count); -} - -void *flatcc_builder_table_add(flatcc_builder_t *B, int id, size_t size, uint16_t align) -{ - /* - * We align the offset relative to the first table field, excluding - * the header holding the vtable reference. On the stack, `ds_first` - * is aligned to 8 bytes thanks to the `enter_frame` logic, and this - * provides a safe way to update the fields on the stack, but here - * we are concerned with the target buffer alignment. - * - * We could also have aligned relative to the end of the table which - * would allow us to emit each field immediately, but it would be a - * confusing user experience wrt. field ordering, and it would add - * more variability to vtable layouts, thus reducing reuse, and - * frequent emissions to external emitter interface would be - * sub-optimal. Also, with that appoach, the vtable offsets would - * have to be adjusted at table end. - * - * As we have it, each emit occur at table end, vector end, string - * end, or buffer end, which might be helpful to various backend - * processors. - */ - check(frame(type) == flatcc_builder_table, "expected table frame"); - check(id >= 0 && id <= (int)FLATBUFFERS_ID_MAX, "table id out of range"); - if (align > B->align) { - B->align = align; - } -#if FLATCC_BUILDER_ALLOW_REPEAT_TABLE_ADD - if (B->vs[id] != 0) { - return B->ds + B->vs[id] - field_size; - } -#else - if (B->vs[id] != 0) { - check(0, "table field already set"); - return 0; - } -#endif - FLATCC_BUILDER_UPDATE_VT_HASH(B->vt_hash, (uint32_t)id, (uint32_t)size); - return push_ds_field(B, (uoffset_t)size, align, (voffset_t)id); -} - -void *flatcc_builder_table_edit(flatcc_builder_t *B, size_t size) -{ - check(frame(type) == flatcc_builder_table, "expected table frame"); - - return B->ds + B->ds_offset - size; -} - -void *flatcc_builder_table_add_copy(flatcc_builder_t *B, int id, const void *data, size_t size, uint16_t align) -{ - void *p; - - if ((p = flatcc_builder_table_add(B, id, size, align))) { - memcpy(p, data, size); - } - return p; -} - -flatcc_builder_ref_t *flatcc_builder_table_add_offset(flatcc_builder_t *B, int id) -{ - check(frame(type) == flatcc_builder_table, "expected table frame"); - check(id >= 0 && id <= (int)FLATBUFFERS_ID_MAX, "table id out of range"); -#if FLATCC_BUILDER_ALLOW_REPEAT_TABLE_ADD - if (B->vs[id] != 0) { - return B->ds + B->vs[id] - field_size; - } -#else - if (B->vs[id] != 0) { - check(0, "table field already set"); - return 0; - } -#endif - FLATCC_BUILDER_UPDATE_VT_HASH(B->vt_hash, (uint32_t)id, (uint32_t)field_size); - return push_ds_offset_field(B, (voffset_t)id); -} - -uint16_t flatcc_builder_push_buffer_alignment(flatcc_builder_t *B) -{ - uint16_t old_min_align = B->min_align; - - B->min_align = field_size; - return old_min_align; -} - -void flatcc_builder_pop_buffer_alignment(flatcc_builder_t *B, uint16_t pushed_align) -{ - set_min_align(B, pushed_align); -} - -uint16_t flatcc_builder_get_buffer_alignment(flatcc_builder_t *B) -{ - return B->min_align; -} - -void flatcc_builder_set_vtable_clustering(flatcc_builder_t *B, int enable) -{ - /* Inverted because we zero all memory in B on init. */ - B->disable_vt_clustering = !enable; -} - -void flatcc_builder_set_block_align(flatcc_builder_t *B, uint16_t align) -{ - B->block_align = align; -} - -int flatcc_builder_get_level(flatcc_builder_t *B) -{ - return B->level; -} - -void flatcc_builder_set_max_level(flatcc_builder_t *B, int max_level) -{ - B->max_level = max_level; - if (B->limit_level < B->max_level) { - B->limit_level = B->max_level; - } -} - -size_t flatcc_builder_get_buffer_size(flatcc_builder_t *B) -{ - return (size_t)(B->emit_end - B->emit_start); -} - -flatcc_builder_ref_t flatcc_builder_get_buffer_start(flatcc_builder_t *B) -{ - return B->emit_start; -} - -flatcc_builder_ref_t flatcc_builder_get_buffer_end(flatcc_builder_t *B) -{ - return B->emit_end; -} - -void flatcc_builder_set_vtable_cache_limit(flatcc_builder_t *B, size_t size) -{ - B->vb_flush_limit = size; -} - -void flatcc_builder_set_identifier(flatcc_builder_t *B, const char identifier[identifier_size]) -{ - set_identifier(identifier); -} - -enum flatcc_builder_type flatcc_builder_get_type(flatcc_builder_t *B) -{ - return B->frame ? frame(type) : flatcc_builder_empty; -} - -enum flatcc_builder_type flatcc_builder_get_type_at(flatcc_builder_t *B, int level) -{ - if (level < 1 || level > B->level) { - return flatcc_builder_empty; - } - return B->frame[level - B->level].type; -} - -void *flatcc_builder_get_direct_buffer(flatcc_builder_t *B, size_t *size_out) -{ - if (B->is_default_emitter) { - return flatcc_emitter_get_direct_buffer(&B->default_emit_context, size_out); - } else { - if (size_out) { - *size_out = 0; - } - } - return 0; -} - -void *flatcc_builder_copy_buffer(flatcc_builder_t *B, void *buffer, size_t size) -{ - /* User is allowed to call tentatively to see if there is support. */ - if (!B->is_default_emitter) { - return 0; - } - buffer = flatcc_emitter_copy_buffer(&B->default_emit_context, buffer, size); - check(buffer, "default emitter declined to copy buffer"); - return buffer; -} - -void *flatcc_builder_finalize_buffer(flatcc_builder_t *B, size_t *size_out) -{ - void * buffer; - size_t size; - - size = flatcc_builder_get_buffer_size(B); - - if (size_out) { - *size_out = size; - } - - buffer = FLATCC_BUILDER_ALLOC(size); - - if (!buffer) { - check(0, "failed to allocated memory for finalized buffer"); - goto done; - } - if (!flatcc_builder_copy_buffer(B, buffer, size)) { - check(0, "default emitter declined to copy buffer"); - FLATCC_BUILDER_FREE(buffer); - buffer = 0; - } -done: - if (!buffer && size_out) { - *size_out = 0; - } - return buffer; -} - -void *flatcc_builder_finalize_aligned_buffer(flatcc_builder_t *B, size_t *size_out) -{ - void * buffer; - size_t align; - size_t size; - - size = flatcc_builder_get_buffer_size(B); - - if (size_out) { - *size_out = size; - } - align = flatcc_builder_get_buffer_alignment(B); - - size = (size + align - 1) & ~(align - 1); - buffer = FLATCC_BUILDER_ALIGNED_ALLOC(align, size); - - if (!buffer) { - goto done; - } - if (!flatcc_builder_copy_buffer(B, buffer, size)) { - FLATCC_BUILDER_ALIGNED_FREE(buffer); - buffer = 0; - goto done; - } -done: - if (!buffer && size_out) { - *size_out = 0; - } - return buffer; -} - -void *flatcc_builder_aligned_alloc(size_t alignment, size_t size) -{ - return FLATCC_BUILDER_ALIGNED_ALLOC(alignment, size); -} - -void flatcc_builder_aligned_free(void *p) -{ - FLATCC_BUILDER_ALIGNED_FREE(p); -} - -void *flatcc_builder_alloc(size_t size) -{ - return FLATCC_BUILDER_ALLOC(size); -} - -void flatcc_builder_free(void *p) -{ - FLATCC_BUILDER_FREE(p); -} - -void *flatcc_builder_get_emit_context(flatcc_builder_t *B) -{ - return B->emit_context; -} diff --git a/nostrdb/flatcc/emitter.c b/nostrdb/flatcc/emitter.c deleted file mode 100644 index dbeffacd97..0000000000 --- a/nostrdb/flatcc/emitter.c +++ /dev/null @@ -1,269 +0,0 @@ -#include - -#include "flatcc_rtconfig.h" -#include "flatcc_emitter.h" - -static int advance_front(flatcc_emitter_t *E) -{ - flatcc_emitter_page_t *p = 0; - - if (E->front && E->front->prev != E->back) { - E->front->prev->page_offset = E->front->page_offset - FLATCC_EMITTER_PAGE_SIZE; - E->front = E->front->prev; - goto done; - } - if (!(p = FLATCC_EMITTER_ALLOC(sizeof(flatcc_emitter_page_t)))) { - return -1; - } - E->capacity += FLATCC_EMITTER_PAGE_SIZE; - if (E->front) { - p->prev = E->back; - p->next = E->front; - E->front->prev = p; - E->back->next = p; - E->front = p; - goto done; - } - /* - * The first page is shared between front and back to avoid - * double unecessary extra allocation. - */ - E->front = p; - E->back = p; - p->next = p; - p->prev = p; - E->front_cursor = E->front->page + FLATCC_EMITTER_PAGE_SIZE / 2; - E->back_cursor = E->front_cursor; - E->front_left = FLATCC_EMITTER_PAGE_SIZE / 2; - E->back_left = FLATCC_EMITTER_PAGE_SIZE - E->front_left; - p->page_offset = -(flatbuffers_soffset_t)E->front_left; - return 0; -done: - E->front_cursor = E->front->page + FLATCC_EMITTER_PAGE_SIZE; - E->front_left = FLATCC_EMITTER_PAGE_SIZE; - E->front->page_offset = E->front->next->page_offset - FLATCC_EMITTER_PAGE_SIZE; - return 0; -} - -static int advance_back(flatcc_emitter_t *E) -{ - flatcc_emitter_page_t *p = 0; - - if (E->back && E->back->next != E->front) { - E->back = E->back->next; - goto done; - } - if (!(p = FLATCC_EMITTER_ALLOC(sizeof(flatcc_emitter_page_t)))) { - return -1; - } - E->capacity += FLATCC_EMITTER_PAGE_SIZE; - if (E->back) { - p->prev = E->back; - p->next = E->front; - E->front->prev = p; - E->back->next = p; - E->back = p; - goto done; - } - /* - * The first page is shared between front and back to avoid - * double unecessary extra allocation. - */ - E->front = p; - E->back = p; - p->next = p; - p->prev = p; - E->front_cursor = E->front->page + FLATCC_EMITTER_PAGE_SIZE / 2; - E->back_cursor = E->front_cursor; - E->front_left = FLATCC_EMITTER_PAGE_SIZE / 2; - E->back_left = FLATCC_EMITTER_PAGE_SIZE - E->front_left; - p->page_offset = -(flatbuffers_soffset_t)E->front_left; - return 0; -done: - E->back_cursor = E->back->page; - E->back_left = FLATCC_EMITTER_PAGE_SIZE; - E->back->page_offset = E->back->prev->page_offset + FLATCC_EMITTER_PAGE_SIZE; - return 0; -} - -static int copy_front(flatcc_emitter_t *E, uint8_t *data, size_t size) -{ - size_t k; - - data += size; - while (size) { - k = size; - if (k > E->front_left) { - k = E->front_left; - if (k == 0) { - if (advance_front(E)) { - return -1; - } - continue; - } - } - E->front_cursor -= k; - E->front_left -= k; - data -= k; - size -= k; - memcpy(E->front_cursor, data, k); - }; - return 0; -} - -static int copy_back(flatcc_emitter_t *E, uint8_t *data, size_t size) -{ - size_t k; - - while (size) { - k = size; - if (k > E->back_left) { - k = E->back_left; - if (k == 0) { - if (advance_back(E)) { - return -1; - } - continue; - } - } - memcpy(E->back_cursor, data, k); - size -= k; - data += k; - E->back_cursor += k; - E->back_left -= k; - } - return 0; -} - -int flatcc_emitter_recycle_page(flatcc_emitter_t *E, flatcc_emitter_page_t *p) -{ - if (p == E->front || p == E->back) { - return -1; - } - p->next->prev = p->prev; - p->prev->next = p->next; - p->prev = E->front->prev; - p->next = E->front; - p->prev->next = p; - p->next->prev = p; - return 0; -} - -void flatcc_emitter_reset(flatcc_emitter_t *E) -{ - flatcc_emitter_page_t *p = E->front; - - if (!E->front) { - return; - } - E->back = E->front; - E->front_cursor = E->front->page + FLATCC_EMITTER_PAGE_SIZE / 2; - E->back_cursor = E->front_cursor; - E->front_left = FLATCC_EMITTER_PAGE_SIZE / 2; - E->back_left = FLATCC_EMITTER_PAGE_SIZE - FLATCC_EMITTER_PAGE_SIZE / 2; - E->front->page_offset = -(flatbuffers_soffset_t)E->front_left; - /* Heuristic to reduce peak allocation over time. */ - if (E->used_average == 0) { - E->used_average = E->used; - } - E->used_average = E->used_average * 3 / 4 + E->used / 4; - E->used = 0; - while (E->used_average * 2 < E->capacity && E->back->next != E->front) { - /* We deallocate the page after back since it is less likely to be hot in cache. */ - p = E->back->next; - E->back->next = p->next; - p->next->prev = E->back; - FLATCC_EMITTER_FREE(p); - E->capacity -= FLATCC_EMITTER_PAGE_SIZE; - } -} - -void flatcc_emitter_clear(flatcc_emitter_t *E) -{ - flatcc_emitter_page_t *p = E->front; - - if (!p) { - return; - } - p->prev->next = 0; - while (p->next) { - p = p->next; - FLATCC_EMITTER_FREE(p->prev); - } - FLATCC_EMITTER_FREE(p); - memset(E, 0, sizeof(*E)); -} - -int flatcc_emitter(void *emit_context, - const flatcc_iovec_t *iov, int iov_count, - flatbuffers_soffset_t offset, size_t len) -{ - flatcc_emitter_t *E = emit_context; - uint8_t *p; - - E->used += len; - if (offset < 0) { - if (len <= E->front_left) { - E->front_cursor -= len; - E->front_left -= len; - p = E->front_cursor; - goto copy; - } - iov += iov_count; - while (iov_count--) { - --iov; - if (copy_front(E, iov->iov_base, iov->iov_len)) { - return -1; - } - } - } else { - if (len <= E->back_left) { - p = E->back_cursor; - E->back_cursor += len; - E->back_left -= len; - goto copy; - } - while (iov_count--) { - if (copy_back(E, iov->iov_base, iov->iov_len)) { - return -1; - } - ++iov; - } - } - return 0; -copy: - while (iov_count--) { - memcpy(p, iov->iov_base, iov->iov_len); - p += iov->iov_len; - ++iov; - } - return 0; -} - -void *flatcc_emitter_copy_buffer(flatcc_emitter_t *E, void *buf, size_t size) -{ - flatcc_emitter_page_t *p; - size_t len; - - if (size < E->used) { - return 0; - } - if (!E->front) { - return 0; - } - if (E->front == E->back) { - memcpy(buf, E->front_cursor, E->used); - return buf; - } - len = FLATCC_EMITTER_PAGE_SIZE - E->front_left; - memcpy(buf, E->front_cursor, len); - buf = (uint8_t *)buf + len; - p = E->front->next; - while (p != E->back) { - memcpy(buf, p->page, FLATCC_EMITTER_PAGE_SIZE); - buf = (uint8_t *)buf + FLATCC_EMITTER_PAGE_SIZE; - p = p->next; - } - memcpy(buf, p->page, FLATCC_EMITTER_PAGE_SIZE - E->back_left); - return buf; -} diff --git a/nostrdb/flatcc/flatcc.h b/nostrdb/flatcc/flatcc.h deleted file mode 100644 index 04eb187f47..0000000000 --- a/nostrdb/flatcc/flatcc.h +++ /dev/null @@ -1,268 +0,0 @@ -#ifndef FLATCC_H -#define FLATCC_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * This is the primary `flatcc` interface when compiling `flatcc` as a - * library. Functions and types in the this interface will be kept - * stable to the extend possible or reasonable, but do not rely on other - * interfaces except "config.h" used to set default options for this - * interface. - * - * This interface is unrelated to the standalone flatbuilder library - * which has a life of its own. - */ - -#include - -#ifndef UINT8_MAX -#include -#endif - -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4820) /* x bytes padding added in struct */ -#endif - -typedef struct flatcc_options flatcc_options_t; -typedef void (*flatcc_error_fun) (void *err_ctx, const char *buf, size_t len); - -struct flatcc_options { - size_t max_schema_size; - int max_include_depth; - int max_include_count; - int disable_includes; - int allow_boolean_conversion; - int allow_enum_key; - int allow_enum_struct_field; - int allow_multiple_key_fields; - int allow_primary_key; - int allow_scan_for_all_fields; - int allow_string_key; - int allow_struct_field_deprecate; - int allow_struct_field_key; - int allow_struct_root; - int ascending_enum; - int hide_later_enum; - int hide_later_struct; - int offset_size; - int voffset_size; - int utype_size; - int bool_size; - int require_root_type; - int strict_enum_init; - uint64_t vt_max_count; - - const char *default_schema_ext; - const char *default_bin_schema_ext; - const char *default_bin_ext; - - /* Code Generator specific options. */ - int gen_stdout; - int gen_dep; - - const char *gen_depfile; - const char *gen_deptarget; - const char *gen_outfile; - - int gen_append; - - int cgen_pad; - int cgen_sort; - int cgen_pragmas; - - int cgen_common_reader; - int cgen_common_builder; - int cgen_reader; - int cgen_builder; - int cgen_verifier; - int cgen_json_parser; - int cgen_json_printer; - int cgen_recursive; - int cgen_spacing; - int cgen_no_conflicts; - - - int bgen_bfbs; - int bgen_qualify_names; - int bgen_length_prefix; - - /* Namespace args - these can override defaults so are null by default. */ - const char *ns; - const char *nsc; - - const char **inpaths; - const char **srcpaths; - int inpath_count; - int srcpath_count; - const char *outpath; -}; - -/* Runtime configurable optoins. */ -void flatcc_init_options(flatcc_options_t *opts); - -typedef void *flatcc_context_t; - -/* - * Call functions below in order listed one at a time. - * Each parse requires a new context. - * - * A reader file is named after the source base name, e.g. - * `monster.fbs` becomes `monster.h`. Builders are optional and created - * as `monster_builder.h`. A reader require a common header - * `flatbuffers_commoner.h` and a builder requires - * `flatbuffers_common_builder.h` in addition to the reader filers. A - * reader need no other source, but builders must link with the - * `flatbuilder` library and include files in `include/flatbuffers`. - * - * All the files may also be concatenated into one single file and then - * files will not be attempted included externally. This can be used - * with stdout output. The common builder can follow the common - * reader immediately, or at any later point before the first builder. - * The common files should only be included once, but not harm is done - * if duplication occurs. - * - * The outpath is prefixed every output filename. The containing - * directory must exist, but the prefix may have text following - * the directory, for example the namespace. If outpath = "stdout", - * files are generated to stdout. - * - * Note that const char * options must remain valid for the lifetime - * of the context since they are not copied. The options object itself - * is not used after initialization and may be reused. -*/ - -/* - * `name` is the name of the schema file or buffer. If it is path, the - * basename is extracted (leading path stripped), and the default schema - * extension is stripped if present. The resulting name is used - * internally when generating output files. Typically the `name` - * argument will be the same as a schema file path given to - * `flatcc_parse_file`, but it does not have to be. - * - * `name` may be null if only common files are generated. - * - * `error_out` is an optional error handler. If null output is truncated - * to a reasonable size and sent to stderr. `error_ctx` is provided as - * first argument to `error_out` if `error_out` is non-zero, otherwise - * it is ignored. - * - * Returns context or null on error. - */ -flatcc_context_t flatcc_create_context(flatcc_options_t *options, const char *name, - flatcc_error_fun error_out, void *error_ctx); - -/* Like `flatcc_create_context`, but with length argument for name. */ -/* - * Parse is optional - not needed for common files. If the input buffer version - * is called, the buffer must be zero terminated, otherwise an input - * path can be specified. The output path can be null. - * - * Only one parse can be called per context. - * - * The buffer size is limited to the max_schema_size option unless it is - * 0. The default is reasonable size like 64K depending on config flags. - * - * The buffer must remain valid for the duration of the context. - * - * The schema cannot contain include statements when parsed as a buffer. - * - * Returns 0 on success. - */ -int flatcc_parse_buffer(flatcc_context_t ctx, const char *buf, size_t buflen); - -/* - * If options contain a non-zero `inpath` option, the resulting filename is - * prefixed with that path unless the filename is an absolute path. - * - * Errors are sent to the error handler given during initialization, - * or to stderr. - * - * The file size is limited to the max_schema_size option unless it is - * 0. The default is reasonable size like 64K depending on config flags. - * - * Returns 0 on success. - */ -int flatcc_parse_file(flatcc_context_t ctx, const char *filename); - -/* - * Generate output files. The basename derived when the context was - * created is used used to name the output files with respective - * extensions. If the outpath option is not null it is prefixed the - * output files. The `cgen_common_reader, cgen_common_builder, - * cgen_reader, and cgen_builder` must be set or reset depending on what - * is to be generated. The common files do not require a parse, and the - * non-common files require a successfull parse or the result is - * undefined. - * - * Unlinke the parser, the code generator produce errors to stderr - * always. These errors are rare, such as using too long namespace - * names. - * - * If the `gen_stdout` option is set, all files are generated to stdout. - * In this case it is unwise to mix C and binary schema output options. - * - * If `bgen_bfbs` is set, a binary schema is generated to a file with - * the `.bfbs` extension. See also `flatcc_generate_binary_schema` for - * further details. Only `flatcc_generate_files` is called via the - * `flatcc` cli command. - * - * The option `bgen_length_prefix` option will cause a length prefix to be - * written to the each output binary schema. This option is only - * understood when writing to files. - * - * Returns 0 on success. - */ -int flatcc_generate_files(flatcc_context_t ctx); - -/* - * Returns a buffer with a binary schema for a previous parse. - * The user is responsible for calling `free` on the returned buffer - * unless it returns 0 on error. - * - * Can be called instead of generate files, before, or after, but a - * schema must be parsed first. - * - * Returns a binary schema in `reflection.fbs` format. Any included - * files will be contained in the schema and there are no separate - * schema files for included schema. - * - * All type names are scoped, mening that they are refixed their - * namespace using `.` as the namespace separator, for example: - * "MyGame.Example.Monster". Note that the this differs from the current - * `flatc` compiler which does not prefix names. Enum names are not - * scoped, but the scope is implied by the containing enum type. - * The option `bgen_qualify_names=0` changes this behavior. - * - * If the default option `ascending_enum` is disabled, the `flatcc` will - * accept duplicate values and overlapping ranges like the C programming - * language. In this case enum values in the binary schema will not be - * searchable. At any rate enum names are not searchable in the current - * schema format. - * - */ -void *flatcc_generate_binary_schema(flatcc_context_t ctx, size_t *size); - -/* - * Similar to `flatcc_generate_binary_schema` but copies the binary - * schema into a user supplied buffer. If the buffer is too small - * the return value will be negative and the buffer content undefined. - */ -int flatcc_generate_binary_schema_to_buffer(flatcc_context_t ctx, void *buf, size_t bufsiz); - -/* Must be called to deallocate resources eventually - it valid but - * without effect to call with a null context. */ -void flatcc_destroy_context(flatcc_context_t ctx); - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_H */ diff --git a/nostrdb/flatcc/flatcc_accessors.h b/nostrdb/flatcc/flatcc_accessors.h deleted file mode 100644 index 084ecb1b17..0000000000 --- a/nostrdb/flatcc/flatcc_accessors.h +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef FLATCC_ACCESSORS -#define FLATCC_ACCESSORS - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef UINT8_MAX -#include -#endif - -#define __flatcc_basic_scalar_accessors_impl(N, T, W, E) \ -static inline size_t N ## __size(void) \ -{ return sizeof(T); } \ -static inline T *N ## __ptr_add(T *p, size_t i) \ -{ return p + i; } \ -static inline const T *N ## __const_ptr_add(const T *p, size_t i) \ -{ return p + i; } \ -static inline T N ## _read_from_pe(const void *p) \ -{ return N ## _cast_from_pe(*(T *)p); } \ -static inline T N ## _read_to_pe(const void *p) \ -{ return N ## _cast_to_pe(*(T *)p); } \ -static inline T N ## _read(const void *p) \ -{ return *(T *)p; } \ -static inline void N ## _write_from_pe(void *p, T v) \ -{ *(T *)p = N ## _cast_from_pe(v); } \ -static inline void N ## _write_to_pe(void *p, T v) \ -{ *(T *)p = N ## _cast_to_pe(v); } \ -static inline void N ## _write(void *p, T v) \ -{ *(T *)p = v; } \ -static inline T N ## _read_from_le(const void *p) \ -{ return N ## _cast_from_le(*(T *)p); } \ -typedef struct { int is_null; T value; } N ## _option_t; - -#define __flatcc_define_integer_accessors_impl(N, T, W, E) \ -static inline T N ## _cast_from_pe(T v) \ -{ return (T) E ## W ## toh((uint ## W ## _t)v); } \ -static inline T N ## _cast_to_pe(T v) \ -{ return (T) hto ## E ## W((uint ## W ## _t)v); } \ -static inline T N ## _cast_from_le(T v) \ -{ return (T) le ## W ## toh((uint ## W ## _t)v); } \ -static inline T N ## _cast_to_le(T v) \ -{ return (T) htole ## W((uint ## W ## _t)v); } \ -static inline T N ## _cast_from_be(T v) \ -{ return (T) be ## W ## toh((uint ## W ## _t)v); } \ -static inline T N ## _cast_to_be(T v) \ -{ return (T) htobe ## W((uint ## W ## _t)v); } \ -__flatcc_basic_scalar_accessors_impl(N, T, W, E) - -#define __flatcc_define_real_accessors_impl(N, T, W, E) \ -union __ ## N ## _cast { T v; uint ## W ## _t u; }; \ -static inline T N ## _cast_from_pe(T v) \ -{ union __ ## N ## _cast x; \ - x.v = v; x.u = E ## W ## toh(x.u); return x.v; } \ -static inline T N ## _cast_to_pe(T v) \ -{ union __ ## N ## _cast x; \ - x.v = v; x.u = hto ## E ## W(x.u); return x.v; } \ -static inline T N ## _cast_from_le(T v) \ -{ union __ ## N ## _cast x; \ - x.v = v; x.u = le ## W ## toh(x.u); return x.v; } \ -static inline T N ## _cast_to_le(T v) \ -{ union __ ## N ## _cast x; \ - x.v = v; x.u = htole ## W(x.u); return x.v; } \ -static inline T N ## _cast_from_be(T v) \ -{ union __ ## N ## _cast x; \ - x.v = v; x.u = be ## W ## toh(x.u); return x.v; } \ -static inline T N ## _cast_to_be(T v) \ -{ union __ ## N ## _cast x; \ - x.v = v; x.u = htobe ## W(x.u); return x.v; } \ -__flatcc_basic_scalar_accessors_impl(N, T, W, E) - -#define __flatcc_define_integer_accessors(N, T, W, E) \ -__flatcc_define_integer_accessors_impl(N, T, W, E) - -#define __flatcc_define_real_accessors(N, T, W, E) \ -__flatcc_define_real_accessors_impl(N, T, W, E) - -#define __flatcc_define_basic_integer_accessors(NS, TN, T, W, E) \ -__flatcc_define_integer_accessors(NS ## TN, T, W, E) - -#define __flatcc_define_basic_real_accessors(NS, TN, T, W, E) \ -__flatcc_define_real_accessors(NS ## TN, T, W, E) - -#define __flatcc_define_basic_scalar_accessors(NS, E) \ -__flatcc_define_basic_integer_accessors(NS, char, char, 8, E) \ -__flatcc_define_basic_integer_accessors(NS, uint8, uint8_t, 8, E) \ -__flatcc_define_basic_integer_accessors(NS, uint16, uint16_t, 16, E) \ -__flatcc_define_basic_integer_accessors(NS, uint32, uint32_t, 32, E) \ -__flatcc_define_basic_integer_accessors(NS, uint64, uint64_t, 64, E) \ -__flatcc_define_basic_integer_accessors(NS, int8, int8_t, 8, E) \ -__flatcc_define_basic_integer_accessors(NS, int16, int16_t, 16, E) \ -__flatcc_define_basic_integer_accessors(NS, int32, int32_t, 32, E) \ -__flatcc_define_basic_integer_accessors(NS, int64, int64_t, 64, E) \ -__flatcc_define_basic_real_accessors(NS, float, float, 32, E) \ -__flatcc_define_basic_real_accessors(NS, double, double, 64, E) - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_ACCESSORS */ diff --git a/nostrdb/flatcc/flatcc_alloc.h b/nostrdb/flatcc/flatcc_alloc.h deleted file mode 100644 index 3cd47db3e5..0000000000 --- a/nostrdb/flatcc/flatcc_alloc.h +++ /dev/null @@ -1,127 +0,0 @@ -#ifndef FLATCC_ALLOC_H -#define FLATCC_ALLOC_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * These allocation abstractions are __only__ for runtime libraries. - * - * The flatcc compiler uses Posix allocation routines regardless - * of how this file is configured. - * - * This header makes it possible to use systems where malloc is not - * valid to use. In this case the portable library will not help - * because it implements Posix / C11 abstractions. - * - * Systems like FreeRTOS do not work with Posix memory calls and here it - * can be helpful to override runtime allocation primitives. - * - * In general, it is better to customize the allocator and emitter via - * flatcc_builder_custom_init and to avoid using the default emitter - * specific high level calls the copy out a buffer that must later be - * deallocated. This provides full control of allocation withou the need - * for this file. - * - * - * IMPORTANT - * - * If you override malloc, free, etc., make sure your applications - * use the same allocation methods. For example, samples/monster.c - * and several test cases are no longer guaranteed to work out of the - * box. - * - * The changes must only affect target runtime compilation including the - * the runtime library libflatccrt. - * - * The host system flatcc compiler and the compiler library libflatcc - * should NOT be compiled with non-Posix allocation since the compiler - * has a dependency on the runtime library and the wrong free operation - * might be callled. The safest way to avoid this problem this is to - * compile flatcc with the CMake script and the runtime files with a - * dedicated build system for the target system. - */ - -#include - -#ifndef FLATCC_ALLOC -#define FLATCC_ALLOC(n) malloc(n) -#endif - -#ifndef FLATCC_FREE -#define FLATCC_FREE(p) free(p) -#endif - -#ifndef FLATCC_REALLOC -#define FLATCC_REALLOC(p, n) realloc(p, n) -#endif - -#ifndef FLATCC_CALLOC -#define FLATCC_CALLOC(nm, n) calloc(nm, n) -#endif - -/* - * Implements `aligned_alloc` and `aligned_free`. - * Even with C11, this implements non-standard aligned_free needed for portable - * aligned_alloc implementations. - */ -#ifndef FLATCC_USE_GENERIC_ALIGNED_ALLOC - -#ifndef FLATCC_NO_PALIGNED_ALLOC -#include "portable/paligned_alloc.h" -#else -#if !defined(__aligned_free_is_defined) || !__aligned_free_is_defined -#define aligned_free free -#endif -#endif - -#else /* FLATCC_USE_GENERIC_ALIGNED_ALLOC */ - -#ifndef FLATCC_ALIGNED_ALLOC -static inline void *__flatcc_aligned_alloc(size_t alignment, size_t size) -{ - char *raw; - void *buf; - size_t total_size = (size + alignment - 1 + sizeof(void *)); - - if (alignment < sizeof(void *)) { - alignment = sizeof(void *); - } - raw = (char *)(size_t)FLATCC_ALLOC(total_size); - buf = raw + alignment - 1 + sizeof(void *); - buf = (void *)(((size_t)buf) & ~(alignment - 1)); - ((void **)buf)[-1] = raw; - return buf; -} -#define FLATCC_ALIGNED_ALLOC(alignment, size) __flatcc_aligned_alloc(alignment, size) -#endif /* FLATCC_USE_GENERIC_ALIGNED_ALLOC */ - -#ifndef FLATCC_ALIGNED_FREE -static inline void __flatcc_aligned_free(void *p) -{ - char *raw; - - if (!p) return; - raw = ((void **)p)[-1]; - - FLATCC_FREE(raw); -} -#define FLATCC_ALIGNED_FREE(p) __flatcc_aligned_free(p) -#endif - -#endif /* FLATCC_USE_GENERIC_ALIGNED_ALLOC */ - -#ifndef FLATCC_ALIGNED_ALLOC -#define FLATCC_ALIGNED_ALLOC(a, n) aligned_alloc(a, n) -#endif - -#ifndef FLATCC_ALIGNED_FREE -#define FLATCC_ALIGNED_FREE(p) aligned_free(p) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_ALLOC_H */ diff --git a/nostrdb/flatcc/flatcc_assert.h b/nostrdb/flatcc/flatcc_assert.h deleted file mode 100644 index 3db3e7b02b..0000000000 --- a/nostrdb/flatcc/flatcc_assert.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef FLATCC_ASSERT_H -#define FLATCC_ASSERT_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* -* This assert abstraction is only used for the flatcc runtime library. -* The flatcc compiler uses Posix assert routines regardless of how this -* file is configured. -* -* This header makes it possible to use systems where assert is not -* valid to use. Note that `` may remain a dependency for static -* assertions. -* -* `FLATCC_ASSERT` is designed to handle errors which cannot be ignored -* and could lead to crash. The portable library may use assertions that -* are not affected by this macro. -* -* `FLATCC_ASSERT` defaults to POSIX assert but can be overrided by a -* preprocessor definition. -* -* Runtime assertions can be entirely disabled by defining -* `FLATCC_NO_ASSERT`. -*/ - -#ifdef FLATCC_NO_ASSERT -/* NOTE: This will not affect inclusion of for static assertions. */ -#undef FLATCC_ASSERT -#define FLATCC_ASSERT(x) ((void)0) -/* Grisu3 is used for floating point conversion in JSON processing. */ -#define GRISU3_NO_ASSERT -#endif - -#ifndef FLATCC_ASSERT -#include -#define FLATCC_ASSERT assert -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_ASSERT_H */ diff --git a/nostrdb/flatcc/flatcc_builder.h b/nostrdb/flatcc/flatcc_builder.h deleted file mode 100644 index 8656449b39..0000000000 --- a/nostrdb/flatcc/flatcc_builder.h +++ /dev/null @@ -1,1911 +0,0 @@ -#ifndef FLATCC_BUILDER_H -#define FLATCC_BUILDER_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Library for building untyped FlatBuffers. Intended as a support - * library for generated C code to produce typed builders, but might - * also be useful in runtime environments and as support for scripting - * languages. - * - * The builder has two API layers: a stack based `start/end` approach, - * and a direct `create`, and they may be mixed freely. The direct - * approach may be used as part of more specialized optimizations such - * as rewriting buffers while the stack approach is convenient for state - * machine driven parsers without a stack, or with a very simple stack - * without extra allocations. - * - * The builder emits partial buffer sequences to a user provided emitter - * function and does not require a full buffer reprensenation in memory. - * For this reason it also does not support sorting or other operations - * that requires representing the buffer, but post-processors can easily - * do this, and the generated schema specific code and provide functions - * to handle this. - * - * A custom allocator with a default realloc implementation can place - * restraints on resource consumption and provide initial allocation - * sizes for various buffers and stacks in use. - * - * A buffer under construction uses a virtual address space for the - * completed part of the buffer, starting at 0 and growing in both - * directions, or just down depending on whether vtables should be - * clustered at the end or not. Clustering may help caching and - * preshipping that part of the buffer. - * - * Because an offset cannot be known before its reference location is - * defined, every completed table, vector, etc. returns a reference into - * the virtual address range. If the final buffer keeps the 0 offset, - * these references remain stable an may be used for external references - * into the buffer. - * - * The maximum buffer that can be constructed is in praxis limited to - * half the UOFFSET_MAX size, typically 2^31 bytes, not counting - * clustered vtables that may consume and additional 2^31 bytes - * (positive address range), but in praxis cannot because vtable - * references are signed and thus limited to 2^31 bytes (or equivalent - * depending on the flatbuffer types chosen). - * - * CORRECTION: in various places rules are mentioned about nesting and using - * a reference at most once. In fact, DAG's are also valid flatbuffers. - * This means a reference may be reused as long as each individual use - * obeys the rules and, for example, circular references are not - * constructed (circular types are ok, but objects graphs with cycles - * are not permitted). Be especially aware of the offset vector create - * call which translates the references into offsets - this can be - * reverted by noting the reference in vector and calculate the base - * used for the offset to restore the original references after the - * vector has been emitted. - */ - -#include -#ifndef UINT8_MAX -#include -#endif - -#include "flatcc_flatbuffers.h" -#include "flatcc_emitter.h" -#include "flatcc_refmap.h" - -/* It is possible to enable logging here. */ -#ifndef FLATCC_BUILDER_ASSERT -#define FLATCC_BUILDER_ASSERT(cond, reason) FLATCC_ASSERT(cond) -#endif - -/* - * Eror handling is not convenient and correct use should not cause - * errors beyond possibly memory allocation, but assertions are a - * good way to trace problems. - * - * Note: some internal assertion will remain if disabled. - */ -#ifndef FLATCC_BUILDER_ASSERT_ON_ERROR -#define FLATCC_BUILDER_ASSERT_ON_ERROR 0 -#endif - -/* - * If set, checks user input agains state and returns error, - * otherwise errors are ignored (assuming they won't happen). - * Errors will be asserted if enabled and checks are not skipped. - */ -#ifndef FLATCC_BUILDER_SKIP_CHECKS -#define FLATCC_BUILDER_SKIP_CHECKS 0 -#endif - - -/* - * When adding the same field to a table twice this is either an error - * or the existing field is returned, potentially introducing garbage - * if the type is a vector, table, or string. When implementing parsers - * it may be convenient to not treat this as an error. - */ -#ifndef FLATCC_BUILDER_ALLOW_REPEAT_TABLE_ADD -#define FLATCC_BUILDER_ALLOW_REPEAT_TABLE_ADD 0 -#endif - -/** - * This type must have same size as `flatbuffers_uoffset_t` - * and must be a signed type. - */ -typedef flatbuffers_soffset_t flatcc_builder_ref_t; -typedef flatbuffers_utype_t flatcc_builder_utype_t; - -/** - * This type must be compatible with code generation that - * creates union specific ref types. - */ -typedef struct flatcc_builder_union_ref { - flatcc_builder_utype_t type; - flatcc_builder_ref_t value; -} flatcc_builder_union_ref_t; - -typedef struct flatcc_builder_union_vec_ref { - flatcc_builder_ref_t type; - flatcc_builder_ref_t value; -} flatcc_builder_union_vec_ref_t; - -/** - * Virtual tables are off by one to avoid being mistaken for error at - * position 0, and it makes them detectable as such because no other - * reference is uneven. Vtables are emitted at their actual location - * which is one less than the reference value. - */ -typedef flatbuffers_soffset_t flatcc_builder_vt_ref_t; - -typedef flatbuffers_uoffset_t flatcc_builder_identifier_t; - -/** - * Hints to custom allocators so they can provide initial alloc sizes - * etc. There will be at most one buffer for each allocation type per - * flatcc_builder instance. Buffers containing only structs may avoid - * allocation altogether using a `create` call. The vs stack must hold - * vtable entries for all open tables up to their requested max id, but - * unused max id overlap on the stack. The final vtables only store the - * largest id actually added. The fs stack must hold stack frames for - * the nesting levels expected in the buffer, each about 50-100 bytes. - * The ds stack holds open vectors, table data, and nested buffer state. - * `create` calls bypass the `ds` and `fs` stack and are thus faster. - * The vb buffer holds a copy of all vtables seen and emitted since last - * vtable flush. The patch log holds a uoffset for every table field - * added to currently open tables. The hash table holds a uoffset entry - * for each hash slot where the allocator decides how many to provide - * above a certain minimum. The vd buffer allocates vtable descriptors - * which is a reference to an emitted vtable, an offset to a cached - * vtable, and a link to next descriptor with same hash. Calling `reset` - * after build can either keep the allocation levels for the next - * buffer, or reduce the buffers already allocated by requesting 1 byte - * allocations (meaning provide a default). - * - * The user stack is not automatically allocated, but when entered - * explicitly, the boundary is rembered in the current live - * frame. - */ -enum flatcc_builder_alloc_type { - /* The stack where vtables are build. */ - flatcc_builder_alloc_vs, - /* The stack where data structures are build. */ - flatcc_builder_alloc_ds, - /* The virtual table buffer cache, holds a copy of each vt seen. */ - flatcc_builder_alloc_vb, - /* The patch log, remembers table fields with outstanding offset refs. */ - flatcc_builder_alloc_pl, - /* The stack of frames for nested types. */ - flatcc_builder_alloc_fs, - /* The hash table part of the virtual table cache. */ - flatcc_builder_alloc_ht, - /* The vtable descriptor buffer, i.e. list elements for emitted vtables. */ - flatcc_builder_alloc_vd, - /* User stack frame for custom data. */ - flatcc_builder_alloc_us, - - /* Number of allocation buffers. */ - flatcc_builder_alloc_buffer_count -}; - -/** Must reflect the `flatcc_builder_alloc_type` enum. */ -#define FLATCC_BUILDER_ALLOC_BUFFER_COUNT flatcc_builder_alloc_buffer_count - -#ifndef FLATCC_BUILDER_ALLOC -#define FLATCC_BUILDER_ALLOC(n) FLATCC_ALLOC(n) -#endif - -#ifndef FLATCC_BUILDER_FREE -#define FLATCC_BUILDER_FREE(p) FLATCC_FREE(p) -#endif - -#ifndef FLATCC_BUILDER_REALLOC -#define FLATCC_BUILDER_REALLOC(p, n) FLATCC_REALLOC(p, n) -#endif - -#ifndef FLATCC_BUILDER_ALIGNED_ALLOC -#define FLATCC_BUILDER_ALIGNED_ALLOC(a, n) FLATCC_ALIGNED_ALLOC(a, n) -#endif - -#ifndef FLATCC_BUILDER_ALIGNED_FREE -#define FLATCC_BUILDER_ALIGNED_FREE(p) FLATCC_ALIGNED_FREE(p) -#endif - -/** - * Emits data to a conceptual deque by appending to either front or - * back, starting from offset 0. - * - * Each emit call appends a strictly later or earlier sequence than the - * last emit with same offset sign. Thus a buffer is gradually grown at - * both ends. `len` is the combined length of all iov entries such that - * `offset + len` yields the former offset for negative offsets and - * `offset + len` yields the next offset for non-negative offsets. - * The bulk of the data will be in the negative range, possibly all of - * it. The first emitted emitted range will either start or end at - * offset 0. If offset 0 is emitted, it indicates the start of clustered - * vtables. The last positive (non-zero) offset may be zero padding to - * place the buffer in a full multiple of `block_align`, if set. - * - * No iov entry is empty, 0 < iov_count <= FLATCC_IOV_COUNT_MAX. - * - * The source data are in general ephemeral and should be consumed - * immediately, as opposed to caching iov. - * - * For high performance applications: - * - * The `create` calls may reference longer living data, but header - * fields etc. will still be short lived. If an emitter wants to - * reference data in another buffer rather than copying, it should - * inspect the memory range. The length of an iov entry may also be used - * since headers are never very long (anything starting at 16 bytes can - * safely be assumed to be user provided, or static zero padding). It is - * guaranteed that data pointers in `create` calls receive a unique slot - * separate from temporary headers, in the iov table which may be used - * for range checking or hashing (`create_table` is the only call that - * mutates the data buffer). It is also guaranteed (with the exception - * of `create_table` and `create_cached_vtable`) that data provided to - * create calls are not referenced at all by the builder, and these data - * may therefore de-facto be handles rather than direct pointers when - * the emitter and data provider can agree on such a protocol. This does - * NOT apply to any start/end/add/etc. calls which do copy to stack. - * `flatcc_builder_padding_base` may be used to test if an iov entry is - * zero padding which always begins at that address. - * - * Future: the emit interface could be extended with a type code - * and return an existing object insted of the emitted if, for - * example, they are identical. Outside this api level, generated - * code could provide a table comparison function to help such - * deduplication. It would be optional because two equal objects - * are not necessarily identical. The emitter already receives - * one object at time. - * - * Returns 0 on success and otherwise causes the flatcc_builder - * to fail. - */ -typedef int flatcc_builder_emit_fun(void *emit_context, - const flatcc_iovec_t *iov, int iov_count, flatbuffers_soffset_t offset, size_t len); - -/* - * Returns a pointer to static padding used in emitter calls. May - * sometimes also be used for empty defaults such as identifier. - */ -extern const uint8_t flatcc_builder_padding_base[]; - -/** - * `request` is a minimum size to be returned, but allocation is - * expected to grow exponentially or in reasonable chunks. Notably, - * `alloc_type = flatcc_builder_alloc_ht` will only use highest available - * power of 2. The allocator may shrink if `request` is well below - * current size but should avoid repeated resizing on small changes in - * request sizes. If `zero_fill` is non-zero, allocated data beyond - * the current size must be zeroed. The buffer `b` may be null with 0 - * length initially. `alloc_context` is completely implementation - * dependendent, and not needed when just relying on realloc. The - * resulting buffer may be the same or different with moved data, like - * realloc. Returns -1 with unmodified buffer on failure or 0 on - * success. The `alloc_type` identifies the buffer type. This may be - * used to cache buffers between instances of builders, or to decide a - * default allocation size larger than requested. If `need` is zero the - * buffer should be deallocate if non-zero, and return success (0) - * regardless. - */ -typedef int flatcc_builder_alloc_fun(void *alloc_context, - flatcc_iovec_t *b, size_t request, int zero_fill, int alloc_type); - -/* - * The number of hash slots there will be allocated space for. The - * allocator may provide more. The size returned should be - * `sizeof(flatbuffers_uoffset_t) * count`, where the size is a power of - * 2 (or the rest is wasted). The hash table can store many more entries - * than slots using linear search. The table does not resize. - */ -#ifndef FLATCC_BUILDER_MIN_HASH_COUNT -#define FLATCC_BUILDER_MIN_HASH_COUNT 64 -#endif - -typedef struct __flatcc_builder_buffer_frame __flatcc_builder_buffer_frame_t; -struct __flatcc_builder_buffer_frame { - flatcc_builder_identifier_t identifier; - flatcc_builder_ref_t mark; - flatbuffers_uoffset_t vs_end; - flatbuffers_uoffset_t nest_id; - uint16_t flags; - uint16_t block_align; -}; - -typedef struct __flatcc_builder_vector_frame __flatcc_builder_vector_frame_t; -struct __flatcc_builder_vector_frame { - flatbuffers_uoffset_t elem_size; - flatbuffers_uoffset_t count; - flatbuffers_uoffset_t max_count; -}; - -typedef struct __flatcc_builder_table_frame __flatcc_builder_table_frame_t; -struct __flatcc_builder_table_frame { - flatbuffers_uoffset_t vs_end; - flatbuffers_uoffset_t pl_end; - uint32_t vt_hash; - flatbuffers_voffset_t id_end; -}; - -/* - * Store state for nested structures such as buffers, tables and vectors. - * - * For less busy data and data where access to a previous state is - * irrelevant, the frame may store the current state directly. Otherwise - * the current state is maintained in the flatcc_builder_t structure in a - * possibly derived form (e.g. ds pointer instead of ds_end offset) and - * the frame is used to store the previous state when the frame is - * entered. - * - * Most operations have a start/update/end cycle the decides the - * liftetime of a frame, but these generally also have a direct form - * (create) that does not use a frame at all. These still do some - * state updates notably passing min_align to parent which may also be - * an operation without a frame following the child level operation - * (e.g. create struct, create buffer). Ending a frame results in the - * same kind of updates. - */ -typedef struct __flatcc_builder_frame __flatcc_builder_frame_t; -struct __flatcc_builder_frame { - flatbuffers_uoffset_t ds_first; - flatbuffers_uoffset_t type_limit; - flatbuffers_uoffset_t ds_offset; - uint16_t align; - uint16_t type; - union { - __flatcc_builder_table_frame_t table; - __flatcc_builder_vector_frame_t vector; - __flatcc_builder_buffer_frame_t buffer; - } container; -}; - -/** - * The main flatcc_builder structure. Can be stack allocated and must - * be initialized with `flatcc_builder_init` and cleared with - * `flatcc_builder_clear` to reclaim memory. Between buffer builds, - * `flatcc_builder_reset` may be used. - */ -typedef struct flatcc_builder flatcc_builder_t; - -struct flatcc_builder { - /* Next entry on reserved stack in `alloc_pl` buffer. */ - flatbuffers_voffset_t *pl; - /* Next entry on reserved stack in `alloc_vs` buffer. */ - flatbuffers_voffset_t *vs; - /* One above the highest entry in vs, used to track vt_size. */ - flatbuffers_voffset_t id_end; - /* The evolving vtable hash updated with every new field. */ - uint32_t vt_hash; - - /* Pointer to ds_first. */ - uint8_t *ds; - /* Offset from `ds` on current frame. */ - flatbuffers_uoffset_t ds_offset; - /* ds buffer size relative to ds_first, clamped to max size of current type. */ - flatbuffers_uoffset_t ds_limit; - - /* ds_first, ds_first + ds_offset is current ds stack range. */ - flatbuffers_uoffset_t ds_first; - /* Points to currently open frame in `alloc_fs` buffer. */ - __flatcc_builder_frame_t *frame; - - /* Only significant to emitter function, if at all. */ - void *emit_context; - /* Only significant to allocator function, if at all. */ - void *alloc_context; - /* Customizable write function that both appends and prepends data. */ - flatcc_builder_emit_fun *emit; - /* Customizable allocator that also deallocates. */ - flatcc_builder_alloc_fun *alloc; - /* Buffers indexed by `alloc_type` */ - flatcc_iovec_t buffers[FLATCC_BUILDER_ALLOC_BUFFER_COUNT]; - /* Number of slots in ht given as 1 << ht_width. */ - size_t ht_width; - - /* The location in vb to add next cached vtable. */ - flatbuffers_uoffset_t vb_end; - /* Where to allocate next vtable descriptor for hash table. */ - flatbuffers_uoffset_t vd_end; - /* Ensure final buffer is aligned to at least this. Nested buffers get their own `min_align`. */ - uint16_t min_align; - /* The current active objects alignment isolated from nested activity. */ - uint16_t align; - /* The current buffers block alignment used when emitting buffer. */ - uint16_t block_align; - /* Signed virtual address range used for `flatcc_builder_ref_t` and emitter. */ - flatcc_builder_ref_t emit_start; - flatcc_builder_ref_t emit_end; - /* 0 for top level, and end of buffer ref for nested buffers (can also be 0). */ - flatcc_builder_ref_t buffer_mark; - /* Next nest_id. */ - flatbuffers_uoffset_t nest_count; - /* Unique id to prevent sharing of vtables across buffers. */ - flatbuffers_uoffset_t nest_id; - /* Current nesting level. Helpful to state-machines with explicit stack and to check `max_level`. */ - int level; - /* Aggregate check for allocated frame and max_level. */ - int limit_level; - /* Track size prefixed buffer. */ - uint16_t buffer_flags; - - /* Settings that may happen with no frame allocated. */ - - flatcc_builder_identifier_t identifier; - - /* Settings that survive reset (emitter, alloc, and contexts also survive): */ - - /* If non-zero, vtable cache gets flushed periodically. */ - size_t vb_flush_limit; - /* If non-zero, fails on deep nesting to help drivers with a stack, such as recursive parsers etc. */ - int max_level; - /* If non-zero, do not cluster vtables at end, only emit negative offsets (0 by default). */ - int disable_vt_clustering; - - /* Set if the default emitter is being used. */ - int is_default_emitter; - /* Only used with default emitter. */ - flatcc_emitter_t default_emit_context; - - /* Offset to the last entered user frame on the user frame stack, after frame header, or 0. */ - size_t user_frame_offset; - - /* The offset to the end of the most recent user frame. */ - size_t user_frame_end; - - /* The optional user supplied refmap for cloning DAG's - not shared with nested buffers. */ - flatcc_refmap_t *refmap; -}; - -/** - * Call this before any other API call. - * - * The emitter handles the completed chunks of the buffer that will no - * longer be required by the builder. It is largely a `write` function - * that can append to both positive and negative offsets. - * - * No memory is allocated during init. Buffers will be allocated as - * needed. The `emit_context` is only used by the emitter, if at all. - * - * `flatcc_builder_reset/clear` calls are automtically forwarded to the - * default emitter. - * - * Returns -1 on failure, 0 on success. - */ -int flatcc_builder_init(flatcc_builder_t *B); - -/** - * Use instead of `flatcc_builder_init` when providing a custom allocator - * or emitter. Leave emitter or allocator null to use default. - * Cleanup of emit and alloc context must be handled manually after - * the builder is cleared or reset, except if emitter is null the - * default will be automatically cleared and reset. - * - * Returns -1 on failure, 0 on success. - */ -int flatcc_builder_custom_init(flatcc_builder_t *B, - flatcc_builder_emit_fun *emit, void *emit_context, - flatcc_builder_alloc_fun *alloc, void *alloc_context); - -/* - * Returns (flatcc_emitter_t *) if the default context is used. - * Other emitter might have null contexts. - */ -void *flatcc_builder_get_emit_context(flatcc_builder_t *B); - -/** - * Prepares builder for a new build. The emitter is not told when a - * buffer is finished or when a new begins, and must be told so - * separately. Allocated buffers will be zeroed, but may optionally be - * reduced to their defaults (signalled by reallocating each non-empty - * buffer to a single byte). General settings are cleared optionally, - * such as cache flushing. Buffer specific settings such as buffer - * identifier are always cleared. - * - * Returns -1 if allocator complains during buffer reduction, 0 on - * success. - */ -int flatcc_builder_custom_reset(flatcc_builder_t *B, - int reduce_buffers, int set_defaults); - -/* - * Same as `flatcc_builder_custom_reset` with default arguments - * where buffers are not reduced and default settings are not reset. - */ -int flatcc_builder_reset(flatcc_builder_t *B); - -/** - * Deallocates all memory by calling allocate with a zero size request - * on each buffer, then zeroing the builder structure itself. - */ -void flatcc_builder_clear(flatcc_builder_t *B); - -/** - * Allocates to next higher power of 2 using system realloc and ignores - * `alloc_context`. Only reduces size if a small subsequent increase in - * size would not trigger a reallocation. `alloc_type` is used to - * set minimum sizes. Hash tables are allocated to the exact requested - * size. See also `alloc_fun`. - */ -int flatcc_builder_default_alloc(void *alloc_context, - flatcc_iovec_t *b, size_t request, int zero_fill, int alloc_type); - -/** - * If non-zero, the vtable cache will get flushed whenever it reaches - * the given limit at a point in time where more space is needed. The - * limit is not exact as it is only tested when reallocation is - * required. - */ -void flatcc_builder_set_vtable_cache_limit(flatcc_builder_t *B, size_t size); - -/** - * Manual flushing of vtable for long running tasks. Mostly used - * internally to deal with nested buffers. - */ -void flatcc_builder_flush_vtable_cache(flatcc_builder_t *B); - -/** - * Low-level support function to aid in constructing nested buffers without - * allocation. Not for regular use. - * - * Call where `start_buffer` would have been placed when using - * `create_buffer` in a nested context. Save the return value on a stack - * as argument to `pop_buffer_alignment`. - * - * The call resets the current derived buffer alignment so the nested - * buffer will not be aligned to more than required. - * - * Often it will not be necessary to be so careful with alignment since - * the alignment cannot be invalid by failing to use push and pop, but - * for code generation it will ensure the correct result every time. - */ -uint16_t flatcc_builder_push_buffer_alignment(flatcc_builder_t *B); - -/** - * Low-level call. - * - * Call with the return value from push_buffer_alignment after a nested - * `create_buffer_call`. The alignments merge back up in the buffer - * hierarchy so the top level buffer gets the largest of all aligments. - */ -void flatcc_builder_pop_buffer_alignment(flatcc_builder_t *B, uint16_t buffer_align); - -/** - * This value may be of interest when the buffer has been ended, for - * example when subsequently allocating memory for the buffer to ensure - * that memory is properly aligned. - */ -uint16_t flatcc_builder_get_buffer_alignment(flatcc_builder_t *B); - -/** - * Level 0 means no buffer is started, otherwise it increments with - * start calls and decrements with end calls (approximately for - * optimized operations such as table vectors). - * - * If `max_level` has been set, `get_level` always returns a value <= - * `max_level` provided no start call has failed. - * - * Level continues to increment inside nested buffers. - */ -int flatcc_builder_get_level(flatcc_builder_t *B); - -/** - * Setting the max level triggers a failure on start of new nestings - * when the level is reached. May be used to protect recursive descend - * parsers etc. or later buffer readers. - * - * The builder itself is not sensitive to depth, and the allocator is a - * better way to protect resource abuse. - * - * `max_level` is not reset inside nested buffers. - */ -void flatcc_builder_set_max_level(flatcc_builder_t *B, int level); - -/** - * By default ordinary data such as tables are placed in front of - * earlier produced content and vtables are placed at the very end thus - * clustering vtables together. This can be disabled so all content is - * placed in front. Nested buffers ignores this setting because they can - * only place content in front because they cannot blend with the - * containing buffers content. Clustering could be more cache friendly - * and also enables pre-shipping of the vtables during transmission. - */ -void flatcc_builder_set_vtable_clustering(flatcc_builder_t *B, int enable); - -/** - * Sets a new user supplied refmap which maps source pointers to - * references and returns the old refmap, or null. It is also - * possible to disable an existing refmap by setting a null - * refmap. - * - * A clone or pick operation may use this map when present, - * depending on the data type. If a hit is found, the stored - * reference will be used instead of performing a new clone or - * pick operation. It is also possible to manually populate the - * refmap. Note that the builder does not have a concept of - * clone or pick - these are higher level recursive operations - * to add data from one buffer to another - but such code may - * rely on the builder to provide the current refmap during - * recursive operations. For this reason, the builder makes no - * calls to the refmap interface on its own - it just stores the - * current refmap such that recursive operations can find it. - * - * Refmaps MUST be reset, replaced or disabled if a source - * pointer may be reused for different purposes - for example if - * repeatedly reading FlatBuffers into the same memory buffer - * and performing a clone into a buffer under construction. - * Refmaps may also be replaced if the same object is to be - * cloned several times keeping the internal DAG structure - * intact with every new clone being an independent object. - * - * Refmaps must also be replaced or disabled prior to starting a - * nested buffer and after stopping it, or when cloning a object - * as a nested root. THIS IS VERY EASY TO GET WRONG! The - * builder does a lot of bookkeeping for nested buffers but not - * in this case. Shared references may happen and they WILL fail - * verification and they WILL break when copying out a nested - * buffer to somewhere else. The user_frame stack may be used - * for pushing refmaps, but often user codes recursive stack - * will work just as well. - * - * It is entirely optional to use refmaps when cloning - they - * preserve DAG structure and may speed up operations or slow - * them down, depending on the source material. - * - * Refmaps may consume a lot of space when large offset vectors - * are cloned when these do not have significant shared - * references. They may also be very cheap to use without any - * dynamic allocation when objects are small and have at most a - * few references. - * - * Refmaps only support init, insert, find, reset, clear but not - * delete. There is a standard implementation in the runtime - * source tree but it can easily be replaced compile time and it - * may also be left out if unused. The builder wraps reset, insert, - * and find so the user does not have to check if a refmap is - * present but other operations must be done direcly on the - * refmap. - * - * The builder wrapped refmap operations are valid on a null - * refmap which will find nothing and insert nothing. - * - * The builder will reset the refmap during a builder reset and - * clear the refmap during a builder clear operation. If the - * refmap goes out of scope before that happens it is important - * to call set_refmap with null and manually clear the refmap. - */ -static inline flatcc_refmap_t *flatcc_builder_set_refmap(flatcc_builder_t *B, flatcc_refmap_t *refmap) -{ - flatcc_refmap_t *refmap_old; - - refmap_old = B->refmap; - B->refmap = refmap; - return refmap_old; -} - -/* Retrieves the current refmap, or null. */ -static inline flatcc_refmap_t *flatcc_builder_get_refmap(flatcc_builder_t *B) -{ - return B->refmap; -} - -/* Finds a reference, or a null reference if no refmap is active. * */ -static inline flatcc_builder_ref_t flatcc_builder_refmap_find(flatcc_builder_t *B, const void *src) -{ - return B->refmap ? flatcc_refmap_find(B->refmap, src) : flatcc_refmap_not_found; -} - -/* - * Inserts into the current refmap with the inseted ref upon - * upon success, or not_found on failure (default 0), or just - * returns ref if refmap is absent. - * - * Note that if an existing item exists, the ref is replaced - * and the new, not the old, ref is returned. - */ -static inline flatcc_builder_ref_t flatcc_builder_refmap_insert(flatcc_builder_t *B, const void *src, flatcc_builder_ref_t ref) -{ - return B->refmap ? flatcc_refmap_insert(B->refmap, src, ref) : ref; -} - -static inline void flatcc_builder_refmap_reset(flatcc_builder_t *B) -{ - if (B->refmap) flatcc_refmap_reset(B->refmap); -} - - -typedef uint16_t flatcc_builder_buffer_flags_t; -static const flatcc_builder_buffer_flags_t flatcc_builder_is_nested = 1; -static const flatcc_builder_buffer_flags_t flatcc_builder_with_size = 2; - -/* The flag size in the API needs to match the internal size. */ -static_assert(sizeof(flatcc_builder_buffer_flags_t) == - sizeof(((flatcc_builder_t *)0)->buffer_flags), "flag size mismatch"); - -/** - * An alternative to start buffer, start struct/table ... end buffer. - * - * This call is mostly of interest as a means to quicly create a zero - * allocation top-level buffer header following a call to create_struct, - * or to create_vtable/create_table. For that, it is quite simple to - * use. For general buffer construction without allocation, more care is - * needed, as discussed below. - * - * If the content is created with `start/end_table` calls, or similar, - * it is better to use `start/end_buffer` since stack allocation is used - * anyway. - * - * The buffer alignment must be provided manually as it is not derived - * from constructed content, unlike `start/end_buffer`. Typically - * `align` would be same argument as provided to `create_struct`. - * `get_buffer_alignment` may also used (note: `get_buffer_alignment` - * may return different after the call because it will be updated with - * the `block_align` argument to `create_buffer` but that is ok). - * - * The buffer may be constructed as a nested buffer with the `is_nested - * = 1` flag. As a nested buffer a ubyte vector header is placed before - * the aligned buffer header. A top-level buffer will normally have - * flags set to 0. - * - * A top-level buffer may also be constructed with the `with_size = 2` - * flag for top level buffers. It adds a size prefix similar to - * `is_nested` but the size is part of the aligned buffer. A size - * prefixed top level buffer must be accessed with a size prefix aware - * reader, or the buffer given to a standard reader must point to after - * the size field while keeping the buffer aligned to the size field - * (this will depend on the readers API which may be an arbitrary other - * language). - * - * If the `with_size` is used with the `is_nested` flag, the size is - * added as usual and all fields remain aligned as before, but padding - * is adjusted to ensure the buffer is aligned to the size field so - * that, for example, the nested buffer with size can safely be copied - * to a new memory buffer for consumption. - * - * Generally, references may only be used within the same buffer - * context. With `create_buffer` this becomes less precise. The rule - * here is that anything that would be valid with start/end_buffer - * nestings is also valid when removing the `start_buffer` call and - * replacing `end_buffer` with `create_buffer`. - * - * Note the additional burden of tracking buffer alignment manually - - * To help with this use `push_buffer_alignment` where `start_buffer` - * would have been placed, and `pop_buffer_alignment after the - * `create_buffer` call, and use `get_buffer_alignemnt` as described - * above. - * - * `create_buffer` is not suitable as a container for buffers created - * with `start/end_buffer` as these make assumptions about context that - * create buffer does not provide. Also, there is no point in doing so, - * since the idea of `create_buffer` is to avoid allocation in the first - * place. - */ -flatcc_builder_ref_t flatcc_builder_create_buffer(flatcc_builder_t *B, - const char identifier[FLATBUFFERS_IDENTIFIER_SIZE], - uint16_t block_align, - flatcc_builder_ref_t ref, uint16_t align, flatcc_builder_buffer_flags_t flags); - -/** - * Creates a struct within the current buffer without using any - * allocation. - * - * The struct should be used as a root in the `end_buffer` call or as a - * union value as there are no other ways to use struct while conforming - * to the FlatBuffer format - noting that tables embed structs in their - * own data area except in union fields. - * - * The struct should be in little endian format and follow the usual - * FlatBuffers alignment rules, although this API won't care about what - * is being stored. - * - * May also be used to simply emit a struct through the emitter - * interface without being in a buffer and without being a valid - * FlatBuffer. - */ -flatcc_builder_ref_t flatcc_builder_create_struct(flatcc_builder_t *B, - const void *data, size_t size, uint16_t align); - -/** - * Starts a struct and returns a pointer that should be used immediately - * to fill in the struct in protocol endian format, and when done, - * `end_struct` should be called. The returned reference should be used - * as argument to `end_buffer` or as a union value. See also - * `create_struct`. - */ -void *flatcc_builder_start_struct(flatcc_builder_t *B, - size_t size, uint16_t align); - -/** - * Return a pointer also returned at start struct, e.g. for endian - * conversion. - */ -void *flatcc_builder_struct_edit(flatcc_builder_t *B); - -/** - * Emits the struct started by `start_struct` and returns a reference to - * be used as root in an enclosing `end_buffer` call or as a union - * value. As mentioned in `create_struct`, these can also be used more - * freely, but not while being conformant FlatBuffers. - */ -flatcc_builder_ref_t flatcc_builder_end_struct(flatcc_builder_t *B); - -/** - * The buffer always aligns to at least the offset size (typically 4) - * and the internal alignment requirements of the buffer content which - * is derived as content is added. - * - * In addition, block_align can be specified. This ensures the resulting - * buffer is at least aligned to the block size and that the total size - * is zero padded to fill a block multiple if necessary. Because the - * emitter operates on a virtual address range before the full buffer is - * aligned, it may have to make assumptions based on that: For example, - * it may be processing encryption blocks in the fly, and the resulting - * buffer should be aligned to the encryption block size, even if the - * content is just a byte aligned struct. Block align helps ensure this. - * If the block align as 1 there will be no attempt to zero pad at the - * end, but the content may still warrant padding after the header. End - * padding is only needed with clustered vtables (which is the default). - * - * `block_align` is allowed to be 0 meaning it will inherit from parent if - * present, and otherwise it defaults to 1. - * - * The identifier may be null, and it may optionally be set later with - * `set_identifier` before the `end_buffer` call. - * - * General note: - * - * Only references returned with this buffer as current (i.e. last - * unended buffer) can be stored in other objects (tables, offset - * vectors) also belonging to this buffer, or used as the root argument - * to `end_buffer`. A reference may be stored at most once, and unused - * references will result in buffer garbage. All calls must be balanced - * around the respective start / end operations, but may otherwise nest - * freely, including nested buffers. Nested buffers are supposed to be - * stored in a table offset field to comply with FlatBuffers, but the - * API does not place any restrictions on where references are stored, - * as long as they are indicated as offset fields. - * - * All alignment in all API calls must be between 1 and 256 and must be a - * power of 2. This is not checked. Only if explicitly documented can it - * also be 0 for a default value. - * - * `flags` can be `with_size` but `is_nested` is derived from context - * see also `create_buffer`. - */ -int flatcc_builder_start_buffer(flatcc_builder_t *B, - const char identifier[FLATBUFFERS_IDENTIFIER_SIZE], - uint16_t block_align, flatcc_builder_buffer_flags_t flags); - -/** - * The root object should be a struct or a table to conform to the - * FlatBuffers format, but technically it can also be a vector or a - * string, or even a child buffer (which is also vector as seen by the - * buffer). The object must be created within the current buffer - * context, that is, while the current buffer is the deepest nested - * buffer on the stack. - */ -flatcc_builder_ref_t flatcc_builder_end_buffer(flatcc_builder_t *B, flatcc_builder_ref_t root); - -/** - * The embed buffer is mostly intended to add an existing buffer as a - * nested buffer. The buffer will be wrapped in a ubyte vector such that - * the buffer is aligned at vector start, after the size field. - * - * If `align` is 0 it will default to 8 so that all FlatBuffer numeric - * types will be readable. NOTE: generally do not count on align 0 being - * valid or even checked by the API, but in this case it may be - * difficult to know the internal buffer alignment, and 1 would be the wrong - * choice. - * - * If `block_align` is set (non-zero), the buffer is placed in an isolated - * block multiple. This may cost up to almost 2 block sizes in padding. - * If the `block_align` argument is 0, it inherits from the parent - * buffer block_size, or defaults to 1. - * - * The `align` argument must be set to respect the buffers internal - * alignment requirements, but if the buffer is smaller it will not be - * padded to isolate the buffer. For example a buffer of with - * `align = 64` and `size = 65` may share its last 64 byte block with - * other content, but not if `block_align = 64`. - * - * Because the ubyte size field is not, by default, part of the aligned - * buffer, significant space can be wasted if multiple blocks are added - * in sequence with a large block size. - * - * In most cases the distinction between the two alignments is not - * important, but it allows separate configuration of block internal - * alignment and block size, which can be important for auto-generated - * code that may know the alignment of the buffer, but not the users - * operational requirements. - * - * If the buffer is embedded without a parent buffer, it will simply - * emit the buffer through the emit interface, but may also add padding - * up to block alignment. At top-level there will be no size field - * header. - * - * If `with_size` flag is set, the buffer is aligned to size field and - * the above note about padding space no longer applies. The size field - * is added regardless. The `is_nested` flag has no effect since it is - * impplied. - */ -flatcc_builder_ref_t flatcc_builder_embed_buffer(flatcc_builder_t *B, - uint16_t block_align, - const void *data, size_t size, uint16_t align, flatcc_builder_buffer_flags_t flags); - -/** - * Applies to the innermost open buffer. The identifier may be null or - * contain all zero. Overrides any identifier given to the start buffer - * call. - */ -void flatcc_builder_set_identifier(flatcc_builder_t *B, - const char identifier[FLATBUFFERS_IDENTIFIER_SIZE]); - -enum flatcc_builder_type { - flatcc_builder_empty = 0, - flatcc_builder_buffer, - flatcc_builder_struct, - flatcc_builder_table, - flatcc_builder_vector, - flatcc_builder_offset_vector, - flatcc_builder_string, - flatcc_builder_union_vector -}; - -/** - * Returns the object type currently on the stack, for example if - * needing to decide how to close a buffer. Because a table is - * automatically added when starting a table buffer, - * `flatcc_builder_table_buffer` should not normally be seen and the level - * should be 2 before when closing a top-level table buffer, and 0 - * after. A `flatcc_builder_struct_buffer` will be visible at level 1. - * - */ -enum flatcc_builder_type flatcc_builder_get_type(flatcc_builder_t *B); - -/** - * Similar to `get_type` but for a specific level. `get_type_at(B, 1)` - * will return `flatcc_builder_table_buffer` if this is the root buffer - * type. get_type_at(B, 0) is always `flatcc_builder_empty` and so are any - * level above `get_level`. - */ -enum flatcc_builder_type flatcc_builder_get_type_at(flatcc_builder_t *B, int level); - -/** - * The user stack is available for custom data. It may be used as - * a simple stack by extending or reducing the inner-most frame. - * - * A frame has a size and a location on the user stack. Entering - * a frame ensures the start is aligned to sizeof(size_t) and - * ensures the requested space is available without reallocation. - * When exiting a frame, the previous frame is restored. - * - * A user frame works completely independently of the builders - * frame stack for tracking tables vectors etc. and does not have - * to be completely at exit, but obviously it is not valid to - * exit more often the entered. - * - * The frame is zeroed when entered. - * - * Returns a non-zero handle to the user frame upon success or - * 0 on allocation failure. - */ -size_t flatcc_builder_enter_user_frame(flatcc_builder_t *B, size_t size); - -/** - * Makes the parent user frame current, if any. It is not valid to call - * if there isn't any current frame. Returns handle to parent frame if - * any, or 0. - */ -size_t flatcc_builder_exit_user_frame(flatcc_builder_t *B); - -/** - * Exits the frame represented by the given handle. All more - * recently entered frames will also be exited. Returns the parent - * frame handle if any, or 0. - */ -size_t flatcc_builder_exit_user_frame_at(flatcc_builder_t *B, size_t handle); - -/** - * Returns a non-zero handle to the current inner-most user frame if - * any, or 0. - */ -size_t flatcc_builder_get_current_user_frame(flatcc_builder_t *B); - -/* - * Returns a pointer to the user frame at the given handle. Any active - * frame can be accessed in this manner but the pointer is invalidated - * by user frame enter and exit operations. - */ -void *flatcc_builder_get_user_frame_ptr(flatcc_builder_t *B, size_t handle); - -/** - * Returns the size of the buffer and the logical start and end address - * of with respect to the emitters address range. `end` - `start` also - * yields the size. During construction `size` is the emitted number of - * bytes and after buffer close it is the actual buffer size - by then - * the start is also the return value of close buffer. End marks the end - * of the virtual table cluster block. - * - * NOTE: there is no guarantee that all vtables end up in the cluster - * block if there is placed a limit on the vtable size, or if nested - * buffers are being used. On the other hand, if these conditions are - * met, it is guaranteed that all vtables are present if the vtable - * block is available (this depends on external transmission - the - * vtables are always emitted before tables using them). In all cases - * the vtables will behave as valid vtables in a flatbuffer. - */ -size_t flatcc_builder_get_buffer_size(flatcc_builder_t *B); - -/** - * Returns the reference to the start of the emitter buffer so far, or - * in total after buffer end, in the virtual address range used - * by the emitter. Start is also returned by buffer end. - */ -flatcc_builder_ref_t flatcc_builder_get_buffer_start(flatcc_builder_t *B); - -/** - * Returns the reference to the end of buffer emitted so far. When - * clustering vtables, this is the end of tables, or after buffer end, - * also zero padding if block aligned. If clustering is disabled, this - * method will return 0 as the buffer only grows down then. - */ -flatcc_builder_ref_t flatcc_builder_get_buffer_mark(flatcc_builder_t *B); - -/** - * Creates the vtable in the current buffer context, somewhat similar to - * how create_vector operates. Each call results in a new table even if - * an identical has already been emitted. - * - * Also consider `create_cached_vtable` which will reuse existing - * vtables. - * - * This is low-low-level function intended to support - * `create_cached_vtable` or equivalent, and `create_table`, both of - * which are normally used indirectly via `start_table`, `table_add`, - * `table_add_offset`..., `table_end`. - * - * Creates a vtable as a verbatim copy. This means the vtable must - * include the header fields containing the vtable size and the table - * size in little endian voffset_t encoding followed by the vtable - * entries in same encoding. - * - * The function may be used to copy vtables from other other buffers - * since they are directly transferable. - * - * The returned reference is actually the emitted location + 1. This - * ensures the vtable is not mistaken for error because 0 is a valid - * vtable reference. `create_table` is aware of this and substracts one - * before computing the final offset relative to the table. This also - * means vtable references are uniquely identifiable by having the - * lowest bit set. - * - * vtable references may be reused within the same buffer, not any - * parent or other related buffer (technically this is possible though, - * as long as it is within same builder context, but it will not construct - * valid FlatBuffers because the buffer cannot be extracted in isolation). - */ -flatcc_builder_vt_ref_t flatcc_builder_create_vtable(flatcc_builder_t *B, - const flatbuffers_voffset_t *vt, - flatbuffers_voffset_t vt_size); - -/** - * Support function to `create_vtable`. See also the uncached version - * `create_vtable`. - * - * Looks up the constructed vtable on the vs stack too see if it matches - * a cached entry. If not, it emits a new vtable either at the end if - * top-level and clustering is enabled, or at the front (always for - * nested buffers). - * - * If the same vtable was already emitted in a different buffer, but not - * in the current buffer, the cache entry will be reused, but a new - * table will be emitted the first it happens in the same table. - * - * The returned reference is + 1 relative to the emitted address range - * to identify it as a vtable and to avoid mistaking the valid 0 - * reference for an error (clustered vtables tend to start at the end at - * the virtual address 0, and up). - * - * The hash function can be chosen arbitrarily but may result in - * duplicate emitted vtables if different hash functions are being used - * concurrently, such as mixing the default used by `start/end table` - * with a custom function (this is not incorrect, it only increases the - * buffer size and cache pressure). - * - * If a vtable has a unique ID by other means than hashing the content, - * such as an integer id, and offset into another buffer, or a pointer, - * a good hash may be multiplication by a 32-bit prime number. The hash - * table is not very sensitive to collissions as it uses externally - * chained hashing with move to front semantics. - */ -flatcc_builder_vt_ref_t flatcc_builder_create_cached_vtable(flatcc_builder_t *B, - const flatbuffers_voffset_t *vt, - flatbuffers_voffset_t vt_size, uint32_t vt_hash); - -/* - * Based on Knuth's prime multiplier. - * - * This is an incremental hash that is called with id and size of each - * non-empty field, and finally with the two vtable header fields - * when vtables are constructed via `table_add/table_add_offset`. - * - */ -#ifndef FLATCC_SLOW_MUL -#ifndef FLATCC_BUILDER_INIT_VT_HASH -#define FLATCC_BUILDER_INIT_VT_HASH(hash) { (hash) = (uint32_t)0x2f693b52UL; } -#endif -#ifndef FLATCC_BUILDER_UPDATE_VT_HASH -#define FLATCC_BUILDER_UPDATE_VT_HASH(hash, id, offset) \ - { (hash) = (((((uint32_t)id ^ (hash)) * (uint32_t)2654435761UL)\ - ^ (uint32_t)(offset)) * (uint32_t)2654435761UL); } -#endif -#ifndef FLATCC_BUILDER_BUCKET_VT_HASH -#define FLATCC_BUILDER_BUCKET_VT_HASH(hash, width) (((uint32_t)(hash)) >> (32 - (width))) -#endif -#endif - -/* - * By default we use Bernsteins hash as fallback if multiplication is slow. - * - * This just have to be simple, fast, and work on devices without fast - * multiplication. We are not too sensitive to collisions. Feel free to - * experiment and replace. - */ -#ifndef FLATCC_BUILDER_INIT_VT_HASH -#define FLATCC_BUILDER_INIT_VT_HASH(hash) { (hash) = 5381; } -#endif -#ifndef FLATCC_BUILDER_UPDATE_VT_HASH -#define FLATCC_BUILDER_UPDATE_VT_HASH(hash, id, offset) \ - { (hash) = ((((hash) << 5) ^ (id)) << 5) ^ (offset); } -#endif -#ifndef FLATCC_BUILDER_BUCKET_VT_HASH -#define FLATCC_BUILDER_BUCKET_VT_HASH(hash, width) (((1 << (width)) - 1) & (hash)) -#endif - - - -/** - * Normally use `start_table` instead of this call. - * - * This is a low-level call only intended for high-performance - * applications that repeatedly churn about similar tables of known - * layout, or as a support layer for other builders that maintain their - * own allocation rather than using the stack of this builder. - * - * Creates a table from an already emitted vtable, actual data that is - * properly aligned relative to data start and in little endian - * encoding. Unlike structs, tables can have offset fields. These must - * be stored as flatcc_builder_ref_t types (which have uoffset_t size) as - * returned by the api in native encoding. The `offsets` table contain - * voffsets relative to `data` start (this is different from how vtables - * store offsets because they are relative to a table header). The - * `offsets` table is only used temporarily to translate the stored - * references and is not part of final buffer content. `offsets` may be - * null if `offset_count` is 0. `align` should be the highest aligned - * field in the table, but `size` need not be a multiple of `align`. - * Aside from endian encoding, the vtable must record a table size equal - * to `size + sizeof(flatbuffers_uoffset_t)` because it includes the - * table header field size. The vtable is not accessed by this call (nor - * is it available). Unlike other references, the vtable reference may - * be shared between tables in the same buffer (not with any related - * buffer such as a parent buffer). - * - * The operation will not use any allocation, but will update the - * alignment of the containing buffer if any. - * - * Note: unlike other create calls, except `create_offset_vector`, - * the source data is modified in order to translate references intok - * offsets before emitting the table. - */ -flatcc_builder_ref_t flatcc_builder_create_table(flatcc_builder_t *B, - const void *data, size_t size, uint16_t align, - flatbuffers_voffset_t *offsets, int offset_count, - flatcc_builder_vt_ref_t vt_ref); - -/** - * Starts a table, typically following a start_buffer call as an - * alternative to starting a struct, or to create table fields to be - * stored in a parent table, or in an offset vector. - * A number of `table_add` and table_add_offset` call may be placed - * before the `end_table` call. Struct fields should NOT use `struct` - * related call (because table structs are in-place), rather they should - * use the `table_add` call with the appropriate size and alignment. - * - * A table, like other reference returning calls, may also be started - * outside a buffer if the buffer header and alignment is of no - * interest to the application, for example as part of an externally - * built buffer. - * - * `count` must be larger than the largest id used for this table - * instance. Normally it is set to the number of fields defined in the - * schema, but it may be less if memory is constrained and only few - * fields with low valued id's are in use. The count can extended later - * with `reserve_table` if necessary. `count` may be also be set to a - * large enough value such as FLATBUFFERS_ID_MAX + 1 if memory is not a - * concern (reserves about twice the maximum vtable size to track the - * current vtable and voffsets where references must be translated to - * offsets at table end). `count` may be zero if for example - * `reserve_table` is being used. - * - * Returns -1 on error, 0 on success. - */ -int flatcc_builder_start_table(flatcc_builder_t *B, int count); - -/** - * Call before adding a field with an id that is not below the count set - * at table start. Not needed in most cases. For performance reasons - * the builder does not check all bounds all the the time, but the user - * can do so if memory constraints prevent start_table from using a - * conservative value. See also `table_start`. - * - * Note: this call has absolutely no effect on the table layout, it just - * prevents internal buffer overruns. - * - * Returns -1 on error, 0 on success. - */ -int flatcc_builder_reserve_table(flatcc_builder_t *B, int count); - -/** - * Completes the table constructed on the internal stack including - * emitting a vtable, or finding a matching vtable that has already been - * emitted to the same buffer. (Vtables cannot be shared between - * buffers, but they can between tables of the same buffer). - * - * Note: there is a considerable, but necessary, amount of bookkeeping - * involved in constructing tables. The `create_table` call is much - * faster, but it also expects a lot of work to be done already. - * - * Tables can be created with no fields added. This will result in an - * empty vtable and a table with just a vtable reference. If a table is - * used as a sub-table, such a table might also not be stored at all, - * but we do not return a special reference for that, nor do we provide - * and option to not create the table in this case. This may be - * interpreted as the difference between a null table (not stored in - * parent), and an empty table with a unique offset (and thus identity) - * different from other empty tables. - */ -flatcc_builder_ref_t flatcc_builder_end_table(flatcc_builder_t *B); - -/** - * Optionally this method can be called just before `flatcc_builder_end_table` - * to verify that all required fields have been set. - * Each entry is a table field id. - * - * Union fields should use the type field when checking for presence and - * may also want to check the soundness of the union field overall using - * `check_union_field` with the id one higher than the type field id. - * - * This funcion is typically called by an assertion in generated builder - * interfaces while release builds may want to avoid this performance - * overhead. - * - * Returns 1 if all fields are matched, 0 otherwise. - */ -int flatcc_builder_check_required(flatcc_builder_t *B, const flatbuffers_voffset_t *required, int count); - -/** - * Same as `check_required` when called with a single element. - * - * Typically used when direct calls are more convenient than building an - * array first. Useful when dealing with untrusted intput such as parsed - * text from an external source. - */ -int flatcc_builder_check_required_field(flatcc_builder_t *B, flatbuffers_voffset_t id); - -/** - * Checks that a union field is valid. - * - * The criteria is: - * - * If the type field is not present (at id - 1), or it holds a zero value, - * then the table field (at id) must be present. - * - * Generated builder code may be able to enforce valid unions without - * this check by setting both type and table together, but e.g. parsers - * may receive the type and the table independently and then it makes - * sense to validate the union fields before table completion. - * - * Note that an absent union field is perfectly valid. If a union is - * required, the type field (id - 1), should be checked separately - * while the table field should only be checked here because it can - * (and must) be absent when the type is NONE (= 0). - */ -int flatcc_builder_check_union_field(flatcc_builder_t *B, flatbuffers_voffset_t id); - -/** - * A struct, enum or scalar added should be stored in little endian in - * the return pointer location. The pointer is short lived and will - * not necessarily survive other builder calls. - * - * A union type field can also be set using this call. In fact, this is - * the only way to deal with unions via this API. Consequently, it is - * the users repsonsibility to ensure the appropriate type is added - * at the next higher id. - * - * Null and default values: - * - * FlatBuffers does not officially provide an option for null values - * because it does not distinguish between default values and values - * that are not present. At this api level, we do not deal with defaults - * at all. Callee should test the stored value against the default value - * and only add the field if it does not match the default. This only - * applies to scalar and enum values. Structs cannot have defaults so - * their absence means null, and strings, vectors and subtables do have - * natural null values different from the empty object and empty objects - * with different identity is also possible. - * - * To handle Null for scalars, the following approach is recommended: - * - * Provide a schema-specific `add` operation that only calls this - * low-level add method if the default does not match, and also provide - * another `set` operation that always stores the value, regardless of - * default. For most readers this will be transparent, except for extra - * space used, but for Null aware readers, these can support operations - * to test for Null/default/other value while still supporting the - * normal read operation that returns default when a value is absent - * (i.e. Null). - * - * It is valid to call with a size of 0 - the effect being adding the - * vtable entry. The call may also be dropped in this case to reduce - * the vtable size - the difference will be in null detection. - */ -void *flatcc_builder_table_add(flatcc_builder_t *B, int id, size_t size, uint16_t align); - -/** - * Returns a pointer to the buffer holding the last field added. The - * size argument must match the field size added. May, for example, be - * used to perform endian conversion after initially updating field - * as a native struct. Must be called before the table is ended. - */ -void *flatcc_builder_table_edit(flatcc_builder_t *B, size_t size); - -/** - * Similar to `table_add` but copies source data into the buffer before - * it is returned. Useful when adding a larger struct already encoded in - * little endian. - */ -void *flatcc_builder_table_add_copy(flatcc_builder_t *B, int id, const void *data, size_t size, uint16_t align); - -/** - * Add a string, vector, or sub-table depending on the type if the - * field identifier. The offset ref obtained when the field object was - * closed should be stored as is in the given pointer. The pointer - * is only valid short term, so create the object before calling - * add to table, but the owner table can be started earlier. Never mix - * refs from nested buffers with parent buffers. - * - * Also uses this method to add nested buffers. A nested buffer is - * simple a buffer created while another buffer is open. The buffer - * close operation provides the necessary reference. - * - * When the table closes, all references get converted into offsets. - * Before that point, it is not required that the offset is written - * to. - */ -flatcc_builder_ref_t *flatcc_builder_table_add_offset(flatcc_builder_t *B, int id); - -/* - * Adds a union type and reference in a single operation and returns 0 - * on success. Stores the type field at `id - 1` and the value at - * `id`. The `value` is a reference to a table, to a string, or to a - * standalone `struct` outside the table. - * - * If the type is 0, the value field must also be 0. - * - * Unions can also be added as separate calls to the type and the offset - * separately which can lead to better packing when the type is placed - * together will other small fields. - */ -int flatcc_builder_table_add_union(flatcc_builder_t *B, int id, - flatcc_builder_union_ref_t uref); - -/* - * Adds a union type vector and value vector in a single operations - * and returns 0 on success. - * - * If both the type and value vector is null, nothing is added. - * Otherwise both must be present and have the same length. - * - * Any 0 entry in the type vector must also have a 0 entry in - * the value vector. - */ -int flatcc_builder_table_add_union_vector(flatcc_builder_t *B, int id, - flatcc_builder_union_vec_ref_t uvref); -/** - * Creates a vector in a single operation using an externally supplied - * buffer. This completely bypasses the stack, but the size must be - * known and the content must be little endian. Do not use for strings - * and offset vectors. Other flatbuffer vectors could be used as a - * source, but the length prefix is not required. - * - * Set `max_count` to `FLATBUFFERS_COUNT_MAX(elem_size)` before a call - * to any string or vector operation to the get maximum safe vector - * size, or use (size_t)-1 if overflow is not a concern. - * - * The max count property is a global property that remains until - * explicitly changed. - * - * `max_count` is to prevent malicous or accidental overflow which is - * difficult to detect by multiplication alone, depending on the type - * sizes being used and having `max_count` thus avoids a division for - * every vector created. `max_count` does not guarantee a vector will - * fit in an empty buffer, it just ensures the internal size checks do - * not overflow. A safe, sane limit woud be max_count / 4 because that - * is half the maximum buffer size that can realistically be - * constructed, corresponding to a vector size of `UOFFSET_MAX / 4` - * which can always hold the vector in 1GB excluding the size field when - * sizeof(uoffset_t) = 4. - */ -flatcc_builder_ref_t flatcc_builder_create_vector(flatcc_builder_t *B, - const void *data, size_t count, size_t elem_size, uint16_t align, size_t max_count); - -/** - * Starts a vector on the stack. - * - * Do not use these calls for string or offset vectors, but do store - * scalars, enums and structs, always in little endian encoding. - * - * Use `extend_vector` subsequently to add zero, one or more elements - * at time. - * - * See `create_vector` for `max_count` argument (strings and offset - * vectors have a fixed element size and does not need this argument). - * - * Returns 0 on success. - */ -int flatcc_builder_start_vector(flatcc_builder_t *B, size_t elem_size, - uint16_t align, size_t max_count); - -/** - * Emits the vector constructed on the stack by start_vector. - * - * The vector may be accessed in the emitted stream using the returned - * reference, even if the containing buffer is still under construction. - * This may be useful for sorting. This api does not support sorting - * because offset vectors cannot read their references after emission, - * and while plain vectors could be sorted, it has been chosen that this - * task is better left as a separate processing step. Generated code can - * provide sorting functions that work on final in-memory buffers. - */ -flatcc_builder_ref_t flatcc_builder_end_vector(flatcc_builder_t *B); - -/** Returns the number of elements currently on the stack. */ -size_t flatcc_builder_vector_count(flatcc_builder_t *B); - -/** - * Returns a pointer ot the first vector element on stack, - * accessible up to the number of elements currently on stack. - */ -void *flatcc_builder_vector_edit(flatcc_builder_t *B); - -/** - * Returns a zero initialized buffer to a new region of the vector which - * is extended at the end. The buffer must be consumed before other api - * calls that may affect the stack, including `extend_vector`. - * - * Do not use for strings, offset or union vectors. May be used for nested - * buffers, but these have dedicated calls to provide better alignment. - */ -void *flatcc_builder_extend_vector(flatcc_builder_t *B, size_t count); - -/** - * A specialized `vector_extend` that pushes a single element. - * - * Returns the buffer holding a modifiable copy of the added content, - * or null on error. Note: for structs, care must be taken to ensure - * the source has been zero padded. For this reason it may be better to - * use extend(B, 1) and assign specific fields instead. - */ -void *flatcc_builder_vector_push(flatcc_builder_t *B, const void *data); - -/** - * Pushes multiple elements at a time. - * - * Returns the buffer holding a modifiable copy of the added content, - * or null on error. - */ -void *flatcc_builder_append_vector(flatcc_builder_t *B, const void *data, size_t count); - -/** - * Removes elements already added to vector that has not been ended. - * For example, a vector of parsed list may remove the trailing comma, - * or the vector may simply overallocate to get some temporary working - * space. The total vector size must never become negative. - * - * Returns -1 if the count as larger than current count, or 0 on success. - */ -int flatcc_builder_truncate_vector(flatcc_builder_t *B, size_t count); - -/* - * Similar to `create_vector` but with references that get translated - * into offsets. The references must, as usual, belong to the current - * buffer. Strings, scalar and struct vectors can emit directly without - * stack allocation, but offset vectors must translate the offsets - * and therefore need the temporary space. Thus, this function is - * roughly equivalent to to start, append, end offset vector. - * - * See also `flatcc_builder_create_offset_vector_direct`. - */ -flatcc_builder_ref_t flatcc_builder_create_offset_vector(flatcc_builder_t *B, - const flatcc_builder_ref_t *data, size_t count); - -/* - * NOTE: this call takes non-const source array of references - * and destroys the content. - * - * This is a faster version of `create_offset_vector` where the - * source references are destroyed. In return the vector can be - * emitted directly without passing over the stack. - */ -flatcc_builder_ref_t flatcc_builder_create_offset_vector_direct(flatcc_builder_t *B, - flatcc_builder_ref_t *data, size_t count); - - -/** - * Starts a vector holding offsets to tables or strings. Before - * completion it will hold `flatcc_builder_ref_t` references because the - * offset is not known until the vector start location is known, which - * depends to the final size, which for parsers is generally unknown. - */ -int flatcc_builder_start_offset_vector(flatcc_builder_t *B); - -/** - * Similar to `end_vector` but updates all stored references so they - * become offsets to the vector start. - */ -flatcc_builder_ref_t flatcc_builder_end_offset_vector(flatcc_builder_t *B); - -/** - * Same as `flatcc_builder_end_offset_vector` except null references are - * permitted when the corresponding `type` entry is 0 (the 'NONE' type). - * This makes it possible to build union vectors with less overhead when - * the `type` vector is already known. Use standand offset vector calls - * prior to this call. - */ -flatcc_builder_ref_t flatcc_builder_end_offset_vector_for_unions(flatcc_builder_t *B, - const flatcc_builder_utype_t *type); - -/** Returns the number of elements currently on the stack. */ -size_t flatcc_builder_offset_vector_count(flatcc_builder_t *B); - -/** - * Returns a pointer ot the first vector element on stack, - * accessible up to the number of elements currently on stack. - */ -void *flatcc_builder_offset_vector_edit(flatcc_builder_t *B); - -/** - * Similar to `extend_vector` but returns a buffer indexable as - * `flatcc_builder_ref_t` array. All elements must be set to a valid - * unique non-null reference, but truncate and extend may be used to - * perform edits. Unused references will leave garbage in the buffer. - * References should not originate from any other buffer than the - * current, including parents and nested buffers. It is valid to reuse - * references in DAG form when contained in the sammer, excluding any - * nested, sibling or parent buffers. - */ -flatcc_builder_ref_t *flatcc_builder_extend_offset_vector(flatcc_builder_t *B, size_t count); - -/** Similar to truncate_vector. */ -int flatcc_builder_truncate_offset_vector(flatcc_builder_t *B, size_t count); - -/** - * A specialized extend that pushes a single element. - * - * Returns the buffer holding a modifiable copy of the added content, - * or null on error. - */ -flatcc_builder_ref_t *flatcc_builder_offset_vector_push(flatcc_builder_t *B, - flatcc_builder_ref_t ref); - -/** - * Takes an array of refs as argument to do a multi push operation. - * - * Returns the buffer holding a modifiable copy of the added content, - * or null on error. - */ -flatcc_builder_ref_t *flatcc_builder_append_offset_vector(flatcc_builder_t *B, - const flatcc_builder_ref_t *refs, size_t count); - -/** - * All union vector operations are like offset vector operations, - * except they take a struct with a type and a reference rather than - * just a reference. The finished union vector is returned as a struct - * of two references, one for the type vector and one for the table offset - * vector. Each reference goes to a separate table field where the type - * offset vector id must be one larger than the type vector. - */ - -/** - * Creates a union vector which is in reality two vectors, a type vector - * and an offset vector. Both vectors references are returned. - */ -flatcc_builder_union_vec_ref_t flatcc_builder_create_union_vector(flatcc_builder_t *B, - const flatcc_builder_union_ref_t *urefs, size_t count); - -/* - * NOTE: this call takes non-const source array of references - * and destroys the content. The type array remains intact. - * - * This is a faster version of `create_union_vector` where the source - * references are destroyed and where the types are given in a separate - * array. In return the vector can be emitted directly without passing - * over the stack. - * - * Unlike `create_offset_vector` we do allow null references but only if - * the union type is NONE (0). - */ -flatcc_builder_union_vec_ref_t flatcc_builder_create_union_vector_direct(flatcc_builder_t *B, - const flatcc_builder_utype_t *types, flatcc_builder_ref_t *data, size_t count); - -/* - * Creates just the type vector part of a union vector. This is - * similar to a normal `create_vector` call except that the size - * and alignment are given implicitly. Can be used during - * cloning or similar operations where the types are all given - * but the values must be handled one by one as prescribed by - * the type. The values can be added separately as an offset vector. - */ -flatcc_builder_ref_t flatcc_builder_create_type_vector(flatcc_builder_t *B, - const flatcc_builder_utype_t *types, size_t count); - -/** - * Starts a vector holding types and offsets to tables or strings. Before - * completion it will hold `flatcc_builder_union_ref_t` references because the - * offset is not known until the vector start location is known, which - * depends to the final size, which for parsers is generally unknown, - * and also because the union type must be separated out into a separate - * vector. It would not be practicaly to push on two different vectors - * during construction. - */ -int flatcc_builder_start_union_vector(flatcc_builder_t *B); - -/** - * Similar to `end_vector` but updates all stored references so they - * become offsets to the vector start and splits the union references - * into a type vector and an offset vector. - */ -flatcc_builder_union_vec_ref_t flatcc_builder_end_union_vector(flatcc_builder_t *B); - -/** Returns the number of elements currently on the stack. */ -size_t flatcc_builder_union_vector_count(flatcc_builder_t *B); - -/** - * Returns a pointer ot the first vector element on stack, - * accessible up to the number of elements currently on stack. - */ -void *flatcc_builder_union_vector_edit(flatcc_builder_t *B); - -/** - * Similar to `extend_offset_vector` but returns a buffer indexable as a - * `flatcc_builder_union_ref_t` array. All elements must be set to a valid - * unique non-null reference with a valid union type to match, or it - * must be null with a zero union type. - */ -flatcc_builder_union_ref_t *flatcc_builder_extend_union_vector(flatcc_builder_t *B, size_t count); - -/** Similar to truncate_vector. */ -int flatcc_builder_truncate_union_vector(flatcc_builder_t *B, size_t count); - -/** - * A specialized extend that pushes a single element. - * - * Returns the buffer holding a modifiable copy of the added content, - * or null on error. - */ -flatcc_builder_union_ref_t *flatcc_builder_union_vector_push(flatcc_builder_t *B, - flatcc_builder_union_ref_t uref); - -/** - * Takes an array of union_refs as argument to do a multi push operation. - * - * Returns the buffer holding a modifiable copy of the added content, - * or null on error. - */ -flatcc_builder_union_ref_t *flatcc_builder_append_union_vector(flatcc_builder_t *B, - const flatcc_builder_union_ref_t *urefs, size_t count); - -/** - * Faster string operation that avoids temporary stack storage. The - * string is not required to be zero-terminated, but is expected - * (unchecked) to be utf-8. Embedded zeroes would be allowed but - * ubyte vectors should be used for that. The resulting string will - * have a zero termination added, not included in length. - */ -flatcc_builder_ref_t flatcc_builder_create_string(flatcc_builder_t *B, - const char *s, size_t len); - -/** `create_string` up to zero termination of source. */ -flatcc_builder_ref_t flatcc_builder_create_string_str(flatcc_builder_t *B, - const char *s); - -/** - * `create_string` up to zero termination or at most max_len of source. - * - * Note that like `strncpy` it will include `max_len` characters if - * the source is longer than `max_len`, but unlike `strncpy` it will - * always add zero termination. - */ -flatcc_builder_ref_t flatcc_builder_create_string_strn(flatcc_builder_t *B, const char *s, size_t max_len); - -/** - * Starts an empty string that can be extended subsequently. - * - * While the string is being created, it is guaranteed that there is - * always a null character after the end of the current string length. - * This also holds after `extend` and `append` operations. It is not - * allowed to modify the null character. - * - * Returns 0 on success. - */ -int flatcc_builder_start_string(flatcc_builder_t *B); - -/** - * Similar to `extend_vector` except for the buffer return type and a - * slight speed advantage. Strings are expected to contain utf-8 content - * but this isn't verified, and null characters would be accepted. The - * length is given in bytes. - * - * Appending too much, then truncating can be used to trim string - * escapes during parsing, or convert between unicode formats etc. - */ -char *flatcc_builder_extend_string(flatcc_builder_t *B, size_t len); - -/** - * Concatenes a length of string. If the string contains zeroes (which - * it formally shouldn't), they will be copied in. - * - * Returns the buffer holding a modifiable copy of the added content, - * or null on error. - */ -char *flatcc_builder_append_string(flatcc_builder_t *B, const char *s, size_t len); - -/** `append_string` up to zero termination of source. */ -char *flatcc_builder_append_string_str(flatcc_builder_t *B, const char *s); - -/** `append_string` up zero termination or at most max_len of source. */ -char *flatcc_builder_append_string_strn(flatcc_builder_t *B, const char *s, size_t max_len); - -/** - * Similar to `truncate_vector` available for consistency and a slight - * speed advantage. Reduces string by `len` bytes - it does not set - * the length. The resulting length must not become negative. Zero - * termination is not counted. - * - * Returns -1 of the length becomes negative, 0 on success. - */ -int flatcc_builder_truncate_string(flatcc_builder_t *B, size_t len); - -/** - * Similar to `end_vector` but adds a trailing zero not included - * in the length. The trailing zero is added regardless of whatever - * zero content may exist in the provided string (although it - * formally should not contain any). - */ -flatcc_builder_ref_t flatcc_builder_end_string(flatcc_builder_t *B); - -/** Returns the length of string currently on the stack. */ -size_t flatcc_builder_string_len(flatcc_builder_t *B); - -/** - * Returns a ponter to the start of the string - * accessible up the length of string currently on the stack. - */ -char *flatcc_builder_string_edit(flatcc_builder_t *B); - - -/* - * Only for use with the default emitter. - * - * Fast acces to small buffers from default emitter. - * - * Only valid for default emitters before `flatcc_builder_clear`. The - * return buffer is not valid after a call to `flatcc_builder_reset` or - * `flatcc_builder_clear`. - * - * Returns null if the buffer size is too large to a have a linear - * memory representation or if the emitter is not the default. A valid - * size is between half and a full emitter page size depending on vtable - * content. - * - * Non-default emitters must be accessed by means specific to the - * particular emitter. - * - * If `size_out` is not null, it is set to the buffer size, or 0 if - * operation failed. - * - * The returned buffer should NOT be deallocated explicitly. - * - * The buffer size is the size reported by `flatcc_builder_get_buffer_size`. - */ -void *flatcc_builder_get_direct_buffer(flatcc_builder_t *B, size_t *size_out); - -/* - * Only for use with the default emitter. - * - * Default finalizer that allocates a buffer from the default emitter. - * - * Returns null if memory could not be allocated or if the emitter is - * not the default. This is just a convenience method - there are many - * other possible ways to extract the result of the emitter depending on - * use case. - * - * If `size_out` is not null, it is set to the buffer size, or 0 if - * operation failed. - * - * The allocated buffer is aligned according to malloc which may not be - * sufficient in advanced cases - for that purpose - * `flatcc_builder_finalize_aligned_buffer` may be used. - * - * It may be worth calling `flatcc_builder_get_direct_buffer` first to see - * if the buffer is small enough to avoid copying. - * - * The returned buffer must be deallocated using `free`. - */ -void *flatcc_builder_finalize_buffer(flatcc_builder_t *B, size_t *size_out); - -/* - * Only for use with the default emitter. - * - * Similar to `flatcc_builder_finalize_buffer` but ensures the returned - * memory is aligned to the overall alignment required for the buffer. - * Often it is not necessary unless special operations rely on larger - * alignments than the stored scalars. - * - * If `size_out` is not null, it is set to the buffer size, or 0 if - * operation failed. - * - * The returned buffer must be deallocated using `aligned_free` which is - * implemented via `flatcc_flatbuffers.h`. `free` will usually work but - * is not portable to platforms without posix_memalign or C11 - * aligned_alloc support. - * - * NOTE: if a library might be compiled with a version of aligned_free - * that differs from the application using it, use - * `flatcc_builder_aligned_free` to make sure the correct deallocation - * function is used. - */ -void *flatcc_builder_finalize_aligned_buffer(flatcc_builder_t *B, size_t *size_out); - -/* - * A stable implementation of `aligned_alloc` that is not sensitive - * to the applications compile time flags. - */ -void *flatcc_builder_aligned_alloc(size_t alignment, size_t size); - -/* - * A stable implementation of `aligned_free` that is not sensitive - * to the applications compile time flags. - */ -void flatcc_builder_aligned_free(void *p); - -/* - * Same allocation as `flatcc_builder_finalize_buffer` returnes. Usually - * same as `malloc` but can redefined via macros. - */ -void *flatcc_builder_alloc(size_t size); - -/* - * A stable implementation of `free` when the default allocation - * methods have been redefined. - * - * Deallocates memory returned from `flatcc_builder_finalize_buffer`. - */ -void flatcc_builder_free(void *p); - -/* - * Only for use with the default emitter. - * - * Convenience method to copy buffer from default emitter. Forwards - * call to default emitter and returns input pointer, or null if - * the emitter is not default or of the given size is smaller than - * the buffer size. - * - * Note: the `size` argument is the target buffers capacity, not the - * flatcc_builders buffer size. - * - * Other emitters have custom interfaces for reaching their content. - */ -void *flatcc_builder_copy_buffer(flatcc_builder_t *B, void *buffer, size_t size); - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_BUILDER_H */ diff --git a/nostrdb/flatcc/flatcc_emitter.h b/nostrdb/flatcc/flatcc_emitter.h deleted file mode 100644 index 11756f23f4..0000000000 --- a/nostrdb/flatcc/flatcc_emitter.h +++ /dev/null @@ -1,215 +0,0 @@ -#ifndef FLATCC_EMITTER_H -#define FLATCC_EMITTER_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Default implementation of a flatbuilder emitter. - * - * This may be used as a starting point for more advanced emitters, - * for example writing completed pages to disk or network and - * the recycling those pages. - */ - -#include -#include - -#include "flatcc_types.h" -#include "flatcc_iov.h" -#include "flatcc_alloc.h" - -/* - * The buffer steadily grows during emission but the design allows for - * an extension where individual pages can recycled before the buffer - * is complete, for example because they have been transmitted. - * - * When done, the buffer can be cleared to free all memory, or reset to - * maintain an adaptive page pool for next buffer construction. - * - * Unlike an exponentially growing buffer, each buffer page remains - * stable in memory until reset, clear or recycle is called. - * - * Design notes for possible extensions: - * - * The buffer is a ring buffer marked by a front and a back page. The - * front and back may be the same page and may initially be absent. - * Anything outside these pages are unallocated pages for recycling. - * Any page between (but excluding) the front and back pages may be - * recycled by unlinking and relinking outside the front and back pages - * but then copy operations no longer makes sense. Each page stores the - * logical offset within the buffer but isn't otherwise used by the - * implemention - it might be used for network transmission. The buffer - * is not explicitly designed for multithreaded access but any page - * strictly between front and back is not touched unless recycled and in - * this case aligned allocation is useful to prevent cache line sharing. - */ - -/* - * Memory is allocated in fixed length page units - the first page is - * split between front and back so each get half the page size. If the - * size is a multiple of 128 then each page offset will be a multiple of - * 64, which may be useful for sequencing etc. - */ -#ifndef FLATCC_EMITTER_PAGE_SIZE -#define FLATCC_EMITTER_MAX_PAGE_SIZE 3000 -#define FLATCC_EMITTER_PAGE_MULTIPLE 64 -#define FLATCC_EMITTER_PAGE_SIZE ((FLATCC_EMITTER_MAX_PAGE_SIZE) &\ - ~(2 * (FLATCC_EMITTER_PAGE_MULTIPLE) - 1)) -#endif - -#ifndef FLATCC_EMITTER_ALLOC -#ifdef FLATCC_EMITTER_USE_ALIGNED_ALLOC -/* - * does not always provide aligned_alloc, so include whatever - * is required when enabling this feature. - */ -#define FLATCC_EMITTER_ALLOC(n) aligned_alloc(FLATCC_EMITTER_PAGE_MULTIPLE,\ - (((n) + FLATCC_EMITTER_PAGE_MULTIPLE - 1) & ~(FLATCC_EMITTER_PAGE_MULTIPLE - 1))) -#ifndef FLATCC_EMITTER_FREE -#define FLATCC_EMITTER_FREE(p) aligned_free(p) -#endif -#endif -#endif - -#ifndef FLATCC_EMITTER_ALLOC -#define FLATCC_EMITTER_ALLOC(n) FLATCC_ALLOC(n) -#endif -#ifndef FLATCC_EMITTER_FREE -#define FLATCC_EMITTER_FREE(p) FLATCC_FREE(p) -#endif - -typedef struct flatcc_emitter_page flatcc_emitter_page_t; -typedef struct flatcc_emitter flatcc_emitter_t; - -struct flatcc_emitter_page { - uint8_t page[FLATCC_EMITTER_PAGE_SIZE]; - flatcc_emitter_page_t *next; - flatcc_emitter_page_t *prev; - /* - * The offset is relative to page start, but not necessarily - * to any present content if part of front or back page, - * and undefined for unused pages. - */ - flatbuffers_soffset_t page_offset; -}; - -/* - * Must be allocated and zeroed externally, e.g. on the stack - * then provided as emit_context to the flatbuilder along - * with the `flatcc_emitter` function. - */ -struct flatcc_emitter { - flatcc_emitter_page_t *front, *back; - uint8_t *front_cursor; - size_t front_left; - uint8_t *back_cursor; - size_t back_left; - size_t used; - size_t capacity; - size_t used_average; -}; - -/* Optional helper to ensure emitter is zeroed initially. */ -static inline void flatcc_emitter_init(flatcc_emitter_t *E) -{ - memset(E, 0, sizeof(*E)); -} - -/* Deallocates all buffer memory making the emitter ready for next use. */ -void flatcc_emitter_clear(flatcc_emitter_t *E); - -/* - * Similar to `clear_flatcc_emitter` but heuristacally keeps some allocated - * memory between uses while gradually reducing peak allocations. - * For small buffers, a single page will remain available with no - * additional allocations or deallocations after first use. - */ -void flatcc_emitter_reset(flatcc_emitter_t *E); - -/* - * Helper function that allows a page between front and back to be - * recycled while the buffer is still being constructed - most likely as part - * of partial copy or transmission. Attempting to recycle front or back - * pages will result in an error. Recycling pages outside the - * front and back will be valid but pointless. After recycling and copy - * operations are no longer well-defined and should be replaced with - * whatever logic is recycling the pages. The reset operation - * automatically recycles all (remaining) pages when emission is - * complete. After recycling, the `flatcc_emitter_size` function will - * return as if recycle was not called, but will only represent the - * logical size, not the size of the active buffer. Because a recycled - * page is fully utilized, it is fairly easy to compensate for this if - * required. - * - * Returns 0 on success. - */ -int flatcc_emitter_recycle_page(flatcc_emitter_t *E, flatcc_emitter_page_t *p); - -/* - * The amount of data copied with `flatcc_emitter_copy_buffer` and related - * functions. Normally called at end of buffer construction but is - * always valid, as is the copy functions. The size is a direct - * function of the amount emitted data so the flatbuilder itself can - * also provide this information. - */ -static inline size_t flatcc_emitter_get_buffer_size(flatcc_emitter_t *E) -{ - return E->used; -} - -/* - * Returns buffer start iff the buffer fits on a single internal page. - * Only useful for fairly small buffers - about half the page size since - * one half of first page goes to vtables that likely use little space. - * Returns null if request could not be served. - * - * If `size_out` is not null, it is set to the buffer size, or 0 if - * operation failed. - */ -static inline void *flatcc_emitter_get_direct_buffer(flatcc_emitter_t *E, size_t *size_out) -{ - if (E->front == E->back) { - if (size_out) { - *size_out = E->used; - } - return E->front_cursor; - } - if (size_out) { - *size_out = 0; - } - return 0; -} - -/* - * Copies the internal flatcc_emitter representation to an externally - * provided linear buffer that must have size `flatcc_emitter_get_size`. - * - * If pages have been recycled, only the remaining pages will be copied - * and thus less data than what `flatcc_emitter_get_size` would suggest. It - * makes more sense to provide a customized copy operation when - * recycling pages. - * - * If the buffer is too small, nothing is copied, otherwise the - * full buffer is copied and the input buffer is returned. - */ -void *flatcc_emitter_copy_buffer(flatcc_emitter_t *E, void *buf, size_t size); - -/* - * The emitter interface function to the flatbuilder API. - * `emit_context` should be of type `flatcc_emitter_t` for this - * particular implementation. - * - * This function is compatible with the `flatbuilder_emit_fun` - * type defined in "flatbuilder.h". - */ -int flatcc_emitter(void *emit_context, - const flatcc_iovec_t *iov, int iov_count, - flatbuffers_soffset_t offset, size_t len); - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_EMITTER_H */ diff --git a/nostrdb/flatcc/flatcc_endian.h b/nostrdb/flatcc/flatcc_endian.h deleted file mode 100644 index d16f72c89a..0000000000 --- a/nostrdb/flatcc/flatcc_endian.h +++ /dev/null @@ -1,125 +0,0 @@ -#ifndef FLATCC_ENDIAN_H -#define FLATCC_ENDIAN_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * This file provides helper macros to define type-specific macros and - * inline functions that convert between stored data and native data - * indedpently of both native (host) endianness and protocol endianness - * (i.e. the serialized endian format). - * - * To detect endianness correctly ensure one of the following is defined. - * - * __LITTLE_ENDIAN__ - * __BIG_ENDIAN__ - * FLATBUFFERS_LITTLEENDIAN=1 - * FLATBUFFERS_LITTLEENDIAN=0 - * - * Note: the Clang compiler likely already does this, but other - * compilers may have their own way, if at all. - * - * It is also necessary to include or a compatible - * implementation in order to provide: - * - * le16toh, le32to, le64toh, be16toh, be32toh, be64toh, - * htole16, htole32, htole64, htobe16, htobe32, htobe64. - * - * A simple way to ensure all of the above for most platforms is - * to include the portable endian support file: - * - * #include "flatcc/portable/pendian.h" - * - * It is also necessary to include - * - * #include "flatcc/flatcc_types.h" - * - * or an equivalent file. This makes it possible to change the - * endianness of the serialized data and the sizes of flatbuffer - * specific types such as `uoffset_t`. - * - * Note: the mentioned include files are likely already included - * by the file including this file, at least for the default - * configuration. - */ - -#ifndef UINT8_t -#include -#endif - -/* These are needed to simplify accessor macros and are not found in . */ -#ifndef le8toh -#define le8toh(n) (n) -#endif - -#ifndef be8toh -#define be8toh(n) (n) -#endif - -#ifndef htole8 -#define htole8(n) (n) -#endif - -#ifndef htobe8 -#define htobe8(n) (n) -#endif - -#include "flatcc_accessors.h" - -/* This is the binary encoding endianness, usually LE for flatbuffers. */ -#if FLATBUFFERS_PROTOCOL_IS_LE -#define flatbuffers_endian le -#elif FLATBUFFERS_PROTOCOL_IS_BE -#define flatbuffers_endian be -#else -#error "flatbuffers has no defined endiannesss" -#endif - - __flatcc_define_basic_scalar_accessors(flatbuffers_, flatbuffers_endian) - - __flatcc_define_integer_accessors(flatbuffers_bool, flatbuffers_bool_t, - FLATBUFFERS_BOOL_WIDTH, flatbuffers_endian) - __flatcc_define_integer_accessors(flatbuffers_union_type, flatbuffers_union_type_t, - FLATBUFFERS_UTYPE_WIDTH, flatbuffers_endian) - - __flatcc_define_integer_accessors(__flatbuffers_uoffset, flatbuffers_uoffset_t, - FLATBUFFERS_UOFFSET_WIDTH, flatbuffers_endian) - __flatcc_define_integer_accessors(__flatbuffers_soffset, flatbuffers_soffset_t, - FLATBUFFERS_SOFFSET_WIDTH, flatbuffers_endian) - __flatcc_define_integer_accessors(__flatbuffers_voffset, flatbuffers_voffset_t, - FLATBUFFERS_VOFFSET_WIDTH, flatbuffers_endian) - __flatcc_define_integer_accessors(__flatbuffers_utype, flatbuffers_utype_t, - FLATBUFFERS_UTYPE_WIDTH, flatbuffers_endian) - __flatcc_define_integer_accessors(__flatbuffers_thash, flatbuffers_thash_t, - FLATBUFFERS_THASH_WIDTH, flatbuffers_endian) - -/* flatcc/portable/pendian.h sets LITTLE/BIG flags if possible, and always defines le16toh. */ -#ifndef flatbuffers_is_native_pe -#if defined(__LITTLE_ENDIAN__) || FLATBUFFERS_LITTLEENDIAN -#undef FLATBUFFERS_LITTLEENDIAN -#define FLATBUFFERS_LITTLEENDIAN 1 -#define flatbuffers_is_native_pe() (FLATBUFFERS_PROTOCOL_IS_LE) -#elif defined(__BIG_ENDIAN__) || (defined(FLATBUFFERS_LITTLEENDIAN) && !FLATBUFFERS_LITTLEENDIAN) -#undef FLATBUFFERS_LITTLEENDIAN -#define FLATBUFFERS_LITTLEENDIAN 0 -#define flatbuffers_is_native_pe() (FLATBUFFERS_PROTOCOL_IS_BE) -#else -#define flatbuffers_is_native_pe() (__FLATBUFFERS_CONCAT(flatbuffers_endian, 16toh)(1) == 1) -#endif -#endif - -#ifndef flatbuffers_is_native_le -#define flatbuffers_is_native_le() flatbuffers_is_native_pe() -#endif - -#ifndef flatbuffers_is_native_be -#define flatbuffers_is_native_be() (!flatbuffers_is_native_pe()) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_ENDIAN_H */ diff --git a/nostrdb/flatcc/flatcc_epilogue.h b/nostrdb/flatcc/flatcc_epilogue.h deleted file mode 100644 index 915f0050f3..0000000000 --- a/nostrdb/flatcc/flatcc_epilogue.h +++ /dev/null @@ -1,8 +0,0 @@ -/* Include guard intentionally left out. */ - -#ifdef __cplusplus -} -#endif - -#include "portable/pdiagnostic_pop.h" - diff --git a/nostrdb/flatcc/flatcc_flatbuffers.h b/nostrdb/flatcc/flatcc_flatbuffers.h deleted file mode 100644 index 7e2ca96ba7..0000000000 --- a/nostrdb/flatcc/flatcc_flatbuffers.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Even C11 compilers depend on clib support for `static_assert` which - * isn't always present, so we deal with this here for all compilers. - * - * Outside include guard to handle scope counter. - */ -#include "portable/pstatic_assert.h" - -#ifndef FLATCC_FLATBUFFERS_H -#define FLATCC_FLATBUFFERS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef flatcc_flatbuffers_defined -#define flatcc_flatbuffers_defined - -#ifdef FLATCC_PORTABLE -#include "flatcc_portable.h" -#endif -#include "portable/pwarnings.h" -/* Needed by C99 compilers without FLATCC_PORTABLE. */ -#include "portable/pstdalign.h" - -/* Handle fallthrough attribute in switch statements. */ -#include "portable/pattributes.h" - -#include "flatcc_alloc.h" -#include "flatcc_assert.h" - -#define __FLATBUFFERS_PASTE2(a, b) a ## b -#define __FLATBUFFERS_PASTE3(a, b, c) a ## b ## c -#define __FLATBUFFERS_CONCAT(a, b) __FLATBUFFERS_PASTE2(a, b) - -/* - * "flatcc_endian.h" requires the preceeding include files, - * or compatible definitions. - */ -#include "portable/pendian.h" -#include "flatcc_types.h" -#include "flatcc_endian.h" -#include "flatcc_identifier.h" - -#ifndef FLATBUFFERS_WRAP_NAMESPACE -#define FLATBUFFERS_WRAP_NAMESPACE(ns, x) ns ## _ ## x -#endif - -#endif /* flatcc_flatbuffers_defined */ - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_FLATBUFFERS_H */ diff --git a/nostrdb/flatcc/flatcc_identifier.h b/nostrdb/flatcc/flatcc_identifier.h deleted file mode 100644 index 825f0fdaf8..0000000000 --- a/nostrdb/flatcc/flatcc_identifier.h +++ /dev/null @@ -1,148 +0,0 @@ -#ifndef FLATCC_IDENTIFIER_H -#define FLATCC_IDENTIFIER_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef FLATCC_FLATBUFFERS_H -#error "include via flatcc/flatcc_flatbuffers.h" -#endif - -#ifndef UINT8_MAX -#include -#endif - -/* - * FlatBuffers identifiers are normally specified by "file_identifer" in - * the schema, but a standard hash of the fully qualified type name can - * also be used. This file implements such a mapping, but the generated - * headers also contain the necessary information for known types. - */ - - -/* - * Returns the type hash of a given name in native endian format. - * Generated code already provides these, but if a name was changed - * in the schema it may be relevant to recompute the hash manually. - * - * The wire-format of this value should always be little endian. - * - * Note: this must be the fully qualified name, e.g. in the namespace - * "MyGame.Example": - * - * flatbuffers_type_hash_from_name("MyGame.Example.Monster"); - * - * or, in the global namespace just: - * - * flatbuffers_type_hash_from_name("MyTable"); - * - * This assumes 32 bit hash type. For other sizes, other FNV-1a - * constants would be required. - * - * Note that we reserve hash value 0 for missing or ignored value. - */ -static inline flatbuffers_thash_t flatbuffers_type_hash_from_name(const char *name) -{ - uint32_t hash = UINT32_C(2166136261); - while (*name) { - hash ^= (unsigned char)*name; - hash = hash * UINT32_C(16777619); - ++name; - } - if (hash == 0) { - hash = UINT32_C(2166136261); - } - return hash; -} - -/* - * Type hash encoded as little endian file identifier string. - * Note: if type hash is 0, the identifier should be null which - * we cannot return in this interface. - */ -static inline void flatbuffers_identifier_from_type_hash(flatbuffers_thash_t type_hash, flatbuffers_fid_t out_identifier) -{ - out_identifier[0] = (char)(type_hash & 0xff); - type_hash >>= 8; - out_identifier[1] = (char)(type_hash & 0xff); - type_hash >>= 8; - out_identifier[2] = (char)(type_hash & 0xff); - type_hash >>= 8; - out_identifier[3] = (char)(type_hash & 0xff); -} - -/* Native integer encoding of file identifier. */ -static inline flatbuffers_thash_t flatbuffers_type_hash_from_identifier(const flatbuffers_fid_t identifier) -{ - uint8_t *p = (uint8_t *)identifier; - - return identifier ? - (uint32_t)p[0] + (((uint32_t)p[1]) << 8) + (((uint32_t)p[2]) << 16) + (((uint32_t)p[3]) << 24) : 0; -} - -/* - * Convert a null terminated string identifier like "MONS" or "X" into a - * native type hash identifier, usually for comparison. This will not - * work with type hash strings because they can contain null bytes. - */ -static inline flatbuffers_thash_t flatbuffers_type_hash_from_string(const char *identifier) -{ - flatbuffers_thash_t h = 0; - const uint8_t *p = (const uint8_t *)identifier; - - if (!p[0]) return h; - h += ((flatbuffers_thash_t)p[0]); - if (!p[1]) return h; - h += ((flatbuffers_thash_t)p[1]) << 8; - if (!p[2]) return h; - h += ((flatbuffers_thash_t)p[2]) << 16; - /* No need to test for termination here. */ - h += ((flatbuffers_thash_t)p[3]) << 24; - return h; -} - -/* - * Computes the little endian wire format of the type hash. It can be - * used as a file identifer argument to various flatcc buffer calls. - * - * `flatbuffers_fid_t` is just `char [4]` for the default flatbuffers - * type system defined in `flatcc/flatcc_types.h`. - */ -static inline void flatbuffers_identifier_from_name(const char *name, flatbuffers_fid_t out_identifier) -{ - flatbuffers_identifier_from_type_hash(flatbuffers_type_hash_from_name(name), out_identifier); -} - -/* - * This is a collision free hash (a permutation) of the type hash to - * provide better distribution for use in hash tables. It is likely not - * necessary in praxis, and for uniqueness of identifiers it provides no - * advantage over just using the FNV-1a type hash, except when truncating - * the identifier to less than 32-bits. - * - * Note: the output should not be used in transmission. It provides no - * additional information and just complicates matters. Furthermore, the - * unmodified type hash has the benefit that it can seed a child namespace. - */ -static inline uint32_t flatbuffers_disperse_type_hash(flatbuffers_thash_t type_hash) -{ - /* http://stackoverflow.com/a/12996028 */ - uint32_t x = type_hash; - - x = ((x >> 16) ^ x) * UINT32_C(0x45d9f3b); - x = ((x >> 16) ^ x) * UINT32_C(0x45d9f3b); - x = ((x >> 16) ^ x); - return x; -} - - -/* We have hardcoded assumptions about identifier size. */ -static_assert(sizeof(flatbuffers_fid_t) == 4, "unexpected file identifier size"); -static_assert(sizeof(flatbuffers_thash_t) == 4, "unexpected type hash size"); - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_IDENTIFIER_H */ diff --git a/nostrdb/flatcc/flatcc_iov.h b/nostrdb/flatcc/flatcc_iov.h deleted file mode 100644 index a6d27f8802..0000000000 --- a/nostrdb/flatcc/flatcc_iov.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef FLATCC_IOV_H -#define FLATCC_IOV_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* - * The emitter receives one, or a few buffers at a time via - * this type. compatible iovec structure used for - * allocation and emitter interface. - */ -typedef struct flatcc_iovec flatcc_iovec_t; -struct flatcc_iovec { - void *iov_base; - size_t iov_len; -}; - -/* - * The largest iovec vector the builder will issue. It will - * always be a relatively small number. - */ -#define FLATCC_IOV_COUNT_MAX 8 - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_IOV_H */ diff --git a/nostrdb/flatcc/flatcc_json_parser.h b/nostrdb/flatcc/flatcc_json_parser.h deleted file mode 100644 index 1fa13764f0..0000000000 --- a/nostrdb/flatcc/flatcc_json_parser.h +++ /dev/null @@ -1,909 +0,0 @@ -#ifndef FLATCC_JSON_PARSE_H -#define FLATCC_JSON_PARSE_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * JSON RFC: - * http://www.ietf.org/rfc/rfc4627.txt?number=4627 - * - * With several flatbuffers specific extensions. - */ - -#include -#include - -#include "flatcc_rtconfig.h" -#include "flatcc_builder.h" -#include "flatcc_unaligned.h" - -#define PDIAGNOSTIC_IGNORE_UNUSED -#include "portable/pdiagnostic_push.h" - -typedef uint32_t flatcc_json_parser_flags_t; -static const flatcc_json_parser_flags_t flatcc_json_parser_f_skip_unknown = 1; -static const flatcc_json_parser_flags_t flatcc_json_parser_f_force_add = 2; -static const flatcc_json_parser_flags_t flatcc_json_parser_f_with_size = 4; -static const flatcc_json_parser_flags_t flatcc_json_parser_f_skip_array_overflow = 8; -static const flatcc_json_parser_flags_t flatcc_json_parser_f_reject_array_underflow = 16; - -#define FLATCC_JSON_PARSE_ERROR_MAP(XX) \ - XX(ok, "ok") \ - XX(eof, "eof") \ - XX(deep_nesting, "deep nesting") \ - XX(trailing_comma, "trailing comma") \ - XX(expected_colon, "expected colon") \ - XX(unexpected_character, "unexpected character") \ - XX(invalid_numeric, "invalid numeric") \ - XX(overflow, "overflow") \ - XX(underflow, "underflow") \ - XX(unbalanced_array, "unbalanced array") \ - XX(unbalanced_object, "unbalanced object") \ - XX(precision_loss, "precision loss") \ - XX(float_unexpected, "float unexpected") \ - XX(unknown_symbol, "unknown symbol") \ - XX(unquoted_symbolic_list, "unquoted list of symbols") \ - XX(unknown_union, "unknown union type") \ - XX(expected_string, "expected string") \ - XX(invalid_character, "invalid character") \ - XX(invalid_escape, "invalid escape") \ - XX(invalid_type, "invalid type") \ - XX(unterminated_string, "unterminated string") \ - XX(expected_object, "expected object") \ - XX(expected_array, "expected array") \ - XX(expected_scalar, "expected literal or symbolic scalar") \ - XX(expected_union_type, "expected union type") \ - XX(union_none_present, "union present with type NONE") \ - XX(union_none_not_null, "union of type NONE is not null") \ - XX(union_incomplete, "table has incomplete union") \ - XX(duplicate, "table has duplicate field") \ - XX(required, "required field missing") \ - XX(union_vector_length, "union vector length mismatch") \ - XX(base64, "invalid base64 content") \ - XX(base64url, "invalid base64url content") \ - XX(array_underflow, "fixed length array underflow") \ - XX(array_overflow, "fixed length array overflow") \ - XX(runtime, "runtime error") \ - XX(not_supported, "not supported") - -enum flatcc_json_parser_error_no { -#define XX(no, str) flatcc_json_parser_error_##no, - FLATCC_JSON_PARSE_ERROR_MAP(XX) -#undef XX -}; - -const char *flatcc_json_parser_error_string(int err); - -#define flatcc_json_parser_ok flatcc_json_parser_error_ok -#define flatcc_json_parser_eof flatcc_json_parser_error_eof - -/* - * The struct may be zero initialized in which case the line count will - * start at line zero, or the line may be set to 1 initially. The ctx - * is only used for error reporting and tracking non-standard unquoted - * ctx. - * - * `ctx` may for example hold a flatcc_builder_t pointer. - */ -typedef struct flatcc_json_parser_ctx flatcc_json_parser_t; -struct flatcc_json_parser_ctx { - flatcc_builder_t *ctx; - const char *line_start; - flatcc_json_parser_flags_t flags; -#if FLATCC_JSON_PARSE_ALLOW_UNQUOTED - int unquoted; -#endif - - int line, pos; - int error; - const char *start; - const char *end; - const char *error_loc; - /* Set at end of successful parse. */ - const char *end_loc; -}; - -static inline int flatcc_json_parser_get_error(flatcc_json_parser_t *ctx) -{ - return ctx->error; -} - -static inline void flatcc_json_parser_init(flatcc_json_parser_t *ctx, flatcc_builder_t *B, const char *buf, const char *end, flatcc_json_parser_flags_t flags) -{ - memset(ctx, 0, sizeof(*ctx)); - ctx->ctx = B; - ctx->line_start = buf; - ctx->line = 1; - ctx->flags = flags; - /* These are not needed for parsing, but may be helpful in reporting etc. */ - ctx->start = buf; - ctx->end = end; - ctx->error_loc = buf; -} - -const char *flatcc_json_parser_set_error(flatcc_json_parser_t *ctx, const char *loc, const char *end, int reason); - -/* - * Wide space is not necessarily beneficial in the typical space, but it - * also isn't expensive so it may be added when there are applications - * that can benefit. - */ -const char *flatcc_json_parser_space_ext(flatcc_json_parser_t *ctx, const char *buf, const char *end); - -static inline const char *flatcc_json_parser_space(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - if (end - buf > 1) { - if (buf[0] > 0x20) { - return buf; - } - if (buf[0] == 0x20 && buf[1] > 0x20) { - return buf + 1; - } - } - return flatcc_json_parser_space_ext(ctx, buf, end); -} - - -static inline const char *flatcc_json_parser_string_start(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - if (buf == end || *buf != '\"') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_expected_string); - } - return ++buf; -} - -static inline const char *flatcc_json_parser_string_end(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - if (buf == end || *buf != '\"') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unterminated_string); - } - return ++buf; -} - -/* - * Parse a string as a fixed length char array as `s` with length `n`. - * and raise errors according to overflow/underflow runtime flags. Zero - * and truncate as needed. A trailing zero is not inserted if the input - * is at least the same length as the char array. - * - * Runtime flags: `skip_array_overflow`, `pad_array_underflow`. - */ -const char *flatcc_json_parser_char_array(flatcc_json_parser_t *ctx, - const char *buf, const char *end, char *s, size_t n); - -/* - * Creates a string. Returns *ref == 0 on unrecoverable error or - * sets *ref to a valid new string reference. - */ -const char *flatcc_json_parser_build_string(flatcc_json_parser_t *ctx, - const char *buf, const char *end, flatcc_builder_ref_t *ref); - -typedef char flatcc_json_parser_escape_buffer_t[5]; -/* - * If the buffer does not hold a valid escape sequence, an error is - * returned with code[0] = 0/ - * - * Otherwise code[0] the length (1-4) of the remaining - * characters in the code, transcoded from the escape sequence - * where a length of 4 only happens with escapaped surrogate pairs. - * - * The JSON extension `\xXX` is supported and may produced invalid UTF-8 - * characters such as 0xff. The standard JSON escape `\uXXXX` is not - * checked for invalid code points and may produce invalid UTF-8. - * - * Regular characters are expected to valid UTF-8 but they are not checked - * and may therefore produce invalid UTF-8. - * - * Control characters within a string are rejected except in the - * standard JSON escpaped form for `\n \r \t \b \f`. - * - * Additional escape codes as per standard JSON: `\\ \/ \"`. - */ -const char *flatcc_json_parser_string_escape(flatcc_json_parser_t *ctx, const char *buf, const char *end, flatcc_json_parser_escape_buffer_t code); - -/* - * Parses the longest unescaped run of string content followed by either - * an escape encoding, string termination, or error. - */ -const char *flatcc_json_parser_string_part(flatcc_json_parser_t *ctx, const char *buf, const char *end); - -static inline const char *flatcc_json_parser_symbol_start(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - if (buf == end) { - return buf; - } - if (*buf == '\"') { - ++buf; -#if FLATCC_JSON_PARSE_ALLOW_UNQUOTED - ctx->unquoted = 0; -#endif - } else { -#if FLATCC_JSON_PARSE_ALLOW_UNQUOTED - if (*buf == '.') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unexpected_character); - } - ctx->unquoted = 1; -#else - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unexpected_character); -#endif - } - return buf; -} - -static inline uint64_t flatcc_json_parser_symbol_part_ext(const char *buf, const char *end) -{ - uint64_t w = 0; - size_t n = (size_t)(end - buf); - const uint8_t *ubuf = (const uint8_t*)buf; - - if (n > 8) { - n = 8; - } - /* This can bloat inlining for a rarely executed case. */ -#if 1 - switch (n) { - case 8: - w |= ((uint64_t)ubuf[7]) << (0 * 8); - goto lbl_n_7; - case 7: -lbl_n_7: - w |= ((uint64_t)ubuf[6]) << (1 * 8); - goto lbl_n_6; - case 6: -lbl_n_6: - w |= ((uint64_t)ubuf[5]) << (2 * 8); - goto lbl_n_5; - case 5: -lbl_n_5: - w |= ((uint64_t)ubuf[4]) << (3 * 8); - goto lbl_n_4; - case 4: -lbl_n_4: - w |= ((uint64_t)ubuf[3]) << (4 * 8); - goto lbl_n_3; - case 3: -lbl_n_3: - w |= ((uint64_t)ubuf[2]) << (5 * 8); - goto lbl_n_2; - case 2: -lbl_n_2: - w |= ((uint64_t)ubuf[1]) << (6 * 8); - goto lbl_n_1; - case 1: -lbl_n_1: - w |= ((uint64_t)ubuf[0]) << (7 * 8); - break; - case 0: - break; - } -#else - /* But this is hardly much of an improvement. */ - { - size_t i; - for (i = 0; i < n; ++i) { - w <<= 8; - if (i < n) { - w = buf[i]; - } - } - } -#endif - return w; -} - -/* - * Read out string as a big endian word. This allows for trie lookup, - * also when trailing characters are beyond keyword. This assumes the - * external words tested against are valid and therefore there need be - * no checks here. If a match is not made, the symbol_end function will - * consume and check any unmatched content - from _before_ this function - * was called - i.e. the returned buffer is tentative for use only if we - * accept the part returned here. - * - * Used for both symbols and symbolic constants. - */ -static inline uint64_t flatcc_json_parser_symbol_part(const char *buf, const char *end) -{ - size_t n = (size_t)(end - buf); - -#if FLATCC_ALLOW_UNALIGNED_ACCESS - if (n >= 8) { - return be64toh(*(uint64_t *)buf); - } -#endif - return flatcc_json_parser_symbol_part_ext(buf, end); -} - -/* Don't allow space in dot notation neither inside nor outside strings. */ -static inline const char *flatcc_json_parser_match_scope(flatcc_json_parser_t *ctx, const char *buf, const char *end, int pos) -{ - const char *mark = buf; - - (void)ctx; - - if (end - buf <= pos) { - return mark; - } - if (buf[pos] != '.') { - return mark; - } - return buf + pos + 1; -} - -const char *flatcc_json_parser_match_constant(flatcc_json_parser_t *ctx, const char *buf, const char *end, int pos, int *more); - -/* We allow '.' in unquoted symbols, but not at the start or end. */ -static inline const char *flatcc_json_parser_symbol_end(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - char c, clast = 0; - - -#if FLATCC_JSON_PARSE_ALLOW_UNQUOTED - if (ctx->unquoted) { - while (buf != end && *buf > 0x20) { - clast = c = *buf; - if (c == '_' || c == '.' || (c & 0x80) || (c >= '0' && c <= '9')) { - ++buf; - continue; - } - /* Lower case. */ - c |= 0x20; - if (c >= 'a' && c <= 'z') { - ++buf; - continue; - } - break; - } - if (clast == '.') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unexpected_character); - } - } else { -#else - { -#endif - while (buf != end && *buf != '\"') { - if (*buf == '\\') { - if (end - buf < 2) { - break; - } - ++buf; - } - ++buf; - } - if (buf == end || *buf != '\"') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unterminated_string); - } - ++buf; - } - return buf; -} - -static inline const char *flatcc_json_parser_constant_start(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - buf = flatcc_json_parser_symbol_start(ctx, buf, end); -#if FLATCC_JSON_PARSE_ALLOW_UNQUOTED - if (!ctx->unquoted) { -#else - { -#endif - buf = flatcc_json_parser_space(ctx, buf, end); - } - return buf; -} - -static inline const char *flatcc_json_parser_object_start(flatcc_json_parser_t *ctx, const char *buf, const char *end, int *more) -{ - if (buf == end || *buf != '{') { - *more = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_expected_object); - } - buf = flatcc_json_parser_space(ctx, buf + 1, end); - if (buf != end && *buf == '}') { - *more = 0; - return flatcc_json_parser_space(ctx, buf + 1, end); - } - *more = 1; - return buf; -} - -static inline const char *flatcc_json_parser_object_end(flatcc_json_parser_t *ctx, const char *buf, - const char *end, int *more) -{ - buf = flatcc_json_parser_space(ctx, buf, end); - if (buf == end) { - *more = 0; - return buf; - } - if (*buf != ',') { - *more = 0; - if (*buf != '}') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unbalanced_object); - } else { - return flatcc_json_parser_space(ctx, buf + 1, end); - } - } - buf = flatcc_json_parser_space(ctx, buf + 1, end); - if (buf == end) { - *more = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unbalanced_object); - } -#if FLATCC_JSON_PARSE_ALLOW_TRAILING_COMMA - if (*buf == '}') { - *more = 0; - return flatcc_json_parser_space(ctx, buf + 1, end); - } -#endif - *more = 1; - return buf; -} - -static inline const char *flatcc_json_parser_array_start(flatcc_json_parser_t *ctx, const char *buf, const char *end, int *more) -{ - if (buf == end || *buf != '[') { - *more = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_expected_array); - } - buf = flatcc_json_parser_space(ctx, buf + 1, end); - if (buf != end && *buf == ']') { - *more = 0; - return flatcc_json_parser_space(ctx, buf + 1, end); - } - *more = 1; - return buf; -} - -static inline const char *flatcc_json_parser_array_end(flatcc_json_parser_t *ctx, const char *buf, - const char *end, int *more) -{ - buf = flatcc_json_parser_space(ctx, buf, end); - if (buf == end) { - *more = 0; - return buf; - } - if (*buf != ',') { - *more = 0; - if (*buf != ']') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unbalanced_array); - } else { - return flatcc_json_parser_space(ctx, buf + 1, end); - } - } - buf = flatcc_json_parser_space(ctx, buf + 1, end); - if (buf == end) { - *more = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unbalanced_array); - } -#if FLATCC_JSON_PARSE_ALLOW_TRAILING_COMMA - if (*buf == ']') { - *more = 0; - return flatcc_json_parser_space(ctx, buf + 1, end); - } -#endif - *more = 1; - return buf; -} - -/* - * Detects if a symbol terminates at a given `pos` relative to the - * buffer pointer, or return fast. - * - * Failure to match is not an error but a recommendation to try - * alternative longer suffixes - only if such do not exist will - * there be an error. If a match was not eventually found, - * the `flatcc_json_parser_unmatched_symbol` should be called to consume - * the symbol and generate error messages. - * - * If a match was detected, ':' and surrounding space is consumed, - * or an error is generated. - */ -static inline const char *flatcc_json_parser_match_symbol(flatcc_json_parser_t *ctx, const char *buf, - const char *end, int pos) -{ - const char *mark = buf; - - if (end - buf <= pos) { - return mark; - } -#if FLATCC_JSON_PARSE_ALLOW_UNQUOTED - if (ctx->unquoted) { - if (buf[pos] > 0x20 && buf[pos] != ':') { - return mark; - } - buf += pos; - ctx->unquoted = 0; - } else { -#else - { -#endif - if (buf[pos] != '\"') { - return mark; - } - buf += pos + 1; - } - buf = flatcc_json_parser_space(ctx, buf, end); - if (buf != end && *buf == ':') { - ++buf; - return flatcc_json_parser_space(ctx, buf, end); - } - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_expected_colon); -} - -static inline const char *flatcc_json_parser_match_type_suffix(flatcc_json_parser_t *ctx, const char *buf, const char *end, int pos) -{ - if (end - buf <= pos + 5) { - return buf; - } - if (memcmp(buf + pos, "_type", 5)) { - return buf; - } - return flatcc_json_parser_match_symbol(ctx, buf, end, pos + 5); -} - -const char *flatcc_json_parser_unmatched_symbol(flatcc_json_parser_t *ctx, const char *buf, const char *end); - -static inline const char *flatcc_json_parser_coerce_uint64( - flatcc_json_parser_t *ctx, const char *buf, - const char *end, int value_sign, uint64_t value, uint64_t *v) -{ - if (value_sign) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_underflow); - } - *v = value; - return buf; -} - -static inline const char *flatcc_json_parser_coerce_bool(flatcc_json_parser_t *ctx, const char *buf, - const char *end, int value_sign, uint64_t value, uint8_t *v) -{ - if (value_sign) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_underflow); - } - *v = (uint8_t)!!value; - return buf; -} - -#define __flatcc_json_parser_define_coerce_unsigned(type, basetype, uctype) \ -static inline const char *flatcc_json_parser_coerce_ ## type( \ - flatcc_json_parser_t *ctx, const char *buf, \ - const char *end, int value_sign, uint64_t value, basetype *v) \ -{ \ - if (value_sign) { \ - return flatcc_json_parser_set_error(ctx, buf, end, \ - flatcc_json_parser_error_underflow); \ - } \ - if (value > uctype ## _MAX) { \ - return flatcc_json_parser_set_error(ctx, buf, end, \ - flatcc_json_parser_error_overflow); \ - } \ - *v = (basetype)value; \ - return buf; \ -} - -__flatcc_json_parser_define_coerce_unsigned(uint32, uint32_t, UINT32) -__flatcc_json_parser_define_coerce_unsigned(uint16, uint16_t, UINT16) -__flatcc_json_parser_define_coerce_unsigned(uint8, uint8_t, UINT8) - -#define __flatcc_json_parser_define_coerce_signed(type, basetype, uctype) \ -static inline const char *flatcc_json_parser_coerce_ ## type( \ - flatcc_json_parser_t *ctx, const char *buf, \ - const char *end, int value_sign, uint64_t value, basetype *v) \ -{ \ - if (value_sign) { \ - if (value > (uint64_t)(uctype ## _MAX) + 1) { \ - return flatcc_json_parser_set_error(ctx, buf, end, \ - flatcc_json_parser_error_underflow); \ - } \ - *v = (basetype)-(int64_t)value; \ - } else { \ - if (value > uctype ## _MAX) { \ - return flatcc_json_parser_set_error(ctx, buf, end, \ - flatcc_json_parser_error_overflow); \ - } \ - *v = (basetype)value; \ - } \ - return buf; \ -} - -__flatcc_json_parser_define_coerce_signed(int64, int64_t, INT64) -__flatcc_json_parser_define_coerce_signed(int32, int32_t, INT32) -__flatcc_json_parser_define_coerce_signed(int16, int16_t, INT16) -__flatcc_json_parser_define_coerce_signed(int8, int8_t, INT8) - -static inline const char *flatcc_json_parser_coerce_float( - flatcc_json_parser_t *ctx, const char *buf, - const char *end, int value_sign, uint64_t value, float *v) -{ - (void)ctx; - (void)end; - - *v = value_sign ? -(float)value : (float)value; - return buf; -} - -static inline const char *flatcc_json_parser_coerce_double( - flatcc_json_parser_t *ctx, const char *buf, - const char *end, int value_sign, uint64_t value, double *v) -{ - (void)ctx; - (void)end; - - *v = value_sign ? -(double)value : (double)value; - return buf; -} - -const char *flatcc_json_parser_double(flatcc_json_parser_t *ctx, const char *buf, const char *end, double *v); - -const char *flatcc_json_parser_float(flatcc_json_parser_t *ctx, const char *buf, const char *end, float *v); - -/* - * If the buffer does not contain a valid start character for a numeric - * value, the function will return the the input buffer without failure. - * This makes is possible to try a symbolic parse. - */ -const char *flatcc_json_parser_integer(flatcc_json_parser_t *ctx, const char *buf, const char *end, - int *value_sign, uint64_t *value); - -/* Returns unchanged buffer without error if `null` is not matched. */ -static inline const char *flatcc_json_parser_null(const char *buf, const char *end) -{ - if (end - buf >= 4 && memcmp(buf, "null", 4) == 0) { - return buf + 4; - } - return buf; -} - -static inline const char *flatcc_json_parser_none(flatcc_json_parser_t *ctx, - const char *buf, const char *end) -{ - if (end - buf >= 4 && memcmp(buf, "null", 4) == 0) { - return buf + 4; - } - return flatcc_json_parser_set_error(ctx, buf, end, - flatcc_json_parser_error_union_none_not_null); -} - -/* - * `parsers` is a null terminated array of parsers with at least one - * valid parser. A numeric literal parser may also be included. - */ -#define __flatcc_json_parser_define_integral_parser(type, basetype) \ -static inline const char *flatcc_json_parser_ ## type( \ - flatcc_json_parser_t *ctx, \ - const char *buf, const char *end, basetype *v) \ -{ \ - uint64_t value = 0; \ - int value_sign = 0; \ - const char *mark = buf; \ - \ - *v = 0; \ - if (buf == end) { \ - return buf; \ - } \ - buf = flatcc_json_parser_integer(ctx, buf, end, &value_sign, &value); \ - if (buf != mark) { \ - return flatcc_json_parser_coerce_ ## type(ctx, \ - buf, end, value_sign, value, v); \ - } \ - return buf; \ -} - -__flatcc_json_parser_define_integral_parser(uint64, uint64_t) -__flatcc_json_parser_define_integral_parser(uint32, uint32_t) -__flatcc_json_parser_define_integral_parser(uint16, uint16_t) -__flatcc_json_parser_define_integral_parser(uint8, uint8_t) -__flatcc_json_parser_define_integral_parser(int64, int64_t) -__flatcc_json_parser_define_integral_parser(int32, int32_t) -__flatcc_json_parser_define_integral_parser(int16, int16_t) -__flatcc_json_parser_define_integral_parser(int8, int8_t) - -static inline const char *flatcc_json_parser_bool(flatcc_json_parser_t *ctx, const char *buf, const char *end, uint8_t *v) -{ - const char *k; - uint8_t tmp; - - k = buf; - if (end - buf >= 4 && memcmp(buf, "true", 4) == 0) { - *v = 1; - return k + 4; - } else if (end - buf >= 5 && memcmp(buf, "false", 5) == 0) { - *v = 0; - return k + 5; - } - buf = flatcc_json_parser_uint8(ctx, buf, end, &tmp); - *v = !!tmp; - return buf; -} - -/* - * The `parsers` argument is a zero terminated array of parser - * functions with increasingly general scopes. - * - * Symbols can be be or'ed together by listing multiple space separated - * flags in source being parsed, like `{ x : "Red Blue" }`. - * Intended for flags, but generally available. - * - * `aggregate` means there are more symbols to follow. - * - * This function does not return input `buf` value if match was - * unsuccessful. It will either match or error. - */ -typedef const char *flatcc_json_parser_integral_symbol_f(flatcc_json_parser_t *ctx, - const char *buf, const char *end, int *value_sign, uint64_t *value, int *aggregate); - -/* - * Raise an error if a syntax like `color: Red Green` is seen unless - * explicitly permitted. `color: "Red Green"` or `"color": "Red Green" - * or `color: Red` is permitted if unquoted is permitted but not - * unquoted list. Googles flatc JSON parser does not allow multiple - * symbolic values unless quoted, so this is the default. - */ -#if !FLATCC_JSON_PARSE_ALLOW_UNQUOTED || FLATCC_JSON_PARSE_ALLOW_UNQUOTED_LIST -#define __flatcc_json_parser_init_check_unquoted_list() -#define __flatcc_json_parser_check_unquoted_list() -#else -#define __flatcc_json_parser_init_check_unquoted_list() int list_count = 0; -#define __flatcc_json_parser_check_unquoted_list() \ - if (list_count++ && ctx->unquoted) { \ - return flatcc_json_parser_set_error(ctx, buf, end, \ - flatcc_json_parser_error_unquoted_symbolic_list); \ - } -#endif - -#define __flatcc_json_parser_define_symbolic_integral_parser(type, basetype)\ -static const char *flatcc_json_parser_symbolic_ ## type( \ - flatcc_json_parser_t *ctx, \ - const char *buf, const char *end, \ - flatcc_json_parser_integral_symbol_f *parsers[], \ - basetype *v) \ -{ \ - flatcc_json_parser_integral_symbol_f **p; \ - const char *mark; \ - basetype tmp = 0; \ - uint64_t value; \ - int value_sign, aggregate; \ - __flatcc_json_parser_init_check_unquoted_list() \ - \ - *v = 0; \ - buf = flatcc_json_parser_constant_start(ctx, buf, end); \ - if (buf == end) { \ - return buf; \ - } \ - do { \ - p = parsers; \ - do { \ - /* call parser function */ \ - buf = (*p)(ctx, (mark = buf), end, \ - &value_sign, &value, &aggregate); \ - if (buf == end) { \ - return buf; \ - } \ - } while (buf == mark && *++p); \ - if (mark == buf) { \ - return flatcc_json_parser_set_error(ctx, buf, end, \ - flatcc_json_parser_error_expected_scalar); \ - } \ - __flatcc_json_parser_check_unquoted_list() \ - if (end == flatcc_json_parser_coerce_ ## type(ctx, \ - buf, end, value_sign, value, &tmp)) { \ - return end; \ - } \ - /* \ - * `+=`, not `|=` because we also coerce to float and double, \ - * and because we need to handle signed values. This may give \ - * unexpected results with duplicate flags. \ - */ \ - *v += tmp; \ - } while (aggregate); \ - return buf; \ -} - -__flatcc_json_parser_define_symbolic_integral_parser(uint64, uint64_t) -__flatcc_json_parser_define_symbolic_integral_parser(uint32, uint32_t) -__flatcc_json_parser_define_symbolic_integral_parser(uint16, uint16_t) -__flatcc_json_parser_define_symbolic_integral_parser(uint8, uint8_t) -__flatcc_json_parser_define_symbolic_integral_parser(int64, int64_t) -__flatcc_json_parser_define_symbolic_integral_parser(int32, int32_t) -__flatcc_json_parser_define_symbolic_integral_parser(int16, int16_t) -__flatcc_json_parser_define_symbolic_integral_parser(int8, int8_t) - -__flatcc_json_parser_define_symbolic_integral_parser(bool, uint8_t) - -/* We still parse integral values, but coerce to float or double. */ -__flatcc_json_parser_define_symbolic_integral_parser(float, float) -__flatcc_json_parser_define_symbolic_integral_parser(double, double) - -/* Parse vector as a base64 or base64url encoded string with no spaces permitted. */ -const char *flatcc_json_parser_build_uint8_vector_base64(flatcc_json_parser_t *ctx, - const char *buf, const char *end, flatcc_builder_ref_t *ref, int urlsafe); - -/* - * This doesn't do anything other than validate and advance past - * a JSON value which may use unquoted symbols. - * - * Upon call it is assumed that leading space has been stripped and that - * a JSON value is expected (i.e. root, or just after ':' in a - * container object, or less likely as an array member). Any trailing - * comma is assumed to belong to the parent context. Returns a parse - * location stripped from space so container should post call expect - * ',', '}', or ']', or EOF if the JSON is valid. - */ -const char *flatcc_json_parser_generic_json(flatcc_json_parser_t *ctx, const char *buf, const char *end); - -/* Parse a JSON table. */ -typedef const char *flatcc_json_parser_table_f(flatcc_json_parser_t *ctx, - const char *buf, const char *end, flatcc_builder_ref_t *pref); - -/* Parses a JSON struct. */ -typedef const char *flatcc_json_parser_struct_f(flatcc_json_parser_t *ctx, - const char *buf, const char *end, flatcc_builder_ref_t *pref); - -/* Constructs a table, struct, or string object unless the type is 0 or unknown. */ -typedef const char *flatcc_json_parser_union_f(flatcc_json_parser_t *ctx, - const char *buf, const char *end, uint8_t type, flatcc_builder_ref_t *pref); - -typedef int flatcc_json_parser_is_known_type_f(uint8_t type); - -/* Called at start by table parsers with at least 1 union. */ -const char *flatcc_json_parser_prepare_unions(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_total, size_t *handle); - -const char *flatcc_json_parser_finalize_unions(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t handle); - -const char *flatcc_json_parser_union(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_index, - flatbuffers_voffset_t id, size_t handle, - flatcc_json_parser_union_f *union_parser); - -const char *flatcc_json_parser_union_type(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_index, - flatbuffers_voffset_t id, size_t handle, - flatcc_json_parser_integral_symbol_f *type_parsers[], - flatcc_json_parser_union_f *union_parser); - -const char *flatcc_json_parser_union_vector(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_index, - flatbuffers_voffset_t id, size_t handle, - flatcc_json_parser_union_f *union_parser); - -const char *flatcc_json_parser_union_type_vector(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_index, - flatbuffers_voffset_t id, size_t handle, - flatcc_json_parser_integral_symbol_f *type_parsers[], - flatcc_json_parser_union_f *union_parser, - flatcc_json_parser_is_known_type_f accept_type); - -/* - * Parses a table as root. - * - * Use the flag `flatcc_json_parser_f_with_size` to create a buffer with - * size prefix. - * - * `ctx` may be null or an uninitialized json parser to receive parse results. - * `builder` must a newly initialized or reset builder object. - * `buf`, `bufsiz` may be larger than the parsed json if trailing - * space or zeroes are expected, but they must represent a valid memory buffer. - * `fid` must be null, or a valid file identifier. - * `flags` default to 0. See also `flatcc_json_parser_f_` constants. - */ -int flatcc_json_parser_table_as_root(flatcc_builder_t *B, flatcc_json_parser_t *ctx, - const char *buf, size_t bufsiz, flatcc_json_parser_flags_t flags, const char *fid, - flatcc_json_parser_table_f *parser); - -/* - * Similar to `flatcc_json_parser_table_as_root` but parses a struct as - * root. - */ -int flatcc_json_parser_struct_as_root(flatcc_builder_t *B, flatcc_json_parser_t *ctx, - const char *buf, size_t bufsiz, flatcc_json_parser_flags_t flags, const char *fid, - flatcc_json_parser_struct_f *parser); - -#include "portable/pdiagnostic_pop.h" - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_JSON_PARSE_H */ diff --git a/nostrdb/flatcc/flatcc_json_printer.h b/nostrdb/flatcc/flatcc_json_printer.h deleted file mode 100644 index 4fb2a37afa..0000000000 --- a/nostrdb/flatcc/flatcc_json_printer.h +++ /dev/null @@ -1,788 +0,0 @@ -#ifndef FLATCC_JSON_PRINTER_H -#define FLATCC_JSON_PRINTER_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Definitions for default implementation, do not assume these are - * always valid. - */ -#define FLATCC_JSON_PRINT_FLUSH_SIZE (1024 * 16) -#define FLATCC_JSON_PRINT_RESERVE 64 -#define FLATCC_JSON_PRINT_BUFFER_SIZE (FLATCC_JSON_PRINT_FLUSH_SIZE + FLATCC_JSON_PRINT_RESERVE) - -#ifndef FLATCC_JSON_PRINTER_ALLOC -#define FLATCC_JSON_PRINTER_ALLOC(n) FLATCC_ALLOC(n) -#endif - -#ifndef FLATCC_JSON_PRINTER_FREE -#define FLATCC_JSON_PRINTER_FREE(p) FLATCC_FREE(p) -#endif - -#ifndef FLATCC_JSON_PRINTER_REALLOC -#define FLATCC_JSON_PRINTER_REALLOC(p, n) FLATCC_REALLOC(p, n) -#endif - -/* Initial size that grows exponentially. */ -#define FLATCC_JSON_PRINT_DYN_BUFFER_SIZE 4096 - - -#include -#include - -#include "flatcc_rtconfig.h" -#include "flatcc_flatbuffers.h" - -/* -DFLATCC_PORTABLE may help if inttypes.h is missing. */ -#ifndef PRId64 -#include -#endif - -#define FLATCC_JSON_PRINT_ERROR_MAP(XX) \ - XX(ok, "ok") \ - /* \ - * When the flatbuffer is null, has too small a header, or has \ - * mismatching identifier when a match was requested. \ - */ \ - XX(bad_input, "bad input") \ - XX(deep_recursion, "deep recursion") \ - /* \ - * When the output was larger than the available fixed length buffer, \ - * or dynamic allocation could not grow the buffer sufficiently. \ - */ \ - XX(overflow, "overflow") - -enum flatcc_json_printer_error_no { -#define XX(no, str) flatcc_json_printer_error_##no, - FLATCC_JSON_PRINT_ERROR_MAP(XX) -#undef XX -}; - -#define flatcc_json_printer_ok flatcc_json_printer_error_ok - -typedef struct flatcc_json_printer_ctx flatcc_json_printer_t; - -typedef void flatcc_json_printer_flush_f(flatcc_json_printer_t *ctx, int all); - -struct flatcc_json_printer_ctx { - char *buf; - size_t size; - size_t flush_size; - size_t total; - const char *pflush; - char *p; - uint8_t own_buffer; - uint8_t indent; - uint8_t unquote; - uint8_t noenum; - uint8_t skip_default; - uint8_t force_default; - int level; - int error; - - void *fp; - flatcc_json_printer_flush_f *flush; -}; - -static inline void flatcc_json_printer_set_error(flatcc_json_printer_t *ctx, int err) -{ - if (!ctx->error) { - ctx->error = err; - } -} - -const char *flatcc_json_printer_error_string(int err); - -static inline int flatcc_json_printer_get_error(flatcc_json_printer_t *ctx) -{ - return ctx->error; -} - -/* - * Call to reuse context between parses without without - * returning buffer. If a file pointer is being used, - * it will remain open. - * - * Reset does not affect the formatting settings indentation, and - * operational flags, but does zero the indentation level. - */ -static inline void flatcc_json_printer_reset(flatcc_json_printer_t *ctx) -{ - ctx->p = ctx->buf; - ctx->level = 0; - ctx->total = 0; - ctx->error = 0; -} - -/* - * A custom init function can be implemented with a custom flush - * function can be custom implemented. A few have been provided: - * init with external fixed length buffer, and init with dynamically - * growing buffer. - * - * Because there are a lot of small print functions, it is essentially - * always faster to print to local buffer than moving to io directly - * such as using fprintf or fwrite. The flush callback is used to - * move data when enough has been collected. - * - * `fp` should be of type `FILE *` but we do not enforce it here - * because it allows the header to be independent of - * when not required. If `fp` is null, it defaults to stdout. - * - * Returns -1 on alloc error (no cleanup needed), or 0 on success. - * Eventually the clear method must be called to return memory. - * - * The file pointer may be stdout or a custom file. The file pointer - * is not affected by reset or clear and should be closed manually. - * - * `set_flags` and related may be called subsequently to modify - * behavior. - */ -int flatcc_json_printer_init(flatcc_json_printer_t *ctx, void *fp); - -/* - * Prints to external buffer and sets overflow error if buffer is too - * small. Earlier content is then overwritten. A custom version of this - * function could flush the content to elsewhere before allowing the - * buffer content to be overwritten. The `buffers_size` must be large - * enough to hold `FLATCC_JSON_PRINT_RESERVED_SIZE` which is small but - * large enough value to hold entire numbers and the like. - * - * It is not strictly necessary to call clear because the buffer is - * external, but still good form and case the context type is changed - * later. - * - * Returns -1 on buffer size error (no cleanup needed), or 0 on success. - * - * `set_flags` and related may be called subsequently to modify - * behavior. - */ -int flatcc_json_printer_init_buffer(flatcc_json_printer_t *ctx, char *buffer, size_t buffer_size); - -/* - * Returns the current buffer pointer and also the content size in - * `buffer_size` if it is null. The operation is not very useful for - * file oriented printers (created with `init`) and will then only - * return the unflushed buffer content. For fixed length buffers - * (`init_buffer`), only the last content is available if the buffer - * overflowed. Works well with (`init_buffer`) when the dynamic buffer - * is be reused, otherwise `finalize_dynamic_buffer` could be more - * appropriate. - * - * The returned buffer is zero terminated. - * - * The returned pointer is only valid until next operation and should - * not deallocated manually. - */ -void *flatcc_json_printer_get_buffer(flatcc_json_printer_t *ctx, size_t *buffer_size); - -/* - * Set to non-zero if names and enum symbols can be unquoted thus - * diverging from standard JSON while remaining compatible with `flatc` - * JSON flavor. - */ -static inline void flatcc_json_printer_set_unquoted(flatcc_json_printer_t *ctx, int x) -{ - ctx->unquote = !!x; -} - -/* - * Set to non-zero if enums should always be printed as numbers. - * Otherwise enums are printed as a symbol for member values, and as - * numbers for other values. - * - * NOTE: this setting will not affect code generated with enum mapping - * disabled - statically disabling enum mapping is signficantly faster - * for enums, less so for for union types. - */ -static inline void flatcc_json_printer_set_noenum(flatcc_json_printer_t *ctx, int x) -{ - ctx->noenum = !!x; -} - -/* - * Override priting an existing scalar field if it equals the default value. - * Note that this setting is not mutually exclusive to `set_force_default`. - */ -static inline void flatcc_json_printer_set_skip_default(flatcc_json_printer_t *ctx, int x) -{ - ctx->skip_default = !!x; -} - -/* - * Override skipping absent scalar fields and print the default value. - * Note that this setting is not mutually exclusive to `set_skip_default`. - */ -static inline void flatcc_json_printer_set_force_default(flatcc_json_printer_t *ctx, int x) -{ - ctx->force_default = !!x; -} - - -/* - * Set pretty-print indentation in number of spaces. 0 (default) is - * compact with no spaces or linebreaks (default), anything above - * triggers pretty print. - */ -static inline void flatcc_json_printer_set_indent(flatcc_json_printer_t *ctx, uint8_t x) -{ - ctx->indent = x; -} - -/* - * Override the default compact valid JSON format with a - * pretty printed non-strict version. Enums are translated - * to names, which is also the default. - */ -static inline void flatcc_json_printer_set_nonstrict(flatcc_json_printer_t *ctx) -{ - flatcc_json_printer_set_indent(ctx, 2); - flatcc_json_printer_set_unquoted(ctx, 1); - flatcc_json_printer_set_noenum(ctx, 0); -} - -typedef uint32_t flatcc_json_printer_flags_t; -static const flatcc_json_printer_flags_t flatcc_json_printer_f_unquote = 1; -static const flatcc_json_printer_flags_t flatcc_json_printer_f_noenum = 2; -static const flatcc_json_printer_flags_t flatcc_json_printer_f_skip_default = 4; -static const flatcc_json_printer_flags_t flatcc_json_printer_f_force_default = 8; -static const flatcc_json_printer_flags_t flatcc_json_printer_f_pretty = 16; -static const flatcc_json_printer_flags_t flatcc_json_printer_f_nonstrict = 32; - -/* - * May be called instead of setting operational modes individually. - * Formatting is strict quoted json witout pretty printing by default. - * - * flags are: - * - * `unquote`, - * `noenum`, - * `skip_default`, - * `force_default`, - * `pretty`, - * `nonstrict` - * - * `pretty` flag sets indentation to 2. - * `nonstrict` implies: `noenum`, `unquote`, `pretty`. - */ -static inline void flatcc_json_printer_set_flags(flatcc_json_printer_t *ctx, flatcc_json_printer_flags_t flags) -{ - ctx->unquote = !!(flags & flatcc_json_printer_f_unquote); - ctx->noenum = !!(flags & flatcc_json_printer_f_noenum); - ctx->skip_default = !!(flags & flatcc_json_printer_f_skip_default); - ctx->force_default = !!(flags & flatcc_json_printer_f_force_default); - if (flags & flatcc_json_printer_f_pretty) { - flatcc_json_printer_set_indent(ctx, 2); - } - if (flags & flatcc_json_printer_f_nonstrict) { - flatcc_json_printer_set_nonstrict(ctx); - } -} - - -/* - * Detects if the conctext type uses dynamically allocated memory - * using malloc and realloc and frees any such memory. - * - * Not all context types needs to be cleared. - */ -void flatcc_json_printer_clear(flatcc_json_printer_t *ctx); - -/* - * Ensures that there ia always buffer capacity for priting the next - * primitive with delimiters. - * - * Only flushes complete flush units and is inexpensive to call. - * The content buffer has an extra reserve which ensures basic - * data types and delimiters can always be printed after a partial - * flush. At the end, a `flush` is required to flush the - * remaining incomplete buffer data. - * - * Numbers do not call partial flush but will always fit into the reserve - * capacity after a partial flush, also surrounded by delimiters. - * - * Variable length operations generally submit a partial flush so it is - * safe to print a number after a name without flushing, but vectors of - * numbers must (and do) issue a partial flush between elements. This is - * handled automatically but must be considered if using the primitives - * for special purposes. Because repeated partial flushes are very cheap - * this is only a concern for high performance applications. - * - * When identiation is enabled, partial flush is also automatically - * issued . - */ -static inline void flatcc_json_printer_flush_partial(flatcc_json_printer_t *ctx) -{ - if (ctx->p >= ctx->pflush) { - ctx->flush(ctx, 0); - } -} - -/* Returns the total printed size but flushed and in buffer. */ -static inline size_t flatcc_json_printer_total(flatcc_json_printer_t *ctx) -{ - return ctx->total + (size_t)(ctx->p - ctx->buf); -} - -/* - * Flush the remaining data not flushed by partial flush. It is valid to - * call at any point if it is acceptable to have unaligned flush units, - * but this is not desireable if, for example, compression or encryption - * is added to the flush pipeline. - * - * Not called automatically at the end of printing a flatbuffer object - * in case more data needs to be appended without submitting incomplete - * flush units prematurely - for example adding a newline at the end. - * - * The flush behavior depeends on the underlying `ctx` object, for - * example dynamic buffers have no distinction between partial and full - * flushes - here it is merely ensured that the buffer always has a - * reserve capacity left. - * - * Returns the total printed size. - */ -static inline size_t flatcc_json_printer_flush(flatcc_json_printer_t *ctx) -{ - ctx->flush(ctx, 1); - return flatcc_json_printer_total(ctx); -} - -/* - * Helper functions to print anything into the json buffer. - * Strings are escaped. - * - * When pretty printing (indent > 0), level 0 has special significance - - * so if wrapping printed json in a manually printed container json - * object, these functions can help manage this. - */ - -/* Escaped and quoted string. */ -void flatcc_json_printer_string(flatcc_json_printer_t *ctx, const char *s, size_t n); -/* Unescaped and unquoted string. */ -void flatcc_json_printer_write(flatcc_json_printer_t *ctx, const char *s, size_t n); -/* Print a newline and issues a partial flush. */ -void flatcc_json_printer_nl(flatcc_json_printer_t *ctx); -/* Like numbers, a partial flush is not issued. */ -void flatcc_json_printer_char(flatcc_json_printer_t *ctx, char c); -/* Indents and issues a partial flush. */ -void flatcc_json_printer_indent(flatcc_json_printer_t *ctx); -/* Adjust identation level, usually +/-1. */ -void flatcc_json_printer_add_level(flatcc_json_printer_t *ctx, int n); -/* Returns current identation level (0 is top level). */ -int flatcc_json_printer_get_level(flatcc_json_printer_t *ctx); - -/* - * If called explicitly be aware that repeated calls to numeric - * printers may cause buffer overflow without flush in-between. - */ -void flatcc_json_printer_uint8(flatcc_json_printer_t *ctx, uint8_t v); -void flatcc_json_printer_uint16(flatcc_json_printer_t *ctx, uint16_t v); -void flatcc_json_printer_uint32(flatcc_json_printer_t *ctx, uint32_t v); -void flatcc_json_printer_uint64(flatcc_json_printer_t *ctx, uint64_t v); -void flatcc_json_printer_int8(flatcc_json_printer_t *ctx, int8_t v); -void flatcc_json_printer_int16(flatcc_json_printer_t *ctx, int16_t v); -void flatcc_json_printer_int32(flatcc_json_printer_t *ctx, int32_t v); -void flatcc_json_printer_int64(flatcc_json_printer_t *ctx, int64_t v); -void flatcc_json_printer_bool(flatcc_json_printer_t *ctx, int v); -void flatcc_json_printer_float(flatcc_json_printer_t *ctx, float v); -void flatcc_json_printer_double(flatcc_json_printer_t *ctx, double v); - -void flatcc_json_printer_enum(flatcc_json_printer_t *ctx, - const char *symbol, size_t len); - -/* - * Convenience function to add a trailing newline, flush the buffer, - * test for error and reset the context for reuse. - * - * Returns total size printed or < 0 on error. - * - * This function makes most sense for file oriented output. - * See also `finalize_dynamic_buffer`. - */ -static inline int flatcc_json_printer_finalize(flatcc_json_printer_t *ctx) -{ - int ret; - flatcc_json_printer_nl(ctx); - ret = (int)flatcc_json_printer_flush(ctx); - if (ctx->error) { - ret = -1; - } - flatcc_json_printer_reset(ctx); - return ret; -} - -/* - * Allocates a small buffer and grows it dynamically. - * Buffer survives past reset. To reduce size between uses, call clear - * followed by init call. To reuse buffer just call reset between uses. - * If `buffer_size` is 0 a sensible default is being used. The size is - * automatically rounded up to reserved size if too small. - * - * Returns -1 on alloc error (no cleanup needed), or 0 on success. - * Eventually the clear method must be called to return memory. - * - * `set_flags` and related may be called subsequently to modify - * behavior. - */ -int flatcc_json_printer_init_dynamic_buffer(flatcc_json_printer_t *ctx, size_t buffer_size); - -/* - * Similar to calling `finalize` but returns the buffer and does NOT - * reset, but rather clears printer object and the returned buffer must - * be deallocated with `free`. - * - * The returned buffer is zero terminated. - * - * NOTE: it is entirely optional to use this method. For repeated used - * of dynamic buffers, `newline` (or not) followed by `get_buffer` - * and `reset` will be an alternative. - * - * Stores the printed buffer size in `buffer_size` if it is not null. - * - * See also `get_dynamic_buffer`. - */ -void *flatcc_json_printer_finalize_dynamic_buffer(flatcc_json_printer_t *ctx, size_t *buffer_size); - - -/************************************************************* - * The following is normally only used by generated code. - *************************************************************/ - -typedef struct flatcc_json_printer_table_descriptor flatcc_json_printer_table_descriptor_t; - -struct flatcc_json_printer_table_descriptor { - const void *table; - const void *vtable; - int vsize; - int ttl; - int count; -}; - -typedef struct flatcc_json_printer_union_descriptor flatcc_json_printer_union_descriptor_t; - -struct flatcc_json_printer_union_descriptor { - const void *member; - int ttl; - uint8_t type; -}; - -typedef void flatcc_json_printer_table_f(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td); - -typedef void flatcc_json_printer_struct_f(flatcc_json_printer_t *ctx, - const void *p); - -typedef void flatcc_json_printer_union_f(flatcc_json_printer_t *ctx, - flatcc_json_printer_union_descriptor_t *ud); - -/* Generated value to name map callbacks. */ -typedef void flatcc_json_printer_union_type_f(flatcc_json_printer_t *ctx, flatbuffers_utype_t type); -typedef void flatcc_json_printer_uint8_enum_f(flatcc_json_printer_t *ctx, uint8_t v); -typedef void flatcc_json_printer_uint16_enum_f(flatcc_json_printer_t *ctx, uint16_t v); -typedef void flatcc_json_printer_uint32_enum_f(flatcc_json_printer_t *ctx, uint32_t v); -typedef void flatcc_json_printer_uint64_enum_f(flatcc_json_printer_t *ctx, uint64_t v); -typedef void flatcc_json_printer_int8_enum_f(flatcc_json_printer_t *ctx, int8_t v); -typedef void flatcc_json_printer_int16_enum_f(flatcc_json_printer_t *ctx, int16_t v); -typedef void flatcc_json_printer_int32_enum_f(flatcc_json_printer_t *ctx, int32_t v); -typedef void flatcc_json_printer_int64_enum_f(flatcc_json_printer_t *ctx, int64_t v); -typedef void flatcc_json_printer_bool_enum_f(flatcc_json_printer_t *ctx, flatbuffers_bool_t v); - -#define __define_print_scalar_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _field(flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len, T v); - -#define __define_print_scalar_optional_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _optional_field( \ - flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len); - -#define __define_print_scalar_struct_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _struct_field(flatcc_json_printer_t *ctx,\ - int index, const void *p, size_t offset, \ - const char *name, size_t len); - -#define __define_print_scalar_array_struct_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _array_struct_field( \ - flatcc_json_printer_t *ctx, \ - int index, const void *p, size_t offset, \ - const char *name, size_t len, size_t count); - -#define __define_print_enum_array_struct_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_array_struct_field( \ - flatcc_json_printer_t *ctx, \ - int index, const void *p, size_t offset, \ - const char *name, size_t len, size_t count, \ - flatcc_json_printer_ ## TN ##_enum_f *pf); - -#define __define_print_enum_struct_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_struct_field( \ - flatcc_json_printer_t *ctx, \ - int index, const void *p, size_t offset, \ - const char *name, size_t len, \ - flatcc_json_printer_ ## TN ##_enum_f *pf); - -#define __define_print_enum_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_field(flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len, T v, \ - flatcc_json_printer_ ## TN ##_enum_f *pf); - -#define __define_print_enum_optional_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_optional_field( \ - flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len, \ - flatcc_json_printer_ ## TN ##_enum_f *pf); - -#define __define_print_scalar_vector_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _vector_field(flatcc_json_printer_t *ctx,\ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len); - -#define __define_print_enum_vector_field_proto(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_vector_field( \ - flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len, \ - flatcc_json_printer_ ## TN ##_enum_f *pf); - -__define_print_scalar_field_proto(uint8, uint8_t) -__define_print_scalar_field_proto(uint16, uint16_t) -__define_print_scalar_field_proto(uint32, uint32_t) -__define_print_scalar_field_proto(uint64, uint64_t) -__define_print_scalar_field_proto(int8, int8_t) -__define_print_scalar_field_proto(int16, int16_t) -__define_print_scalar_field_proto(int32, int32_t) -__define_print_scalar_field_proto(int64, int64_t) -__define_print_scalar_field_proto(bool, flatbuffers_bool_t) -__define_print_scalar_field_proto(float, float) -__define_print_scalar_field_proto(double, double) - -__define_print_enum_field_proto(uint8, uint8_t) -__define_print_enum_field_proto(uint16, uint16_t) -__define_print_enum_field_proto(uint32, uint32_t) -__define_print_enum_field_proto(uint64, uint64_t) -__define_print_enum_field_proto(int8, int8_t) -__define_print_enum_field_proto(int16, int16_t) -__define_print_enum_field_proto(int32, int32_t) -__define_print_enum_field_proto(int64, int64_t) -__define_print_enum_field_proto(bool, flatbuffers_bool_t) - -__define_print_scalar_optional_field_proto(uint8, uint8_t) -__define_print_scalar_optional_field_proto(uint16, uint16_t) -__define_print_scalar_optional_field_proto(uint32, uint32_t) -__define_print_scalar_optional_field_proto(uint64, uint64_t) -__define_print_scalar_optional_field_proto(int8, int8_t) -__define_print_scalar_optional_field_proto(int16, int16_t) -__define_print_scalar_optional_field_proto(int32, int32_t) -__define_print_scalar_optional_field_proto(int64, int64_t) -__define_print_scalar_optional_field_proto(bool, flatbuffers_bool_t) -__define_print_scalar_optional_field_proto(float, float) -__define_print_scalar_optional_field_proto(double, double) - -__define_print_enum_optional_field_proto(uint8, uint8_t) -__define_print_enum_optional_field_proto(uint16, uint16_t) -__define_print_enum_optional_field_proto(uint32, uint32_t) -__define_print_enum_optional_field_proto(uint64, uint64_t) -__define_print_enum_optional_field_proto(int8, int8_t) -__define_print_enum_optional_field_proto(int16, int16_t) -__define_print_enum_optional_field_proto(int32, int32_t) -__define_print_enum_optional_field_proto(int64, int64_t) -__define_print_enum_optional_field_proto(bool, flatbuffers_bool_t) - -__define_print_scalar_struct_field_proto(uint8, uint8_t) -__define_print_scalar_struct_field_proto(uint16, uint16_t) -__define_print_scalar_struct_field_proto(uint32, uint32_t) -__define_print_scalar_struct_field_proto(uint64, uint64_t) -__define_print_scalar_struct_field_proto(int8, int8_t) -__define_print_scalar_struct_field_proto(int16, int16_t) -__define_print_scalar_struct_field_proto(int32, int32_t) -__define_print_scalar_struct_field_proto(int64, int64_t) -__define_print_scalar_struct_field_proto(bool, flatbuffers_bool_t) -__define_print_scalar_struct_field_proto(float, float) -__define_print_scalar_struct_field_proto(double, double) - -/* - * char arrays are special as there are no char fields - * without arrays and because they are printed as strings. - */ -__define_print_scalar_array_struct_field_proto(char, char) - -__define_print_scalar_array_struct_field_proto(uint8, uint8_t) -__define_print_scalar_array_struct_field_proto(uint16, uint16_t) -__define_print_scalar_array_struct_field_proto(uint32, uint32_t) -__define_print_scalar_array_struct_field_proto(uint64, uint64_t) -__define_print_scalar_array_struct_field_proto(int8, int8_t) -__define_print_scalar_array_struct_field_proto(int16, int16_t) -__define_print_scalar_array_struct_field_proto(int32, int32_t) -__define_print_scalar_array_struct_field_proto(int64, int64_t) -__define_print_scalar_array_struct_field_proto(bool, flatbuffers_bool_t) -__define_print_scalar_array_struct_field_proto(float, float) -__define_print_scalar_array_struct_field_proto(double, double) - -__define_print_enum_array_struct_field_proto(uint8, uint8_t) -__define_print_enum_array_struct_field_proto(uint16, uint16_t) -__define_print_enum_array_struct_field_proto(uint32, uint32_t) -__define_print_enum_array_struct_field_proto(uint64, uint64_t) -__define_print_enum_array_struct_field_proto(int8, int8_t) -__define_print_enum_array_struct_field_proto(int16, int16_t) -__define_print_enum_array_struct_field_proto(int32, int32_t) -__define_print_enum_array_struct_field_proto(int64, int64_t) -__define_print_enum_array_struct_field_proto(bool, flatbuffers_bool_t) - -__define_print_enum_struct_field_proto(uint8, uint8_t) -__define_print_enum_struct_field_proto(uint16, uint16_t) -__define_print_enum_struct_field_proto(uint32, uint32_t) -__define_print_enum_struct_field_proto(uint64, uint64_t) -__define_print_enum_struct_field_proto(int8, int8_t) -__define_print_enum_struct_field_proto(int16, int16_t) -__define_print_enum_struct_field_proto(int32, int32_t) -__define_print_enum_struct_field_proto(int64, int64_t) -__define_print_enum_struct_field_proto(bool, flatbuffers_bool_t) - -__define_print_scalar_vector_field_proto(uint8, uint8_t) -__define_print_scalar_vector_field_proto(uint16, uint16_t) -__define_print_scalar_vector_field_proto(uint32, uint32_t) -__define_print_scalar_vector_field_proto(uint64, uint64_t) -__define_print_scalar_vector_field_proto(int8, int8_t) -__define_print_scalar_vector_field_proto(int16, int16_t) -__define_print_scalar_vector_field_proto(int32, int32_t) -__define_print_scalar_vector_field_proto(int64, int64_t) -__define_print_scalar_vector_field_proto(bool, flatbuffers_bool_t) -__define_print_scalar_vector_field_proto(float, float) -__define_print_scalar_vector_field_proto(double, double) - -__define_print_enum_vector_field_proto(uint8, uint8_t) -__define_print_enum_vector_field_proto(uint16, uint16_t) -__define_print_enum_vector_field_proto(uint32, uint32_t) -__define_print_enum_vector_field_proto(uint64, uint64_t) -__define_print_enum_vector_field_proto(int8, int8_t) -__define_print_enum_vector_field_proto(int16, int16_t) -__define_print_enum_vector_field_proto(int32, int32_t) -__define_print_enum_vector_field_proto(int64, int64_t) -__define_print_enum_vector_field_proto(bool, flatbuffers_bool_t) - -void flatcc_json_printer_uint8_vector_base64_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, int urlsafe); - -/* - * If `fid` is null, the identifier is not checked and is allowed to be - * entirely absent. - * - * The buffer must at least be aligned to uoffset_t on systems that - * require aligned memory addresses (as always for flatbuffers). - */ -int flatcc_json_printer_table_as_root(flatcc_json_printer_t *ctx, - const void *buf, size_t bufsiz, const char *fid, - flatcc_json_printer_table_f *pf); - -int flatcc_json_printer_struct_as_root(flatcc_json_printer_t *ctx, - const void *buf, size_t bufsiz, const char *fid, - flatcc_json_printer_struct_f *pf); - -/* - * Call before and after enum flags to ensure proper quotation. Enum - * quotes may be configured runtime, but regardless of this, multiple - * flags may be forced to be quoted depending on compile time flag since - * not all parsers may be able to handle unquoted space separated values - * even if they handle non-strict unquoted json otherwise. - * - * Flags should only be called when not empty (0) and when there are no - * unknown flags in the value. Otherwise print the numeric value. The - * auto generated code deals with this. - * - * This bit twiddling hack may be useful: - * - * `multiple = 0 != (v & (v - 1);` - */ -void flatcc_json_printer_delimit_enum_flags(flatcc_json_printer_t *ctx, int multiple); - -/* The index increments from 0 to handle space. It is not the flag bit position. */ -void flatcc_json_printer_enum_flag(flatcc_json_printer_t *ctx, int index, const char *symbol, size_t len); - -/* A struct inside another struct, as opposed to inside a table or a root. */ -void flatcc_json_printer_embedded_struct_field(flatcc_json_printer_t *ctx, - int index, const void *p, size_t offset, - const char *name, size_t len, - flatcc_json_printer_struct_f pf); - -void flatcc_json_printer_embedded_struct_array_field(flatcc_json_printer_t *ctx, - int index, const void *p, size_t offset, - const char *name, size_t len, - size_t size, size_t count, - flatcc_json_printer_struct_f pf); - -void flatcc_json_printer_struct_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_struct_f *pf); - -void flatcc_json_printer_string_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len); - -void flatcc_json_printer_string_vector_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len); - -void flatcc_json_printer_table_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_table_f pf); - -void flatcc_json_printer_struct_vector_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - size_t size, - flatcc_json_printer_struct_f pf); - -void flatcc_json_printer_table_vector_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_table_f pf); - -void flatcc_json_printer_union_vector_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_union_type_f ptf, - flatcc_json_printer_union_f pf); - -void flatcc_json_printer_struct_as_nested_root(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - const char *fid, - flatcc_json_printer_struct_f *pf); - -void flatcc_json_printer_table_as_nested_root(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - const char *fid, - flatcc_json_printer_table_f pf); - -void flatcc_json_printer_union_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_union_type_f ptf, - flatcc_json_printer_union_f pf); - -void flatcc_json_printer_union_table(flatcc_json_printer_t *ctx, - flatcc_json_printer_union_descriptor_t *ud, - flatcc_json_printer_table_f pf); - -void flatcc_json_printer_union_struct(flatcc_json_printer_t *ctx, - flatcc_json_printer_union_descriptor_t *ud, - flatcc_json_printer_struct_f pf); - -void flatcc_json_printer_union_string(flatcc_json_printer_t *ctx, - flatcc_json_printer_union_descriptor_t *ud); - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_JSON_PRINTER_H */ diff --git a/nostrdb/flatcc/flatcc_portable.h b/nostrdb/flatcc/flatcc_portable.h deleted file mode 100644 index dbf583b799..0000000000 --- a/nostrdb/flatcc/flatcc_portable.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef FLATCC_PORTABLE_H -#define FLATCC_PORTABLE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "portable/portable_basic.h" - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_PORTABLE_H */ diff --git a/nostrdb/flatcc/flatcc_prologue.h b/nostrdb/flatcc/flatcc_prologue.h deleted file mode 100644 index d7f8c337b6..0000000000 --- a/nostrdb/flatcc/flatcc_prologue.h +++ /dev/null @@ -1,8 +0,0 @@ -/* Include guard intentionally left out. */ - -#define PDIAGNOSTIC_IGNORE_UNUSED -#include "portable/pdiagnostic_push.h" - -#ifdef __cplusplus -extern "C" { -#endif diff --git a/nostrdb/flatcc/flatcc_refmap.h b/nostrdb/flatcc/flatcc_refmap.h deleted file mode 100644 index beafa301d0..0000000000 --- a/nostrdb/flatcc/flatcc_refmap.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * The flatcc builder supports storing a pointer to a refmap - * and wraps some operations to make them work as a dummy - * even if no refmap has been set. This enables optional - * DAG preservation possible during clone operations. - * - * A refmap maps a source address to a builder reference. - * - * This is just a map, but the semantics are important: - * - * The map thus preserves identity of the source. It is not a - * cache because cache eviction would fail to properly track - * identity. - * - * The map is used for memoization during object cloning are and - * may also be used by user logic doing similar operations. - * This ensures that identity is preserved so a source object is - * not duplicated which could lead to either loss of semantic - * information, or an explosion in size, or both. In some, or - * even most, cases this concern may not be important, but when - * it is important, it is important. - * - * The source address must not be reused for different content - * for the lifetime of the map, although the content doest not - * have to be valid or event exist at that location since source - * address is just used as a key. - * - * The lifetime may be a single clone operation which then - * tracks child object references as well, or it may be the - * lifetime of the buffer builder. - * - * The map may be flushed explicitly when the source addresses - * are no longer unique, such as when reusing a memory buffer, - * and when identity preservation is no longer important. - * Flushing a map is esentially the same as ending a lifetime. - * - * Multiple maps may exist concurrently for example if cloning - * an object twice into two new objects that should have - * separate identities. This is especially true and necessary - * when creating a new nested buffer because the nested buffer - * cannot share references with the parent. Cloning and object - * that contains a nested buffer does not require multiple maps - * because the nested buffer is then opaque. - */ - -#ifndef FLATCC_REFMAP_H -#define FLATCC_REFMAP_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "flatcc_types.h" - -#ifndef FLATCC_REFMAP_MIN_BUCKETS -/* 8 buckets gives us 5 useful initial entries with a load factor of 0.7 */ -#define FLATCC_REFMAP_MIN_BUCKETS 8 -#endif - -#define FLATCC_REFMAP_LOAD_FACTOR 0.7f - -typedef struct flatcc_refmap flatcc_refmap_t; -typedef flatbuffers_soffset_t flatcc_refmap_ref_t; - -static const flatcc_refmap_ref_t flatcc_refmap_not_found = 0; - -struct flatcc_refmap_item { - const void *src; - flatcc_refmap_ref_t ref; -}; - -struct flatcc_refmap { - size_t count; - size_t buckets; - struct flatcc_refmap_item *table; - /* Use stack allocation for small maps. */ - struct flatcc_refmap_item min_table[FLATCC_REFMAP_MIN_BUCKETS]; -}; - -/* - * Fast zero initialization - does not allocate any memory. - * May be replaced by memset 0, but `init` avoids clearing the - * stack allocated initial hash table until it is needed. - */ -static inline int flatcc_refmap_init(flatcc_refmap_t *refmap) -{ - refmap->count = 0; - refmap->buckets = 0; - refmap->table = 0; - return 0; -} - -/* - * Removes all items and deallocates memory. - * Not required unless `insert` or `resize` took place. The map can be - * reused subsequently without calling `init`. - */ -void flatcc_refmap_clear(flatcc_refmap_t *refmap); - -/* - * Keeps allocated memory as is, but removes all items. The map - * must intialized first. - */ -void flatcc_refmap_reset(flatcc_refmap_t *refmap); - -/* - * Returns the inserted reference if the `src` pointer was found, - * without inspecting the content of the `src` pointer. - * - * Returns flatcc_refmap_not_found (default 0) if the `src` pointer was - * not found. - */ -flatcc_refmap_ref_t flatcc_refmap_find(flatcc_refmap_t *refmap, const void *src); - -/* - * Inserts a `src` source pointer and its associated `ref` reference - * into the refmap without inspecting the `src` pointer content. The - * `ref` value will be replaced if the the `src` pointer already exists. - * - * Inserting null will just return the ref without updating the map. - * - * There is no delete operation which simplifies an open - * addressing hash table, and it isn't needed for this use case. - * - * Returns the input ref or not_found on allocation error. - */ -flatcc_refmap_ref_t flatcc_refmap_insert(flatcc_refmap_t *refmap, const void *src, flatcc_refmap_ref_t ref); - -/* - * Set the hash table to accommodate at least `count` items while staying - * within the predefined load factor. - * - * Resize is primarily an internal operation, but the user may resize - * ahead of a large anticipated load, or after a large load to shrink - * the table using 0 as the `count` argument. The table never shrinks - * on its own account. - */ -int flatcc_refmap_resize(flatcc_refmap_t *refmap, size_t count); - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_REFMAP_H */ diff --git a/nostrdb/flatcc/flatcc_rtconfig.h b/nostrdb/flatcc/flatcc_rtconfig.h deleted file mode 100644 index 6e6582cb56..0000000000 --- a/nostrdb/flatcc/flatcc_rtconfig.h +++ /dev/null @@ -1,162 +0,0 @@ -#ifndef FLATCC_RTCONFIG_H -#define FLATCC_RTCONFIG_H - -#ifdef __cplusplus -extern "C" { -#endif - - -/* Include portability layer here since all other files depend on it. */ -#ifdef FLATCC_PORTABLE -#include "portable/portable.h" -#endif - -/* - * Fast printing and parsing of double. - * - * This requires the grisu3/grisu3_* files to be in the include path, - * otherwise strod and sprintf will be used (these needed anyway - * as fallback for cases not supported by grisu3). - */ -#ifndef FLATCC_USE_GRISU3 -#define FLATCC_USE_GRISU3 1 -#endif - -/* - * This requires compiler that has enabled marc=native or similar so - * __SSE4_2__ flag is defined. Otherwise it will have no effect. - * - * While SSE may be used for different purposes, it has (as of this - * writing) only be used to test the effect on JSON whitespace handling - * which improved, but not by a lot, assuming 64-bit unligned access is - * otherwise available: - * - * With 8 space indentation, the JSON benchmark handles 308K parse ops/sec - * while SSE ups that to 333 parse ops/sec or 336 if \r\n is also - * consumed by SSE. Disabling indentation leaves SSE spacing handling - * ineffective, and performance reaches 450K parse ops/sec and can - * improve further to 500+K parse ops/sec if inexact GRISU3 numbers are - * allowed (they are pretty accurate anyway, just not exact). This - * feature requires hacking a flag direct in the grisu3 double parsing - * lib directly and only mentioned for comparison. - * - * In conclusion SSE doesn't add a lot to JSON space handling at least. - * - * Disabled by default, but can be overriden by build system. - */ -#ifndef FLATCC_USE_SSE4_2 -#define FLATCC_USE_SSE4_2 0 -#endif - -/* - * The verifier only reports yes and no. The following setting - * enables assertions in debug builds. It must be compiled into - * the runtime library and is not normally the desired behavior. - * - * NOTE: enabling this can break test cases so use with build, not test. - */ -#if !defined(FLATCC_DEBUG_VERIFY) && !defined(NDEBUG) -#define FLATCC_DEBUG_VERIFY 0 -#endif - -#if !defined(FLATCC_TRACE_VERIFY) -#define FLATCC_TRACE_VERIFY 0 -#endif - - -/* - * Limit recursion level for tables. Actual level may be deeper - * when structs are deeply nested - but these are limited by the - * schema compiler. - */ -#ifndef FLATCC_JSON_PRINT_MAX_LEVELS -#define FLATCC_JSON_PRINT_MAX_LEVELS 100 -#endif - -/* Maximum length of names printed exluding _type suffix. */ -#ifndef FLATCC_JSON_PRINT_NAME_LEN_MAX -#define FLATCC_JSON_PRINT_NAME_LEN_MAX 100 -#endif - -/* - * Print float and double values with C99 hexadecimal floating point - * notation. This option is not valid JSON but it avoids precision - * loss, correctly handles NaN, +/-Infinity and is significantly faster - * to parse and print. Some JSON parsers rely on strtod which does - * support hexadecimal floating points when C99 compliant. - */ -#ifndef FLATCC_JSON_PRINT_HEX_FLOAT -#define FLATCC_JSON_PRINT_HEX_FLOAT 0 -#endif - -/* - * Always print multipe enum flags like `color: "Red Green"` - * even when unquote is selected as an option for single - * value like `color: Green`. Otherwise multiple values - * are printed as `color: Red Green`, but this could break - * some flatbuffer json parser. - */ -#ifndef FLATCC_JSON_PRINT_ALWAYS_QUOTE_MULTIPLE_FLAGS -#define FLATCC_JSON_PRINT_ALWAYS_QUOTE_MULTIPLE_FLAGS 1 -#endif - -/* - * The general nesting limit may be lower, but for skipping - * JSON we do not need to - we can set this high as it only - * costs a single char per level in a stack array. - */ -#ifndef FLATCC_JSON_PARSE_GENERIC_MAX_NEST -#define FLATCC_JSON_PARSE_GENERIC_MAX_NEST 512 -#endif - -/* Store value even if it is default. */ -#ifndef FLATCC_JSON_PARSE_FORCE_DEFAULTS -#define FLATCC_JSON_PARSE_FORCE_DEFAULTS 0 -#endif - -#ifndef FLATCC_JSON_PARSE_ALLOW_UNQUOTED -#define FLATCC_JSON_PARSE_ALLOW_UNQUOTED 1 -#endif - -/* - * Multiple enum values are by default not permitted unless - * quoted like `color: "Red Green" as per Googles flatc JSON - * parser while a single value like `color: Red` can be - * unquoted. Enabling this setting will allow `color: Red - * Green`, but only if FLATCC_JSON_PARSE_ALLOW_UNQUOTED is - * also enabled. - */ -#ifndef FLATCC_JSON_PARSE_ALLOW_UNQUOTED_LIST -#define FLATCC_JSON_PARSE_ALLOW_UNQUOTED_LIST 0 -#endif - -#ifndef FLATCC_JSON_PARSE_ALLOW_UNKNOWN_FIELD -#define FLATCC_JSON_PARSE_ALLOW_UNKNOWN_FIELD 1 -#endif - -#ifndef FLATCC_JSON_PARSE_ALLOW_TRAILING_COMMA -#define FLATCC_JSON_PARSE_ALLOW_TRAILING_COMMA 1 -#endif - -/* - * Just parse to the closing bracket '}' if set. - * Otherwise parse to end by consuming space and - * fail if anything but space follows. - */ -#ifndef FLATCC_PARSE_IGNORE_TRAILING_DATA -#define FLATCC_PARSE_IGNORE_TRAILING_DATA 0 -#endif - -/* - * Optimize to parse a lot of white space, but - * in most cases it probably slows parsing down. - */ -#ifndef FLATCC_JSON_PARSE_WIDE_SPACE -#define FLATCC_JSON_PARSE_WIDE_SPACE 0 -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_RTCONFIG_H */ diff --git a/nostrdb/flatcc/flatcc_types.h b/nostrdb/flatcc/flatcc_types.h deleted file mode 100644 index 69605d2d63..0000000000 --- a/nostrdb/flatcc/flatcc_types.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef FLATCC_TYPES_H -#define FLATCC_TYPES_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifndef UINT8_MAX -#include -#endif - -/* - * This should match generated type declaratios in - * `flatbuffers_common_reader.h` (might have different name prefix). - * Read only generated code does not depend on library code, - * hence the duplication. - */ -#ifndef flatbuffers_types_defined -#define flatbuffers_types_defined - -/* - * uoffset_t and soffset_t must be same integer type, except for sign. - * They can be (u)int16_t, (u)int32_t, or (u)int64_t. - * The default is (u)int32_t. - * - * voffset_t is expected to be uint16_t, but can experimentally be - * compiled from uint8_t up to uint32_t. - * - * ID_MAX is the largest value that can index a vtable. The table size - * is given as voffset value. Each id represents a voffset value index - * from 0 to max inclusive. Space is required for two header voffset - * fields and the unaddressible highest index (due to the table size - * representation). For 16-bit voffsets this yields a max of 2^15 - 4, - * or (2^16 - 1) / 2 - 3. - */ - -#define flatbuffers_uoffset_t_defined -#define flatbuffers_soffset_t_defined -#define flatbuffers_voffset_t_defined -#define flatbuffers_utype_t_defined -#define flatbuffers_bool_t_defined -#define flatbuffers_thash_t_defined -#define flatbuffers_fid_t_defined - -/* uoffset_t is also used for vector and string headers. */ -#define FLATBUFFERS_UOFFSET_MAX UINT32_MAX -#define FLATBUFFERS_SOFFSET_MAX INT32_MAX -#define FLATBUFFERS_SOFFSET_MIN INT32_MIN -#define FLATBUFFERS_VOFFSET_MAX UINT16_MAX -#define FLATBUFFERS_UTYPE_MAX UINT8_MAX -/* Well - the max of the underlying type. */ -#define FLATBUFFERS_BOOL_MAX UINT8_MAX -#define FLATBUFFERS_THASH_MAX UINT32_MAX - -#define FLATBUFFERS_ID_MAX (FLATBUFFERS_VOFFSET_MAX / sizeof(flatbuffers_voffset_t) - 3) -/* Vectors of empty structs can yield div by zero, so we must guard against this. */ -#define FLATBUFFERS_COUNT_MAX(elem_size) (FLATBUFFERS_UOFFSET_MAX/((elem_size) == 0 ? 1 : (elem_size))) - -#define FLATBUFFERS_UOFFSET_WIDTH 32 -#define FLATBUFFERS_COUNT_WIDTH 32 -#define FLATBUFFERS_SOFFSET_WIDTH 32 -#define FLATBUFFERS_VOFFSET_WIDTH 16 -#define FLATBUFFERS_UTYPE_WIDTH 8 -#define FLATBUFFERS_BOOL_WIDTH 8 -#define FLATBUFFERS_THASH_WIDTH 32 - -#define FLATBUFFERS_TRUE 1 -#define FLATBUFFERS_FALSE 0 - -#define FLATBUFFERS_PROTOCOL_IS_LE 1 -#define FLATBUFFERS_PROTOCOL_IS_BE 0 - -typedef uint32_t flatbuffers_uoffset_t; -typedef int32_t flatbuffers_soffset_t; -typedef uint16_t flatbuffers_voffset_t; -typedef uint8_t flatbuffers_utype_t; -typedef uint8_t flatbuffers_bool_t; -typedef uint32_t flatbuffers_thash_t; -/* Public facing type operations. */ -typedef flatbuffers_utype_t flatbuffers_union_type_t; - -static const flatbuffers_bool_t flatbuffers_true = FLATBUFFERS_TRUE; -static const flatbuffers_bool_t flatbuffers_false = FLATBUFFERS_FALSE; - -#define FLATBUFFERS_IDENTIFIER_SIZE (FLATBUFFERS_THASH_WIDTH / 8) - -typedef char flatbuffers_fid_t[FLATBUFFERS_IDENTIFIER_SIZE]; - -#endif /* flatbuffers_types_defined */ - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_TYPES_H */ diff --git a/nostrdb/flatcc/flatcc_unaligned.h b/nostrdb/flatcc/flatcc_unaligned.h deleted file mode 100644 index 5f31d405d5..0000000000 --- a/nostrdb/flatcc/flatcc_unaligned.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef FLATCC_UNLIGNED_H -#define FLATCC_UNLIGNED_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "portable/punaligned.h" - -#define FLATCC_ALLOW_UNALIGNED_ACCESS PORTABLE_UNALIGNED_ACCESS - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_UNLIGNED_H */ diff --git a/nostrdb/flatcc/flatcc_verifier.h b/nostrdb/flatcc/flatcc_verifier.h deleted file mode 100644 index 7181eeb498..0000000000 --- a/nostrdb/flatcc/flatcc_verifier.h +++ /dev/null @@ -1,239 +0,0 @@ -#ifndef FLATCC_VERIFIER_H -#define FLATCC_VERIFIER_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Runtime support for verifying flatbuffers. - * - * Link with the verifier implementation file. - * - * Note: - * - * 1) nested buffers will NOT have their identifier verified. - * The user may do so subsequently. The reason is in part because - * the information is not readily avaible without generated reader code, - * in part because the buffer might use a different, but valid, - * identifier and the user has no chance of specifiying this in the - * verifier code. The root verifier also doesn't assume a specific id - * but accepts a user supplied input which may be null. - * - * 2) All offsets in a buffer are verified for alignment relative to the - * buffer start, but the buffer itself is only assumed to aligned to - * uoffset_t. A reader should therefore ensure buffer alignment separately - * before reading the buffer. Nested buffers are in fact checked for - * alignment, but still only relative to the root buffer. - * - * 3) The max nesting level includes nested buffer nestings, so the - * verifier might fail even if the individual buffers are otherwise ok. - * This is to prevent abuse with lots of nested buffers. - * - * - * IMPORTANT: - * - * Even if verifier passes, the buffer may be invalid to access due to - * lack of alignemnt in memory, but the verifier is safe to call. - * - * NOTE: The buffer is not safe to modify after verification because an - * attacker may craft overlapping data structures such that modification - * of one field updates another in a way that violates the buffer - * constraints. This may also be caused by a clever compression scheme. - * - * It is likely faster to rewrite the table although this is also - * dangerous because an attacker (or even normal user) can draft a DAG - * that explodes when expanded carelesslessly. A safer approach is to - * hash all object references written and reuse those that match. This - * will expand references into other objects while bounding expansion - * and it will be safe to update assuming shared objects are ok to - * update. - * - */ - -#include "flatcc_types.h" - -#define FLATCC_VERIFY_ERROR_MAP(XX)\ - XX(ok, "ok")\ - XX(buffer_header_too_small, "buffer header too small")\ - XX(identifier_mismatch, "identifier mismatch")\ - XX(max_nesting_level_reached, "max nesting level reached")\ - XX(required_field_missing, "required field missing")\ - XX(runtime_buffer_header_not_aligned, "runtime: buffer header not aligned")\ - XX(runtime_buffer_size_too_large, "runtime: buffer size too large")\ - XX(string_not_zero_terminated, "string not zero terminated")\ - XX(string_out_of_range, "string out of range")\ - XX(struct_out_of_range, "struct out of range")\ - XX(struct_size_overflow, "struct size overflow")\ - XX(struct_unaligned, "struct unaligned")\ - XX(table_field_not_aligned, "table field not aligned")\ - XX(table_field_out_of_range, "table field out of range")\ - XX(table_field_size_overflow, "table field size overflow")\ - XX(table_header_out_of_range_or_unaligned, "table header out of range or unaligned")\ - XX(vector_header_out_of_range_or_unaligned, "vector header out of range or unaligned")\ - XX(string_header_out_of_range_or_unaligned, "string header out of range or unaligned")\ - XX(offset_out_of_range, "offset out of range")\ - XX(table_offset_out_of_range_or_unaligned, "table offset out of range or unaligned")\ - XX(table_size_out_of_range, "table size out of range")\ - XX(type_field_absent_from_required_union_field, "type field absent from required union field")\ - XX(type_field_absent_from_required_union_vector_field, "type field absent from required union vector field")\ - XX(union_cannot_have_a_table_without_a_type, "union cannot have a table without a type")\ - XX(union_type_NONE_cannot_have_a_value, "union value field present with type NONE")\ - XX(vector_count_exceeds_representable_vector_size, "vector count exceeds representable vector size")\ - XX(vector_out_of_range, "vector out of range")\ - XX(vtable_header_out_of_range, "vtable header out of range")\ - XX(vtable_header_too_small, "vtable header too small")\ - XX(vtable_offset_out_of_range_or_unaligned, "vtable offset out of range or unaligned")\ - XX(vtable_size_out_of_range_or_unaligned, "vtable size out of range or unaligned")\ - XX(vtable_size_overflow, "vtable size overflow")\ - XX(union_element_absent_without_type_NONE, "union element absent without type NONE")\ - XX(union_element_present_with_type_NONE, "union element present with type NONE")\ - XX(union_vector_length_mismatch, "union type and table vectors have different lengths")\ - XX(union_vector_verification_not_supported, "union vector verification not supported")\ - XX(not_supported, "not supported") - - -enum flatcc_verify_error_no { -#define XX(no, str) flatcc_verify_error_##no, - FLATCC_VERIFY_ERROR_MAP(XX) -#undef XX -}; - -#define flatcc_verify_ok flatcc_verify_error_ok - -const char *flatcc_verify_error_string(int err); - -/* - * Type specific table verifier function that checks each known field - * for existence in the vtable and then calls the appropriate verifier - * function in this library. - * - * The table descriptor values have been verified for bounds, overflow, - * and alignment, but vtable entries after header must be verified - * for all fields the table verifier function understands. - * - * Calls other typespecific verifier functions recursively whenever a - * table field, union or table vector is encountered. - */ -typedef struct flatcc_table_verifier_descriptor flatcc_table_verifier_descriptor_t; -struct flatcc_table_verifier_descriptor { - /* Pointer to buffer. Not assumed to be aligned beyond uoffset_t. */ - const void *buf; - /* Buffer size. */ - flatbuffers_uoffset_t end; - /* Time to live: number nesting levels left before failure. */ - int ttl; - /* Vtable of current table. */ - const void *vtable; - /* Table offset relative to buffer start */ - flatbuffers_uoffset_t table; - /* Table end relative to buffer start as per vtable[1] field. */ - flatbuffers_voffset_t tsize; - /* Size of vtable in bytes. */ - flatbuffers_voffset_t vsize; -}; - -typedef int flatcc_table_verifier_f(flatcc_table_verifier_descriptor_t *td); - -typedef struct flatcc_union_verifier_descriptor flatcc_union_verifier_descriptor_t; - -struct flatcc_union_verifier_descriptor { - /* Pointer to buffer. Not assumed to be aligned beyond uoffset_t. */ - const void *buf; - /* Buffer size. */ - flatbuffers_uoffset_t end; - /* Time to live: number nesting levels left before failure. */ - int ttl; - /* Type of union value to be verified */ - flatbuffers_utype_t type; - /* Offset relative to buffer start to where union value offset is stored. */ - flatbuffers_uoffset_t base; - /* Offset of union value relative to base. */ - flatbuffers_uoffset_t offset; -}; - -typedef int flatcc_union_verifier_f(flatcc_union_verifier_descriptor_t *ud); - -/* - * The `as_root` functions are normally the only functions called - * explicitly in this interface. - * - * If `fid` is null, the identifier is not checked and is allowed to be entirely absent. - * - * The buffer must at least be aligned to uoffset_t on systems that - * require aligned memory addresses. The buffer pointers alignment is - * not significant to internal verification of the buffer. - */ -int flatcc_verify_struct_as_root(const void *buf, size_t bufsiz, const char *fid, - size_t size, uint16_t align); - -int flatcc_verify_struct_as_typed_root(const void *buf, size_t bufsiz, flatbuffers_thash_t thash, - size_t size, uint16_t align); - -int flatcc_verify_table_as_root(const void *buf, size_t bufsiz, const char *fid, - flatcc_table_verifier_f *root_tvf); - -int flatcc_verify_table_as_typed_root(const void *buf, size_t bufsiz, flatbuffers_thash_t thash, - flatcc_table_verifier_f *root_tvf); -/* - * The buffer header is verified by any of the `_as_root` verifiers, but - * this function may be used as a quick sanity check. - */ -int flatcc_verify_buffer_header(const void *buf, size_t bufsiz, const char *fid); - -int flatcc_verify_typed_buffer_header(const void *buf, size_t bufsiz, flatbuffers_thash_t type_hash); - -/* - * The following functions are typically called by a generated table - * verifier function. - */ - -/* Scalar, enum or struct field. */ -int flatcc_verify_field(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, size_t size, uint16_t align); -/* Vector of scalars, enums or structs. */ -int flatcc_verify_vector_field(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required, size_t elem_size, uint16_t align, size_t max_count); -int flatcc_verify_string_field(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required); -int flatcc_verify_string_vector_field(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required); -int flatcc_verify_table_field(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required, flatcc_table_verifier_f tvf); -int flatcc_verify_table_vector_field(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required, flatcc_table_verifier_f tvf); -/* Table verifiers pass 0 as fid. */ -int flatcc_verify_struct_as_nested_root(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required, const char *fid, - size_t size, uint16_t align); -int flatcc_verify_table_as_nested_root(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required, const char *fid, - uint16_t align, flatcc_table_verifier_f tvf); - -/* - * A NONE type will not accept a table being present, and a required - * union will not accept a type field being absent, and an absent type - * field will not accept a table field being present. - * - * If the above checks out and the type is not NONE, the uvf callback - * is executed. It must test each known table type and silently accept - * any unknown table type for forward compatibility. A union table - * value is verified without the required flag because an absent table - * encodes a typed NULL value while an absent type field encodes a - * missing union which fails if required. - */ -int flatcc_verify_union_field(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required, flatcc_union_verifier_f uvf); - -int flatcc_verify_union_vector_field(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required, flatcc_union_verifier_f uvf); - -int flatcc_verify_union_table(flatcc_union_verifier_descriptor_t *ud, flatcc_table_verifier_f *tvf); -int flatcc_verify_union_struct(flatcc_union_verifier_descriptor_t *ud, size_t size, uint16_t align); -int flatcc_verify_union_string(flatcc_union_verifier_descriptor_t *ud); - -#ifdef __cplusplus -} -#endif - -#endif /* FLATCC_VERIFIER_H */ diff --git a/nostrdb/flatcc/flatcc_version.h b/nostrdb/flatcc/flatcc_version.h deleted file mode 100644 index 78bc9c8d35..0000000000 --- a/nostrdb/flatcc/flatcc_version.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -#define FLATCC_VERSION_TEXT "0.6.2" -#define FLATCC_VERSION_MAJOR 0 -#define FLATCC_VERSION_MINOR 6 -#define FLATCC_VERSION_PATCH 2 -/* 1 or 0 */ -#define FLATCC_VERSION_RELEASED 0 - -#ifdef __cplusplus -} -#endif diff --git a/nostrdb/flatcc/json_parser.c b/nostrdb/flatcc/json_parser.c deleted file mode 100644 index 1c0128fd27..0000000000 --- a/nostrdb/flatcc/json_parser.c +++ /dev/null @@ -1,1297 +0,0 @@ -#include "flatcc_rtconfig.h" -#include "flatcc_json_parser.h" -#include "flatcc_assert.h" - -#define uoffset_t flatbuffers_uoffset_t -#define soffset_t flatbuffers_soffset_t -#define voffset_t flatbuffers_voffset_t -#define utype_t flatbuffers_utype_t - -#define uoffset_size sizeof(uoffset_t) -#define soffset_size sizeof(soffset_t) -#define voffset_size sizeof(voffset_t) -#define utype_size sizeof(utype_t) - -#define offset_size uoffset_size -#if FLATCC_USE_GRISU3 && !defined(PORTABLE_USE_GRISU3) -#define PORTABLE_USE_GRISU3 1 -#endif -#include "portable/pparsefp.h" -#include "portable/pbase64.h" - -#if FLATCC_USE_SSE4_2 -#ifdef __SSE4_2__ -#define USE_SSE4_2 -#endif -#endif - -#ifdef USE_SSE4_2 -#include -#define cmpistri(end, haystack, needle, flags) \ - if (end - haystack >= 16) do { \ - int i; \ - __m128i a = _mm_loadu_si128((const __m128i *)(needle)); \ - do { \ - __m128i b = _mm_loadu_si128((const __m128i *)(haystack)); \ - i = _mm_cmpistri(a, b, flags); \ - haystack += i; \ - } while (i == 16 && end - haystack >= 16); \ - } while(0) -#endif - -const char *flatcc_json_parser_error_string(int err) -{ - switch (err) { -#define XX(no, str) \ - case flatcc_json_parser_error_##no: \ - return str; - FLATCC_JSON_PARSE_ERROR_MAP(XX) -#undef XX - default: - return "unknown"; - } -} - -const char *flatcc_json_parser_set_error(flatcc_json_parser_t *ctx, const char *loc, const char *end, int err) -{ - if (!ctx->error) { - ctx->error = err; - ctx->pos = (int)(loc - ctx->line_start + 1); - ctx->error_loc = loc; - } - return end; -} - -const char *flatcc_json_parser_string_part(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ -/* - * Disabled because it doesn't catch all control characters, but is - * useful for performance testing. - */ -#if 0 -//#ifdef USE_SSE4_2 - cmpistri(end, buf, "\"\\\0\r\n\t\v\f", _SIDD_POSITIVE_POLARITY); -#else - /* - * Testing for signed char >= 0x20 would also capture UTF-8 - * encodings that we could verify, and also invalid encodings like - * 0xff, but we do not wan't to enforce strict UTF-8. - */ - while (buf != end && *buf != '\"' && ((unsigned char)*buf) >= 0x20 && *buf != '\\') { - ++buf; - } -#endif - if (buf == end) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unterminated_string); - } - if (*buf == '"') { - return buf; - } - if (*buf < 0x20) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_character); - } - return buf; -} - -const char *flatcc_json_parser_space_ext(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ -again: -#ifdef USE_SSE4_2 - /* - * We can include line break, but then error reporting suffers and - * it really makes no big difference. - */ - //cmpistri(end, buf, "\x20\t\v\f\r\n", _SIDD_NEGATIVE_POLARITY); - cmpistri(end, buf, "\x20\t\v\f", _SIDD_NEGATIVE_POLARITY); -#else -#if FLATCC_ALLOW_UNALIGNED_ACCESS - while (end - buf >= 16) { - if (*buf > 0x20) { - return buf; - } -#if FLATCC_JSON_PARSE_WIDE_SPACE - if (((uint64_t *)buf)[0] != 0x2020202020202020) { -descend: - if (((uint32_t *)buf)[0] == 0x20202020) { - buf += 4; - } -#endif - if (((uint16_t *)buf)[0] == 0x2020) { - buf += 2; - } - if (*buf == 0x20) { - ++buf; - } - if (*buf > 0x20) { - return buf; - } - break; -#if FLATCC_JSON_PARSE_WIDE_SPACE - } - if (((uint64_t *)buf)[1] != 0x2020202020202020) { - buf += 8; - goto descend; - } - buf += 16; -#endif - } -#endif -#endif - while (buf != end && *buf == 0x20) { - ++buf; - } - while (buf != end && *buf <= 0x20) { - switch (*buf) { - case 0x0d: buf += (end - buf > 1 && buf[1] == 0x0a); - /* Consume following LF or treating CR as LF. */ - ++ctx->line; ctx->line_start = ++buf; continue; - case 0x0a: ++ctx->line; ctx->line_start = ++buf; continue; - case 0x09: ++buf; continue; - case 0x20: goto again; /* Don't consume here, sync with power of 2 spaces. */ - default: return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unexpected_character); - } - } - return buf; -} - -static int decode_hex4(const char *buf, uint32_t *result) -{ - uint32_t u, x; - char c; - - u = 0; - c = buf[0]; - if (c >= '0' && c <= '9') { - x = (uint32_t)(c - '0'); - u = x << 12; - } else { - /* Lower case. */ - c |= 0x20; - if (c >= 'a' && c <= 'f') { - x = (uint32_t)(c - 'a' + 10); - u |= x << 12; - } else { - return -1; - } - } - c = buf[1]; - if (c >= '0' && c <= '9') { - x = (uint32_t)(c - '0'); - u |= x << 8; - } else { - /* Lower case. */ - c |= 0x20; - if (c >= 'a' && c <= 'f') { - x = (uint32_t)(c - 'a' + 10); - u |= x << 8; - } else { - return -1; - } - } - c = buf[2]; - if (c >= '0' && c <= '9') { - x = (uint32_t)(c - '0'); - u |= x << 4; - } else { - /* Lower case. */ - c |= 0x20; - if (c >= 'a' && c <= 'f') { - x = (uint32_t)(c - 'a' + 10); - u |= x << 4; - } else { - return -1; - } - } - c = buf[3]; - if (c >= '0' && c <= '9') { - x = (uint32_t)(c - '0'); - u |= x; - } else { - /* Lower case. */ - c |= 0x20; - if (c >= 'a' && c <= 'f') { - x = (uint32_t)(c - 'a' + 10); - u |= x; - } else { - return -1; - } - } - *result = u; - return 0; -} - -static int decode_unicode_char(uint32_t u, char *code) -{ - if (u <= 0x7f) { - code[0] = 1; - code[1] = (char)u; - } else if (u <= 0x7ff) { - code[0] = 2; - code[1] = (char)(0xc0 | (u >> 6)); - code[2] = (char)(0x80 | (u & 0x3f)); - } else if (u <= 0xffff) { - code[0] = 3; - code[1] = (char)(0xe0 | (u >> 12)); - code[2] = (char)(0x80 | ((u >> 6) & 0x3f)); - code[3] = (char)(0x80 | (u & 0x3f)); - } else if (u <= 0x10ffff) { - code[0] = 4; - code[1] = (char)(0xf0 | (u >> 18)); - code[2] = (char)(0x80 | ((u >> 12) & 0x3f)); - code[3] = (char)(0x80 | ((u >> 6) & 0x3f)); - code[4] = (char)(0x80 | (u & 0x3f)); - } else { - code[0] = 0; - return -1; - } - return 0; -} - -static inline uint32_t combine_utf16_surrogate_pair(uint32_t high, uint32_t low) -{ - return (high - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000; -} - -static inline int decode_utf16_surrogate_pair(uint32_t high, uint32_t low, char *code) -{ - return decode_unicode_char(combine_utf16_surrogate_pair(high, low), code); -} - - -/* - * UTF-8 code points can have up to 4 bytes but JSON can only - * encode up to 3 bytes via the \uXXXX syntax. - * To handle the range U+10000..U+10FFFF two UTF-16 surrogate - * pairs must be used. If this is not detected, the pairs - * survive in the output which is not valid but often tolerated. - * Emojis generally require such a pair, unless encoded - * unescaped in UTF-8. - * - * If a high surrogate pair is detected and a low surrogate pair - * follows, the combined sequence is decoded as a 4 byte - * UTF-8 sequence. Unpaired surrogate halves are decoded as is - * despite being an invalid UTF-8 value. - */ - -const char *flatcc_json_parser_string_escape(flatcc_json_parser_t *ctx, const char *buf, const char *end, flatcc_json_parser_escape_buffer_t code) -{ - char c, v; - uint32_t u, u2; - - if (end - buf < 2 || buf[0] != '\\') { - code[0] = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_escape); - } - switch (buf[1]) { - case 'x': - v = 0; - code[0] = 1; - if (end - buf < 4) { - code[0] = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_escape); - } - c = buf[2]; - if (c >= '0' && c <= '9') { - v |= (c - '0') << 4; - } else { - /* Lower case. */ - c |= 0x20; - if (c >= 'a' && c <= 'f') { - v |= (c - 'a' + 10) << 4; - } else { - code[0] = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_escape); - } - } - c = buf[3]; - if (c >= '0' && c <= '9') { - v |= c - '0'; - } else { - /* Lower case. */ - c |= 0x20; - if (c >= 'a' && c <= 'f') { - v |= c - 'a' + 10; - } else { - code[0] = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_escape); - } - } - code[1] = v; - return buf + 4; - case 'u': - if (end - buf < 6) { - code[0] = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_escape); - } - if (decode_hex4(buf + 2, &u)) { - code[0] = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_escape); - }; - /* If a high UTF-16 surrogate half pair was detected */ - if (u >= 0xd800 && u <= 0xdbff && - /* and there is space for a matching low half pair */ - end - buf >= 12 && - /* and there is a second escape following immediately */ - buf[6] == '\\' && buf[7] == 'u' && - /* and it is valid hex */ - decode_hex4(buf + 8, &u2) == 0 && - /* and it is a low UTF-16 surrogate pair */ - u2 >= 0xdc00 && u2 <= 0xdfff) { - /* then decode the pair into a single 4 byte utf-8 sequence. */ - if (decode_utf16_surrogate_pair(u, u2, code)) { - code[0] = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_escape); - } - return buf + 12; - /* - * Otherwise decode unmatched surrogate pairs as is any - * other UTF-8. Some systems might depend on these surviving. - * Leave ignored errors for the next parse step. - */ - } - decode_unicode_char(u, code); - return buf + 6; - case 't': - code[0] = 1; - code[1] = '\t'; - return buf + 2; - case 'n': - code[0] = 1; - code[1] = '\n'; - return buf + 2; - case 'r': - code[0] = 1; - code[1] = '\r'; - return buf + 2; - case 'b': - code[0] = 1; - code[1] = '\b'; - return buf + 2; - case 'f': - code[0] = 1; - code[1] = '\f'; - return buf + 2; - case '\"': - code[0] = 1; - code[1] = '\"'; - return buf + 2; - case '\\': - code[0] = 1; - code[1] = '\\'; - return buf + 2; - case '/': - code[0] = 1; - code[1] = '/'; - return buf + 2; - default: - code[0] = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_escape); - } -} - -/* Only applies to unquoted constants during generic parsring, otherwise it is skipped as a string. */ -const char *flatcc_json_parser_skip_constant(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - char c; - const char *k; - - while (buf != end) { - c = *buf; - if ((c & 0x80) || (c == '_') || (c >= '0' && c <= '9') || c == '.') { - ++buf; - continue; - } - /* Upper case. */ - c |= 0x20; - if (c >= 'a' && c <= 'z') { - ++buf; - continue; - } - buf = flatcc_json_parser_space(ctx, (k = buf), end); - if (buf == k) { - return buf; - } - } - return buf; -} - -const char *flatcc_json_parser_match_constant(flatcc_json_parser_t *ctx, const char *buf, const char *end, int pos, int *more) -{ - const char *mark = buf, *k = buf + pos; - - if (end - buf <= pos) { - *more = 0; - return buf; - } -#if FLATCC_JSON_PARSE_ALLOW_UNQUOTED - if (ctx->unquoted) { - buf = flatcc_json_parser_space(ctx, k, end); - if (buf == end) { - /* - * We cannot make a decision on more. - * Just return end and let parser handle sync point in - * case it is able to resume parse later on. - * For the same reason we do not lower ctx->unquoted. - */ - *more = 0; - return buf; - } - if (buf != k) { - char c = *buf; - /* - * Space was seen - and thus we have a valid match. - * If the next char is an identifier start symbol - * we raise the more flag to support syntax like: - * - * `flags: Hungry Sleepy Awake, ...` - */ - if (c == '_' || (c & 0x80)) { - *more = 1; - return buf; - } - c |= 0x20; - if (c >= 'a' && c <= 'z') { - *more = 1; - return buf; - } - } - /* - * Space was not seen, so the match is only valid if followed - * by a JSON separator symbol, and there cannot be more values - * following so `more` is lowered. - */ - *more = 0; - if (*buf == ',' || *buf == '}' || *buf == ']') { - return buf; - } - return mark; - } -#endif - buf = k; - if (*buf == 0x20) { - ++buf; - while (buf != end && *buf == 0x20) { - ++buf; - } - if (buf == end) { - *more = 0; - return buf; - } - /* We accept untrimmed space like " Green Blue ". */ - if (*buf != '\"') { - *more = 1; - return buf; - } - } - switch (*buf) { - case '\\': - *more = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_escape); - case '\"': - buf = flatcc_json_parser_space(ctx, buf + 1, end); - *more = 0; - return buf; - } - *more = 0; - return mark; -} - -const char *flatcc_json_parser_unmatched_symbol(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - if (ctx->flags & flatcc_json_parser_f_skip_unknown) { - buf = flatcc_json_parser_symbol_end(ctx, buf, end); - buf = flatcc_json_parser_space(ctx, buf, end); - if (buf != end && *buf == ':') { - ++buf; - buf = flatcc_json_parser_space(ctx, buf, end); - } else { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_expected_colon); - } - return flatcc_json_parser_generic_json(ctx, buf, end); - } else { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unknown_symbol); - } -} - -static const char *__flatcc_json_parser_number(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - if (buf == end) { - return buf; - } - if (*buf == '-') { - ++buf; - if (buf == end) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); - } - } - if (*buf == '0') { - ++buf; - } else { - if (*buf < '1' || *buf > '9') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); - } - ++buf; - while (buf != end && *buf >= '0' && *buf <= '9') { - ++buf; - } - } - if (buf != end) { - if (*buf == '.') { - ++buf; - if (*buf < '0' || *buf > '9') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); - } - ++buf; - while (buf != end && *buf >= '0' && *buf <= '9') { - ++buf; - } - } - } - if (buf != end && (*buf == 'e' || *buf == 'E')) { - ++buf; - if (buf == end) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); - } - if (*buf == '+' || *buf == '-') { - ++buf; - } - if (buf == end || *buf < '0' || *buf > '9') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); - } - ++buf; - while (buf != end && *buf >= '0' && *buf <= '9') { - ++buf; - } - } - - /* - * For strtod termination we must ensure the tail is not valid - * including non-json exponent types. The simplest approach is - * to accept anything that could be valid json successor - * characters and reject end of buffer since we expect a closing - * '}'. - * - * The ',' is actually not safe if strtod uses a non-POSIX locale. - */ - if (buf != end) { - switch (*buf) { - case ',': - case ':': - case ']': - case '}': - case ' ': - case '\r': - case '\t': - case '\n': - case '\v': - return buf; - } - } - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); -} - -const char *flatcc_json_parser_double(flatcc_json_parser_t *ctx, const char *buf, const char *end, double *v) -{ - const char *next, *k; - - *v = 0.0; - if (buf == end) { - return buf; - } - k = buf; - if (*buf == '-') ++k; - if (end - k > 1 && (k[0] == '.' || (k[0] == '0' && k[1] == '0'))) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); - } - next = parse_double(buf, (size_t)(end - buf), v); - if (next == 0 || next == buf) { - if (parse_double_isinf(*v)) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_overflow); - } - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); - } - return next; -} - -const char *flatcc_json_parser_float(flatcc_json_parser_t *ctx, const char *buf, const char *end, float *v) -{ - const char *next, *k; - - *v = 0.0; - if (buf == end) { - return buf; - } - k = buf; - if (*buf == '-') ++k; - if (end - k > 1 && (k[0] == '.' || (k[0] == '0' && k[1] == '0'))) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); - } - next = parse_float(buf, (size_t)(end - buf), v); - if (next == 0 || next == buf) { - if (parse_float_isinf(*v)) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_overflow); - } - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_invalid_numeric); - } - return next; -} - -const char *flatcc_json_parser_generic_json(flatcc_json_parser_t *ctx, const char *buf, const char *end) -{ - char stack[FLATCC_JSON_PARSE_GENERIC_MAX_NEST]; - char *sp, *spend; - const char *k; - flatcc_json_parser_escape_buffer_t code; - int more = 0; - - sp = stack; - spend = sp + FLATCC_JSON_PARSE_GENERIC_MAX_NEST; - -again: - if (buf == end) { - return buf; - } - if (sp != stack && sp[-1] == '}') { - /* Inside an object, about to read field name. */ - buf = flatcc_json_parser_symbol_start(ctx, buf, end); - buf = flatcc_json_parser_symbol_end(ctx, buf, end); - buf = flatcc_json_parser_space(ctx, buf, end); - if (buf == end) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unbalanced_object); - } - if (*buf != ':') { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_expected_colon); - } - buf = flatcc_json_parser_space(ctx, buf + 1, end); - } - switch (*buf) { - case '\"': - buf = flatcc_json_parser_string_start(ctx, buf, end); - while (buf != end && *buf != '\"') { - buf = flatcc_json_parser_string_part(ctx, buf, end); - if (buf != end && *buf == '\"') { - break; - } - buf = flatcc_json_parser_string_escape(ctx, buf, end, code); - } - buf = flatcc_json_parser_string_end(ctx, buf, end); - break; - case '-': - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - buf = __flatcc_json_parser_number(ctx, buf, end); - break; -#if !FLATCC_JSON_PARSE_ALLOW_UNQUOTED - case 't': case 'f': - { - uint8_t v; - buf = flatcc_json_parser_bool(ctx, (k = buf), end, &v); - if (k == buf) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unexpected_character); - } - } - break; - case 'n': - buf = flatcc_json_parser_null((k = buf), end); - if (k == buf) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unexpected_character); - } - break; -#endif - case '[': - if (sp == spend) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_deep_nesting); - } - *sp++ = ']'; - buf = flatcc_json_parser_space(ctx, buf + 1, end); - if (buf != end && *buf == ']') { - break; - } - goto again; - case '{': - if (sp == spend) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_deep_nesting); - } - *sp++ = '}'; - buf = flatcc_json_parser_space(ctx, buf + 1, end); - if (buf != end && *buf == '}') { - break; - } - goto again; - - default: -#if FLATCC_JSON_PARSE_ALLOW_UNQUOTED - buf = flatcc_json_parser_skip_constant(ctx, (k = buf), end); - if (k == buf) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unexpected_character); - } - break; -#else - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unexpected_character); -#endif - } - while (buf != end && sp != stack) { - --sp; - if (*sp == ']') { - buf = flatcc_json_parser_array_end(ctx, buf, end, &more); - } else { - buf = flatcc_json_parser_object_end(ctx, buf, end, &more); - } - if (more) { - ++sp; - goto again; - } - } - if (buf == end && sp != stack) { - return flatcc_json_parser_set_error(ctx, buf, end, sp[-1] == ']' ? - flatcc_json_parser_error_unbalanced_array : - flatcc_json_parser_error_unbalanced_object); - } - /* Any ',', ']', or '}' belongs to parent context. */ - return buf; -} - -const char *flatcc_json_parser_integer(flatcc_json_parser_t *ctx, const char *buf, const char *end, - int *value_sign, uint64_t *value) -{ - uint64_t x0, x = 0; - const char *k; - - if (buf == end) { - return buf; - } - k = buf; - *value_sign = *buf == '-'; - buf += *value_sign; - while (buf != end && *buf >= '0' && *buf <= '9') { - x0 = x; - x = x * 10 + (uint64_t)(*buf - '0'); - if (x0 > x) { - return flatcc_json_parser_set_error(ctx, buf, end, value_sign ? - flatcc_json_parser_error_underflow : flatcc_json_parser_error_overflow); - } - ++buf; - } - if (buf == k) { - /* Give up, but don't fail the parse just yet, it might be a valid symbol. */ - return buf; - } - if (buf != end && (*buf == 'e' || *buf == 'E' || *buf == '.')) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_float_unexpected); - } - *value = x; - return buf; -} - -/* Array Creation - depends on flatcc builder. */ - -const char *flatcc_json_parser_build_uint8_vector_base64(flatcc_json_parser_t *ctx, - const char *buf, const char *end, flatcc_builder_ref_t *ref, int urlsafe) -{ - const char *mark; - uint8_t *pval; - size_t max_len; - size_t decoded_len, src_len; - int mode; - int ret; - - mode = urlsafe ? base64_mode_url : base64_mode_rfc4648; - buf = flatcc_json_parser_string_start(ctx, buf, end); - buf = flatcc_json_parser_string_part(ctx, (mark = buf), end); - if (buf == end || *buf != '\"') { - goto base64_failed; - } - max_len = base64_decoded_size((size_t)(buf - mark)); - if (flatcc_builder_start_vector(ctx->ctx, 1, 1, FLATBUFFERS_COUNT_MAX((utype_size)))) { - goto failed; - } - if (!(pval = flatcc_builder_extend_vector(ctx->ctx, max_len))) { - goto failed; - } - src_len = (size_t)(buf - mark); - decoded_len = max_len; - if ((ret = base64_decode(pval, (const uint8_t *)mark, &decoded_len, &src_len, mode))) { - buf = mark + src_len; - goto base64_failed; - } - if (src_len != (size_t)(buf - mark)) { - buf = mark + src_len; - goto base64_failed; - } - if (decoded_len < max_len) { - if (flatcc_builder_truncate_vector(ctx->ctx, max_len - decoded_len)) { - goto failed; - } - } - if (!(*ref = flatcc_builder_end_vector(ctx->ctx))) { - goto failed; - } - return flatcc_json_parser_string_end(ctx, buf, end); - -failed: - *ref = 0; - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_runtime); - -base64_failed: - *ref = 0; - return flatcc_json_parser_set_error(ctx, buf, end, - urlsafe ? flatcc_json_parser_error_base64url : flatcc_json_parser_error_base64); -} - -const char *flatcc_json_parser_char_array(flatcc_json_parser_t *ctx, - const char *buf, const char *end, char *s, size_t n) -{ - flatcc_json_parser_escape_buffer_t code; - const char *mark; - size_t k = 0; - - buf = flatcc_json_parser_string_start(ctx, buf, end); - if (buf != end) - while (*buf != '\"') { - buf = flatcc_json_parser_string_part(ctx, (mark = buf), end); - if (buf == end) return end; - k = (size_t)(buf - mark); - if (k > n) { - if (!(ctx->flags & flatcc_json_parser_f_skip_array_overflow)) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_array_overflow); - } - k = n; /* Might truncate UTF-8. */ - } - memcpy(s, mark, k); - s += k; - n -= k; - if (*buf == '\"') break; - buf = flatcc_json_parser_string_escape(ctx, buf, end, code); - if (buf == end) return end; - k = (size_t)code[0]; - mark = code + 1; - if (k > n) { - if (!(ctx->flags & flatcc_json_parser_f_skip_array_overflow)) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_array_overflow); - } - k = n; /* Might truncate UTF-8. */ - } - memcpy(s, mark, k); - s += k; - n -= k; - } - if (n != 0) { - if (ctx->flags & flatcc_json_parser_f_reject_array_underflow) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_array_underflow); - } - memset(s, 0, n); - } - return flatcc_json_parser_string_end(ctx, buf, end); -} - - -/* String Creation - depends on flatcc builder. */ - -const char *flatcc_json_parser_build_string(flatcc_json_parser_t *ctx, - const char *buf, const char *end, flatcc_builder_ref_t *ref) -{ - flatcc_json_parser_escape_buffer_t code; - const char *mark; - - buf = flatcc_json_parser_string_start(ctx, buf, end); - buf = flatcc_json_parser_string_part(ctx, (mark = buf), end); - if (buf != end && *buf == '\"') { - *ref = flatcc_builder_create_string(ctx->ctx, mark, (size_t)(buf - mark)); - } else { - if (flatcc_builder_start_string(ctx->ctx) || - 0 == flatcc_builder_append_string(ctx->ctx, mark, (size_t)(buf - mark))) goto failed; - while (buf != end && *buf != '\"') { - buf = flatcc_json_parser_string_escape(ctx, buf, end, code); - if (0 == flatcc_builder_append_string(ctx->ctx, code + 1, (size_t)code[0])) goto failed; - if (end != (buf = flatcc_json_parser_string_part(ctx, (mark = buf), end))) { - if (0 == flatcc_builder_append_string(ctx->ctx, mark, (size_t)(buf - mark))) goto failed; - } - } - *ref = flatcc_builder_end_string(ctx->ctx); - } - return flatcc_json_parser_string_end(ctx, buf, end); - -failed: - *ref = 0; - return buf; -} - -/* UNIONS */ - -/* - * Unions are difficult to parse because the type field may appear after - * the union table and because having two fields opens up for many more - * possible error scenarios. We must store each union of a table - * temporarily - this cannot be in the generated table parser function - * because there could be many unions (about 2^15 with default voffsets) - * although usually there will be only a few. We can also not store the - * data encoded in the existing table buffer in builder because we may - * have to remove it due to schema forwarding and removing it messes up - * the table layout. We also cannot naively allocate it dynamically for - * performance reasons. Instead we place the temporary union data in a - * separate frame from the table buffer, but on a similar stack. This is - * called the user stack and we manage one frame per table that is known - * to contain unions. - * - * Even the temporary structures in place we still cannot parse a union - * before we know its type. Due to JSON typically sorting fields - * alphabetically in various pretty printers, we are likely to receive - * the type late with (`_type` following ``. - * To deal with this we store a backtracking pointer and parses the - * table generically in a first pass and reparse the table once the type - * is known. This can happen recursively with nested tables containing - * unions which is why we need to have a stack frame. - * - * If the type field is stored first we just store the type in the - * custom frame and immediately parses the table with the right type - * once we see it. The parse will be much faster and we can strongly - * recommend that flatbuffer serializers do this, but we cannot require - * it. - * - * The actual overhead of dealing with the custom stack frame is fairly - * cheap once we get past the first custom stack allocation. - * - * We cannot update the builder before both the table and table type - * has been parsed because the the type might have to be ingored due - * to schema forwarding. Therefore the union type must be cached or - * reread. This happens trivially be calling the union parser with the - * type as argument, but it is important to be aware of before - * refactoring the code. - * - * The user frame is created at table start and remains valid until - * table exit, but we cannot assume the pointers to the frame remain - * valid. Specifically we cannot use frame pointers after calling - * the union parser. This means the union type must be cached or reread - * so it can be added to the table. Because the type is passed to - * the union parser this caching happens automatically but it is still - * important to be aware that it is required. - * - * The frame reserves temporary information for all unions the table - * holds, enumerated 0 <= `union_index` < `union_total` - * where the `union_total` is fixed type specific number. - * - * The `type_present` is needed because union types range from 0..255 - * and we need an extra bit do distinguish not present from union type - * `NONE = 0`. - */ - -typedef struct { - const char *backtrace; - const char *line_start; - int line; - uint8_t type_present; - uint8_t type; - /* Union vectors: */ - uoffset_t count; - size_t h_types; -} __flatcc_json_parser_union_entry_t; - -typedef struct { - size_t union_total; - size_t union_count; - __flatcc_json_parser_union_entry_t unions[1]; -} __flatcc_json_parser_union_frame_t; - -const char *flatcc_json_parser_prepare_unions(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_total, size_t *handle) -{ - __flatcc_json_parser_union_frame_t *f; - - if (!(*handle = flatcc_builder_enter_user_frame(ctx->ctx, - sizeof(__flatcc_json_parser_union_frame_t) + (union_total - 1) * - sizeof(__flatcc_json_parser_union_entry_t)))) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_runtime); - } - f = flatcc_builder_get_user_frame_ptr(ctx->ctx, *handle); - /* Frames have zeroed memory. */ - f->union_total = union_total; - return buf; -} - -const char *flatcc_json_parser_finalize_unions(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t handle) -{ - __flatcc_json_parser_union_frame_t *f = flatcc_builder_get_user_frame_ptr(ctx->ctx, handle); - - if (f->union_count) { - buf = flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_union_incomplete); - } - flatcc_builder_exit_user_frame_at(ctx->ctx, handle); - return buf; -} - -const char *flatcc_json_parser_union(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_index, - flatbuffers_voffset_t id, size_t handle, flatcc_json_parser_union_f *union_parser) -{ - __flatcc_json_parser_union_frame_t *f = flatcc_builder_get_user_frame_ptr(ctx->ctx, handle); - __flatcc_json_parser_union_entry_t *e = &f->unions[union_index]; - flatcc_builder_union_ref_t uref; - - if (e->backtrace) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_duplicate); - } - if (!e->type_present) { - /* If we supported table: null, we should not count it, but we don't. */ - ++f->union_count; - e->line = ctx->line; - e->line_start = ctx->line_start; - buf = flatcc_json_parser_generic_json(ctx, (e->backtrace = buf), end); - } else { - uref.type = e->type; - if (e->type == 0) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_union_none_present); - } - --f->union_count; - buf = union_parser(ctx, buf, end, e->type, &uref.value); - if (buf != end) { - if (flatcc_builder_table_add_union(ctx->ctx, id, uref)) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_duplicate); - } - } - } - return buf; -} - -const char *flatcc_json_parser_union_type(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_index, flatbuffers_voffset_t id, - size_t handle, - flatcc_json_parser_integral_symbol_f *type_parsers[], - flatcc_json_parser_union_f *union_parser) -{ - __flatcc_json_parser_union_frame_t *f = flatcc_builder_get_user_frame_ptr(ctx->ctx, handle); - __flatcc_json_parser_union_entry_t *e = f->unions + union_index; - - flatcc_builder_union_ref_t uref; - const char *mark; - int line; - const char *line_start; - - if (e->type_present) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_duplicate); - } - e->type_present = 1; - buf = flatcc_json_parser_uint8(ctx, (mark = buf), end, &e->type); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_uint8(ctx, buf, end, type_parsers, &e->type); - } - /* Only count the union if the type is not NONE. */ - if (e->backtrace == 0) { - f->union_count += e->type != 0; - return buf; - } - FLATCC_ASSERT(f->union_count); - --f->union_count; - /* - * IMPORTANT: we cannot access any value in the frame or entry - * pointer after calling union parse because it might cause the - * stack to reallocate. We should read the frame pointer again if - * needed - we don't but remember it if refactoring code. - * - * IMPORTANT 2: Do not assign buf here. We are backtracking. - */ - line = ctx->line; - line_start = ctx->line_start; - ctx->line = e->line; - ctx->line_start = e->line_start; - uref.type = e->type; - if (end == union_parser(ctx, e->backtrace, end, e->type, &uref.value)) { - return end; - } - if (flatcc_builder_table_add_union(ctx->ctx, id, uref)) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_duplicate); - } - ctx->line = line; - ctx->line_start = line_start; - return buf; -} - -static const char *_parse_union_vector(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t h_types, uoffset_t count, - flatbuffers_voffset_t id, flatcc_json_parser_union_f *union_parser) -{ - flatcc_builder_ref_t ref = 0, *pref; - utype_t *types; - int more; - size_t i; - - if (flatcc_builder_start_offset_vector(ctx->ctx)) goto failed; - buf = flatcc_json_parser_array_start(ctx, buf, end, &more); - i = 0; - while (more) { - if (i == count) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_union_vector_length); - } - /* Frame must be restored between calls to table parser. */ - types = flatcc_builder_get_user_frame_ptr(ctx->ctx, h_types); - buf = union_parser(ctx, buf, end, types[i], &ref); - if (buf == end) { - return buf; - } - if (!(pref = flatcc_builder_extend_offset_vector(ctx->ctx, 1))) goto failed; - *pref = ref; - buf = flatcc_json_parser_array_end(ctx, buf, end, &more); - ++i; - } - if (i != count) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_union_vector_length); - } - /* Frame must be restored between calls to table parser. */ - types = flatcc_builder_get_user_frame_ptr(ctx->ctx, h_types); - if (!(ref = flatcc_builder_end_offset_vector_for_unions(ctx->ctx, types))) goto failed; - if (!(pref = flatcc_builder_table_add_offset(ctx->ctx, id))) goto failed; - *pref = ref; - return buf; -failed: - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_runtime); -} - -const char *flatcc_json_parser_union_vector(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_index, - flatbuffers_voffset_t id, size_t handle, flatcc_json_parser_union_f *union_parser) -{ - __flatcc_json_parser_union_frame_t *f = flatcc_builder_get_user_frame_ptr(ctx->ctx, handle); - __flatcc_json_parser_union_entry_t *e = f->unions + union_index; - - if (e->backtrace) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_duplicate); - } - if (!e->type_present) { - ++f->union_count; - e->line = ctx->line; - e->line_start = ctx->line_start; - buf = flatcc_json_parser_generic_json(ctx, (e->backtrace = buf), end); - } else { - --f->union_count; - buf = _parse_union_vector(ctx, buf, end, e->h_types, e->count, id, union_parser); - } - return buf; -} - -const char *flatcc_json_parser_union_type_vector(flatcc_json_parser_t *ctx, - const char *buf, const char *end, size_t union_index, flatbuffers_voffset_t id, - size_t handle, - flatcc_json_parser_integral_symbol_f *type_parsers[], - flatcc_json_parser_union_f *union_parser, - flatcc_json_parser_is_known_type_f accept_type) -{ - __flatcc_json_parser_union_frame_t *f = flatcc_builder_get_user_frame_ptr(ctx->ctx, handle); - __flatcc_json_parser_union_entry_t *e = f->unions + union_index; - - const char *mark; - int line; - const char *line_start; - int more; - utype_t val; - void *pval; - flatcc_builder_ref_t ref, *pref; - utype_t *types; - size_t size; - size_t h_types; - uoffset_t count; - -#if FLATBUFFERS_UTYPE_MAX != UINT8_MAX -#error "Update union vector parser to support current union type definition." -#endif - - if (e->type_present) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_duplicate); - } - e->type_present = 1; - if (flatcc_builder_start_vector(ctx->ctx, 1, 1, FLATBUFFERS_COUNT_MAX((utype_size)))) goto failed; - buf = flatcc_json_parser_array_start(ctx, buf, end, &more); - while (more) { - if (!(pval = flatcc_builder_extend_vector(ctx->ctx, 1))) goto failed; - buf = flatcc_json_parser_uint8(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_uint8(ctx, (mark = buf), end, type_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - /* Parse unknown types as NONE */ - if (!accept_type(val)) { - if (!(ctx->flags & flatcc_json_parser_f_skip_unknown)) { - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_unknown_union); - } - val = 0; - } - flatbuffers_uint8_write_to_pe(pval, val); - buf = flatcc_json_parser_array_end(ctx, buf, end, &more); - } - count = (uoffset_t)flatcc_builder_vector_count(ctx->ctx); - e->count = count; - size = count * utype_size; - /* Store type vector so it is accessible to the table vector parser. */ - h_types = flatcc_builder_enter_user_frame(ctx->ctx, size); - types = flatcc_builder_get_user_frame_ptr(ctx->ctx, h_types); - memcpy(types, flatcc_builder_vector_edit(ctx->ctx), size); - if (!((ref = flatcc_builder_end_vector(ctx->ctx)))) goto failed; - if (!(pref = flatcc_builder_table_add_offset(ctx->ctx, id - 1))) goto failed; - *pref = ref; - - /* Restore union frame after possible invalidation due to types frame allocation. */ - f = flatcc_builder_get_user_frame_ptr(ctx->ctx, handle); - e = f->unions + union_index; - - e->h_types = h_types; - if (e->backtrace == 0) { - ++f->union_count; - return buf; - } - FLATCC_ASSERT(f->union_count); - --f->union_count; - line = ctx->line; - line_start = ctx->line_start; - ctx->line = e->line; - ctx->line_start = e->line_start; - /* We must not assign buf here because we are backtracking. */ - if (end == _parse_union_vector(ctx, e->backtrace, end, h_types, count, id, union_parser)) return end; - /* - * NOTE: We do not need the user frame anymore, but if we did, it - * would have to be restored from its handle due to the above parse. - */ - ctx->line = line; - ctx->line_start = line_start; - return buf; -failed: - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_runtime); -} - -int flatcc_json_parser_table_as_root(flatcc_builder_t *B, flatcc_json_parser_t *ctx, - const char *buf, size_t bufsiz, flatcc_json_parser_flags_t flags, const char *fid, - flatcc_json_parser_table_f *parser) -{ - flatcc_json_parser_t _ctx; - flatcc_builder_ref_t root; - flatcc_builder_buffer_flags_t builder_flags = flags & flatcc_json_parser_f_with_size ? flatcc_builder_with_size : 0; - - ctx = ctx ? ctx : &_ctx; - flatcc_json_parser_init(ctx, B, buf, buf + bufsiz, flags); - if (flatcc_builder_start_buffer(B, fid, 0, builder_flags)) return -1; - buf = parser(ctx, buf, buf + bufsiz, &root); - if (ctx->error) { - return ctx->error; - } - if (!flatcc_builder_end_buffer(B, root)) return -1; - ctx->end_loc = buf; - return 0; -} - -int flatcc_json_parser_struct_as_root(flatcc_builder_t *B, flatcc_json_parser_t *ctx, - const char *buf, size_t bufsiz, flatcc_json_parser_flags_t flags, const char *fid, - flatcc_json_parser_table_f *parser) -{ - flatcc_json_parser_t _ctx; - flatcc_builder_ref_t root; - flatcc_builder_buffer_flags_t builder_flags = flags & flatcc_json_parser_f_with_size ? flatcc_builder_with_size : 0; - - ctx = ctx ? ctx : &_ctx; - flatcc_json_parser_init(ctx, B, buf, buf + bufsiz, flags); - if (flatcc_builder_start_buffer(B, fid, 0, builder_flags)) return -1; - buf = parser(ctx, buf, buf + bufsiz, &root); - if (ctx->error) { - return ctx->error; - } - if (!flatcc_builder_end_buffer(B, root)) return -1; - ctx->end_loc = buf; - return 0; -} diff --git a/nostrdb/flatcc/json_printer.c b/nostrdb/flatcc/json_printer.c deleted file mode 100644 index 2b8e78d51d..0000000000 --- a/nostrdb/flatcc/json_printer.c +++ /dev/null @@ -1,1486 +0,0 @@ -/* - * Runtime support for printing flatbuffers to JSON. - */ - -#include -#include -#include - -#include "flatcc_rtconfig.h" -#include "flatcc_assert.h" - -/* - * Grisu significantly improves printing speed of floating point values - * and also the overall printing speed when floating point values are - * present in non-trivial amounts. (Also applies to parsing). - */ -#if FLATCC_USE_GRISU3 && !defined(PORTABLE_USE_GRISU3) -#define PORTABLE_USE_GRISU3 1 -#endif - -#include "flatcc_flatbuffers.h" -#include "flatcc_json_printer.h" -#include "flatcc_identifier.h" - -#include "portable/pprintint.h" -#include "portable/pprintfp.h" -#include "portable/pbase64.h" - - -#define RAISE_ERROR(err) flatcc_json_printer_set_error(ctx, flatcc_json_printer_error_##err) - -const char *flatcc_json_printer_error_string(int err) -{ - switch (err) { -#define XX(no, str) \ - case flatcc_json_printer_error_##no: \ - return str; - FLATCC_JSON_PRINT_ERROR_MAP(XX) -#undef XX - default: - return "unknown"; - } -} - -#define flatcc_json_printer_utype_enum_f flatcc_json_printer_union_type_f -#define flatbuffers_utype_read_from_pe __flatbuffers_utype_read_from_pe - -#define uoffset_t flatbuffers_uoffset_t -#define soffset_t flatbuffers_soffset_t -#define voffset_t flatbuffers_voffset_t -#define utype_t flatbuffers_utype_t - -#define uoffset_size sizeof(uoffset_t) -#define soffset_size sizeof(soffset_t) -#define voffset_size sizeof(voffset_t) -#define utype_size sizeof(utype_t) - -#define offset_size uoffset_size - -#if FLATBUFFERS_UTYPE_MAX == UINT8_MAX -#define print_utype print_uint8 -#else -#ifdef FLATBUFFERS_UTYPE_MIN -#define print_utype print_int64 -#else -#define print_utype print_uint64 -#endif -#endif - -static inline const void *read_uoffset_ptr(const void *p) -{ - return (uint8_t *)p + __flatbuffers_uoffset_read_from_pe(p); -} - -static inline voffset_t read_voffset(const void *p, uoffset_t base) -{ - return __flatbuffers_voffset_read_from_pe((uint8_t *)p + base); -} - -static inline const void *get_field_ptr(flatcc_json_printer_table_descriptor_t *td, int id) -{ - uoffset_t vo = (uoffset_t)(id + 2) * (uoffset_t)sizeof(voffset_t); - - if (vo >= (uoffset_t)td->vsize) { - return 0; - } - vo = read_voffset(td->vtable, vo); - if (vo == 0) { - return 0; - } - return (uint8_t *)td->table + vo; -} - -#define print_char(c) *ctx->p++ = (c) - -#define print_null() do { \ - print_char('n'); \ - print_char('u'); \ - print_char('l'); \ - print_char('l'); \ -} while (0) - -#define print_start(c) do { \ - ++ctx->level; \ - *ctx->p++ = c; \ -} while (0) - -#define print_end(c) do { \ - if (ctx->indent) { \ - *ctx->p++ = '\n'; \ - --ctx->level; \ - print_indent(ctx); \ - } \ - *ctx->p++ = c; \ -} while (0) - -#define print_space() do { \ - *ctx->p = ' '; \ - ctx->p += !!ctx->indent; \ -} while (0) - -#define print_nl() do { \ - if (ctx->indent) { \ - *ctx->p++ = '\n'; \ - print_indent(ctx); \ - } else { \ - flatcc_json_printer_flush_partial(ctx); \ - } \ -} while (0) - -/* Call at the end so print_end does not have to check for level. */ -#define print_last_nl() do { \ - if (ctx->indent && ctx->level == 0) { \ - *ctx->p++ = '\n'; \ - } \ - ctx->flush(ctx, 1); \ -} while (0) - -int flatcc_json_printer_fmt_float(char *buf, float n) -{ -#if FLATCC_JSON_PRINT_HEX_FLOAT - return print_hex_float(buf, n); -#else - return print_float(n, buf); -#endif -} - -int flatcc_json_printer_fmt_double(char *buf, double n) -{ -#if FLATCC_JSON_PRINT_HEX_FLOAT - return print_hex_double(buf, n); -#else - return print_double(n, buf); -#endif -} - -int flatcc_json_printer_fmt_bool(char *buf, int n) -{ - if (n) { - memcpy(buf, "true", 4); - return 4; - } - memcpy(buf, "false", 5); - return 5; -} - -static void print_ex(flatcc_json_printer_t *ctx, const char *s, size_t n) -{ - size_t k; - - if (ctx->p >= ctx->pflush) { - ctx->flush(ctx, 0); - } - k = (size_t)(ctx->pflush - ctx->p); - while (n > k) { - memcpy(ctx->p, s, k); - ctx->p += k; - s += k; - n -= k; - ctx->flush(ctx, 0); - k = (size_t)(ctx->pflush - ctx->p); - } - memcpy(ctx->p, s, n); - ctx->p += n; -} - -static inline void print(flatcc_json_printer_t *ctx, const char *s, size_t n) -{ - if (ctx->p + n >= ctx->pflush) { - print_ex(ctx, s, n); - } else { - memcpy(ctx->p, s, n); - ctx->p += n; - } -} - -static void print_escape(flatcc_json_printer_t *ctx, unsigned char c) -{ - unsigned char x; - - print_char('\\'); - switch (c) { - case '"': print_char('\"'); break; - case '\\': print_char('\\'); break; - case '\t' : print_char('t'); break; - case '\f' : print_char('f'); break; - case '\r' : print_char('r'); break; - case '\n' : print_char('n'); break; - case '\b' : print_char('b'); break; - default: - print_char('u'); - print_char('0'); - print_char('0'); - x = c >> 4; - x += x < 10 ? '0' : 'a' - 10; - print_char((char)x); - x = c & 15; - x += x < 10 ? '0' : 'a' - 10; - print_char((char)x); - break; - } -} - -/* - * Even though we know the the string length, we need to scan for escape - * characters. There may be embedded zeroes. Because FlatBuffer strings - * are always zero terminated, we assume and optimize for this. - * - * We enforce \u00xx for control characters, but not for invalid - * characters like 0xff - this makes it possible to handle some other - * codepages transparently while formally not valid. (Formally JSON - * also supports UTF-16/32 little/big endian but flatbuffers only - * support UTF-8 and we expect this in JSON input/output too). - */ -static void print_string(flatcc_json_printer_t *ctx, const char *s, size_t n) -{ - const char *p = s; - /* Unsigned is important. */ - unsigned char c; - size_t k; - - print_char('\"'); - for (;;) { - c = (unsigned char)*p; - while (c >= 0x20 && c != '\"' && c != '\\') { - c = (unsigned char)*++p; - } - k = (size_t)(p - s); - /* Even if k == 0, print ensures buffer flush. */ - print(ctx, s, k); - n -= k; - if (n == 0) break; - s += k; - print_escape(ctx, c); - ++p; - --n; - ++s; - } - print_char('\"'); -} - -/* - * Similar to print_string, but null termination is not guaranteed, and - * trailing nulls are stripped. - */ -static void print_char_array(flatcc_json_printer_t *ctx, const char *s, size_t n) -{ - const char *p = s; - /* Unsigned is important. */ - unsigned char c = 0; - size_t k; - - while (n > 0 && s[n - 1] == '\0') --n; - - print_char('\"'); - for (;;) { - while (n) { - c = (unsigned char)*p; - if (c < 0x20 || c == '\"' || c == '\\') break; - ++p; - --n; - } - k = (size_t)(p - s); - /* Even if k == 0, print ensures buffer flush. */ - print(ctx, s, k); - if (n == 0) break; - s += k; - print_escape(ctx, c); - ++p; - --n; - ++s; - } - print_char('\"'); -} - -static void print_uint8_vector_base64_object(flatcc_json_printer_t *ctx, const void *p, int mode) -{ - const int unpadded_mode = mode & ~base64_enc_modifier_padding; - size_t k, n, len; - const uint8_t *data; - size_t data_len, src_len; - - data_len = (size_t)__flatbuffers_uoffset_read_from_pe(p); - data = (const uint8_t *)p + uoffset_size; - - print_char('\"'); - - len = base64_encoded_size(data_len, mode); - if (ctx->p + len >= ctx->pflush) { - ctx->flush(ctx, 0); - } - while (ctx->p + len > ctx->pflush) { - /* Multiples of 4 output chars consumes exactly 3 bytes before final padding. */ - k = (size_t)(ctx->pflush - ctx->p) & ~(size_t)3; - n = k * 3 / 4; - FLATCC_ASSERT(n > 0); - src_len = k * 3 / 4; - base64_encode((uint8_t *)ctx->p, data, 0, &src_len, unpadded_mode); - ctx->p += k; - data += n; - data_len -= n; - ctx->flush(ctx, 0); - len = base64_encoded_size(data_len, mode); - } - base64_encode((uint8_t *)ctx->p, data, 0, &data_len, mode); - ctx->p += len; - print_char('\"'); -} - -static void print_indent_ex(flatcc_json_printer_t *ctx, size_t n) -{ - size_t k; - - if (ctx->p >= ctx->pflush) { - ctx->flush(ctx, 0); - } - k = (size_t)(ctx->pflush - ctx->p); - while (n > k) { - memset(ctx->p, ' ', k); - ctx->p += k; - n -= k; - ctx->flush(ctx, 0); - k = (size_t)(ctx->pflush - ctx->p); - } - memset(ctx->p, ' ', n); - ctx->p += n; -} - -static inline void print_indent(flatcc_json_printer_t *ctx) -{ - size_t n = (size_t)(ctx->level * ctx->indent); - - if (ctx->p + n > ctx->pflush) { - print_indent_ex(ctx, n); - } else { - memset(ctx->p, ' ', n); - ctx->p += n; - } -} - -/* - * Helpers for external use - does not do autmatic pretty printing, but - * does escape strings. - */ -void flatcc_json_printer_string(flatcc_json_printer_t *ctx, const char *s, size_t n) -{ - print_string(ctx, s, n); -} - -void flatcc_json_printer_write(flatcc_json_printer_t *ctx, const char *s, size_t n) -{ - print(ctx, s, n); -} - -void flatcc_json_printer_nl(flatcc_json_printer_t *ctx) -{ - print_char('\n'); - flatcc_json_printer_flush_partial(ctx); -} - -void flatcc_json_printer_char(flatcc_json_printer_t *ctx, char c) -{ - print_char(c); -} - -void flatcc_json_printer_indent(flatcc_json_printer_t *ctx) -{ - /* - * This is only needed when indent is 0 but helps external users - * to avoid flushing when indenting. - */ - print_indent(ctx); -} - -void flatcc_json_printer_add_level(flatcc_json_printer_t *ctx, int n) -{ - ctx->level += n; -} - -int flatcc_json_printer_get_level(flatcc_json_printer_t *ctx) -{ - return ctx->level; -} - -static inline void print_symbol(flatcc_json_printer_t *ctx, const char *name, size_t len) -{ - *ctx->p = '\"'; - ctx->p += !ctx->unquote; - if (ctx->p + len < ctx->pflush) { - memcpy(ctx->p, name, len); - ctx->p += len; - } else { - print(ctx, name, len); - } - *ctx->p = '\"'; - ctx->p += !ctx->unquote; -} - -static inline void print_name(flatcc_json_printer_t *ctx, const char *name, size_t len) -{ - print_nl(); - print_symbol(ctx, name, len); - print_char(':'); - print_space(); -} - -#define __flatcc_define_json_printer_scalar(TN, T) \ -void flatcc_json_printer_ ## TN( \ - flatcc_json_printer_t *ctx, T v) \ -{ \ - ctx->p += print_ ## TN(v, ctx->p); \ -} - -__flatcc_define_json_printer_scalar(uint8, uint8_t) -__flatcc_define_json_printer_scalar(uint16, uint16_t) -__flatcc_define_json_printer_scalar(uint32, uint32_t) -__flatcc_define_json_printer_scalar(uint64, uint64_t) -__flatcc_define_json_printer_scalar(int8, int8_t) -__flatcc_define_json_printer_scalar(int16, int16_t) -__flatcc_define_json_printer_scalar(int32, int32_t) -__flatcc_define_json_printer_scalar(int64, int64_t) -__flatcc_define_json_printer_scalar(float, float) -__flatcc_define_json_printer_scalar(double, double) - -void flatcc_json_printer_enum(flatcc_json_printer_t *ctx, const char *symbol, size_t len) -{ - print_symbol(ctx, symbol, len); -} - -void flatcc_json_printer_delimit_enum_flags(flatcc_json_printer_t *ctx, int multiple) -{ -#if FLATCC_JSON_PRINT_ALWAYS_QUOTE_MULTIPLE_FLAGS - int quote = !ctx->unquote || multiple; -#else - int quote = !ctx->unquote; -#endif - *ctx->p = '"'; - ctx->p += quote; -} - -void flatcc_json_printer_enum_flag(flatcc_json_printer_t *ctx, int count, const char *symbol, size_t len) -{ - *ctx->p = ' '; - ctx->p += count > 0; - print(ctx, symbol, len); -} - -static inline void print_string_object(flatcc_json_printer_t *ctx, const void *p) -{ - size_t len; - const char *s; - - len = (size_t)__flatbuffers_uoffset_read_from_pe(p); - s = (const char *)p + uoffset_size; - print_string(ctx, s, len); -} - -#define __define_print_scalar_struct_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _struct_field(flatcc_json_printer_t *ctx,\ - int index, const void *p, size_t offset, \ - const char *name, size_t len) \ -{ \ - T x = flatbuffers_ ## TN ## _read_from_pe((uint8_t *)p + offset); \ - \ - if (index) { \ - print_char(','); \ - } \ - print_name(ctx, name, len); \ - ctx->p += print_ ## TN (x, ctx->p); \ -} - -void flatcc_json_printer_char_array_struct_field( - flatcc_json_printer_t *ctx, - int index, const void *p, size_t offset, - const char *name, size_t len, size_t count) -{ - p = (void *)((size_t)p + offset); - if (index) { - print_char(','); - } - print_name(ctx, name, len); - print_char_array(ctx, p, count); -} - -#define __define_print_scalar_array_struct_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _array_struct_field( \ - flatcc_json_printer_t *ctx, \ - int index, const void *p, size_t offset, \ - const char *name, size_t len, size_t count) \ -{ \ - p = (void *)((size_t)p + offset); \ - if (index) { \ - print_char(','); \ - } \ - print_name(ctx, name, len); \ - print_start('['); \ - if (count) { \ - print_nl(); \ - ctx->p += print_ ## TN ( \ - flatbuffers_ ## TN ## _read_from_pe(p), \ - ctx->p); \ - p = (void *)((size_t)p + sizeof(T)); \ - --count; \ - } \ - while (count--) { \ - print_char(','); \ - print_nl(); \ - ctx->p += print_ ## TN ( \ - flatbuffers_ ## TN ## _read_from_pe(p), \ - ctx->p); \ - p = (void *)((size_t)p + sizeof(T)); \ - } \ - print_end(']'); \ -} - -#define __define_print_enum_array_struct_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_array_struct_field( \ - flatcc_json_printer_t *ctx, \ - int index, const void *p, size_t offset, \ - const char *name, size_t len, size_t count, \ - flatcc_json_printer_ ## TN ##_enum_f *pf) \ -{ \ - T x; \ - \ - p = (void *)((size_t)p + offset); \ - if (index) { \ - print_char(','); \ - } \ - print_name(ctx, name, len); \ - print_start('['); \ - if (count) { \ - print_nl(); \ - x = flatbuffers_ ## TN ## _read_from_pe(p); \ - if (ctx->noenum) { \ - ctx->p += print_ ## TN (x, ctx->p); \ - } else { \ - pf(ctx, x); \ - } \ - p = (void *)((size_t)p + sizeof(T)); \ - --count; \ - } \ - while (count--) { \ - print_char(','); \ - print_nl(); \ - x = flatbuffers_ ## TN ## _read_from_pe(p); \ - if (ctx->noenum) { \ - ctx->p += print_ ## TN (x, ctx->p); \ - } else { \ - pf(ctx, x); \ - } \ - p = (void *)((size_t)p + sizeof(T)); \ - } \ - print_end(']'); \ -} - -#define __define_print_enum_struct_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_struct_field( \ - flatcc_json_printer_t *ctx, \ - int index, const void *p, size_t offset, \ - const char *name, size_t len, \ - flatcc_json_printer_ ## TN ##_enum_f *pf) \ -{ \ - T x = flatbuffers_ ## TN ## _read_from_pe((uint8_t *)p + offset); \ - \ - if (index) { \ - print_char(','); \ - } \ - print_name(ctx, name, len); \ - if (ctx->noenum) { \ - ctx->p += print_ ## TN (x, ctx->p); \ - } else { \ - pf(ctx, x); \ - } \ -} - -#define __define_print_scalar_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _field(flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len, T v) \ -{ \ - T x; \ - const void *p = get_field_ptr(td, id); \ - \ - if (p) { \ - x = flatbuffers_ ## TN ## _read_from_pe(p); \ - if (x == v && ctx->skip_default) { \ - return; \ - } \ - } else { \ - if (!ctx->force_default) { \ - return; \ - } \ - x = v; \ - } \ - if (td->count++) { \ - print_char(','); \ - } \ - print_name(ctx, name, len); \ - ctx->p += print_ ## TN (x, ctx->p); \ -} - -#define __define_print_scalar_optional_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _optional_field( \ - flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len) \ -{ \ - T x; \ - const void *p = get_field_ptr(td, id); \ - \ - if (!p) return; \ - x = flatbuffers_ ## TN ## _read_from_pe(p); \ - if (td->count++) { \ - print_char(','); \ - } \ - print_name(ctx, name, len); \ - ctx->p += print_ ## TN (x, ctx->p); \ -} - - -#define __define_print_enum_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_field(flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len, T v, \ - flatcc_json_printer_ ## TN ##_enum_f *pf) \ -{ \ - T x; \ - const void *p = get_field_ptr(td, id); \ - \ - if (p) { \ - x = flatbuffers_ ## TN ## _read_from_pe(p); \ - if (x == v && ctx->skip_default) { \ - return; \ - } \ - } else { \ - if (!ctx->force_default) { \ - return; \ - } \ - x = v; \ - } \ - if (td->count++) { \ - print_char(','); \ - } \ - print_name(ctx, name, len); \ - if (ctx->noenum) { \ - ctx->p += print_ ## TN (x, ctx->p); \ - } else { \ - pf(ctx, x); \ - } \ -} - -#define __define_print_enum_optional_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_optional_field( \ - flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len, \ - flatcc_json_printer_ ## TN ##_enum_f *pf) \ -{ \ - T x; \ - const void *p = get_field_ptr(td, id); \ - \ - if (!p) return; \ - x = flatbuffers_ ## TN ## _read_from_pe(p); \ - if (td->count++) { \ - print_char(','); \ - } \ - print_name(ctx, name, len); \ - if (ctx->noenum) { \ - ctx->p += print_ ## TN (x, ctx->p); \ - } else { \ - pf(ctx, x); \ - } \ -} - -static inline void print_table_object(flatcc_json_printer_t *ctx, - const void *p, int ttl, flatcc_json_printer_table_f pf) -{ - flatcc_json_printer_table_descriptor_t td; - - if (!--ttl) { - flatcc_json_printer_set_error(ctx, flatcc_json_printer_error_deep_recursion); - return; - } - print_start('{'); - td.count = 0; - td.ttl = ttl; - td.table = p; - td.vtable = (uint8_t *)p - __flatbuffers_soffset_read_from_pe(p); - td.vsize = __flatbuffers_voffset_read_from_pe(td.vtable); - pf(ctx, &td); - print_end('}'); -} - -void flatcc_json_printer_string_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len) -{ - const void *p = get_field_ptr(td, id); - - if (p) { - if (td->count++) { - print_char(','); - } - print_name(ctx, name, len); - print_string_object(ctx, read_uoffset_ptr(p)); - } -} - -void flatcc_json_printer_uint8_vector_base64_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, int urlsafe) -{ - const void *p = get_field_ptr(td, id); - int mode; - - mode = urlsafe ? base64_mode_url : base64_mode_rfc4648; - mode |= base64_enc_modifier_padding; - - if (p) { - if (td->count++) { - print_char(','); - } - print_name(ctx, name, len); - print_uint8_vector_base64_object(ctx, read_uoffset_ptr(p), mode); - } -} - -#define __define_print_scalar_vector_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _vector_field( \ - flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len) \ -{ \ - const void *p = get_field_ptr(td, id); \ - uoffset_t count; \ - \ - if (p) { \ - if (td->count++) { \ - print_char(','); \ - } \ - p = read_uoffset_ptr(p); \ - count = __flatbuffers_uoffset_read_from_pe(p); \ - p = (void *)((size_t)p + uoffset_size); \ - print_name(ctx, name, len); \ - print_start('['); \ - if (count) { \ - print_nl(); \ - ctx->p += print_ ## TN ( \ - flatbuffers_ ## TN ## _read_from_pe(p), \ - ctx->p); \ - p = (void *)((size_t)p + sizeof(T)); \ - --count; \ - } \ - while (count--) { \ - print_char(','); \ - print_nl(); \ - ctx->p += print_ ## TN ( \ - flatbuffers_ ## TN ## _read_from_pe(p), \ - ctx->p); \ - p = (void *)((size_t)p + sizeof(T)); \ - } \ - print_end(']'); \ - } \ -} - -#define __define_print_enum_vector_field(TN, T) \ -void flatcc_json_printer_ ## TN ## _enum_vector_field( \ - flatcc_json_printer_t *ctx, \ - flatcc_json_printer_table_descriptor_t *td, \ - int id, const char *name, size_t len, \ - flatcc_json_printer_ ## TN ##_enum_f *pf) \ -{ \ - const void *p; \ - uoffset_t count; \ - \ - if (ctx->noenum) { \ - flatcc_json_printer_ ## TN ## _vector_field(ctx, td, id, name, len);\ - return; \ - } \ - p = get_field_ptr(td, id); \ - if (p) { \ - if (td->count++) { \ - print_char(','); \ - } \ - p = read_uoffset_ptr(p); \ - count = __flatbuffers_uoffset_read_from_pe(p); \ - p = (void *)((size_t)p + uoffset_size); \ - print_name(ctx, name, len); \ - print_start('['); \ - if (count) { \ - print_nl(); \ - pf(ctx, flatbuffers_ ## TN ## _read_from_pe(p)); \ - p = (void *)((size_t)p + sizeof(T)); \ - --count; \ - } \ - while (count--) { \ - print_char(','); \ - print_nl(); \ - pf(ctx, flatbuffers_ ## TN ## _read_from_pe(p)); \ - p = (void *)((size_t)p + sizeof(T)); \ - } \ - print_end(']'); \ - } \ -} - -__define_print_scalar_field(uint8, uint8_t) -__define_print_scalar_field(uint16, uint16_t) -__define_print_scalar_field(uint32, uint32_t) -__define_print_scalar_field(uint64, uint64_t) -__define_print_scalar_field(int8, int8_t) -__define_print_scalar_field(int16, int16_t) -__define_print_scalar_field(int32, int32_t) -__define_print_scalar_field(int64, int64_t) -__define_print_scalar_field(bool, flatbuffers_bool_t) -__define_print_scalar_field(float, float) -__define_print_scalar_field(double, double) - -__define_print_enum_field(uint8, uint8_t) -__define_print_enum_field(uint16, uint16_t) -__define_print_enum_field(uint32, uint32_t) -__define_print_enum_field(uint64, uint64_t) -__define_print_enum_field(int8, int8_t) -__define_print_enum_field(int16, int16_t) -__define_print_enum_field(int32, int32_t) -__define_print_enum_field(int64, int64_t) -__define_print_enum_field(bool, flatbuffers_bool_t) - -__define_print_scalar_optional_field(uint8, uint8_t) -__define_print_scalar_optional_field(uint16, uint16_t) -__define_print_scalar_optional_field(uint32, uint32_t) -__define_print_scalar_optional_field(uint64, uint64_t) -__define_print_scalar_optional_field(int8, int8_t) -__define_print_scalar_optional_field(int16, int16_t) -__define_print_scalar_optional_field(int32, int32_t) -__define_print_scalar_optional_field(int64, int64_t) -__define_print_scalar_optional_field(bool, flatbuffers_bool_t) -__define_print_scalar_optional_field(float, float) -__define_print_scalar_optional_field(double, double) - -__define_print_enum_optional_field(uint8, uint8_t) -__define_print_enum_optional_field(uint16, uint16_t) -__define_print_enum_optional_field(uint32, uint32_t) -__define_print_enum_optional_field(uint64, uint64_t) -__define_print_enum_optional_field(int8, int8_t) -__define_print_enum_optional_field(int16, int16_t) -__define_print_enum_optional_field(int32, int32_t) -__define_print_enum_optional_field(int64, int64_t) -__define_print_enum_optional_field(bool, flatbuffers_bool_t) - -__define_print_scalar_struct_field(uint8, uint8_t) -__define_print_scalar_struct_field(uint16, uint16_t) -__define_print_scalar_struct_field(uint32, uint32_t) -__define_print_scalar_struct_field(uint64, uint64_t) -__define_print_scalar_struct_field(int8, int8_t) -__define_print_scalar_struct_field(int16, int16_t) -__define_print_scalar_struct_field(int32, int32_t) -__define_print_scalar_struct_field(int64, int64_t) -__define_print_scalar_struct_field(bool, flatbuffers_bool_t) -__define_print_scalar_struct_field(float, float) -__define_print_scalar_struct_field(double, double) - -__define_print_scalar_array_struct_field(uint8, uint8_t) -__define_print_scalar_array_struct_field(uint16, uint16_t) -__define_print_scalar_array_struct_field(uint32, uint32_t) -__define_print_scalar_array_struct_field(uint64, uint64_t) -__define_print_scalar_array_struct_field(int8, int8_t) -__define_print_scalar_array_struct_field(int16, int16_t) -__define_print_scalar_array_struct_field(int32, int32_t) -__define_print_scalar_array_struct_field(int64, int64_t) -__define_print_scalar_array_struct_field(bool, flatbuffers_bool_t) -__define_print_scalar_array_struct_field(float, float) -__define_print_scalar_array_struct_field(double, double) - -__define_print_enum_array_struct_field(uint8, uint8_t) -__define_print_enum_array_struct_field(uint16, uint16_t) -__define_print_enum_array_struct_field(uint32, uint32_t) -__define_print_enum_array_struct_field(uint64, uint64_t) -__define_print_enum_array_struct_field(int8, int8_t) -__define_print_enum_array_struct_field(int16, int16_t) -__define_print_enum_array_struct_field(int32, int32_t) -__define_print_enum_array_struct_field(int64, int64_t) -__define_print_enum_array_struct_field(bool, flatbuffers_bool_t) - -__define_print_enum_struct_field(uint8, uint8_t) -__define_print_enum_struct_field(uint16, uint16_t) -__define_print_enum_struct_field(uint32, uint32_t) -__define_print_enum_struct_field(uint64, uint64_t) -__define_print_enum_struct_field(int8, int8_t) -__define_print_enum_struct_field(int16, int16_t) -__define_print_enum_struct_field(int32, int32_t) -__define_print_enum_struct_field(int64, int64_t) -__define_print_enum_struct_field(bool, flatbuffers_bool_t) - -__define_print_scalar_vector_field(utype, flatbuffers_utype_t) -__define_print_scalar_vector_field(uint8, uint8_t) -__define_print_scalar_vector_field(uint16, uint16_t) -__define_print_scalar_vector_field(uint32, uint32_t) -__define_print_scalar_vector_field(uint64, uint64_t) -__define_print_scalar_vector_field(int8, int8_t) -__define_print_scalar_vector_field(int16, int16_t) -__define_print_scalar_vector_field(int32, int32_t) -__define_print_scalar_vector_field(int64, int64_t) -__define_print_scalar_vector_field(bool, flatbuffers_bool_t) -__define_print_scalar_vector_field(float, float) -__define_print_scalar_vector_field(double, double) - -__define_print_enum_vector_field(utype, flatbuffers_utype_t) -__define_print_enum_vector_field(uint8, uint8_t) -__define_print_enum_vector_field(uint16, uint16_t) -__define_print_enum_vector_field(uint32, uint32_t) -__define_print_enum_vector_field(uint64, uint64_t) -__define_print_enum_vector_field(int8, int8_t) -__define_print_enum_vector_field(int16, int16_t) -__define_print_enum_vector_field(int32, int32_t) -__define_print_enum_vector_field(int64, int64_t) -__define_print_enum_vector_field(bool, flatbuffers_bool_t) - -void flatcc_json_printer_struct_vector_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - size_t size, - flatcc_json_printer_struct_f pf) -{ - const uint8_t *p = get_field_ptr(td, id); - uoffset_t count; - - if (p) { - if (td->count++) { - print_char(','); - } - p = read_uoffset_ptr(p); - count = __flatbuffers_uoffset_read_from_pe(p); - p += uoffset_size; - print_name(ctx, name, len); - print_start('['); - if (count) { - print_nl(); - print_start('{'); - pf(ctx, p); - print_end('}'); - --count; - } - while (count--) { - p += size; - print_char(','); - print_nl(); - print_start('{'); - pf(ctx, p); - print_end('}'); - } - print_end(']'); - } -} - -void flatcc_json_printer_string_vector_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len) -{ - const uoffset_t *p = get_field_ptr(td, id); - uoffset_t count; - - if (p) { - if (td->count++) { - print_char(','); - } - p = read_uoffset_ptr(p); - count = __flatbuffers_uoffset_read_from_pe(p); - ++p; - print_name(ctx, name, len); - print_start('['); - if (count) { - print_nl(); - print_string_object(ctx, read_uoffset_ptr(p)); - --count; - } - while (count--) { - ++p; - print_char(','); - print_nl(); - print_string_object(ctx, read_uoffset_ptr(p)); - } - print_end(']'); - } -} - -void flatcc_json_printer_table_vector_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_table_f pf) -{ - const uoffset_t *p = get_field_ptr(td, id); - uoffset_t count; - - if (p) { - if (td->count++) { - print_char(','); - } - p = read_uoffset_ptr(p); - count = __flatbuffers_uoffset_read_from_pe(p); - ++p; - print_name(ctx, name, len); - print_start('['); - if (count) { - print_table_object(ctx, read_uoffset_ptr(p), td->ttl, pf); - --count; - } - while (count--) { - ++p; - print_char(','); - print_table_object(ctx, read_uoffset_ptr(p), td->ttl, pf); - } - print_end(']'); - } -} - -void flatcc_json_printer_union_vector_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_union_type_f ptf, - flatcc_json_printer_union_f pf) -{ - const uoffset_t *pt = get_field_ptr(td, id - 1); - const uoffset_t *p = get_field_ptr(td, id); - utype_t *types, type; - uoffset_t count; - char type_name[FLATCC_JSON_PRINT_NAME_LEN_MAX + 5]; - flatcc_json_printer_union_descriptor_t ud; - - ud.ttl = td->ttl; - if (len > FLATCC_JSON_PRINT_NAME_LEN_MAX) { - RAISE_ERROR(bad_input); - FLATCC_ASSERT(0 && "identifier too long"); - return; - } - memcpy(type_name, name, len); - memcpy(type_name + len, "_type", 5); - if (p && pt) { - flatcc_json_printer_utype_enum_vector_field(ctx, td, id - 1, - type_name, len + 5, ptf); - if (td->count++) { - print_char(','); - } - p = read_uoffset_ptr(p); - pt = read_uoffset_ptr(pt); - count = __flatbuffers_uoffset_read_from_pe(p); - ++p; - ++pt; - types = (utype_t *)pt; - print_name(ctx, name, len); - print_start('['); - - if (count) { - type = __flatbuffers_utype_read_from_pe(types); - if (type != 0) { - ud.type = type; - ud.member = p; - pf(ctx, &ud); - } else { - print_null(); - } - --count; - } - while (count--) { - ++p; - ++types; - type = __flatbuffers_utype_read_from_pe(types); - print_char(','); - if (type != 0) { - ud.type = type; - ud.member = p; - pf(ctx, &ud); - } else { - print_null(); - } - } - print_end(']'); - } -} - -void flatcc_json_printer_table_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_table_f pf) -{ - const void *p = get_field_ptr(td, id); - - if (p) { - if (td->count++) { - print_char(','); - } - print_name(ctx, name, len); - print_table_object(ctx, read_uoffset_ptr(p), td->ttl, pf); - } -} - -void flatcc_json_printer_union_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_union_type_f ptf, - flatcc_json_printer_union_f pf) -{ - const void *pt = get_field_ptr(td, id - 1); - const void *p = get_field_ptr(td, id); - utype_t type; - flatcc_json_printer_union_descriptor_t ud; - - if (!p || !pt) { - return; - } - type = __flatbuffers_utype_read_from_pe(pt); - if (td->count++) { - print_char(','); - } - print_nl(); - *ctx->p = '\"'; - ctx->p += !ctx->unquote; - if (ctx->p + len < ctx->pflush) { - memcpy(ctx->p, name, len); - ctx->p += len; - } else { - print(ctx, name, len); - } - print(ctx, "_type", 5); - *ctx->p = '\"'; - ctx->p += !ctx->unquote; - print_char(':'); - print_space(); - if (ctx->noenum) { - ctx->p += print_utype(type, ctx->p); - } else { - ptf(ctx, type); - } - if (type != 0) { - print_char(','); - print_name(ctx, name, len); - ud.ttl = td->ttl; - ud.type = type; - ud.member = p; - pf(ctx, &ud); - } -} - -void flatcc_json_printer_union_table(flatcc_json_printer_t *ctx, - flatcc_json_printer_union_descriptor_t *ud, - flatcc_json_printer_table_f pf) -{ - print_table_object(ctx, read_uoffset_ptr(ud->member), ud->ttl, pf); -} - -void flatcc_json_printer_union_struct(flatcc_json_printer_t *ctx, - flatcc_json_printer_union_descriptor_t *ud, - flatcc_json_printer_struct_f pf) -{ - print_start('{'); - pf(ctx, read_uoffset_ptr(ud->member)); - print_end('}'); -} - -void flatcc_json_printer_union_string(flatcc_json_printer_t *ctx, - flatcc_json_printer_union_descriptor_t *ud) -{ - print_string_object(ctx, read_uoffset_ptr(ud->member)); -} - -void flatcc_json_printer_embedded_struct_field(flatcc_json_printer_t *ctx, - int index, const void *p, size_t offset, - const char *name, size_t len, - flatcc_json_printer_struct_f pf) -{ - if (index) { - print_char(','); - } - print_name(ctx, name, len); - print_start('{'); - pf(ctx, (uint8_t *)p + offset); - print_end('}'); -} - -void flatcc_json_printer_embedded_struct_array_field(flatcc_json_printer_t *ctx, - int index, const void *p, size_t offset, - const char *name, size_t len, - size_t size, size_t count, - flatcc_json_printer_struct_f pf) -{ - size_t i; - if (index) { - print_char(','); - } - print_name(ctx, name, len); - print_start('['); - for (i = 0; i < count; ++i) { - if (i > 0) { - print_char(','); - } - print_start('{'); \ - pf(ctx, (uint8_t *)p + offset + i * size); - print_end('}'); - } - print_end(']'); -} - -void flatcc_json_printer_struct_field(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - flatcc_json_printer_struct_f *pf) -{ - const void *p = get_field_ptr(td, id); - - if (p) { - if (td->count++) { - print_char(','); - } - print_name(ctx, name, len); - print_start('{'); - pf(ctx, p); - print_end('}'); - } -} - -/* - * Make sure the buffer identifier is valid before assuming the rest of - * the buffer is sane. - * NOTE: this won't work with type hashes because these can contain - * nulls in the fid string. In this case use null as fid to disable - * check. - */ -static int accept_header(flatcc_json_printer_t * ctx, - const void *buf, size_t bufsiz, const char *fid) -{ - flatbuffers_thash_t id, id2 = 0; - - if (buf == 0 || bufsiz < offset_size + FLATBUFFERS_IDENTIFIER_SIZE) { - RAISE_ERROR(bad_input); - FLATCC_ASSERT(0 && "buffer header too small"); - return 0; - } - if (fid != 0) { - id2 = flatbuffers_type_hash_from_string(fid); - id = __flatbuffers_thash_read_from_pe((uint8_t *)buf + offset_size); - if (!(id2 == 0 || id == id2)) { - RAISE_ERROR(bad_input); - FLATCC_ASSERT(0 && "identifier mismatch"); - return 0; - } - } - return 1; -} - -int flatcc_json_printer_struct_as_root(flatcc_json_printer_t *ctx, - const void *buf, size_t bufsiz, const char *fid, - flatcc_json_printer_struct_f *pf) -{ - if (!accept_header(ctx, buf, bufsiz, fid)) { - return -1; - } - print_start('{'); - pf(ctx, read_uoffset_ptr(buf)); - print_end('}'); - print_last_nl(); - return flatcc_json_printer_get_error(ctx) ? -1 : (int)ctx->total + (int)(ctx->p - ctx->buf); -} - -int flatcc_json_printer_table_as_root(flatcc_json_printer_t *ctx, - const void *buf, size_t bufsiz, const char *fid, flatcc_json_printer_table_f *pf) -{ - if (!accept_header(ctx, buf, bufsiz, fid)) { - return -1; - } - print_table_object(ctx, read_uoffset_ptr(buf), FLATCC_JSON_PRINT_MAX_LEVELS, pf); - print_last_nl(); - return flatcc_json_printer_get_error(ctx) ? -1 : (int)ctx->total + (int)(ctx->p - ctx->buf); -} - -void flatcc_json_printer_struct_as_nested_root(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - const char *fid, - flatcc_json_printer_struct_f *pf) -{ - const uoffset_t *buf; - uoffset_t bufsiz; - - if (0 == (buf = get_field_ptr(td, id))) { - return; - } - buf = (const uoffset_t *)((size_t)buf + __flatbuffers_uoffset_read_from_pe(buf)); - bufsiz = __flatbuffers_uoffset_read_from_pe(buf); - if (!accept_header(ctx, buf, bufsiz, fid)) { - return; - } - if (td->count++) { - print_char(','); - } - print_name(ctx, name, len); - print_start('{'); - pf(ctx, read_uoffset_ptr(buf)); - print_end('}'); -} - -void flatcc_json_printer_table_as_nested_root(flatcc_json_printer_t *ctx, - flatcc_json_printer_table_descriptor_t *td, - int id, const char *name, size_t len, - const char *fid, - flatcc_json_printer_table_f pf) -{ - const uoffset_t *buf; - uoffset_t bufsiz; - - if (0 == (buf = get_field_ptr(td, id))) { - return; - } - buf = (const uoffset_t *)((size_t)buf + __flatbuffers_uoffset_read_from_pe(buf)); - bufsiz = __flatbuffers_uoffset_read_from_pe(buf); - ++buf; - if (!accept_header(ctx, buf, bufsiz, fid)) { - return; - } - if (td->count++) { - print_char(','); - } - print_name(ctx, name, len); - print_table_object(ctx, read_uoffset_ptr(buf), td->ttl, pf); -} - -static void __flatcc_json_printer_flush(flatcc_json_printer_t *ctx, int all) -{ - if (!all && ctx->p >= ctx->pflush) { - size_t spill = (size_t)(ctx->p - ctx->pflush); - - fwrite(ctx->buf, ctx->flush_size, 1, ctx->fp); - memcpy(ctx->buf, ctx->buf + ctx->flush_size, spill); - ctx->p = ctx->buf + spill; - ctx->total += ctx->flush_size; - } else { - size_t len = (size_t)(ctx->p - ctx->buf); - - fwrite(ctx->buf, len, 1, ctx->fp); - ctx->p = ctx->buf; - ctx->total += len; - } - *ctx->p = '\0'; -} - -int flatcc_json_printer_init(flatcc_json_printer_t *ctx, void *fp) -{ - memset(ctx, 0, sizeof(*ctx)); - ctx->fp = fp ? fp : stdout; - ctx->flush = __flatcc_json_printer_flush; - if (!(ctx->buf = FLATCC_JSON_PRINTER_ALLOC(FLATCC_JSON_PRINT_BUFFER_SIZE))) { - return -1; - } - ctx->own_buffer = 1; - ctx->size = FLATCC_JSON_PRINT_BUFFER_SIZE; - ctx->flush_size = FLATCC_JSON_PRINT_FLUSH_SIZE; - ctx->p = ctx->buf; - ctx->pflush = ctx->buf + ctx->flush_size; - /* - * Make sure we have space for primitive operations such as printing numbers - * without having to flush. - */ - FLATCC_ASSERT(ctx->flush_size + FLATCC_JSON_PRINT_RESERVE <= ctx->size); - return 0; -} - -static void __flatcc_json_printer_flush_buffer(flatcc_json_printer_t *ctx, int all) -{ - (void)all; - - if (ctx->p >= ctx->pflush) { - RAISE_ERROR(overflow); - ctx->total += (size_t)(ctx->p - ctx->buf); - ctx->p = ctx->buf; - } - *ctx->p = '\0'; -} - -int flatcc_json_printer_init_buffer(flatcc_json_printer_t *ctx, char *buffer, size_t buffer_size) -{ - FLATCC_ASSERT(buffer_size >= FLATCC_JSON_PRINT_RESERVE); - if (buffer_size < FLATCC_JSON_PRINT_RESERVE) { - return -1; - } - memset(ctx, 0, sizeof(*ctx)); - ctx->buf = buffer; - ctx->size = buffer_size; - ctx->flush_size = ctx->size - FLATCC_JSON_PRINT_RESERVE; - ctx->p = ctx->buf; - ctx->pflush = ctx->buf + ctx->flush_size; - ctx->flush = __flatcc_json_printer_flush_buffer; - return 0; -} - -static void __flatcc_json_printer_flush_dynamic_buffer(flatcc_json_printer_t *ctx, int all) -{ - size_t len = (size_t)(ctx->p - ctx->buf); - char *p; - - (void)all; - - *ctx->p = '\0'; - if (ctx->p < ctx->pflush) { - return; - } - p = FLATCC_JSON_PRINTER_REALLOC(ctx->buf, ctx->size * 2); - if (!p) { - RAISE_ERROR(overflow); - ctx->total += len; - ctx->p = ctx->buf; - } else { - ctx->size *= 2; - ctx->flush_size = ctx->size - FLATCC_JSON_PRINT_RESERVE; - ctx->buf = p; - ctx->p = p + len; - ctx->pflush = p + ctx->flush_size; - } - *ctx->p = '\0'; -} - -int flatcc_json_printer_init_dynamic_buffer(flatcc_json_printer_t *ctx, size_t buffer_size) -{ - if (buffer_size == 0) { - buffer_size = FLATCC_JSON_PRINT_DYN_BUFFER_SIZE; - } - if (buffer_size < FLATCC_JSON_PRINT_RESERVE) { - buffer_size = FLATCC_JSON_PRINT_RESERVE; - } - memset(ctx, 0, sizeof(*ctx)); - ctx->buf = FLATCC_JSON_PRINTER_ALLOC(buffer_size); - ctx->own_buffer = 1; - ctx->size = buffer_size; - ctx->flush_size = ctx->size - FLATCC_JSON_PRINT_RESERVE; - ctx->p = ctx->buf; - ctx->pflush = ctx->buf + ctx->flush_size; - ctx->flush = __flatcc_json_printer_flush_dynamic_buffer; - if (!ctx->buf) { - RAISE_ERROR(overflow); - return -1; - } - return 0; -} - -void *flatcc_json_printer_get_buffer(flatcc_json_printer_t *ctx, size_t *buffer_size) -{ - ctx->flush(ctx, 0); - if (buffer_size) { - *buffer_size = (size_t)(ctx->p - ctx->buf); - } - return ctx->buf; -} - -void *flatcc_json_printer_finalize_dynamic_buffer(flatcc_json_printer_t *ctx, size_t *buffer_size) -{ - void *buffer; - - buffer = flatcc_json_printer_get_buffer(ctx, buffer_size); - memset(ctx, 0, sizeof(*ctx)); - return buffer; -} - -void flatcc_json_printer_clear(flatcc_json_printer_t *ctx) -{ - if (ctx->own_buffer && ctx->buf) { - FLATCC_JSON_PRINTER_FREE(ctx->buf); - } - memset(ctx, 0, sizeof(*ctx)); -} diff --git a/nostrdb/flatcc/portable/LICENSE b/nostrdb/flatcc/portable/LICENSE deleted file mode 100644 index bb7ca578cd..0000000000 --- a/nostrdb/flatcc/portable/LICENSE +++ /dev/null @@ -1,14 +0,0 @@ -Copyright (c) 2016 Mikkel F. Jørgensen, dvide.com -Some files also Copyright author of MathGeoLib (https://github.com/juj) - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. http://www.apache.org/licenses/LICENSE-2.0 diff --git a/nostrdb/flatcc/portable/README.md b/nostrdb/flatcc/portable/README.md deleted file mode 100644 index 512b1a830b..0000000000 --- a/nostrdb/flatcc/portable/README.md +++ /dev/null @@ -1,57 +0,0 @@ -A small library for adding C11 compatibility to older C compilers, but -only a small highly useful subset such as static assertions, inline -functions and alignment. - -C++ is not a primary target, but the library has been updated to be more -C++ friendly based on user feedback. - -Many compilers already have the required functionality but with slightly -different names and arguments. - -In addition, compatibility with the Linux `` system file is -provided, and "punaligned.h" is provided for unaligned memory reads -which in part depends on endian support. - -The library also provides fast integer printing and floating point -printing and parsing optionally using the grisu3 algorithm, but can fall -back to strtod and related. The `pgrisu3` folder is header only and -excludes test cases found in the main grisu3 project the files were -extracted from. Base64 conversion is also provided. - -Integer conversion is not just an optimization. It is more difficult -than it would appear to portably parse an integer of known size such as -`uint64_t` up to at most n bytes which is needed for safe parsing. At -the same time, the sometimes significant performance gains warrants -custom implementations that might as well be done once and for all. - -Files can be included individually, or portable.h may be included to get -all functionality. If the compiler is C11 compliant, portable.h will not -include anything, except: it will provide a patch for static assertions -which clang does not fully support in all versions even with C11 flagged. - -The grisu3 header files are the runtime files for the Grisu3 floating -point conversion to/from text C port. Test coverage is provided separately. -This library can be used indirectly via pparsefp.h and pprintfp.h. - -The `pstatic_assert.h` file is often needed on C11 systems because the -compiler and standard library may support `_Static_assert` without -`static_assert`. For compilers without `_Static_assert`, a unique -identifier is needed for each assertion. This is done non-standard with -the `__COUNTER__` macro, but has a fallback to `pstatic_assert_scope.h` -for systems witout the `__COUNTER__` macro. Because of this fallback, -`pstatic_assert.h` needs to be included in every file using -`static_assert` in order to increment a scope counter, otherwise there -is a risk of assert identifier conflicts when `static_assert` happen on -the same line in different files. - -The `paligned_alloc.h` file implements the non-standard `aligned_free` -to match the C11 standard `aligned_alloc` call. `aligned_free` is -normally equivalent to `free`, but not on systems where `aligned_free` -cannot be implemented using a system provived `free` call. Use of -`aligned_free` is thus optional on some systems, but using it increases -general portablity at the cost of pure C11 compatibility. - -IMPORTANT NOTE: this library has been used on various platforms and -updated with user feedback but it is impossibly to systematically test -all platforms so please test for specific uses cases and report -any issues upstream. diff --git a/nostrdb/flatcc/portable/grisu3_math.h b/nostrdb/flatcc/portable/grisu3_math.h deleted file mode 100644 index cff6e8c673..0000000000 --- a/nostrdb/flatcc/portable/grisu3_math.h +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Copyright (c) 2016 Mikkel F. Jørgensen, dvide.com - * Copyright author of MathGeoLib (https://github.com/juj) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. http://www.apache.org/licenses/LICENSE-2.0 - */ - -/* 2016-02-02: Updated by mikkelfj - * - * Extracted from MatGeoLib grisu3.c, Apache 2.0 license, and extended. - * - * This file is usually include via grisu3_print.h or grisu3_parse.h. - * - * The original MatGeoLib dtoa_grisu3 implementation is largely - * unchanged except for the uint64 to double cast. The remaining changes - * are file structure, name changes, and new additions for parsing: - * - * - Split into header files only: - * grisu3_math.h, grisu3_print.h, (added grisu3_parse.h) - * - * - names prefixed with grisu3_, grisu3_diy_fp_, GRISU3_. - * - added static to all functions. - * - disabled clang unused function warnings. - * - guarded to allow for alternative impl. - * - added extra numeric constants needed for parsing. - * - added dec_pow, cast_double_from_diy_fp. - * - changed some function names for consistency. - * - moved printing specific grisu3 functions to grisu3_print.h. - * - changed double to uint64 cast to avoid aliasing. - * - added new grisu3_parse.h for parsing doubles. - * - grisu3_print_double (dtoa_grisu3) format .1 as 0.1 needed for valid JSON output - * and grisu3_parse_double wouldn't consume it. - * - grsu3_print_double changed formatting to prefer 0.012 over 1.2e-2. - * - * These changes make it possible to include the files as headers only - * in other software libraries without risking name conflicts, and to - * extend the implementation with a port of Googles Double Conversion - * strtod functionality for parsing doubles. - * - * Extracted from: rev. 915501a / Dec 22, 2015 - * - * MathGeoLib License: http://www.apache.org/licenses/LICENSE-2.0.html - */ - -#ifndef GRISU3_MATH_H -#define GRISU3_MATH_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Guarded to allow inclusion of pstdint.h first, if stdint.h is not supported. */ -#ifndef UINT8_MAX -#include /* uint64_t etc. */ -#endif - -#ifdef GRISU3_NO_ASSERT -#undef GRISU3_ASSERT -#define GRISU3_ASSERT(x) ((void)0) -#endif - -#ifndef GRISU3_ASSERT -#include /* assert */ -#define GRISU3_ASSERT(x) assert(x) -#endif - -#ifdef _MSC_VER -#pragma warning(disable : 4204) /* nonstandard extension used : non-constant aggregate initializer */ -#endif - -#define GRISU3_D64_SIGN 0x8000000000000000ULL -#define GRISU3_D64_EXP_MASK 0x7FF0000000000000ULL -#define GRISU3_D64_FRACT_MASK 0x000FFFFFFFFFFFFFULL -#define GRISU3_D64_IMPLICIT_ONE 0x0010000000000000ULL -#define GRISU3_D64_EXP_POS 52 -#define GRISU3_D64_EXP_BIAS 1075 -#define GRISU3_D64_DENORM_EXP (-GRISU3_D64_EXP_BIAS + 1) -#define GRISU3_DIY_FP_FRACT_SIZE 64 -#define GRISU3_D_1_LOG2_10 0.30102999566398114 /* 1 / lg(10) */ -#define GRISU3_MIN_TARGET_EXP -60 -#define GRISU3_MASK32 0xFFFFFFFFULL -#define GRISU3_MIN_CACHED_EXP -348 -#define GRISU3_MAX_CACHED_EXP 340 -#define GRISU3_CACHED_EXP_STEP 8 -#define GRISU3_D64_MAX_DEC_EXP 309 -#define GRISU3_D64_MIN_DEC_EXP -324 -#define GRISU3_D64_INF GRISU3_D64_EXP_MASK - -#define GRISU3_MIN(x,y) ((x) <= (y) ? (x) : (y)) -#define GRISU3_MAX(x,y) ((x) >= (y) ? (x) : (y)) - - -typedef struct grisu3_diy_fp -{ - uint64_t f; - int e; -} grisu3_diy_fp_t; - -typedef struct grisu3_diy_fp_power -{ - uint64_t fract; - int16_t b_exp, d_exp; -} grisu3_diy_fp_power_t; - -typedef union { - uint64_t u64; - double d64; -} grisu3_cast_double_t; - -static uint64_t grisu3_cast_uint64_from_double(double d) -{ - grisu3_cast_double_t cd; - cd.d64 = d; - return cd.u64; -} - -static double grisu3_cast_double_from_uint64(uint64_t u) -{ - grisu3_cast_double_t cd; - cd.u64 = u; - return cd.d64; -} - -#define grisu3_double_infinity grisu3_cast_double_from_uint64(GRISU3_D64_INF) -#define grisu3_double_nan grisu3_cast_double_from_uint64(GRISU3_D64_INF + 1) - -static const grisu3_diy_fp_power_t grisu3_diy_fp_pow_cache[] = -{ - { 0xfa8fd5a0081c0288ULL, -1220, -348 }, - { 0xbaaee17fa23ebf76ULL, -1193, -340 }, - { 0x8b16fb203055ac76ULL, -1166, -332 }, - { 0xcf42894a5dce35eaULL, -1140, -324 }, - { 0x9a6bb0aa55653b2dULL, -1113, -316 }, - { 0xe61acf033d1a45dfULL, -1087, -308 }, - { 0xab70fe17c79ac6caULL, -1060, -300 }, - { 0xff77b1fcbebcdc4fULL, -1034, -292 }, - { 0xbe5691ef416bd60cULL, -1007, -284 }, - { 0x8dd01fad907ffc3cULL, -980, -276 }, - { 0xd3515c2831559a83ULL, -954, -268 }, - { 0x9d71ac8fada6c9b5ULL, -927, -260 }, - { 0xea9c227723ee8bcbULL, -901, -252 }, - { 0xaecc49914078536dULL, -874, -244 }, - { 0x823c12795db6ce57ULL, -847, -236 }, - { 0xc21094364dfb5637ULL, -821, -228 }, - { 0x9096ea6f3848984fULL, -794, -220 }, - { 0xd77485cb25823ac7ULL, -768, -212 }, - { 0xa086cfcd97bf97f4ULL, -741, -204 }, - { 0xef340a98172aace5ULL, -715, -196 }, - { 0xb23867fb2a35b28eULL, -688, -188 }, - { 0x84c8d4dfd2c63f3bULL, -661, -180 }, - { 0xc5dd44271ad3cdbaULL, -635, -172 }, - { 0x936b9fcebb25c996ULL, -608, -164 }, - { 0xdbac6c247d62a584ULL, -582, -156 }, - { 0xa3ab66580d5fdaf6ULL, -555, -148 }, - { 0xf3e2f893dec3f126ULL, -529, -140 }, - { 0xb5b5ada8aaff80b8ULL, -502, -132 }, - { 0x87625f056c7c4a8bULL, -475, -124 }, - { 0xc9bcff6034c13053ULL, -449, -116 }, - { 0x964e858c91ba2655ULL, -422, -108 }, - { 0xdff9772470297ebdULL, -396, -100 }, - { 0xa6dfbd9fb8e5b88fULL, -369, -92 }, - { 0xf8a95fcf88747d94ULL, -343, -84 }, - { 0xb94470938fa89bcfULL, -316, -76 }, - { 0x8a08f0f8bf0f156bULL, -289, -68 }, - { 0xcdb02555653131b6ULL, -263, -60 }, - { 0x993fe2c6d07b7facULL, -236, -52 }, - { 0xe45c10c42a2b3b06ULL, -210, -44 }, - { 0xaa242499697392d3ULL, -183, -36 }, - { 0xfd87b5f28300ca0eULL, -157, -28 }, - { 0xbce5086492111aebULL, -130, -20 }, - { 0x8cbccc096f5088ccULL, -103, -12 }, - { 0xd1b71758e219652cULL, -77, -4 }, - { 0x9c40000000000000ULL, -50, 4 }, - { 0xe8d4a51000000000ULL, -24, 12 }, - { 0xad78ebc5ac620000ULL, 3, 20 }, - { 0x813f3978f8940984ULL, 30, 28 }, - { 0xc097ce7bc90715b3ULL, 56, 36 }, - { 0x8f7e32ce7bea5c70ULL, 83, 44 }, - { 0xd5d238a4abe98068ULL, 109, 52 }, - { 0x9f4f2726179a2245ULL, 136, 60 }, - { 0xed63a231d4c4fb27ULL, 162, 68 }, - { 0xb0de65388cc8ada8ULL, 189, 76 }, - { 0x83c7088e1aab65dbULL, 216, 84 }, - { 0xc45d1df942711d9aULL, 242, 92 }, - { 0x924d692ca61be758ULL, 269, 100 }, - { 0xda01ee641a708deaULL, 295, 108 }, - { 0xa26da3999aef774aULL, 322, 116 }, - { 0xf209787bb47d6b85ULL, 348, 124 }, - { 0xb454e4a179dd1877ULL, 375, 132 }, - { 0x865b86925b9bc5c2ULL, 402, 140 }, - { 0xc83553c5c8965d3dULL, 428, 148 }, - { 0x952ab45cfa97a0b3ULL, 455, 156 }, - { 0xde469fbd99a05fe3ULL, 481, 164 }, - { 0xa59bc234db398c25ULL, 508, 172 }, - { 0xf6c69a72a3989f5cULL, 534, 180 }, - { 0xb7dcbf5354e9beceULL, 561, 188 }, - { 0x88fcf317f22241e2ULL, 588, 196 }, - { 0xcc20ce9bd35c78a5ULL, 614, 204 }, - { 0x98165af37b2153dfULL, 641, 212 }, - { 0xe2a0b5dc971f303aULL, 667, 220 }, - { 0xa8d9d1535ce3b396ULL, 694, 228 }, - { 0xfb9b7cd9a4a7443cULL, 720, 236 }, - { 0xbb764c4ca7a44410ULL, 747, 244 }, - { 0x8bab8eefb6409c1aULL, 774, 252 }, - { 0xd01fef10a657842cULL, 800, 260 }, - { 0x9b10a4e5e9913129ULL, 827, 268 }, - { 0xe7109bfba19c0c9dULL, 853, 276 }, - { 0xac2820d9623bf429ULL, 880, 284 }, - { 0x80444b5e7aa7cf85ULL, 907, 292 }, - { 0xbf21e44003acdd2dULL, 933, 300 }, - { 0x8e679c2f5e44ff8fULL, 960, 308 }, - { 0xd433179d9c8cb841ULL, 986, 316 }, - { 0x9e19db92b4e31ba9ULL, 1013, 324 }, - { 0xeb96bf6ebadf77d9ULL, 1039, 332 }, - { 0xaf87023b9bf0ee6bULL, 1066, 340 } -}; - -/* Avoid dependence on lib math to get (int)ceil(v) */ -static int grisu3_iceil(double v) -{ - int k = (int)v; - if (v < 0) return k; - return v - k == 0 ? k : k + 1; -} - -static int grisu3_diy_fp_cached_pow(int exp, grisu3_diy_fp_t *p) -{ - int k = grisu3_iceil((exp+GRISU3_DIY_FP_FRACT_SIZE-1) * GRISU3_D_1_LOG2_10); - int i = (k-GRISU3_MIN_CACHED_EXP-1) / GRISU3_CACHED_EXP_STEP + 1; - p->f = grisu3_diy_fp_pow_cache[i].fract; - p->e = grisu3_diy_fp_pow_cache[i].b_exp; - return grisu3_diy_fp_pow_cache[i].d_exp; -} - -static grisu3_diy_fp_t grisu3_diy_fp_minus(grisu3_diy_fp_t x, grisu3_diy_fp_t y) -{ - grisu3_diy_fp_t d; d.f = x.f - y.f; d.e = x.e; - GRISU3_ASSERT(x.e == y.e && x.f >= y.f); - return d; -} - -static grisu3_diy_fp_t grisu3_diy_fp_multiply(grisu3_diy_fp_t x, grisu3_diy_fp_t y) -{ - uint64_t a, b, c, d, ac, bc, ad, bd, tmp; - grisu3_diy_fp_t r; - a = x.f >> 32; b = x.f & GRISU3_MASK32; - c = y.f >> 32; d = y.f & GRISU3_MASK32; - ac = a*c; bc = b*c; - ad = a*d; bd = b*d; - tmp = (bd >> 32) + (ad & GRISU3_MASK32) + (bc & GRISU3_MASK32); - tmp += 1U << 31; /* round */ - r.f = ac + (ad >> 32) + (bc >> 32) + (tmp >> 32); - r.e = x.e + y.e + 64; - return r; -} - -static grisu3_diy_fp_t grisu3_diy_fp_normalize(grisu3_diy_fp_t n) -{ - GRISU3_ASSERT(n.f != 0); - while(!(n.f & 0xFFC0000000000000ULL)) { n.f <<= 10; n.e -= 10; } - while(!(n.f & GRISU3_D64_SIGN)) { n.f <<= 1; --n.e; } - return n; -} - -static grisu3_diy_fp_t grisu3_cast_diy_fp_from_double(double d) -{ - grisu3_diy_fp_t fp; - uint64_t u64 = grisu3_cast_uint64_from_double(d); - if (!(u64 & GRISU3_D64_EXP_MASK)) { fp.f = u64 & GRISU3_D64_FRACT_MASK; fp.e = 1 - GRISU3_D64_EXP_BIAS; } - else { fp.f = (u64 & GRISU3_D64_FRACT_MASK) + GRISU3_D64_IMPLICIT_ONE; fp.e = (int)((u64 & GRISU3_D64_EXP_MASK) >> GRISU3_D64_EXP_POS) - GRISU3_D64_EXP_BIAS; } - return fp; -} - -static double grisu3_cast_double_from_diy_fp(grisu3_diy_fp_t n) -{ - const uint64_t hidden_bit = GRISU3_D64_IMPLICIT_ONE; - const uint64_t frac_mask = GRISU3_D64_FRACT_MASK; - const int denorm_exp = GRISU3_D64_DENORM_EXP; - const int exp_bias = GRISU3_D64_EXP_BIAS; - const int exp_pos = GRISU3_D64_EXP_POS; - - grisu3_diy_fp_t v = n; - uint64_t e_biased; - - while (v.f > hidden_bit + frac_mask) { - v.f >>= 1; - ++v.e; - } - if (v.e < denorm_exp) { - return 0.0; - } - while (v.e > denorm_exp && (v.f & hidden_bit) == 0) { - v.f <<= 1; - --v.e; - } - if (v.e == denorm_exp && (v.f & hidden_bit) == 0) { - e_biased = 0; - } else { - e_biased = (uint64_t)(v.e + exp_bias); - } - return grisu3_cast_double_from_uint64((v.f & frac_mask) | (e_biased << exp_pos)); -} - -/* pow10_cache[i] = 10^(i-1) */ -static const unsigned int grisu3_pow10_cache[] = { 0, 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; - -static int grisu3_largest_pow10(uint32_t n, int n_bits, uint32_t *power) -{ - int guess = ((n_bits + 1) * 1233 >> 12) + 1/*skip first entry*/; - if (n < grisu3_pow10_cache[guess]) --guess; /* We don't have any guarantees that 2^n_bits <= n. */ - *power = grisu3_pow10_cache[guess]; - return guess; -} - -#ifdef __cplusplus -} -#endif - -#endif /* GRISU3_MATH_H */ diff --git a/nostrdb/flatcc/portable/grisu3_parse.h b/nostrdb/flatcc/portable/grisu3_parse.h deleted file mode 100644 index 3d67c9ac11..0000000000 --- a/nostrdb/flatcc/portable/grisu3_parse.h +++ /dev/null @@ -1,582 +0,0 @@ -/* - * Copyright (c) 2016 Mikkel F. Jørgensen, dvide.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. http://www.apache.org/licenses/LICENSE-2.0 - */ - -/* - * Port of parts of Google Double Conversion strtod functionality - * but with fallback to strtod instead of a bignum implementation. - * - * Based on grisu3 math from MathGeoLib. - * - * See also grisu3_math.h comments. - */ - -#ifndef GRISU3_PARSE_H -#define GRISU3_PARSE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef UINT8_MAX -#include -#endif - -#include -#include - -#include "grisu3_math.h" - - -/* - * The maximum number characters a valid number may contain. The parse - * fails if the input length is longer but the character after max len - * was part of the number. - * - * The length should not be set too high because it protects against - * overflow in the exponent part derived from the input length. - */ -#define GRISU3_NUM_MAX_LEN 1000 - -/* - * The lightweight "portable" C library recognizes grisu3 support if - * included first. - */ -#define grisu3_parse_double_is_defined 1 - -/* - * Disable to compare performance and to test diy_fp algorithm in - * broader range. - */ -#define GRISU3_PARSE_FAST_CASE - -/* May result in a one off error, otherwise when uncertain, fall back to strtod. */ -//#define GRISU3_PARSE_ALLOW_ERROR - - -/* - * The dec output exponent jumps in 8, so the result is offset at most - * by 7 when the input is within range. - */ -static int grisu3_diy_fp_cached_dec_pow(int d_exp, grisu3_diy_fp_t *p) -{ - const int cached_offset = -GRISU3_MIN_CACHED_EXP; - const int d_exp_dist = GRISU3_CACHED_EXP_STEP; - int i, a_exp; - - GRISU3_ASSERT(GRISU3_MIN_CACHED_EXP <= d_exp); - GRISU3_ASSERT(d_exp < GRISU3_MAX_CACHED_EXP + d_exp_dist); - - i = (d_exp + cached_offset) / d_exp_dist; - a_exp = grisu3_diy_fp_pow_cache[i].d_exp; - p->f = grisu3_diy_fp_pow_cache[i].fract; - p->e = grisu3_diy_fp_pow_cache[i].b_exp; - - GRISU3_ASSERT(a_exp <= d_exp); - GRISU3_ASSERT(d_exp < a_exp + d_exp_dist); - - return a_exp; -} - -/* - * Ported from google double conversion strtod using - * MathGeoLibs diy_fp functions for grisu3 in C. - * - * ulp_half_error is set if needed to trunacted non-zero trialing - * characters. - * - * The actual value we need to encode is: - * - * (sign ? -1 : 1) * fraction * 2 ^ (exponent - fraction_exp) - * where exponent is the base 10 exponent assuming the decimal point is - * after the first digit. fraction_exp is the base 10 magnitude of the - * fraction or number of significant digits - 1. - * - * If the exponent is between 0 and 22 and the fraction is encoded in - * the lower 53 bits (the largest bit is implicit in a double, but not - * in this fraction), then the value can be trivially converted to - * double without loss of precision. If the fraction was in fact - * multiplied by trailing zeroes that we didn't convert to exponent, - * we there are larger values the 53 bits that can also be encoded - * trivially - but then it is better to handle this during parsing - * if it is worthwhile. We do not optimize for this here, because it - * can be done in a simple check before calling, and because it might - * not be worthwile to do at all since it cery likely will fail for - * numbers printed to be convertible back to double without loss. - * - * Returns 0 if conversion was not exact. In that case the vale is - * either one smaller than the correct one, or the correct one. - * - * Exponents must be range protected before calling otherwise cached - * powers will blow up. - * - * Google Double Conversion seems to prefer the following notion: - * - * x >= 10^309 => +Inf - * x <= 10^-324 => 0, - * - * max double: HUGE_VAL = 1.7976931348623157 * 10^308 - * min double: 4.9406564584124654 * 10^-324 - * - * Values just below or above min/max representable number - * may round towards large/small non-Inf/non-neg values. - * - * but `strtod` seems to return +/-HUGE_VAL on overflow? - */ -static int grisu3_diy_fp_encode_double(uint64_t fraction, int exponent, int fraction_exp, int ulp_half_error, double *result) -{ - /* - * Error is measures in fractions of integers, so we scale up to get - * some resolution to represent error expressions. - */ - const int log2_error_one = 3; - const int error_one = 1 << log2_error_one; - const int denorm_exp = GRISU3_D64_DENORM_EXP; - const uint64_t hidden_bit = GRISU3_D64_IMPLICIT_ONE; - const int diy_size = GRISU3_DIY_FP_FRACT_SIZE; - const int max_digits = 19; - - int error = ulp_half_error ? error_one / 2 : 0; - int d_exp = (exponent - fraction_exp); - int a_exp; - int o_exp; - grisu3_diy_fp_t v = { fraction, 0 }; - grisu3_diy_fp_t cp; - grisu3_diy_fp_t rounded; - int mag; - int prec; - int prec_bits; - int half_way; - - /* When fractions in a double aren't stored with implicit msb fraction bit. */ - - /* Shift fraction to msb. */ - v = grisu3_diy_fp_normalize(v); - /* The half point error moves up while the exponent moves down. */ - error <<= -v.e; - - a_exp = grisu3_diy_fp_cached_dec_pow(d_exp, &cp); - - /* Interpolate between cached powers at distance 8. */ - if (a_exp != d_exp) { - int adj_exp = d_exp - a_exp - 1; - static grisu3_diy_fp_t cp_10_lut[] = { - { 0xa000000000000000ULL, -60 }, - { 0xc800000000000000ULL, -57 }, - { 0xfa00000000000000ULL, -54 }, - { 0x9c40000000000000ULL, -50 }, - { 0xc350000000000000ULL, -47 }, - { 0xf424000000000000ULL, -44 }, - { 0x9896800000000000ULL, -40 }, - }; - GRISU3_ASSERT(adj_exp >= 0 && adj_exp < 7); - v = grisu3_diy_fp_multiply(v, cp_10_lut[adj_exp]); - - /* 20 decimal digits won't always fit in 64 bit. - * (`fraction_exp` is one less than significant decimal - * digits in fraction, e.g. 1 * 10e0). - * If we cannot fit, introduce 1/2 ulp error - * (says double conversion reference impl.) */ - if (1 + fraction_exp + adj_exp > max_digits) { - error += error_one / 2; - } - } - - v = grisu3_diy_fp_multiply(v, cp); - /* - * Google double conversion claims that: - * - * The error introduced by a multiplication of a*b equals - * error_a + error_b + error_a*error_b/2^64 + 0.5 - * Substituting a with 'input' and b with 'cached_power' we have - * error_b = 0.5 (all cached powers have an error of less than 0.5 ulp), - * error_ab = 0 or 1 / error_oner > error_a*error_b/ 2^64 - * - * which in our encoding becomes: - * error_a = error_one/2 - * error_ab = 1 / error_one (rounds up to 1 if error != 0, or 0 * otherwise) - * fixed_error = error_one/2 - * - * error += error_a + fixed_error + (error ? 1 : 0) - * - * (this isn't entirely clear, but that is as close as we get). - */ - error += error_one + (error ? 1 : 0); - - o_exp = v.e; - v = grisu3_diy_fp_normalize(v); - /* Again, if we shift the significant bits, the error moves along. */ - error <<= o_exp - v.e; - - /* - * The value `v` is bounded by 2^mag which is 64 + v.e. because we - * just normalized it by shifting towards msb. - */ - mag = diy_size + v.e; - - /* The effective magnitude of the IEEE double representation. */ - mag = mag >= diy_size + denorm_exp ? diy_size : mag <= denorm_exp ? 0 : mag - denorm_exp; - prec = diy_size - mag; - if (prec + log2_error_one >= diy_size) { - int e_scale = prec + log2_error_one - diy_size - 1; - v.f >>= e_scale; - v.e += e_scale; - error = (error >> e_scale) + 1 + error_one; - prec -= e_scale; - } - rounded.f = v.f >> prec; - rounded.e = v.e + prec; - prec_bits = (int)(v.f & ((uint64_t)1 << (prec - 1))) * error_one; - half_way = (int)((uint64_t)1 << (prec - 1)) * error_one; - if (prec >= half_way + error) { - rounded.f++; - /* Prevent overflow. */ - if (rounded.f & (hidden_bit << 1)) { - rounded.f >>= 1; - rounded.e += 1; - } - } - *result = grisu3_cast_double_from_diy_fp(rounded); - return half_way - error >= prec_bits || prec_bits >= half_way + error; -} - -/* - * `end` is unchanged if number is handled natively, or it is the result - * of strtod parsing in case of fallback. - */ -static const char *grisu3_encode_double(const char *buf, const char *end, int sign, uint64_t fraction, int exponent, int fraction_exp, int ulp_half_error, double *result) -{ - const int max_d_exp = GRISU3_D64_MAX_DEC_EXP; - const int min_d_exp = GRISU3_D64_MIN_DEC_EXP; - - char *v_end; - - /* Both for user experience, and to protect internal power table lookups. */ - if (fraction == 0 || exponent < min_d_exp) { - *result = 0.0; - goto done; - } - if (exponent - 1 > max_d_exp) { - *result = grisu3_double_infinity; - goto done; - } - - /* - * `exponent` is the normalized value, fraction_exp is the size of - * the representation in the `fraction value`, or one less than - * number of significant digits. - * - * If the final value can be kept in 53 bits and we can avoid - * division, then we can convert to double quite fast. - * - * ulf_half_error only happens when fraction is maxed out, so - * fraction_exp > 22 by definition. - * - * fraction_exp >= 0 always. - * - * http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion/ - */ - - -#ifdef GRISU3_PARSE_FAST_CASE - if (fraction < (1ULL << 53) && exponent >= 0 && exponent <= 22) { - double v = (double)fraction; - /* Multiplying by 1e-k instead of dividing by 1ek results in rounding error. */ - switch (exponent - fraction_exp) { - case -22: v /= 1e22; break; - case -21: v /= 1e21; break; - case -20: v /= 1e20; break; - case -19: v /= 1e19; break; - case -18: v /= 1e18; break; - case -17: v /= 1e17; break; - case -16: v /= 1e16; break; - case -15: v /= 1e15; break; - case -14: v /= 1e14; break; - case -13: v /= 1e13; break; - case -12: v /= 1e12; break; - case -11: v /= 1e11; break; - case -10: v /= 1e10; break; - case -9: v /= 1e9; break; - case -8: v /= 1e8; break; - case -7: v /= 1e7; break; - case -6: v /= 1e6; break; - case -5: v /= 1e5; break; - case -4: v /= 1e4; break; - case -3: v /= 1e3; break; - case -2: v /= 1e2; break; - case -1: v /= 1e1; break; - case 0: break; - case 1: v *= 1e1; break; - case 2: v *= 1e2; break; - case 3: v *= 1e3; break; - case 4: v *= 1e4; break; - case 5: v *= 1e5; break; - case 6: v *= 1e6; break; - case 7: v *= 1e7; break; - case 8: v *= 1e8; break; - case 9: v *= 1e9; break; - case 10: v *= 1e10; break; - case 11: v *= 1e11; break; - case 12: v *= 1e12; break; - case 13: v *= 1e13; break; - case 14: v *= 1e14; break; - case 15: v *= 1e15; break; - case 16: v *= 1e16; break; - case 17: v *= 1e17; break; - case 18: v *= 1e18; break; - case 19: v *= 1e19; break; - case 20: v *= 1e20; break; - case 21: v *= 1e21; break; - case 22: v *= 1e22; break; - } - *result = v; - goto done; - } -#endif - - if (grisu3_diy_fp_encode_double(fraction, exponent, fraction_exp, ulp_half_error, result)) { - goto done; - } -#ifdef GRISU3_PARSE_ALLOW_ERROR - goto done; -#endif - *result = strtod(buf, &v_end); - if (v_end < end) { - return v_end; - } - return end; -done: - if (sign) { - *result = -*result; - } - return end; -} - -/* - * Returns buf if number wasn't matched, or null if number starts ok - * but contains invalid content. - */ -static const char *grisu3_parse_hex_fp(const char *buf, const char *end, int sign, double *result) -{ - (void)buf; - (void)end; - (void)sign; - *result = 0.0; - /* Not currently supported. */ - return buf; -} - -/* - * Returns end pointer on success, or null, or buf if start is not a number. - * Sets result to 0.0 on error. - * Reads up to len + 1 bytes from buffer where len + 1 must not be a - * valid part of a number, but all of buf, buf + len need not be a - * number. Leading whitespace is NOT valid. - * Very small numbers are truncated to +/-0.0 and numerically very large - * numbers are returns as +/-infinity. - * - * A value must not end or begin with '.' (like JSON), but can have - * leading zeroes (unlike JSON). A single leading zero followed by - * an encoding symbol may or may not be interpreted as a non-decimal - * encoding prefix, e.g. 0x, but a leading zero followed by a digit is - * NOT interpreted as octal. - * A single leading negative sign may appear before digits, but positive - * sign is not allowed and space after the sign is not allowed. - * At most the first 1000 characters of the input is considered. - */ -static const char *grisu3_parse_double(const char *buf, size_t len, double *result) -{ - const char *mark, *k, *end; - int sign = 0, esign = 0; - uint64_t fraction = 0; - int exponent = 0; - int ee = 0; - int fraction_exp = 0; - int ulp_half_error = 0; - - *result = 0.0; - - end = buf + len + 1; - - /* Failsafe for exponent overflow. */ - if (len > GRISU3_NUM_MAX_LEN) { - end = buf + GRISU3_NUM_MAX_LEN + 1; - } - - if (buf == end) { - return buf; - } - mark = buf; - if (*buf == '-') { - ++buf; - sign = 1; - if (buf == end) { - return 0; - } - } - if (*buf == '0') { - ++buf; - /* | 0x20 is lower case ASCII. */ - if (buf != end && (*buf | 0x20) == 'x') { - k = grisu3_parse_hex_fp(buf, end, sign, result); - if (k == buf) { - return mark; - } - return k; - } - /* Not worthwhile, except for getting the scale of integer part. */ - while (buf != end && *buf == '0') { - ++buf; - } - } else { - if (*buf < '1' || *buf > '9') { - /* - * If we didn't see a sign, just don't recognize it as - * number, otherwise make it an error. - */ - return sign ? 0 : mark; - } - fraction = (uint64_t)(*buf++ - '0'); - } - k = buf; - /* - * We do not catch trailing zeroes when there is no decimal point. - * This misses an opportunity for moving the exponent down into the - * fast case. But it is unlikely to be worthwhile as it complicates - * parsing. - */ - while (buf != end && *buf >= '0' && *buf <= '9') { - if (fraction >= UINT64_MAX / 10) { - fraction += *buf >= '5'; - ulp_half_error = 1; - break; - } - fraction = fraction * 10 + (uint64_t)(*buf++ - '0'); - } - fraction_exp = (int)(buf - k); - /* Skip surplus digits. Trailing zero does not introduce error. */ - while (buf != end && *buf == '0') { - ++exponent; - ++buf; - } - if (buf != end && *buf >= '1' && *buf <= '9') { - ulp_half_error = 1; - ++exponent; - ++buf; - while (buf != end && *buf >= '0' && *buf <= '9') { - ++exponent; - ++buf; - } - } - if (buf != end && *buf == '.') { - ++buf; - k = buf; - if (*buf < '0' || *buf > '9') { - /* We don't accept numbers without leading or trailing digit. */ - return 0; - } - while (buf != end && *buf >= '0' && *buf <= '9') { - if (fraction >= UINT64_MAX / 10) { - if (!ulp_half_error) { - fraction += *buf >= '5'; - ulp_half_error = 1; - } - break; - } - fraction = fraction * 10 + (uint64_t)(*buf++ - '0'); - --exponent; - } - fraction_exp += (int)(buf - k); - while (buf != end && *buf == '0') { - ++exponent; - ++buf; - } - if (buf != end && *buf >= '1' && *buf <= '9') { - ulp_half_error = 1; - ++buf; - while (buf != end && *buf >= '0' && *buf <= '9') { - ++buf; - } - } - } - /* - * Normalized exponent e.g: 1.23434e3 with fraction = 123434, - * fraction_exp = 5, exponent = 3. - * So value = fraction * 10^(exponent - fraction_exp) - */ - exponent += fraction_exp; - if (buf != end && (*buf | 0x20) == 'e') { - if (end - buf < 2) { - return 0; - } - ++buf; - if (*buf == '+') { - ++buf; - if (buf == end) { - return 0; - } - } else if (*buf == '-') { - esign = 1; - ++buf; - if (buf == end) { - return 0; - } - } - if (*buf < '0' || *buf > '9') { - return 0; - } - ee = *buf++ - '0'; - while (buf != end && *buf >= '0' && *buf <= '9') { - /* - * This test impacts performance and we do not need an - * exact value just one large enough to dominate the fraction_exp. - * Subsequent handling maps large absolute ee to 0 or infinity. - */ - if (ee <= 0x7fff) { - ee = ee * 10 + *buf - '0'; - } - ++buf; - } - } - exponent = exponent + (esign ? -ee : ee); - - /* - * Exponent is now a base 10 normalized exponent so the absolute value - * is less the 10^(exponent + 1) for positive exponents. For - * denormalized doubles (using 11 bit exponent 0 with a fraction - * shiftet down, extra small numbers can be achieved. - * - * https://en.wikipedia.org/wiki/Double-precision_floating-point_format - * - * 10^-324 holds the smallest normalized exponent (but not value) and - * 10^308 holds the largest exponent. Internally our lookup table is - * only safe to use within a range slightly larger than this. - * Externally, a slightly larger/smaller value represents NaNs which - * are technically also possible to store as a number. - * - */ - - /* This also protects strod fallback parsing. */ - if (buf == end) { - return 0; - } - return grisu3_encode_double(mark, buf, sign, fraction, exponent, fraction_exp, ulp_half_error, result); -} - -#ifdef __cplusplus -} -#endif - -#endif /* GRISU3_PARSE_H */ diff --git a/nostrdb/flatcc/portable/grisu3_print.h b/nostrdb/flatcc/portable/grisu3_print.h deleted file mode 100644 index d748408386..0000000000 --- a/nostrdb/flatcc/portable/grisu3_print.h +++ /dev/null @@ -1,265 +0,0 @@ -/* - * Copyright (c) 2016 Mikkel F. Jørgensen, dvide.com - * Copyright author of MathGeoLib (https://github.com/juj) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. http://www.apache.org/licenses/LICENSE-2.0 - */ - -/* - * Extracted from MathGeoLib. - * - * mikkelfj: - * - Fixed final output when printing single digit negative exponent to - * have leading zero (important for JSON). - * - Changed formatting to prefer 0.012 over 1.2-e-2. - * - * Large portions of the original grisu3.c file has been moved to - * grisu3_math.h, the rest is placed here. - * - * See also comments in grisu3_math.h. - * - * MatGeoLib grisu3.c comment: - * - * This file is part of an implementation of the "grisu3" double to string - * conversion algorithm described in the research paper - * - * "Printing Floating-Point Numbers Quickly And Accurately with Integers" - * by Florian Loitsch, available at - * http://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf - */ - -#ifndef GRISU3_PRINT_H -#define GRISU3_PRINT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include /* sprintf, only needed for fallback printing */ -#include /* assert */ - -#include "grisu3_math.h" - -/* - * The lightweight "portable" C library recognizes grisu3 support if - * included first. - */ -#define grisu3_print_double_is_defined 1 - -/* - * Not sure we have an exact definition, but we get up to 23 - * emperically. There is some math ensuring it does not go awol though, - * like 18 digits + exponent or so. - * This max should be safe size buffer for printing, including zero term. - */ -#define GRISU3_PRINT_MAX 30 - -static int grisu3_round_weed(char *buffer, int len, uint64_t wp_W, uint64_t delta, uint64_t rest, uint64_t ten_kappa, uint64_t ulp) -{ - uint64_t wp_Wup = wp_W - ulp; - uint64_t wp_Wdown = wp_W + ulp; - while(rest < wp_Wup && delta - rest >= ten_kappa - && (rest + ten_kappa < wp_Wup || wp_Wup - rest >= rest + ten_kappa - wp_Wup)) - { - --buffer[len-1]; - rest += ten_kappa; - } - if (rest < wp_Wdown && delta - rest >= ten_kappa - && (rest + ten_kappa < wp_Wdown || wp_Wdown - rest > rest + ten_kappa - wp_Wdown)) - return 0; - - return 2*ulp <= rest && rest <= delta - 4*ulp; -} - -static int grisu3_digit_gen(grisu3_diy_fp_t low, grisu3_diy_fp_t w, grisu3_diy_fp_t high, char *buffer, int *length, int *kappa) -{ - uint64_t unit = 1; - grisu3_diy_fp_t too_low = { low.f - unit, low.e }; - grisu3_diy_fp_t too_high = { high.f + unit, high.e }; - grisu3_diy_fp_t unsafe_interval = grisu3_diy_fp_minus(too_high, too_low); - grisu3_diy_fp_t one = { 1ULL << -w.e, w.e }; - uint32_t p1 = (uint32_t)(too_high.f >> -one.e); - uint64_t p2 = too_high.f & (one.f - 1); - uint32_t div; - *kappa = grisu3_largest_pow10(p1, GRISU3_DIY_FP_FRACT_SIZE + one.e, &div); - *length = 0; - - while(*kappa > 0) - { - uint64_t rest; - char digit = (char)(p1 / div); - buffer[*length] = '0' + digit; - ++*length; - p1 %= div; - --*kappa; - rest = ((uint64_t)p1 << -one.e) + p2; - if (rest < unsafe_interval.f) return grisu3_round_weed(buffer, *length, grisu3_diy_fp_minus(too_high, w).f, unsafe_interval.f, rest, (uint64_t)div << -one.e, unit); - div /= 10; - } - - for(;;) - { - char digit; - p2 *= 10; - unit *= 10; - unsafe_interval.f *= 10; - /* Integer division by one. */ - digit = (char)(p2 >> -one.e); - buffer[*length] = '0' + digit; - ++*length; - p2 &= one.f - 1; /* Modulo by one. */ - --*kappa; - if (p2 < unsafe_interval.f) return grisu3_round_weed(buffer, *length, grisu3_diy_fp_minus(too_high, w).f * unit, unsafe_interval.f, p2, one.f, unit); - } -} - -static int grisu3(double v, char *buffer, int *length, int *d_exp) -{ - int mk, kappa, success; - grisu3_diy_fp_t dfp = grisu3_cast_diy_fp_from_double(v); - grisu3_diy_fp_t w = grisu3_diy_fp_normalize(dfp); - - /* normalize boundaries */ - grisu3_diy_fp_t t = { (dfp.f << 1) + 1, dfp.e - 1 }; - grisu3_diy_fp_t b_plus = grisu3_diy_fp_normalize(t); - grisu3_diy_fp_t b_minus; - grisu3_diy_fp_t c_mk; /* Cached power of ten: 10^-k */ - uint64_t u64 = grisu3_cast_uint64_from_double(v); - assert(v > 0 && v <= 1.7976931348623157e308); /* Grisu only handles strictly positive finite numbers. */ - if (!(u64 & GRISU3_D64_FRACT_MASK) && (u64 & GRISU3_D64_EXP_MASK) != 0) { b_minus.f = (dfp.f << 2) - 1; b_minus.e = dfp.e - 2;} /* lower boundary is closer? */ - else { b_minus.f = (dfp.f << 1) - 1; b_minus.e = dfp.e - 1; } - b_minus.f = b_minus.f << (b_minus.e - b_plus.e); - b_minus.e = b_plus.e; - - mk = grisu3_diy_fp_cached_pow(GRISU3_MIN_TARGET_EXP - GRISU3_DIY_FP_FRACT_SIZE - w.e, &c_mk); - - w = grisu3_diy_fp_multiply(w, c_mk); - b_minus = grisu3_diy_fp_multiply(b_minus, c_mk); - b_plus = grisu3_diy_fp_multiply(b_plus, c_mk); - - success = grisu3_digit_gen(b_minus, w, b_plus, buffer, length, &kappa); - *d_exp = kappa - mk; - return success; -} - -static int grisu3_i_to_str(int val, char *str) -{ - int len, i; - char *s; - char *begin = str; - if (val < 0) { *str++ = '-'; val = -val; } - s = str; - - for(;;) - { - int ni = val / 10; - int digit = val - ni*10; - *s++ = (char)('0' + digit); - if (ni == 0) - break; - val = ni; - } - *s = '\0'; - len = (int)(s - str); - for(i = 0; i < len/2; ++i) - { - char ch = str[i]; - str[i] = str[len-1-i]; - str[len-1-i] = ch; - } - - return (int)(s - begin); -} - -static int grisu3_print_nan(uint64_t v, char *dst) -{ - static char hexdigits[16] = "0123456789ABCDEF"; - int i = 0; - - dst[0] = 'N'; - dst[1] = 'a'; - dst[2] = 'N'; - dst[3] = '('; - dst[20] = ')'; - dst[21] = '\0'; - dst += 4; - for (i = 15; i >= 0; --i) { - dst[i] = hexdigits[v & 0x0F]; - v >>= 4; - } - return 21; -} - -static int grisu3_print_double(double v, char *dst) -{ - int d_exp, len, success, decimals, i; - uint64_t u64 = grisu3_cast_uint64_from_double(v); - char *s2 = dst; - assert(dst); - - /* Prehandle NaNs */ - if ((u64 << 1) > 0xFFE0000000000000ULL) return grisu3_print_nan(u64, dst); - /* Prehandle negative values. */ - if ((u64 & GRISU3_D64_SIGN) != 0) { *s2++ = '-'; v = -v; u64 ^= GRISU3_D64_SIGN; } - /* Prehandle zero. */ - if (!u64) { *s2++ = '0'; *s2 = '\0'; return (int)(s2 - dst); } - /* Prehandle infinity. */ - if (u64 == GRISU3_D64_EXP_MASK) { *s2++ = 'i'; *s2++ = 'n'; *s2++ = 'f'; *s2 = '\0'; return (int)(s2 - dst); } - - success = grisu3(v, s2, &len, &d_exp); - /* If grisu3 was not able to convert the number to a string, then use old sprintf (suboptimal). */ - if (!success) return sprintf(s2, "%.17g", v) + (int)(s2 - dst); - - /* We now have an integer string of form "151324135" and a base-10 exponent for that number. */ - /* Next, decide the best presentation for that string by whether to use a decimal point, or the scientific exponent notation 'e'. */ - /* We don't pick the absolute shortest representation, but pick a balance between readability and shortness, e.g. */ - /* 1.545056189557677e-308 could be represented in a shorter form */ - /* 1545056189557677e-323 but that would be somewhat unreadable. */ - decimals = GRISU3_MIN(-d_exp, GRISU3_MAX(1, len-1)); - - /* mikkelfj: - * fix zero prefix .1 => 0.1, important for JSON export. - * prefer unscientific notation at same length: - * -1.2345e-4 over -1.00012345, - * -1.0012345 over -1.2345e-3 - */ - if (d_exp < 0 && (len + d_exp) > -3 && len <= -d_exp) - { - /* mikkelfj: fix zero prefix .1 => 0.1, and short exponents 1.3e-2 => 0.013. */ - memmove(s2 + 2 - d_exp - len, s2, (size_t)len); - s2[0] = '0'; - s2[1] = '.'; - for (i = 2; i < 2-d_exp-len; ++i) s2[i] = '0'; - len += i; - } - else if (d_exp < 0 && len > 1) /* Add decimal point? */ - { - for(i = 0; i < decimals; ++i) s2[len-i] = s2[len-i-1]; - s2[len++ - decimals] = '.'; - d_exp += decimals; - /* Need scientific notation as well? */ - if (d_exp != 0) { s2[len++] = 'e'; len += grisu3_i_to_str(d_exp, s2+len); } - } - /* Add scientific notation? */ - else if (d_exp < 0 || d_exp > 2) { s2[len++] = 'e'; len += grisu3_i_to_str(d_exp, s2+len); } - /* Add zeroes instead of scientific notation? */ - else if (d_exp > 0) { while(d_exp-- > 0) s2[len++] = '0'; } - s2[len] = '\0'; /* grisu3 doesn't null terminate, so ensure termination. */ - return (int)(s2+len-dst); -} - -#ifdef __cplusplus -} -#endif - -#endif /* GRISU3_PRINT_H */ diff --git a/nostrdb/flatcc/portable/include/README b/nostrdb/flatcc/portable/include/README deleted file mode 100644 index 9f991fc6e2..0000000000 --- a/nostrdb/flatcc/portable/include/README +++ /dev/null @@ -1,4 +0,0 @@ -This directory holds subdirectories it can be added to the include path -such that standard and OS specific header includes like , - and can succeed without explicitly including -special headers explicitly. diff --git a/nostrdb/flatcc/portable/include/linux/endian.h b/nostrdb/flatcc/portable/include/linux/endian.h deleted file mode 100644 index 38fd1fb0e2..0000000000 --- a/nostrdb/flatcc/portable/include/linux/endian.h +++ /dev/null @@ -1 +0,0 @@ -#include "portable/pendian.h" diff --git a/nostrdb/flatcc/portable/include/std/inttypes.h b/nostrdb/flatcc/portable/include/std/inttypes.h deleted file mode 100644 index 99b699d5c4..0000000000 --- a/nostrdb/flatcc/portable/include/std/inttypes.h +++ /dev/null @@ -1 +0,0 @@ -#include "portable/inttypes.h" diff --git a/nostrdb/flatcc/portable/include/std/stdalign.h b/nostrdb/flatcc/portable/include/std/stdalign.h deleted file mode 100644 index 6d51281996..0000000000 --- a/nostrdb/flatcc/portable/include/std/stdalign.h +++ /dev/null @@ -1 +0,0 @@ -#include "portable/pstdalign.h" diff --git a/nostrdb/flatcc/portable/include/std/stdbool.h b/nostrdb/flatcc/portable/include/std/stdbool.h deleted file mode 100644 index 12eb4c7bf1..0000000000 --- a/nostrdb/flatcc/portable/include/std/stdbool.h +++ /dev/null @@ -1 +0,0 @@ -#include "portable/pstdbool.h" diff --git a/nostrdb/flatcc/portable/include/std/stdint.h b/nostrdb/flatcc/portable/include/std/stdint.h deleted file mode 100644 index 036447109b..0000000000 --- a/nostrdb/flatcc/portable/include/std/stdint.h +++ /dev/null @@ -1 +0,0 @@ -#include "portable/pstdint.h" diff --git a/nostrdb/flatcc/portable/paligned_alloc.h b/nostrdb/flatcc/portable/paligned_alloc.h deleted file mode 100644 index 70b00b9eab..0000000000 --- a/nostrdb/flatcc/portable/paligned_alloc.h +++ /dev/null @@ -1,212 +0,0 @@ -#ifndef PALIGNED_ALLOC_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * NOTE: MSVC in general has no aligned alloc function that is - * compatible with free and it is not trivial to implement a version - * which is. Therefore, to remain portable, end user code needs to - * use `aligned_free` which is not part of C11 but defined in this header. - * - * glibc only provides aligned_alloc when _ISOC11_SOURCE is defined, but - * MingW does not support aligned_alloc despite of this, it uses the - * the _aligned_malloc as MSVC. - * - * The same issue is present on some Unix systems not providing - * posix_memalign. - * - * Note that clang and gcc with -std=c11 or -std=c99 will not define - * _POSIX_C_SOURCE and thus posix_memalign cannot be detected but - * aligned_alloc is not necessarily available either. We assume - * that clang always has posix_memalign although it is not strictly - * correct. For gcc, use -std=gnu99 or -std=gnu11 or don't use -std in - * order to enable posix_memalign, or live with the fallback until using - * a system where glibc has a version that supports aligned_alloc. - * - * For C11 compliant compilers and compilers with posix_memalign, - * it is valid to use free instead of aligned_free with the above - * caveats. - */ - -#include - -/* - * Define this to see which version is used so the fallback is not - * enganged unnecessarily: - * - * #define PORTABLE_DEBUG_ALIGNED_ALLOC - */ - -#if 0 -#define PORTABLE_DEBUG_ALIGNED_ALLOC -#endif - -#if !defined(PORTABLE_C11_ALIGNED_ALLOC) - -/* - * PORTABLE_C11_ALIGNED_ALLOC = 1 - * indicates that the system has builtin aligned_alloc - * If it doesn't, the section after detection provides an implemention. - */ -#if defined (__MINGW32__) -/* MingW does not provide aligned_alloc despite defining _ISOC11_SOURCE */ -#define PORTABLE_C11_ALIGNED_ALLOC 0 -#elif defined (_ISOC11_SOURCE) -/* glibc aligned_alloc detection, but MingW is not truthful */ -#define PORTABLE_C11_ALIGNED_ALLOC 1 -#elif defined (__GLIBC__) -/* aligned_alloc is not available in glibc just because __STDC_VERSION__ >= 201112L. */ -#define PORTABLE_C11_ALIGNED_ALLOC 0 -#elif defined (__clang__) -#define PORTABLE_C11_ALIGNED_ALLOC 0 -#elif defined (__APPLE__) -#define PORTABLE_C11_ALIGNED_ALLOC 0 -#elif defined(__IBMC__) -#define PORTABLE_C11_ALIGNED_ALLOC 0 -#elif (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) -#define PORTABLE_C11_ALIGNED_ALLOC 1 -#else -#define PORTABLE_C11_ALIGNED_ALLOC 0 -#endif - -#endif /* PORTABLE_C11_ALIGNED_ALLOC */ - -/* https://linux.die.net/man/3/posix_memalign */ -#if !defined(PORTABLE_POSIX_MEMALIGN) && defined(_GNU_SOURCE) -#define PORTABLE_POSIX_MEMALIGN 1 -#endif - -/* https://forum.kde.org/viewtopic.php?p=66274 */ -#if !defined(PORTABLE_POSIX_MEMALIGN) && defined(_XOPEN_SOURCE) -#if _XOPEN_SOURCE >= 600 -#define PORTABLE_POSIX_MEMALIGN 1 -#endif -#endif - -#if !defined(PORTABLE_POSIX_MEMALIGN) && defined(_POSIX_C_SOURCE) -#if _POSIX_C_SOURCE >= 200112L -#define PORTABLE_POSIX_MEMALIGN 1 -#endif -#endif - -#if !defined(PORTABLE_POSIX_MEMALIGN) && defined(__clang__) -#define PORTABLE_POSIX_MEMALIGN 1 -#endif - -#if !defined(PORTABLE_POSIX_MEMALIGN) -#define PORTABLE_POSIX_MEMALIGN 0 -#endif - -/* https://forum.kde.org/viewtopic.php?p=66274 */ -#if (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) -/* C11 or newer */ -#include -#endif - -/* C11 or newer */ -#if !defined(aligned_alloc) && !defined(__aligned_alloc_is_defined) - -#if PORTABLE_C11_ALIGNED_ALLOC -#ifdef PORTABLE_DEBUG_ALIGNED_ALLOC -#error "DEBUG: C11_ALIGNED_ALLOC configured" -#endif -#elif defined(_MSC_VER) || defined(__MINGW32__) - -#ifdef PORTABLE_DEBUG_ALIGNED_ALLOC -#error "DEBUG: Windows _aligned_malloc configured" -#endif - -/* Aligned _aligned_malloc is not compatible with free. */ -#define aligned_alloc(alignment, size) _aligned_malloc(size, alignment) -#define aligned_free(p) _aligned_free(p) -#define __aligned_alloc_is_defined 1 -#define __aligned_free_is_defined 1 - -#elif PORTABLE_POSIX_MEMALIGN - -#if defined(__GNUC__) -#if !defined(__GNUCC__) -extern int posix_memalign (void **, size_t, size_t); -#elif __GNUCC__ < 5 -extern int posix_memalign (void **, size_t, size_t); -#endif -#endif - -static inline void *__portable_aligned_alloc(size_t alignment, size_t size) -{ - int err; - void *p = 0; - - if (alignment < sizeof(void *)) { - alignment = sizeof(void *); - } - err = posix_memalign(&p, alignment, size); - if (err && p) { - free(p); - p = 0; - } - return p; -} - -#ifdef PORTABLE_DEBUG_ALIGNED_ALLOC -#error "DEBUG: POSIX_MEMALIGN configured" -#endif - -#define aligned_alloc(alignment, size) __portable_aligned_alloc(alignment, size) -#define aligned_free(p) free(p) -#define __aligned_alloc_is_defined 1 -#define __aligned_free_is_defined 1 - -#else - -static inline void *__portable_aligned_alloc(size_t alignment, size_t size) -{ - char *raw; - void *buf; - size_t total_size = (size + alignment - 1 + sizeof(void *)); - - if (alignment < sizeof(void *)) { - alignment = sizeof(void *); - } - raw = (char *)(size_t)malloc(total_size); - buf = raw + alignment - 1 + sizeof(void *); - buf = (void *)(((size_t)buf) & ~(alignment - 1)); - ((void **)buf)[-1] = raw; - return buf; -} - -static inline void __portable_aligned_free(void *p) -{ - char *raw; - - if (p) { - raw = (char*)((void **)p)[-1]; - free(raw); - } -} - -#define aligned_alloc(alignment, size) __portable_aligned_alloc(alignment, size) -#define aligned_free(p) __portable_aligned_free(p) -#define __aligned_alloc_is_defined 1 -#define __aligned_free_is_defined 1 - -#ifdef PORTABLE_DEBUG_ALIGNED_ALLOC -#error "DEBUG: aligned_alloc malloc fallback configured" -#endif - -#endif - -#endif /* aligned_alloc */ - -#if !defined(aligned_free) && !defined(__aligned_free_is_defined) -#define aligned_free(p) free(p) -#define __aligned_free_is_defined 1 -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* PALIGNED_ALLOC_H */ diff --git a/nostrdb/flatcc/portable/pattributes.h b/nostrdb/flatcc/portable/pattributes.h deleted file mode 100644 index 9240fa3196..0000000000 --- a/nostrdb/flatcc/portable/pattributes.h +++ /dev/null @@ -1,84 +0,0 @@ - -/* - * C23 introduces an attribute syntax `[[]]`. Prior to that - * other non-standard syntaxes such as `__attribute__(())` - * and `__declspec()` have been supported by some compiler - * versions. - * - * See also: - * https://en.cppreference.com/w/c/language/attributes - * - * There is no portable way to use C23 attributes in older C standards - * so in order to use these portably, some macro name needs to be - * defined for each attribute that either maps to the older supported - * syntax, or ignores the attribute as appropriate. - * - * The Linux kernel defines certain attributes as macros, such as - * `fallthrough`. When adding attributes it seems reasonable to follow - * the Linux conventions in lack of any official standard. However, it - * is not the intention that this file should mirror the Linux - * attributes 1 to 1. - * - * See also: - * https://github.com/torvalds/linux/blob/master/include/linux/compiler_attributes.h - * - * There is a risk that exposed attribute names may lead to name - * conflicts. A conflicting name can be undefined and if necessary used - * using `pattribute()`. All attributes can be hidden by - * defining `PORTABLE_EXPOSE_ATTRIBUTES=0` in which case - * `pattribute()` can still be used and then if a specific - * attribute name still needs to be exposed, it can be defined manually - * like `#define fallthrough pattribute(fallthrough)`. - */ - - -#ifndef PATTRIBUTES_H -#define PATTRIBUTES_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef PORTABLE_EXPOSE_ATTRIBUTES -#define PORTABLE_EXPOSE_ATTRIBUTES 0 -#endif - -#ifdef __has_c_attribute -# define PORTABLE_HAS_C_ATTRIBUTE(x) __has_c_attribute(x) -#else -# define PORTABLE_HAS_C_ATTRIBUTE(x) 0 -#endif - -#ifdef __has_attribute -# define PORTABLE_HAS_ATTRIBUTE(x) __has_attribute(x) -#else -# define PORTABLE_HAS_ATTRIBUTE(x) 0 -#endif - - -/* https://en.cppreference.com/w/c/language/attributes/fallthrough */ -#if PORTABLE_HAS_C_ATTRIBUTE(__fallthrough__) -# define pattribute_fallthrough [[__fallthrough__]] -#elif PORTABLE_HAS_ATTRIBUTE(__fallthrough__) -# define pattribute_fallthrough __attribute__((__fallthrough__)) -#else -# define pattribute_fallthrough ((void)0) -#endif - - -#define pattribute(x) pattribute_##x - -#if PORTABLE_EXPOSE_ATTRIBUTES - -#ifndef fallthrough -# define fallthrough pattribute(fallthrough) -#endif - -#endif - - -#ifdef __cplusplus -} -#endif - -#endif /* PATTRIBUTES_H */ diff --git a/nostrdb/flatcc/portable/pbase64.h b/nostrdb/flatcc/portable/pbase64.h deleted file mode 100644 index a6812c4b18..0000000000 --- a/nostrdb/flatcc/portable/pbase64.h +++ /dev/null @@ -1,448 +0,0 @@ -#ifndef PBASE64_H -#define PBASE64_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* Guarded to allow inclusion of pstdint.h first, if stdint.h is not supported. */ -#ifndef UINT8_MAX -#include -#endif - -#define BASE64_EOK 0 -/* 0 or mure full blocks decoded, remaining content may be parsed with fresh buffer. */ -#define BASE64_EMORE 1 -/* The `src_len` argument is required when encoding. */ -#define BASE64_EARGS 2 -/* Unsupported mode, or modifier not supported by mode when encoding. */ -#define BASE64_EMODE 3 -/* Decoding ends at invalid tail length - either by source length or by non-alphabet symbol. */ -#define BASE64_ETAIL 4 -/* Decoding ends at valid tail length but last byte has non-zero bits where it shouldn't have. */ -#define BASE64_EDIRTY 5 - -static inline const char *base64_strerror(int err); - -/* All codecs are URL safe. Only Crockford allow for non-canocical decoding. */ -enum { - /* Most common base64 codec, but not url friendly. */ - base64_mode_rfc4648 = 0, - - /* URL safe version, '+' -> '-', '/' -> '_'. */ - base64_mode_url = 1, - - /* - * Skip ' ', '\r', and '\n' - we do not allow tab because common - * uses of base64 such as PEM do not allow tab. - */ - base64_dec_modifier_skipspace = 32, - - /* Padding is excluded by default. Not allowed for zbase64. */ - base64_enc_modifier_padding = 128, - - /* For internal use or to decide codec of mode. */ - base64_modifier_mask = 32 + 64 + 128, -}; - -/* Encoded size with or without padding. */ -static inline size_t base64_encoded_size(size_t len, int mode); - -/* - * Decoded size assuming no padding. - * If `len` does include padding, the actual size may be less - * when decoding, but never more. - */ -static inline size_t base64_decoded_size(size_t len); - -/* - * `dst` must hold ceil(len * 4 / 3) bytes. - * `src_len` points to length of source and is updated with length of - * parse on both success and failure. If `dst_len` is not null - * it is used to store resulting output lengt withh length of decoded - * output on both success and failure. - * If `hyphen` is non-zero a hyphen is encoded every `hyphen` output bytes. - * `mode` selects encoding alphabet defaulting to Crockfords base64. - * Returns 0 on success. - * - * A terminal space can be added with `dst[dst_len++] = ' '` after the - * encode call. All non-alphabet can be used as terminators except the - * padding character '='. The following characters will work as - * terminator for all modes: { '\0', '\n', ' ', '\t' }. A terminator is - * optional when the source length is given to the decoder. Note that - * crockford also reserves a few extra characters for checksum but the - * checksum must be separate from the main buffer and is not supported - * by this library. - */ -static inline int base64_encode(uint8_t *dst, const uint8_t *src, size_t *dst_len, size_t *src_len, int mode); - -/* - * Decodes according to mode while ignoring encoding modifiers. - * `src_len` and `dst_len` are optional pointers. If `src_len` is set it - * must contain the length of the input, otherwise the input must be - * terminated with a non-alphabet character or valid padding (a single - * padding character is accepted) - if the src_len output is needed but - * not the input due to guaranteed termination, then set it to - * (size_t)-1. `dst_len` must contain length of output buffer if present - * and parse will fail with BASE64_EMORE after decoding a block multiple - * if dst_len is exhausted - the parse can thus be resumed after - * draining destination. `src_len` and `dst_len` are updated with parsed - * and decoded length, when present, on both success and failure. - * Returns 0 on success. Invalid characters are not considered errors - - * they simply terminate the parse, however, if the termination is not - * at a block multiple or a valid partial block length then BASE64_ETAIL - * without output holding the last full block, if any. BASE64_ETAIL is also - * returned if the a valid length holds non-zero unused tail bits. - */ -static inline int base64_decode(uint8_t *dst, const uint8_t *src, size_t *dst_len, size_t *src_len, int mode); - -static inline const char *base64_strerror(int err) -{ - switch (err) { - case BASE64_EOK: return "ok"; - case BASE64_EARGS: return "invalid argument"; - case BASE64_EMODE: return "invalid mode"; - case BASE64_EMORE: return "destination full"; - case BASE64_ETAIL: return "invalid tail length"; - case BASE64_EDIRTY: return "invalid tail content"; - default: return "unknown error"; - } -} - -static inline size_t base64_encoded_size(size_t len, int mode) -{ - size_t k = len % 3; - size_t n = (len * 4 / 3 + 3) & ~(size_t)3; - int pad = mode & base64_enc_modifier_padding; - - if (!pad) { - switch (k) { - case 2: - n -= 1; - break; - case 1: - n -= 2; - break; - default: - break; - } - } - return n; -} - -static inline size_t base64_decoded_size(size_t len) -{ - size_t k = len % 4; - size_t n = len / 4 * 3; - - switch (k) { - case 3: - return n + 2; - case 2: - return n + 1; - case 1: /* Not valid without padding. */ - case 0: - default: - return n; - } -} - -static inline int base64_encode(uint8_t *dst, const uint8_t *src, size_t *dst_len, size_t *src_len, int mode) -{ - const uint8_t *rfc4648_alphabet = (const uint8_t *) - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - const uint8_t *url_alphabet = (const uint8_t *) - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; - - const uint8_t *T; - uint8_t *dst_base = dst; - int pad = mode & base64_enc_modifier_padding; - size_t len = 0; - int ret = BASE64_EMODE; - - if (!src_len) { - ret = BASE64_EARGS; - goto done; - } - len = *src_len; - mode = mode & ~base64_modifier_mask; - switch (mode) { - case base64_mode_rfc4648: - T = rfc4648_alphabet; - break; - case base64_mode_url: - T = url_alphabet; - break; - default: - /* Invalid mode. */ - goto done; - } - - ret = BASE64_EOK; - - /* Encodes 4 destination bytes from 3 source bytes. */ - while (len >= 3) { - dst[0] = T[((src[0] >> 2))]; - dst[1] = T[((src[0] << 4) & 0x30) | (src[1] >> 4)]; - dst[2] = T[((src[1] << 2) & 0x3c) | (src[2] >> 6)]; - dst[3] = T[((src[2] & 0x3f))]; - len -= 3; - dst += 4; - src += 3; - } - /* Encodes 8 destination bytes from 1 to 4 source bytes, if any. */ - switch(len) { - case 2: - dst[0] = T[((src[0] >> 2))]; - dst[1] = T[((src[0] << 4) & 0x30) | (src[1] >> 4)]; - dst[2] = T[((src[1] << 2) & 0x3c)]; - dst += 3; - if (pad) { - *dst++ = '='; - } - break; - case 1: - dst[0] = T[((src[0] >> 2))]; - dst[1] = T[((src[0] << 4) & 0x30)]; - dst += 2; - if (pad) { - *dst++ = '='; - *dst++ = '='; - } - break; - default: - pad = 0; - break; - } - len = 0; -done: - if (dst_len) { - *dst_len = (size_t)(dst - dst_base); - } - if (src_len) { - *src_len -= len; - } - return ret; -} - -static inline int base64_decode(uint8_t *dst, const uint8_t *src, size_t *dst_len, size_t *src_len, int mode) -{ - static const uint8_t cinvalid = 64; - static const uint8_t cignore = 65; - static const uint8_t cpadding = 66; - - /* - * 0..63: 6-bit encoded value. - * 64: flags non-alphabet symbols. - * 65: codes for ignored symbols. - * 66: codes for pad symbol '='. - * All codecs consider padding an optional terminator and if present - * consumes as many pad bytes as possible up to block termination, - * but does not fail if a block is not full. - * - * We do not currently have any ignored characters but we might - * add spaces as per MIME spec, but assuming spaces only happen - * at block boundaries this is probalby better handled by repeated - * parsing. - */ - static const uint8_t base64rfc4648_decode[256] = { - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 66, 64, 64, - 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, - 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 - }; - - static const uint8_t base64url_decode[256] = { - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 66, 64, 64, - 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 63, - 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 - }; - - static const uint8_t base64rfc4648_decode_skipspace[256] = { - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 64, 64, 65, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 65, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 66, 64, 64, - 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, - 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 - }; - - static const uint8_t base64url_decode_skipspace[256] = { - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 64, 64, 65, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 65, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 66, 64, 64, - 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 63, - 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 - }; - - int ret = BASE64_EOK; - size_t i, k; - uint8_t hold[4]; - uint8_t *dst_base = dst; - size_t limit = (size_t)-1; - size_t len = (size_t)-1, mark; - const uint8_t *T = base64rfc4648_decode; - int skipspace = mode & base64_dec_modifier_skipspace; - - if (src_len) { - len = *src_len; - } - mark = len; - mode = mode & ~base64_modifier_mask; - switch (mode) { - case base64_mode_rfc4648: - T = skipspace ? base64rfc4648_decode_skipspace : base64rfc4648_decode; - break; - case base64_mode_url: - T = skipspace ? base64url_decode_skipspace : base64url_decode; - break; - default: - ret = BASE64_EMODE; - goto done; - } - - if (dst_len && *dst_len > 0) { - limit = *dst_len; - } - while(limit > 0) { - for (i = 0; i < 4; ++i) { - if (len == i) { - k = i; - len -= i; - goto tail; - } - if ((hold[i] = T[src[i]]) >= cinvalid) { - if (hold[i] == cignore) { - ++src; - --len; - --i; - continue; - } - k = i; - /* Strip padding and ignore hyphen in padding, if present. */ - if (hold[i] == cpadding) { - ++i; - while (i < len && i < 8) { - if (T[src[i]] != cpadding && T[src[i]] != cignore) { - break; - } - ++i; - } - } - len -= i; - goto tail; - } - } - if (limit < 3) { - goto more; - } - dst[0] = (uint8_t)((hold[0] << 2) | (hold[1] >> 4)); - dst[1] = (uint8_t)((hold[1] << 4) | (hold[2] >> 2)); - dst[2] = (uint8_t)((hold[2] << 6) | (hold[3])); - dst += 3; - src += 4; - limit -= 3; - len -= 4; - mark = len; - } -done: - if (dst_len) { - *dst_len = (size_t)(dst - dst_base); - } - if (src_len) { - *src_len -= mark; - } - return ret; - -tail: - switch (k) { - case 0: - break; - case 2: - if ((hold[1] << 4) & 0xff) { - goto dirty; - } - if (limit < 1) { - goto more; - } - dst[0] = (uint8_t)((hold[0] << 2) | (hold[1] >> 4)); - dst += 1; - break; - case 3: - if ((hold[2] << 6) & 0xff) { - goto dirty; - } - if (limit < 2) { - goto more; - } - dst[0] = (uint8_t)((hold[0] << 2) | (hold[1] >> 4)); - dst[1] = (uint8_t)((hold[1] << 4) | (hold[2] >> 2)); - dst += 2; - break; - default: - ret = BASE64_ETAIL; - goto done; - } - mark = len; - goto done; -dirty: - ret = BASE64_EDIRTY; - goto done; -more: - ret = BASE64_EMORE; - goto done; -} - -#ifdef __cplusplus -} -#endif - -#endif /* PBASE64_H */ diff --git a/nostrdb/flatcc/portable/pcrt.h b/nostrdb/flatcc/portable/pcrt.h deleted file mode 100644 index 0226be6f49..0000000000 --- a/nostrdb/flatcc/portable/pcrt.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef PCRT_H -#define PCRT_H - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - * Assertions and pointer violations in debug mode may trigger a dialog - * on Windows. When running headless this is not helpful, but - * unfortunately it cannot be disabled with a compiler option so code - * must be injected into the runtime early in the main function. - * A call to the provided `init_headless_crt()` macro does this in - * a portable manner. - * - * See also: - * https://stackoverflow.com/questions/13943665/how-can-i-disable-the-debug-assertion-dialog-on-windows - */ - -#if defined(_WIN32) - -#include -#include -#include - -static int _portable_msvc_headless_report_hook(int reportType, char *message, int *returnValue) -{ - fprintf(stderr, "CRT[%d]: %s\n", reportType, message); - *returnValue = 1; - exit(1); - return 1; -} - -#define init_headless_crt() _CrtSetReportHook(_portable_msvc_headless_report_hook) - -#else - -#define init_headless_crt() ((void)0) - -#endif - - -#ifdef __cplusplus -} -#endif - -#endif /* PCRT_H */ diff --git a/nostrdb/flatcc/portable/pdiagnostic.h b/nostrdb/flatcc/portable/pdiagnostic.h deleted file mode 100644 index b5294f3a5e..0000000000 --- a/nostrdb/flatcc/portable/pdiagnostic.h +++ /dev/null @@ -1,85 +0,0 @@ - /* There is intentionally no include guard in this file. */ - - -/* - * Usage: optionally disable any of these before including. - * - * #define PDIAGNOSTIC_IGNORE_UNUSED_FUNCTION - * #define PDIAGNOSTIC_IGNORE_UNUSED_VARIABLE - * #define PDIAGNOSTIC_IGNORE_UNUSED_PARAMETER - * #define PDIAGNOSTIC_IGNORE_UNUSED // all of the above - * - * #include "pdiagnostic.h" - * - * Alternatively use #include "pdiagnostic_push/pop.h" - */ - -#ifdef _MSC_VER -#pragma warning(disable: 4668) /* preprocessor name not defined */ -#endif - -#if !defined(PDIAGNOSTIC_AWARE_MSVC) && defined(_MSC_VER) -#define PDIAGNOSTIC_AWARE_MSVC 1 -#elif !defined(PDIAGNOSTIC_AWARE_MSVC) -#define PDIAGNOSTIC_AWARE_MSVC 0 -#endif - -#if !defined(PDIAGNOSTIC_AWARE_CLANG) && defined(__clang__) -#define PDIAGNOSTIC_AWARE_CLANG 1 -#elif !defined(PDIAGNOSTIC_AWARE_CLANG) -#define PDIAGNOSTIC_AWARE_CLANG 0 -#endif - -#if !defined(PDIAGNOSTIC_AWARE_GCC) && defined(__GNUC__) && !defined(__clang__) -/* Can disable some warnings even if push is not available (gcc-4.2 vs gcc-4.7) */ -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2) -#define PDIAGNOSTIC_AWARE_GCC 1 -#endif -#endif - -#if !defined(PDIAGNOSTIC_AWARE_GCC) -#define PDIAGNOSTIC_AWARE_GCC 0 -#endif - -#if defined(PDIAGNOSTIC_IGNORE_UNUSED_FUNCTION) || defined(PDIAGNOSTIC_IGNORE_UNUSED) -#if PDIAGNOSTIC_AWARE_CLANG -#pragma clang diagnostic ignored "-Wunused-function" -#elif PDIAGNOSTIC_AWARE_GCC -#pragma GCC diagnostic ignored "-Wunused-function" -#endif -#endif -#undef PDIAGNOSTIC_IGNORE_UNUSED_FUNCTION - -#if defined(PDIAGNOSTIC_IGNORE_UNUSED_VARIABLE) || defined(PDIAGNOSTIC_IGNORE_UNUSED) -#if PDIAGNOSTIC_AWARE_MSVC -#pragma warning(disable: 4101) /* unused local variable */ -#elif PDIAGNOSTIC_AWARE_CLANG -#pragma clang diagnostic ignored "-Wunused-variable" -#elif PDIAGNOSTIC_AWARE_GCC -#pragma GCC diagnostic ignored "-Wunused-variable" -#endif -#endif -#undef PDIAGNOSTIC_IGNORE_UNUSED_VARIABLE - -#if defined(PDIAGNOSTIC_IGNORE_UNUSED_PARAMETER) || defined(PDIAGNOSTIC_IGNORE_UNUSED) -#if PDIAGNOSTIC_AWARE_CLANG -#pragma clang diagnostic ignored "-Wunused-parameter" -#elif PDIAGNOSTIC_AWARE_GCC -#pragma GCC diagnostic ignored "-Wunused-parameter" -#endif -#endif -#undef PDIAGNOSTIC_IGNORE_UNUSED_PARAMETER - -#undef PDIAGNOSTIC_IGNORE_UNUSED - -#if defined (__cplusplus) && __cplusplus < 201103L -#if PDIAGNOSTIC_AWARE_CLANG -/* Needed for < C++11 clang C++ static_assert */ -#pragma clang diagnostic ignored "-Wc11-extensions" -/* Needed for empty macro arguments. */ -#pragma clang diagnostic ignored "-Wc99-extensions" -/* Needed for trailing commas. */ -#pragma clang diagnostic ignored "-Wc++11-extensions" -#endif -#endif - diff --git a/nostrdb/flatcc/portable/pdiagnostic_pop.h b/nostrdb/flatcc/portable/pdiagnostic_pop.h deleted file mode 100644 index f5e16b340e..0000000000 --- a/nostrdb/flatcc/portable/pdiagnostic_pop.h +++ /dev/null @@ -1,20 +0,0 @@ -#if defined(PDIAGNOSTIC_PUSHED_MSVC) -#if PDIAGNOSTIC_PUSHED_MSVC -#pragma warning( pop ) -#endif // PDIAGNOSTIC_PUSHED_MSVC -#undef PDIAGNOSTIC_PUSHED_MSVC -#endif // defined(PDIAGNOSTIC_PUSHED_MSVC) - -#if defined(PDIAGNOSTIC_PUSHED_CLANG) -#if PDIAGNOSTIC_PUSHED_CLANG -#pragma clang diagnostic pop -#endif // PDIAGNOSTIC_PUSHED_CLANG -#undef PDIAGNOSTIC_PUSHED_CLANG -#endif // defined(PDIAGNOSTIC_PUSHED_CLANG) - -#if defined(PDIAGNOSTIC_PUSHED_GCC) -#if PDIAGNOSTIC_PUSHED_GCC -#pragma GCC diagnostic pop -#endif // PDIAGNOSTIC_PUSHED_GCC -#undef PDIAGNOSTIC_PUSHED_GCC -#endif // defined(PDIAGNOSTIC_PUSHED_GCC) diff --git a/nostrdb/flatcc/portable/pdiagnostic_push.h b/nostrdb/flatcc/portable/pdiagnostic_push.h deleted file mode 100644 index 66586d721b..0000000000 --- a/nostrdb/flatcc/portable/pdiagnostic_push.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * See also comment in "pdiagnostic.h" - * - * e.g. - * #define PDIAGNOSTIC_IGNORE_USED_FUNCTION - * #define PDIAGNOSTIC_IGNORE_USED_VARIABLE - * #include "pdiagnostic_push" - * ... - * #include "pdiagnostic_pop.h" - * - * - * or if push pop isn't desired: - * #define PDIAGNOSTIC_IGNORE_USED_FUNCTION - * #define PDIAGNOSTIC_IGNORE_USED_VARIABLE - * #include "pdiagnostic.h" - * ... - * - * - * - * Some if these warnings cannot be ignored - * at the #pragma level, but might in the future. - * Use compiler switches like -Wno-unused-function - * to work around this. - */ - -#if defined(_MSC_VER) -#pragma warning( push ) -#define PDIAGNOSTIC_PUSHED_MSVC 1 -#else -#define PDIAGNOSTIC_PUSHED_MSVC 0 -#endif - -#if defined(__clang__) -#pragma clang diagnostic push -#define PDIAGNOSTIC_PUSHED_CLANG 1 -#else -#define PDIAGNOSTIC_PUSHED_CLANG 0 -#endif - -#if defined(__GNUC__) && !defined(__clang__) -#if ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#pragma GCC diagnostic push -#define PDIAGNOSTIC_PUSHED_GCC 1 -#else -#define PDIAGNOSTIC_PUSHED_GCC 0 -#endif // GNUC >= 4.6 -#else -#define PDIAGNOSTIC_PUSHED_GCC 0 -#endif // defined(__GNUC__) && !defined(__clang__) - -#include "pdiagnostic.h" diff --git a/nostrdb/flatcc/portable/pendian.h b/nostrdb/flatcc/portable/pendian.h deleted file mode 100644 index 122ba8e245..0000000000 --- a/nostrdb/flatcc/portable/pendian.h +++ /dev/null @@ -1,206 +0,0 @@ -#ifndef PENDIAN_H -#define PENDIAN_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Defines platform optimized (as per linux - * - * le16toh, le32to, le64toh, be16toh, be32toh, be64toh - * htole16, htole32, htole64, htobe16, htobe32, htobe64 - * - * Falls back to auto-detect endian conversion which is also fast - * if fast byteswap operation was detected. - * - * Also defines platform optimized: - * - * bswap16, bswap32, bswap64, - * - * with fall-back to shift-or implementation. - * - * For convenience also defines: - * - * le8to, be8toh, htole8, htobe8 - * bswap8 - * - * The convience functions makes is simpler to define conversion macros - * based on type size. - * - * NOTE: this implementation expects arguments with no side-effects and - * with appropriately sized unsigned arguments. These are expected to be - * used with typesafe wrappers. - */ - -#ifndef UINT8_MAX -#include "pstdint.h" -#endif - -#if defined(__linux__) -#include -#elif defined(__OpenBSD__) || defined(__FreeBSD__) -#include -#endif - -#include "pendian_detect.h" - -#if defined(_MSC_VER) -#if _MSC_VER >= 1300 -#include -#define bswap16 _byteswap_ushort -#define bswap32 _byteswap_ulong -#define bswap64 _byteswap_uint64 -#endif -#elif defined(__clang__) -#if __has_builtin(__builtin_bswap16) -#ifndef bswap16 -#define bswap16 __builtin_bswap16 -#endif -#endif -#if __has_builtin(__builtin_bswap32) -#ifndef bswap32 -#define bswap32 __builtin_bswap32 -#endif -#endif -#if __has_builtin(__builtin_bswap64) -#ifndef bswap64 -#define bswap64 __builtin_bswap64 -#endif -#endif -#elif defined(__OpenBSD__) || defined(__FreeBSD__) -#ifndef bswap16 -#define bswap16 swap16 -#endif -#ifndef bswap32 -#define bswap32 swap32 -#endif -#ifndef bswap64 -#define bswap64 swap64 -#endif -#elif defined(__GNUC__) /* Supported since at least GCC 4.4 */ -#ifndef bswap32 -#define bswap32 __builtin_bswap32 -#endif -#ifndef bswap64 -#define bswap64 __builtin_bswap64 -#endif -#endif - -#ifndef bswap16 -#define bswap16(v) \ - (((uint16_t)(v) << 8) | ((uint16_t)(v) >> 8)) -#endif - -#ifndef bswap32 -#define bswap32(v) \ - ((((uint32_t)(v) << 24)) \ - | (((uint32_t)(v) << 8) & UINT32_C(0x00FF0000)) \ - | (((uint32_t)(v) >> 8) & UINT32_C(0x0000FF00)) \ - | (((uint32_t)(v) >> 24))) -#endif - -#ifndef bswap64 -#define bswap64(v) \ - ((((uint64_t)(v) << 56)) \ - | (((uint64_t)(v) << 40) & UINT64_C(0x00FF000000000000)) \ - | (((uint64_t)(v) << 24) & UINT64_C(0x0000FF0000000000)) \ - | (((uint64_t)(v) << 8) & UINT64_C(0x000000FF00000000)) \ - | (((uint64_t)(v) >> 8) & UINT64_C(0x00000000FF000000)) \ - | (((uint64_t)(v) >> 24) & UINT64_C(0x0000000000FF0000)) \ - | (((uint64_t)(v) >> 40) & UINT64_C(0x000000000000FF00)) \ - | (((uint64_t)(v) >> 56))) -#endif - -#ifndef bswap8 -#define bswap8(v) ((uint8_t)(v)) -#endif - -#if !defined(le16toh) && defined(letoh16) -#define le16toh letoh16 -#define le32toh letoh32 -#define le64toh letoh64 -#endif - -#if !defined(be16toh) && defined(betoh16) -#define be16toh betoh16 -#define be32toh betoh32 -#define be64toh betoh64 -#endif - -/* Assume it goes for all. */ -#if !defined(le16toh) - -#if defined(__LITTLE_ENDIAN__) - -#define le16toh(v) (v) -#define le32toh(v) (v) -#define le64toh(v) (v) - -#define htole16(v) (v) -#define htole32(v) (v) -#define htole64(v) (v) - -#define be16toh(v) bswap16(v) -#define be32toh(v) bswap32(v) -#define be64toh(v) bswap64(v) - -#define htobe16(v) bswap16(v) -#define htobe32(v) bswap32(v) -#define htobe64(v) bswap64(v) - -#elif defined(__BIG_ENDIAN__) - -#define le16toh(v) bswap16(v) -#define le32toh(v) bswap32(v) -#define le64toh(v) bswap64(v) - -#define htole16(v) bswap16(v) -#define htole32(v) bswap32(v) -#define htole64(v) bswap64(v) - -#define be16toh(v) (v) -#define be32toh(v) (v) -#define be64toh(v) (v) - -#define htobe16(v) (v) -#define htobe32(v) (v) -#define htobe64(v) (v) - -#else - -static const int __pendian_test = 1; - -#define le16toh(v) (*(char *)&__pendian_test ? (v) : bswap16(v)) -#define le32toh(v) (*(char *)&__pendian_test ? (v) : bswap32(v)) -#define le64toh(v) (*(char *)&__pendian_test ? (v) : bswap64(v)) - -#define htole16(v) (*(char *)&__pendian_test ? (v) : bswap16(v)) -#define htole32(v) (*(char *)&__pendian_test ? (v) : bswap32(v)) -#define htole64(v) (*(char *)&__pendian_test ? (v) : bswap64(v)) - -#define be16toh(v) (*(char *)&__pendian_test ? bswap16(v) : (v)) -#define be32toh(v) (*(char *)&__pendian_test ? bswap32(v) : (v)) -#define be64toh(v) (*(char *)&__pendian_test ? bswap64(v) : (v)) - -#define htobe16(v) (*(char *)&__pendian_test ? bswap16(v) : (v)) -#define htobe32(v) (*(char *)&__pendian_test ? bswap32(v) : (v)) -#define htobe64(v) (*(char *)&__pendian_test ? bswap64(v) : (v)) - -#endif - -#endif /* le16toh */ - -/* Helpers not part of Linux */ -#if !defined(le8toh) -#define le8toh(n) (n) -#define htole8(n) (n) -#define be8toh(n) (n) -#define htobe8(n) (n) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* PENDIAN_H */ diff --git a/nostrdb/flatcc/portable/pendian_detect.h b/nostrdb/flatcc/portable/pendian_detect.h deleted file mode 100644 index 1dd62c046f..0000000000 --- a/nostrdb/flatcc/portable/pendian_detect.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Uses various known flags to decide endianness and defines: - * - * __LITTLE_ENDIAN__ or __BIG_ENDIAN__ if not already defined - * - * and also defines - * - * __BYTE_ORDER__ to either __ORDER_LITTLE_ENDIAN__ or - * __ORDER_BIG_ENDIAN__ if not already defined - * - * If none of these could be set, __UNKNOWN_ENDIAN__ is defined, - * which is not a known flag. If __BYTE_ORDER__ is defined but - * not big or little endian, __UNKNOWN_ENDIAN__ is also defined. - * - * Note: Some systems define __BYTE_ORDER without __ at the end - * - this will be mapped to to __BYTE_ORDER__. - */ - -#ifndef PENDIAN_DETECT -#define PENDIAN_DETECT - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef __ORDER_LITTLE_ENDIAN__ -#define __ORDER_LITTLE_ENDIAN__ 1234 -#endif - -#ifndef __ORDER_BIG_ENDIAN__ -#define __ORDER_BIG_ENDIAN__ 4321 -#endif - -#ifdef __BYTE_ORDER__ - -#if defined(__LITTLE_ENDIAN__) && __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ -#error __LITTLE_ENDIAN__ inconsistent with __BYTE_ORDER__ -#endif - -#if defined(__BIG_ENDIAN__) && __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__ -#error __BIG_ENDIAN__ inconsistent with __BYTE_ORDER__ -#endif - -#else /* __BYTE_ORDER__ */ - - -#if \ - defined(__LITTLE_ENDIAN__) || \ - (defined(__BYTE_ORDER) && __BYTE_ORDER == __ORDER_LITTLE_ENDIAN) || \ - defined(__ARMEL__) || defined(__THUMBEL__) || \ - defined(__AARCH64EL__) || \ - (defined(_MSC_VER) && defined(_M_ARM)) || \ - defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || \ - defined(_M_X64) || defined(_M_IX86) || defined(_M_I86) || \ - defined(__i386__) || defined(__alpha__) || \ - defined(__ia64) || defined(__ia64__) || \ - defined(_M_IA64) || defined(_M_ALPHA) || \ - defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) || \ - defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ - defined(__bfin__) - -#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ - -#endif - -#if \ - defined (__BIG_ENDIAN__) || \ - (defined(__BYTE_ORDER) && __BYTE_ORDER == __ORDER_BIG_ENDIAN) || \ - defined(__ARMEB__) || defined(THUMBEB__) || defined (__AARCH64EB__) || \ - defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || \ - defined(__sparc) || defined(__sparc__) || \ - defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || \ - defined(__hpux) || defined(__hppa) || defined(__s390__) - -#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__ - -#endif - -#endif /* __BYTE_ORDER__ */ - -#ifdef __BYTE_ORDER__ - -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - -#ifndef __LITTLE_ENDIAN__ -#define __LITTLE_ENDIAN__ 1 -#endif - -#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - -#ifndef __BIG_ENDIAN__ -#define __BIG_ENDIAN__ 1 -#endif - -#else - -/* - * Custom extension - we only define __BYTE_ORDER__ if known big or little. - * User code that understands __BYTE_ORDER__ may also assume unkown if - * it is not defined by now - this will allow other endian formats than - * big or little when supported by compiler. - */ -#ifndef __UNKNOWN_ENDIAN__ -#define __UNKNOWN_ENDIAN__ 1 -#endif - -#endif -#endif /* __BYTE_ORDER__ */ - -#if defined(__LITTLE_ENDIAN__) && defined(__BIG_ENDIAN__) -#error conflicting definitions of __LITTLE_ENDIAN__ and __BIG_ENDIAN__ -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* PENDIAN_DETECT */ diff --git a/nostrdb/flatcc/portable/pinline.h b/nostrdb/flatcc/portable/pinline.h deleted file mode 100644 index f4f8f27083..0000000000 --- a/nostrdb/flatcc/portable/pinline.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PINLINE_H -#define PINLINE_H - -#ifndef __cplusplus - -#if (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) -/* C99 or newer */ -#elif _MSC_VER >= 1500 /* MSVC 9 or newer */ -#undef inline -#define inline __inline -#elif __GNUC__ >= 3 /* GCC 3 or newer */ -#define inline __inline -#else /* Unknown or ancient */ -#define inline -#endif - -#endif /* __cplusplus */ - -#endif /* PINLINE_H */ diff --git a/nostrdb/flatcc/portable/pinttypes.h b/nostrdb/flatcc/portable/pinttypes.h deleted file mode 100644 index a1be9df64c..0000000000 --- a/nostrdb/flatcc/portable/pinttypes.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef PINTTYPES_H -#define PINTTYPES_H - -#ifndef PRId16 - -#if (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) -/* C99 or newer */ -#include -#else - -/* - * This is not a complete implementation of , just the most - * useful printf modifiers. - */ - -#include "pstdint.h" - -#ifndef PRINTF_INT64_MODIFIER -#error "please define PRINTF_INT64_MODIFIER" -#endif - -#ifndef PRId64 -#define PRId64 PRINTF_INT64_MODIFIER "d" -#define PRIu64 PRINTF_INT64_MODIFIER "u" -#define PRIx64 PRINTF_INT64_MODIFIER "x" -#endif - -#ifndef PRINTF_INT32_MODIFIER -#define PRINTF_INT32_MODIFIER "l" -#endif - -#ifndef PRId32 -#define PRId32 PRINTF_INT32_MODIFIER "d" -#define PRIu32 PRINTF_INT32_MODIFIER "u" -#define PRIx32 PRINTF_INT32_MODIFIER "x" -#endif - -#ifndef PRINTF_INT16_MODIFIER -#define PRINTF_INT16_MODIFIER "h" -#endif - -#ifndef PRId16 -#define PRId16 PRINTF_INT16_MODIFIER "d" -#define PRIu16 PRINTF_INT16_MODIFIER "u" -#define PRIx16 PRINTF_INT16_MODIFIER "x" -#endif - -# endif /* __STDC__ */ - -#endif /* PRId16 */ - -#endif /* PINTTYPES */ diff --git a/nostrdb/flatcc/portable/portable.h b/nostrdb/flatcc/portable/portable.h deleted file mode 100644 index 7a6a484ed9..0000000000 --- a/nostrdb/flatcc/portable/portable.h +++ /dev/null @@ -1,2 +0,0 @@ -/* portable.h is widely used, so we redirect to a less conflicting name. */ -#include "portable_basic.h" diff --git a/nostrdb/flatcc/portable/portable_basic.h b/nostrdb/flatcc/portable/portable_basic.h deleted file mode 100644 index 0396f3d4c7..0000000000 --- a/nostrdb/flatcc/portable/portable_basic.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef PORTABLE_BASIC_H -#define PORTABLE_BASIC_H - -/* - * Basic features need to make compilers support the most common moden C - * features, and endian / unligned read support as well. - * - * It is not assumed that this file is always included. - * Other include files are independent or include what they need. - */ - -#include "pversion.h" -#include "pwarnings.h" - -/* Featutures that ought to be supported by C11, but some aren't. */ -#include "pinttypes.h" -#include "pstdalign.h" -#include "pinline.h" -#include "pstatic_assert.h" - -/* These are not supported by C11 and are general platform abstractions. */ -#include "pendian.h" -#include "punaligned.h" - -#endif /* PORTABLE_BASIC_H */ diff --git a/nostrdb/flatcc/portable/pparsefp.h b/nostrdb/flatcc/portable/pparsefp.h deleted file mode 100644 index 7fa1c247dc..0000000000 --- a/nostrdb/flatcc/portable/pparsefp.h +++ /dev/null @@ -1,226 +0,0 @@ -#ifndef PPARSEFP_H -#define PPARSEFP_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include /* memcpy */ - -/* - * Parses a float or double number and returns the length parsed if - * successful. The length argument is of limited value due to dependency - * on `strtod` - buf[len] must be accessible and must not be part of - * a valid number, including hex float numbers.. - * - * Unlike strtod, whitespace is not parsed. - * - * May return: - * - null on error, - * - buffer start if first character does not start a number, - * - or end of parse on success. - * - */ - -#define PDIAGNOSTIC_IGNORE_UNUSED_FUNCTION -#include "pdiagnostic_push.h" - -/* - * isinf is needed in order to stay compatible with strtod's - * over/underflow handling but isinf has some portability issues. - * - * Use the parse_double/float_is_range_error instead of isinf directly. - * This ensures optimizations can be added when not using strtod. - * - * On gcc, clang and msvc we can use isinf or equivalent directly. - * Other compilers such as xlc may require linking with -lm which may not - * be convienent so a default isinf is provided. If isinf is available - * and there is a noticable performance issue, define - * `PORTABLE_USE_ISINF`. This flag also affects isnan. - */ -#if defined(__GNUC__) || defined(__clang__) || defined(_MSC_VER) || defined(PORTABLE_USE_ISINF) -#include -#if defined(_MSC_VER) && !defined(isinf) -#include -#define isnan _isnan -#define isinf(x) (!_finite(x)) -#endif -/* - * clang-3 through clang-8 but not clang-9 issues incorrect precision - * loss warning with -Wconversion flag when cast is absent. - */ -#if defined(__clang__) -#if __clang_major__ >= 3 && __clang_major__ <= 8 -#define parse_double_isinf(x) isinf((float)x) -#define parse_double_isnan(x) isnan((float)x) -#endif -#endif -#if !defined(parse_double_isinf) -#define parse_double_isinf isinf -#endif -#define parse_float_isinf isinf - -#else - -#ifndef UINT8_MAX -#include -#endif - -/* Avoid linking with libmath but depends on float/double being IEEE754 */ -static inline int parse_double_isinf(const double x) -{ - uint64_t u64x; - - memcpy(&u64x, &x, sizeof(u64x)); - return (u64x & 0x7fffffff00000000ULL) == 0x7ff0000000000000ULL; -} - -static inline int parse_float_isinf(float x) -{ - uint32_t u32x; - - memcpy(&u32x, &x, sizeof(u32x)); - return (u32x & 0x7fffffff) == 0x7f800000; -} - -#endif - -#if !defined(parse_double_isnan) -#define parse_double_isnan isnan -#endif -#if !defined(parse_float_isnan) -#define parse_float_isnan isnan -#endif - -/* Returns 0 when in range, 1 on overflow, and -1 on underflow. */ -static inline int parse_double_is_range_error(double x) -{ - return parse_double_isinf(x) ? (x < 0.0 ? -1 : 1) : 0; -} - -static inline int parse_float_is_range_error(float x) -{ - return parse_float_isinf(x) ? (x < 0.0f ? -1 : 1) : 0; -} - -#ifndef PORTABLE_USE_GRISU3 -#define PORTABLE_USE_GRISU3 1 -#endif - -#if PORTABLE_USE_GRISU3 -#include "grisu3_parse.h" -#endif - -#ifdef grisu3_parse_double_is_defined -static inline const char *parse_double(const char *buf, size_t len, double *result) -{ - return grisu3_parse_double(buf, len, result); -} -#else -#include -static inline const char *parse_double(const char *buf, size_t len, double *result) -{ - char *end; - - (void)len; - *result = strtod(buf, &end); - return end; -} -#endif - -static inline const char *parse_float(const char *buf, size_t len, float *result) -{ - const char *end; - double v; - union { uint32_t u32; float f32; } inf; - inf.u32 = 0x7f800000; - - end = parse_double(buf, len, &v); - *result = (float)v; - if (parse_float_isinf(*result)) { - *result = v < 0 ? -inf.f32 : inf.f32; - return buf; - } - return end; -} - -/* Inspired by https://bitbashing.io/comparing-floats.html */ - -/* Return signed ULP distance or INT64_MAX if any value is nan. */ -static inline int64_t parse_double_compare(const double x, const double y) -{ - int64_t i64x, i64y; - - if (x == y) return 0; - if (parse_double_isnan(x)) return INT64_MAX; - if (parse_double_isnan(y)) return INT64_MAX; - memcpy(&i64x, &x, sizeof(i64x)); - memcpy(&i64y, &y, sizeof(i64y)); - if ((i64x < 0) != (i64y < 0)) return INT64_MAX; - return i64x - i64y; -} - -/* Same as double, but INT32_MAX if nan. */ -static inline int32_t parse_float_compare(const float x, const float y) -{ - int32_t i32x, i32y; - - if (x == y) return 0; - if (parse_float_isnan(x)) return INT32_MAX; - if (parse_float_isnan(y)) return INT32_MAX; - memcpy(&i32x, &x, sizeof(i32x)); - memcpy(&i32y, &y, sizeof(i32y)); - if ((i32x < 0) != (i32y < 0)) return INT32_MAX; - return i32x - i32y; -} - -/* - * Returns the absolute distance in floating point ULP (representational bit difference). - * Uses signed return value so that INT64_MAX and INT32_MAX indicates NaN similar to - * the compare function. - */ -static inline int64_t parse_double_dist(const double x, const double y) -{ - uint64_t m64; - int64_t i64; - - i64 = parse_double_compare(x, y); - /* Absolute integer value of compare. */ - m64 = (uint64_t)-(i64 < 0); - return (int64_t)(((uint64_t)i64 + m64) ^ m64); -} - -/* Same as double, but INT32_MAX if NaN. */ -static inline int32_t parse_float_dist(const float x, const float y) -{ - uint32_t m32; - int32_t i32; - - i32 = parse_float_compare(x, y); - /* Absolute integer value of compare. */ - m32 = (uint32_t)-(i32 < 0); - return (int32_t)(((uint32_t)i32 + m32) ^ m32); -} - -/* - * Returns 1 if no value is NaN, and the difference is at most one ULP (1 bit), and the - * sign is the same, and 0 otherwise. - */ -static inline int parse_double_is_equal(const double x, const double y) -{ - return parse_double_dist(x, y) >> 1 == 0; -} - -/* Same as double, but at lower precision. */ -static inline int parse_float_is_equal(const float x, const float y) -{ - return parse_float_dist(x, y) >> 1 == 0; -} - -#include "pdiagnostic_pop.h" - -#ifdef __cplusplus -} -#endif - -#endif /* PPARSEFP_H */ diff --git a/nostrdb/flatcc/portable/pparseint.h b/nostrdb/flatcc/portable/pparseint.h deleted file mode 100644 index 96cc99fedc..0000000000 --- a/nostrdb/flatcc/portable/pparseint.h +++ /dev/null @@ -1,374 +0,0 @@ -#ifndef PPARSEINT_H -#define PPARSEINT_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Type specific integer parsers: - * - * const char * - * parse_(const char *buf, size_t len, *value, int *status); - * - * parse_uint64, parse_int64 - * parse_uint32, parse_int32 - * parse_uint16, parse_int16 - * parse_uint8, parse_int8 - * parse_ushort, parse_short - * parse_uint, parse_int - * parse_ulong, parse_long - * - * Leading space must be stripped in advance. Status argument can be - * null. - * - * Returns pointer to end of match and a non-negative status code - * on succcess (0 for unsigned, 1 for signed): - * - * PARSE_INTEGER_UNSIGNED - * PARSE_INTEGER_SIGNED - * - * Returns null with a negative status code and unmodified value on - * invalid integer formats: - * - * PARSE_INTEGER_OVERFLOW - * PARSE_INTEGER_UNDERFLOW - * PARSE_INTEGER_INVALID - * - * Returns input buffer with negative status code and unmodified value - * if first character does not start an integer (not a sign or a digit). - * - * PARSE_INTEGER_UNMATCHED - * PARSE_INTEGER_END - * - * The signed parsers only works with two's complement architectures. - * - * Note: the corresponding parse_float and parse_double parsers do not - * have a status argument because +/-Inf and NaN are conventionally used - * for this. - */ - -#include "limits.h" -#ifndef UINT8_MAX -#include -#endif - -#define PARSE_INTEGER_UNSIGNED 0 -#define PARSE_INTEGER_SIGNED 1 -#define PARSE_INTEGER_OVERFLOW -1 -#define PARSE_INTEGER_UNDERFLOW -2 -#define PARSE_INTEGER_INVALID -3 -#define PARSE_INTEGER_UNMATCHED -4 -#define PARSE_INTEGER_END -5 - -/* - * Generic integer parser that holds 64-bit unsigned values and stores - * sign separately. Leading space is not valid. - * - * Note: this function differs from the type specific parsers like - * parse_int64 by not negating the value when there is a sign. It - * differs from parse_uint64 by being able to return a negative - * UINT64_MAX successfully. - * - * This parser is used by all type specific integer parsers. - * - * Status argument can be null. - */ -static const char *parse_integer(const char *buf, size_t len, uint64_t *value, int *status) -{ - uint64_t x0, x = 0; - const char *k, *end = buf + len; - int sign, status_; - - if (!status) { - status = &status_; - } - if (buf == end) { - *status = PARSE_INTEGER_END; - return buf; - } - k = buf; - sign = *buf == '-'; - buf += sign; - while (buf != end && *buf >= '0' && *buf <= '9') { - x0 = x; - x = x * 10 + (uint64_t)(*buf - '0'); - if (x0 > x) { - *status = sign ? PARSE_INTEGER_UNDERFLOW : PARSE_INTEGER_OVERFLOW; - return 0; - } - ++buf; - } - if (buf == k) { - /* No number was matched, but it isn't an invalid number either. */ - *status = PARSE_INTEGER_UNMATCHED; - return buf; - } - if (buf == k + sign) { - *status = PARSE_INTEGER_INVALID; - return 0; - } - if (buf != end) - switch (*buf) { - case 'e': case 'E': case '.': case 'p': case 'P': - *status = PARSE_INTEGER_INVALID; - return 0; - } - *value = x; - *status = sign; - return buf; -} - -/* - * Parse hex values like 0xff, -0xff, 0XdeAdBeaf42, cannot be trailed by '.', 'p', or 'P'. - * Overflows if string is more than 16 valid hex digits. Otherwise similar to parse_integer. - */ -static const char *parse_hex_integer(const char *buf, size_t len, uint64_t *value, int *status) -{ - uint64_t x = 0; - const char *k, *k2, *end = buf + len; - int sign, status_; - unsigned char c; - - if (!status) { - status = &status_; - } - if (buf == end) { - *status = PARSE_INTEGER_END; - return buf; - } - sign = *buf == '-'; - buf += sign; - if (end - buf < 2 || buf[0] != '0' || (buf[1] | 0x20) != 'x') { - *status = PARSE_INTEGER_UNMATCHED; - return buf - sign; - } - buf += 2; - k = buf; - k2 = end; - if (end - buf > 16) { - k2 = buf + 16; - } - while (buf != k2) { - c = (unsigned char)*buf; - if (c >= '0' && c <= '9') { - x = x * 16 + c - '0'; - } else { - /* Lower case. */ - c |= 0x20; - if (c >= 'a' && c <= 'f') { - x = x * 16 + c - 'a' + 10; - } else { - break; - } - } - ++buf; - } - if (buf == k) { - if (sign) { - *status = PARSE_INTEGER_INVALID; - return 0; - } else { - /* No number was matched, but it isn't an invalid number either. */ - *status = PARSE_INTEGER_UNMATCHED; - return buf; - } - } - if (buf == end) { - goto done; - } - c = (unsigned char)*buf; - if (buf == k2) { - if (c >= '0' && c <= '9') { - *status = sign ? PARSE_INTEGER_UNDERFLOW : PARSE_INTEGER_OVERFLOW; - return 0; - } - c |= 0x20; - if (c >= 'a' && c <= 'f') { - *status = sign ? PARSE_INTEGER_UNDERFLOW : PARSE_INTEGER_OVERFLOW; - return 0; - } - } - switch (c) { - case '.': case 'p': case 'P': - *status = PARSE_INTEGER_INVALID; - return 0; - } -done: - *value = x; - *status = sign; - return buf; -} - - -#define __portable_define_parse_unsigned(NAME, TYPE, LIMIT) \ -static inline const char *parse_ ## NAME \ - (const char *buf, size_t len, TYPE *value, int *status) \ -{ \ - int status_ = 0; \ - uint64_t x; \ - \ - if (!status) { \ - status = &status_; \ - } \ - buf = parse_integer(buf, len, &x, status); \ - switch (*status) { \ - case PARSE_INTEGER_UNSIGNED: \ - if (x <= LIMIT) { \ - *value = (TYPE)x; \ - return buf; \ - } \ - *status = PARSE_INTEGER_OVERFLOW; \ - return 0; \ - case PARSE_INTEGER_SIGNED: \ - *status = PARSE_INTEGER_UNDERFLOW; \ - return 0; \ - default: \ - return buf; \ - } \ -} - -#define __portable_define_parse_hex_unsigned(NAME, TYPE, LIMIT) \ -static inline const char *parse_hex_ ## NAME \ - (const char *buf, size_t len, TYPE *value, int *status) \ -{ \ - int status_ = 0; \ - uint64_t x; \ - \ - if (!status) { \ - status = &status_; \ - } \ - buf = parse_hex_integer(buf, len, &x, status); \ - switch (*status) { \ - case PARSE_INTEGER_UNSIGNED: \ - if (x <= LIMIT) { \ - *value = (TYPE)x; \ - return buf; \ - } \ - *status = PARSE_INTEGER_OVERFLOW; \ - return 0; \ - case PARSE_INTEGER_SIGNED: \ - *status = PARSE_INTEGER_UNDERFLOW; \ - return 0; \ - default: \ - return buf; \ - } \ -} - -/* This assumes two's complement. */ -#define __portable_define_parse_signed(NAME, TYPE, LIMIT) \ -static inline const char *parse_ ## NAME \ - (const char *buf, size_t len, TYPE *value, int *status) \ -{ \ - int status_ = 0; \ - uint64_t x; \ - \ - if (!status) { \ - status = &status_; \ - } \ - buf = parse_integer(buf, len, &x, status); \ - switch (*status) { \ - case PARSE_INTEGER_UNSIGNED: \ - if (x <= LIMIT) { \ - *value = (TYPE)x; \ - return buf; \ - } \ - *status = PARSE_INTEGER_OVERFLOW; \ - return 0; \ - case PARSE_INTEGER_SIGNED: \ - if (x <= (uint64_t)(LIMIT) + 1) { \ - *value = (TYPE)-(int64_t)x; \ - return buf; \ - } \ - *status = PARSE_INTEGER_UNDERFLOW; \ - return 0; \ - default: \ - return buf; \ - } \ -} - -/* This assumes two's complement. */ -#define __portable_define_parse_hex_signed(NAME, TYPE, LIMIT) \ -static inline const char *parse_hex_ ## NAME \ - (const char *buf, size_t len, TYPE *value, int *status) \ -{ \ - int status_ = 0; \ - uint64_t x; \ - \ - if (!status) { \ - status = &status_; \ - } \ - buf = parse_hex_integer(buf, len, &x, status); \ - switch (*status) { \ - case PARSE_INTEGER_UNSIGNED: \ - if (x <= LIMIT) { \ - *value = (TYPE)x; \ - return buf; \ - } \ - *status = PARSE_INTEGER_OVERFLOW; \ - return 0; \ - case PARSE_INTEGER_SIGNED: \ - if (x <= (uint64_t)(LIMIT) + 1) { \ - *value = (TYPE)-(int64_t)x; \ - return buf; \ - } \ - *status = PARSE_INTEGER_UNDERFLOW; \ - return 0; \ - default: \ - return buf; \ - } \ -} - -static inline const char *parse_uint64(const char *buf, size_t len, uint64_t *value, int *status) -{ - buf = parse_integer(buf, len, value, status); - if (*status == PARSE_INTEGER_SIGNED) { - *status = PARSE_INTEGER_UNDERFLOW; - return 0; - } - return buf; -} - -static inline const char *parse_hex_uint64(const char *buf, size_t len, uint64_t *value, int *status) -{ - buf = parse_hex_integer(buf, len, value, status); - if (*status == PARSE_INTEGER_SIGNED) { - *status = PARSE_INTEGER_UNDERFLOW; - return 0; - } - return buf; -} - -__portable_define_parse_signed(int64, int64_t, INT64_MAX) -__portable_define_parse_signed(int32, int32_t, INT32_MAX) -__portable_define_parse_unsigned(uint16, uint16_t, UINT16_MAX) -__portable_define_parse_signed(int16, int16_t, INT16_MAX) -__portable_define_parse_unsigned(uint8, uint8_t, UINT8_MAX) -__portable_define_parse_signed(int8, int8_t, INT8_MAX) - -__portable_define_parse_hex_signed(int64, int64_t, INT64_MAX) -__portable_define_parse_hex_signed(int32, int32_t, INT32_MAX) -__portable_define_parse_hex_unsigned(uint16, uint16_t, UINT16_MAX) -__portable_define_parse_hex_signed(int16, int16_t, INT16_MAX) -__portable_define_parse_hex_unsigned(uint8, uint8_t, UINT8_MAX) -__portable_define_parse_hex_signed(int8, int8_t, INT8_MAX) - -__portable_define_parse_unsigned(ushort, unsigned short, USHRT_MAX) -__portable_define_parse_signed(short, short, SHRT_MAX) -__portable_define_parse_unsigned(uint, unsigned int, UINT_MAX) -__portable_define_parse_signed(int, int, INT_MAX) -__portable_define_parse_unsigned(ulong, unsigned long, ULONG_MAX) -__portable_define_parse_signed(long, unsigned long, LONG_MAX) - -__portable_define_parse_hex_unsigned(ushort, unsigned short, USHRT_MAX) -__portable_define_parse_hex_signed(short, short, SHRT_MAX) -__portable_define_parse_hex_unsigned(uint, unsigned int, UINT_MAX) -__portable_define_parse_hex_signed(int, int, INT_MAX) -__portable_define_parse_hex_unsigned(ulong, unsigned long, ULONG_MAX) -__portable_define_parse_hex_signed(long, unsigned long, LONG_MAX) - -#ifdef __cplusplus -} -#endif - -#endif /* PPARSEINT_H */ diff --git a/nostrdb/flatcc/portable/pprintfp.h b/nostrdb/flatcc/portable/pprintfp.h deleted file mode 100644 index c2e5c0750c..0000000000 --- a/nostrdb/flatcc/portable/pprintfp.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef PPRINTFP_H -#define PPRINTFP_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define PDIAGNOSTIC_IGNORE_UNUSED_FUNCTION -#include "pdiagnostic_push.h" - -#ifndef PORTABLE_USE_GRISU3 -#define PORTABLE_USE_GRISU3 1 -#endif - - -#if PORTABLE_USE_GRISU3 -#include "grisu3_print.h" -#endif - -#ifdef grisu3_print_double_is_defined -/* Currently there is not special support for floats. */ -#define print_float(n, p) grisu3_print_double((float)(n), (p)) -#define print_double(n, p) grisu3_print_double((double)(n), (p)) -#else -#include -#define print_float(n, p) sprintf(p, "%.9g", (float)(n)) -#define print_double(n, p) sprintf(p, "%.17g", (double)(n)) -#endif - -#define print_hex_float(n, p) sprintf(p, "%a", (float)(n)) -#define print_hex_double(n, p) sprintf(p, "%a", (double)(n)) - -#include "pdiagnostic_pop.h" - -#ifdef __cplusplus -} -#endif - -#endif /* PPRINTFP_H */ diff --git a/nostrdb/flatcc/portable/pprintint.h b/nostrdb/flatcc/portable/pprintint.h deleted file mode 100644 index d05f376117..0000000000 --- a/nostrdb/flatcc/portable/pprintint.h +++ /dev/null @@ -1,628 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2016 Mikkel F. Jørgensen, dvide.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * - * Fast printing of (u)int8/16/32/64_t, (u)int, (u)long. - * - * Functions take for the - * - * int print_(type value, char *buf); - * - * and returns number of characters printed, excluding trailing '\0' - * which is also printed. Prints at most 21 characters including zero- - * termination. - * - * The function `print_bool` is a bit different - it simply prints "true\0" for - * non-zero integers, and "false\0" otherwise. - * - * The general algorithm is in-place formatting using binary search log10 - * followed by duff device loop unrolling div / 100 stages. - * - * The simpler post copy algorithm also provided for fmt_(u)int uses a - * temp buffer and loops over div/100 and post copy to target buffer. - * - * - * Benchmarks on core-i7, 2.2GHz, 64-bit clang/OS-X -O2: - * - * print_int64: avg 15ns for values between INT64_MIN + (10^7/2 .. 10^7/2) - * print_int64: avg 11ns for values between 10^9 + (0..10,000,000). - * print_int32: avg 7ns for values cast from INT64_MIN + (10^7/2 .. 10^7/2) - * print_int32: avg 7ns for values between 10^9 + (0..10,000,000). - * print_int64: avg 13ns for values between 10^16 + (0..10,000,000). - * print_int64: avg 5ns for values between 0 and 10,000,000. - * print_int32: avg 5ns for values between 0 and 10,000,000. - * print_int16: avg 10ns for values cast from 0 and 10,000,000. - * print_int8: avg 4ns for values cast from 0 and 10,000,000. - * - * Post copy algorithm: - * print_int: avg 12ns for values between INT64_MIN + (10^7/2 .. 10^7/2) - * print_int: avg 14ns for values between 10^9 + (0..10,000,000). - * print_long: avg 29ns for values between INT64_MIN + (10^7/2 .. 10^7/2) - * - * The post copy algorithm is nearly half as fast as the in-place - * algorithm, but can also be faster occasionally - possibly because the - * optimizer being able to skip the copy step. - */ - -#ifndef PPRINTINT_H -#define PPRINTINT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef UINT8_MAX -#include -#endif - -#include "pattributes.h" /* fallthrough */ - -#define PDIAGNOSTIC_IGNORE_UNUSED_FUNCTION -#include "pdiagnostic_push.h" - -static int print_bool(int n, char *p); - -static int print_uint8(uint8_t n, char *p); -static int print_uint16(uint16_t n, char *p); -static int print_uint32(uint32_t n, char *p); -static int print_uint64(uint64_t n, char *p); -static int print_int8(int8_t n, char *p); -static int print_int16(int16_t n, char *p); -static int print_int32(int32_t n, char *p); -static int print_int64(int64_t n, char *p); - -/* - * Uses slightly slower, but more compact alogrithm - * that is not hardcoded to implementation size. - * Other types may be defined using macros below. - */ -static int print_ulong(unsigned long n, char *p); -static int print_uint(unsigned int n, char *p); -static int print_int(int n, char *p); -static int print_long(long n, char *p); - - -#if defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64) -#define __print_unaligned_copy_16(p, q) (*(uint16_t*)(p) = *(uint16_t*)(q)) -#else -#define __print_unaligned_copy_16(p, q) \ - ((((uint8_t*)(p))[0] = ((uint8_t*)(q))[0]), \ - (((uint8_t*)(p))[1] = ((uint8_t*)(q))[1])) -#endif - -static const char __print_digit_pairs[] = - "0001020304050607080910111213141516171819" - "2021222324252627282930313233343536373839" - "4041424344454647484950515253545556575859" - "6061626364656667686970717273747576777879" - "8081828384858687888990919293949596979899"; - -#define __print_stage() \ - p -= 2; \ - dp = __print_digit_pairs + (n % 100) * 2; \ - n /= 100; \ - __print_unaligned_copy_16(p, dp); - -#define __print_long_stage() \ - __print_stage() \ - __print_stage() - -#define __print_short_stage() \ - *--p = (n % 10) + '0'; \ - n /= 10; - -static int print_bool(int n, char *buf) -{ - if (n) { - memcpy(buf, "true\0", 5); - return 4; - } else { - memcpy(buf, "false\0", 6); - return 5; - } -} - -static int print_uint8(uint8_t n, char *p) -{ - const char *dp; - - if (n >= 100) { - p += 3; - *p = '\0'; - __print_stage(); - p[-1] = (char)n + '0'; - return 3; - } - if (n >= 10) { - p += 2; - *p = '\0'; - __print_stage(); - return 2; - } - p[1] = '\0'; - p[0] = (char)n + '0'; - return 1; -} - -static int print_uint16(uint16_t n, char *p) -{ - int k = 0; - const char *dp; - - if (n >= 1000) { - if(n >= 10000) { - k = 5; - } else { - k = 4; - } - } else { - if(n >= 100) { - k = 3; - } else if(n >= 10) { - k = 2; - } else { - k = 1; - } - } - p += k; - *p = '\0'; - if (k & 1) { - switch (k) { - case 5: - __print_stage(); - pattribute(fallthrough); - case 3: - __print_stage(); - pattribute(fallthrough); - case 1: - p[-1] = (char)n + '0'; - } - } else { - switch (k) { - case 4: - __print_stage(); - pattribute(fallthrough); - case 2: - __print_stage(); - } - } - return k; -} - -static int print_uint32(uint32_t n, char *p) -{ - int k = 0; - const char *dp; - - if(n >= 10000UL) { - if(n >= 10000000UL) { - if(n >= 1000000000UL) { - k = 10; - } else if(n >= 100000000UL) { - k = 9; - } else { - k = 8; - } - } else { - if(n >= 1000000UL) { - k = 7; - } else if(n >= 100000UL) { - k = 6; - } else { - k = 5; - } - } - } else { - if(n >= 100UL) { - if(n >= 1000UL) { - k = 4; - } else { - k = 3; - } - } else { - if(n >= 10UL) { - k = 2; - } else { - k = 1UL; - } - } - } - p += k; - *p = '\0'; - if (k & 1) { - switch (k) { - case 9: - __print_stage(); - pattribute(fallthrough); - case 7: - __print_stage(); - pattribute(fallthrough); - case 5: - __print_stage(); - pattribute(fallthrough); - case 3: - __print_stage(); - pattribute(fallthrough); - case 1: - p[-1] = (char)n + '0'; - } - } else { - switch (k) { - case 10: - __print_stage(); - pattribute(fallthrough); - case 8: - __print_stage(); - pattribute(fallthrough); - case 6: - __print_stage(); - pattribute(fallthrough); - case 4: - __print_stage(); - pattribute(fallthrough); - case 2: - __print_stage(); - } - } - return k; -} - -static int print_uint64(uint64_t n, char *p) -{ - int k = 0; - const char *dp; - const uint64_t x = 1000000000ULL; - - if (n < x) { - return print_uint32((uint32_t)n, p); - } - if(n >= 10000ULL * x) { - if(n >= 10000000ULL * x) { - if(n >= 1000000000ULL * x) { - if (n >= 10000000000ULL * x) { - k = 11 + 9; - } else { - k = 10 + 9; - } - } else if(n >= 100000000ULL * x) { - k = 9 + 9; - } else { - k = 8 + 9; - } - } else { - if(n >= 1000000ULL * x) { - k = 7 + 9; - } else if(n >= 100000ULL * x) { - k = 6 + 9; - } else { - k = 5 + 9; - } - } - } else { - if(n >= 100ULL * x) { - if(n >= 1000ULL * x) { - k = 4 + 9; - } else { - k = 3 + 9; - } - } else { - if(n >= 10ULL * x) { - k = 2 + 9; - } else { - k = 1 + 9; - } - } - } - p += k; - *p = '\0'; - if (k & 1) { - switch (k) { - case 19: - __print_stage(); - pattribute(fallthrough); - case 17: - __print_stage(); - pattribute(fallthrough); - case 15: - __print_stage(); - pattribute(fallthrough); - case 13: - __print_stage(); - pattribute(fallthrough); - case 11: - __print_stage() - __print_short_stage(); - } - } else { - switch (k) { - case 20: - __print_stage(); - pattribute(fallthrough); - case 18: - __print_stage(); - pattribute(fallthrough); - case 16: - __print_stage(); - pattribute(fallthrough); - case 14: - __print_stage(); - pattribute(fallthrough); - case 12: - __print_stage(); - pattribute(fallthrough); - case 10: - __print_stage(); - } - } - __print_long_stage() - __print_long_stage() - return k; -} - -static int print_int8(int8_t n, char *p) -{ - int sign; - - if ((sign = n < 0)) { - *p++ = '-'; - n = -n; - } - return print_uint8((uint8_t)n, p) + sign; -} - -static int print_int16(int16_t n, char *p) -{ - int sign; - - if ((sign = n < 0)) { - *p++ = '-'; - n = -n; - } - return print_uint16((uint16_t)n, p) + sign; -} - -static int print_int32(int32_t n, char *p) -{ - int sign; - - if ((sign = n < 0)) { - *p++ = '-'; - n = -n; - } - return print_uint32((uint32_t)n, p) + sign; -} - -static int print_int64(int64_t n, char *p) -{ - int sign; - - if ((sign = n < 0)) { - *p++ = '-'; - n = -n; - } - return print_uint64((uint64_t)n, p) + sign; -} - -#define __define_print_int_simple(NAME, UNAME, T, UT) \ -static int UNAME(UT n, char *buf) \ -{ \ - char tmp[20]; \ - char* p = tmp + 20; \ - char* q = p; \ - unsigned int k, m; \ - \ - while (n >= 100) { \ - p -= 2; \ - m = (unsigned int)(n % 100) * 2; \ - n /= 100; \ - __print_unaligned_copy_16(p, __print_digit_pairs + m); \ - } \ - p -= 2; \ - m = (unsigned int)n * 2; \ - __print_unaligned_copy_16(p, __print_digit_pairs + m); \ - if (n < 10) { \ - ++p; \ - } \ - k = (unsigned int)(q - p); \ - while (p != q) { \ - *buf++ = *p++; \ - } \ - *buf = '\0'; \ - return (int)k; \ -} \ - \ -static int NAME(T n, char *buf) \ -{ \ - int sign = n < 0; \ - \ - if (sign) { \ - *buf++ = '-'; \ - n = -n; \ - } \ - return UNAME((UT)n, buf) + sign; \ -} - -__define_print_int_simple(print_int, print_uint, int, unsigned int) -__define_print_int_simple(print_long, print_ulong, long, unsigned long) - -#ifdef PPRINTINT_BENCH -int main() { - int64_t count = 10000000; /* 10^7 */ -#if 0 - int64_t base = 0; - int64_t base = 10000000000000000; /* 10^16 */ - int64_t base = 1000000000; /* 10^9 */ -#endif - int64_t base = INT64_MIN - count/2; - char buf[100]; - int i, k = 0, n = 0; - for (i = 0; i < count; i++) { - k = print_int64(i + base, buf); - n += buf[0] + buf[k - 1]; - } - return n; -} -/* Call with time on executable, multiply time in seconds by 100 to get time unit in ns/number. */ -#endif /* PPRINTINT_BENCH */ - -#ifdef PPRINTINT_TEST - -#include -#include - -int main() -{ - char buf[21]; - int failed = 0; - int k; - - k = print_uint64(UINT64_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("18446744073709551615", buf)) { - printf("UINT64_MAX didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_int64(INT64_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("9223372036854775807", buf)) { - printf("INT64_MAX didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_int64(INT64_MIN, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("-9223372036854775808", buf)) { - printf("INT64_MIN didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_uint32(UINT32_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("4294967295", buf)) { - printf("UINT32_MAX didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_int32(INT32_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("2147483647", buf)) { - printf("INT32_MAX didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_int32(INT32_MIN, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("-2147483648", buf)) { - printf("INT32_MIN didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_uint16(UINT16_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("65535", buf)) { - printf("UINT16_MAX didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_int16(INT16_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("32767", buf)) { - printf("INT16_MAX didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_int16(INT16_MIN, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("-32768", buf)) { - printf("INT16_MIN didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_uint8(UINT8_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("255", buf)) { - printf("INT8_MAX didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_int8(INT8_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("127", buf)) { - printf("INT8_MAX didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_int8(INT8_MIN, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("-128", buf)) { - printf("INT8_MIN didn't print correctly, got:\n'%s'\n", buf); - ++failed; - } - k = print_int(INT32_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("2147483647", buf)) { - printf("INT32_MAX didn't print correctly with k = print_int, got:\n'%s'\n", buf); - ++failed; - } - k = print_int(INT32_MIN, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("-2147483648", buf)) { - printf("INT32_MIN didn't print correctly k = print_int, got:\n'%s'\n", buf); - ++failed; - } - k = print_long(INT32_MAX, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("2147483647", buf)) { - printf("INT32_MAX didn't print correctly with fmt_long, got:\n'%s'\n", buf); - ++failed; - } - k = print_long(INT32_MIN, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("-2147483648", buf)) { - printf("INT32_MIN didn't print correctly fmt_long, got:\n'%s'\n", buf); - ++failed; - } - k = print_bool(1, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("true", buf) { - printf("1 didn't print 'true' as expected, got:\n'%s'\n", buf); - ++failed; - } - k = print_bool(-1, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("true", buf) { - printf("-1 didn't print 'true' as expected, got:\n'%s'\n", buf); - ++failed; - } - k = print_bool(, buf); - if (strlen(buf) != k) printf("length error\n"); - if (strcmp("false", buf) { - printf("0 didn't print 'false' as expected, got:\n'%s'\n", buf); - ++failed; - } - if (failed) { - printf("FAILED\n"); - return -1; - } - printf("SUCCESS\n"); - return 0; -} -#endif /* PPRINTINT_TEST */ - -#include "pdiagnostic_pop.h" - -#ifdef __cplusplus -} -#endif - -#endif /* PPRINTINT_H */ diff --git a/nostrdb/flatcc/portable/pstatic_assert.h b/nostrdb/flatcc/portable/pstatic_assert.h deleted file mode 100644 index 24d5634e61..0000000000 --- a/nostrdb/flatcc/portable/pstatic_assert.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef PSTATIC_ASSERT_H -#define PSTATIC_ASSERT_H - -#include - -/* Handle clang */ -#ifndef __has_feature - #define __has_feature(x) 0 -#endif - -#if defined(static_assert) -#ifndef __static_assert_is_defined -#define __static_assert_is_defined 1 -#endif -#endif - -/* Handle static_assert as a keyword in C++ and compiler specifics. */ -#if !defined(__static_assert_is_defined) - -#if defined(__cplusplus) - -#if __cplusplus >= 201103L -#define __static_assert_is_defined 1 -#elif __has_feature(cxx_static_assert) -#define __static_assert_is_defined 1 -#elif defined(_MSC_VER) && (_MSC_VER >= 1600) -#define __static_assert_is_defined 1 -#endif - -#else - -#if defined(_MSC_VER) && (_MSC_VER >= 1600) -#define __static_assert_is_defined 1 -#elif __has_feature(c_static_assert) -#define static_assert(pred, msg) _Static_assert(pred, msg) -#define __static_assert_is_defined 1 -#elif defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) -/* In case the clib headers are not compliant. */ -#define static_assert(pred, msg) _Static_assert(pred, msg) -#define __static_assert_is_defined 1 -#endif - -#endif /* __cplusplus */ -#endif /* __static_assert_is_defined */ - - -#if !defined(__static_assert_is_defined) - -#define __PSTATIC_ASSERT_CONCAT_(a, b) static_assert_scope_##a##_line_##b -#define __PSTATIC_ASSERT_CONCAT(a, b) __PSTATIC_ASSERT_CONCAT_(a, b) -#ifdef __COUNTER__ -#define static_assert(e, msg) enum { __PSTATIC_ASSERT_CONCAT(__COUNTER__, __LINE__) = 1/(!!(e)) } -#else -#include "pstatic_assert_scope.h" -#define static_assert(e, msg) enum { __PSTATIC_ASSERT_CONCAT(__PSTATIC_ASSERT_COUNTER, __LINE__) = 1/(int)(!!(e)) } -#endif - -#define __static_assert_is_defined 1 - -#endif /* __static_assert_is_defined */ - -#endif /* PSTATIC_ASSERT_H */ - -/* Update scope counter outside of include guard. */ -#ifdef __PSTATIC_ASSERT_COUNTER -#include "pstatic_assert_scope.h" -#endif diff --git a/nostrdb/flatcc/portable/pstatic_assert_scope.h b/nostrdb/flatcc/portable/pstatic_assert_scope.h deleted file mode 100644 index 71a0c29888..0000000000 --- a/nostrdb/flatcc/portable/pstatic_assert_scope.h +++ /dev/null @@ -1,280 +0,0 @@ -/* - * january, 2017, ported to portable library by mikkelfj. - * Based on dbgtools static assert counter, but with renamed macros. - */ - -/* - dbgtools - platform independent wrapping of "nice to have" debug functions. - - version 0.1, october, 2013 - - https://github.com/wc-duck/dbgtools - - Copyright (C) 2013- Fredrik Kihlander - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Fredrik Kihlander -*/ - -/** - * Auto-generated header implementing a counter that increases by each include of the file. - * - * This header will define the macro __PSTATIC_ASSERT_COUNTER to be increased for each inclusion of the file. - * - * It has been generated with 3 amount of digits resulting in the counter wrapping around after - * 10000 inclusions. - * - * Usage: - * - * #include "this_header.h" - * int a = __PSTATIC_ASSERT_COUNTER; // 0 - * #include "this_header.h" - * int b = __PSTATIC_ASSERT_COUNTER; // 1 - * #include "this_header.h" - * int c = __PSTATIC_ASSERT_COUNTER; // 2 - * #include "this_header.h" - * int d = __PSTATIC_ASSERT_COUNTER; // 3 - */ - -#ifndef __PSTATIC_ASSERT_COUNTER -# define __PSTATIC_ASSERT_COUNTER_0 0 -# define __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_D1_0 -# define __PSTATIC_ASSERT_COUNTER_D2_0 -# define __PSTATIC_ASSERT_COUNTER_D3_0 -#endif /* __PSTATIC_ASSERT_COUNTER */ - -#if !defined( __PSTATIC_ASSERT_COUNTER_D0_0 ) -# define __PSTATIC_ASSERT_COUNTER_D0_0 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 0 -#elif !defined( __PSTATIC_ASSERT_COUNTER_D0_1 ) -# define __PSTATIC_ASSERT_COUNTER_D0_1 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 1 -#elif !defined( __PSTATIC_ASSERT_COUNTER_D0_2 ) -# define __PSTATIC_ASSERT_COUNTER_D0_2 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 2 -#elif !defined( __PSTATIC_ASSERT_COUNTER_D0_3 ) -# define __PSTATIC_ASSERT_COUNTER_D0_3 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 3 -#elif !defined( __PSTATIC_ASSERT_COUNTER_D0_4 ) -# define __PSTATIC_ASSERT_COUNTER_D0_4 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 4 -#elif !defined( __PSTATIC_ASSERT_COUNTER_D0_5 ) -# define __PSTATIC_ASSERT_COUNTER_D0_5 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 5 -#elif !defined( __PSTATIC_ASSERT_COUNTER_D0_6 ) -# define __PSTATIC_ASSERT_COUNTER_D0_6 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 6 -#elif !defined( __PSTATIC_ASSERT_COUNTER_D0_7 ) -# define __PSTATIC_ASSERT_COUNTER_D0_7 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 7 -#elif !defined( __PSTATIC_ASSERT_COUNTER_D0_8 ) -# define __PSTATIC_ASSERT_COUNTER_D0_8 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 8 -#elif !defined( __PSTATIC_ASSERT_COUNTER_D0_9 ) -# define __PSTATIC_ASSERT_COUNTER_D0_9 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 9 -#else -# undef __PSTATIC_ASSERT_COUNTER_D0_1 -# undef __PSTATIC_ASSERT_COUNTER_D0_2 -# undef __PSTATIC_ASSERT_COUNTER_D0_3 -# undef __PSTATIC_ASSERT_COUNTER_D0_4 -# undef __PSTATIC_ASSERT_COUNTER_D0_5 -# undef __PSTATIC_ASSERT_COUNTER_D0_6 -# undef __PSTATIC_ASSERT_COUNTER_D0_7 -# undef __PSTATIC_ASSERT_COUNTER_D0_8 -# undef __PSTATIC_ASSERT_COUNTER_D0_9 -# undef __PSTATIC_ASSERT_COUNTER_0 -# define __PSTATIC_ASSERT_COUNTER_0 0 -# if !defined( __PSTATIC_ASSERT_COUNTER_D1_0 ) -# define __PSTATIC_ASSERT_COUNTER_D1_0 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 0 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D1_1 ) -# define __PSTATIC_ASSERT_COUNTER_D1_1 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 1 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D1_2 ) -# define __PSTATIC_ASSERT_COUNTER_D1_2 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 2 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D1_3 ) -# define __PSTATIC_ASSERT_COUNTER_D1_3 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 3 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D1_4 ) -# define __PSTATIC_ASSERT_COUNTER_D1_4 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 4 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D1_5 ) -# define __PSTATIC_ASSERT_COUNTER_D1_5 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 5 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D1_6 ) -# define __PSTATIC_ASSERT_COUNTER_D1_6 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 6 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D1_7 ) -# define __PSTATIC_ASSERT_COUNTER_D1_7 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 7 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D1_8 ) -# define __PSTATIC_ASSERT_COUNTER_D1_8 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 8 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D1_9 ) -# define __PSTATIC_ASSERT_COUNTER_D1_9 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 9 -# else -# undef __PSTATIC_ASSERT_COUNTER_D1_1 -# undef __PSTATIC_ASSERT_COUNTER_D1_2 -# undef __PSTATIC_ASSERT_COUNTER_D1_3 -# undef __PSTATIC_ASSERT_COUNTER_D1_4 -# undef __PSTATIC_ASSERT_COUNTER_D1_5 -# undef __PSTATIC_ASSERT_COUNTER_D1_6 -# undef __PSTATIC_ASSERT_COUNTER_D1_7 -# undef __PSTATIC_ASSERT_COUNTER_D1_8 -# undef __PSTATIC_ASSERT_COUNTER_D1_9 -# undef __PSTATIC_ASSERT_COUNTER_1 -# define __PSTATIC_ASSERT_COUNTER_1 0 -# if !defined( __PSTATIC_ASSERT_COUNTER_D2_0 ) -# define __PSTATIC_ASSERT_COUNTER_D2_0 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 0 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D2_1 ) -# define __PSTATIC_ASSERT_COUNTER_D2_1 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 1 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D2_2 ) -# define __PSTATIC_ASSERT_COUNTER_D2_2 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 2 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D2_3 ) -# define __PSTATIC_ASSERT_COUNTER_D2_3 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 3 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D2_4 ) -# define __PSTATIC_ASSERT_COUNTER_D2_4 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 4 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D2_5 ) -# define __PSTATIC_ASSERT_COUNTER_D2_5 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 5 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D2_6 ) -# define __PSTATIC_ASSERT_COUNTER_D2_6 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 6 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D2_7 ) -# define __PSTATIC_ASSERT_COUNTER_D2_7 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 7 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D2_8 ) -# define __PSTATIC_ASSERT_COUNTER_D2_8 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 8 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D2_9 ) -# define __PSTATIC_ASSERT_COUNTER_D2_9 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 9 -# else -# undef __PSTATIC_ASSERT_COUNTER_D2_1 -# undef __PSTATIC_ASSERT_COUNTER_D2_2 -# undef __PSTATIC_ASSERT_COUNTER_D2_3 -# undef __PSTATIC_ASSERT_COUNTER_D2_4 -# undef __PSTATIC_ASSERT_COUNTER_D2_5 -# undef __PSTATIC_ASSERT_COUNTER_D2_6 -# undef __PSTATIC_ASSERT_COUNTER_D2_7 -# undef __PSTATIC_ASSERT_COUNTER_D2_8 -# undef __PSTATIC_ASSERT_COUNTER_D2_9 -# undef __PSTATIC_ASSERT_COUNTER_2 -# define __PSTATIC_ASSERT_COUNTER_2 0 -# if !defined( __PSTATIC_ASSERT_COUNTER_D3_0 ) -# define __PSTATIC_ASSERT_COUNTER_D3_0 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 0 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D3_1 ) -# define __PSTATIC_ASSERT_COUNTER_D3_1 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 1 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D3_2 ) -# define __PSTATIC_ASSERT_COUNTER_D3_2 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 2 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D3_3 ) -# define __PSTATIC_ASSERT_COUNTER_D3_3 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 3 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D3_4 ) -# define __PSTATIC_ASSERT_COUNTER_D3_4 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 4 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D3_5 ) -# define __PSTATIC_ASSERT_COUNTER_D3_5 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 5 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D3_6 ) -# define __PSTATIC_ASSERT_COUNTER_D3_6 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 6 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D3_7 ) -# define __PSTATIC_ASSERT_COUNTER_D3_7 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 7 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D3_8 ) -# define __PSTATIC_ASSERT_COUNTER_D3_8 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 8 -# elif !defined( __PSTATIC_ASSERT_COUNTER_D3_9 ) -# define __PSTATIC_ASSERT_COUNTER_D3_9 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 9 -# else -# undef __PSTATIC_ASSERT_COUNTER_D3_1 -# undef __PSTATIC_ASSERT_COUNTER_D3_2 -# undef __PSTATIC_ASSERT_COUNTER_D3_3 -# undef __PSTATIC_ASSERT_COUNTER_D3_4 -# undef __PSTATIC_ASSERT_COUNTER_D3_5 -# undef __PSTATIC_ASSERT_COUNTER_D3_6 -# undef __PSTATIC_ASSERT_COUNTER_D3_7 -# undef __PSTATIC_ASSERT_COUNTER_D3_8 -# undef __PSTATIC_ASSERT_COUNTER_D3_9 -# undef __PSTATIC_ASSERT_COUNTER_3 -# define __PSTATIC_ASSERT_COUNTER_3 0 -# endif -# endif -# endif -#endif - -#define __PSTATIC_ASSERT_COUNTER_JOIN_DIGITS_MACRO_(digit0,digit1,digit2,digit3) digit0##digit1##digit2##digit3 -#define __PSTATIC_ASSERT_COUNTER_JOIN_DIGITS_MACRO(digit0,digit1,digit2,digit3) __PSTATIC_ASSERT_COUNTER_JOIN_DIGITS_MACRO_(digit0,digit1,digit2,digit3) -#undef __PSTATIC_ASSERT_COUNTER -#define __PSTATIC_ASSERT_COUNTER __PSTATIC_ASSERT_COUNTER_JOIN_DIGITS_MACRO(__PSTATIC_ASSERT_COUNTER_3,__PSTATIC_ASSERT_COUNTER_2,__PSTATIC_ASSERT_COUNTER_1,__PSTATIC_ASSERT_COUNTER_0) diff --git a/nostrdb/flatcc/portable/pstdalign.h b/nostrdb/flatcc/portable/pstdalign.h deleted file mode 100644 index 169fe27ed9..0000000000 --- a/nostrdb/flatcc/portable/pstdalign.h +++ /dev/null @@ -1,162 +0,0 @@ -#ifndef PSTDALIGN_H -#define PSTDALIGN_H - -/* - * NOTE: aligned_alloc is defined via paligned_alloc.h - * and requires aligned_free to be fully portable although - * free also works on C11 and platforms with posix_memalign. - * - * NOTE: C++11 defines alignas as a keyword but then also defines - * __alignas_is_defined. - * - * C++14 does not define __alignas_is_defined, at least sometimes. - * - * GCC 8.3 reverts on this and makes C++11 behave the same as C++14 - * preventing a simple __cplusplus version check from working. - * - * Clang C++ without std=c++11 or std=c++14 does define alignas - * but does so incorrectly wrt. C11 and C++11 semantics because - * `alignas(4) float x;` is not recognized. - * To fix such issues, either move to a std version, or - * include a working stdalign.h for the given compiler before - * this file. - * - * newlib defines _Alignas and _Alignof in sys/cdefs but rely on - * gcc version for which can lead to conflicts if - * stdalign is not included. - * - * newlibs need for conflicts with broken C++ stdalign - * but this can be fixed be using std=C++11 or newer. - * - * MSVC does not support at least up to MSVC 2015, - * but does appear to support alignas and alignof keywords in - * recent standard C++. - * - * TCC only supports alignas with a numeric argument like - * `alignas(4)`, but not `alignas(float)`. - * - * If stdalign.h is supported but heuristics in this file are - * insufficient to detect this, try including manually - * or define HAVE_STDALIGN_H. - */ - -/* https://github.com/dvidelabs/flatcc/issues/130 */ -#ifndef __alignas_is_defined -#if defined(__cplusplus) -#if __cplusplus == 201103 && !defined(__clang__) && ((__GNUC__ > 8) || (__GNUC__ == 8 && __GNUC_MINOR__ >= 3)) -#define __alignas_is_defined 1 -#define __alignof_is_defined 1 -#include -#endif -#endif -#endif - -/* Allow for alternative solution to be included first. */ -#ifndef __alignas_is_defined - -#ifdef __cplusplus -#if defined(PORTABLE_PATCH_CPLUSPLUS_STDALIGN) -#include -#undef alignas -#define alignas(t) __attribute__((__aligned__(t))) -#endif -#endif - -#if !defined(PORTABLE_HAS_INCLUDE_STDALIGN) -#if defined(__has_include) -#if __has_include() -#define PORTABLE_HAS_INCLUDE_STDALIGN 1 -#else -#define PORTABLE_HAS_INCLUDE_STDALIGN 0 -#endif -#endif -#endif - - /* https://lists.gnu.org/archive/html/bug-gnulib/2015-08/msg00003.html */ -#if defined(__cplusplus) -#if !defined(_MSC_VER) -#include -#endif -#if __cplusplus > 201103 -#define __alignas_is_defined 1 -#define __alignof_is_defined 1 -#endif -#elif PORTABLE_HAS_INCLUDE_STDALIGN -#include -#elif !defined(__clang__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) -#include -#elif defined(HAVE_STDALIGN_H) -#include -#endif - -#endif /* __alignas_is_defined */ - -#ifndef __alignas_is_defined - -#ifdef __cplusplus -extern "C" { -#endif - -#if (!defined(__clang__) && defined(__GNUC__) && \ - ((__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 7))) -#undef PORTABLE_C11_STDALIGN_MISSING -#define PORTABLE_C11_STDALIGN_MISSING -#endif - -#if defined(__IBMC__) -#undef PORTABLE_C11_STDALIGN_MISSING -#define PORTABLE_C11_STDALIGN_MISSING -#endif - -#if ((defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) && \ - !defined(PORTABLE_C11_STDALIGN_MISSING)) -/* C11 or newer */ -#include -#else -#if defined(__GNUC__) || defined(__IBM_ALIGNOF__) || defined(__clang__) - -#ifndef _Alignas -#define _Alignas(t) __attribute__((__aligned__(t))) -#endif - -#ifndef _Alignof -#define _Alignof(t) __alignof__(t) -#endif - -#elif defined(_MSC_VER) - -#define _Alignas(t) __declspec (align(t)) -#define _Alignof(t) __alignof(t) - -#elif defined(__TINYC__) - -/* Supports `_Alignas(integer-expression)`, but not `_Alignas(type)`. */ -#define _Alignas(t) __attribute__(aligned(t)) -#define _Alignof(t) __alignof__(t) - -#else -#error please update pstdalign.h with support for current compiler and library -#endif - -#endif /* __STDC__ */ - -#ifndef alignas -#define alignas _Alignas -#endif - -#ifndef alignof -#define alignof _Alignof -#endif - -#define __alignas_is_defined 1 -#define __alignof_is_defined 1 - -#ifdef __cplusplus -} -#endif - -#endif /* __alignas__is_defined */ - -#include "paligned_alloc.h" - -#endif /* PSTDALIGN_H */ diff --git a/nostrdb/flatcc/portable/pstdbool.h b/nostrdb/flatcc/portable/pstdbool.h deleted file mode 100644 index 28fc89c2c4..0000000000 --- a/nostrdb/flatcc/portable/pstdbool.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef PSTDBOOL_H -#define PSTDBOOL_H - -#if !defined(__cplusplus) && !__bool_true_false_are_defined && !defined(bool) && !defined(__STDBOOL_H) - -#ifdef HAVE_STDBOOL_H - -#include - -#elif (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) -/* C99 or newer */ - -#define bool _Bool -#define true 1 -#define false 0 -#define __bool_true_false_are_defined 1 - -#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) - -#define bool bool -#define true true -#define false false -#define __bool_true_false_are_defined 1 - -#else - -typedef unsigned char _Portable_bool; -#define bool _Portable_bool -#define true 1 -#define false 0 -#define __bool_true_false_are_defined 1 - -#endif - -#endif - -#endif /* PSTDBOOL_H */ diff --git a/nostrdb/flatcc/portable/pstdint.h b/nostrdb/flatcc/portable/pstdint.h deleted file mode 100644 index d522fed1b2..0000000000 --- a/nostrdb/flatcc/portable/pstdint.h +++ /dev/null @@ -1,898 +0,0 @@ -/* A portable stdint.h - **************************************************************************** - * BSD License: - **************************************************************************** - * - * Copyright (c) 2005-2016 Paul Hsieh - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - **************************************************************************** - * - * Version 0.1.15.2 - * - * The ANSI C standard committee, for the C99 standard, specified the - * inclusion of a new standard include file called stdint.h. This is - * a very useful and long desired include file which contains several - * very precise definitions for integer scalar types that is - * critically important for making portable several classes of - * applications including cryptography, hashing, variable length - * integer libraries and so on. But for most developers its likely - * useful just for programming sanity. - * - * The problem is that some compiler vendors chose to ignore the C99 - * standard and some older compilers have no opportunity to be updated. - * Because of this situation, simply including stdint.h in your code - * makes it unportable. - * - * So that's what this file is all about. Its an attempt to build a - * single universal include file that works on as many platforms as - * possible to deliver what stdint.h is supposed to. Even compilers - * that already come with stdint.h can use this file instead without - * any loss of functionality. A few things that should be noted about - * this file: - * - * 1) It is not guaranteed to be portable and/or present an identical - * interface on all platforms. The extreme variability of the - * ANSI C standard makes this an impossibility right from the - * very get go. Its really only meant to be useful for the vast - * majority of platforms that possess the capability of - * implementing usefully and precisely defined, standard sized - * integer scalars. Systems which are not intrinsically 2s - * complement may produce invalid constants. - * - * 2) There is an unavoidable use of non-reserved symbols. - * - * 3) Other standard include files are invoked. - * - * 4) This file may come in conflict with future platforms that do - * include stdint.h. The hope is that one or the other can be - * used with no real difference. - * - * 5) In the current verison, if your platform can't represent - * int32_t, int16_t and int8_t, it just dumps out with a compiler - * error. - * - * 6) 64 bit integers may or may not be defined. Test for their - * presence with the test: #ifdef INT64_MAX or #ifdef UINT64_MAX. - * Note that this is different from the C99 specification which - * requires the existence of 64 bit support in the compiler. If - * this is not defined for your platform, yet it is capable of - * dealing with 64 bits then it is because this file has not yet - * been extended to cover all of your system's capabilities. - * - * 7) (u)intptr_t may or may not be defined. Test for its presence - * with the test: #ifdef PTRDIFF_MAX. If this is not defined - * for your platform, then it is because this file has not yet - * been extended to cover all of your system's capabilities, not - * because its optional. - * - * 8) The following might not been defined even if your platform is - * capable of defining it: - * - * WCHAR_MIN - * WCHAR_MAX - * (u)int64_t - * PTRDIFF_MIN - * PTRDIFF_MAX - * (u)intptr_t - * - * 9) The following have not been defined: - * - * WINT_MIN - * WINT_MAX - * - * 10) The criteria for defining (u)int_least(*)_t isn't clear, - * except for systems which don't have a type that precisely - * defined 8, 16, or 32 bit types (which this include file does - * not support anyways). Default definitions have been given. - * - * 11) The criteria for defining (u)int_fast(*)_t isn't something I - * would trust to any particular compiler vendor or the ANSI C - * committee. It is well known that "compatible systems" are - * commonly created that have very different performance - * characteristics from the systems they are compatible with, - * especially those whose vendors make both the compiler and the - * system. Default definitions have been given, but its strongly - * recommended that users never use these definitions for any - * reason (they do *NOT* deliver any serious guarantee of - * improved performance -- not in this file, nor any vendor's - * stdint.h). - * - * 12) The following macros: - * - * PRINTF_INTMAX_MODIFIER - * PRINTF_INT64_MODIFIER - * PRINTF_INT32_MODIFIER - * PRINTF_INT16_MODIFIER - * PRINTF_LEAST64_MODIFIER - * PRINTF_LEAST32_MODIFIER - * PRINTF_LEAST16_MODIFIER - * PRINTF_INTPTR_MODIFIER - * - * are strings which have been defined as the modifiers required - * for the "d", "u" and "x" printf formats to correctly output - * (u)intmax_t, (u)int64_t, (u)int32_t, (u)int16_t, (u)least64_t, - * (u)least32_t, (u)least16_t and (u)intptr_t types respectively. - * PRINTF_INTPTR_MODIFIER is not defined for some systems which - * provide their own stdint.h. PRINTF_INT64_MODIFIER is not - * defined if INT64_MAX is not defined. These are an extension - * beyond what C99 specifies must be in stdint.h. - * - * In addition, the following macros are defined: - * - * PRINTF_INTMAX_HEX_WIDTH - * PRINTF_INT64_HEX_WIDTH - * PRINTF_INT32_HEX_WIDTH - * PRINTF_INT16_HEX_WIDTH - * PRINTF_INT8_HEX_WIDTH - * PRINTF_INTMAX_DEC_WIDTH - * PRINTF_INT64_DEC_WIDTH - * PRINTF_INT32_DEC_WIDTH - * PRINTF_INT16_DEC_WIDTH - * PRINTF_UINT8_DEC_WIDTH - * PRINTF_UINTMAX_DEC_WIDTH - * PRINTF_UINT64_DEC_WIDTH - * PRINTF_UINT32_DEC_WIDTH - * PRINTF_UINT16_DEC_WIDTH - * PRINTF_UINT8_DEC_WIDTH - * - * Which specifies the maximum number of characters required to - * print the number of that type in either hexadecimal or decimal. - * These are an extension beyond what C99 specifies must be in - * stdint.h. - * - * Compilers tested (all with 0 warnings at their highest respective - * settings): Borland Turbo C 2.0, WATCOM C/C++ 11.0 (16 bits and 32 - * bits), Microsoft Visual C++ 6.0 (32 bit), Microsoft Visual Studio - * .net (VC7), Intel C++ 4.0, GNU gcc v3.3.3 - * - * This file should be considered a work in progress. Suggestions for - * improvements, especially those which increase coverage are strongly - * encouraged. - * - * Acknowledgements - * - * The following people have made significant contributions to the - * development and testing of this file: - * - * Chris Howie - * John Steele Scott - * Dave Thorup - * John Dill - * Florian Wobbe - * Christopher Sean Morrison - * Mikkel Fahnoe Jorgensen - * - */ - -#include -#include -#include - -/* - * For gcc with _STDINT_H, fill in the PRINTF_INT*_MODIFIER macros, and - * do nothing else. On the Mac OS X version of gcc this is _STDINT_H_. - */ - -#if ((defined(_MSC_VER) && _MSC_VER >= 1600) || (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined (__WATCOMC__) && (defined (_STDINT_H_INCLUDED) || __WATCOMC__ >= 1250)) || (defined(__GNUC__) && (__GNUC__ > 3 || defined(_STDINT_H) || defined(_STDINT_H_) || defined (__UINT_FAST64_TYPE__)) )) && !defined (_PSTDINT_H_INCLUDED) -#include -#define _PSTDINT_H_INCLUDED -# if defined(__GNUC__) && (defined(__x86_64__) || defined(__ppc64__)) && !(defined(__APPLE__) && defined(__MACH__)) -# ifndef PRINTF_INT64_MODIFIER -# define PRINTF_INT64_MODIFIER "l" -# endif -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "" -# endif -# else -# ifndef PRINTF_INT64_MODIFIER -# define PRINTF_INT64_MODIFIER "ll" -# endif -# ifndef PRINTF_INT32_MODIFIER -# if (UINT_MAX == UINT32_MAX) -# define PRINTF_INT32_MODIFIER "" -# else -# define PRINTF_INT32_MODIFIER "l" -# endif -# endif -# endif -# ifndef PRINTF_INT16_MODIFIER -# define PRINTF_INT16_MODIFIER "h" -# endif -# ifndef PRINTF_INTMAX_MODIFIER -# define PRINTF_INTMAX_MODIFIER PRINTF_INT64_MODIFIER -# endif -# ifndef PRINTF_INT64_HEX_WIDTH -# define PRINTF_INT64_HEX_WIDTH "16" -# endif -# ifndef PRINTF_UINT64_HEX_WIDTH -# define PRINTF_UINT64_HEX_WIDTH "16" -# endif -# ifndef PRINTF_INT32_HEX_WIDTH -# define PRINTF_INT32_HEX_WIDTH "8" -# endif -# ifndef PRINTF_UINT32_HEX_WIDTH -# define PRINTF_UINT32_HEX_WIDTH "8" -# endif -# ifndef PRINTF_INT16_HEX_WIDTH -# define PRINTF_INT16_HEX_WIDTH "4" -# endif -# ifndef PRINTF_UINT16_HEX_WIDTH -# define PRINTF_UINT16_HEX_WIDTH "4" -# endif -# ifndef PRINTF_INT8_HEX_WIDTH -# define PRINTF_INT8_HEX_WIDTH "2" -# endif -# ifndef PRINTF_UINT8_HEX_WIDTH -# define PRINTF_UINT8_HEX_WIDTH "2" -# endif -# ifndef PRINTF_INT64_DEC_WIDTH -# define PRINTF_INT64_DEC_WIDTH "19" -# endif -# ifndef PRINTF_UINT64_DEC_WIDTH -# define PRINTF_UINT64_DEC_WIDTH "20" -# endif -# ifndef PRINTF_INT32_DEC_WIDTH -# define PRINTF_INT32_DEC_WIDTH "10" -# endif -# ifndef PRINTF_UINT32_DEC_WIDTH -# define PRINTF_UINT32_DEC_WIDTH "10" -# endif -# ifndef PRINTF_INT16_DEC_WIDTH -# define PRINTF_INT16_DEC_WIDTH "5" -# endif -# ifndef PRINTF_UINT16_DEC_WIDTH -# define PRINTF_UINT16_DEC_WIDTH "5" -# endif -# ifndef PRINTF_INT8_DEC_WIDTH -# define PRINTF_INT8_DEC_WIDTH "3" -# endif -# ifndef PRINTF_UINT8_DEC_WIDTH -# define PRINTF_UINT8_DEC_WIDTH "3" -# endif -# ifndef PRINTF_INTMAX_HEX_WIDTH -# define PRINTF_INTMAX_HEX_WIDTH PRINTF_UINT64_HEX_WIDTH -# endif -# ifndef PRINTF_UINTMAX_HEX_WIDTH -# define PRINTF_UINTMAX_HEX_WIDTH PRINTF_UINT64_HEX_WIDTH -# endif -# ifndef PRINTF_INTMAX_DEC_WIDTH -# define PRINTF_INTMAX_DEC_WIDTH PRINTF_UINT64_DEC_WIDTH -# endif -# ifndef PRINTF_UINTMAX_DEC_WIDTH -# define PRINTF_UINTMAX_DEC_WIDTH PRINTF_UINT64_DEC_WIDTH -# endif - -/* - * Something really weird is going on with Open Watcom. Just pull some of - * these duplicated definitions from Open Watcom's stdint.h file for now. - */ - -# if defined (__WATCOMC__) && __WATCOMC__ >= 1250 -# if !defined (INT64_C) -# define INT64_C(x) (x + (INT64_MAX - INT64_MAX)) -# endif -# if !defined (UINT64_C) -# define UINT64_C(x) (x + (UINT64_MAX - UINT64_MAX)) -# endif -# if !defined (INT32_C) -# define INT32_C(x) (x + (INT32_MAX - INT32_MAX)) -# endif -# if !defined (UINT32_C) -# define UINT32_C(x) (x + (UINT32_MAX - UINT32_MAX)) -# endif -# if !defined (INT16_C) -# define INT16_C(x) (x) -# endif -# if !defined (UINT16_C) -# define UINT16_C(x) (x) -# endif -# if !defined (INT8_C) -# define INT8_C(x) (x) -# endif -# if !defined (UINT8_C) -# define UINT8_C(x) (x) -# endif -# if !defined (UINT64_MAX) -# define UINT64_MAX 18446744073709551615ULL -# endif -# if !defined (INT64_MAX) -# define INT64_MAX 9223372036854775807LL -# endif -# if !defined (UINT32_MAX) -# define UINT32_MAX 4294967295UL -# endif -# if !defined (INT32_MAX) -# define INT32_MAX 2147483647L -# endif -# if !defined (INTMAX_MAX) -# define INTMAX_MAX INT64_MAX -# endif -# if !defined (INTMAX_MIN) -# define INTMAX_MIN INT64_MIN -# endif -# endif -#endif - -#ifndef _PSTDINT_H_INCLUDED -#define _PSTDINT_H_INCLUDED - -#ifndef SIZE_MAX -# define SIZE_MAX (~(size_t)0) -#endif - -/* - * Deduce the type assignments from limits.h under the assumption that - * integer sizes in bits are powers of 2, and follow the ANSI - * definitions. - */ - -#ifndef UINT8_MAX -# define UINT8_MAX 0xff -#endif -#if !defined(uint8_t) && !defined(_UINT8_T) -# if (UCHAR_MAX == UINT8_MAX) || defined (S_SPLINT_S) - typedef unsigned char uint8_t; -# define UINT8_C(v) ((uint8_t) v) -# else -# error "Platform not supported" -# endif -#endif - -#ifndef INT8_MAX -# define INT8_MAX 0x7f -#endif -#ifndef INT8_MIN -# define INT8_MIN INT8_C(0x80) -#endif -#if !defined(int8_t) && !defined(_INT8_T) -# if (SCHAR_MAX == INT8_MAX) || defined (S_SPLINT_S) - typedef signed char int8_t; -# define INT8_C(v) ((int8_t) v) -# else -# error "Platform not supported" -# endif -#endif - -#ifndef UINT16_MAX -# define UINT16_MAX 0xffff -#endif -#if !defined(uint16_t) && !defined(_UINT16_T) -#if (UINT_MAX == UINT16_MAX) || defined (S_SPLINT_S) - typedef unsigned int uint16_t; -# ifndef PRINTF_INT16_MODIFIER -# define PRINTF_INT16_MODIFIER "" -# endif -# define UINT16_C(v) ((uint16_t) (v)) -#elif (USHRT_MAX == UINT16_MAX) - typedef unsigned short uint16_t; -# define UINT16_C(v) ((uint16_t) (v)) -# ifndef PRINTF_INT16_MODIFIER -# define PRINTF_INT16_MODIFIER "h" -# endif -#else -#error "Platform not supported" -#endif -#endif - -#ifndef INT16_MAX -# define INT16_MAX 0x7fff -#endif -#ifndef INT16_MIN -# define INT16_MIN INT16_C(0x8000) -#endif -#if !defined(int16_t) && !defined(_INT16_T) -#if (INT_MAX == INT16_MAX) || defined (S_SPLINT_S) - typedef signed int int16_t; -# define INT16_C(v) ((int16_t) (v)) -# ifndef PRINTF_INT16_MODIFIER -# define PRINTF_INT16_MODIFIER "" -# endif -#elif (SHRT_MAX == INT16_MAX) - typedef signed short int16_t; -# define INT16_C(v) ((int16_t) (v)) -# ifndef PRINTF_INT16_MODIFIER -# define PRINTF_INT16_MODIFIER "h" -# endif -#else -#error "Platform not supported" -#endif -#endif - -#ifndef UINT32_MAX -# define UINT32_MAX (0xffffffffUL) -#endif -#if !defined(uint32_t) && !defined(_UINT32_T) -#if (ULONG_MAX == UINT32_MAX) || defined (S_SPLINT_S) - typedef unsigned long uint32_t; -# define UINT32_C(v) v ## UL -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "l" -# endif -#elif (UINT_MAX == UINT32_MAX) - typedef unsigned int uint32_t; -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "" -# endif -# define UINT32_C(v) v ## U -#elif (USHRT_MAX == UINT32_MAX) - typedef unsigned short uint32_t; -# define UINT32_C(v) ((unsigned short) (v)) -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "" -# endif -#else -#error "Platform not supported" -#endif -#endif - -#ifndef INT32_MAX -# define INT32_MAX (0x7fffffffL) -#endif -#ifndef INT32_MIN -# define INT32_MIN INT32_C(0x80000000) -#endif -#if !defined(int32_t) && !defined(_INT32_T) -#if (LONG_MAX == INT32_MAX) || defined (S_SPLINT_S) - typedef signed long int32_t; -# define INT32_C(v) v ## L -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "l" -# endif -#elif (INT_MAX == INT32_MAX) - typedef signed int int32_t; -# define INT32_C(v) v -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "" -# endif -#elif (SHRT_MAX == INT32_MAX) - typedef signed short int32_t; -# define INT32_C(v) ((short) (v)) -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "" -# endif -#else -#error "Platform not supported" -#endif -#endif - -/* - * The macro stdint_int64_defined is temporarily used to record - * whether or not 64 integer support is available. It must be - * defined for any 64 integer extensions for new platforms that are - * added. - */ - -#undef stdint_int64_defined -#if (defined(__STDC__) && defined(__STDC_VERSION__)) || defined (S_SPLINT_S) -# if (__STDC__ && __STDC_VERSION__ >= 199901L) || defined (S_SPLINT_S) -# define stdint_int64_defined - typedef long long int64_t; - typedef unsigned long long uint64_t; -# define UINT64_C(v) v ## ULL -# define INT64_C(v) v ## LL -# ifndef PRINTF_INT64_MODIFIER -# define PRINTF_INT64_MODIFIER "ll" -# endif -# endif -#endif - -#if !defined (stdint_int64_defined) -# if defined(__GNUC__) -# define stdint_int64_defined - __extension__ typedef long long int64_t; - __extension__ typedef unsigned long long uint64_t; -# define UINT64_C(v) v ## ULL -# define INT64_C(v) v ## LL -# ifndef PRINTF_INT64_MODIFIER -# define PRINTF_INT64_MODIFIER "ll" -# endif -# elif defined(__MWERKS__) || defined (__SUNPRO_C) || defined (__SUNPRO_CC) || defined (__APPLE_CC__) || defined (_LONG_LONG) || defined (_CRAYC) || defined (S_SPLINT_S) -# define stdint_int64_defined - typedef long long int64_t; - typedef unsigned long long uint64_t; -# define UINT64_C(v) v ## ULL -# define INT64_C(v) v ## LL -# ifndef PRINTF_INT64_MODIFIER -# define PRINTF_INT64_MODIFIER "ll" -# endif -# elif (defined(__WATCOMC__) && defined(__WATCOM_INT64__)) || (defined(_MSC_VER) && _INTEGRAL_MAX_BITS >= 64) || (defined (__BORLANDC__) && __BORLANDC__ > 0x460) || defined (__alpha) || defined (__DECC) -# define stdint_int64_defined - typedef __int64 int64_t; - typedef unsigned __int64 uint64_t; -# define UINT64_C(v) v ## UI64 -# define INT64_C(v) v ## I64 -# ifndef PRINTF_INT64_MODIFIER -# define PRINTF_INT64_MODIFIER "I64" -# endif -# endif -#endif - -#if !defined (LONG_LONG_MAX) && defined (INT64_C) -# define LONG_LONG_MAX INT64_C (9223372036854775807) -#endif -#ifndef ULONG_LONG_MAX -# define ULONG_LONG_MAX UINT64_C (18446744073709551615) -#endif - -#if !defined (INT64_MAX) && defined (INT64_C) -# define INT64_MAX INT64_C (9223372036854775807) -#endif -#if !defined (INT64_MIN) && defined (INT64_C) -# define INT64_MIN INT64_C (-9223372036854775808) -#endif -#if !defined (UINT64_MAX) && defined (INT64_C) -# define UINT64_MAX UINT64_C (18446744073709551615) -#endif - -/* - * Width of hexadecimal for number field. - */ - -#ifndef PRINTF_INT64_HEX_WIDTH -# define PRINTF_INT64_HEX_WIDTH "16" -#endif -#ifndef PRINTF_INT32_HEX_WIDTH -# define PRINTF_INT32_HEX_WIDTH "8" -#endif -#ifndef PRINTF_INT16_HEX_WIDTH -# define PRINTF_INT16_HEX_WIDTH "4" -#endif -#ifndef PRINTF_INT8_HEX_WIDTH -# define PRINTF_INT8_HEX_WIDTH "2" -#endif -#ifndef PRINTF_INT64_DEC_WIDTH -# define PRINTF_INT64_DEC_WIDTH "19" -#endif -#ifndef PRINTF_INT32_DEC_WIDTH -# define PRINTF_INT32_DEC_WIDTH "10" -#endif -#ifndef PRINTF_INT16_DEC_WIDTH -# define PRINTF_INT16_DEC_WIDTH "5" -#endif -#ifndef PRINTF_INT8_DEC_WIDTH -# define PRINTF_INT8_DEC_WIDTH "3" -#endif -#ifndef PRINTF_UINT64_DEC_WIDTH -# define PRINTF_UINT64_DEC_WIDTH "20" -#endif -#ifndef PRINTF_UINT32_DEC_WIDTH -# define PRINTF_UINT32_DEC_WIDTH "10" -#endif -#ifndef PRINTF_UINT16_DEC_WIDTH -# define PRINTF_UINT16_DEC_WIDTH "5" -#endif -#ifndef PRINTF_UINT8_DEC_WIDTH -# define PRINTF_UINT8_DEC_WIDTH "3" -#endif - -/* - * Ok, lets not worry about 128 bit integers for now. Moore's law says - * we don't need to worry about that until about 2040 at which point - * we'll have bigger things to worry about. - */ - -#ifdef stdint_int64_defined - typedef int64_t intmax_t; - typedef uint64_t uintmax_t; -# define INTMAX_MAX INT64_MAX -# define INTMAX_MIN INT64_MIN -# define UINTMAX_MAX UINT64_MAX -# define UINTMAX_C(v) UINT64_C(v) -# define INTMAX_C(v) INT64_C(v) -# ifndef PRINTF_INTMAX_MODIFIER -# define PRINTF_INTMAX_MODIFIER PRINTF_INT64_MODIFIER -# endif -# ifndef PRINTF_INTMAX_HEX_WIDTH -# define PRINTF_INTMAX_HEX_WIDTH PRINTF_INT64_HEX_WIDTH -# endif -# ifndef PRINTF_INTMAX_DEC_WIDTH -# define PRINTF_INTMAX_DEC_WIDTH PRINTF_INT64_DEC_WIDTH -# endif -#else - typedef int32_t intmax_t; - typedef uint32_t uintmax_t; -# define INTMAX_MAX INT32_MAX -# define UINTMAX_MAX UINT32_MAX -# define UINTMAX_C(v) UINT32_C(v) -# define INTMAX_C(v) INT32_C(v) -# ifndef PRINTF_INTMAX_MODIFIER -# define PRINTF_INTMAX_MODIFIER PRINTF_INT32_MODIFIER -# endif -# ifndef PRINTF_INTMAX_HEX_WIDTH -# define PRINTF_INTMAX_HEX_WIDTH PRINTF_INT32_HEX_WIDTH -# endif -# ifndef PRINTF_INTMAX_DEC_WIDTH -# define PRINTF_INTMAX_DEC_WIDTH PRINTF_INT32_DEC_WIDTH -# endif -#endif - -/* - * Because this file currently only supports platforms which have - * precise powers of 2 as bit sizes for the default integers, the - * least definitions are all trivial. Its possible that a future - * version of this file could have different definitions. - */ - -#ifndef stdint_least_defined - typedef int8_t int_least8_t; - typedef uint8_t uint_least8_t; - typedef int16_t int_least16_t; - typedef uint16_t uint_least16_t; - typedef int32_t int_least32_t; - typedef uint32_t uint_least32_t; -# define PRINTF_LEAST32_MODIFIER PRINTF_INT32_MODIFIER -# define PRINTF_LEAST16_MODIFIER PRINTF_INT16_MODIFIER -# define UINT_LEAST8_MAX UINT8_MAX -# define INT_LEAST8_MAX INT8_MAX -# define UINT_LEAST16_MAX UINT16_MAX -# define INT_LEAST16_MAX INT16_MAX -# define UINT_LEAST32_MAX UINT32_MAX -# define INT_LEAST32_MAX INT32_MAX -# define INT_LEAST8_MIN INT8_MIN -# define INT_LEAST16_MIN INT16_MIN -# define INT_LEAST32_MIN INT32_MIN -# ifdef stdint_int64_defined - typedef int64_t int_least64_t; - typedef uint64_t uint_least64_t; -# define PRINTF_LEAST64_MODIFIER PRINTF_INT64_MODIFIER -# define UINT_LEAST64_MAX UINT64_MAX -# define INT_LEAST64_MAX INT64_MAX -# define INT_LEAST64_MIN INT64_MIN -# endif -#endif -#undef stdint_least_defined - -/* - * The ANSI C committee pretending to know or specify anything about - * performance is the epitome of misguided arrogance. The mandate of - * this file is to *ONLY* ever support that absolute minimum - * definition of the fast integer types, for compatibility purposes. - * No extensions, and no attempt to suggest what may or may not be a - * faster integer type will ever be made in this file. Developers are - * warned to stay away from these types when using this or any other - * stdint.h. - */ - -typedef int_least8_t int_fast8_t; -typedef uint_least8_t uint_fast8_t; -typedef int_least16_t int_fast16_t; -typedef uint_least16_t uint_fast16_t; -typedef int_least32_t int_fast32_t; -typedef uint_least32_t uint_fast32_t; -#define UINT_FAST8_MAX UINT_LEAST8_MAX -#define INT_FAST8_MAX INT_LEAST8_MAX -#define UINT_FAST16_MAX UINT_LEAST16_MAX -#define INT_FAST16_MAX INT_LEAST16_MAX -#define UINT_FAST32_MAX UINT_LEAST32_MAX -#define INT_FAST32_MAX INT_LEAST32_MAX -#define INT_FAST8_MIN INT_LEAST8_MIN -#define INT_FAST16_MIN INT_LEAST16_MIN -#define INT_FAST32_MIN INT_LEAST32_MIN -#ifdef stdint_int64_defined - typedef int_least64_t int_fast64_t; - typedef uint_least64_t uint_fast64_t; -# define UINT_FAST64_MAX UINT_LEAST64_MAX -# define INT_FAST64_MAX INT_LEAST64_MAX -# define INT_FAST64_MIN INT_LEAST64_MIN -#endif - -#undef stdint_int64_defined - -/* - * Whatever piecemeal, per compiler thing we can do about the wchar_t - * type limits. - */ - -#if defined(__WATCOMC__) || defined(_MSC_VER) || defined (__GNUC__) -# include -# ifndef WCHAR_MIN -# define WCHAR_MIN 0 -# endif -# ifndef WCHAR_MAX -# define WCHAR_MAX ((wchar_t)-1) -# endif -#endif - -/* - * Whatever piecemeal, per compiler/platform thing we can do about the - * (u)intptr_t types and limits. - */ - -#if (defined (_MSC_VER) && defined (_UINTPTR_T_DEFINED)) || defined (_UINTPTR_T) -# define STDINT_H_UINTPTR_T_DEFINED -#endif - -#ifndef STDINT_H_UINTPTR_T_DEFINED -# if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) || defined (_WIN64) || defined (__ppc64__) -# define stdint_intptr_bits 64 -# elif defined (__WATCOMC__) || defined (__TURBOC__) -# if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__) -# define stdint_intptr_bits 16 -# else -# define stdint_intptr_bits 32 -# endif -# elif defined (__i386__) || defined (_WIN32) || defined (WIN32) || defined (__ppc64__) -# define stdint_intptr_bits 32 -# elif defined (__INTEL_COMPILER) -/* TODO -- what did Intel do about x86-64? */ -# else -/* #error "This platform might not be supported yet" */ -# endif - -# ifdef stdint_intptr_bits -# define stdint_intptr_glue3_i(a,b,c) a##b##c -# define stdint_intptr_glue3(a,b,c) stdint_intptr_glue3_i(a,b,c) -# ifndef PRINTF_INTPTR_MODIFIER -# define PRINTF_INTPTR_MODIFIER stdint_intptr_glue3(PRINTF_INT,stdint_intptr_bits,_MODIFIER) -# endif -# ifndef PTRDIFF_MAX -# define PTRDIFF_MAX stdint_intptr_glue3(INT,stdint_intptr_bits,_MAX) -# endif -# ifndef PTRDIFF_MIN -# define PTRDIFF_MIN stdint_intptr_glue3(INT,stdint_intptr_bits,_MIN) -# endif -# ifndef UINTPTR_MAX -# define UINTPTR_MAX stdint_intptr_glue3(UINT,stdint_intptr_bits,_MAX) -# endif -# ifndef INTPTR_MAX -# define INTPTR_MAX stdint_intptr_glue3(INT,stdint_intptr_bits,_MAX) -# endif -# ifndef INTPTR_MIN -# define INTPTR_MIN stdint_intptr_glue3(INT,stdint_intptr_bits,_MIN) -# endif -# ifndef INTPTR_C -# define INTPTR_C(x) stdint_intptr_glue3(INT,stdint_intptr_bits,_C)(x) -# endif -# ifndef UINTPTR_C -# define UINTPTR_C(x) stdint_intptr_glue3(UINT,stdint_intptr_bits,_C)(x) -# endif - typedef stdint_intptr_glue3(uint,stdint_intptr_bits,_t) uintptr_t; - typedef stdint_intptr_glue3( int,stdint_intptr_bits,_t) intptr_t; -# else -/* TODO -- This following is likely wrong for some platforms, and does - nothing for the definition of uintptr_t. */ - typedef ptrdiff_t intptr_t; -# endif -# define STDINT_H_UINTPTR_T_DEFINED -#endif - -/* - * Assumes sig_atomic_t is signed and we have a 2s complement machine. - */ - -#ifndef SIG_ATOMIC_MAX -# define SIG_ATOMIC_MAX ((((sig_atomic_t) 1) << (sizeof (sig_atomic_t)*CHAR_BIT-1)) - 1) -#endif - -#endif - -#if defined (__TEST_PSTDINT_FOR_CORRECTNESS) - -/* - * Please compile with the maximum warning settings to make sure macros are - * not defined more than once. - */ - -#include -#include -#include - -#define glue3_aux(x,y,z) x ## y ## z -#define glue3(x,y,z) glue3_aux(x,y,z) - -#define DECLU(bits) glue3(uint,bits,_t) glue3(u,bits,) = glue3(UINT,bits,_C) (0); -#define DECLI(bits) glue3(int,bits,_t) glue3(i,bits,) = glue3(INT,bits,_C) (0); - -#define DECL(us,bits) glue3(DECL,us,) (bits) - -#define TESTUMAX(bits) glue3(u,bits,) = ~glue3(u,bits,); if (glue3(UINT,bits,_MAX) != glue3(u,bits,)) printf ("Something wrong with UINT%d_MAX\n", bits) - -#define REPORTERROR(msg) { err_n++; if (err_first <= 0) err_first = __LINE__; printf msg; } - -int main () { - int err_n = 0; - int err_first = 0; - DECL(I,8) - DECL(U,8) - DECL(I,16) - DECL(U,16) - DECL(I,32) - DECL(U,32) -#ifdef INT64_MAX - DECL(I,64) - DECL(U,64) -#endif - intmax_t imax = INTMAX_C(0); - uintmax_t umax = UINTMAX_C(0); - char str0[256], str1[256]; - - sprintf (str0, "%" PRINTF_INT32_MODIFIER "d", INT32_C(2147483647)); - if (0 != strcmp (str0, "2147483647")) REPORTERROR (("Something wrong with PRINTF_INT32_MODIFIER : %s\n", str0)); - if (atoi(PRINTF_INT32_DEC_WIDTH) != (int) strlen(str0)) REPORTERROR (("Something wrong with PRINTF_INT32_DEC_WIDTH : %s\n", PRINTF_INT32_DEC_WIDTH)); - sprintf (str0, "%" PRINTF_INT32_MODIFIER "u", UINT32_C(4294967295)); - if (0 != strcmp (str0, "4294967295")) REPORTERROR (("Something wrong with PRINTF_INT32_MODIFIER : %s\n", str0)); - if (atoi(PRINTF_UINT32_DEC_WIDTH) != (int) strlen(str0)) REPORTERROR (("Something wrong with PRINTF_UINT32_DEC_WIDTH : %s\n", PRINTF_UINT32_DEC_WIDTH)); -#ifdef INT64_MAX - sprintf (str1, "%" PRINTF_INT64_MODIFIER "d", INT64_C(9223372036854775807)); - if (0 != strcmp (str1, "9223372036854775807")) REPORTERROR (("Something wrong with PRINTF_INT32_MODIFIER : %s\n", str1)); - if (atoi(PRINTF_INT64_DEC_WIDTH) != (int) strlen(str1)) REPORTERROR (("Something wrong with PRINTF_INT64_DEC_WIDTH : %s, %d\n", PRINTF_INT64_DEC_WIDTH, (int) strlen(str1))); - sprintf (str1, "%" PRINTF_INT64_MODIFIER "u", UINT64_C(18446744073709550591)); - if (0 != strcmp (str1, "18446744073709550591")) REPORTERROR (("Something wrong with PRINTF_INT32_MODIFIER : %s\n", str1)); - if (atoi(PRINTF_UINT64_DEC_WIDTH) != (int) strlen(str1)) REPORTERROR (("Something wrong with PRINTF_UINT64_DEC_WIDTH : %s, %d\n", PRINTF_UINT64_DEC_WIDTH, (int) strlen(str1))); -#endif - - sprintf (str0, "%d %x\n", 0, ~0); - - sprintf (str1, "%d %x\n", i8, ~0); - if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with i8 : %s\n", str1)); - sprintf (str1, "%u %x\n", u8, ~0); - if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with u8 : %s\n", str1)); - sprintf (str1, "%d %x\n", i16, ~0); - if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with i16 : %s\n", str1)); - sprintf (str1, "%u %x\n", u16, ~0); - if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with u16 : %s\n", str1)); - sprintf (str1, "%" PRINTF_INT32_MODIFIER "d %x\n", i32, ~0); - if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with i32 : %s\n", str1)); - sprintf (str1, "%" PRINTF_INT32_MODIFIER "u %x\n", u32, ~0); - if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with u32 : %s\n", str1)); -#ifdef INT64_MAX - sprintf (str1, "%" PRINTF_INT64_MODIFIER "d %x\n", i64, ~0); - if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with i64 : %s\n", str1)); -#endif - sprintf (str1, "%" PRINTF_INTMAX_MODIFIER "d %x\n", imax, ~0); - if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with imax : %s\n", str1)); - sprintf (str1, "%" PRINTF_INTMAX_MODIFIER "u %x\n", umax, ~0); - if (0 != strcmp (str0, str1)) REPORTERROR (("Something wrong with umax : %s\n", str1)); - - TESTUMAX(8); - TESTUMAX(16); - TESTUMAX(32); -#ifdef INT64_MAX - TESTUMAX(64); -#endif - -#define STR(v) #v -#define Q(v) printf ("sizeof " STR(v) " = %u\n", (unsigned) sizeof (v)); - if (err_n) { - printf ("pstdint.h is not correct. Please use sizes below to correct it:\n"); - } - - Q(int) - Q(unsigned) - Q(long int) - Q(short int) - Q(int8_t) - Q(int16_t) - Q(int32_t) -#ifdef INT64_MAX - Q(int64_t) -#endif - - return EXIT_SUCCESS; -} - -#endif diff --git a/nostrdb/flatcc/portable/punaligned.h b/nostrdb/flatcc/portable/punaligned.h deleted file mode 100644 index a380edd9f8..0000000000 --- a/nostrdb/flatcc/portable/punaligned.h +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright (c) 2016 Mikkel Fahnøe Jørgensen, dvide.com - * - * (MIT License) - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - The Software is provided "as is", without warranty of any kind, express or - * implied, including but not limited to the warranties of merchantability, - * fitness for a particular purpose and noninfringement. In no event shall the - * authors or copyright holders be liable for any claim, damages or other - * liability, whether in an action of contract, tort or otherwise, arising from, - * out of or in connection with the Software or the use or other dealings in the - * Software. - */ - -#ifndef PUNLIGNED_H -#define PUNLIGNED_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef PORTABLE_UNALIGNED_ACCESS - -#if defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64) -#define PORTABLE_UNALIGNED_ACCESS 1 -#else -#define PORTABLE_UNALIGNED_ACCESS 0 -#endif - -#endif - -/* `unaligned_read_16` might not be defined if endianness was not determined. */ -#if !defined(unaligned_read_le16toh) - -#include "pendian.h" - -#ifndef UINT8_MAX -#include -#endif - -#if PORTABLE_UNALIGNED_ACCESS - -#define unaligned_read_16(p) (*(uint16_t*)(p)) -#define unaligned_read_32(p) (*(uint32_t*)(p)) -#define unaligned_read_64(p) (*(uint64_t*)(p)) - -#define unaligned_read_le16toh(p) le16toh(*(uint16_t*)(p)) -#define unaligned_read_le32toh(p) le32toh(*(uint32_t*)(p)) -#define unaligned_read_le64toh(p) le64toh(*(uint64_t*)(p)) - -#define unaligned_read_be16toh(p) be16toh(*(uint16_t*)(p)) -#define unaligned_read_be32toh(p) be32toh(*(uint32_t*)(p)) -#define unaligned_read_be64toh(p) be64toh(*(uint64_t*)(p)) - -#define unaligned_write_16(p, v) (*(uint16_t*)(p) = (uint16_t)(v)) -#define unaligned_write_32(p, v) (*(uint32_t*)(p) = (uint32_t)(v)) -#define unaligned_write_64(p, v) (*(uint64_t*)(p) = (uint64_t)(v)) - -#define unaligned_write_htole16(p, v) (*(uint16_t*)(p) = htole16(v)) -#define unaligned_write_htole32(p, v) (*(uint32_t*)(p) = htole32(v)) -#define unaligned_write_htole64(p, v) (*(uint64_t*)(p) = htole64(v)) - -#define unaligned_write_htobe16(p, v) (*(uint16_t*)(p) = htobe16(v)) -#define unaligned_write_htobe32(p, v) (*(uint32_t*)(p) = htobe32(v)) -#define unaligned_write_htobe64(p, v) (*(uint64_t*)(p) = htobe64(v)) - -#else - -#define unaligned_read_le16toh(p) ( \ - (((uint16_t)(((uint8_t *)(p))[0])) << 0) | \ - (((uint16_t)(((uint8_t *)(p))[1])) << 8)) - -#define unaligned_read_le32toh(p) ( \ - (((uint32_t)(((uint8_t *)(p))[0])) << 0) | \ - (((uint32_t)(((uint8_t *)(p))[1])) << 8) | \ - (((uint32_t)(((uint8_t *)(p))[2])) << 16) | \ - (((uint32_t)(((uint8_t *)(p))[3])) << 24)) - -#define unaligned_read_le64toh(p) ( \ - (((uint64_t)(((uint8_t *)(p))[0])) << 0) | \ - (((uint64_t)(((uint8_t *)(p))[1])) << 8) | \ - (((uint64_t)(((uint8_t *)(p))[2])) << 16) | \ - (((uint64_t)(((uint8_t *)(p))[3])) << 24) | \ - (((uint64_t)(((uint8_t *)(p))[4])) << 32) | \ - (((uint64_t)(((uint8_t *)(p))[5])) << 40) | \ - (((uint64_t)(((uint8_t *)(p))[6])) << 48) | \ - (((uint64_t)(((uint8_t *)(p))[7])) << 56)) - -#define unaligned_read_be16toh(p) ( \ - (((uint16_t)(((uint8_t *)(p))[0])) << 8) | \ - (((uint16_t)(((uint8_t *)(p))[1])) << 0)) - -#define unaligned_read_be32toh(p) ( \ - (((uint32_t)(((uint8_t *)(p))[0])) << 24) | \ - (((uint32_t)(((uint8_t *)(p))[1])) << 16) | \ - (((uint32_t)(((uint8_t *)(p))[2])) << 8) | \ - (((uint32_t)(((uint8_t *)(p))[3])) << 0)) - -#define unaligned_read_be64toh(p) ( \ - (((uint64_t)(((uint8_t *)(p))[0])) << 56) | \ - (((uint64_t)(((uint8_t *)(p))[1])) << 48) | \ - (((uint64_t)(((uint8_t *)(p))[2])) << 40) | \ - (((uint64_t)(((uint8_t *)(p))[3])) << 32) | \ - (((uint64_t)(((uint8_t *)(p))[4])) << 24) | \ - (((uint64_t)(((uint8_t *)(p))[5])) << 16) | \ - (((uint64_t)(((uint8_t *)(p))[6])) << 8) | \ - (((uint64_t)(((uint8_t *)(p))[7])) << 0)) - -#define unaligned_write_htole16(p, v) do { \ - ((uint8_t *)(p))[0] = (uint8_t)(((uint16_t)(v)) >> 0); \ - ((uint8_t *)(p))[1] = (uint8_t)(((uint16_t)(v)) >> 8); \ - } while (0) - -#define unaligned_write_htole32(p, v) do { \ - ((uint8_t *)(p))[0] = (uint8_t)(((uint32_t)(v)) >> 0); \ - ((uint8_t *)(p))[1] = (uint8_t)(((uint32_t)(v)) >> 8); \ - ((uint8_t *)(p))[2] = (uint8_t)(((uint32_t)(v)) >> 16); \ - ((uint8_t *)(p))[3] = (uint8_t)(((uint32_t)(v)) >> 24); \ - } while (0) - -#define unaligned_write_htole64(p) do { \ - ((uint8_t *)(p))[0] = (uint8_t)(((uint64_t)(v)) >> 0); \ - ((uint8_t *)(p))[1] = (uint8_t)(((uint64_t)(v)) >> 8); \ - ((uint8_t *)(p))[2] = (uint8_t)(((uint64_t)(v)) >> 16); \ - ((uint8_t *)(p))[3] = (uint8_t)(((uint64_t)(v)) >> 24); \ - ((uint8_t *)(p))[4] = (uint8_t)(((uint64_t)(v)) >> 32); \ - ((uint8_t *)(p))[5] = (uint8_t)(((uint64_t)(v)) >> 40); \ - ((uint8_t *)(p))[6] = (uint8_t)(((uint64_t)(v)) >> 48); \ - ((uint8_t *)(p))[7] = (uint8_t)(((uint64_t)(v)) >> 56); \ - } while (0) - -#define unaligned_write_htobe16(p, v) do { \ - ((uint8_t *)(p))[0] = (uint8_t)(((uint16_t)(v)) >> 8); \ - ((uint8_t *)(p))[1] = (uint8_t)(((uint16_t)(v)) >> 0); \ - } while (0) - -#define unaligned_write_htobe32(p, v) do { \ - ((uint8_t *)(p))[0] = (uint8_t)(((uint32_t)(v)) >> 24); \ - ((uint8_t *)(p))[1] = (uint8_t)(((uint32_t)(v)) >> 16); \ - ((uint8_t *)(p))[2] = (uint8_t)(((uint32_t)(v)) >> 8); \ - ((uint8_t *)(p))[3] = (uint8_t)(((uint32_t)(v)) >> 0); \ - } while (0) - -#define unaligned_write_htobe64(p) do { \ - ((uint8_t *)(p))[0] = (uint8_t)(((uint64_t)(v)) >> 56); \ - ((uint8_t *)(p))[1] = (uint8_t)(((uint64_t)(v)) >> 48); \ - ((uint8_t *)(p))[2] = (uint8_t)(((uint64_t)(v)) >> 40); \ - ((uint8_t *)(p))[3] = (uint8_t)(((uint64_t)(v)) >> 32); \ - ((uint8_t *)(p))[4] = (uint8_t)(((uint64_t)(v)) >> 24); \ - ((uint8_t *)(p))[5] = (uint8_t)(((uint64_t)(v)) >> 16); \ - ((uint8_t *)(p))[6] = (uint8_t)(((uint64_t)(v)) >> 8); \ - ((uint8_t *)(p))[7] = (uint8_t)(((uint64_t)(v)) >> 0); \ - } while (0) - -#if __LITTLE_ENDIAN__ -#define unaligned_read_16(p) unaligned_read_le16toh(p) -#define unaligned_read_32(p) unaligned_read_le32toh(p) -#define unaligned_read_64(p) unaligned_read_le64toh(p) - -#define unaligned_write_16(p) unaligned_write_htole16(p) -#define unaligned_write_32(p) unaligned_write_htole32(p) -#define unaligned_write_64(p) unaligned_write_htole64(p) -#endif - -#if __BIG_ENDIAN__ -#define unaligned_read_16(p) unaligned_read_be16toh(p) -#define unaligned_read_32(p) unaligned_read_be32toh(p) -#define unaligned_read_64(p) unaligned_read_be64toh(p) - -#define unaligned_write_16(p) unaligned_write_htobe16(p) -#define unaligned_write_32(p) unaligned_write_htobe32(p) -#define unaligned_write_64(p) unaligned_write_htobe64(p) -#endif - -#endif - -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* PUNALIGNED_H */ diff --git a/nostrdb/flatcc/portable/pversion.h b/nostrdb/flatcc/portable/pversion.h deleted file mode 100644 index d434104674..0000000000 --- a/nostrdb/flatcc/portable/pversion.h +++ /dev/null @@ -1,6 +0,0 @@ -#define PORTABLE_VERSION_TEXT "0.2.6-pre" -#define PORTABLE_VERSION_MAJOR 0 -#define PORTABLE_VERSION_MINOR 2 -#define PORTABLE_VERSION_PATCH 6 -/* 1 or 0 */ -#define PORTABLE_VERSION_RELEASED 0 diff --git a/nostrdb/flatcc/portable/pwarnings.h b/nostrdb/flatcc/portable/pwarnings.h deleted file mode 100644 index f420861249..0000000000 --- a/nostrdb/flatcc/portable/pwarnings.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef PWARNINGS_H -#define PWARNINGS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * See also pdiagnostics.h headers for per file control of common - * warnings. - * - * This file is intended for global disabling of warnings that shouldn't - * be present in C11 or perhaps C99, or a generally just noise where - * recent clang / gcc compile cleanly with high warning levels. - */ - -#if defined(_MSC_VER) -/* Needed when flagging code in or out and more. */ -#pragma warning(disable: 4127) /* conditional expression is constant */ -/* happens also in MS's own headers. */ -#pragma warning(disable: 4668) /* preprocessor name not defined */ -/* MSVC does not respect double parenthesis for intent */ -#pragma warning(disable: 4706) /* assignment within conditional expression */ -/* `inline` only advisory anyway. */ -#pragma warning(disable: 4710) /* function not inlined */ -/* Well, we don't intend to add the padding manually. */ -#pragma warning(disable: 4820) /* x bytes padding added in struct */ - -/* - * Don't warn that fopen etc. are unsafe - * - * Define a compiler flag like `-D_CRT_SECURE_NO_WARNINGS` in the build. - * For some reason it doesn't work when defined here. - * - * #define _CRT_SECURE_NO_WARNINGS - */ - -/* - * Anonymous union in struct is valid in C11 and has been supported in - * GCC and Clang for a while, but it is not C99. MSVC also handles it, - * but warns. Truly portable code should perhaps not use this feature, - * but this is not the place to complain about it. - */ -#pragma warning(disable: 4201) /* nonstandard extension used: nameless struct/union */ - -#endif /* _MSV_VER */ - -#ifdef __cplusplus -} -#endif - -#endif /* PWARNINGS_H */ diff --git a/nostrdb/flatcc/reflection/README b/nostrdb/flatcc/reflection/README deleted file mode 100644 index 3c7207a91f..0000000000 --- a/nostrdb/flatcc/reflection/README +++ /dev/null @@ -1,19 +0,0 @@ -Generated by flatcc - -Keep checked in - needed by flatcc to generate binary schema. - -NOTE TO CONTRIBUTORS: DO NOT EDIT THESE FILES BY HAND - -If you need to change anything here, it is done in the code generator, -possibly followed by running `reflection/generate_code.sh` from the -project root. But please only do this for testing do not include the -generated files in a pull request unless agreed otherwise, and if so, -do it in a separate commit. - -Normally new reflection code is generated during a release which also -updates the version number in comments and there is no reason to update -reflection on every commit unless it breaks something fundamentally. - -There is a build option `FLATCC_REFLECTION` to disable reflection which -is helpful while making changes that affect the content of these files -in a way that would prevent the flatcc compiler from building. diff --git a/nostrdb/flatcc/reflection/flatbuffers_common_builder.h b/nostrdb/flatcc/reflection/flatbuffers_common_builder.h deleted file mode 100644 index a4be1ce6e8..0000000000 --- a/nostrdb/flatcc/reflection/flatbuffers_common_builder.h +++ /dev/null @@ -1,685 +0,0 @@ -#ifndef FLATBUFFERS_COMMON_BUILDER_H -#define FLATBUFFERS_COMMON_BUILDER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -/* Common FlatBuffers build functionality for C. */ - -#include "flatcc/flatcc_prologue.h" -#ifndef FLATBUILDER_H -#include "flatcc/flatcc_builder.h" -#endif -typedef flatcc_builder_t flatbuffers_builder_t; -typedef flatcc_builder_ref_t flatbuffers_ref_t; -typedef flatcc_builder_ref_t flatbuffers_vec_ref_t; -typedef flatcc_builder_union_ref_t flatbuffers_union_ref_t; -typedef flatcc_builder_union_vec_ref_t flatbuffers_union_vec_ref_t; -/* integer return code (ref and ptr always fail on 0) */ -#define flatbuffers_failed(x) ((x) < 0) -typedef flatbuffers_ref_t flatbuffers_root_t; -#define flatbuffers_root(ref) ((flatbuffers_root_t)(ref)) - -#define __flatbuffers_memoize_begin(B, src)\ -do { flatcc_builder_ref_t _ref; if ((_ref = flatcc_builder_refmap_find((B), (src)))) return _ref; } while (0) -#define __flatbuffers_memoize_end(B, src, op) do { return flatcc_builder_refmap_insert((B), (src), (op)); } while (0) -#define __flatbuffers_memoize(B, src, op) do { __flatbuffers_memoize_begin(B, src); __flatbuffers_memoize_end(B, src, op); } while (0) - -#define __flatbuffers_build_buffer(NS)\ -typedef NS ## ref_t NS ## buffer_ref_t;\ -static inline int NS ## buffer_start(NS ## builder_t *B, const NS ##fid_t fid)\ -{ return flatcc_builder_start_buffer(B, fid, 0, 0); }\ -static inline int NS ## buffer_start_with_size(NS ## builder_t *B, const NS ##fid_t fid)\ -{ return flatcc_builder_start_buffer(B, fid, 0, flatcc_builder_with_size); }\ -static inline int NS ## buffer_start_aligned(NS ## builder_t *B, NS ##fid_t fid, uint16_t block_align)\ -{ return flatcc_builder_start_buffer(B, fid, block_align, 0); }\ -static inline int NS ## buffer_start_aligned_with_size(NS ## builder_t *B, NS ##fid_t fid, uint16_t block_align)\ -{ return flatcc_builder_start_buffer(B, fid, block_align, flatcc_builder_with_size); }\ -static inline NS ## buffer_ref_t NS ## buffer_end(NS ## builder_t *B, NS ## ref_t root)\ -{ return flatcc_builder_end_buffer(B, root); } - -#define __flatbuffers_build_table_root(NS, N, FID, TFID)\ -static inline int N ## _start_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? -1 : N ## _start(B); }\ -static inline int N ## _start_as_root_with_size(NS ## builder_t *B)\ -{ return NS ## buffer_start_with_size(B, FID) ? -1 : N ## _start(B); }\ -static inline int N ## _start_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, TFID) ? -1 : N ## _start(B); }\ -static inline int N ## _start_as_typed_root_with_size(NS ## builder_t *B)\ -{ return NS ## buffer_start_with_size(B, TFID) ? -1 : N ## _start(B); }\ -static inline NS ## buffer_ref_t N ## _end_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end(B)); }\ -static inline NS ## buffer_ref_t N ## _end_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end(B)); }\ -static inline NS ## buffer_ref_t N ## _create_as_root(NS ## builder_t *B __ ## N ## _formal_args)\ -{ if (NS ## buffer_start(B, FID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\ -static inline NS ## buffer_ref_t N ## _create_as_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\ -{ if (NS ## buffer_start_with_size(B, FID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\ -static inline NS ## buffer_ref_t N ## _create_as_typed_root(NS ## builder_t *B __ ## N ## _formal_args)\ -{ if (NS ## buffer_start(B, TFID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\ -static inline NS ## buffer_ref_t N ## _create_as_typed_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\ -{ if (NS ## buffer_start_with_size(B, TFID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\ -static inline NS ## buffer_ref_t N ## _clone_as_root(NS ## builder_t *B, N ## _table_t t)\ -{ if (NS ## buffer_start(B, FID)) return 0; return NS ## buffer_end(B, N ## _clone(B, t)); }\ -static inline NS ## buffer_ref_t N ## _clone_as_root_with_size(NS ## builder_t *B, N ## _table_t t)\ -{ if (NS ## buffer_start_with_size(B, FID)) return 0; return NS ## buffer_end(B, N ## _clone(B, t)); }\ -static inline NS ## buffer_ref_t N ## _clone_as_typed_root(NS ## builder_t *B, N ## _table_t t)\ -{ if (NS ## buffer_start(B, TFID)) return 0;return NS ## buffer_end(B, N ## _clone(B, t)); }\ -static inline NS ## buffer_ref_t N ## _clone_as_typed_root_with_size(NS ## builder_t *B, N ## _table_t t)\ -{ if (NS ## buffer_start_with_size(B, TFID)) return 0; return NS ## buffer_end(B, N ## _clone(B, t)); } - -#define __flatbuffers_build_table_prolog(NS, N, FID, TFID)\ -__flatbuffers_build_table_vector_ops(NS, N ## _vec, N)\ -__flatbuffers_build_table_root(NS, N, FID, TFID) - -#define __flatbuffers_build_struct_root(NS, N, A, FID, TFID)\ -static inline N ## _t *N ## _start_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? 0 : N ## _start(B); }\ -static inline N ## _t *N ## _start_as_root_with_size(NS ## builder_t *B)\ -{ return NS ## buffer_start_with_size(B, FID) ? 0 : N ## _start(B); }\ -static inline N ## _t *N ## _start_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, TFID) ? 0 : N ## _start(B); }\ -static inline N ## _t *N ## _start_as_typed_root_with_size(NS ## builder_t *B)\ -{ return NS ## buffer_start_with_size(B, TFID) ? 0 : N ## _start(B); }\ -static inline NS ## buffer_ref_t N ## _end_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end(B)); }\ -static inline NS ## buffer_ref_t N ## _end_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end(B)); }\ -static inline NS ## buffer_ref_t N ## _end_pe_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end_pe(B)); }\ -static inline NS ## buffer_ref_t N ## _end_pe_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end_pe(B)); }\ -static inline NS ## buffer_ref_t N ## _create_as_root(NS ## builder_t *B __ ## N ## _formal_args)\ -{ return flatcc_builder_create_buffer(B, FID, 0,\ - N ## _create(B __ ## N ## _call_args), A, 0); }\ -static inline NS ## buffer_ref_t N ## _create_as_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\ -{ return flatcc_builder_create_buffer(B, FID, 0,\ - N ## _create(B __ ## N ## _call_args), A, flatcc_builder_with_size); }\ -static inline NS ## buffer_ref_t N ## _create_as_typed_root(NS ## builder_t *B __ ## N ## _formal_args)\ -{ return flatcc_builder_create_buffer(B, TFID, 0,\ - N ## _create(B __ ## N ## _call_args), A, 0); }\ -static inline NS ## buffer_ref_t N ## _create_as_typed_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\ -{ return flatcc_builder_create_buffer(B, TFID, 0,\ - N ## _create(B __ ## N ## _call_args), A, flatcc_builder_with_size); }\ -static inline NS ## buffer_ref_t N ## _clone_as_root(NS ## builder_t *B, N ## _struct_t p)\ -{ return flatcc_builder_create_buffer(B, FID, 0, N ## _clone(B, p), A, 0); }\ -static inline NS ## buffer_ref_t N ## _clone_as_root_with_size(NS ## builder_t *B, N ## _struct_t p)\ -{ return flatcc_builder_create_buffer(B, FID, 0, N ## _clone(B, p), A, flatcc_builder_with_size); }\ -static inline NS ## buffer_ref_t N ## _clone_as_typed_root(NS ## builder_t *B, N ## _struct_t p)\ -{ return flatcc_builder_create_buffer(B, TFID, 0, N ## _clone(B, p), A, 0); }\ -static inline NS ## buffer_ref_t N ## _clone_as_typed_root_with_size(NS ## builder_t *B, N ## _struct_t p)\ -{ return flatcc_builder_create_buffer(B, TFID, 0, N ## _clone(B, p), A, flatcc_builder_with_size); } - -#define __flatbuffers_build_nested_table_root(NS, N, TN, FID, TFID)\ -static inline int N ## _start_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? -1 : TN ## _start(B); }\ -static inline int N ## _start_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, TFID) ? -1 : TN ## _start(B); }\ -static inline int N ## _end_as_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\ -static inline int N ## _end_as_typed_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\ -static inline int N ## _nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\ -{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\ - align ? align : 8, FLATBUFFERS_COUNT_MAX(1))); }\ -static inline int N ## _typed_nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\ -{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\ - align ? align : 8, FLATBUFFERS_COUNT_MAX(1))); }\ -static inline int N ## _clone_as_root(NS ## builder_t *B, TN ## _table_t t)\ -{ return N ## _add(B, TN ## _clone_as_root(B, t)); }\ -static inline int N ## _clone_as_typed_root(NS ## builder_t *B, TN ## _table_t t)\ -{ return N ## _add(B, TN ## _clone_as_typed_root(B, t)); } - -#define __flatbuffers_build_nested_struct_root(NS, N, TN, A, FID, TFID)\ -static inline TN ## _t *N ## _start_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? 0 : TN ## _start(B); }\ -static inline TN ## _t *N ## _start_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? 0 : TN ## _start(B); }\ -static inline int N ## _end_as_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\ -static inline int N ## _end_as_typed_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\ -static inline int N ## _end_pe_as_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end_pe(B))); }\ -static inline int N ## _create_as_root(NS ## builder_t *B __ ## TN ## _formal_args)\ -{ return N ## _add(B, flatcc_builder_create_buffer(B, FID, 0,\ - TN ## _create(B __ ## TN ## _call_args), A, flatcc_builder_is_nested)); }\ -static inline int N ## _create_as_typed_root(NS ## builder_t *B __ ## TN ## _formal_args)\ -{ return N ## _add(B, flatcc_builder_create_buffer(B, TFID, 0,\ - TN ## _create(B __ ## TN ## _call_args), A, flatcc_builder_is_nested)); }\ -static inline int N ## _nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\ -{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\ - align < A ? A : align, FLATBUFFERS_COUNT_MAX(1))); }\ -static inline int N ## _typed_nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\ -{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\ - align < A ? A : align, FLATBUFFERS_COUNT_MAX(1))); }\ -static inline int N ## _clone_as_root(NS ## builder_t *B, TN ## _struct_t p)\ -{ return N ## _add(B, TN ## _clone_as_root(B, p)); }\ -static inline int N ## _clone_as_typed_root(NS ## builder_t *B, TN ## _struct_t p)\ -{ return N ## _add(B, TN ## _clone_as_typed_root(B, p)); } - -#define __flatbuffers_build_vector_ops(NS, V, N, TN, T)\ -static inline T *V ## _extend(NS ## builder_t *B, size_t len)\ -{ return (T *)flatcc_builder_extend_vector(B, len); }\ -static inline T *V ## _append(NS ## builder_t *B, const T *data, size_t len)\ -{ return (T *)flatcc_builder_append_vector(B, data, len); }\ -static inline int V ## _truncate(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_truncate_vector(B, len); }\ -static inline T *V ## _edit(NS ## builder_t *B)\ -{ return (T *)flatcc_builder_vector_edit(B); }\ -static inline size_t V ## _reserved_len(NS ## builder_t *B)\ -{ return flatcc_builder_vector_count(B); }\ -static inline T *V ## _push(NS ## builder_t *B, const T *p)\ -{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? (memcpy(_p, p, TN ## __size()), _p) : 0; }\ -static inline T *V ## _push_copy(NS ## builder_t *B, const T *p)\ -{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? TN ## _copy(_p, p) : 0; }\ -static inline T *V ## _push_clone(NS ## builder_t *B, const T *p)\ -{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? TN ## _copy(_p, p) : 0; }\ -static inline T *V ## _push_create(NS ## builder_t *B __ ## TN ## _formal_args)\ -{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? TN ## _assign(_p __ ## TN ## _call_args) : 0; } - -#define __flatbuffers_build_vector(NS, N, T, S, A)\ -typedef NS ## ref_t N ## _vec_ref_t;\ -static inline int N ## _vec_start(NS ## builder_t *B)\ -{ return flatcc_builder_start_vector(B, S, A, FLATBUFFERS_COUNT_MAX(S)); }\ -static inline N ## _vec_ref_t N ## _vec_end_pe(NS ## builder_t *B)\ -{ return flatcc_builder_end_vector(B); }\ -static inline N ## _vec_ref_t N ## _vec_end(NS ## builder_t *B)\ -{ if (!NS ## is_native_pe()) { size_t i, n; T *p = (T *)flatcc_builder_vector_edit(B);\ - for (i = 0, n = flatcc_builder_vector_count(B); i < n; ++i)\ - { N ## _to_pe(N ## __ptr_add(p, i)); }} return flatcc_builder_end_vector(B); }\ -static inline N ## _vec_ref_t N ## _vec_create_pe(NS ## builder_t *B, const T *data, size_t len)\ -{ return flatcc_builder_create_vector(B, data, len, S, A, FLATBUFFERS_COUNT_MAX(S)); }\ -static inline N ## _vec_ref_t N ## _vec_create(NS ## builder_t *B, const T *data, size_t len)\ -{ if (!NS ## is_native_pe()) { size_t i; T *p; int ret = flatcc_builder_start_vector(B, S, A, FLATBUFFERS_COUNT_MAX(S)); if (ret) { return ret; }\ - p = (T *)flatcc_builder_extend_vector(B, len); if (!p) return 0;\ - for (i = 0; i < len; ++i) { N ## _copy_to_pe(N ## __ptr_add(p, i), N ## __const_ptr_add(data, i)); }\ - return flatcc_builder_end_vector(B); } else return flatcc_builder_create_vector(B, data, len, S, A, FLATBUFFERS_COUNT_MAX(S)); }\ -static inline N ## _vec_ref_t N ## _vec_clone(NS ## builder_t *B, N ##_vec_t vec)\ -{ __flatbuffers_memoize(B, vec, flatcc_builder_create_vector(B, vec, N ## _vec_len(vec), S, A, FLATBUFFERS_COUNT_MAX(S))); }\ -static inline N ## _vec_ref_t N ## _vec_slice(NS ## builder_t *B, N ##_vec_t vec, size_t index, size_t len)\ -{ size_t n = N ## _vec_len(vec); if (index >= n) index = n; n -= index; if (len > n) len = n;\ - return flatcc_builder_create_vector(B, N ## __const_ptr_add(vec, index), len, S, A, FLATBUFFERS_COUNT_MAX(S)); }\ -__flatbuffers_build_vector_ops(NS, N ## _vec, N, N, T) - -#define __flatbuffers_build_union_vector_ops(NS, V, N, TN)\ -static inline TN ## _union_ref_t *V ## _extend(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_extend_union_vector(B, len); }\ -static inline TN ## _union_ref_t *V ## _append(NS ## builder_t *B, const TN ## _union_ref_t *data, size_t len)\ -{ return flatcc_builder_append_union_vector(B, data, len); }\ -static inline int V ## _truncate(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_truncate_union_vector(B, len); }\ -static inline TN ## _union_ref_t *V ## _edit(NS ## builder_t *B)\ -{ return (TN ## _union_ref_t *) flatcc_builder_union_vector_edit(B); }\ -static inline size_t V ## _reserved_len(NS ## builder_t *B)\ -{ return flatcc_builder_union_vector_count(B); }\ -static inline TN ## _union_ref_t *V ## _push(NS ## builder_t *B, const TN ## _union_ref_t ref)\ -{ return flatcc_builder_union_vector_push(B, ref); }\ -static inline TN ## _union_ref_t *V ## _push_clone(NS ## builder_t *B, TN ## _union_t u)\ -{ return TN ## _vec_push(B, TN ## _clone(B, u)); } - -#define __flatbuffers_build_union_vector(NS, N)\ -static inline int N ## _vec_start(NS ## builder_t *B)\ -{ return flatcc_builder_start_union_vector(B); }\ -static inline N ## _union_vec_ref_t N ## _vec_end(NS ## builder_t *B)\ -{ return flatcc_builder_end_union_vector(B); }\ -static inline N ## _union_vec_ref_t N ## _vec_create(NS ## builder_t *B, const N ## _union_ref_t *data, size_t len)\ -{ return flatcc_builder_create_union_vector(B, data, len); }\ -__flatbuffers_build_union_vector_ops(NS, N ## _vec, N, N)\ -/* Preserves DAG structure separately for type and value vector, so a type vector could be shared for many value vectors. */\ -static inline N ## _union_vec_ref_t N ## _vec_clone(NS ## builder_t *B, N ##_union_vec_t vec)\ -{ N ## _union_vec_ref_t _uvref, _ret = { 0, 0 }; NS ## union_ref_t _uref; size_t _i, _len;\ - if (vec.type == 0) return _ret;\ - _uvref.type = flatcc_builder_refmap_find(B, vec.type); _uvref.value = flatcc_builder_refmap_find(B, vec.value);\ - _len = N ## _union_vec_len(vec); if (_uvref.type == 0) {\ - _uvref.type = flatcc_builder_refmap_insert(B, vec.type, (flatcc_builder_create_type_vector(B, vec.type, _len))); }\ - if (_uvref.type == 0) return _ret; if (_uvref.value == 0) {\ - if (flatcc_builder_start_offset_vector(B)) return _ret;\ - for (_i = 0; _i < _len; ++_i) { _uref = N ## _clone(B, N ## _union_vec_at(vec, _i));\ - if (!_uref.value || !(flatcc_builder_offset_vector_push(B, _uref.value))) return _ret; }\ - _uvref.value = flatcc_builder_refmap_insert(B, vec.value, flatcc_builder_end_offset_vector(B));\ - if (_uvref.value == 0) return _ret; } return _uvref; } - -#define __flatbuffers_build_string_vector_ops(NS, N)\ -static inline int N ## _push_start(NS ## builder_t *B)\ -{ return NS ## string_start(B); }\ -static inline NS ## string_ref_t *N ## _push_end(NS ## builder_t *B)\ -{ return NS ## string_vec_push(B, NS ## string_end(B)); }\ -static inline NS ## string_ref_t *N ## _push_create(NS ## builder_t *B, const char *s, size_t len)\ -{ return NS ## string_vec_push(B, NS ## string_create(B, s, len)); }\ -static inline NS ## string_ref_t *N ## _push_create_str(NS ## builder_t *B, const char *s)\ -{ return NS ## string_vec_push(B, NS ## string_create_str(B, s)); }\ -static inline NS ## string_ref_t *N ## _push_create_strn(NS ## builder_t *B, const char *s, size_t max_len)\ -{ return NS ## string_vec_push(B, NS ## string_create_strn(B, s, max_len)); }\ -static inline NS ## string_ref_t *N ## _push_clone(NS ## builder_t *B, NS ## string_t string)\ -{ return NS ## string_vec_push(B, NS ## string_clone(B, string)); }\ -static inline NS ## string_ref_t *N ## _push_slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\ -{ return NS ## string_vec_push(B, NS ## string_slice(B, string, index, len)); } - -#define __flatbuffers_build_table_vector_ops(NS, N, TN)\ -static inline int N ## _push_start(NS ## builder_t *B)\ -{ return TN ## _start(B); }\ -static inline TN ## _ref_t *N ## _push_end(NS ## builder_t *B)\ -{ return N ## _push(B, TN ## _end(B)); }\ -static inline TN ## _ref_t *N ## _push_create(NS ## builder_t *B __ ## TN ##_formal_args)\ -{ return N ## _push(B, TN ## _create(B __ ## TN ## _call_args)); } - -#define __flatbuffers_build_offset_vector_ops(NS, V, N, TN)\ -static inline TN ## _ref_t *V ## _extend(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_extend_offset_vector(B, len); }\ -static inline TN ## _ref_t *V ## _append(NS ## builder_t *B, const TN ## _ref_t *data, size_t len)\ -{ return flatcc_builder_append_offset_vector(B, data, len); }\ -static inline int V ## _truncate(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_truncate_offset_vector(B, len); }\ -static inline TN ## _ref_t *V ## _edit(NS ## builder_t *B)\ -{ return (TN ## _ref_t *)flatcc_builder_offset_vector_edit(B); }\ -static inline size_t V ## _reserved_len(NS ## builder_t *B)\ -{ return flatcc_builder_offset_vector_count(B); }\ -static inline TN ## _ref_t *V ## _push(NS ## builder_t *B, const TN ## _ref_t ref)\ -{ return ref ? flatcc_builder_offset_vector_push(B, ref) : 0; } - -#define __flatbuffers_build_offset_vector(NS, N)\ -typedef NS ## ref_t N ## _vec_ref_t;\ -static inline int N ## _vec_start(NS ## builder_t *B)\ -{ return flatcc_builder_start_offset_vector(B); }\ -static inline N ## _vec_ref_t N ## _vec_end(NS ## builder_t *B)\ -{ return flatcc_builder_end_offset_vector(B); }\ -static inline N ## _vec_ref_t N ## _vec_create(NS ## builder_t *B, const N ## _ref_t *data, size_t len)\ -{ return flatcc_builder_create_offset_vector(B, data, len); }\ -__flatbuffers_build_offset_vector_ops(NS, N ## _vec, N, N)\ -static inline N ## _vec_ref_t N ## _vec_clone(NS ## builder_t *B, N ##_vec_t vec)\ -{ int _ret; N ## _ref_t _e; size_t _i, _len; __flatbuffers_memoize_begin(B, vec);\ - _len = N ## _vec_len(vec); if (flatcc_builder_start_offset_vector(B)) return 0;\ - for (_i = 0; _i < _len; ++_i) { if (!(_e = N ## _clone(B, N ## _vec_at(vec, _i)))) return 0;\ - if (!flatcc_builder_offset_vector_push(B, _e)) return 0; }\ - __flatbuffers_memoize_end(B, vec, flatcc_builder_end_offset_vector(B)); }\ - -#define __flatbuffers_build_string_ops(NS, N)\ -static inline char *N ## _append(NS ## builder_t *B, const char *s, size_t len)\ -{ return flatcc_builder_append_string(B, s, len); }\ -static inline char *N ## _append_str(NS ## builder_t *B, const char *s)\ -{ return flatcc_builder_append_string_str(B, s); }\ -static inline char *N ## _append_strn(NS ## builder_t *B, const char *s, size_t len)\ -{ return flatcc_builder_append_string_strn(B, s, len); }\ -static inline size_t N ## _reserved_len(NS ## builder_t *B)\ -{ return flatcc_builder_string_len(B); }\ -static inline char *N ## _extend(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_extend_string(B, len); }\ -static inline char *N ## _edit(NS ## builder_t *B)\ -{ return flatcc_builder_string_edit(B); }\ -static inline int N ## _truncate(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_truncate_string(B, len); } - -#define __flatbuffers_build_string(NS)\ -typedef NS ## ref_t NS ## string_ref_t;\ -static inline int NS ## string_start(NS ## builder_t *B)\ -{ return flatcc_builder_start_string(B); }\ -static inline NS ## string_ref_t NS ## string_end(NS ## builder_t *B)\ -{ return flatcc_builder_end_string(B); }\ -static inline NS ## ref_t NS ## string_create(NS ## builder_t *B, const char *s, size_t len)\ -{ return flatcc_builder_create_string(B, s, len); }\ -static inline NS ## ref_t NS ## string_create_str(NS ## builder_t *B, const char *s)\ -{ return flatcc_builder_create_string_str(B, s); }\ -static inline NS ## ref_t NS ## string_create_strn(NS ## builder_t *B, const char *s, size_t len)\ -{ return flatcc_builder_create_string_strn(B, s, len); }\ -static inline NS ## string_ref_t NS ## string_clone(NS ## builder_t *B, NS ## string_t string)\ -{ __flatbuffers_memoize(B, string, flatcc_builder_create_string(B, string, NS ## string_len(string))); }\ -static inline NS ## string_ref_t NS ## string_slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\ -{ size_t n = NS ## string_len(string); if (index >= n) index = n; n -= index; if (len > n) len = n;\ - return flatcc_builder_create_string(B, string + index, len); }\ -__flatbuffers_build_string_ops(NS, NS ## string)\ -__flatbuffers_build_offset_vector(NS, NS ## string) - -#define __flatbuffers_copy_from_pe(P, P2, N) (*(P) = N ## _read_from_pe(P2), (P)) -#define __flatbuffers_from_pe(P, N) (*(P) = N ## _read_from_pe(P), (P)) -#define __flatbuffers_copy_to_pe(P, P2, N) (N ## _write_to_pe((P), *(P2)), (P)) -#define __flatbuffers_to_pe(P, N) (N ## _write_to_pe((P), *(P)), (P)) -#define __flatbuffers_define_fixed_array_primitives(NS, N, T)\ -static inline T *N ## _array_copy(T *p, const T *p2, size_t n)\ -{ memcpy(p, p2, n * sizeof(T)); return p; }\ -static inline T *N ## _array_copy_from_pe(T *p, const T *p2, size_t n)\ -{ size_t i; if (NS ## is_native_pe()) memcpy(p, p2, n * sizeof(T)); else\ - for (i = 0; i < n; ++i) N ## _copy_from_pe(&p[i], &p2[i]); return p; }\ -static inline T *N ## _array_copy_to_pe(T *p, const T *p2, size_t n)\ -{ size_t i; if (NS ## is_native_pe()) memcpy(p, p2, n * sizeof(T)); else\ - for (i = 0; i < n; ++i) N ## _copy_to_pe(&p[i], &p2[i]); return p; } -#define __flatbuffers_define_scalar_primitives(NS, N, T)\ -static inline T *N ## _from_pe(T *p) { return __ ## NS ## from_pe(p, N); }\ -static inline T *N ## _to_pe(T *p) { return __ ## NS ## to_pe(p, N); }\ -static inline T *N ## _copy(T *p, const T *p2) { *p = *p2; return p; }\ -static inline T *N ## _copy_from_pe(T *p, const T *p2)\ -{ return __ ## NS ## copy_from_pe(p, p2, N); }\ -static inline T *N ## _copy_to_pe(T *p, const T *p2) \ -{ return __ ## NS ## copy_to_pe(p, p2, N); }\ -static inline T *N ## _assign(T *p, const T v0) { *p = v0; return p; }\ -static inline T *N ## _assign_from_pe(T *p, T v0)\ -{ *p = N ## _read_from_pe(&v0); return p; }\ -static inline T *N ## _assign_to_pe(T *p, T v0)\ -{ N ## _write_to_pe(p, v0); return p; } -#define __flatbuffers_build_scalar(NS, N, T)\ -__ ## NS ## define_scalar_primitives(NS, N, T)\ -__ ## NS ## define_fixed_array_primitives(NS, N, T)\ -__ ## NS ## build_vector(NS, N, T, sizeof(T), sizeof(T)) -/* Depends on generated copy_to/from_pe functions, and the type. */ -#define __flatbuffers_define_struct_primitives(NS, N)\ -static inline N ## _t *N ##_to_pe(N ## _t *p)\ -{ if (!NS ## is_native_pe()) { N ## _copy_to_pe(p, p); }; return p; }\ -static inline N ## _t *N ##_from_pe(N ## _t *p)\ -{ if (!NS ## is_native_pe()) { N ## _copy_from_pe(p, p); }; return p; }\ -static inline N ## _t *N ## _clear(N ## _t *p) { return (N ## _t *)memset(p, 0, N ## __size()); } - -/* Depends on generated copy/assign_to/from_pe functions, and the type. */ -#define __flatbuffers_build_struct(NS, N, S, A, FID, TFID)\ -__ ## NS ## define_struct_primitives(NS, N)\ -typedef NS ## ref_t N ## _ref_t;\ -static inline N ## _t *N ## _start(NS ## builder_t *B)\ -{ return (N ## _t *)flatcc_builder_start_struct(B, S, A); }\ -static inline N ## _ref_t N ## _end(NS ## builder_t *B)\ -{ if (!NS ## is_native_pe()) { N ## _to_pe((N ## _t *)flatcc_builder_struct_edit(B)); }\ - return flatcc_builder_end_struct(B); }\ -static inline N ## _ref_t N ## _end_pe(NS ## builder_t *B)\ -{ return flatcc_builder_end_struct(B); }\ -static inline N ## _ref_t N ## _create(NS ## builder_t *B __ ## N ## _formal_args)\ -{ N ## _t *_p = N ## _start(B); if (!_p) return 0; N ##_assign_to_pe(_p __ ## N ## _call_args);\ - return N ## _end_pe(B); }\ -static inline N ## _ref_t N ## _clone(NS ## builder_t *B, N ## _struct_t p)\ -{ N ## _t *_p; __flatbuffers_memoize_begin(B, p); _p = N ## _start(B); if (!_p) return 0;\ - N ## _copy(_p, p); __flatbuffers_memoize_end(B, p, N ##_end_pe(B)); }\ -__flatbuffers_build_vector(NS, N, N ## _t, S, A)\ -__flatbuffers_build_struct_root(NS, N, A, FID, TFID)\ - -#define __flatbuffers_struct_clear_field(p) memset((p), 0, sizeof(*(p))) -#define __flatbuffers_build_table(NS, N, K)\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return flatcc_builder_start_table(B, K); }\ -static inline N ## _ref_t N ## _end(NS ## builder_t *B)\ -{ FLATCC_ASSERT(flatcc_builder_check_required(B, __ ## N ## _required,\ - sizeof(__ ## N ## _required) / sizeof(__ ## N ## _required[0]) - 1));\ - return flatcc_builder_end_table(B); }\ -__flatbuffers_build_offset_vector(NS, N) - -#define __flatbuffers_build_table_field(ID, NS, N, TN, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _ref_t ref)\ -{ TN ## _ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ?\ - ((*_p = ref), 0) : -1; }\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return TN ## _start(B); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, TN ## _end(B)); }\ -static inline TN ## _ref_t N ## _create(NS ## builder_t *B __ ## TN ##_formal_args)\ -{ return N ## _add(B, TN ## _create(B __ ## TN ## _call_args)); }\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _table_t p)\ -{ return N ## _add(B, TN ## _clone(B, p)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _table_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_union_field(ID, NS, N, TN, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _union_ref_t uref)\ -{ NS ## ref_t *_p; TN ## _union_type_t *_pt; if (uref.type == TN ## _NONE) return 0; if (uref.value == 0) return -1;\ - if (!(_pt = (TN ## _union_type_t *)flatcc_builder_table_add(B, ID - 1, sizeof(*_pt), sizeof(*_pt)))) return -1;\ - *_pt = uref.type; if (!(_p = flatcc_builder_table_add_offset(B, ID))) return -1; *_p = uref.value; return 0; }\ -static inline int N ## _add_type(NS ## builder_t *B, TN ## _union_type_t type)\ -{ TN ## _union_type_t *_pt; if (type == TN ## _NONE) return 0; return (_pt = (TN ## _union_type_t *)flatcc_builder_table_add(B, ID - 1,\ - sizeof(*_pt), sizeof(*_pt))) ? ((*_pt = type), 0) : -1; }\ -static inline int N ## _add_value(NS ## builder_t *B, TN ## _union_ref_t uref)\ -{ NS ## ref_t *p; if (uref.type == TN ## _NONE) return 0; return (p = flatcc_builder_table_add_offset(B, ID)) ?\ - ((*p = uref.value), 0) : -1; }\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _union_t p)\ -{ return N ## _add(B, TN ## _clone(B, p)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _union_t _p = N ## _union(t); return _p.type ? N ## _clone(B, _p) : 0; } - -/* M is the union value name and T is its type, i.e. the qualified name. */ -#define __flatbuffers_build_union_table_value_field(NS, N, NU, M, T)\ -static inline int N ## _ ## M ## _add(NS ## builder_t *B, T ## _ref_t ref)\ -{ return N ## _add(B, NU ## _as_ ## M (ref)); }\ -static inline int N ## _ ## M ## _start(NS ## builder_t *B)\ -{ return T ## _start(B); }\ -static inline int N ## _ ## M ## _end(NS ## builder_t *B)\ -{ T ## _ref_t ref = T ## _end(B);\ - return ref ? N ## _ ## M ## _add(B, ref) : -1; }\ -static inline int N ## _ ## M ## _create(NS ## builder_t *B __ ## T ##_formal_args)\ -{ T ## _ref_t ref = T ## _create(B __ ## T ## _call_args);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }\ -static inline int N ## _ ## M ## _clone(NS ## builder_t *B, T ## _table_t t)\ -{ T ## _ref_t ref = T ## _clone(B, t);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; } - -/* M is the union value name and T is its type, i.e. the qualified name. */ -#define __flatbuffers_build_union_struct_value_field(NS, N, NU, M, T)\ -static inline int N ## _ ## M ## _add(NS ## builder_t *B, T ## _ref_t ref)\ -{ return N ## _add(B, NU ## _as_ ## M (ref)); }\ -static inline T ## _t *N ## _ ## M ## _start(NS ## builder_t *B)\ -{ return T ## _start(B); }\ -static inline int N ## _ ## M ## _end(NS ## builder_t *B)\ -{ T ## _ref_t ref = T ## _end(B);\ - return ref ? N ## _ ## M ## _add(B, ref) : -1; }\ -static inline int N ## _ ## M ## _create(NS ## builder_t *B __ ## T ##_formal_args)\ -{ T ## _ref_t ref = T ## _create(B __ ## T ## _call_args);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }\ -static inline int N ## _ ## M ## _end_pe(NS ## builder_t *B)\ -{ T ## _ref_t ref = T ## _end_pe(B);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }\ -static inline int N ## _ ## M ## _clone(NS ## builder_t *B, T ## _struct_t p)\ -{ T ## _ref_t ref = T ## _clone(B, p);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; } -#define __flatbuffers_build_union_string_value_field(NS, N, NU, M)\ -static inline int N ## _ ## M ## _add(NS ## builder_t *B, NS ## string_ref_t ref)\ -{ return N ## _add(B, NU ## _as_ ## M (ref)); }\ -__flatbuffers_build_string_field_ops(NS, N ## _ ## M) - -/* NS: common namespace, ID: table field id (not offset), TN: name of type T, TT: name of table type - * S: sizeof of scalar type, A: alignment of type T, default value V of type T. */ -#define __flatbuffers_build_scalar_field(ID, NS, N, TN, T, S, A, V, TT)\ -static inline int N ## _add(NS ## builder_t *B, const T v)\ -{ T *_p; if (v == V) return 0; if (!(_p = (T *)flatcc_builder_table_add(B, ID, S, A))) return -1;\ - TN ## _assign_to_pe(_p, v); return 0; }\ -static inline int N ## _force_add(NS ## builder_t *B, const T v)\ -{ T *_p; if (!(_p = (T *)flatcc_builder_table_add(B, ID, S, A))) return -1;\ - TN ## _assign_to_pe(_p, v); return 0; }\ -/* Clone does not skip default values and expects pe endian content. */\ -static inline int N ## _clone(NS ## builder_t *B, const T *p)\ -{ return 0 == flatcc_builder_table_add_copy(B, ID, p, S, A) ? -1 : 0; }\ -/* Transferring a missing field is a nop success with 0 as result. */\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ const T *_p = N ## _get_ptr(t); return _p ? N ## _clone(B, _p) : 0; } - -/* NS: common namespace, ID: table field id (not offset), TN: name of type T, TT: name of table type - * S: sizeof of scalar type, A: alignment of type T. */ -#define __flatbuffers_build_scalar_optional_field(ID, NS, N, TN, T, S, A, TT)\ -static inline int N ## _add(NS ## builder_t *B, const T v)\ -{ T *_p; if (!(_p = (T *)flatcc_builder_table_add(B, ID, S, A))) return -1;\ - TN ## _assign_to_pe(_p, v); return 0; }\ -/* Clone does not skip default values and expects pe endian content. */\ -static inline int N ## _clone(NS ## builder_t *B, const T *p)\ -{ return 0 == flatcc_builder_table_add_copy(B, ID, p, S, A) ? -1 : 0; }\ -/* Transferring a missing field is a nop success with 0 as result. */\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ const T *_p = N ## _get_ptr(t); return _p ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_struct_field(ID, NS, N, TN, S, A, TT)\ -static inline TN ## _t *N ## _start(NS ## builder_t *B)\ -{ return (TN ## _t *)flatcc_builder_table_add(B, ID, S, A); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ if (!NS ## is_native_pe()) { TN ## _to_pe((TN ## _t *)flatcc_builder_table_edit(B, S)); } return 0; }\ -static inline int N ## _end_pe(NS ## builder_t *B) { return 0; }\ -static inline int N ## _create(NS ## builder_t *B __ ## TN ## _formal_args)\ -{ TN ## _t *_p = N ## _start(B); if (!_p) return -1; TN ##_assign_to_pe(_p __ ## TN ## _call_args);\ - return 0; }\ -static inline int N ## _add(NS ## builder_t *B, const TN ## _t *p)\ -{ TN ## _t *_p = N ## _start(B); if (!_p) return -1; TN ##_copy_to_pe(_p, p); return 0; }\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _struct_t p)\ -{ return 0 == flatcc_builder_table_add_copy(B, ID, p, S, A) ? -1 : 0; }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _struct_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_vector_field(ID, NS, N, TN, T, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _vec_ref_t ref)\ -{ TN ## _vec_ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ? ((*_p = ref), 0) : -1; }\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return TN ## _vec_start(B); }\ -static inline int N ## _end_pe(NS ## builder_t *B)\ -{ return N ## _add(B, TN ## _vec_end_pe(B)); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, TN ## _vec_end(B)); }\ -static inline int N ## _create_pe(NS ## builder_t *B, const T *data, size_t len)\ -{ return N ## _add(B, TN ## _vec_create_pe(B, data, len)); }\ -static inline int N ## _create(NS ## builder_t *B, const T *data, size_t len)\ -{ return N ## _add(B, TN ## _vec_create(B, data, len)); }\ -static inline int N ## _slice(NS ## builder_t *B, TN ## _vec_t vec, size_t index, size_t len)\ -{ return N ## _add(B, TN ## _vec_slice(B, vec, index, len)); }\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _vec_t vec)\ -{ return N ## _add(B, TN ## _vec_clone(B, vec)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _vec_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; }\ -__flatbuffers_build_vector_ops(NS, N, N, TN, T)\ - -#define __flatbuffers_build_offset_vector_field(ID, NS, N, TN, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _vec_ref_t ref)\ -{ TN ## _vec_ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ? ((*_p = ref), 0) : -1; }\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return flatcc_builder_start_offset_vector(B); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, flatcc_builder_end_offset_vector(B)); }\ -static inline int N ## _create(NS ## builder_t *B, const TN ## _ref_t *data, size_t len)\ -{ return N ## _add(B, flatcc_builder_create_offset_vector(B, data, len)); }\ -__flatbuffers_build_offset_vector_ops(NS, N, N, TN)\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _vec_t vec)\ -{ return N ## _add(B, TN ## _vec_clone(B, vec)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _vec_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; } - -/* depends on N ## _add which differs for union member fields and ordinary fields */\ -#define __flatbuffers_build_string_field_ops(NS, N)\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return flatcc_builder_start_string(B); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, flatcc_builder_end_string(B)); }\ -static inline int N ## _create(NS ## builder_t *B, const char *s, size_t len)\ -{ return N ## _add(B, flatcc_builder_create_string(B, s, len)); }\ -static inline int N ## _create_str(NS ## builder_t *B, const char *s)\ -{ return N ## _add(B, flatcc_builder_create_string_str(B, s)); }\ -static inline int N ## _create_strn(NS ## builder_t *B, const char *s, size_t max_len)\ -{ return N ## _add(B, flatcc_builder_create_string_strn(B, s, max_len)); }\ -static inline int N ## _clone(NS ## builder_t *B, NS ## string_t string)\ -{ return N ## _add(B, NS ## string_clone(B, string)); }\ -static inline int N ## _slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\ -{ return N ## _add(B, NS ## string_slice(B, string, index, len)); }\ -__flatbuffers_build_string_ops(NS, N) - -#define __flatbuffers_build_string_field(ID, NS, N, TT)\ -static inline int N ## _add(NS ## builder_t *B, NS ## string_ref_t ref)\ -{ NS ## string_ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ? ((*_p = ref), 0) : -1; }\ -__flatbuffers_build_string_field_ops(NS, N)\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ NS ## string_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_table_vector_field(ID, NS, N, TN, TT)\ -__flatbuffers_build_offset_vector_field(ID, NS, N, TN, TT)\ -__flatbuffers_build_table_vector_ops(NS, N, TN) - -#define __flatbuffers_build_union_vector_field(ID, NS, N, TN, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _union_vec_ref_t uvref)\ -{ NS ## vec_ref_t *_p; if (!uvref.type || !uvref.value) return uvref.type == uvref.value ? 0 : -1;\ - if (!(_p = flatcc_builder_table_add_offset(B, ID - 1))) return -1; *_p = uvref.type;\ - if (!(_p = flatcc_builder_table_add_offset(B, ID))) return -1; *_p = uvref.value; return 0; }\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return flatcc_builder_start_union_vector(B); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, flatcc_builder_end_union_vector(B)); }\ -static inline int N ## _create(NS ## builder_t *B, const TN ## _union_ref_t *data, size_t len)\ -{ return N ## _add(B, flatcc_builder_create_union_vector(B, data, len)); }\ -__flatbuffers_build_union_vector_ops(NS, N, N, TN)\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _union_vec_t vec)\ -{ return N ## _add(B, TN ## _vec_clone(B, vec)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _union_vec_t _p = N ## _union(t); return _p.type ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_union_table_vector_value_field(NS, N, NU, M, T)\ -static inline int N ## _ ## M ## _push_start(NS ## builder_t *B)\ -{ return T ## _start(B); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_end(NS ## builder_t *B)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (T ## _end(B))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push(NS ## builder_t *B, T ## _ref_t ref)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (ref)); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create(NS ## builder_t *B __ ## T ##_formal_args)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _create(B __ ## T ## _call_args))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_clone(NS ## builder_t *B, T ## _table_t t)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _clone(B, t))); } - -#define __flatbuffers_build_union_struct_vector_value_field(NS, N, NU, M, T)\ -static inline T ## _t *N ## _ ## M ## _push_start(NS ## builder_t *B)\ -{ return T ## _start(B); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_end(NS ## builder_t *B)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (T ## _end(B))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push(NS ## builder_t *B, T ## _ref_t ref)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (ref)); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create(NS ## builder_t *B __ ## T ##_formal_args)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _create(B __ ## T ## _call_args))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_clone(NS ## builder_t *B, T ## _struct_t p)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _clone(B, p))); } - -#define __flatbuffers_build_union_string_vector_value_field(NS, N, NU, M)\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push(NS ## builder_t *B, NS ## string_ref_t ref)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (ref)); }\ -static inline int N ## _ ## M ## _push_start(NS ## builder_t *B)\ -{ return NS ## string_start(B); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_end(NS ## builder_t *B)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_end(B))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create(NS ## builder_t *B, const char *s, size_t len)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_create(B, s, len))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create_str(NS ## builder_t *B, const char *s)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_create_str(B, s))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create_strn(NS ## builder_t *B, const char *s, size_t max_len)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_create_strn(B, s, max_len))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_clone(NS ## builder_t *B, NS ## string_t string)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_clone(B, string))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_slice(B, string, index, len))); } - -#define __flatbuffers_build_string_vector_field(ID, NS, N, TT)\ -__flatbuffers_build_offset_vector_field(ID, NS, N, NS ## string, TT)\ -__flatbuffers_build_string_vector_ops(NS, N) - -#define __flatbuffers_char_formal_args , char v0 -#define __flatbuffers_char_call_args , v0 -#define __flatbuffers_uint8_formal_args , uint8_t v0 -#define __flatbuffers_uint8_call_args , v0 -#define __flatbuffers_int8_formal_args , int8_t v0 -#define __flatbuffers_int8_call_args , v0 -#define __flatbuffers_bool_formal_args , flatbuffers_bool_t v0 -#define __flatbuffers_bool_call_args , v0 -#define __flatbuffers_uint16_formal_args , uint16_t v0 -#define __flatbuffers_uint16_call_args , v0 -#define __flatbuffers_uint32_formal_args , uint32_t v0 -#define __flatbuffers_uint32_call_args , v0 -#define __flatbuffers_uint64_formal_args , uint64_t v0 -#define __flatbuffers_uint64_call_args , v0 -#define __flatbuffers_int16_formal_args , int16_t v0 -#define __flatbuffers_int16_call_args , v0 -#define __flatbuffers_int32_formal_args , int32_t v0 -#define __flatbuffers_int32_call_args , v0 -#define __flatbuffers_int64_formal_args , int64_t v0 -#define __flatbuffers_int64_call_args , v0 -#define __flatbuffers_float_formal_args , float v0 -#define __flatbuffers_float_call_args , v0 -#define __flatbuffers_double_formal_args , double v0 -#define __flatbuffers_double_call_args , v0 - -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_char, char) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint8, uint8_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int8, int8_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_bool, flatbuffers_bool_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint16, uint16_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint32, uint32_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint64, uint64_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int16, int16_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int32, int32_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int64, int64_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_float, float) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_double, double) - -__flatbuffers_build_string(flatbuffers_) - -__flatbuffers_build_buffer(flatbuffers_) -#include "flatcc/flatcc_epilogue.h" -#endif /* FLATBUFFERS_COMMON_BUILDER_H */ diff --git a/nostrdb/flatcc/reflection/flatbuffers_common_reader.h b/nostrdb/flatcc/reflection/flatbuffers_common_reader.h deleted file mode 100644 index c575308689..0000000000 --- a/nostrdb/flatcc/reflection/flatbuffers_common_reader.h +++ /dev/null @@ -1,578 +0,0 @@ -#ifndef FLATBUFFERS_COMMON_READER_H -#define FLATBUFFERS_COMMON_READER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -/* Common FlatBuffers read functionality for C. */ - -#include "flatcc/flatcc_prologue.h" -#include "flatcc/flatcc_flatbuffers.h" - - -#define __flatbuffers_read_scalar_at_byteoffset(N, p, o) N ## _read_from_pe((uint8_t *)(p) + (o)) -#define __flatbuffers_read_scalar(N, p) N ## _read_from_pe(p) -#define __flatbuffers_read_vt(ID, offset, t)\ -flatbuffers_voffset_t offset = 0;\ -{ flatbuffers_voffset_t id__tmp, *vt__tmp;\ - FLATCC_ASSERT(t != 0 && "null pointer table access");\ - id__tmp = ID;\ - vt__tmp = (flatbuffers_voffset_t *)((uint8_t *)(t) -\ - __flatbuffers_soffset_read_from_pe(t));\ - if (__flatbuffers_voffset_read_from_pe(vt__tmp) >= sizeof(vt__tmp[0]) * (id__tmp + 3u)) {\ - offset = __flatbuffers_voffset_read_from_pe(vt__tmp + id__tmp + 2);\ - }\ -} -#define __flatbuffers_field_present(ID, t) { __flatbuffers_read_vt(ID, offset__tmp, t) return offset__tmp != 0; } -#define __flatbuffers_scalar_field(T, ID, t)\ -{\ - __flatbuffers_read_vt(ID, offset__tmp, t)\ - if (offset__tmp) {\ - return (const T *)((uint8_t *)(t) + offset__tmp);\ - }\ - return 0;\ -} -#define __flatbuffers_define_scalar_field(ID, N, NK, TK, T, V)\ -static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -{ __flatbuffers_read_vt(ID, offset__tmp, t__tmp)\ - return offset__tmp ? __flatbuffers_read_scalar_at_byteoffset(TK, t__tmp, offset__tmp) : V;\ -}\ -static inline T N ## _ ## NK(N ## _table_t t__tmp)\ -{ __flatbuffers_read_vt(ID, offset__tmp, t__tmp)\ - return offset__tmp ? __flatbuffers_read_scalar_at_byteoffset(TK, t__tmp, offset__tmp) : V;\ -}\ -static inline const T *N ## _ ## NK ## _get_ptr(N ## _table_t t__tmp)\ -__flatbuffers_scalar_field(T, ID, t__tmp)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp)\ -__flatbuffers_define_scan_by_scalar_field(N, NK, T) -#define __flatbuffers_define_scalar_optional_field(ID, N, NK, TK, T, V)\ -__flatbuffers_define_scalar_field(ID, N, NK, TK, T, V)\ -static inline TK ## _option_t N ## _ ## NK ## _option(N ## _table_t t__tmp)\ -{ TK ## _option_t ret; __flatbuffers_read_vt(ID, offset__tmp, t__tmp)\ - ret.is_null = offset__tmp == 0; ret.value = offset__tmp ?\ - __flatbuffers_read_scalar_at_byteoffset(TK, t__tmp, offset__tmp) : V;\ - return ret; } -#define __flatbuffers_struct_field(T, ID, t, r)\ -{\ - __flatbuffers_read_vt(ID, offset__tmp, t)\ - if (offset__tmp) {\ - return (T)((uint8_t *)(t) + offset__tmp);\ - }\ - FLATCC_ASSERT(!(r) && "required field missing");\ - return 0;\ -} -#define __flatbuffers_offset_field(T, ID, t, r, adjust)\ -{\ - flatbuffers_uoffset_t *elem__tmp;\ - __flatbuffers_read_vt(ID, offset__tmp, t)\ - if (offset__tmp) {\ - elem__tmp = (flatbuffers_uoffset_t *)((uint8_t *)(t) + offset__tmp);\ - /* Add sizeof so C api can have raw access past header field. */\ - return (T)((uint8_t *)(elem__tmp) + adjust +\ - __flatbuffers_uoffset_read_from_pe(elem__tmp));\ - }\ - FLATCC_ASSERT(!(r) && "required field missing");\ - return 0;\ -} -#define __flatbuffers_vector_field(T, ID, t, r) __flatbuffers_offset_field(T, ID, t, r, sizeof(flatbuffers_uoffset_t)) -#define __flatbuffers_table_field(T, ID, t, r) __flatbuffers_offset_field(T, ID, t, r, 0) -#define __flatbuffers_define_struct_field(ID, N, NK, T, r)\ -static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__flatbuffers_struct_field(T, ID, t__tmp, r)\ -static inline T N ## _ ## NK(N ## _table_t t__tmp)\ -__flatbuffers_struct_field(T, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp) -#define __flatbuffers_define_vector_field(ID, N, NK, T, r)\ -static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__flatbuffers_vector_field(T, ID, t__tmp, r)\ -static inline T N ## _ ## NK(N ## _table_t t__tmp)\ -__flatbuffers_vector_field(T, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp) -#define __flatbuffers_define_table_field(ID, N, NK, T, r)\ -static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__flatbuffers_table_field(T, ID, t__tmp, r)\ -static inline T N ## _ ## NK(N ## _table_t t__tmp)\ -__flatbuffers_table_field(T, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp) -#define __flatbuffers_define_string_field(ID, N, NK, r)\ -static inline flatbuffers_string_t N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__flatbuffers_vector_field(flatbuffers_string_t, ID, t__tmp, r)\ -static inline flatbuffers_string_t N ## _ ## NK(N ## _table_t t__tmp)\ -__flatbuffers_vector_field(flatbuffers_string_t, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp)\ -__flatbuffers_define_scan_by_string_field(N, NK) -#define __flatbuffers_vec_len(vec)\ -{ return (vec) ? (size_t)__flatbuffers_uoffset_read_from_pe((flatbuffers_uoffset_t *)vec - 1) : 0; } -#define __flatbuffers_string_len(s) __flatbuffers_vec_len(s) -static inline size_t flatbuffers_vec_len(const void *vec) -__flatbuffers_vec_len(vec) -#define __flatbuffers_scalar_vec_at(N, vec, i)\ -{ FLATCC_ASSERT(flatbuffers_vec_len(vec) > (i) && "index out of range");\ - return __flatbuffers_read_scalar(N, &(vec)[i]); } -#define __flatbuffers_struct_vec_at(vec, i)\ -{ FLATCC_ASSERT(flatbuffers_vec_len(vec) > (i) && "index out of range"); return (vec) + (i); } -/* `adjust` skips past the header for string vectors. */ -#define __flatbuffers_offset_vec_at(T, vec, i, adjust)\ -{ const flatbuffers_uoffset_t *elem__tmp = (vec) + (i);\ - FLATCC_ASSERT(flatbuffers_vec_len(vec) > (i) && "index out of range");\ - return (T)((uint8_t *)(elem__tmp) + (size_t)__flatbuffers_uoffset_read_from_pe(elem__tmp) + (adjust)); } -#define __flatbuffers_define_scalar_vec_len(N)\ -static inline size_t N ## _vec_len(N ##_vec_t vec__tmp)\ -{ return flatbuffers_vec_len(vec__tmp); } -#define __flatbuffers_define_scalar_vec_at(N, T) \ -static inline T N ## _vec_at(N ## _vec_t vec__tmp, size_t i__tmp)\ -__flatbuffers_scalar_vec_at(N, vec__tmp, i__tmp) -typedef const char *flatbuffers_string_t; -static inline size_t flatbuffers_string_len(flatbuffers_string_t s) -__flatbuffers_string_len(s) -typedef const flatbuffers_uoffset_t *flatbuffers_string_vec_t; -typedef flatbuffers_uoffset_t *flatbuffers_string_mutable_vec_t; -static inline size_t flatbuffers_string_vec_len(flatbuffers_string_vec_t vec) -__flatbuffers_vec_len(vec) -static inline flatbuffers_string_t flatbuffers_string_vec_at(flatbuffers_string_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(flatbuffers_string_t, vec, i, sizeof(vec[0])) -typedef const void *flatbuffers_generic_t; -typedef void *flatbuffers_mutable_generic_t; -static inline flatbuffers_string_t flatbuffers_string_cast_from_generic(const flatbuffers_generic_t p) -{ return p ? ((const char *)p) + __flatbuffers_uoffset__size() : 0; } -typedef const flatbuffers_uoffset_t *flatbuffers_generic_vec_t; -typedef flatbuffers_uoffset_t *flatbuffers_generic_table_mutable_vec_t; -static inline size_t flatbuffers_generic_vec_len(flatbuffers_generic_vec_t vec) -__flatbuffers_vec_len(vec) -static inline flatbuffers_generic_t flatbuffers_generic_vec_at(flatbuffers_generic_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(flatbuffers_generic_t, vec, i, 0) -static inline flatbuffers_generic_t flatbuffers_generic_vec_at_as_string(flatbuffers_generic_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(flatbuffers_generic_t, vec, i, sizeof(vec[0])) -typedef struct flatbuffers_union { - flatbuffers_union_type_t type; - flatbuffers_generic_t value; -} flatbuffers_union_t; -typedef struct flatbuffers_union_vec { - const flatbuffers_union_type_t *type; - const flatbuffers_uoffset_t *value; -} flatbuffers_union_vec_t; -typedef struct flatbuffers_mutable_union { - flatbuffers_union_type_t type; - flatbuffers_mutable_generic_t value; -} flatbuffers_mutable_union_t; -typedef struct flatbuffers_mutable_union_vec { - flatbuffers_union_type_t *type; - flatbuffers_uoffset_t *value; -} flatbuffers_mutable_union_vec_t; -static inline flatbuffers_mutable_union_t flatbuffers_mutable_union_cast(flatbuffers_union_t u__tmp)\ -{ flatbuffers_mutable_union_t mu = { u__tmp.type, (flatbuffers_mutable_generic_t)u__tmp.value };\ - return mu; } -static inline flatbuffers_mutable_union_vec_t flatbuffers_mutable_union_vec_cast(flatbuffers_union_vec_t uv__tmp)\ -{ flatbuffers_mutable_union_vec_t muv =\ - { (flatbuffers_union_type_t *)uv__tmp.type, (flatbuffers_uoffset_t *)uv__tmp.value }; return muv; } -#define __flatbuffers_union_type_field(ID, t)\ -{\ - __flatbuffers_read_vt(ID, offset__tmp, t)\ - return offset__tmp ? __flatbuffers_read_scalar_at_byteoffset(__flatbuffers_utype, t, offset__tmp) : 0;\ -} -static inline flatbuffers_string_t flatbuffers_string_cast_from_union(const flatbuffers_union_t u__tmp)\ -{ return flatbuffers_string_cast_from_generic(u__tmp.value); } -#define __flatbuffers_define_union_field(NS, ID, N, NK, T, r)\ -static inline T ## _union_type_t N ## _ ## NK ## _type_get(N ## _table_t t__tmp)\ -__## NS ## union_type_field(((ID) - 1), t__tmp)\ -static inline NS ## generic_t N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__## NS ## table_field(NS ## generic_t, ID, t__tmp, r)\ -static inline T ## _union_type_t N ## _ ## NK ## _type(N ## _table_t t__tmp)\ -__## NS ## union_type_field(((ID) - 1), t__tmp)\ -static inline NS ## generic_t N ## _ ## NK(N ## _table_t t__tmp)\ -__## NS ## table_field(NS ## generic_t, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__## NS ## field_present(ID, t__tmp)\ -static inline T ## _union_t N ## _ ## NK ## _union(N ## _table_t t__tmp)\ -{ T ## _union_t u__tmp = { 0, 0 }; u__tmp.type = N ## _ ## NK ## _type_get(t__tmp);\ - if (u__tmp.type == 0) return u__tmp; u__tmp.value = N ## _ ## NK ## _get(t__tmp); return u__tmp; }\ -static inline NS ## string_t N ## _ ## NK ## _as_string(N ## _table_t t__tmp)\ -{ return NS ## string_cast_from_generic(N ## _ ## NK ## _get(t__tmp)); }\ - -#define __flatbuffers_define_union_vector_ops(NS, T)\ -static inline size_t T ## _union_vec_len(T ## _union_vec_t uv__tmp)\ -{ return NS ## vec_len(uv__tmp.type); }\ -static inline T ## _union_t T ## _union_vec_at(T ## _union_vec_t uv__tmp, size_t i__tmp)\ -{ T ## _union_t u__tmp = { 0, 0 }; size_t n__tmp = NS ## vec_len(uv__tmp.type);\ - FLATCC_ASSERT(n__tmp > (i__tmp) && "index out of range"); u__tmp.type = uv__tmp.type[i__tmp];\ - /* Unknown type is treated as NONE for schema evolution. */\ - if (u__tmp.type == 0) return u__tmp;\ - u__tmp.value = NS ## generic_vec_at(uv__tmp.value, i__tmp); return u__tmp; }\ -static inline NS ## string_t T ## _union_vec_at_as_string(T ## _union_vec_t uv__tmp, size_t i__tmp)\ -{ return (NS ## string_t) NS ## generic_vec_at_as_string(uv__tmp.value, i__tmp); }\ - -#define __flatbuffers_define_union_vector(NS, T)\ -typedef NS ## union_vec_t T ## _union_vec_t;\ -typedef NS ## mutable_union_vec_t T ## _mutable_union_vec_t;\ -static inline T ## _mutable_union_vec_t T ## _mutable_union_vec_cast(T ## _union_vec_t u__tmp)\ -{ return NS ## mutable_union_vec_cast(u__tmp); }\ -__## NS ## define_union_vector_ops(NS, T) -#define __flatbuffers_define_union(NS, T)\ -typedef NS ## union_t T ## _union_t;\ -typedef NS ## mutable_union_t T ## _mutable_union_t;\ -static inline T ## _mutable_union_t T ## _mutable_union_cast(T ## _union_t u__tmp)\ -{ return NS ## mutable_union_cast(u__tmp); }\ -__## NS ## define_union_vector(NS, T) -#define __flatbuffers_define_union_vector_field(NS, ID, N, NK, T, r)\ -__## NS ## define_vector_field(ID - 1, N, NK ## _type, T ## _vec_t, r)\ -__## NS ## define_vector_field(ID, N, NK, flatbuffers_generic_vec_t, r)\ -static inline T ## _union_vec_t N ## _ ## NK ## _union(N ## _table_t t__tmp)\ -{ T ## _union_vec_t uv__tmp; uv__tmp.type = N ## _ ## NK ## _type_get(t__tmp);\ - uv__tmp.value = N ## _ ## NK(t__tmp);\ - FLATCC_ASSERT(NS ## vec_len(uv__tmp.type) == NS ## vec_len(uv__tmp.value)\ - && "union vector type length mismatch"); return uv__tmp; } -#include -static const size_t flatbuffers_not_found = (size_t)-1; -static const size_t flatbuffers_end = (size_t)-1; -#define __flatbuffers_identity(n) (n) -#define __flatbuffers_min(a, b) ((a) < (b) ? (a) : (b)) -/* Subtraction doesn't work for unsigned types. */ -#define __flatbuffers_scalar_cmp(x, y, n) ((x) < (y) ? -1 : (x) > (y)) -static inline int __flatbuffers_string_n_cmp(flatbuffers_string_t v, const char *s, size_t n) -{ size_t nv = flatbuffers_string_len(v); int x = strncmp(v, s, nv < n ? nv : n); - return x != 0 ? x : nv < n ? -1 : nv > n; } -/* `n` arg unused, but needed by string find macro expansion. */ -static inline int __flatbuffers_string_cmp(flatbuffers_string_t v, const char *s, size_t n) { (void)n; return strcmp(v, s); } -/* A = identity if searching scalar vectors rather than key fields. */ -/* Returns lowest matching index or not_found. */ -#define __flatbuffers_find_by_field(A, V, E, L, K, Kn, T, D)\ -{ T v__tmp; size_t a__tmp = 0, b__tmp, m__tmp; if (!(b__tmp = L(V))) { return flatbuffers_not_found; }\ - --b__tmp;\ - while (a__tmp < b__tmp) {\ - m__tmp = a__tmp + ((b__tmp - a__tmp) >> 1);\ - v__tmp = A(E(V, m__tmp));\ - if ((D(v__tmp, (K), (Kn))) < 0) {\ - a__tmp = m__tmp + 1;\ - } else {\ - b__tmp = m__tmp;\ - }\ - }\ - if (a__tmp == b__tmp) {\ - v__tmp = A(E(V, a__tmp));\ - if (D(v__tmp, (K), (Kn)) == 0) {\ - return a__tmp;\ - }\ - }\ - return flatbuffers_not_found;\ -} -#define __flatbuffers_find_by_scalar_field(A, V, E, L, K, T)\ -__flatbuffers_find_by_field(A, V, E, L, K, 0, T, __flatbuffers_scalar_cmp) -#define __flatbuffers_find_by_string_field(A, V, E, L, K)\ -__flatbuffers_find_by_field(A, V, E, L, K, 0, flatbuffers_string_t, __flatbuffers_string_cmp) -#define __flatbuffers_find_by_string_n_field(A, V, E, L, K, Kn)\ -__flatbuffers_find_by_field(A, V, E, L, K, Kn, flatbuffers_string_t, __flatbuffers_string_n_cmp) -#define __flatbuffers_define_find_by_scalar_field(N, NK, TK)\ -static inline size_t N ## _vec_find_by_ ## NK(N ## _vec_t vec__tmp, TK key__tmp)\ -__flatbuffers_find_by_scalar_field(N ## _ ## NK, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, TK) -#define __flatbuffers_define_scalar_find(N, T)\ -static inline size_t N ## _vec_find(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_find_by_scalar_field(__flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T) -#define __flatbuffers_define_find_by_string_field(N, NK) \ -/* Note: find only works on vectors sorted by this field. */\ -static inline size_t N ## _vec_find_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp)\ -__flatbuffers_find_by_string_field(N ## _ ## NK, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_find_n_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_find_by_string_n_field(N ## _ ## NK, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp) -#define __flatbuffers_define_default_find_by_scalar_field(N, NK, TK)\ -static inline size_t N ## _vec_find(N ## _vec_t vec__tmp, TK key__tmp)\ -{ return N ## _vec_find_by_ ## NK(vec__tmp, key__tmp); } -#define __flatbuffers_define_default_find_by_string_field(N, NK) \ -static inline size_t N ## _vec_find(N ## _vec_t vec__tmp, const char *s__tmp)\ -{ return N ## _vec_find_by_ ## NK(vec__tmp, s__tmp); }\ -static inline size_t N ## _vec_find_n(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_find_n_by_ ## NK(vec__tmp, s__tmp, n__tmp); } -/* A = identity if searching scalar vectors rather than key fields. */ -/* Returns lowest matching index or not_found. */ -#define __flatbuffers_scan_by_field(b, e, A, V, E, L, K, Kn, T, D)\ -{ T v__tmp; size_t i__tmp;\ - for (i__tmp = b; i__tmp < e; ++i__tmp) {\ - v__tmp = A(E(V, i__tmp));\ - if (D(v__tmp, (K), (Kn)) == 0) {\ - return i__tmp;\ - }\ - }\ - return flatbuffers_not_found;\ -} -#define __flatbuffers_rscan_by_field(b, e, A, V, E, L, K, Kn, T, D)\ -{ T v__tmp; size_t i__tmp = e;\ - while (i__tmp-- > b) {\ - v__tmp = A(E(V, i__tmp));\ - if (D(v__tmp, (K), (Kn)) == 0) {\ - return i__tmp;\ - }\ - }\ - return flatbuffers_not_found;\ -} -#define __flatbuffers_scan_by_scalar_field(b, e, A, V, E, L, K, T)\ -__flatbuffers_scan_by_field(b, e, A, V, E, L, K, 0, T, __flatbuffers_scalar_cmp) -#define __flatbuffers_scan_by_string_field(b, e, A, V, E, L, K)\ -__flatbuffers_scan_by_field(b, e, A, V, E, L, K, 0, flatbuffers_string_t, __flatbuffers_string_cmp) -#define __flatbuffers_scan_by_string_n_field(b, e, A, V, E, L, K, Kn)\ -__flatbuffers_scan_by_field(b, e, A, V, E, L, K, Kn, flatbuffers_string_t, __flatbuffers_string_n_cmp) -#define __flatbuffers_rscan_by_scalar_field(b, e, A, V, E, L, K, T)\ -__flatbuffers_rscan_by_field(b, e, A, V, E, L, K, 0, T, __flatbuffers_scalar_cmp) -#define __flatbuffers_rscan_by_string_field(b, e, A, V, E, L, K)\ -__flatbuffers_rscan_by_field(b, e, A, V, E, L, K, 0, flatbuffers_string_t, __flatbuffers_string_cmp) -#define __flatbuffers_rscan_by_string_n_field(b, e, A, V, E, L, K, Kn)\ -__flatbuffers_rscan_by_field(b, e, A, V, E, L, K, Kn, flatbuffers_string_t, __flatbuffers_string_n_cmp) -#define __flatbuffers_define_scan_by_scalar_field(N, NK, T)\ -static inline size_t N ## _vec_scan_by_ ## NK(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_scan_by_scalar_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_scan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\ -__flatbuffers_scan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_rscan_by_ ## NK(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_rscan_by_scalar_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_rscan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\ -__flatbuffers_rscan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T) -#define __flatbuffers_define_scalar_scan(N, T)\ -static inline size_t N ## _vec_scan(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_scan_by_scalar_field(0, N ## _vec_len(vec__tmp), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_scan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\ -__flatbuffers_scan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_rscan(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_rscan_by_scalar_field(0, N ## _vec_len(vec__tmp), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_rscan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\ -__flatbuffers_rscan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T) -#define __flatbuffers_define_scan_by_string_field(N, NK) \ -static inline size_t N ## _vec_scan_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp)\ -__flatbuffers_scan_by_string_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_scan_n_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_scan_by_string_n_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)\ -static inline size_t N ## _vec_scan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\ -__flatbuffers_scan_by_string_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_scan_ex_n_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_scan_by_string_n_field(begin__tmp, __flatbuffers_min( end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)\ -static inline size_t N ## _vec_rscan_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp)\ -__flatbuffers_rscan_by_string_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_rscan_n_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_rscan_by_string_n_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)\ -static inline size_t N ## _vec_rscan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\ -__flatbuffers_rscan_by_string_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_rscan_ex_n_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_rscan_by_string_n_field(begin__tmp, __flatbuffers_min( end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp) -#define __flatbuffers_define_default_scan_by_scalar_field(N, NK, TK)\ -static inline size_t N ## _vec_scan(N ## _vec_t vec__tmp, TK key__tmp)\ -{ return N ## _vec_scan_by_ ## NK(vec__tmp, key__tmp); }\ -static inline size_t N ## _vec_scan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, TK key__tmp)\ -{ return N ## _vec_scan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, key__tmp); }\ -static inline size_t N ## _vec_rscan(N ## _vec_t vec__tmp, TK key__tmp)\ -{ return N ## _vec_rscan_by_ ## NK(vec__tmp, key__tmp); }\ -static inline size_t N ## _vec_rscan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, TK key__tmp)\ -{ return N ## _vec_rscan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, key__tmp); } -#define __flatbuffers_define_default_scan_by_string_field(N, NK) \ -static inline size_t N ## _vec_scan(N ## _vec_t vec__tmp, const char *s__tmp)\ -{ return N ## _vec_scan_by_ ## NK(vec__tmp, s__tmp); }\ -static inline size_t N ## _vec_scan_n(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_scan_n_by_ ## NK(vec__tmp, s__tmp, n__tmp); }\ -static inline size_t N ## _vec_scan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\ -{ return N ## _vec_scan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp); }\ -static inline size_t N ## _vec_scan_ex_n(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_scan_ex_n_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp, n__tmp); }\ -static inline size_t N ## _vec_rscan(N ## _vec_t vec__tmp, const char *s__tmp)\ -{ return N ## _vec_rscan_by_ ## NK(vec__tmp, s__tmp); }\ -static inline size_t N ## _vec_rscan_n(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_rscan_n_by_ ## NK(vec__tmp, s__tmp, n__tmp); }\ -static inline size_t N ## _vec_rscan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\ -{ return N ## _vec_rscan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp); }\ -static inline size_t N ## _vec_rscan_ex_n(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_rscan_ex_n_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp, n__tmp); } -#define __flatbuffers_heap_sort(N, X, A, E, L, TK, TE, D, S)\ -static inline void __ ## N ## X ## __heap_sift_down(\ - N ## _mutable_vec_t vec__tmp, size_t start__tmp, size_t end__tmp)\ -{ size_t child__tmp, root__tmp; TK v1__tmp, v2__tmp, vroot__tmp;\ - root__tmp = start__tmp;\ - while ((root__tmp << 1) <= end__tmp) {\ - child__tmp = root__tmp << 1;\ - if (child__tmp < end__tmp) {\ - v1__tmp = A(E(vec__tmp, child__tmp));\ - v2__tmp = A(E(vec__tmp, child__tmp + 1));\ - if (D(v1__tmp, v2__tmp) < 0) {\ - child__tmp++;\ - }\ - }\ - vroot__tmp = A(E(vec__tmp, root__tmp));\ - v1__tmp = A(E(vec__tmp, child__tmp));\ - if (D(vroot__tmp, v1__tmp) < 0) {\ - S(vec__tmp, root__tmp, child__tmp, TE);\ - root__tmp = child__tmp;\ - } else {\ - return;\ - }\ - }\ -}\ -static inline void __ ## N ## X ## __heap_sort(N ## _mutable_vec_t vec__tmp)\ -{ size_t start__tmp, end__tmp, size__tmp;\ - size__tmp = L(vec__tmp); if (size__tmp == 0) return; end__tmp = size__tmp - 1; start__tmp = size__tmp >> 1;\ - do { __ ## N ## X ## __heap_sift_down(vec__tmp, start__tmp, end__tmp); } while (start__tmp--);\ - while (end__tmp > 0) { \ - S(vec__tmp, 0, end__tmp, TE);\ - __ ## N ## X ## __heap_sift_down(vec__tmp, 0, --end__tmp); } } -#define __flatbuffers_define_sort_by_field(N, NK, TK, TE, D, S)\ - __flatbuffers_heap_sort(N, _sort_by_ ## NK, N ## _ ## NK ## _get, N ## _vec_at, N ## _vec_len, TK, TE, D, S)\ -static inline void N ## _vec_sort_by_ ## NK(N ## _mutable_vec_t vec__tmp)\ -{ __ ## N ## _sort_by_ ## NK ## __heap_sort(vec__tmp); } -#define __flatbuffers_define_sort(N, TK, TE, D, S)\ -__flatbuffers_heap_sort(N, , __flatbuffers_identity, N ## _vec_at, N ## _vec_len, TK, TE, D, S)\ -static inline void N ## _vec_sort(N ## _mutable_vec_t vec__tmp) { __ ## N ## __heap_sort(vec__tmp); } -#define __flatbuffers_scalar_diff(x, y) ((x) < (y) ? -1 : (x) > (y)) -#define __flatbuffers_string_diff(x, y) __flatbuffers_string_n_cmp((x), (const char *)(y), flatbuffers_string_len(y)) -#define __flatbuffers_value_swap(vec, a, b, TE) { TE x__tmp = vec[b]; vec[b] = vec[a]; vec[a] = x__tmp; } -#define __flatbuffers_uoffset_swap(vec, a, b, TE)\ -{ TE ta__tmp, tb__tmp, d__tmp;\ - d__tmp = (TE)((a - b) * sizeof(vec[0]));\ - ta__tmp = __flatbuffers_uoffset_read_from_pe(vec + b) - d__tmp;\ - tb__tmp = __flatbuffers_uoffset_read_from_pe(vec + a) + d__tmp;\ - __flatbuffers_uoffset_write_to_pe(vec + a, ta__tmp);\ - __flatbuffers_uoffset_write_to_pe(vec + b, tb__tmp); } -#define __flatbuffers_scalar_swap(vec, a, b, TE) __flatbuffers_value_swap(vec, a, b, TE) -#define __flatbuffers_string_swap(vec, a, b, TE) __flatbuffers_uoffset_swap(vec, a, b, TE) -#define __flatbuffers_struct_swap(vec, a, b, TE) __flatbuffers_value_swap(vec, a, b, TE) -#define __flatbuffers_table_swap(vec, a, b, TE) __flatbuffers_uoffset_swap(vec, a, b, TE) -#define __flatbuffers_define_struct_sort_by_scalar_field(N, NK, TK, TE)\ - __flatbuffers_define_sort_by_field(N, NK, TK, TE, __flatbuffers_scalar_diff, __flatbuffers_struct_swap) -#define __flatbuffers_define_table_sort_by_scalar_field(N, NK, TK)\ - __flatbuffers_define_sort_by_field(N, NK, TK, flatbuffers_uoffset_t, __flatbuffers_scalar_diff, __flatbuffers_table_swap) -#define __flatbuffers_define_table_sort_by_string_field(N, NK)\ - __flatbuffers_define_sort_by_field(N, NK, flatbuffers_string_t, flatbuffers_uoffset_t, __flatbuffers_string_diff, __flatbuffers_table_swap) -#define __flatbuffers_define_scalar_sort(N, T) __flatbuffers_define_sort(N, T, T, __flatbuffers_scalar_diff, __flatbuffers_scalar_swap) -#define __flatbuffers_define_string_sort() __flatbuffers_define_sort(flatbuffers_string, flatbuffers_string_t, flatbuffers_uoffset_t, __flatbuffers_string_diff, __flatbuffers_string_swap) -#define __flatbuffers_sort_vector_field(N, NK, T, t)\ -{ T ## _mutable_vec_t v__tmp = (T ## _mutable_vec_t) N ## _ ## NK ## _get(t);\ - if (v__tmp) T ## _vec_sort(v__tmp); } -#define __flatbuffers_sort_table_field(N, NK, T, t)\ -{ T ## _sort((T ## _mutable_table_t)N ## _ ## NK ## _get(t)); } -#define __flatbuffers_sort_union_field(N, NK, T, t)\ -{ T ## _sort(T ## _mutable_union_cast(N ## _ ## NK ## _union(t))); } -#define __flatbuffers_sort_table_vector_field_elements(N, NK, T, t)\ -{ T ## _vec_t v__tmp = N ## _ ## NK ## _get(t); size_t i__tmp, n__tmp;\ - n__tmp = T ## _vec_len(v__tmp); for (i__tmp = 0; i__tmp < n__tmp; ++i__tmp) {\ - T ## _sort((T ## _mutable_table_t)T ## _vec_at(v__tmp, i__tmp)); }} -#define __flatbuffers_sort_union_vector_field_elements(N, NK, T, t)\ -{ T ## _union_vec_t v__tmp = N ## _ ## NK ## _union(t); size_t i__tmp, n__tmp;\ - n__tmp = T ## _union_vec_len(v__tmp); for (i__tmp = 0; i__tmp < n__tmp; ++i__tmp) {\ - T ## _sort(T ## _mutable_union_cast(T ## _union_vec_at(v__tmp, i__tmp))); }} -#define __flatbuffers_define_scalar_vector(N, T)\ -typedef const T *N ## _vec_t;\ -typedef T *N ## _mutable_vec_t;\ -__flatbuffers_define_scalar_vec_len(N)\ -__flatbuffers_define_scalar_vec_at(N, T)\ -__flatbuffers_define_scalar_find(N, T)\ -__flatbuffers_define_scalar_scan(N, T)\ -__flatbuffers_define_scalar_sort(N, T) - -#define __flatbuffers_define_integer_type(N, T, W)\ -__flatcc_define_integer_accessors(N, T, W, flatbuffers_endian)\ -__flatbuffers_define_scalar_vector(N, T) -__flatbuffers_define_scalar_vector(flatbuffers_bool, flatbuffers_bool_t) -__flatbuffers_define_scalar_vector(flatbuffers_char, char) -__flatbuffers_define_scalar_vector(flatbuffers_uint8, uint8_t) -__flatbuffers_define_scalar_vector(flatbuffers_int8, int8_t) -__flatbuffers_define_scalar_vector(flatbuffers_uint16, uint16_t) -__flatbuffers_define_scalar_vector(flatbuffers_int16, int16_t) -__flatbuffers_define_scalar_vector(flatbuffers_uint32, uint32_t) -__flatbuffers_define_scalar_vector(flatbuffers_int32, int32_t) -__flatbuffers_define_scalar_vector(flatbuffers_uint64, uint64_t) -__flatbuffers_define_scalar_vector(flatbuffers_int64, int64_t) -__flatbuffers_define_scalar_vector(flatbuffers_float, float) -__flatbuffers_define_scalar_vector(flatbuffers_double, double) -__flatbuffers_define_scalar_vector(flatbuffers_union_type, flatbuffers_union_type_t) -static inline size_t flatbuffers_string_vec_find(flatbuffers_string_vec_t vec, const char *s) -__flatbuffers_find_by_string_field(__flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_find_n(flatbuffers_string_vec_t vec, const char *s, size_t n) -__flatbuffers_find_by_string_n_field(__flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -static inline size_t flatbuffers_string_vec_scan(flatbuffers_string_vec_t vec, const char *s) -__flatbuffers_scan_by_string_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_scan_n(flatbuffers_string_vec_t vec, const char *s, size_t n) -__flatbuffers_scan_by_string_n_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -static inline size_t flatbuffers_string_vec_scan_ex(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s) -__flatbuffers_scan_by_string_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_scan_ex_n(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s, size_t n) -__flatbuffers_scan_by_string_n_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -static inline size_t flatbuffers_string_vec_rscan(flatbuffers_string_vec_t vec, const char *s) -__flatbuffers_rscan_by_string_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_rscan_n(flatbuffers_string_vec_t vec, const char *s, size_t n) -__flatbuffers_rscan_by_string_n_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -static inline size_t flatbuffers_string_vec_rscan_ex(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s) -__flatbuffers_rscan_by_string_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_rscan_ex_n(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s, size_t n) -__flatbuffers_rscan_by_string_n_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -__flatbuffers_define_string_sort() -#define __flatbuffers_define_struct_scalar_fixed_array_field(N, NK, TK, T, L)\ -static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp, size_t i__tmp)\ -{ if (!t__tmp || i__tmp >= L) return 0;\ - return __flatbuffers_read_scalar(TK, &(t__tmp->NK[i__tmp])); }\ -static inline const T *N ## _ ## NK ## _get_ptr(N ## _struct_t t__tmp)\ -{ return t__tmp ? t__tmp->NK : 0; }\ -static inline size_t N ## _ ## NK ## _get_len(void) { return L; }\ -static inline T N ## _ ## NK (N ## _struct_t t__tmp, size_t i__tmp)\ -{ return N ## _ ## NK ## _get(t__tmp, i__tmp); } -#define __flatbuffers_define_struct_struct_fixed_array_field(N, NK, T, L)\ -static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp, size_t i__tmp)\ -{ if (!t__tmp || i__tmp >= L) return 0; return t__tmp->NK + i__tmp; }static inline T N ## _ ## NK ## _get_ptr(N ## _struct_t t__tmp)\ -{ return t__tmp ? t__tmp->NK : 0; }\ -static inline size_t N ## _ ## NK ## _get_len(void) { return L; }\ -static inline T N ## _ ## NK(N ## _struct_t t__tmp, size_t i__tmp)\ -{ if (!t__tmp || i__tmp >= L) return 0; return t__tmp->NK + i__tmp; } -#define __flatbuffers_define_struct_scalar_field(N, NK, TK, T)\ -static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp)\ -{ return t__tmp ? __flatbuffers_read_scalar(TK, &(t__tmp->NK)) : 0; }\ -static inline const T *N ## _ ## NK ## _get_ptr(N ## _struct_t t__tmp)\ -{ return t__tmp ? &(t__tmp->NK) : 0; }\ -static inline T N ## _ ## NK (N ## _struct_t t__tmp)\ -{ return t__tmp ? __flatbuffers_read_scalar(TK, &(t__tmp->NK)) : 0; }\ -__flatbuffers_define_scan_by_scalar_field(N, NK, T) -#define __flatbuffers_define_struct_struct_field(N, NK, T)\ -static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp) { return t__tmp ? &(t__tmp->NK) : 0; }\ -static inline T N ## _ ## NK (N ## _struct_t t__tmp) { return t__tmp ? &(t__tmp->NK) : 0; } -/* If fid is null, the function returns true without testing as buffer is not expected to have any id. */ -static inline int flatbuffers_has_identifier(const void *buffer, const char *fid) -{ flatbuffers_thash_t id, id2 = 0; if (fid == 0) { return 1; }; - id2 = flatbuffers_type_hash_from_string(fid); - id = __flatbuffers_thash_read_from_pe(((flatbuffers_uoffset_t *)buffer) + 1); - return id2 == 0 || id == id2; } -static inline int flatbuffers_has_type_hash(const void *buffer, flatbuffers_thash_t thash) -{ return thash == 0 || (__flatbuffers_thash_read_from_pe((flatbuffers_uoffset_t *)buffer + 1) == thash); } - -static inline flatbuffers_thash_t flatbuffers_get_type_hash(const void *buffer) -{ return __flatbuffers_thash_read_from_pe((flatbuffers_uoffset_t *)buffer + 1); } - -#define flatbuffers_verify_endian() flatbuffers_has_identifier("\x00\x00\x00\x00" "1234", "1234") -static inline void *flatbuffers_read_size_prefix(void *b, size_t *size_out) -{ if (size_out) { *size_out = (size_t)__flatbuffers_uoffset_read_from_pe(b); } - return (uint8_t *)b + sizeof(flatbuffers_uoffset_t); } -/* Null file identifier accepts anything, otherwise fid should be 4 characters. */ -#define __flatbuffers_read_root(T, K, buffer, fid)\ - ((!buffer || !flatbuffers_has_identifier(buffer, fid)) ? 0 :\ - ((T ## _ ## K ## t)(((uint8_t *)buffer) +\ - __flatbuffers_uoffset_read_from_pe(buffer)))) -#define __flatbuffers_read_typed_root(T, K, buffer, thash)\ - ((!buffer || !flatbuffers_has_type_hash(buffer, thash)) ? 0 :\ - ((T ## _ ## K ## t)(((uint8_t *)buffer) +\ - __flatbuffers_uoffset_read_from_pe(buffer)))) -#define __flatbuffers_nested_buffer_as_root(C, N, T, K)\ -static inline T ## _ ## K ## t C ## _ ## N ## _as_root_with_identifier(C ## _ ## table_t t__tmp, const char *fid__tmp)\ -{ const uint8_t *buffer__tmp = C ## _ ## N(t__tmp); return __flatbuffers_read_root(T, K, buffer__tmp, fid__tmp); }\ -static inline T ## _ ## K ## t C ## _ ## N ## _as_typed_root(C ## _ ## table_t t__tmp)\ -{ const uint8_t *buffer__tmp = C ## _ ## N(t__tmp); return __flatbuffers_read_root(T, K, buffer__tmp, C ## _ ## type_identifier); }\ -static inline T ## _ ## K ## t C ## _ ## N ## _as_root(C ## _ ## table_t t__tmp)\ -{ const char *fid__tmp = T ## _file_identifier;\ - const uint8_t *buffer__tmp = C ## _ ## N(t__tmp); return __flatbuffers_read_root(T, K, buffer__tmp, fid__tmp); } -#define __flatbuffers_buffer_as_root(N, K)\ -static inline N ## _ ## K ## t N ## _as_root_with_identifier(const void *buffer__tmp, const char *fid__tmp)\ -{ return __flatbuffers_read_root(N, K, buffer__tmp, fid__tmp); }\ -static inline N ## _ ## K ## t N ## _as_root_with_type_hash(const void *buffer__tmp, flatbuffers_thash_t thash__tmp)\ -{ return __flatbuffers_read_typed_root(N, K, buffer__tmp, thash__tmp); }\ -static inline N ## _ ## K ## t N ## _as_root(const void *buffer__tmp)\ -{ const char *fid__tmp = N ## _file_identifier;\ - return __flatbuffers_read_root(N, K, buffer__tmp, fid__tmp); }\ -static inline N ## _ ## K ## t N ## _as_typed_root(const void *buffer__tmp)\ -{ return __flatbuffers_read_typed_root(N, K, buffer__tmp, N ## _type_hash); } -#define __flatbuffers_struct_as_root(N) __flatbuffers_buffer_as_root(N, struct_) -#define __flatbuffers_table_as_root(N) __flatbuffers_buffer_as_root(N, table_) - -#include "flatcc/flatcc_epilogue.h" -#endif /* FLATBUFFERS_COMMON_H */ diff --git a/nostrdb/flatcc/reflection/reflection_builder.h b/nostrdb/flatcc/reflection/reflection_builder.h deleted file mode 100644 index 65aef73e55..0000000000 --- a/nostrdb/flatcc/reflection/reflection_builder.h +++ /dev/null @@ -1,457 +0,0 @@ -#ifndef REFLECTION_BUILDER_H -#define REFLECTION_BUILDER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#ifndef REFLECTION_READER_H -#include "reflection_reader.h" -#endif -#ifndef FLATBUFFERS_COMMON_BUILDER_H -#include "flatbuffers_common_builder.h" -#endif -#include "flatcc/flatcc_prologue.h" -#undef flatbuffers_identifier -#define flatbuffers_identifier "BFBS" -#undef flatbuffers_extension -#define flatbuffers_extension "bfbs" - -#define __reflection_BaseType_formal_args , reflection_BaseType_enum_t v0 -#define __reflection_BaseType_call_args , v0 -__flatbuffers_build_scalar(flatbuffers_, reflection_BaseType, reflection_BaseType_enum_t) - -static const flatbuffers_voffset_t __reflection_Type_required[] = { 0 }; -typedef flatbuffers_ref_t reflection_Type_ref_t; -static reflection_Type_ref_t reflection_Type_clone(flatbuffers_builder_t *B, reflection_Type_table_t t); -__flatbuffers_build_table(flatbuffers_, reflection_Type, 4) - -static const flatbuffers_voffset_t __reflection_KeyValue_required[] = { 0, 0 }; -typedef flatbuffers_ref_t reflection_KeyValue_ref_t; -static reflection_KeyValue_ref_t reflection_KeyValue_clone(flatbuffers_builder_t *B, reflection_KeyValue_table_t t); -__flatbuffers_build_table(flatbuffers_, reflection_KeyValue, 2) - -static const flatbuffers_voffset_t __reflection_EnumVal_required[] = { 0, 0 }; -typedef flatbuffers_ref_t reflection_EnumVal_ref_t; -static reflection_EnumVal_ref_t reflection_EnumVal_clone(flatbuffers_builder_t *B, reflection_EnumVal_table_t t); -__flatbuffers_build_table(flatbuffers_, reflection_EnumVal, 5) - -static const flatbuffers_voffset_t __reflection_Enum_required[] = { 0, 1, 3, 0 }; -typedef flatbuffers_ref_t reflection_Enum_ref_t; -static reflection_Enum_ref_t reflection_Enum_clone(flatbuffers_builder_t *B, reflection_Enum_table_t t); -__flatbuffers_build_table(flatbuffers_, reflection_Enum, 6) - -static const flatbuffers_voffset_t __reflection_Field_required[] = { 0, 1, 0 }; -typedef flatbuffers_ref_t reflection_Field_ref_t; -static reflection_Field_ref_t reflection_Field_clone(flatbuffers_builder_t *B, reflection_Field_table_t t); -__flatbuffers_build_table(flatbuffers_, reflection_Field, 12) - -static const flatbuffers_voffset_t __reflection_Object_required[] = { 0, 1, 0 }; -typedef flatbuffers_ref_t reflection_Object_ref_t; -static reflection_Object_ref_t reflection_Object_clone(flatbuffers_builder_t *B, reflection_Object_table_t t); -__flatbuffers_build_table(flatbuffers_, reflection_Object, 7) - -static const flatbuffers_voffset_t __reflection_RPCCall_required[] = { 0, 1, 2, 0 }; -typedef flatbuffers_ref_t reflection_RPCCall_ref_t; -static reflection_RPCCall_ref_t reflection_RPCCall_clone(flatbuffers_builder_t *B, reflection_RPCCall_table_t t); -__flatbuffers_build_table(flatbuffers_, reflection_RPCCall, 5) - -static const flatbuffers_voffset_t __reflection_Service_required[] = { 0, 0 }; -typedef flatbuffers_ref_t reflection_Service_ref_t; -static reflection_Service_ref_t reflection_Service_clone(flatbuffers_builder_t *B, reflection_Service_table_t t); -__flatbuffers_build_table(flatbuffers_, reflection_Service, 4) - -static const flatbuffers_voffset_t __reflection_Schema_required[] = { 0, 1, 0 }; -typedef flatbuffers_ref_t reflection_Schema_ref_t; -static reflection_Schema_ref_t reflection_Schema_clone(flatbuffers_builder_t *B, reflection_Schema_table_t t); -__flatbuffers_build_table(flatbuffers_, reflection_Schema, 6) - -#define __reflection_Type_formal_args , reflection_BaseType_enum_t v0, reflection_BaseType_enum_t v1, int32_t v2, uint16_t v3 -#define __reflection_Type_call_args , v0, v1, v2, v3 -static inline reflection_Type_ref_t reflection_Type_create(flatbuffers_builder_t *B __reflection_Type_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, reflection_Type, reflection_Type_file_identifier, reflection_Type_type_identifier) - -#define __reflection_KeyValue_formal_args , flatbuffers_string_ref_t v0, flatbuffers_string_ref_t v1 -#define __reflection_KeyValue_call_args , v0, v1 -static inline reflection_KeyValue_ref_t reflection_KeyValue_create(flatbuffers_builder_t *B __reflection_KeyValue_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, reflection_KeyValue, reflection_KeyValue_file_identifier, reflection_KeyValue_type_identifier) - -#define __reflection_EnumVal_formal_args ,\ - flatbuffers_string_ref_t v0, int64_t v1, reflection_Object_ref_t v2, reflection_Type_ref_t v3, flatbuffers_string_vec_ref_t v4 -#define __reflection_EnumVal_call_args ,\ - v0, v1, v2, v3, v4 -static inline reflection_EnumVal_ref_t reflection_EnumVal_create(flatbuffers_builder_t *B __reflection_EnumVal_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, reflection_EnumVal, reflection_EnumVal_file_identifier, reflection_EnumVal_type_identifier) - -#define __reflection_Enum_formal_args ,\ - flatbuffers_string_ref_t v0, reflection_EnumVal_vec_ref_t v1, flatbuffers_bool_t v2, reflection_Type_ref_t v3, reflection_KeyValue_vec_ref_t v4, flatbuffers_string_vec_ref_t v5 -#define __reflection_Enum_call_args ,\ - v0, v1, v2, v3, v4, v5 -static inline reflection_Enum_ref_t reflection_Enum_create(flatbuffers_builder_t *B __reflection_Enum_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, reflection_Enum, reflection_Enum_file_identifier, reflection_Enum_type_identifier) - -#define __reflection_Field_formal_args ,\ - flatbuffers_string_ref_t v0, reflection_Type_ref_t v1, uint16_t v2, uint16_t v3,\ - int64_t v4, double v5, flatbuffers_bool_t v6, flatbuffers_bool_t v7,\ - flatbuffers_bool_t v8, reflection_KeyValue_vec_ref_t v9, flatbuffers_string_vec_ref_t v10, flatbuffers_bool_t v11 -#define __reflection_Field_call_args ,\ - v0, v1, v2, v3,\ - v4, v5, v6, v7,\ - v8, v9, v10, v11 -static inline reflection_Field_ref_t reflection_Field_create(flatbuffers_builder_t *B __reflection_Field_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, reflection_Field, reflection_Field_file_identifier, reflection_Field_type_identifier) - -#define __reflection_Object_formal_args ,\ - flatbuffers_string_ref_t v0, reflection_Field_vec_ref_t v1, flatbuffers_bool_t v2, int32_t v3,\ - int32_t v4, reflection_KeyValue_vec_ref_t v5, flatbuffers_string_vec_ref_t v6 -#define __reflection_Object_call_args ,\ - v0, v1, v2, v3,\ - v4, v5, v6 -static inline reflection_Object_ref_t reflection_Object_create(flatbuffers_builder_t *B __reflection_Object_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, reflection_Object, reflection_Object_file_identifier, reflection_Object_type_identifier) - -#define __reflection_RPCCall_formal_args ,\ - flatbuffers_string_ref_t v0, reflection_Object_ref_t v1, reflection_Object_ref_t v2, reflection_KeyValue_vec_ref_t v3, flatbuffers_string_vec_ref_t v4 -#define __reflection_RPCCall_call_args ,\ - v0, v1, v2, v3, v4 -static inline reflection_RPCCall_ref_t reflection_RPCCall_create(flatbuffers_builder_t *B __reflection_RPCCall_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, reflection_RPCCall, reflection_RPCCall_file_identifier, reflection_RPCCall_type_identifier) - -#define __reflection_Service_formal_args , flatbuffers_string_ref_t v0, reflection_RPCCall_vec_ref_t v1, reflection_KeyValue_vec_ref_t v2, flatbuffers_string_vec_ref_t v3 -#define __reflection_Service_call_args , v0, v1, v2, v3 -static inline reflection_Service_ref_t reflection_Service_create(flatbuffers_builder_t *B __reflection_Service_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, reflection_Service, reflection_Service_file_identifier, reflection_Service_type_identifier) - -#define __reflection_Schema_formal_args ,\ - reflection_Object_vec_ref_t v0, reflection_Enum_vec_ref_t v1, flatbuffers_string_ref_t v2, flatbuffers_string_ref_t v3, reflection_Object_ref_t v4, reflection_Service_vec_ref_t v5 -#define __reflection_Schema_call_args ,\ - v0, v1, v2, v3, v4, v5 -static inline reflection_Schema_ref_t reflection_Schema_create(flatbuffers_builder_t *B __reflection_Schema_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, reflection_Schema, reflection_Schema_file_identifier, reflection_Schema_type_identifier) - -__flatbuffers_build_scalar_field(0, flatbuffers_, reflection_Type_base_type, reflection_BaseType, reflection_BaseType_enum_t, 1, 1, INT8_C(0), reflection_Type) -__flatbuffers_build_scalar_field(1, flatbuffers_, reflection_Type_element, reflection_BaseType, reflection_BaseType_enum_t, 1, 1, INT8_C(0), reflection_Type) -__flatbuffers_build_scalar_field(2, flatbuffers_, reflection_Type_index, flatbuffers_int32, int32_t, 4, 4, INT32_C(-1), reflection_Type) -__flatbuffers_build_scalar_field(3, flatbuffers_, reflection_Type_fixed_length, flatbuffers_uint16, uint16_t, 2, 2, UINT16_C(0), reflection_Type) - -static inline reflection_Type_ref_t reflection_Type_create(flatbuffers_builder_t *B __reflection_Type_formal_args) -{ - if (reflection_Type_start(B) - || reflection_Type_index_add(B, v2) - || reflection_Type_fixed_length_add(B, v3) - || reflection_Type_base_type_add(B, v0) - || reflection_Type_element_add(B, v1)) { - return 0; - } - return reflection_Type_end(B); -} - -static reflection_Type_ref_t reflection_Type_clone(flatbuffers_builder_t *B, reflection_Type_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (reflection_Type_start(B) - || reflection_Type_index_pick(B, t) - || reflection_Type_fixed_length_pick(B, t) - || reflection_Type_base_type_pick(B, t) - || reflection_Type_element_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, reflection_Type_end(B)); -} - -__flatbuffers_build_string_field(0, flatbuffers_, reflection_KeyValue_key, reflection_KeyValue) -__flatbuffers_build_string_field(1, flatbuffers_, reflection_KeyValue_value, reflection_KeyValue) - -static inline reflection_KeyValue_ref_t reflection_KeyValue_create(flatbuffers_builder_t *B __reflection_KeyValue_formal_args) -{ - if (reflection_KeyValue_start(B) - || reflection_KeyValue_key_add(B, v0) - || reflection_KeyValue_value_add(B, v1)) { - return 0; - } - return reflection_KeyValue_end(B); -} - -static reflection_KeyValue_ref_t reflection_KeyValue_clone(flatbuffers_builder_t *B, reflection_KeyValue_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (reflection_KeyValue_start(B) - || reflection_KeyValue_key_pick(B, t) - || reflection_KeyValue_value_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, reflection_KeyValue_end(B)); -} - -__flatbuffers_build_string_field(0, flatbuffers_, reflection_EnumVal_name, reflection_EnumVal) -__flatbuffers_build_scalar_field(1, flatbuffers_, reflection_EnumVal_value, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), reflection_EnumVal) -__flatbuffers_build_table_field(2, flatbuffers_, reflection_EnumVal_object, reflection_Object, reflection_EnumVal) -__flatbuffers_build_table_field(3, flatbuffers_, reflection_EnumVal_union_type, reflection_Type, reflection_EnumVal) -__flatbuffers_build_string_vector_field(4, flatbuffers_, reflection_EnumVal_documentation, reflection_EnumVal) - -static inline reflection_EnumVal_ref_t reflection_EnumVal_create(flatbuffers_builder_t *B __reflection_EnumVal_formal_args) -{ - if (reflection_EnumVal_start(B) - || reflection_EnumVal_value_add(B, v1) - || reflection_EnumVal_name_add(B, v0) - || reflection_EnumVal_object_add(B, v2) - || reflection_EnumVal_union_type_add(B, v3) - || reflection_EnumVal_documentation_add(B, v4)) { - return 0; - } - return reflection_EnumVal_end(B); -} - -static reflection_EnumVal_ref_t reflection_EnumVal_clone(flatbuffers_builder_t *B, reflection_EnumVal_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (reflection_EnumVal_start(B) - || reflection_EnumVal_value_pick(B, t) - || reflection_EnumVal_name_pick(B, t) - || reflection_EnumVal_object_pick(B, t) - || reflection_EnumVal_union_type_pick(B, t) - || reflection_EnumVal_documentation_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, reflection_EnumVal_end(B)); -} - -__flatbuffers_build_string_field(0, flatbuffers_, reflection_Enum_name, reflection_Enum) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(1, flatbuffers_, reflection_Enum_values, reflection_EnumVal, reflection_Enum) -__flatbuffers_build_scalar_field(2, flatbuffers_, reflection_Enum_is_union, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), reflection_Enum) -__flatbuffers_build_table_field(3, flatbuffers_, reflection_Enum_underlying_type, reflection_Type, reflection_Enum) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(4, flatbuffers_, reflection_Enum_attributes, reflection_KeyValue, reflection_Enum) -__flatbuffers_build_string_vector_field(5, flatbuffers_, reflection_Enum_documentation, reflection_Enum) - -static inline reflection_Enum_ref_t reflection_Enum_create(flatbuffers_builder_t *B __reflection_Enum_formal_args) -{ - if (reflection_Enum_start(B) - || reflection_Enum_name_add(B, v0) - || reflection_Enum_values_add(B, v1) - || reflection_Enum_underlying_type_add(B, v3) - || reflection_Enum_attributes_add(B, v4) - || reflection_Enum_documentation_add(B, v5) - || reflection_Enum_is_union_add(B, v2)) { - return 0; - } - return reflection_Enum_end(B); -} - -static reflection_Enum_ref_t reflection_Enum_clone(flatbuffers_builder_t *B, reflection_Enum_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (reflection_Enum_start(B) - || reflection_Enum_name_pick(B, t) - || reflection_Enum_values_pick(B, t) - || reflection_Enum_underlying_type_pick(B, t) - || reflection_Enum_attributes_pick(B, t) - || reflection_Enum_documentation_pick(B, t) - || reflection_Enum_is_union_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, reflection_Enum_end(B)); -} - -__flatbuffers_build_string_field(0, flatbuffers_, reflection_Field_name, reflection_Field) -__flatbuffers_build_table_field(1, flatbuffers_, reflection_Field_type, reflection_Type, reflection_Field) -__flatbuffers_build_scalar_field(2, flatbuffers_, reflection_Field_id, flatbuffers_uint16, uint16_t, 2, 2, UINT16_C(0), reflection_Field) -__flatbuffers_build_scalar_field(3, flatbuffers_, reflection_Field_offset, flatbuffers_uint16, uint16_t, 2, 2, UINT16_C(0), reflection_Field) -__flatbuffers_build_scalar_field(4, flatbuffers_, reflection_Field_default_integer, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), reflection_Field) -__flatbuffers_build_scalar_field(5, flatbuffers_, reflection_Field_default_real, flatbuffers_double, double, 8, 8, 0.0000000000000000, reflection_Field) -__flatbuffers_build_scalar_field(6, flatbuffers_, reflection_Field_deprecated, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), reflection_Field) -__flatbuffers_build_scalar_field(7, flatbuffers_, reflection_Field_required, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), reflection_Field) -__flatbuffers_build_scalar_field(8, flatbuffers_, reflection_Field_key, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), reflection_Field) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(9, flatbuffers_, reflection_Field_attributes, reflection_KeyValue, reflection_Field) -__flatbuffers_build_string_vector_field(10, flatbuffers_, reflection_Field_documentation, reflection_Field) -__flatbuffers_build_scalar_field(11, flatbuffers_, reflection_Field_optional, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), reflection_Field) - -static inline reflection_Field_ref_t reflection_Field_create(flatbuffers_builder_t *B __reflection_Field_formal_args) -{ - if (reflection_Field_start(B) - || reflection_Field_default_integer_add(B, v4) - || reflection_Field_default_real_add(B, v5) - || reflection_Field_name_add(B, v0) - || reflection_Field_type_add(B, v1) - || reflection_Field_attributes_add(B, v9) - || reflection_Field_documentation_add(B, v10) - || reflection_Field_id_add(B, v2) - || reflection_Field_offset_add(B, v3) - || reflection_Field_deprecated_add(B, v6) - || reflection_Field_required_add(B, v7) - || reflection_Field_key_add(B, v8) - || reflection_Field_optional_add(B, v11)) { - return 0; - } - return reflection_Field_end(B); -} - -static reflection_Field_ref_t reflection_Field_clone(flatbuffers_builder_t *B, reflection_Field_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (reflection_Field_start(B) - || reflection_Field_default_integer_pick(B, t) - || reflection_Field_default_real_pick(B, t) - || reflection_Field_name_pick(B, t) - || reflection_Field_type_pick(B, t) - || reflection_Field_attributes_pick(B, t) - || reflection_Field_documentation_pick(B, t) - || reflection_Field_id_pick(B, t) - || reflection_Field_offset_pick(B, t) - || reflection_Field_deprecated_pick(B, t) - || reflection_Field_required_pick(B, t) - || reflection_Field_key_pick(B, t) - || reflection_Field_optional_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, reflection_Field_end(B)); -} - -__flatbuffers_build_string_field(0, flatbuffers_, reflection_Object_name, reflection_Object) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(1, flatbuffers_, reflection_Object_fields, reflection_Field, reflection_Object) -__flatbuffers_build_scalar_field(2, flatbuffers_, reflection_Object_is_struct, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), reflection_Object) -__flatbuffers_build_scalar_field(3, flatbuffers_, reflection_Object_minalign, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), reflection_Object) -__flatbuffers_build_scalar_field(4, flatbuffers_, reflection_Object_bytesize, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), reflection_Object) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(5, flatbuffers_, reflection_Object_attributes, reflection_KeyValue, reflection_Object) -__flatbuffers_build_string_vector_field(6, flatbuffers_, reflection_Object_documentation, reflection_Object) - -static inline reflection_Object_ref_t reflection_Object_create(flatbuffers_builder_t *B __reflection_Object_formal_args) -{ - if (reflection_Object_start(B) - || reflection_Object_name_add(B, v0) - || reflection_Object_fields_add(B, v1) - || reflection_Object_minalign_add(B, v3) - || reflection_Object_bytesize_add(B, v4) - || reflection_Object_attributes_add(B, v5) - || reflection_Object_documentation_add(B, v6) - || reflection_Object_is_struct_add(B, v2)) { - return 0; - } - return reflection_Object_end(B); -} - -static reflection_Object_ref_t reflection_Object_clone(flatbuffers_builder_t *B, reflection_Object_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (reflection_Object_start(B) - || reflection_Object_name_pick(B, t) - || reflection_Object_fields_pick(B, t) - || reflection_Object_minalign_pick(B, t) - || reflection_Object_bytesize_pick(B, t) - || reflection_Object_attributes_pick(B, t) - || reflection_Object_documentation_pick(B, t) - || reflection_Object_is_struct_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, reflection_Object_end(B)); -} - -__flatbuffers_build_string_field(0, flatbuffers_, reflection_RPCCall_name, reflection_RPCCall) -__flatbuffers_build_table_field(1, flatbuffers_, reflection_RPCCall_request, reflection_Object, reflection_RPCCall) -__flatbuffers_build_table_field(2, flatbuffers_, reflection_RPCCall_response, reflection_Object, reflection_RPCCall) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(3, flatbuffers_, reflection_RPCCall_attributes, reflection_KeyValue, reflection_RPCCall) -__flatbuffers_build_string_vector_field(4, flatbuffers_, reflection_RPCCall_documentation, reflection_RPCCall) - -static inline reflection_RPCCall_ref_t reflection_RPCCall_create(flatbuffers_builder_t *B __reflection_RPCCall_formal_args) -{ - if (reflection_RPCCall_start(B) - || reflection_RPCCall_name_add(B, v0) - || reflection_RPCCall_request_add(B, v1) - || reflection_RPCCall_response_add(B, v2) - || reflection_RPCCall_attributes_add(B, v3) - || reflection_RPCCall_documentation_add(B, v4)) { - return 0; - } - return reflection_RPCCall_end(B); -} - -static reflection_RPCCall_ref_t reflection_RPCCall_clone(flatbuffers_builder_t *B, reflection_RPCCall_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (reflection_RPCCall_start(B) - || reflection_RPCCall_name_pick(B, t) - || reflection_RPCCall_request_pick(B, t) - || reflection_RPCCall_response_pick(B, t) - || reflection_RPCCall_attributes_pick(B, t) - || reflection_RPCCall_documentation_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, reflection_RPCCall_end(B)); -} - -__flatbuffers_build_string_field(0, flatbuffers_, reflection_Service_name, reflection_Service) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(1, flatbuffers_, reflection_Service_calls, reflection_RPCCall, reflection_Service) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(2, flatbuffers_, reflection_Service_attributes, reflection_KeyValue, reflection_Service) -__flatbuffers_build_string_vector_field(3, flatbuffers_, reflection_Service_documentation, reflection_Service) - -static inline reflection_Service_ref_t reflection_Service_create(flatbuffers_builder_t *B __reflection_Service_formal_args) -{ - if (reflection_Service_start(B) - || reflection_Service_name_add(B, v0) - || reflection_Service_calls_add(B, v1) - || reflection_Service_attributes_add(B, v2) - || reflection_Service_documentation_add(B, v3)) { - return 0; - } - return reflection_Service_end(B); -} - -static reflection_Service_ref_t reflection_Service_clone(flatbuffers_builder_t *B, reflection_Service_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (reflection_Service_start(B) - || reflection_Service_name_pick(B, t) - || reflection_Service_calls_pick(B, t) - || reflection_Service_attributes_pick(B, t) - || reflection_Service_documentation_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, reflection_Service_end(B)); -} - -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(0, flatbuffers_, reflection_Schema_objects, reflection_Object, reflection_Schema) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(1, flatbuffers_, reflection_Schema_enums, reflection_Enum, reflection_Schema) -__flatbuffers_build_string_field(2, flatbuffers_, reflection_Schema_file_ident, reflection_Schema) -__flatbuffers_build_string_field(3, flatbuffers_, reflection_Schema_file_ext, reflection_Schema) -__flatbuffers_build_table_field(4, flatbuffers_, reflection_Schema_root_table, reflection_Object, reflection_Schema) -/* vector has keyed elements */ -__flatbuffers_build_table_vector_field(5, flatbuffers_, reflection_Schema_services, reflection_Service, reflection_Schema) - -static inline reflection_Schema_ref_t reflection_Schema_create(flatbuffers_builder_t *B __reflection_Schema_formal_args) -{ - if (reflection_Schema_start(B) - || reflection_Schema_objects_add(B, v0) - || reflection_Schema_enums_add(B, v1) - || reflection_Schema_file_ident_add(B, v2) - || reflection_Schema_file_ext_add(B, v3) - || reflection_Schema_root_table_add(B, v4) - || reflection_Schema_services_add(B, v5)) { - return 0; - } - return reflection_Schema_end(B); -} - -static reflection_Schema_ref_t reflection_Schema_clone(flatbuffers_builder_t *B, reflection_Schema_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (reflection_Schema_start(B) - || reflection_Schema_objects_pick(B, t) - || reflection_Schema_enums_pick(B, t) - || reflection_Schema_file_ident_pick(B, t) - || reflection_Schema_file_ext_pick(B, t) - || reflection_Schema_root_table_pick(B, t) - || reflection_Schema_services_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, reflection_Schema_end(B)); -} - -#include "flatcc/flatcc_epilogue.h" -#endif /* REFLECTION_BUILDER_H */ diff --git a/nostrdb/flatcc/reflection/reflection_reader.h b/nostrdb/flatcc/reflection/reflection_reader.h deleted file mode 100644 index bf6a0e9460..0000000000 --- a/nostrdb/flatcc/reflection/reflection_reader.h +++ /dev/null @@ -1,411 +0,0 @@ -#ifndef REFLECTION_READER_H -#define REFLECTION_READER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#ifndef FLATBUFFERS_COMMON_READER_H -#include "flatbuffers_common_reader.h" -#endif -#include "flatcc/flatcc_flatbuffers.h" -#ifndef __alignas_is_defined -#include -#endif -#include "flatcc/flatcc_prologue.h" -#undef flatbuffers_identifier -#define flatbuffers_identifier "BFBS" -#undef flatbuffers_extension -#define flatbuffers_extension "bfbs" - - -typedef const struct reflection_Type_table *reflection_Type_table_t; -typedef struct reflection_Type_table *reflection_Type_mutable_table_t; -typedef const flatbuffers_uoffset_t *reflection_Type_vec_t; -typedef flatbuffers_uoffset_t *reflection_Type_mutable_vec_t; -typedef const struct reflection_KeyValue_table *reflection_KeyValue_table_t; -typedef struct reflection_KeyValue_table *reflection_KeyValue_mutable_table_t; -typedef const flatbuffers_uoffset_t *reflection_KeyValue_vec_t; -typedef flatbuffers_uoffset_t *reflection_KeyValue_mutable_vec_t; -typedef const struct reflection_EnumVal_table *reflection_EnumVal_table_t; -typedef struct reflection_EnumVal_table *reflection_EnumVal_mutable_table_t; -typedef const flatbuffers_uoffset_t *reflection_EnumVal_vec_t; -typedef flatbuffers_uoffset_t *reflection_EnumVal_mutable_vec_t; -typedef const struct reflection_Enum_table *reflection_Enum_table_t; -typedef struct reflection_Enum_table *reflection_Enum_mutable_table_t; -typedef const flatbuffers_uoffset_t *reflection_Enum_vec_t; -typedef flatbuffers_uoffset_t *reflection_Enum_mutable_vec_t; -typedef const struct reflection_Field_table *reflection_Field_table_t; -typedef struct reflection_Field_table *reflection_Field_mutable_table_t; -typedef const flatbuffers_uoffset_t *reflection_Field_vec_t; -typedef flatbuffers_uoffset_t *reflection_Field_mutable_vec_t; -typedef const struct reflection_Object_table *reflection_Object_table_t; -typedef struct reflection_Object_table *reflection_Object_mutable_table_t; -typedef const flatbuffers_uoffset_t *reflection_Object_vec_t; -typedef flatbuffers_uoffset_t *reflection_Object_mutable_vec_t; -typedef const struct reflection_RPCCall_table *reflection_RPCCall_table_t; -typedef struct reflection_RPCCall_table *reflection_RPCCall_mutable_table_t; -typedef const flatbuffers_uoffset_t *reflection_RPCCall_vec_t; -typedef flatbuffers_uoffset_t *reflection_RPCCall_mutable_vec_t; -typedef const struct reflection_Service_table *reflection_Service_table_t; -typedef struct reflection_Service_table *reflection_Service_mutable_table_t; -typedef const flatbuffers_uoffset_t *reflection_Service_vec_t; -typedef flatbuffers_uoffset_t *reflection_Service_mutable_vec_t; -typedef const struct reflection_Schema_table *reflection_Schema_table_t; -typedef struct reflection_Schema_table *reflection_Schema_mutable_table_t; -typedef const flatbuffers_uoffset_t *reflection_Schema_vec_t; -typedef flatbuffers_uoffset_t *reflection_Schema_mutable_vec_t; -#ifndef reflection_Type_file_identifier -#define reflection_Type_file_identifier "BFBS" -#endif -/* deprecated, use reflection_Type_file_identifier */ -#ifndef reflection_Type_identifier -#define reflection_Type_identifier "BFBS" -#endif -#define reflection_Type_type_hash ((flatbuffers_thash_t)0x44c8fe5e) -#define reflection_Type_type_identifier "\x5e\xfe\xc8\x44" -#ifndef reflection_Type_file_extension -#define reflection_Type_file_extension "bfbs" -#endif -#ifndef reflection_KeyValue_file_identifier -#define reflection_KeyValue_file_identifier "BFBS" -#endif -/* deprecated, use reflection_KeyValue_file_identifier */ -#ifndef reflection_KeyValue_identifier -#define reflection_KeyValue_identifier "BFBS" -#endif -#define reflection_KeyValue_type_hash ((flatbuffers_thash_t)0x8c761eaa) -#define reflection_KeyValue_type_identifier "\xaa\x1e\x76\x8c" -#ifndef reflection_KeyValue_file_extension -#define reflection_KeyValue_file_extension "bfbs" -#endif -#ifndef reflection_EnumVal_file_identifier -#define reflection_EnumVal_file_identifier "BFBS" -#endif -/* deprecated, use reflection_EnumVal_file_identifier */ -#ifndef reflection_EnumVal_identifier -#define reflection_EnumVal_identifier "BFBS" -#endif -#define reflection_EnumVal_type_hash ((flatbuffers_thash_t)0x9531c946) -#define reflection_EnumVal_type_identifier "\x46\xc9\x31\x95" -#ifndef reflection_EnumVal_file_extension -#define reflection_EnumVal_file_extension "bfbs" -#endif -#ifndef reflection_Enum_file_identifier -#define reflection_Enum_file_identifier "BFBS" -#endif -/* deprecated, use reflection_Enum_file_identifier */ -#ifndef reflection_Enum_identifier -#define reflection_Enum_identifier "BFBS" -#endif -#define reflection_Enum_type_hash ((flatbuffers_thash_t)0xacffa90f) -#define reflection_Enum_type_identifier "\x0f\xa9\xff\xac" -#ifndef reflection_Enum_file_extension -#define reflection_Enum_file_extension "bfbs" -#endif -#ifndef reflection_Field_file_identifier -#define reflection_Field_file_identifier "BFBS" -#endif -/* deprecated, use reflection_Field_file_identifier */ -#ifndef reflection_Field_identifier -#define reflection_Field_identifier "BFBS" -#endif -#define reflection_Field_type_hash ((flatbuffers_thash_t)0x9f7e408a) -#define reflection_Field_type_identifier "\x8a\x40\x7e\x9f" -#ifndef reflection_Field_file_extension -#define reflection_Field_file_extension "bfbs" -#endif -#ifndef reflection_Object_file_identifier -#define reflection_Object_file_identifier "BFBS" -#endif -/* deprecated, use reflection_Object_file_identifier */ -#ifndef reflection_Object_identifier -#define reflection_Object_identifier "BFBS" -#endif -#define reflection_Object_type_hash ((flatbuffers_thash_t)0xb09729bd) -#define reflection_Object_type_identifier "\xbd\x29\x97\xb0" -#ifndef reflection_Object_file_extension -#define reflection_Object_file_extension "bfbs" -#endif -#ifndef reflection_RPCCall_file_identifier -#define reflection_RPCCall_file_identifier "BFBS" -#endif -/* deprecated, use reflection_RPCCall_file_identifier */ -#ifndef reflection_RPCCall_identifier -#define reflection_RPCCall_identifier "BFBS" -#endif -#define reflection_RPCCall_type_hash ((flatbuffers_thash_t)0xe2d586f1) -#define reflection_RPCCall_type_identifier "\xf1\x86\xd5\xe2" -#ifndef reflection_RPCCall_file_extension -#define reflection_RPCCall_file_extension "bfbs" -#endif -#ifndef reflection_Service_file_identifier -#define reflection_Service_file_identifier "BFBS" -#endif -/* deprecated, use reflection_Service_file_identifier */ -#ifndef reflection_Service_identifier -#define reflection_Service_identifier "BFBS" -#endif -#define reflection_Service_type_hash ((flatbuffers_thash_t)0xf31a13b5) -#define reflection_Service_type_identifier "\xb5\x13\x1a\xf3" -#ifndef reflection_Service_file_extension -#define reflection_Service_file_extension "bfbs" -#endif -#ifndef reflection_Schema_file_identifier -#define reflection_Schema_file_identifier "BFBS" -#endif -/* deprecated, use reflection_Schema_file_identifier */ -#ifndef reflection_Schema_identifier -#define reflection_Schema_identifier "BFBS" -#endif -#define reflection_Schema_type_hash ((flatbuffers_thash_t)0xfaf93779) -#define reflection_Schema_type_identifier "\x79\x37\xf9\xfa" -#ifndef reflection_Schema_file_extension -#define reflection_Schema_file_extension "bfbs" -#endif - -typedef int8_t reflection_BaseType_enum_t; -__flatbuffers_define_integer_type(reflection_BaseType, reflection_BaseType_enum_t, 8) -#define reflection_BaseType_None ((reflection_BaseType_enum_t)INT8_C(0)) -#define reflection_BaseType_UType ((reflection_BaseType_enum_t)INT8_C(1)) -#define reflection_BaseType_Bool ((reflection_BaseType_enum_t)INT8_C(2)) -#define reflection_BaseType_Byte ((reflection_BaseType_enum_t)INT8_C(3)) -#define reflection_BaseType_UByte ((reflection_BaseType_enum_t)INT8_C(4)) -#define reflection_BaseType_Short ((reflection_BaseType_enum_t)INT8_C(5)) -#define reflection_BaseType_UShort ((reflection_BaseType_enum_t)INT8_C(6)) -#define reflection_BaseType_Int ((reflection_BaseType_enum_t)INT8_C(7)) -#define reflection_BaseType_UInt ((reflection_BaseType_enum_t)INT8_C(8)) -#define reflection_BaseType_Long ((reflection_BaseType_enum_t)INT8_C(9)) -#define reflection_BaseType_ULong ((reflection_BaseType_enum_t)INT8_C(10)) -#define reflection_BaseType_Float ((reflection_BaseType_enum_t)INT8_C(11)) -#define reflection_BaseType_Double ((reflection_BaseType_enum_t)INT8_C(12)) -#define reflection_BaseType_String ((reflection_BaseType_enum_t)INT8_C(13)) -#define reflection_BaseType_Vector ((reflection_BaseType_enum_t)INT8_C(14)) -#define reflection_BaseType_Obj ((reflection_BaseType_enum_t)INT8_C(15)) -#define reflection_BaseType_Union ((reflection_BaseType_enum_t)INT8_C(16)) -#define reflection_BaseType_Array ((reflection_BaseType_enum_t)INT8_C(17)) -#define reflection_BaseType_MaxBaseType ((reflection_BaseType_enum_t)INT8_C(18)) - -static inline const char *reflection_BaseType_name(reflection_BaseType_enum_t value) -{ - switch (value) { - case reflection_BaseType_None: return "None"; - case reflection_BaseType_UType: return "UType"; - case reflection_BaseType_Bool: return "Bool"; - case reflection_BaseType_Byte: return "Byte"; - case reflection_BaseType_UByte: return "UByte"; - case reflection_BaseType_Short: return "Short"; - case reflection_BaseType_UShort: return "UShort"; - case reflection_BaseType_Int: return "Int"; - case reflection_BaseType_UInt: return "UInt"; - case reflection_BaseType_Long: return "Long"; - case reflection_BaseType_ULong: return "ULong"; - case reflection_BaseType_Float: return "Float"; - case reflection_BaseType_Double: return "Double"; - case reflection_BaseType_String: return "String"; - case reflection_BaseType_Vector: return "Vector"; - case reflection_BaseType_Obj: return "Obj"; - case reflection_BaseType_Union: return "Union"; - case reflection_BaseType_Array: return "Array"; - case reflection_BaseType_MaxBaseType: return "MaxBaseType"; - default: return ""; - } -} - -static inline int reflection_BaseType_is_known_value(reflection_BaseType_enum_t value) -{ - switch (value) { - case reflection_BaseType_None: return 1; - case reflection_BaseType_UType: return 1; - case reflection_BaseType_Bool: return 1; - case reflection_BaseType_Byte: return 1; - case reflection_BaseType_UByte: return 1; - case reflection_BaseType_Short: return 1; - case reflection_BaseType_UShort: return 1; - case reflection_BaseType_Int: return 1; - case reflection_BaseType_UInt: return 1; - case reflection_BaseType_Long: return 1; - case reflection_BaseType_ULong: return 1; - case reflection_BaseType_Float: return 1; - case reflection_BaseType_Double: return 1; - case reflection_BaseType_String: return 1; - case reflection_BaseType_Vector: return 1; - case reflection_BaseType_Obj: return 1; - case reflection_BaseType_Union: return 1; - case reflection_BaseType_Array: return 1; - case reflection_BaseType_MaxBaseType: return 1; - default: return 0; - } -} - - - -struct reflection_Type_table { uint8_t unused__; }; - -static inline size_t reflection_Type_vec_len(reflection_Type_vec_t vec) -__flatbuffers_vec_len(vec) -static inline reflection_Type_table_t reflection_Type_vec_at(reflection_Type_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(reflection_Type_table_t, vec, i, 0) -__flatbuffers_table_as_root(reflection_Type) - -__flatbuffers_define_scalar_field(0, reflection_Type, base_type, reflection_BaseType, reflection_BaseType_enum_t, INT8_C(0)) -__flatbuffers_define_scalar_field(1, reflection_Type, element, reflection_BaseType, reflection_BaseType_enum_t, INT8_C(0)) -__flatbuffers_define_scalar_field(2, reflection_Type, index, flatbuffers_int32, int32_t, INT32_C(-1)) -__flatbuffers_define_scalar_field(3, reflection_Type, fixed_length, flatbuffers_uint16, uint16_t, UINT16_C(0)) - -struct reflection_KeyValue_table { uint8_t unused__; }; - -static inline size_t reflection_KeyValue_vec_len(reflection_KeyValue_vec_t vec) -__flatbuffers_vec_len(vec) -static inline reflection_KeyValue_table_t reflection_KeyValue_vec_at(reflection_KeyValue_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(reflection_KeyValue_table_t, vec, i, 0) -__flatbuffers_table_as_root(reflection_KeyValue) - -__flatbuffers_define_string_field(0, reflection_KeyValue, key, 1) -__flatbuffers_define_find_by_string_field(reflection_KeyValue, key) -__flatbuffers_define_table_sort_by_string_field(reflection_KeyValue, key) -__flatbuffers_define_default_find_by_string_field(reflection_KeyValue, key) -__flatbuffers_define_default_scan_by_string_field(reflection_KeyValue, key) -#define reflection_KeyValue_vec_sort reflection_KeyValue_vec_sort_by_key -__flatbuffers_define_string_field(1, reflection_KeyValue, value, 0) - -struct reflection_EnumVal_table { uint8_t unused__; }; - -static inline size_t reflection_EnumVal_vec_len(reflection_EnumVal_vec_t vec) -__flatbuffers_vec_len(vec) -static inline reflection_EnumVal_table_t reflection_EnumVal_vec_at(reflection_EnumVal_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(reflection_EnumVal_table_t, vec, i, 0) -__flatbuffers_table_as_root(reflection_EnumVal) - -__flatbuffers_define_string_field(0, reflection_EnumVal, name, 1) -__flatbuffers_define_scalar_field(1, reflection_EnumVal, value, flatbuffers_int64, int64_t, INT64_C(0)) -/* Note: find only works on vectors sorted by this field. */ -__flatbuffers_define_find_by_scalar_field(reflection_EnumVal, value, int64_t) -__flatbuffers_define_table_sort_by_scalar_field(reflection_EnumVal, value, int64_t) -__flatbuffers_define_default_find_by_scalar_field(reflection_EnumVal, value, int64_t) -__flatbuffers_define_default_scan_by_scalar_field(reflection_EnumVal, value, int64_t) -#define reflection_EnumVal_vec_sort reflection_EnumVal_vec_sort_by_value -__flatbuffers_define_table_field(2, reflection_EnumVal, object, reflection_Object_table_t, 0) -__flatbuffers_define_table_field(3, reflection_EnumVal, union_type, reflection_Type_table_t, 0) -__flatbuffers_define_vector_field(4, reflection_EnumVal, documentation, flatbuffers_string_vec_t, 0) - -struct reflection_Enum_table { uint8_t unused__; }; - -static inline size_t reflection_Enum_vec_len(reflection_Enum_vec_t vec) -__flatbuffers_vec_len(vec) -static inline reflection_Enum_table_t reflection_Enum_vec_at(reflection_Enum_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(reflection_Enum_table_t, vec, i, 0) -__flatbuffers_table_as_root(reflection_Enum) - -__flatbuffers_define_string_field(0, reflection_Enum, name, 1) -__flatbuffers_define_find_by_string_field(reflection_Enum, name) -__flatbuffers_define_table_sort_by_string_field(reflection_Enum, name) -__flatbuffers_define_default_find_by_string_field(reflection_Enum, name) -__flatbuffers_define_default_scan_by_string_field(reflection_Enum, name) -#define reflection_Enum_vec_sort reflection_Enum_vec_sort_by_name -__flatbuffers_define_vector_field(1, reflection_Enum, values, reflection_EnumVal_vec_t, 1) -__flatbuffers_define_scalar_field(2, reflection_Enum, is_union, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0)) -__flatbuffers_define_table_field(3, reflection_Enum, underlying_type, reflection_Type_table_t, 1) -__flatbuffers_define_vector_field(4, reflection_Enum, attributes, reflection_KeyValue_vec_t, 0) -__flatbuffers_define_vector_field(5, reflection_Enum, documentation, flatbuffers_string_vec_t, 0) - -struct reflection_Field_table { uint8_t unused__; }; - -static inline size_t reflection_Field_vec_len(reflection_Field_vec_t vec) -__flatbuffers_vec_len(vec) -static inline reflection_Field_table_t reflection_Field_vec_at(reflection_Field_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(reflection_Field_table_t, vec, i, 0) -__flatbuffers_table_as_root(reflection_Field) - -__flatbuffers_define_string_field(0, reflection_Field, name, 1) -__flatbuffers_define_find_by_string_field(reflection_Field, name) -__flatbuffers_define_table_sort_by_string_field(reflection_Field, name) -__flatbuffers_define_default_find_by_string_field(reflection_Field, name) -__flatbuffers_define_default_scan_by_string_field(reflection_Field, name) -#define reflection_Field_vec_sort reflection_Field_vec_sort_by_name -__flatbuffers_define_table_field(1, reflection_Field, type, reflection_Type_table_t, 1) -__flatbuffers_define_scalar_field(2, reflection_Field, id, flatbuffers_uint16, uint16_t, UINT16_C(0)) -__flatbuffers_define_scalar_field(3, reflection_Field, offset, flatbuffers_uint16, uint16_t, UINT16_C(0)) -__flatbuffers_define_scalar_field(4, reflection_Field, default_integer, flatbuffers_int64, int64_t, INT64_C(0)) -__flatbuffers_define_scalar_field(5, reflection_Field, default_real, flatbuffers_double, double, 0.0000000000000000) -__flatbuffers_define_scalar_field(6, reflection_Field, deprecated, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0)) -__flatbuffers_define_scalar_field(7, reflection_Field, required, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0)) -__flatbuffers_define_scalar_field(8, reflection_Field, key, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0)) -__flatbuffers_define_vector_field(9, reflection_Field, attributes, reflection_KeyValue_vec_t, 0) -__flatbuffers_define_vector_field(10, reflection_Field, documentation, flatbuffers_string_vec_t, 0) -__flatbuffers_define_scalar_field(11, reflection_Field, optional, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0)) - -struct reflection_Object_table { uint8_t unused__; }; - -static inline size_t reflection_Object_vec_len(reflection_Object_vec_t vec) -__flatbuffers_vec_len(vec) -static inline reflection_Object_table_t reflection_Object_vec_at(reflection_Object_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(reflection_Object_table_t, vec, i, 0) -__flatbuffers_table_as_root(reflection_Object) - -__flatbuffers_define_string_field(0, reflection_Object, name, 1) -__flatbuffers_define_find_by_string_field(reflection_Object, name) -__flatbuffers_define_table_sort_by_string_field(reflection_Object, name) -__flatbuffers_define_default_find_by_string_field(reflection_Object, name) -__flatbuffers_define_default_scan_by_string_field(reflection_Object, name) -#define reflection_Object_vec_sort reflection_Object_vec_sort_by_name -__flatbuffers_define_vector_field(1, reflection_Object, fields, reflection_Field_vec_t, 1) -__flatbuffers_define_scalar_field(2, reflection_Object, is_struct, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0)) -__flatbuffers_define_scalar_field(3, reflection_Object, minalign, flatbuffers_int32, int32_t, INT32_C(0)) -__flatbuffers_define_scalar_field(4, reflection_Object, bytesize, flatbuffers_int32, int32_t, INT32_C(0)) -__flatbuffers_define_vector_field(5, reflection_Object, attributes, reflection_KeyValue_vec_t, 0) -__flatbuffers_define_vector_field(6, reflection_Object, documentation, flatbuffers_string_vec_t, 0) - -struct reflection_RPCCall_table { uint8_t unused__; }; - -static inline size_t reflection_RPCCall_vec_len(reflection_RPCCall_vec_t vec) -__flatbuffers_vec_len(vec) -static inline reflection_RPCCall_table_t reflection_RPCCall_vec_at(reflection_RPCCall_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(reflection_RPCCall_table_t, vec, i, 0) -__flatbuffers_table_as_root(reflection_RPCCall) - -__flatbuffers_define_string_field(0, reflection_RPCCall, name, 1) -__flatbuffers_define_find_by_string_field(reflection_RPCCall, name) -__flatbuffers_define_table_sort_by_string_field(reflection_RPCCall, name) -__flatbuffers_define_default_find_by_string_field(reflection_RPCCall, name) -__flatbuffers_define_default_scan_by_string_field(reflection_RPCCall, name) -#define reflection_RPCCall_vec_sort reflection_RPCCall_vec_sort_by_name -__flatbuffers_define_table_field(1, reflection_RPCCall, request, reflection_Object_table_t, 1) -__flatbuffers_define_table_field(2, reflection_RPCCall, response, reflection_Object_table_t, 1) -__flatbuffers_define_vector_field(3, reflection_RPCCall, attributes, reflection_KeyValue_vec_t, 0) -__flatbuffers_define_vector_field(4, reflection_RPCCall, documentation, flatbuffers_string_vec_t, 0) - -struct reflection_Service_table { uint8_t unused__; }; - -static inline size_t reflection_Service_vec_len(reflection_Service_vec_t vec) -__flatbuffers_vec_len(vec) -static inline reflection_Service_table_t reflection_Service_vec_at(reflection_Service_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(reflection_Service_table_t, vec, i, 0) -__flatbuffers_table_as_root(reflection_Service) - -__flatbuffers_define_string_field(0, reflection_Service, name, 1) -__flatbuffers_define_find_by_string_field(reflection_Service, name) -__flatbuffers_define_table_sort_by_string_field(reflection_Service, name) -__flatbuffers_define_default_find_by_string_field(reflection_Service, name) -__flatbuffers_define_default_scan_by_string_field(reflection_Service, name) -#define reflection_Service_vec_sort reflection_Service_vec_sort_by_name -__flatbuffers_define_vector_field(1, reflection_Service, calls, reflection_RPCCall_vec_t, 0) -__flatbuffers_define_vector_field(2, reflection_Service, attributes, reflection_KeyValue_vec_t, 0) -__flatbuffers_define_vector_field(3, reflection_Service, documentation, flatbuffers_string_vec_t, 0) - -struct reflection_Schema_table { uint8_t unused__; }; - -static inline size_t reflection_Schema_vec_len(reflection_Schema_vec_t vec) -__flatbuffers_vec_len(vec) -static inline reflection_Schema_table_t reflection_Schema_vec_at(reflection_Schema_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(reflection_Schema_table_t, vec, i, 0) -__flatbuffers_table_as_root(reflection_Schema) - -__flatbuffers_define_vector_field(0, reflection_Schema, objects, reflection_Object_vec_t, 1) -__flatbuffers_define_vector_field(1, reflection_Schema, enums, reflection_Enum_vec_t, 1) -__flatbuffers_define_string_field(2, reflection_Schema, file_ident, 0) -__flatbuffers_define_string_field(3, reflection_Schema, file_ext, 0) -__flatbuffers_define_table_field(4, reflection_Schema, root_table, reflection_Object_table_t, 0) -__flatbuffers_define_vector_field(5, reflection_Schema, services, reflection_Service_vec_t, 0) - - -#include "flatcc/flatcc_epilogue.h" -#endif /* REFLECTION_READER_H */ diff --git a/nostrdb/flatcc/reflection/reflection_verifier.h b/nostrdb/flatcc/reflection/reflection_verifier.h deleted file mode 100644 index 5b5bd374a9..0000000000 --- a/nostrdb/flatcc/reflection/reflection_verifier.h +++ /dev/null @@ -1,308 +0,0 @@ -#ifndef REFLECTION_VERIFIER_H -#define REFLECTION_VERIFIER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#ifndef REFLECTION_READER_H -#include "reflection_reader.h" -#endif -#include "flatcc/flatcc_verifier.h" -#include "flatcc/flatcc_prologue.h" - -static int reflection_Type_verify_table(flatcc_table_verifier_descriptor_t *td); -static int reflection_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td); -static int reflection_EnumVal_verify_table(flatcc_table_verifier_descriptor_t *td); -static int reflection_Enum_verify_table(flatcc_table_verifier_descriptor_t *td); -static int reflection_Field_verify_table(flatcc_table_verifier_descriptor_t *td); -static int reflection_Object_verify_table(flatcc_table_verifier_descriptor_t *td); -static int reflection_RPCCall_verify_table(flatcc_table_verifier_descriptor_t *td); -static int reflection_Service_verify_table(flatcc_table_verifier_descriptor_t *td); -static int reflection_Schema_verify_table(flatcc_table_verifier_descriptor_t *td); - -static int reflection_Type_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_field(td, 0, 1, 1) /* base_type */)) return ret; - if ((ret = flatcc_verify_field(td, 1, 1, 1) /* element */)) return ret; - if ((ret = flatcc_verify_field(td, 2, 4, 4) /* index */)) return ret; - if ((ret = flatcc_verify_field(td, 3, 2, 2) /* fixed_length */)) return ret; - return flatcc_verify_ok; -} - -static inline int reflection_Type_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Type_identifier, &reflection_Type_verify_table); -} - -static inline int reflection_Type_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Type_type_identifier, &reflection_Type_verify_table); -} - -static inline int reflection_Type_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &reflection_Type_verify_table); -} - -static inline int reflection_Type_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &reflection_Type_verify_table); -} - -static int reflection_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_string_field(td, 0, 1) /* key */)) return ret; - if ((ret = flatcc_verify_string_field(td, 1, 0) /* value */)) return ret; - return flatcc_verify_ok; -} - -static inline int reflection_KeyValue_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_KeyValue_identifier, &reflection_KeyValue_verify_table); -} - -static inline int reflection_KeyValue_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_KeyValue_type_identifier, &reflection_KeyValue_verify_table); -} - -static inline int reflection_KeyValue_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &reflection_KeyValue_verify_table); -} - -static inline int reflection_KeyValue_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &reflection_KeyValue_verify_table); -} - -static int reflection_EnumVal_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_string_field(td, 0, 1) /* name */)) return ret; - if ((ret = flatcc_verify_field(td, 1, 8, 8) /* value */)) return ret; - if ((ret = flatcc_verify_table_field(td, 2, 0, &reflection_Object_verify_table) /* object */)) return ret; - if ((ret = flatcc_verify_table_field(td, 3, 0, &reflection_Type_verify_table) /* union_type */)) return ret; - if ((ret = flatcc_verify_string_vector_field(td, 4, 0) /* documentation */)) return ret; - return flatcc_verify_ok; -} - -static inline int reflection_EnumVal_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_EnumVal_identifier, &reflection_EnumVal_verify_table); -} - -static inline int reflection_EnumVal_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_EnumVal_type_identifier, &reflection_EnumVal_verify_table); -} - -static inline int reflection_EnumVal_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &reflection_EnumVal_verify_table); -} - -static inline int reflection_EnumVal_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &reflection_EnumVal_verify_table); -} - -static int reflection_Enum_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_string_field(td, 0, 1) /* name */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 1, 1, &reflection_EnumVal_verify_table) /* values */)) return ret; - if ((ret = flatcc_verify_field(td, 2, 1, 1) /* is_union */)) return ret; - if ((ret = flatcc_verify_table_field(td, 3, 1, &reflection_Type_verify_table) /* underlying_type */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 4, 0, &reflection_KeyValue_verify_table) /* attributes */)) return ret; - if ((ret = flatcc_verify_string_vector_field(td, 5, 0) /* documentation */)) return ret; - return flatcc_verify_ok; -} - -static inline int reflection_Enum_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Enum_identifier, &reflection_Enum_verify_table); -} - -static inline int reflection_Enum_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Enum_type_identifier, &reflection_Enum_verify_table); -} - -static inline int reflection_Enum_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &reflection_Enum_verify_table); -} - -static inline int reflection_Enum_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &reflection_Enum_verify_table); -} - -static int reflection_Field_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_string_field(td, 0, 1) /* name */)) return ret; - if ((ret = flatcc_verify_table_field(td, 1, 1, &reflection_Type_verify_table) /* type */)) return ret; - if ((ret = flatcc_verify_field(td, 2, 2, 2) /* id */)) return ret; - if ((ret = flatcc_verify_field(td, 3, 2, 2) /* offset */)) return ret; - if ((ret = flatcc_verify_field(td, 4, 8, 8) /* default_integer */)) return ret; - if ((ret = flatcc_verify_field(td, 5, 8, 8) /* default_real */)) return ret; - if ((ret = flatcc_verify_field(td, 6, 1, 1) /* deprecated */)) return ret; - if ((ret = flatcc_verify_field(td, 7, 1, 1) /* required */)) return ret; - if ((ret = flatcc_verify_field(td, 8, 1, 1) /* key */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 9, 0, &reflection_KeyValue_verify_table) /* attributes */)) return ret; - if ((ret = flatcc_verify_string_vector_field(td, 10, 0) /* documentation */)) return ret; - if ((ret = flatcc_verify_field(td, 11, 1, 1) /* optional */)) return ret; - return flatcc_verify_ok; -} - -static inline int reflection_Field_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Field_identifier, &reflection_Field_verify_table); -} - -static inline int reflection_Field_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Field_type_identifier, &reflection_Field_verify_table); -} - -static inline int reflection_Field_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &reflection_Field_verify_table); -} - -static inline int reflection_Field_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &reflection_Field_verify_table); -} - -static int reflection_Object_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_string_field(td, 0, 1) /* name */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 1, 1, &reflection_Field_verify_table) /* fields */)) return ret; - if ((ret = flatcc_verify_field(td, 2, 1, 1) /* is_struct */)) return ret; - if ((ret = flatcc_verify_field(td, 3, 4, 4) /* minalign */)) return ret; - if ((ret = flatcc_verify_field(td, 4, 4, 4) /* bytesize */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 5, 0, &reflection_KeyValue_verify_table) /* attributes */)) return ret; - if ((ret = flatcc_verify_string_vector_field(td, 6, 0) /* documentation */)) return ret; - return flatcc_verify_ok; -} - -static inline int reflection_Object_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Object_identifier, &reflection_Object_verify_table); -} - -static inline int reflection_Object_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Object_type_identifier, &reflection_Object_verify_table); -} - -static inline int reflection_Object_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &reflection_Object_verify_table); -} - -static inline int reflection_Object_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &reflection_Object_verify_table); -} - -static int reflection_RPCCall_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_string_field(td, 0, 1) /* name */)) return ret; - if ((ret = flatcc_verify_table_field(td, 1, 1, &reflection_Object_verify_table) /* request */)) return ret; - if ((ret = flatcc_verify_table_field(td, 2, 1, &reflection_Object_verify_table) /* response */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 3, 0, &reflection_KeyValue_verify_table) /* attributes */)) return ret; - if ((ret = flatcc_verify_string_vector_field(td, 4, 0) /* documentation */)) return ret; - return flatcc_verify_ok; -} - -static inline int reflection_RPCCall_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_RPCCall_identifier, &reflection_RPCCall_verify_table); -} - -static inline int reflection_RPCCall_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_RPCCall_type_identifier, &reflection_RPCCall_verify_table); -} - -static inline int reflection_RPCCall_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &reflection_RPCCall_verify_table); -} - -static inline int reflection_RPCCall_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &reflection_RPCCall_verify_table); -} - -static int reflection_Service_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_string_field(td, 0, 1) /* name */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 1, 0, &reflection_RPCCall_verify_table) /* calls */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 2, 0, &reflection_KeyValue_verify_table) /* attributes */)) return ret; - if ((ret = flatcc_verify_string_vector_field(td, 3, 0) /* documentation */)) return ret; - return flatcc_verify_ok; -} - -static inline int reflection_Service_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Service_identifier, &reflection_Service_verify_table); -} - -static inline int reflection_Service_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Service_type_identifier, &reflection_Service_verify_table); -} - -static inline int reflection_Service_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &reflection_Service_verify_table); -} - -static inline int reflection_Service_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &reflection_Service_verify_table); -} - -static int reflection_Schema_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_table_vector_field(td, 0, 1, &reflection_Object_verify_table) /* objects */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 1, 1, &reflection_Enum_verify_table) /* enums */)) return ret; - if ((ret = flatcc_verify_string_field(td, 2, 0) /* file_ident */)) return ret; - if ((ret = flatcc_verify_string_field(td, 3, 0) /* file_ext */)) return ret; - if ((ret = flatcc_verify_table_field(td, 4, 0, &reflection_Object_verify_table) /* root_table */)) return ret; - if ((ret = flatcc_verify_table_vector_field(td, 5, 0, &reflection_Service_verify_table) /* services */)) return ret; - return flatcc_verify_ok; -} - -static inline int reflection_Schema_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Schema_identifier, &reflection_Schema_verify_table); -} - -static inline int reflection_Schema_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, reflection_Schema_type_identifier, &reflection_Schema_verify_table); -} - -static inline int reflection_Schema_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &reflection_Schema_verify_table); -} - -static inline int reflection_Schema_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &reflection_Schema_verify_table); -} - -#include "flatcc/flatcc_epilogue.h" -#endif /* REFLECTION_VERIFIER_H */ diff --git a/nostrdb/flatcc/refmap.c b/nostrdb/flatcc/refmap.c deleted file mode 100644 index e1fa5931e0..0000000000 --- a/nostrdb/flatcc/refmap.c +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Optional file that can be included in runtime library to support DAG - * cloning with the builder and may also be used for custom purposes - * standalone. See also comments in `flatcc/flatcc_builder.h`. - * - * Note that dynamic construction takes place and that large offset - * vectors might consume significant space if there are not many shared - * references. In the basic use case no allocation takes place because a - * few references can be held using only a small stack allocated hash - * table. - */ - -#include -#include - -#include "flatcc_rtconfig.h" -#include "flatcc_refmap.h" -#include "flatcc_alloc.h" -#include "flatcc_assert.h" - -#define _flatcc_refmap_calloc FLATCC_CALLOC -#define _flatcc_refmap_free FLATCC_FREE - -/* Can be used as a primitive defense against collision attacks. */ -#ifdef FLATCC_HASH_SEED -#define _flatcc_refmap_seed FLATCC_HASH_SEED -#else -#define _flatcc_refmap_seed 0x2f693b52 -#endif - -static inline size_t _flatcc_refmap_above_load_factor(size_t count, size_t buckets) -{ - static const size_t d = 256; - static const size_t n = (size_t)((FLATCC_REFMAP_LOAD_FACTOR) * 256.0f); - - return count >= buckets * n / d; -} - -#define _flatcc_refmap_probe(k, i, N) ((k + i) & N) - -void flatcc_refmap_clear(flatcc_refmap_t *refmap) -{ - if (refmap->table && refmap->table != refmap->min_table) { - _flatcc_refmap_free(refmap->table); - } - flatcc_refmap_init(refmap); -} - -static inline size_t _flatcc_refmap_hash(const void *src) -{ - /* MurmurHash3 64-bit finalizer */ - uint64_t x; - - x = (uint64_t)((size_t)src) ^ _flatcc_refmap_seed; - - x ^= x >> 33; - x *= 0xff51afd7ed558ccdULL; - x ^= x >> 33; - x *= 0xc4ceb9fe1a85ec53ULL; - x ^= x >> 33; - return (size_t)x; -} - -void flatcc_refmap_reset(flatcc_refmap_t *refmap) -{ - if (refmap->count) { - memset(refmap->table, 0, sizeof(refmap->table[0]) * refmap->buckets); - } - refmap->count = 0; -} - -/* - * Technically resize also supports shrinking which may be useful for - * adapations, but the current hash table never deletes individual items. - */ -int flatcc_refmap_resize(flatcc_refmap_t *refmap, size_t count) -{ - const size_t min_buckets = sizeof(refmap->min_table) / sizeof(refmap->min_table[0]); - - size_t i; - size_t buckets; - size_t buckets_old; - struct flatcc_refmap_item *T_old; - - if (count < refmap->count) { - count = refmap->count; - } - buckets = min_buckets; - - while (_flatcc_refmap_above_load_factor(count, buckets)) { - buckets *= 2; - } - if (refmap->buckets == buckets) { - return 0; - } - T_old = refmap->table; - buckets_old = refmap->buckets; - if (buckets == min_buckets) { - memset(refmap->min_table, 0, sizeof(refmap->min_table)); - refmap->table = refmap->min_table; - } else { - refmap->table = _flatcc_refmap_calloc(buckets, sizeof(refmap->table[0])); - if (refmap->table == 0) { - refmap->table = T_old; - FLATCC_ASSERT(0); /* out of memory */ - return -1; - } - } - refmap->buckets = buckets; - refmap->count = 0; - for (i = 0; i < buckets_old; ++i) { - if (T_old[i].src) { - flatcc_refmap_insert(refmap, T_old[i].src, T_old[i].ref); - } - } - if (T_old && T_old != refmap->min_table) { - _flatcc_refmap_free(T_old); - } - return 0; -} - -flatcc_refmap_ref_t flatcc_refmap_insert(flatcc_refmap_t *refmap, const void *src, flatcc_refmap_ref_t ref) -{ - struct flatcc_refmap_item *T; - size_t N, i, j, k; - - if (src == 0) return ref; - if (_flatcc_refmap_above_load_factor(refmap->count, refmap->buckets)) { - if (flatcc_refmap_resize(refmap, refmap->count * 2)) { - return flatcc_refmap_not_found; /* alloc failed */ - } - } - T = refmap->table; - N = refmap->buckets - 1; - k = _flatcc_refmap_hash(src); - i = 0; - j = _flatcc_refmap_probe(k, i, N); - while (T[j].src) { - if (T[j].src == src) { - return T[j].ref = ref; - } - ++i; - j = _flatcc_refmap_probe(k, i, N); - } - ++refmap->count; - T[j].src = src; - return T[j].ref = ref; -} - -flatcc_refmap_ref_t flatcc_refmap_find(flatcc_refmap_t *refmap, const void *src) -{ - struct flatcc_refmap_item *T; - size_t N, i, j, k; - - if (refmap->count == 0) { - return flatcc_refmap_not_found; - } - T = refmap->table; - N = refmap->buckets - 1; - k = _flatcc_refmap_hash(src); - i = 0; - j = _flatcc_refmap_probe(k, i, N); - while (T[j].src) { - if (T[j].src == src) return T[j].ref; - ++i; - j = _flatcc_refmap_probe(k, i, N); - } - return flatcc_refmap_not_found; -} - -/* - * To run test from project root: - * - * cc -D FLATCC_REFMAP_TEST -I include src/runtime/refmap.c -o test_refmap && ./test_refmap - * - */ -#ifdef FLATCC_REFMAP_TEST - -#include - -#ifndef FLATCC_REFMAP_H -#include "flatcc_refmap.h" -#endif - -#define test(x) do { if (!(x)) { fprintf(stderr, "%02d: refmap test failed\n", __LINE__); exit(-1); } } while (0) -#define test_start() fprintf(stderr, "starting refmap test ...\n") -#define test_ok() fprintf(stderr, "refmap test succeeded\n") - -int main() -{ - int i; - int data[1000]; - int a = 1; - int b = 2; - int c = 3; - flatcc_refmap_t refmap; - - flatcc_refmap_init(&refmap); - - test(flatcc_refmap_find(&refmap, &a) == flatcc_refmap_not_found); - test(flatcc_refmap_find(&refmap, &b) == flatcc_refmap_not_found); - test(flatcc_refmap_find(&refmap, &c) == flatcc_refmap_not_found); - test(flatcc_refmap_find(&refmap, 0) == flatcc_refmap_not_found); - test(flatcc_refmap_find(&refmap, &a) == 0); - - test(flatcc_refmap_insert(&refmap, &a, 42) == 42); - test(flatcc_refmap_find(&refmap, &a) == 42); - test(flatcc_refmap_find(&refmap, &b) == flatcc_refmap_not_found); - test(flatcc_refmap_find(&refmap, &c) == flatcc_refmap_not_found); - test(flatcc_refmap_insert(&refmap, &a, 42) == 42); - test(flatcc_refmap_find(&refmap, &a) == 42); - test(refmap.count == 1); - test(flatcc_refmap_insert(&refmap, &a, 43) == 43); - test(flatcc_refmap_find(&refmap, &a) == 43); - test(refmap.count == 1); - test(flatcc_refmap_insert(&refmap, &b, -10) == -10); - test(flatcc_refmap_insert(&refmap, &c, 100) == 100); - test(refmap.count == 3); - test(flatcc_refmap_find(&refmap, &a) == 43); - test(flatcc_refmap_find(&refmap, &b) == -10); - test(flatcc_refmap_find(&refmap, &c) == 100); - - test(flatcc_refmap_insert(&refmap, 0, 1000) == 1000); - test(flatcc_refmap_find(&refmap, 0) == 0); - test(refmap.count == 3); - - test(flatcc_refmap_insert(&refmap, &b, 0) == 0); - test(flatcc_refmap_find(&refmap, &b) == 0); - test(refmap.count == 3); - - flatcc_refmap_reset(&refmap); - test(refmap.count == 0); - test(refmap.buckets > 0); - for (i = 0; i < 1000; ++i) { - test(flatcc_refmap_insert(&refmap, data + i, i + 42) == i + 42); - } - test(refmap.count == 1000); - for (i = 0; i < 1000; ++i) { - test(flatcc_refmap_find(&refmap, data + i) == i + 42); - } - flatcc_refmap_clear(&refmap); - test(refmap.count == 0); - test(refmap.buckets == 0); - test_ok(); - return 0; -} - -#endif /* FLATCC_REFMAP_TEST */ diff --git a/nostrdb/flatcc/support/README b/nostrdb/flatcc/support/README deleted file mode 100644 index d9f6ec09e3..0000000000 --- a/nostrdb/flatcc/support/README +++ /dev/null @@ -1 +0,0 @@ -support files mainly used for testing diff --git a/nostrdb/flatcc/support/cdump.h b/nostrdb/flatcc/support/cdump.h deleted file mode 100644 index b589362964..0000000000 --- a/nostrdb/flatcc/support/cdump.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef CDUMP_H -#define CDUMP_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* Generates a constant a C byte array. */ -static void cdump(const char *name, void *addr, size_t len, FILE *fp) { - unsigned int i; - unsigned char *pc = (unsigned char*)addr; - - // Output description if given. - name = name ? name : "dump"; - fprintf(fp, "const unsigned char %s[] = {", name); - - // Process every byte in the data. - for (i = 0; i < (unsigned int)len; i++) { - // Multiple of 16 means new line (with line offset). - - if ((i % 16) == 0) { - fprintf(fp, "\n "); - } else if ((i % 8) == 0) { - fprintf(fp, " "); - } - - fprintf(fp, " 0x%02x,", pc[i]); - } - fprintf(fp, "\n};\n"); -} - -#ifdef __cplusplus -} -#endif - -#endif /* CDUMP_H */ diff --git a/nostrdb/flatcc/support/elapsed.h b/nostrdb/flatcc/support/elapsed.h deleted file mode 100644 index ba3bd73334..0000000000 --- a/nostrdb/flatcc/support/elapsed.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef ELAPSED_H -#define ELAPSED_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* Based on http://stackoverflow.com/a/8583395 */ -#if !defined(_WIN32) -#include -static double elapsed_realtime(void) { // returns 0 seconds first time called - static struct timeval t0; - struct timeval tv; - gettimeofday(&tv, 0); - if (!t0.tv_sec) - t0 = tv; - return (double)(tv.tv_sec - t0.tv_sec) + (double)(tv.tv_usec - t0.tv_usec) / 1e6; -} -#else -#include -#ifndef FatalError -#define FatalError(s) do { perror(s); exit(-1); } while(0) -#endif -static double elapsed_realtime(void) { // granularity about 50 microsecs on my machine - static LARGE_INTEGER freq, start; - LARGE_INTEGER count; - if (!QueryPerformanceCounter(&count)) - FatalError("QueryPerformanceCounter"); - if (!freq.QuadPart) { // one time initialization - if (!QueryPerformanceFrequency(&freq)) - FatalError("QueryPerformanceFrequency"); - start = count; - } - return (double)(count.QuadPart - start.QuadPart) / freq.QuadPart; -} -#endif - -/* end Based on stackoverflow */ - -static int show_benchmark(const char *descr, double t1, double t2, size_t size, int rep, const char *reptext) -{ - double tdiff = t2 - t1; - double nstime; - - printf("operation: %s\n", descr); - printf("elapsed time: %.3f (s)\n", tdiff); - printf("iterations: %d\n", rep); - printf("size: %lu (bytes)\n", (unsigned long)size); - printf("bandwidth: %.3f (MB/s)\n", (double)rep * (double)size / 1e6 / tdiff); - printf("throughput in ops per sec: %.3f\n", rep / tdiff); - if (reptext && rep != 1) { - printf("throughput in %s ops per sec: %.3f\n", reptext, 1 / tdiff); - } - nstime = tdiff * 1e9 / rep; - if (nstime < 1000) { - printf("time per op: %.3f (ns)\n", nstime); - } else if (nstime < 1e6) { - printf("time per op: %.3f (us)\n", nstime / 1000); - } else if (nstime < 1e9) { - printf("time per op: %.3f (ms)\n", nstime / 1e6); - } else { - printf("time per op: %.3f (s)\n", nstime / 1e9); - } - return 0; -} - -#ifdef __cplusplus -} -#endif - -#endif /* ELAPSED_H */ diff --git a/nostrdb/flatcc/support/hexdump.h b/nostrdb/flatcc/support/hexdump.h deleted file mode 100644 index 7b6f9b8852..0000000000 --- a/nostrdb/flatcc/support/hexdump.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef HEXDUMP_H -#define HEXDUMP_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* Based on: http://stackoverflow.com/a/7776146 */ -static void hexdump(const char *desc, const void *addr, size_t len, FILE *fp) { - unsigned int i; - unsigned char buf[17]; - const unsigned char *pc = (const unsigned char*)addr; - - /* Output description if given. */ - if (desc != NULL) fprintf(fp, "%s:\n", desc); - - for (i = 0; i < (unsigned int)len; i++) { - - if ((i % 16) == 0) { - if (i != 0) fprintf(fp, " |%s|\n", buf); - fprintf(fp, "%08x ", i); - } else if ((i % 8) == 0) { - fprintf(fp, " "); - } - fprintf(fp, " %02x", pc[i]); - if ((pc[i] < 0x20) || (pc[i] > 0x7e)) { - buf[i % 16] = '.'; - } else { - buf[i % 16] = pc[i]; - } - buf[(i % 16) + 1] = '\0'; - } - if (i % 16 <= 8 && i % 16 != 0) fprintf(fp, " "); - while ((i % 16) != 0) { - fprintf(fp, " "); - i++; - } - fprintf(fp, " |%s|\n", buf); -} - -#ifdef __cplusplus -} -#endif - -#endif /* HEXDUMP_H */ diff --git a/nostrdb/flatcc/support/readfile.h b/nostrdb/flatcc/support/readfile.h deleted file mode 100644 index 209875fb15..0000000000 --- a/nostrdb/flatcc/support/readfile.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef READFILE_H -#define READFILE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -static char *readfile(const char *filename, size_t max_size, size_t *size_out) -{ - FILE *fp; - long k; - size_t size, pos, n, _out; - char *buf; - - size_out = size_out ? size_out : &_out; - - fp = fopen(filename, "rb"); - size = 0; - buf = 0; - - if (!fp) { - goto fail; - } - fseek(fp, 0L, SEEK_END); - k = ftell(fp); - if (k < 0) goto fail; - size = (size_t)k; - *size_out = size; - if (max_size > 0 && size > max_size) { - goto fail; - } - rewind(fp); - buf = (char *)malloc(size ? size : 1); - if (!buf) { - goto fail; - } - pos = 0; - while ((n = fread(buf + pos, 1, size - pos, fp))) { - pos += n; - } - if (pos != size) { - goto fail; - } - fclose(fp); - *size_out = size; - return buf; - -fail: - if (fp) { - fclose(fp); - } - if (buf) { - free(buf); - } - *size_out = size; - return 0; -} - -#ifdef __cplusplus -} -#endif - -#endif /* READFILE_H */ diff --git a/nostrdb/flatcc/verifier.c b/nostrdb/flatcc/verifier.c deleted file mode 100644 index 1cc68d79dc..0000000000 --- a/nostrdb/flatcc/verifier.c +++ /dev/null @@ -1,617 +0,0 @@ -/* - * Runtime support for verifying flatbuffers. - * - * Depends mutually on generated verifier functions for table types that - * call into this library. - */ -#include - -#include "flatcc_rtconfig.h" -#include "flatcc_flatbuffers.h" -#include "flatcc_verifier.h" -#include "flatcc_identifier.h" - -/* Customization for testing. */ -#if FLATCC_DEBUG_VERIFY -#define FLATCC_VERIFIER_ASSERT_ON_ERROR 1 -#include -#define FLATCC_VERIFIER_ASSERT(cond, reason) \ - if (!(cond)) { fprintf(stderr, "verifier assert: %s\n", \ - flatcc_verify_error_string(reason)); FLATCC_ASSERT(0); return reason; } -#endif - -#if FLATCC_TRACE_VERIFY -#include -#define trace_verify(s, p) \ - fprintf(stderr, "trace verify: %s: 0x%02x\n", (s), (unsigned)(size_t)(p)); -#else -#define trace_verify(s, p) ((void)0) -#endif - -/* The runtime library does not use the global config file. */ - -/* This is a guideline, not an exact measure. */ -#ifndef FLATCC_VERIFIER_MAX_LEVELS -#define FLATCC_VERIFIER_MAX_LEVELS 100 -#endif - -#ifndef FLATCC_VERIFIER_ASSERT_ON_ERROR -#define FLATCC_VERIFIER_ASSERT_ON_ERROR 0 -#endif - -/* - * Generally a check should tell if a buffer is valid or not such - * that runtime can take appropriate actions rather than crash, - * also in debug, but assertions are helpful in debugging a problem. - * - * This must be compiled into the debug runtime library to take effect. - */ -#ifndef FLATCC_VERIFIER_ASSERT_ON_ERROR -#define FLATCC_VERIFIER_ASSERT_ON_ERROR 1 -#endif - -/* May be redefined for logging purposes. */ -#ifndef FLATCC_VERIFIER_ASSERT -#define FLATCC_VERIFIER_ASSERT(cond, reason) FLATCC_ASSERT(cond) -#endif - -#if FLATCC_VERIFIER_ASSERT_ON_ERROR -#define flatcc_verify(cond, reason) if (!(cond)) { FLATCC_VERIFIER_ASSERT(cond, reason); return reason; } -#else -#define flatcc_verify(cond, reason) if (!(cond)) { return reason; } -#endif - - -#define uoffset_t flatbuffers_uoffset_t -#define soffset_t flatbuffers_soffset_t -#define voffset_t flatbuffers_voffset_t -#define utype_t flatbuffers_utype_t -#define thash_t flatbuffers_thash_t - -#define uoffset_size sizeof(uoffset_t) -#define soffset_size sizeof(soffset_t) -#define voffset_size sizeof(voffset_t) -#define utype_size sizeof(utype_t) -#define thash_size sizeof(thash_t) -#define offset_size uoffset_size - -const char *flatcc_verify_error_string(int err) -{ - switch (err) { -#define XX(no, str) \ - case flatcc_verify_error_##no: \ - return str; - FLATCC_VERIFY_ERROR_MAP(XX) -#undef XX - default: - return "unknown"; - } -} - -/* `cond` may have side effects. */ -#define verify(cond, reason) do { int c = (cond); flatcc_verify(c, reason); } while(0) - -/* - * Identify checks related to runtime conditions (buffer size and - * alignment) as seperate from those related to buffer content. - */ -#define verify_runtime(cond, reason) verify(cond, reason) - -#define check_result(x) if (x) { return (x); } - -#define check_field(td, id, required, base) do { \ - int ret = get_offset_field(td, id, required, &base); \ - if (ret || !base) { return ret; }} while (0) - -static inline uoffset_t read_uoffset(const void *p, uoffset_t base) -{ - return __flatbuffers_uoffset_read_from_pe((uint8_t *)p + base); -} - -static inline thash_t read_thash_identifier(const char *identifier) -{ - return flatbuffers_type_hash_from_string(identifier); -} - -static inline thash_t read_thash(const void *p, uoffset_t base) -{ - return __flatbuffers_thash_read_from_pe((uint8_t *)p + base); -} - -static inline voffset_t read_voffset(const void *p, uoffset_t base) -{ - return __flatbuffers_voffset_read_from_pe((uint8_t *)p + base); -} - -static inline int check_header(uoffset_t end, uoffset_t base, uoffset_t offset) -{ - uoffset_t k = base + offset; - - if (uoffset_size <= voffset_size && k + offset_size < k) { - return 0; - } - - /* The `k > base` rather than `k >= base` is to avoid null offsets. */ - return k > base && k + offset_size <= end && !(k & (offset_size - 1)); -} - -static inline int check_aligned_header(uoffset_t end, uoffset_t base, uoffset_t offset, uint16_t align) -{ - uoffset_t k = base + offset; - - if (uoffset_size <= voffset_size && k + offset_size < k) { - return 0; - } - /* Alignment refers to element 0 and header must also be aligned. */ - align = align < uoffset_size ? uoffset_size : align; - - /* Note to self: the builder can also use the mask OR trick to propagate `min_align`. */ - return k > base && k + offset_size <= end && !((k + offset_size) & ((offset_size - 1) | (align - 1u))); -} - -static inline int verify_struct(uoffset_t end, uoffset_t base, uoffset_t offset, uoffset_t size, uint16_t align) -{ - /* Structs can have zero size so `end` is a valid value. */ - if (offset == 0 || base + offset > end) { - return flatcc_verify_error_offset_out_of_range; - } - base += offset; - verify(base + size >= base, flatcc_verify_error_struct_size_overflow); - verify(base + size <= end, flatcc_verify_error_struct_out_of_range); - verify (!(base & (align - 1u)), flatcc_verify_error_struct_unaligned); - return flatcc_verify_ok; -} - -static inline voffset_t read_vt_entry(flatcc_table_verifier_descriptor_t *td, voffset_t id) -{ - voffset_t vo = (id + 2u) * sizeof(voffset_t); - - /* Assumes tsize has been verified for alignment. */ - if (vo >= td->vsize) { - return 0; - } - return read_voffset(td->vtable, vo); -} - -static inline const void *get_field_ptr(flatcc_table_verifier_descriptor_t *td, voffset_t id) -{ - voffset_t vte = read_vt_entry(td, id); - return vte ? (const uint8_t *)td->buf + td->table + vte : 0; -} - -static int verify_field(flatcc_table_verifier_descriptor_t *td, - voffset_t id, int required, uoffset_t size, uint16_t align) -{ - uoffset_t k, k2; - voffset_t vte; - uoffset_t base = (uoffset_t)(size_t)td->buf; - - - /* - * Otherwise range check assumptions break, and normal access code likely also. - * We don't require voffset_size < uoffset_size, but some checks are faster if true. - */ - FLATCC_ASSERT(uoffset_size >= voffset_size); - FLATCC_ASSERT(soffset_size == uoffset_size); - - vte = read_vt_entry(td, id); - if (!vte) { - verify(!required, flatcc_verify_error_required_field_missing); - return flatcc_verify_ok; - } - trace_verify("table buffer", td->buf); - trace_verify("table", td->table); - trace_verify("id", id); - trace_verify("vte", vte); - - /* - * Note that we don't add td.table to k and we test against table - * size not table end or buffer end. Otherwise it would not be safe - * to optimized out the k <= k2 check for normal uoffset and voffset - * configurations. - */ - k = vte; - k2 = k + size; - verify(k2 <= td->tsize, flatcc_verify_error_table_field_out_of_range); - /* This normally optimizes to nop. */ - verify(uoffset_size > voffset_size || k <= k2, flatcc_verify_error_table_field_size_overflow); - trace_verify("table + vte", vte + td->table); - k += td->table + base; - trace_verify("entry: buf + table + vte", k); - trace_verify("align", align); - trace_verify("align masked entry", k & (align - 1u)); - verify(!(k & (align - 1u)), flatcc_verify_error_table_field_not_aligned); - /* We assume the table size has already been verified. */ - return flatcc_verify_ok; -} - -static int get_offset_field(flatcc_table_verifier_descriptor_t *td, voffset_t id, int required, uoffset_t *out) -{ - uoffset_t k, k2; - voffset_t vte; - - vte = read_vt_entry(td, id); - if (!vte) { - *out = 0; - if (required) { - return flatcc_verify_error_required_field_missing; - } - /* Missing, but not invalid. */ - return flatcc_verify_ok; - } - /* - * Note that we don't add td.table to k and we test against table - * size not table end or buffer end. Otherwise it would not be safe - * to optimized out the k <= k2 check for normal uoffset and voffset - * configurations. - */ - k = vte; - k2 = k + offset_size; - verify(k2 <= td->tsize, flatcc_verify_error_table_field_out_of_range); - /* This normally optimizes to nop. */ - verify(uoffset_size > voffset_size || k <= k2, flatcc_verify_error_table_field_size_overflow); - k += td->table; - verify(!(k & (offset_size - 1u)), flatcc_verify_error_table_field_not_aligned); - /* We assume the table size has already been verified. */ - *out = k; - return flatcc_verify_ok; -} - -static inline int verify_string(const void *buf, uoffset_t end, uoffset_t base, uoffset_t offset) -{ - uoffset_t n; - - verify(check_header(end, base, offset), flatcc_verify_error_string_header_out_of_range_or_unaligned); - base += offset; - n = read_uoffset(buf, base); - base += offset_size; - verify(end - base > n, flatcc_verify_error_string_out_of_range); - verify(((uint8_t *)buf + base)[n] == 0, flatcc_verify_error_string_not_zero_terminated); - return flatcc_verify_ok; -} - -/* - * Keep interface somwewhat similar ot flatcc_builder_start_vector. - * `max_count` is a precomputed division to manage overflow check on vector length. - */ -static inline int verify_vector(const void *buf, uoffset_t end, uoffset_t base, uoffset_t offset, uoffset_t elem_size, uint16_t align, uoffset_t max_count) -{ - uoffset_t n; - - verify(check_aligned_header(end, base, offset, align), flatcc_verify_error_vector_header_out_of_range_or_unaligned); - base += offset; - n = read_uoffset(buf, base); - base += offset_size; - /* `n * elem_size` can overflow uncontrollably otherwise. */ - verify(n <= max_count, flatcc_verify_error_vector_count_exceeds_representable_vector_size); - verify(end - base >= n * elem_size, flatcc_verify_error_vector_out_of_range); - return flatcc_verify_ok; -} - -static inline int verify_string_vector(const void *buf, uoffset_t end, uoffset_t base, uoffset_t offset) -{ - uoffset_t i, n; - - check_result(verify_vector(buf, end, base, offset, offset_size, offset_size, FLATBUFFERS_COUNT_MAX(offset_size))); - base += offset; - n = read_uoffset(buf, base); - base += offset_size; - for (i = 0; i < n; ++i, base += offset_size) { - check_result(verify_string(buf, end, base, read_uoffset(buf, base))); - } - return flatcc_verify_ok; -} - -static inline int verify_table(const void *buf, uoffset_t end, uoffset_t base, uoffset_t offset, - int ttl, flatcc_table_verifier_f tvf) -{ - uoffset_t vbase, vend; - flatcc_table_verifier_descriptor_t td; - - verify((td.ttl = ttl - 1), flatcc_verify_error_max_nesting_level_reached); - verify(check_header(end, base, offset), flatcc_verify_error_table_header_out_of_range_or_unaligned); - td.table = base + offset; - /* Read vtable offset - it is signed, but we want it unsigned, assuming 2's complement works. */ - vbase = td.table - read_uoffset(buf, td.table); - verify((soffset_t)vbase >= 0 && !(vbase & (voffset_size - 1)), flatcc_verify_error_vtable_offset_out_of_range_or_unaligned); - verify(vbase + voffset_size <= end, flatcc_verify_error_vtable_header_out_of_range); - /* Read vtable size. */ - td.vsize = read_voffset(buf, vbase); - vend = vbase + td.vsize; - verify(vend <= end && !(td.vsize & (voffset_size - 1)), flatcc_verify_error_vtable_size_out_of_range_or_unaligned); - /* Optimizes away overflow check if uoffset_t is large enough. */ - verify(uoffset_size > voffset_size || vend >= vbase, flatcc_verify_error_vtable_size_overflow); - - verify(td.vsize >= 2 * voffset_size, flatcc_verify_error_vtable_header_too_small); - /* Read table size. */ - td.tsize = read_voffset(buf, vbase + voffset_size); - verify(end - td.table >= td.tsize, flatcc_verify_error_table_size_out_of_range); - td.vtable = (uint8_t *)buf + vbase; - td.buf = buf; - td.end = end; - return tvf(&td); -} - -static inline int verify_table_vector(const void *buf, uoffset_t end, uoffset_t base, uoffset_t offset, int ttl, flatcc_table_verifier_f tvf) -{ - uoffset_t i, n; - - verify(ttl-- > 0, flatcc_verify_error_max_nesting_level_reached); - check_result(verify_vector(buf, end, base, offset, offset_size, offset_size, FLATBUFFERS_COUNT_MAX(offset_size))); - base += offset; - n = read_uoffset(buf, base); - base += offset_size; - for (i = 0; i < n; ++i, base += offset_size) { - check_result(verify_table(buf, end, base, read_uoffset(buf, base), ttl, tvf)); - } - return flatcc_verify_ok; -} - -static inline int verify_union_vector(const void *buf, uoffset_t end, uoffset_t base, uoffset_t offset, - uoffset_t count, const utype_t *types, int ttl, flatcc_union_verifier_f uvf) -{ - uoffset_t i, n, elem; - flatcc_union_verifier_descriptor_t ud; - - verify(ttl-- > 0, flatcc_verify_error_max_nesting_level_reached); - check_result(verify_vector(buf, end, base, offset, offset_size, offset_size, FLATBUFFERS_COUNT_MAX(offset_size))); - base += offset; - n = read_uoffset(buf, base); - verify(n == count, flatcc_verify_error_union_vector_length_mismatch); - base += offset_size; - - ud.buf = buf; - ud.end = end; - ud.ttl = ttl; - - for (i = 0; i < n; ++i, base += offset_size) { - /* Table vectors can never be null, but unions can when the type is NONE. */ - elem = read_uoffset(buf, base); - if (elem == 0) { - verify(types[i] == 0, flatcc_verify_error_union_element_absent_without_type_NONE); - } else { - verify(types[i] != 0, flatcc_verify_error_union_element_present_with_type_NONE); - ud.type = types[i]; - ud.base = base; - ud.offset = elem; - check_result(uvf(&ud)); - } - } - return flatcc_verify_ok; -} - -int flatcc_verify_field(flatcc_table_verifier_descriptor_t *td, - voffset_t id, size_t size, uint16_t align) -{ - check_result(verify_field(td, id, 0, (uoffset_t)size, align)); - return flatcc_verify_ok; -} - -int flatcc_verify_string_field(flatcc_table_verifier_descriptor_t *td, - voffset_t id, int required) -{ - uoffset_t base; - - check_field(td, id, required, base); - return verify_string(td->buf, td->end, base, read_uoffset(td->buf, base)); -} - -int flatcc_verify_vector_field(flatcc_table_verifier_descriptor_t *td, - voffset_t id, int required, size_t elem_size, uint16_t align, size_t max_count) -{ - uoffset_t base; - - check_field(td, id, required, base); - return verify_vector(td->buf, td->end, base, read_uoffset(td->buf, base), - (uoffset_t)elem_size, align, (uoffset_t)max_count); -} - -int flatcc_verify_string_vector_field(flatcc_table_verifier_descriptor_t *td, - voffset_t id, int required) -{ - uoffset_t base; - - check_field(td, id, required, base); - return verify_string_vector(td->buf, td->end, base, read_uoffset(td->buf, base)); -} - -int flatcc_verify_table_field(flatcc_table_verifier_descriptor_t *td, - voffset_t id, int required, flatcc_table_verifier_f tvf) -{ - uoffset_t base; - - check_field(td, id, required, base); - return verify_table(td->buf, td->end, base, read_uoffset(td->buf, base), td->ttl, tvf); -} - -int flatcc_verify_table_vector_field(flatcc_table_verifier_descriptor_t *td, - voffset_t id, int required, flatcc_table_verifier_f tvf) -{ - uoffset_t base; - - check_field(td, id, required, base); - return verify_table_vector(td->buf, td->end, base, read_uoffset(td->buf, base), td->ttl, tvf); -} - -int flatcc_verify_union_table(flatcc_union_verifier_descriptor_t *ud, flatcc_table_verifier_f *tvf) -{ - return verify_table(ud->buf, ud->end, ud->base, ud->offset, ud->ttl, tvf); -} - -int flatcc_verify_union_struct(flatcc_union_verifier_descriptor_t *ud, size_t size, uint16_t align) -{ - return verify_struct(ud->end, ud->base, ud->offset, (uoffset_t)size, align); -} - -int flatcc_verify_union_string(flatcc_union_verifier_descriptor_t *ud) -{ - return verify_string(ud->buf, ud->end, ud->base, ud->offset); -} - -int flatcc_verify_buffer_header(const void *buf, size_t bufsiz, const char *fid) -{ - thash_t id, id2; - - verify_runtime(!(((size_t)buf) & (offset_size - 1)), flatcc_verify_error_runtime_buffer_header_not_aligned); - /* -8 ensures no scalar or offset field size can overflow. */ - verify_runtime(bufsiz <= FLATBUFFERS_UOFFSET_MAX - 8, flatcc_verify_error_runtime_buffer_size_too_large); - /* - * Even if we specify no fid, the user might later. Therefore - * require space for it. Not all buffer generators will take this - * into account, so it is possible to fail an otherwise valid buffer - * - but such buffers aren't safe. - */ - verify(bufsiz >= offset_size + FLATBUFFERS_IDENTIFIER_SIZE, flatcc_verify_error_buffer_header_too_small); - if (fid != 0) { - id2 = read_thash_identifier(fid); - id = read_thash(buf, offset_size); - verify(id2 == 0 || id == id2, flatcc_verify_error_identifier_mismatch); - } - return flatcc_verify_ok; -} - -int flatcc_verify_typed_buffer_header(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - thash_t id, id2; - - verify_runtime(!(((size_t)buf) & (offset_size - 1)), flatcc_verify_error_runtime_buffer_header_not_aligned); - /* -8 ensures no scalar or offset field size can overflow. */ - verify_runtime(bufsiz <= FLATBUFFERS_UOFFSET_MAX - 8, flatcc_verify_error_runtime_buffer_size_too_large); - /* - * Even if we specify no fid, the user might later. Therefore - * require space for it. Not all buffer generators will take this - * into account, so it is possible to fail an otherwise valid buffer - * - but such buffers aren't safe. - */ - verify(bufsiz >= offset_size + FLATBUFFERS_IDENTIFIER_SIZE, flatcc_verify_error_buffer_header_too_small); - if (thash != 0) { - id2 = thash; - id = read_thash(buf, offset_size); - verify(id2 == 0 || id == id2, flatcc_verify_error_identifier_mismatch); - } - return flatcc_verify_ok; -} - -int flatcc_verify_struct_as_root(const void *buf, size_t bufsiz, const char *fid, size_t size, uint16_t align) -{ - check_result(flatcc_verify_buffer_header(buf, bufsiz, fid)); - return verify_struct((uoffset_t)bufsiz, 0, read_uoffset(buf, 0), (uoffset_t)size, align); -} - -int flatcc_verify_struct_as_typed_root(const void *buf, size_t bufsiz, flatbuffers_thash_t thash, size_t size, uint16_t align) -{ - check_result(flatcc_verify_typed_buffer_header(buf, bufsiz, thash)); - return verify_struct((uoffset_t)bufsiz, 0, read_uoffset(buf, 0), (uoffset_t)size, align); -} - -int flatcc_verify_table_as_root(const void *buf, size_t bufsiz, const char *fid, flatcc_table_verifier_f *tvf) -{ - check_result(flatcc_verify_buffer_header(buf, (uoffset_t)bufsiz, fid)); - return verify_table(buf, (uoffset_t)bufsiz, 0, read_uoffset(buf, 0), FLATCC_VERIFIER_MAX_LEVELS, tvf); -} - -int flatcc_verify_table_as_typed_root(const void *buf, size_t bufsiz, flatbuffers_thash_t thash, flatcc_table_verifier_f *tvf) -{ - check_result(flatcc_verify_typed_buffer_header(buf, (uoffset_t)bufsiz, thash)); - return verify_table(buf, (uoffset_t)bufsiz, 0, read_uoffset(buf, 0), FLATCC_VERIFIER_MAX_LEVELS, tvf); -} - -int flatcc_verify_struct_as_nested_root(flatcc_table_verifier_descriptor_t *td, - voffset_t id, int required, const char *fid, size_t size, uint16_t align) -{ - const uoffset_t *buf; - uoffset_t bufsiz; - - check_result(flatcc_verify_vector_field(td, id, required, align, 1, FLATBUFFERS_COUNT_MAX(1))); - if (0 == (buf = get_field_ptr(td, id))) { - return flatcc_verify_ok; - } - buf = (const uoffset_t *)((size_t)buf + read_uoffset(buf, 0)); - bufsiz = read_uoffset(buf, 0); - ++buf; - return flatcc_verify_struct_as_root(buf, bufsiz, fid, size, align); -} - -int flatcc_verify_table_as_nested_root(flatcc_table_verifier_descriptor_t *td, - voffset_t id, int required, const char *fid, - uint16_t align, flatcc_table_verifier_f tvf) -{ - const uoffset_t *buf; - uoffset_t bufsiz; - - check_result(flatcc_verify_vector_field(td, id, required, align, 1, FLATBUFFERS_COUNT_MAX(1))); - if (0 == (buf = get_field_ptr(td, id))) { - return flatcc_verify_ok; - } - buf = (const uoffset_t *)((size_t)buf + read_uoffset(buf, 0)); - bufsiz = read_uoffset(buf, 0); - ++buf; - /* - * Don't verify nested buffers identifier - information is difficult to get and - * might not be what is desired anyway. User can do it later. - */ - check_result(flatcc_verify_buffer_header(buf, bufsiz, fid)); - return verify_table(buf, bufsiz, 0, read_uoffset(buf, 0), td->ttl, tvf); -} - -int flatcc_verify_union_field(flatcc_table_verifier_descriptor_t *td, - voffset_t id, int required, flatcc_union_verifier_f uvf) -{ - voffset_t vte_type, vte_table; - const uint8_t *type; - uoffset_t base; - flatcc_union_verifier_descriptor_t ud; - - if (0 == (vte_type = read_vt_entry(td, id - 1))) { - vte_table = read_vt_entry(td, id); - verify(vte_table == 0, flatcc_verify_error_union_cannot_have_a_table_without_a_type); - verify(!required, flatcc_verify_error_type_field_absent_from_required_union_field); - return flatcc_verify_ok; - } - /* No need to check required here. */ - check_result(verify_field(td, id - 1, 0, 1, 1)); - /* Only now is it safe to read the type. */ - vte_table = read_vt_entry(td, id); - type = (const uint8_t *)td->buf + td->table + vte_type; - verify(*type || vte_table == 0, flatcc_verify_error_union_type_NONE_cannot_have_a_value); - - if (*type == 0) { - return flatcc_verify_ok; - } - check_field(td, id, required, base); - ud.buf = td->buf; - ud.end = td->end; - ud.ttl = td->ttl; - ud.base = base; - ud.offset = read_uoffset(td->buf, base); - ud.type = *type; - return uvf(&ud); -} - -int flatcc_verify_union_vector_field(flatcc_table_verifier_descriptor_t *td, - flatbuffers_voffset_t id, int required, flatcc_union_verifier_f uvf) -{ - voffset_t vte_type, vte_table; - const uoffset_t *buf; - const utype_t *types; - uoffset_t count, base; - - if (0 == (vte_type = read_vt_entry(td, id - 1))) { - if (0 == (vte_table = read_vt_entry(td, id))) { - verify(!required, flatcc_verify_error_type_field_absent_from_required_union_vector_field); - } - } - check_result(flatcc_verify_vector_field(td, id - 1, required, - utype_size, utype_size, FLATBUFFERS_COUNT_MAX(utype_size))); - if (0 == (buf = get_field_ptr(td, id - 1))) { - return flatcc_verify_ok; - } - buf = (const uoffset_t *)((size_t)buf + read_uoffset(buf, 0)); - count = read_uoffset(buf, 0); - ++buf; - types = (utype_t *)buf; - - check_field(td, id, required, base); - return verify_union_vector(td->buf, td->end, base, read_uoffset(td->buf, base), - count, types, td->ttl, uvf); -} diff --git a/nostrdb/hash_u5.c b/nostrdb/hash_u5.c deleted file mode 100644 index 90be5d5da4..0000000000 --- a/nostrdb/hash_u5.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "config.h" -#include "endian.h" -#include "hash_u5.h" -#include - -void hash_u5_init(struct hash_u5 *hu5, const char *hrp) -{ - hu5->buf = 0; - hu5->num_bits = 0; - sha256_init(&hu5->hash); - sha256_update(&hu5->hash, hrp, strlen(hrp)); -} - -void hash_u5(struct hash_u5 *hu5, const u8 *u5, size_t len) -{ - size_t bits = len * 5; - - while (bits) { - size_t n = 5; - - if (bits < n) - n = bits; - - hu5->buf <<= n; - hu5->buf |= (*u5 >> (5-n)); - bits -= n; - hu5->num_bits += n; - - if (n == 5) - u5++; - - if (hu5->num_bits >= 32) { - be32 be32 = cpu_to_be32((u32)(hu5->buf >> (hu5->num_bits-32))); - sha256_update(&hu5->hash, &be32, sizeof(be32)); - hu5->num_bits -= 32; - } - } -} - -void hash_u5_done(struct hash_u5 *hu5, struct sha256 *res) -{ - if (hu5->num_bits) { - be32 be32 = cpu_to_be32((u32)(hu5->buf << (32 - hu5->num_bits))); - - sha256_update(&hu5->hash, &be32, (hu5->num_bits + 7) / 8); - } - sha256_done(&hu5->hash, res); -} diff --git a/nostrdb/hash_u5.h b/nostrdb/hash_u5.h deleted file mode 100644 index 25779d7e24..0000000000 --- a/nostrdb/hash_u5.h +++ /dev/null @@ -1,20 +0,0 @@ -/* bech32 (thus bolt11) deal in 5-bit values */ -#ifndef LIGHTNING_COMMON_HASH_U5_H -#define LIGHTNING_COMMON_HASH_U5_H -#include "sha256.h" -#include "short_types.h" - -/* Type to annotate a 5 bit value. */ -typedef unsigned char u5; - -struct hash_u5 { - u64 buf; - unsigned int num_bits; - struct sha256_ctx hash; -}; - -void hash_u5_init(struct hash_u5 *hu5, const char *hrp); -void hash_u5(struct hash_u5 *hu5, const u5 *u5, size_t len); -void hash_u5_done(struct hash_u5 *hu5, struct sha256 *res); - -#endif /* LIGHTNING_COMMON_HASH_U5_H */ diff --git a/nostrdb/hex.c b/nostrdb/hex.c deleted file mode 100644 index 4ee543975b..0000000000 --- a/nostrdb/hex.c +++ /dev/null @@ -1,57 +0,0 @@ -/* CC0 license (public domain) - see LICENSE file for details */ -#include "hex.h" -#include -#include -#include - -static bool char_to_hex(unsigned char *val, char c) -{ - if (c >= '0' && c <= '9') { - *val = c - '0'; - return true; - } - if (c >= 'a' && c <= 'f') { - *val = c - 'a' + 10; - return true; - } - if (c >= 'A' && c <= 'F') { - *val = c - 'A' + 10; - return true; - } - return false; -} - -bool hex_decode(const char *str, size_t slen, void *buf, size_t bufsize) -{ - unsigned char v1, v2; - unsigned char *p = buf; - - while (slen > 1) { - if (!char_to_hex(&v1, str[0]) || !char_to_hex(&v2, str[1])) - return false; - if (!bufsize) - return false; - *(p++) = (v1 << 4) | v2; - str += 2; - slen -= 2; - bufsize--; - } - return slen == 0 && bufsize == 0; -} - -bool hex_encode(const void *buf, size_t bufsize, char *dest, size_t destsize) -{ - size_t i; - - if (destsize < hex_str_size(bufsize)) - return false; - - for (i = 0; i < bufsize; i++) { - unsigned int c = ((const unsigned char *)buf)[i]; - *(dest++) = hexchar(c >> 4); - *(dest++) = hexchar(c & 0xF); - } - *dest = '\0'; - - return true; -} diff --git a/nostrdb/likely.h b/nostrdb/likely.h deleted file mode 100644 index 598cfe40a0..0000000000 --- a/nostrdb/likely.h +++ /dev/null @@ -1,115 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_LIKELY_H -#define CCAN_LIKELY_H -#include "config.h" -#include - -#ifndef CCAN_LIKELY_DEBUG -#if HAVE_BUILTIN_EXPECT -/** - * likely - indicate that a condition is likely to be true. - * @cond: the condition - * - * This uses a compiler extension where available to indicate a likely - * code path and optimize appropriately; it's also useful for readers - * to quickly identify exceptional paths through functions. The - * threshold for "likely" is usually considered to be between 90 and - * 99%; marginal cases should not be marked either way. - * - * See Also: - * unlikely(), likely_stats() - * - * Example: - * // Returns false if we overflow. - * static inline bool inc_int(unsigned int *val) - * { - * (*val)++; - * if (likely(*val)) - * return true; - * return false; - * } - */ -#define likely(cond) __builtin_expect(!!(cond), 1) - -/** - * unlikely - indicate that a condition is unlikely to be true. - * @cond: the condition - * - * This uses a compiler extension where available to indicate an unlikely - * code path and optimize appropriately; see likely() above. - * - * See Also: - * likely(), likely_stats(), COLD (compiler.h) - * - * Example: - * // Prints a warning if we overflow. - * static inline void inc_int(unsigned int *val) - * { - * (*val)++; - * if (unlikely(*val == 0)) - * fprintf(stderr, "Overflow!"); - * } - */ -#define unlikely(cond) __builtin_expect(!!(cond), 0) -#else -#ifndef likely -#define likely(cond) (!!(cond)) -#endif -#ifndef unlikely -#define unlikely(cond) (!!(cond)) -#endif -#endif -#else /* CCAN_LIKELY_DEBUG versions */ -#include - -#define likely(cond) \ - (_likely_trace(!!(cond), 1, stringify(cond), __FILE__, __LINE__)) -#define unlikely(cond) \ - (_likely_trace(!!(cond), 0, stringify(cond), __FILE__, __LINE__)) - -long _likely_trace(bool cond, bool expect, - const char *condstr, - const char *file, unsigned int line); -/** - * likely_stats - return description of abused likely()/unlikely() - * @min_hits: minimum number of hits - * @percent: maximum percentage correct - * - * When CCAN_LIKELY_DEBUG is defined, likely() and unlikely() trace their - * results: this causes a significant slowdown, but allows analysis of - * whether the branches are labelled correctly. - * - * This function returns a malloc'ed description of the least-correct - * usage of likely() or unlikely(). It ignores places which have been - * called less than @min_hits times, and those which were predicted - * correctly more than @percent of the time. It returns NULL when - * nothing meets those criteria. - * - * Note that this call is destructive; the returned offender is - * removed from the trace so that the next call to likely_stats() will - * return the next-worst likely()/unlikely() usage. - * - * Example: - * // Print every place hit more than twice which was wrong > 5%. - * static void report_stats(void) - * { - * #ifdef CCAN_LIKELY_DEBUG - * const char *bad; - * - * while ((bad = likely_stats(2, 95)) != NULL) { - * printf("Suspicious likely: %s", bad); - * free(bad); - * } - * #endif - * } - */ -char *likely_stats(unsigned int min_hits, unsigned int percent); - -/** - * likely_stats_reset - free up memory of likely()/unlikely() branches. - * - * This can also plug memory leaks. - */ -void likely_stats_reset(void); -#endif /* CCAN_LIKELY_DEBUG */ -#endif /* CCAN_LIKELY_H */ diff --git a/nostrdb/list.c b/nostrdb/list.c deleted file mode 100644 index c9ee35c703..0000000000 --- a/nostrdb/list.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#include -#include -#include "list.h" - -static void *corrupt(const char *abortstr, - const struct list_node *head, - const struct list_node *node, - unsigned int count) -{ - if (abortstr) { - fprintf(stderr, - "%s: prev corrupt in node %p (%u) of %p\n", - abortstr, node, count, head); - abort(); - } - return NULL; -} - -struct list_node *list_check_node(const struct list_node *node, - const char *abortstr) -{ - const struct list_node *p, *n; - int count = 0; - - for (p = node, n = node->next; n != node; p = n, n = n->next) { - count++; - if (n->prev != p) - return corrupt(abortstr, node, n, count); - } - /* Check prev on head node. */ - if (node->prev != p) - return corrupt(abortstr, node, node, 0); - - return (struct list_node *)node; -} - -struct list_head *list_check(const struct list_head *h, const char *abortstr) -{ - if (!list_check_node(&h->n, abortstr)) - return NULL; - return (struct list_head *)h; -} diff --git a/nostrdb/list.h b/nostrdb/list.h deleted file mode 100644 index 4574e911c0..0000000000 --- a/nostrdb/list.h +++ /dev/null @@ -1,842 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#ifndef CCAN_LIST_H -#define CCAN_LIST_H -//#define CCAN_LIST_DEBUG 1 -#include -#include -#include "str.h" -#include "container_of.h" -#include "check_type.h" - -/** - * struct list_node - an entry in a doubly-linked list - * @next: next entry (self if empty) - * @prev: previous entry (self if empty) - * - * This is used as an entry in a linked list. - * Example: - * struct child { - * const char *name; - * // Linked list of all us children. - * struct list_node list; - * }; - */ -struct list_node -{ - struct list_node *next, *prev; -}; - -/** - * struct list_head - the head of a doubly-linked list - * @h: the list_head (containing next and prev pointers) - * - * This is used as the head of a linked list. - * Example: - * struct parent { - * const char *name; - * struct list_head children; - * unsigned int num_children; - * }; - */ -struct list_head -{ - struct list_node n; -}; - -/** - * list_check - check head of a list for consistency - * @h: the list_head - * @abortstr: the location to print on aborting, or NULL. - * - * Because list_nodes have redundant information, consistency checking between - * the back and forward links can be done. This is useful as a debugging check. - * If @abortstr is non-NULL, that will be printed in a diagnostic if the list - * is inconsistent, and the function will abort. - * - * Returns the list head if the list is consistent, NULL if not (it - * can never return NULL if @abortstr is set). - * - * See also: list_check_node() - * - * Example: - * static void dump_parent(struct parent *p) - * { - * struct child *c; - * - * printf("%s (%u children):\n", p->name, p->num_children); - * list_check(&p->children, "bad child list"); - * list_for_each(&p->children, c, list) - * printf(" -> %s\n", c->name); - * } - */ -struct list_head *list_check(const struct list_head *h, const char *abortstr); - -/** - * list_check_node - check node of a list for consistency - * @n: the list_node - * @abortstr: the location to print on aborting, or NULL. - * - * Check consistency of the list node is in (it must be in one). - * - * See also: list_check() - * - * Example: - * static void dump_child(const struct child *c) - * { - * list_check_node(&c->list, "bad child list"); - * printf("%s\n", c->name); - * } - */ -struct list_node *list_check_node(const struct list_node *n, - const char *abortstr); - -#define LIST_LOC __FILE__ ":" stringify(__LINE__) -#ifdef CCAN_LIST_DEBUG -#define list_debug(h, loc) list_check((h), loc) -#define list_debug_node(n, loc) list_check_node((n), loc) -#else -#define list_debug(h, loc) ((void)loc, h) -#define list_debug_node(n, loc) ((void)loc, n) -#endif - -/** - * LIST_HEAD_INIT - initializer for an empty list_head - * @name: the name of the list. - * - * Explicit initializer for an empty list. - * - * See also: - * LIST_HEAD, list_head_init() - * - * Example: - * static struct list_head my_list = LIST_HEAD_INIT(my_list); - */ -#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } } - -/** - * LIST_HEAD - define and initialize an empty list_head - * @name: the name of the list. - * - * The LIST_HEAD macro defines a list_head and initializes it to an empty - * list. It can be prepended by "static" to define a static list_head. - * - * See also: - * LIST_HEAD_INIT, list_head_init() - * - * Example: - * static LIST_HEAD(my_global_list); - */ -#define LIST_HEAD(name) \ - struct list_head name = LIST_HEAD_INIT(name) - -/** - * list_head_init - initialize a list_head - * @h: the list_head to set to the empty list - * - * Example: - * ... - * struct parent *parent = malloc(sizeof(*parent)); - * - * list_head_init(&parent->children); - * parent->num_children = 0; - */ -static inline void list_head_init(struct list_head *h) -{ - h->n.next = h->n.prev = &h->n; -} - -/** - * list_node_init - initialize a list_node - * @n: the list_node to link to itself. - * - * You don't need to use this normally! But it lets you list_del(@n) - * safely. - */ -static inline void list_node_init(struct list_node *n) -{ - n->next = n->prev = n; -} - -/** - * list_add_after - add an entry after an existing node in a linked list - * @h: the list_head to add the node to (for debugging) - * @p: the existing list_node to add the node after - * @n: the new list_node to add to the list. - * - * The existing list_node must already be a member of the list. - * The new list_node does not need to be initialized; it will be overwritten. - * - * Example: - * struct child c1, c2, c3; - * LIST_HEAD(h); - * - * list_add_tail(&h, &c1.list); - * list_add_tail(&h, &c3.list); - * list_add_after(&h, &c1.list, &c2.list); - */ -#define list_add_after(h, p, n) list_add_after_(h, p, n, LIST_LOC) -static inline void list_add_after_(struct list_head *h, - struct list_node *p, - struct list_node *n, - const char *abortstr) -{ - n->next = p->next; - n->prev = p; - p->next->prev = n; - p->next = n; - (void)list_debug(h, abortstr); -} - -/** - * list_add - add an entry at the start of a linked list. - * @h: the list_head to add the node to - * @n: the list_node to add to the list. - * - * The list_node does not need to be initialized; it will be overwritten. - * Example: - * struct child *child = malloc(sizeof(*child)); - * - * child->name = "marvin"; - * list_add(&parent->children, &child->list); - * parent->num_children++; - */ -#define list_add(h, n) list_add_(h, n, LIST_LOC) -static inline void list_add_(struct list_head *h, - struct list_node *n, - const char *abortstr) -{ - list_add_after_(h, &h->n, n, abortstr); -} - -/** - * list_add_before - add an entry before an existing node in a linked list - * @h: the list_head to add the node to (for debugging) - * @p: the existing list_node to add the node before - * @n: the new list_node to add to the list. - * - * The existing list_node must already be a member of the list. - * The new list_node does not need to be initialized; it will be overwritten. - * - * Example: - * list_head_init(&h); - * list_add_tail(&h, &c1.list); - * list_add_tail(&h, &c3.list); - * list_add_before(&h, &c3.list, &c2.list); - */ -#define list_add_before(h, p, n) list_add_before_(h, p, n, LIST_LOC) -static inline void list_add_before_(struct list_head *h, - struct list_node *p, - struct list_node *n, - const char *abortstr) -{ - n->next = p; - n->prev = p->prev; - p->prev->next = n; - p->prev = n; - (void)list_debug(h, abortstr); -} - -/** - * list_add_tail - add an entry at the end of a linked list. - * @h: the list_head to add the node to - * @n: the list_node to add to the list. - * - * The list_node does not need to be initialized; it will be overwritten. - * Example: - * list_add_tail(&parent->children, &child->list); - * parent->num_children++; - */ -#define list_add_tail(h, n) list_add_tail_(h, n, LIST_LOC) -static inline void list_add_tail_(struct list_head *h, - struct list_node *n, - const char *abortstr) -{ - list_add_before_(h, &h->n, n, abortstr); -} - -/** - * list_empty - is a list empty? - * @h: the list_head - * - * If the list is empty, returns true. - * - * Example: - * assert(list_empty(&parent->children) == (parent->num_children == 0)); - */ -#define list_empty(h) list_empty_(h, LIST_LOC) -static inline bool list_empty_(const struct list_head *h, const char* abortstr) -{ - (void)list_debug(h, abortstr); - return h->n.next == &h->n; -} - -/** - * list_empty_nodebug - is a list empty (and don't perform debug checks)? - * @h: the list_head - * - * If the list is empty, returns true. - * This differs from list_empty() in that if CCAN_LIST_DEBUG is set it - * will NOT perform debug checks. Only use this function if you REALLY - * know what you're doing. - * - * Example: - * assert(list_empty_nodebug(&parent->children) == (parent->num_children == 0)); - */ -#ifndef CCAN_LIST_DEBUG -#define list_empty_nodebug(h) list_empty(h) -#else -static inline bool list_empty_nodebug(const struct list_head *h) -{ - return h->n.next == &h->n; -} -#endif - -/** - * list_empty_nocheck - is a list empty? - * @h: the list_head - * - * If the list is empty, returns true. This doesn't perform any - * debug check for list consistency, so it can be called without - * locks, racing with the list being modified. This is ok for - * checks where an incorrect result is not an issue (optimized - * bail out path for example). - */ -static inline bool list_empty_nocheck(const struct list_head *h) -{ - return h->n.next == &h->n; -} - -/** - * list_del - delete an entry from an (unknown) linked list. - * @n: the list_node to delete from the list. - * - * Note that this leaves @n in an undefined state; it can be added to - * another list, but not deleted again. - * - * See also: - * list_del_from(), list_del_init() - * - * Example: - * list_del(&child->list); - * parent->num_children--; - */ -#define list_del(n) list_del_(n, LIST_LOC) -static inline void list_del_(struct list_node *n, const char* abortstr) -{ - (void)list_debug_node(n, abortstr); - n->next->prev = n->prev; - n->prev->next = n->next; -#ifdef CCAN_LIST_DEBUG - /* Catch use-after-del. */ - n->next = n->prev = NULL; -#endif -} - -/** - * list_del_init - delete a node, and reset it so it can be deleted again. - * @n: the list_node to be deleted. - * - * list_del(@n) or list_del_init() again after this will be safe, - * which can be useful in some cases. - * - * See also: - * list_del_from(), list_del() - * - * Example: - * list_del_init(&child->list); - * parent->num_children--; - */ -#define list_del_init(n) list_del_init_(n, LIST_LOC) -static inline void list_del_init_(struct list_node *n, const char *abortstr) -{ - list_del_(n, abortstr); - list_node_init(n); -} - -/** - * list_del_from - delete an entry from a known linked list. - * @h: the list_head the node is in. - * @n: the list_node to delete from the list. - * - * This explicitly indicates which list a node is expected to be in, - * which is better documentation and can catch more bugs. - * - * See also: list_del() - * - * Example: - * list_del_from(&parent->children, &child->list); - * parent->num_children--; - */ -static inline void list_del_from(struct list_head *h, struct list_node *n) -{ -#ifdef CCAN_LIST_DEBUG - { - /* Thorough check: make sure it was in list! */ - struct list_node *i; - for (i = h->n.next; i != n; i = i->next) - assert(i != &h->n); - } -#endif /* CCAN_LIST_DEBUG */ - - /* Quick test that catches a surprising number of bugs. */ - assert(!list_empty(h)); - list_del(n); -} - -/** - * list_swap - swap out an entry from an (unknown) linked list for a new one. - * @o: the list_node to replace from the list. - * @n: the list_node to insert in place of the old one. - * - * Note that this leaves @o in an undefined state; it can be added to - * another list, but not deleted/swapped again. - * - * See also: - * list_del() - * - * Example: - * struct child x1, x2; - * LIST_HEAD(xh); - * - * list_add(&xh, &x1.list); - * list_swap(&x1.list, &x2.list); - */ -#define list_swap(o, n) list_swap_(o, n, LIST_LOC) -static inline void list_swap_(struct list_node *o, - struct list_node *n, - const char* abortstr) -{ - (void)list_debug_node(o, abortstr); - *n = *o; - n->next->prev = n; - n->prev->next = n; -#ifdef CCAN_LIST_DEBUG - /* Catch use-after-del. */ - o->next = o->prev = NULL; -#endif -} - -/** - * list_entry - convert a list_node back into the structure containing it. - * @n: the list_node - * @type: the type of the entry - * @member: the list_node member of the type - * - * Example: - * // First list entry is children.next; convert back to child. - * child = list_entry(parent->children.n.next, struct child, list); - * - * See Also: - * list_top(), list_for_each() - */ -#define list_entry(n, type, member) container_of(n, type, member) - -/** - * list_top - get the first entry in a list - * @h: the list_head - * @type: the type of the entry - * @member: the list_node member of the type - * - * If the list is empty, returns NULL. - * - * Example: - * struct child *first; - * first = list_top(&parent->children, struct child, list); - * if (!first) - * printf("Empty list!\n"); - */ -#define list_top(h, type, member) \ - ((type *)list_top_((h), list_off_(type, member))) - -static inline const void *list_top_(const struct list_head *h, size_t off) -{ - if (list_empty(h)) - return NULL; - return (const char *)h->n.next - off; -} - -/** - * list_pop - remove the first entry in a list - * @h: the list_head - * @type: the type of the entry - * @member: the list_node member of the type - * - * If the list is empty, returns NULL. - * - * Example: - * struct child *one; - * one = list_pop(&parent->children, struct child, list); - * if (!one) - * printf("Empty list!\n"); - */ -#define list_pop(h, type, member) \ - ((type *)list_pop_((h), list_off_(type, member))) - -static inline const void *list_pop_(const struct list_head *h, size_t off) -{ - struct list_node *n; - - if (list_empty(h)) - return NULL; - n = h->n.next; - list_del(n); - return (const char *)n - off; -} - -/** - * list_tail - get the last entry in a list - * @h: the list_head - * @type: the type of the entry - * @member: the list_node member of the type - * - * If the list is empty, returns NULL. - * - * Example: - * struct child *last; - * last = list_tail(&parent->children, struct child, list); - * if (!last) - * printf("Empty list!\n"); - */ -#define list_tail(h, type, member) \ - ((type *)list_tail_((h), list_off_(type, member))) - -static inline const void *list_tail_(const struct list_head *h, size_t off) -{ - if (list_empty(h)) - return NULL; - return (const char *)h->n.prev - off; -} - -/** - * list_for_each - iterate through a list. - * @h: the list_head (warning: evaluated multiple times!) - * @i: the structure containing the list_node - * @member: the list_node member of the structure - * - * This is a convenient wrapper to iterate @i over the entire list. It's - * a for loop, so you can break and continue as normal. - * - * Example: - * list_for_each(&parent->children, child, list) - * printf("Name: %s\n", child->name); - */ -#define list_for_each(h, i, member) \ - list_for_each_off(h, i, list_off_var_(i, member)) - -/** - * list_for_each_rev - iterate through a list backwards. - * @h: the list_head - * @i: the structure containing the list_node - * @member: the list_node member of the structure - * - * This is a convenient wrapper to iterate @i over the entire list. It's - * a for loop, so you can break and continue as normal. - * - * Example: - * list_for_each_rev(&parent->children, child, list) - * printf("Name: %s\n", child->name); - */ -#define list_for_each_rev(h, i, member) \ - list_for_each_rev_off(h, i, list_off_var_(i, member)) - -/** - * list_for_each_rev_safe - iterate through a list backwards, - * maybe during deletion - * @h: the list_head - * @i: the structure containing the list_node - * @nxt: the structure containing the list_node - * @member: the list_node member of the structure - * - * This is a convenient wrapper to iterate @i over the entire list backwards. - * It's a for loop, so you can break and continue as normal. The extra - * variable * @nxt is used to hold the next element, so you can delete @i - * from the list. - * - * Example: - * struct child *next; - * list_for_each_rev_safe(&parent->children, child, next, list) { - * printf("Name: %s\n", child->name); - * } - */ -#define list_for_each_rev_safe(h, i, nxt, member) \ - list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member)) - -/** - * list_for_each_safe - iterate through a list, maybe during deletion - * @h: the list_head - * @i: the structure containing the list_node - * @nxt: the structure containing the list_node - * @member: the list_node member of the structure - * - * This is a convenient wrapper to iterate @i over the entire list. It's - * a for loop, so you can break and continue as normal. The extra variable - * @nxt is used to hold the next element, so you can delete @i from the list. - * - * Example: - * list_for_each_safe(&parent->children, child, next, list) { - * list_del(&child->list); - * parent->num_children--; - * } - */ -#define list_for_each_safe(h, i, nxt, member) \ - list_for_each_safe_off(h, i, nxt, list_off_var_(i, member)) - -/** - * list_next - get the next entry in a list - * @h: the list_head - * @i: a pointer to an entry in the list. - * @member: the list_node member of the structure - * - * If @i was the last entry in the list, returns NULL. - * - * Example: - * struct child *second; - * second = list_next(&parent->children, first, list); - * if (!second) - * printf("No second child!\n"); - */ -#define list_next(h, i, member) \ - ((list_typeof(i))list_entry_or_null(list_debug(h, \ - __FILE__ ":" stringify(__LINE__)), \ - (i)->member.next, \ - list_off_var_((i), member))) - -/** - * list_prev - get the previous entry in a list - * @h: the list_head - * @i: a pointer to an entry in the list. - * @member: the list_node member of the structure - * - * If @i was the first entry in the list, returns NULL. - * - * Example: - * first = list_prev(&parent->children, second, list); - * if (!first) - * printf("Can't go back to first child?!\n"); - */ -#define list_prev(h, i, member) \ - ((list_typeof(i))list_entry_or_null(list_debug(h, \ - __FILE__ ":" stringify(__LINE__)), \ - (i)->member.prev, \ - list_off_var_((i), member))) - -/** - * list_append_list - empty one list onto the end of another. - * @to: the list to append into - * @from: the list to empty. - * - * This takes the entire contents of @from and moves it to the end of - * @to. After this @from will be empty. - * - * Example: - * struct list_head adopter; - * - * list_append_list(&adopter, &parent->children); - * assert(list_empty(&parent->children)); - * parent->num_children = 0; - */ -#define list_append_list(t, f) list_append_list_(t, f, \ - __FILE__ ":" stringify(__LINE__)) -static inline void list_append_list_(struct list_head *to, - struct list_head *from, - const char *abortstr) -{ - struct list_node *from_tail = list_debug(from, abortstr)->n.prev; - struct list_node *to_tail = list_debug(to, abortstr)->n.prev; - - /* Sew in head and entire list. */ - to->n.prev = from_tail; - from_tail->next = &to->n; - to_tail->next = &from->n; - from->n.prev = to_tail; - - /* Now remove head. */ - list_del(&from->n); - list_head_init(from); -} - -/** - * list_prepend_list - empty one list into the start of another. - * @to: the list to prepend into - * @from: the list to empty. - * - * This takes the entire contents of @from and moves it to the start - * of @to. After this @from will be empty. - * - * Example: - * list_prepend_list(&adopter, &parent->children); - * assert(list_empty(&parent->children)); - * parent->num_children = 0; - */ -#define list_prepend_list(t, f) list_prepend_list_(t, f, LIST_LOC) -static inline void list_prepend_list_(struct list_head *to, - struct list_head *from, - const char *abortstr) -{ - struct list_node *from_tail = list_debug(from, abortstr)->n.prev; - struct list_node *to_head = list_debug(to, abortstr)->n.next; - - /* Sew in head and entire list. */ - to->n.next = &from->n; - from->n.prev = &to->n; - to_head->prev = from_tail; - from_tail->next = to_head; - - /* Now remove head. */ - list_del(&from->n); - list_head_init(from); -} - -/* internal macros, do not use directly */ -#define list_for_each_off_dir_(h, i, off, dir) \ - for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, \ - (off)); \ - list_node_from_off_((void *)i, (off)) != &(h)->n; \ - i = list_node_to_off_(list_node_from_off_((void *)i, (off))->dir, \ - (off))) - -#define list_for_each_safe_off_dir_(h, i, nxt, off, dir) \ - for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, \ - (off)), \ - nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, \ - (off)); \ - list_node_from_off_(i, (off)) != &(h)->n; \ - i = nxt, \ - nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, \ - (off))) - -/** - * list_for_each_off - iterate through a list of memory regions. - * @h: the list_head - * @i: the pointer to a memory region which contains list node data. - * @off: offset(relative to @i) at which list node data resides. - * - * This is a low-level wrapper to iterate @i over the entire list, used to - * implement all oher, more high-level, for-each constructs. It's a for loop, - * so you can break and continue as normal. - * - * WARNING! Being the low-level macro that it is, this wrapper doesn't know - * nor care about the type of @i. The only assumption made is that @i points - * to a chunk of memory that at some @offset, relative to @i, contains a - * properly filled `struct list_node' which in turn contains pointers to - * memory chunks and it's turtles all the way down. With all that in mind - * remember that given the wrong pointer/offset couple this macro will - * happily churn all you memory until SEGFAULT stops it, in other words - * caveat emptor. - * - * It is worth mentioning that one of legitimate use-cases for that wrapper - * is operation on opaque types with known offset for `struct list_node' - * member(preferably 0), because it allows you not to disclose the type of - * @i. - * - * Example: - * list_for_each_off(&parent->children, child, - * offsetof(struct child, list)) - * printf("Name: %s\n", child->name); - */ -#define list_for_each_off(h, i, off) \ - list_for_each_off_dir_((h),(i),(off),next) - -/** - * list_for_each_rev_off - iterate through a list of memory regions backwards - * @h: the list_head - * @i: the pointer to a memory region which contains list node data. - * @off: offset(relative to @i) at which list node data resides. - * - * See list_for_each_off for details - */ -#define list_for_each_rev_off(h, i, off) \ - list_for_each_off_dir_((h),(i),(off),prev) - -/** - * list_for_each_safe_off - iterate through a list of memory regions, maybe - * during deletion - * @h: the list_head - * @i: the pointer to a memory region which contains list node data. - * @nxt: the structure containing the list_node - * @off: offset(relative to @i) at which list node data resides. - * - * For details see `list_for_each_off' and `list_for_each_safe' - * descriptions. - * - * Example: - * list_for_each_safe_off(&parent->children, child, - * next, offsetof(struct child, list)) - * printf("Name: %s\n", child->name); - */ -#define list_for_each_safe_off(h, i, nxt, off) \ - list_for_each_safe_off_dir_((h),(i),(nxt),(off),next) - -/** - * list_for_each_rev_safe_off - iterate backwards through a list of - * memory regions, maybe during deletion - * @h: the list_head - * @i: the pointer to a memory region which contains list node data. - * @nxt: the structure containing the list_node - * @off: offset(relative to @i) at which list node data resides. - * - * For details see `list_for_each_rev_off' and `list_for_each_rev_safe' - * descriptions. - * - * Example: - * list_for_each_rev_safe_off(&parent->children, child, - * next, offsetof(struct child, list)) - * printf("Name: %s\n", child->name); - */ -#define list_for_each_rev_safe_off(h, i, nxt, off) \ - list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev) - -/* Other -off variants. */ -#define list_entry_off(n, type, off) \ - ((type *)list_node_from_off_((n), (off))) - -#define list_head_off(h, type, off) \ - ((type *)list_head_off((h), (off))) - -#define list_tail_off(h, type, off) \ - ((type *)list_tail_((h), (off))) - -#define list_add_off(h, n, off) \ - list_add((h), list_node_from_off_((n), (off))) - -#define list_del_off(n, off) \ - list_del(list_node_from_off_((n), (off))) - -#define list_del_from_off(h, n, off) \ - list_del_from(h, list_node_from_off_((n), (off))) - -/* Offset helper functions so we only single-evaluate. */ -static inline void *list_node_to_off_(struct list_node *node, size_t off) -{ - return (void *)((char *)node - off); -} -static inline struct list_node *list_node_from_off_(void *ptr, size_t off) -{ - return (struct list_node *)((char *)ptr + off); -} - -/* Get the offset of the member, but make sure it's a list_node. */ -#define list_off_(type, member) \ - (container_off(type, member) + \ - check_type(((type *)0)->member, struct list_node)) - -#define list_off_var_(var, member) \ - (container_off_var(var, member) + \ - check_type(var->member, struct list_node)) - -#if HAVE_TYPEOF -#define list_typeof(var) typeof(var) -#else -#define list_typeof(var) void * -#endif - -/* Returns member, or NULL if at end of list. */ -static inline void *list_entry_or_null(const struct list_head *h, - const struct list_node *n, - size_t off) -{ - if (n == &h->n) - return NULL; - return (char *)n - off; -} -#endif /* CCAN_LIST_H */ diff --git a/nostrdb/lmdb.h b/nostrdb/lmdb.h deleted file mode 100644 index ff03c224f2..0000000000 --- a/nostrdb/lmdb.h +++ /dev/null @@ -1,1608 +0,0 @@ -/** @file lmdb.h - * @brief Lightning memory-mapped database library - * - * @mainpage Lightning Memory-Mapped Database Manager (LMDB) - * - * @section intro_sec Introduction - * LMDB is a Btree-based database management library modeled loosely on the - * BerkeleyDB API, but much simplified. The entire database is exposed - * in a memory map, and all data fetches return data directly - * from the mapped memory, so no malloc's or memcpy's occur during - * data fetches. As such, the library is extremely simple because it - * requires no page caching layer of its own, and it is extremely high - * performance and memory-efficient. It is also fully transactional with - * full ACID semantics, and when the memory map is read-only, the - * database integrity cannot be corrupted by stray pointer writes from - * application code. - * - * The library is fully thread-aware and supports concurrent read/write - * access from multiple processes and threads. Data pages use a copy-on- - * write strategy so no active data pages are ever overwritten, which - * also provides resistance to corruption and eliminates the need of any - * special recovery procedures after a system crash. Writes are fully - * serialized; only one write transaction may be active at a time, which - * guarantees that writers can never deadlock. The database structure is - * multi-versioned so readers run with no locks; writers cannot block - * readers, and readers don't block writers. - * - * Unlike other well-known database mechanisms which use either write-ahead - * transaction logs or append-only data writes, LMDB requires no maintenance - * during operation. Both write-ahead loggers and append-only databases - * require periodic checkpointing and/or compaction of their log or database - * files otherwise they grow without bound. LMDB tracks free pages within - * the database and re-uses them for new write operations, so the database - * size does not grow without bound in normal use. - * - * The memory map can be used as a read-only or read-write map. It is - * read-only by default as this provides total immunity to corruption. - * Using read-write mode offers much higher write performance, but adds - * the possibility for stray application writes thru pointers to silently - * corrupt the database. Of course if your application code is known to - * be bug-free (...) then this is not an issue. - * - * If this is your first time using a transactional embedded key/value - * store, you may find the \ref starting page to be helpful. - * - * @section caveats_sec Caveats - * Troubleshooting the lock file, plus semaphores on BSD systems: - * - * - A broken lockfile can cause sync issues. - * Stale reader transactions left behind by an aborted program - * cause further writes to grow the database quickly, and - * stale locks can block further operation. - * - * Fix: Check for stale readers periodically, using the - * #mdb_reader_check function or the \ref mdb_stat_1 "mdb_stat" tool. - * Stale writers will be cleared automatically on some systems: - * - Windows - automatic - * - Linux, systems using POSIX mutexes with Robust option - automatic - * - not on BSD, systems using POSIX semaphores. - * Otherwise just make all programs using the database close it; - * the lockfile is always reset on first open of the environment. - * - * - On BSD systems or others configured with MDB_USE_POSIX_SEM, - * startup can fail due to semaphores owned by another userid. - * - * Fix: Open and close the database as the user which owns the - * semaphores (likely last user) or as root, while no other - * process is using the database. - * - * Restrictions/caveats (in addition to those listed for some functions): - * - * - Only the database owner should normally use the database on - * BSD systems or when otherwise configured with MDB_USE_POSIX_SEM. - * Multiple users can cause startup to fail later, as noted above. - * - * - There is normally no pure read-only mode, since readers need write - * access to locks and lock file. Exceptions: On read-only filesystems - * or with the #MDB_NOLOCK flag described under #mdb_env_open(). - * - * - An LMDB configuration will often reserve considerable \b unused - * memory address space and maybe file size for future growth. - * This does not use actual memory or disk space, but users may need - * to understand the difference so they won't be scared off. - * - * - By default, in versions before 0.9.10, unused portions of the data - * file might receive garbage data from memory freed by other code. - * (This does not happen when using the #MDB_WRITEMAP flag.) As of - * 0.9.10 the default behavior is to initialize such memory before - * writing to the data file. Since there may be a slight performance - * cost due to this initialization, applications may disable it using - * the #MDB_NOMEMINIT flag. Applications handling sensitive data - * which must not be written should not use this flag. This flag is - * irrelevant when using #MDB_WRITEMAP. - * - * - A thread can only use one transaction at a time, plus any child - * transactions. Each transaction belongs to one thread. See below. - * The #MDB_NOTLS flag changes this for read-only transactions. - * - * - Use an MDB_env* in the process which opened it, not after fork(). - * - * - Do not have open an LMDB database twice in the same process at - * the same time. Not even from a plain open() call - close()ing it - * breaks fcntl() advisory locking. (It is OK to reopen it after - * fork() - exec*(), since the lockfile has FD_CLOEXEC set.) - * - * - Avoid long-lived transactions. Read transactions prevent - * reuse of pages freed by newer write transactions, thus the - * database can grow quickly. Write transactions prevent - * other write transactions, since writes are serialized. - * - * - Avoid suspending a process with active transactions. These - * would then be "long-lived" as above. Also read transactions - * suspended when writers commit could sometimes see wrong data. - * - * ...when several processes can use a database concurrently: - * - * - Avoid aborting a process with an active transaction. - * The transaction becomes "long-lived" as above until a check - * for stale readers is performed or the lockfile is reset, - * since the process may not remove it from the lockfile. - * - * This does not apply to write transactions if the system clears - * stale writers, see above. - * - * - If you do that anyway, do a periodic check for stale readers. Or - * close the environment once in a while, so the lockfile can get reset. - * - * - Do not use LMDB databases on remote filesystems, even between - * processes on the same host. This breaks flock() on some OSes, - * possibly memory map sync, and certainly sync between programs - * on different hosts. - * - * - Opening a database can fail if another process is opening or - * closing it at exactly the same time. - * - * @author Howard Chu, Symas Corporation. - * - * @copyright Copyright 2011-2021 Howard Chu, Symas Corp. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted only as authorized by the OpenLDAP - * Public License. - * - * A copy of this license is available in the file LICENSE in the - * top-level directory of the distribution or, alternatively, at - * . - * - * @par Derived From: - * This code is derived from btree.c written by Martin Hedenfalk. - * - * Copyright (c) 2009, 2010 Martin Hedenfalk - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -#ifndef _LMDB_H_ -#define _LMDB_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** Unix permissions for creating files, or dummy definition for Windows */ -#ifdef _MSC_VER -typedef int mdb_mode_t; -#else -typedef mode_t mdb_mode_t; -#endif - -/** An abstraction for a file handle. - * On POSIX systems file handles are small integers. On Windows - * they're opaque pointers. - */ -#ifdef _WIN32 -typedef void *mdb_filehandle_t; -#else -typedef int mdb_filehandle_t; -#endif - -/** @defgroup mdb LMDB API - * @{ - * @brief OpenLDAP Lightning Memory-Mapped Database Manager - */ -/** @defgroup Version Version Macros - * @{ - */ -/** Library major version */ -#define MDB_VERSION_MAJOR 0 -/** Library minor version */ -#define MDB_VERSION_MINOR 9 -/** Library patch version */ -#define MDB_VERSION_PATCH 31 - -/** Combine args a,b,c into a single integer for easy version comparisons */ -#define MDB_VERINT(a,b,c) (((a) << 24) | ((b) << 16) | (c)) - -/** The full library version as a single integer */ -#define MDB_VERSION_FULL \ - MDB_VERINT(MDB_VERSION_MAJOR,MDB_VERSION_MINOR,MDB_VERSION_PATCH) - -/** The release date of this library version */ -#define MDB_VERSION_DATE "July 10, 2023" - -/** A stringifier for the version info */ -#define MDB_VERSTR(a,b,c,d) "LMDB " #a "." #b "." #c ": (" d ")" - -/** A helper for the stringifier macro */ -#define MDB_VERFOO(a,b,c,d) MDB_VERSTR(a,b,c,d) - -/** The full library version as a C string */ -#define MDB_VERSION_STRING \ - MDB_VERFOO(MDB_VERSION_MAJOR,MDB_VERSION_MINOR,MDB_VERSION_PATCH,MDB_VERSION_DATE) -/** @} */ - -/** @brief Opaque structure for a database environment. - * - * A DB environment supports multiple databases, all residing in the same - * shared-memory map. - */ -typedef struct MDB_env MDB_env; - -/** @brief Opaque structure for a transaction handle. - * - * All database operations require a transaction handle. Transactions may be - * read-only or read-write. - */ -typedef struct MDB_txn MDB_txn; - -/** @brief A handle for an individual database in the DB environment. */ -typedef unsigned int MDB_dbi; - -/** @brief Opaque structure for navigating through a database */ -typedef struct MDB_cursor MDB_cursor; - -/** @brief Generic structure used for passing keys and data in and out - * of the database. - * - * Values returned from the database are valid only until a subsequent - * update operation, or the end of the transaction. Do not modify or - * free them, they commonly point into the database itself. - * - * Key sizes must be between 1 and #mdb_env_get_maxkeysize() inclusive. - * The same applies to data sizes in databases with the #MDB_DUPSORT flag. - * Other data items can in theory be from 0 to 0xffffffff bytes long. - */ -typedef struct MDB_val { - size_t mv_size; /**< size of the data item */ - void *mv_data; /**< address of the data item */ -} MDB_val; - -/** @brief A callback function used to compare two keys in a database */ -typedef int (MDB_cmp_func)(const MDB_val *a, const MDB_val *b); - -/** @brief A callback function used to relocate a position-dependent data item - * in a fixed-address database. - * - * The \b newptr gives the item's desired address in - * the memory map, and \b oldptr gives its previous address. The item's actual - * data resides at the address in \b item. This callback is expected to walk - * through the fields of the record in \b item and modify any - * values based at the \b oldptr address to be relative to the \b newptr address. - * @param[in,out] item The item that is to be relocated. - * @param[in] oldptr The previous address. - * @param[in] newptr The new address to relocate to. - * @param[in] relctx An application-provided context, set by #mdb_set_relctx(). - * @todo This feature is currently unimplemented. - */ -typedef void (MDB_rel_func)(MDB_val *item, void *oldptr, void *newptr, void *relctx); - -/** @defgroup mdb_env Environment Flags - * @{ - */ - /** mmap at a fixed address (experimental) */ -#define MDB_FIXEDMAP 0x01 - /** no environment directory */ -#define MDB_NOSUBDIR 0x4000 - /** don't fsync after commit */ -#define MDB_NOSYNC 0x10000 - /** read only */ -#define MDB_RDONLY 0x20000 - /** don't fsync metapage after commit */ -#define MDB_NOMETASYNC 0x40000 - /** use writable mmap */ -#define MDB_WRITEMAP 0x80000 - /** use asynchronous msync when #MDB_WRITEMAP is used */ -#define MDB_MAPASYNC 0x100000 - /** tie reader locktable slots to #MDB_txn objects instead of to threads */ -#define MDB_NOTLS 0x200000 - /** don't do any locking, caller must manage their own locks */ -#define MDB_NOLOCK 0x400000 - /** don't do readahead (no effect on Windows) */ -#define MDB_NORDAHEAD 0x800000 - /** don't initialize malloc'd memory before writing to datafile */ -#define MDB_NOMEMINIT 0x1000000 -/** @} */ - -/** @defgroup mdb_dbi_open Database Flags - * @{ - */ - /** use reverse string keys */ -#define MDB_REVERSEKEY 0x02 - /** use sorted duplicates */ -#define MDB_DUPSORT 0x04 - /** numeric keys in native byte order: either unsigned int or size_t. - * The keys must all be of the same size. */ -#define MDB_INTEGERKEY 0x08 - /** with #MDB_DUPSORT, sorted dup items have fixed size */ -#define MDB_DUPFIXED 0x10 - /** with #MDB_DUPSORT, dups are #MDB_INTEGERKEY-style integers */ -#define MDB_INTEGERDUP 0x20 - /** with #MDB_DUPSORT, use reverse string dups */ -#define MDB_REVERSEDUP 0x40 - /** create DB if not already existing */ -#define MDB_CREATE 0x40000 -/** @} */ - -/** @defgroup mdb_put Write Flags - * @{ - */ -/** For put: Don't write if the key already exists. */ -#define MDB_NOOVERWRITE 0x10 -/** Only for #MDB_DUPSORT
- * For put: don't write if the key and data pair already exist.
- * For mdb_cursor_del: remove all duplicate data items. - */ -#define MDB_NODUPDATA 0x20 -/** For mdb_cursor_put: overwrite the current key/data pair */ -#define MDB_CURRENT 0x40 -/** For put: Just reserve space for data, don't copy it. Return a - * pointer to the reserved space. - */ -#define MDB_RESERVE 0x10000 -/** Data is being appended, don't split full pages. */ -#define MDB_APPEND 0x20000 -/** Duplicate data is being appended, don't split full pages. */ -#define MDB_APPENDDUP 0x40000 -/** Store multiple data items in one call. Only for #MDB_DUPFIXED. */ -#define MDB_MULTIPLE 0x80000 -/* @} */ - -/** @defgroup mdb_copy Copy Flags - * @{ - */ -/** Compacting copy: Omit free space from copy, and renumber all - * pages sequentially. - */ -#define MDB_CP_COMPACT 0x01 -/* @} */ - -/** @brief Cursor Get operations. - * - * This is the set of all operations for retrieving data - * using a cursor. - */ -typedef enum MDB_cursor_op { - MDB_FIRST, /**< Position at first key/data item */ - MDB_FIRST_DUP, /**< Position at first data item of current key. - Only for #MDB_DUPSORT */ - MDB_GET_BOTH, /**< Position at key/data pair. Only for #MDB_DUPSORT */ - MDB_GET_BOTH_RANGE, /**< position at key, nearest data. Only for #MDB_DUPSORT */ - MDB_GET_CURRENT, /**< Return key/data at current cursor position */ - MDB_GET_MULTIPLE, /**< Return up to a page of duplicate data items - from current cursor position. Move cursor to prepare - for #MDB_NEXT_MULTIPLE. Only for #MDB_DUPFIXED */ - MDB_LAST, /**< Position at last key/data item */ - MDB_LAST_DUP, /**< Position at last data item of current key. - Only for #MDB_DUPSORT */ - MDB_NEXT, /**< Position at next data item */ - MDB_NEXT_DUP, /**< Position at next data item of current key. - Only for #MDB_DUPSORT */ - MDB_NEXT_MULTIPLE, /**< Return up to a page of duplicate data items - from next cursor position. Move cursor to prepare - for #MDB_NEXT_MULTIPLE. Only for #MDB_DUPFIXED */ - MDB_NEXT_NODUP, /**< Position at first data item of next key */ - MDB_PREV, /**< Position at previous data item */ - MDB_PREV_DUP, /**< Position at previous data item of current key. - Only for #MDB_DUPSORT */ - MDB_PREV_NODUP, /**< Position at last data item of previous key */ - MDB_SET, /**< Position at specified key */ - MDB_SET_KEY, /**< Position at specified key, return key + data */ - MDB_SET_RANGE, /**< Position at first key greater than or equal to specified key. */ - MDB_PREV_MULTIPLE /**< Position at previous page and return up to - a page of duplicate data items. Only for #MDB_DUPFIXED */ -} MDB_cursor_op; - -/** @defgroup errors Return Codes - * - * BerkeleyDB uses -30800 to -30999, we'll go under them - * @{ - */ - /** Successful result */ -#define MDB_SUCCESS 0 - /** key/data pair already exists */ -#define MDB_KEYEXIST (-30799) - /** key/data pair not found (EOF) */ -#define MDB_NOTFOUND (-30798) - /** Requested page not found - this usually indicates corruption */ -#define MDB_PAGE_NOTFOUND (-30797) - /** Located page was wrong type */ -#define MDB_CORRUPTED (-30796) - /** Update of meta page failed or environment had fatal error */ -#define MDB_PANIC (-30795) - /** Environment version mismatch */ -#define MDB_VERSION_MISMATCH (-30794) - /** File is not a valid LMDB file */ -#define MDB_INVALID (-30793) - /** Environment mapsize reached */ -#define MDB_MAP_FULL (-30792) - /** Environment maxdbs reached */ -#define MDB_DBS_FULL (-30791) - /** Environment maxreaders reached */ -#define MDB_READERS_FULL (-30790) - /** Too many TLS keys in use - Windows only */ -#define MDB_TLS_FULL (-30789) - /** Txn has too many dirty pages */ -#define MDB_TXN_FULL (-30788) - /** Cursor stack too deep - internal error */ -#define MDB_CURSOR_FULL (-30787) - /** Page has not enough space - internal error */ -#define MDB_PAGE_FULL (-30786) - /** Database contents grew beyond environment mapsize */ -#define MDB_MAP_RESIZED (-30785) - /** Operation and DB incompatible, or DB type changed. This can mean: - *
    - *
  • The operation expects an #MDB_DUPSORT / #MDB_DUPFIXED database. - *
  • Opening a named DB when the unnamed DB has #MDB_DUPSORT / #MDB_INTEGERKEY. - *
  • Accessing a data record as a database, or vice versa. - *
  • The database was dropped and recreated with different flags. - *
- */ -#define MDB_INCOMPATIBLE (-30784) - /** Invalid reuse of reader locktable slot */ -#define MDB_BAD_RSLOT (-30783) - /** Transaction must abort, has a child, or is invalid */ -#define MDB_BAD_TXN (-30782) - /** Unsupported size of key/DB name/data, or wrong DUPFIXED size */ -#define MDB_BAD_VALSIZE (-30781) - /** The specified DBI was changed unexpectedly */ -#define MDB_BAD_DBI (-30780) - /** The last defined error code */ -#define MDB_LAST_ERRCODE MDB_BAD_DBI -/** @} */ - -/** @brief Statistics for a database in the environment */ -typedef struct MDB_stat { - unsigned int ms_psize; /**< Size of a database page. - This is currently the same for all databases. */ - unsigned int ms_depth; /**< Depth (height) of the B-tree */ - size_t ms_branch_pages; /**< Number of internal (non-leaf) pages */ - size_t ms_leaf_pages; /**< Number of leaf pages */ - size_t ms_overflow_pages; /**< Number of overflow pages */ - size_t ms_entries; /**< Number of data items */ -} MDB_stat; - -/** @brief Information about the environment */ -typedef struct MDB_envinfo { - void *me_mapaddr; /**< Address of map, if fixed */ - size_t me_mapsize; /**< Size of the data memory map */ - size_t me_last_pgno; /**< ID of the last used page */ - size_t me_last_txnid; /**< ID of the last committed transaction */ - unsigned int me_maxreaders; /**< max reader slots in the environment */ - unsigned int me_numreaders; /**< max reader slots used in the environment */ -} MDB_envinfo; - - /** @brief Return the LMDB library version information. - * - * @param[out] major if non-NULL, the library major version number is copied here - * @param[out] minor if non-NULL, the library minor version number is copied here - * @param[out] patch if non-NULL, the library patch version number is copied here - * @retval "version string" The library version as a string - */ -char *mdb_version(int *major, int *minor, int *patch); - - /** @brief Return a string describing a given error code. - * - * This function is a superset of the ANSI C X3.159-1989 (ANSI C) strerror(3) - * function. If the error code is greater than or equal to 0, then the string - * returned by the system function strerror(3) is returned. If the error code - * is less than 0, an error string corresponding to the LMDB library error is - * returned. See @ref errors for a list of LMDB-specific error codes. - * @param[in] err The error code - * @retval "error message" The description of the error - */ -char *mdb_strerror(int err); - - /** @brief Create an LMDB environment handle. - * - * This function allocates memory for a #MDB_env structure. To release - * the allocated memory and discard the handle, call #mdb_env_close(). - * Before the handle may be used, it must be opened using #mdb_env_open(). - * Various other options may also need to be set before opening the handle, - * e.g. #mdb_env_set_mapsize(), #mdb_env_set_maxreaders(), #mdb_env_set_maxdbs(), - * depending on usage requirements. - * @param[out] env The address where the new handle will be stored - * @return A non-zero error value on failure and 0 on success. - */ -int mdb_env_create(MDB_env **env); - - /** @brief Open an environment handle. - * - * If this function fails, #mdb_env_close() must be called to discard the #MDB_env handle. - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] path The directory in which the database files reside. This - * directory must already exist and be writable. - * @param[in] flags Special options for this environment. This parameter - * must be set to 0 or by bitwise OR'ing together one or more of the - * values described here. - * Flags set by mdb_env_set_flags() are also used. - *
    - *
  • #MDB_FIXEDMAP - * use a fixed address for the mmap region. This flag must be specified - * when creating the environment, and is stored persistently in the environment. - * If successful, the memory map will always reside at the same virtual address - * and pointers used to reference data items in the database will be constant - * across multiple invocations. This option may not always work, depending on - * how the operating system has allocated memory to shared libraries and other uses. - * The feature is highly experimental. - *
  • #MDB_NOSUBDIR - * By default, LMDB creates its environment in a directory whose - * pathname is given in \b path, and creates its data and lock files - * under that directory. With this option, \b path is used as-is for - * the database main data file. The database lock file is the \b path - * with "-lock" appended. - *
  • #MDB_RDONLY - * Open the environment in read-only mode. No write operations will be - * allowed. LMDB will still modify the lock file - except on read-only - * filesystems, where LMDB does not use locks. - *
  • #MDB_WRITEMAP - * Use a writeable memory map unless MDB_RDONLY is set. This uses - * fewer mallocs but loses protection from application bugs - * like wild pointer writes and other bad updates into the database. - * This may be slightly faster for DBs that fit entirely in RAM, but - * is slower for DBs larger than RAM. - * Incompatible with nested transactions. - * Do not mix processes with and without MDB_WRITEMAP on the same - * environment. This can defeat durability (#mdb_env_sync etc). - *
  • #MDB_NOMETASYNC - * Flush system buffers to disk only once per transaction, omit the - * metadata flush. Defer that until the system flushes files to disk, - * or next non-MDB_RDONLY commit or #mdb_env_sync(). This optimization - * maintains database integrity, but a system crash may undo the last - * committed transaction. I.e. it preserves the ACI (atomicity, - * consistency, isolation) but not D (durability) database property. - * This flag may be changed at any time using #mdb_env_set_flags(). - *
  • #MDB_NOSYNC - * Don't flush system buffers to disk when committing a transaction. - * This optimization means a system crash can corrupt the database or - * lose the last transactions if buffers are not yet flushed to disk. - * The risk is governed by how often the system flushes dirty buffers - * to disk and how often #mdb_env_sync() is called. However, if the - * filesystem preserves write order and the #MDB_WRITEMAP flag is not - * used, transactions exhibit ACI (atomicity, consistency, isolation) - * properties and only lose D (durability). I.e. database integrity - * is maintained, but a system crash may undo the final transactions. - * Note that (#MDB_NOSYNC | #MDB_WRITEMAP) leaves the system with no - * hint for when to write transactions to disk, unless #mdb_env_sync() - * is called. (#MDB_MAPASYNC | #MDB_WRITEMAP) may be preferable. - * This flag may be changed at any time using #mdb_env_set_flags(). - *
  • #MDB_MAPASYNC - * When using #MDB_WRITEMAP, use asynchronous flushes to disk. - * As with #MDB_NOSYNC, a system crash can then corrupt the - * database or lose the last transactions. Calling #mdb_env_sync() - * ensures on-disk database integrity until next commit. - * This flag may be changed at any time using #mdb_env_set_flags(). - *
  • #MDB_NOTLS - * Don't use Thread-Local Storage. Tie reader locktable slots to - * #MDB_txn objects instead of to threads. I.e. #mdb_txn_reset() keeps - * the slot reserved for the #MDB_txn object. A thread may use parallel - * read-only transactions. A read-only transaction may span threads if - * the user synchronizes its use. Applications that multiplex many - * user threads over individual OS threads need this option. Such an - * application must also serialize the write transactions in an OS - * thread, since LMDB's write locking is unaware of the user threads. - *
  • #MDB_NOLOCK - * Don't do any locking. If concurrent access is anticipated, the - * caller must manage all concurrency itself. For proper operation - * the caller must enforce single-writer semantics, and must ensure - * that no readers are using old transactions while a writer is - * active. The simplest approach is to use an exclusive lock so that - * no readers may be active at all when a writer begins. - *
  • #MDB_NORDAHEAD - * Turn off readahead. Most operating systems perform readahead on - * read requests by default. This option turns it off if the OS - * supports it. Turning it off may help random read performance - * when the DB is larger than RAM and system RAM is full. - * The option is not implemented on Windows. - *
  • #MDB_NOMEMINIT - * Don't initialize malloc'd memory before writing to unused spaces - * in the data file. By default, memory for pages written to the data - * file is obtained using malloc. While these pages may be reused in - * subsequent transactions, freshly malloc'd pages will be initialized - * to zeroes before use. This avoids persisting leftover data from other - * code (that used the heap and subsequently freed the memory) into the - * data file. Note that many other system libraries may allocate - * and free memory from the heap for arbitrary uses. E.g., stdio may - * use the heap for file I/O buffers. This initialization step has a - * modest performance cost so some applications may want to disable - * it using this flag. This option can be a problem for applications - * which handle sensitive data like passwords, and it makes memory - * checkers like Valgrind noisy. This flag is not needed with #MDB_WRITEMAP, - * which writes directly to the mmap instead of using malloc for pages. The - * initialization is also skipped if #MDB_RESERVE is used; the - * caller is expected to overwrite all of the memory that was - * reserved in that case. - * This flag may be changed at any time using #mdb_env_set_flags(). - *
- * @param[in] mode The UNIX permissions to set on created files and semaphores. - * This parameter is ignored on Windows. - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • #MDB_VERSION_MISMATCH - the version of the LMDB library doesn't match the - * version that created the database environment. - *
  • #MDB_INVALID - the environment file headers are corrupted. - *
  • ENOENT - the directory specified by the path parameter doesn't exist. - *
  • EACCES - the user didn't have permission to access the environment files. - *
  • EAGAIN - the environment was locked by another process. - *
- */ -int mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode); - - /** @brief Copy an LMDB environment to the specified path. - * - * This function may be used to make a backup of an existing environment. - * No lockfile is created, since it gets recreated at need. - * @note This call can trigger significant file size growth if run in - * parallel with write transactions, because it employs a read-only - * transaction. See long-lived transactions under @ref caveats_sec. - * @param[in] env An environment handle returned by #mdb_env_create(). It - * must have already been opened successfully. - * @param[in] path The directory in which the copy will reside. This - * directory must already exist and be writable but must otherwise be - * empty. - * @return A non-zero error value on failure and 0 on success. - */ -int mdb_env_copy(MDB_env *env, const char *path); - - /** @brief Copy an LMDB environment to the specified file descriptor. - * - * This function may be used to make a backup of an existing environment. - * No lockfile is created, since it gets recreated at need. - * @note This call can trigger significant file size growth if run in - * parallel with write transactions, because it employs a read-only - * transaction. See long-lived transactions under @ref caveats_sec. - * @param[in] env An environment handle returned by #mdb_env_create(). It - * must have already been opened successfully. - * @param[in] fd The filedescriptor to write the copy to. It must - * have already been opened for Write access. - * @return A non-zero error value on failure and 0 on success. - */ -int mdb_env_copyfd(MDB_env *env, mdb_filehandle_t fd); - - /** @brief Copy an LMDB environment to the specified path, with options. - * - * This function may be used to make a backup of an existing environment. - * No lockfile is created, since it gets recreated at need. - * @note This call can trigger significant file size growth if run in - * parallel with write transactions, because it employs a read-only - * transaction. See long-lived transactions under @ref caveats_sec. - * @param[in] env An environment handle returned by #mdb_env_create(). It - * must have already been opened successfully. - * @param[in] path The directory in which the copy will reside. This - * directory must already exist and be writable but must otherwise be - * empty. - * @param[in] flags Special options for this operation. This parameter - * must be set to 0 or by bitwise OR'ing together one or more of the - * values described here. - *
    - *
  • #MDB_CP_COMPACT - Perform compaction while copying: omit free - * pages and sequentially renumber all pages in output. This option - * consumes more CPU and runs more slowly than the default. - * Currently it fails if the environment has suffered a page leak. - *
- * @return A non-zero error value on failure and 0 on success. - */ -int mdb_env_copy2(MDB_env *env, const char *path, unsigned int flags); - - /** @brief Copy an LMDB environment to the specified file descriptor, - * with options. - * - * This function may be used to make a backup of an existing environment. - * No lockfile is created, since it gets recreated at need. See - * #mdb_env_copy2() for further details. - * @note This call can trigger significant file size growth if run in - * parallel with write transactions, because it employs a read-only - * transaction. See long-lived transactions under @ref caveats_sec. - * @param[in] env An environment handle returned by #mdb_env_create(). It - * must have already been opened successfully. - * @param[in] fd The filedescriptor to write the copy to. It must - * have already been opened for Write access. - * @param[in] flags Special options for this operation. - * See #mdb_env_copy2() for options. - * @return A non-zero error value on failure and 0 on success. - */ -int mdb_env_copyfd2(MDB_env *env, mdb_filehandle_t fd, unsigned int flags); - - /** @brief Return statistics about the LMDB environment. - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[out] stat The address of an #MDB_stat structure - * where the statistics will be copied - */ -int mdb_env_stat(MDB_env *env, MDB_stat *stat); - - /** @brief Return information about the LMDB environment. - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[out] stat The address of an #MDB_envinfo structure - * where the information will be copied - */ -int mdb_env_info(MDB_env *env, MDB_envinfo *stat); - - /** @brief Flush the data buffers to disk. - * - * Data is always written to disk when #mdb_txn_commit() is called, - * but the operating system may keep it buffered. LMDB always flushes - * the OS buffers upon commit as well, unless the environment was - * opened with #MDB_NOSYNC or in part #MDB_NOMETASYNC. This call is - * not valid if the environment was opened with #MDB_RDONLY. - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] force If non-zero, force a synchronous flush. Otherwise - * if the environment has the #MDB_NOSYNC flag set the flushes - * will be omitted, and with #MDB_MAPASYNC they will be asynchronous. - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EACCES - the environment is read-only. - *
  • EINVAL - an invalid parameter was specified. - *
  • EIO - an error occurred during synchronization. - *
- */ -int mdb_env_sync(MDB_env *env, int force); - - /** @brief Close the environment and release the memory map. - * - * Only a single thread may call this function. All transactions, databases, - * and cursors must already be closed before calling this function. Attempts to - * use any such handles after calling this function will cause a SIGSEGV. - * The environment handle will be freed and must not be used again after this call. - * @param[in] env An environment handle returned by #mdb_env_create() - */ -void mdb_env_close(MDB_env *env); - - /** @brief Set environment flags. - * - * This may be used to set some flags in addition to those from - * #mdb_env_open(), or to unset these flags. If several threads - * change the flags at the same time, the result is undefined. - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] flags The flags to change, bitwise OR'ed together - * @param[in] onoff A non-zero value sets the flags, zero clears them. - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_env_set_flags(MDB_env *env, unsigned int flags, int onoff); - - /** @brief Get environment flags. - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[out] flags The address of an integer to store the flags - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_env_get_flags(MDB_env *env, unsigned int *flags); - - /** @brief Return the path that was used in #mdb_env_open(). - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[out] path Address of a string pointer to contain the path. This - * is the actual string in the environment, not a copy. It should not be - * altered in any way. - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_env_get_path(MDB_env *env, const char **path); - - /** @brief Return the filedescriptor for the given environment. - * - * This function may be called after fork(), so the descriptor can be - * closed before exec*(). Other LMDB file descriptors have FD_CLOEXEC. - * (Until LMDB 0.9.18, only the lockfile had that.) - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[out] fd Address of a mdb_filehandle_t to contain the descriptor. - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_env_get_fd(MDB_env *env, mdb_filehandle_t *fd); - - /** @brief Set the size of the memory map to use for this environment. - * - * The size should be a multiple of the OS page size. The default is - * 10485760 bytes. The size of the memory map is also the maximum size - * of the database. The value should be chosen as large as possible, - * to accommodate future growth of the database. - * This function should be called after #mdb_env_create() and before #mdb_env_open(). - * It may be called at later times if no transactions are active in - * this process. Note that the library does not check for this condition, - * the caller must ensure it explicitly. - * - * The new size takes effect immediately for the current process but - * will not be persisted to any others until a write transaction has been - * committed by the current process. Also, only mapsize increases are - * persisted into the environment. - * - * If the mapsize is increased by another process, and data has grown - * beyond the range of the current mapsize, #mdb_txn_begin() will - * return #MDB_MAP_RESIZED. This function may be called with a size - * of zero to adopt the new size. - * - * Any attempt to set a size smaller than the space already consumed - * by the environment will be silently changed to the current size of the used space. - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] size The size in bytes - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified, or the environment has - * an active write transaction. - *
- */ -int mdb_env_set_mapsize(MDB_env *env, size_t size); - - /** @brief Set the maximum number of threads/reader slots for the environment. - * - * This defines the number of slots in the lock table that is used to track readers in the - * the environment. The default is 126. - * Starting a read-only transaction normally ties a lock table slot to the - * current thread until the environment closes or the thread exits. If - * MDB_NOTLS is in use, #mdb_txn_begin() instead ties the slot to the - * MDB_txn object until it or the #MDB_env object is destroyed. - * This function may only be called after #mdb_env_create() and before #mdb_env_open(). - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] readers The maximum number of reader lock table slots - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified, or the environment is already open. - *
- */ -int mdb_env_set_maxreaders(MDB_env *env, unsigned int readers); - - /** @brief Get the maximum number of threads/reader slots for the environment. - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[out] readers Address of an integer to store the number of readers - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_env_get_maxreaders(MDB_env *env, unsigned int *readers); - - /** @brief Set the maximum number of named databases for the environment. - * - * This function is only needed if multiple databases will be used in the - * environment. Simpler applications that use the environment as a single - * unnamed database can ignore this option. - * This function may only be called after #mdb_env_create() and before #mdb_env_open(). - * - * Currently a moderate number of slots are cheap but a huge number gets - * expensive: 7-120 words per transaction, and every #mdb_dbi_open() - * does a linear search of the opened slots. - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] dbs The maximum number of databases - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified, or the environment is already open. - *
- */ -int mdb_env_set_maxdbs(MDB_env *env, MDB_dbi dbs); - - /** @brief Get the maximum size of keys and #MDB_DUPSORT data we can write. - * - * Depends on the compile-time constant #MDB_MAXKEYSIZE. Default 511. - * See @ref MDB_val. - * @param[in] env An environment handle returned by #mdb_env_create() - * @return The maximum size of a key we can write - */ -int mdb_env_get_maxkeysize(MDB_env *env); - - /** @brief Set application information associated with the #MDB_env. - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] ctx An arbitrary pointer for whatever the application needs. - * @return A non-zero error value on failure and 0 on success. - */ -int mdb_env_set_userctx(MDB_env *env, void *ctx); - - /** @brief Get the application information associated with the #MDB_env. - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @return The pointer set by #mdb_env_set_userctx(). - */ -void *mdb_env_get_userctx(MDB_env *env); - - /** @brief A callback function for most LMDB assert() failures, - * called before printing the message and aborting. - * - * @param[in] env An environment handle returned by #mdb_env_create(). - * @param[in] msg The assertion message, not including newline. - */ -typedef void MDB_assert_func(MDB_env *env, const char *msg); - - /** Set or reset the assert() callback of the environment. - * Disabled if liblmdb is built with NDEBUG. - * @note This hack should become obsolete as lmdb's error handling matures. - * @param[in] env An environment handle returned by #mdb_env_create(). - * @param[in] func An #MDB_assert_func function, or 0. - * @return A non-zero error value on failure and 0 on success. - */ -int mdb_env_set_assert(MDB_env *env, MDB_assert_func *func); - - /** @brief Create a transaction for use with the environment. - * - * The transaction handle may be discarded using #mdb_txn_abort() or #mdb_txn_commit(). - * @note A transaction and its cursors must only be used by a single - * thread, and a thread may only have a single transaction at a time. - * If #MDB_NOTLS is in use, this does not apply to read-only transactions. - * @note Cursors may not span transactions. - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] parent If this parameter is non-NULL, the new transaction - * will be a nested transaction, with the transaction indicated by \b parent - * as its parent. Transactions may be nested to any level. A parent - * transaction and its cursors may not issue any other operations than - * mdb_txn_commit and mdb_txn_abort while it has active child transactions. - * @param[in] flags Special options for this transaction. This parameter - * must be set to 0 or by bitwise OR'ing together one or more of the - * values described here. - *
    - *
  • #MDB_RDONLY - * This transaction will not perform any write operations. - *
- * @param[out] txn Address where the new #MDB_txn handle will be stored - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • #MDB_PANIC - a fatal error occurred earlier and the environment - * must be shut down. - *
  • #MDB_MAP_RESIZED - another process wrote data beyond this MDB_env's - * mapsize and this environment's map must be resized as well. - * See #mdb_env_set_mapsize(). - *
  • #MDB_READERS_FULL - a read-only transaction was requested and - * the reader lock table is full. See #mdb_env_set_maxreaders(). - *
  • ENOMEM - out of memory. - *
- */ -int mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **txn); - - /** @brief Returns the transaction's #MDB_env - * - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - */ -MDB_env *mdb_txn_env(MDB_txn *txn); - - /** @brief Return the transaction's ID. - * - * This returns the identifier associated with this transaction. For a - * read-only transaction, this corresponds to the snapshot being read; - * concurrent readers will frequently have the same transaction ID. - * - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @return A transaction ID, valid if input is an active transaction. - */ -size_t mdb_txn_id(MDB_txn *txn); - - /** @brief Commit all the operations of a transaction into the database. - * - * The transaction handle is freed. It and its cursors must not be used - * again after this call, except with #mdb_cursor_renew(). - * @note Earlier documentation incorrectly said all cursors would be freed. - * Only write-transactions free cursors. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
  • ENOSPC - no more disk space. - *
  • EIO - a low-level I/O error occurred while writing. - *
  • ENOMEM - out of memory. - *
- */ -int mdb_txn_commit(MDB_txn *txn); - - /** @brief Abandon all the operations of the transaction instead of saving them. - * - * The transaction handle is freed. It and its cursors must not be used - * again after this call, except with #mdb_cursor_renew(). - * @note Earlier documentation incorrectly said all cursors would be freed. - * Only write-transactions free cursors. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - */ -void mdb_txn_abort(MDB_txn *txn); - - /** @brief Reset a read-only transaction. - * - * Abort the transaction like #mdb_txn_abort(), but keep the transaction - * handle. #mdb_txn_renew() may reuse the handle. This saves allocation - * overhead if the process will start a new read-only transaction soon, - * and also locking overhead if #MDB_NOTLS is in use. The reader table - * lock is released, but the table slot stays tied to its thread or - * #MDB_txn. Use mdb_txn_abort() to discard a reset handle, and to free - * its lock table slot if MDB_NOTLS is in use. - * Cursors opened within the transaction must not be used - * again after this call, except with #mdb_cursor_renew(). - * Reader locks generally don't interfere with writers, but they keep old - * versions of database pages allocated. Thus they prevent the old pages - * from being reused when writers commit new data, and so under heavy load - * the database size may grow much more rapidly than otherwise. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - */ -void mdb_txn_reset(MDB_txn *txn); - - /** @brief Renew a read-only transaction. - * - * This acquires a new reader lock for a transaction handle that had been - * released by #mdb_txn_reset(). It must be called before a reset transaction - * may be used again. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • #MDB_PANIC - a fatal error occurred earlier and the environment - * must be shut down. - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_txn_renew(MDB_txn *txn); - -/** Compat with version <= 0.9.4, avoid clash with libmdb from MDB Tools project */ -#define mdb_open(txn,name,flags,dbi) mdb_dbi_open(txn,name,flags,dbi) -/** Compat with version <= 0.9.4, avoid clash with libmdb from MDB Tools project */ -#define mdb_close(env,dbi) mdb_dbi_close(env,dbi) - - /** @brief Open a database in the environment. - * - * A database handle denotes the name and parameters of a database, - * independently of whether such a database exists. - * The database handle may be discarded by calling #mdb_dbi_close(). - * The old database handle is returned if the database was already open. - * The handle may only be closed once. - * - * The database handle will be private to the current transaction until - * the transaction is successfully committed. If the transaction is - * aborted the handle will be closed automatically. - * After a successful commit the handle will reside in the shared - * environment, and may be used by other transactions. - * - * This function must not be called from multiple concurrent - * transactions in the same process. A transaction that uses - * this function must finish (either commit or abort) before - * any other transaction in the process may use this function. - * - * To use named databases (with name != NULL), #mdb_env_set_maxdbs() - * must be called before opening the environment. Database names are - * keys in the unnamed database, and may be read but not written. - * - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] name The name of the database to open. If only a single - * database is needed in the environment, this value may be NULL. - * @param[in] flags Special options for this database. This parameter - * must be set to 0 or by bitwise OR'ing together one or more of the - * values described here. - *
    - *
  • #MDB_REVERSEKEY - * Keys are strings to be compared in reverse order, from the end - * of the strings to the beginning. By default, Keys are treated as strings and - * compared from beginning to end. - *
  • #MDB_DUPSORT - * Duplicate keys may be used in the database. (Or, from another perspective, - * keys may have multiple data items, stored in sorted order.) By default - * keys must be unique and may have only a single data item. - *
  • #MDB_INTEGERKEY - * Keys are binary integers in native byte order, either unsigned int - * or size_t, and will be sorted as such. - * The keys must all be of the same size. - *
  • #MDB_DUPFIXED - * This flag may only be used in combination with #MDB_DUPSORT. This option - * tells the library that the data items for this database are all the same - * size, which allows further optimizations in storage and retrieval. When - * all data items are the same size, the #MDB_GET_MULTIPLE, #MDB_NEXT_MULTIPLE - * and #MDB_PREV_MULTIPLE cursor operations may be used to retrieve multiple - * items at once. - *
  • #MDB_INTEGERDUP - * This option specifies that duplicate data items are binary integers, - * similar to #MDB_INTEGERKEY keys. - *
  • #MDB_REVERSEDUP - * This option specifies that duplicate data items should be compared as - * strings in reverse order. - *
  • #MDB_CREATE - * Create the named database if it doesn't exist. This option is not - * allowed in a read-only transaction or a read-only environment. - *
- * @param[out] dbi Address where the new #MDB_dbi handle will be stored - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • #MDB_NOTFOUND - the specified database doesn't exist in the environment - * and #MDB_CREATE was not specified. - *
  • #MDB_DBS_FULL - too many databases have been opened. See #mdb_env_set_maxdbs(). - *
- */ -int mdb_dbi_open(MDB_txn *txn, const char *name, unsigned int flags, MDB_dbi *dbi); - - /** @brief Retrieve statistics for a database. - * - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[out] stat The address of an #MDB_stat structure - * where the statistics will be copied - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_stat(MDB_txn *txn, MDB_dbi dbi, MDB_stat *stat); - - /** @brief Retrieve the DB flags for a database handle. - * - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[out] flags Address where the flags will be returned. - * @return A non-zero error value on failure and 0 on success. - */ -int mdb_dbi_flags(MDB_txn *txn, MDB_dbi dbi, unsigned int *flags); - - /** @brief Close a database handle. Normally unnecessary. Use with care: - * - * This call is not mutex protected. Handles should only be closed by - * a single thread, and only if no other threads are going to reference - * the database handle or one of its cursors any further. Do not close - * a handle if an existing transaction has modified its database. - * Doing so can cause misbehavior from database corruption to errors - * like MDB_BAD_VALSIZE (since the DB name is gone). - * - * Closing a database handle is not necessary, but lets #mdb_dbi_open() - * reuse the handle value. Usually it's better to set a bigger - * #mdb_env_set_maxdbs(), unless that value would be large. - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - */ -void mdb_dbi_close(MDB_env *env, MDB_dbi dbi); - - /** @brief Empty or delete+close a database. - * - * See #mdb_dbi_close() for restrictions about closing the DB handle. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] del 0 to empty the DB, 1 to delete it from the - * environment and close the DB handle. - * @return A non-zero error value on failure and 0 on success. - */ -int mdb_drop(MDB_txn *txn, MDB_dbi dbi, int del); - - /** @brief Set a custom key comparison function for a database. - * - * The comparison function is called whenever it is necessary to compare a - * key specified by the application with a key currently stored in the database. - * If no comparison function is specified, and no special key flags were specified - * with #mdb_dbi_open(), the keys are compared lexically, with shorter keys collating - * before longer keys. - * @warning This function must be called before any data access functions are used, - * otherwise data corruption may occur. The same comparison function must be used by every - * program accessing the database, every time the database is used. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] cmp A #MDB_cmp_func function - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_set_compare(MDB_txn *txn, MDB_dbi dbi, MDB_cmp_func *cmp); - - /** @brief Set a custom data comparison function for a #MDB_DUPSORT database. - * - * This comparison function is called whenever it is necessary to compare a data - * item specified by the application with a data item currently stored in the database. - * This function only takes effect if the database was opened with the #MDB_DUPSORT - * flag. - * If no comparison function is specified, and no special key flags were specified - * with #mdb_dbi_open(), the data items are compared lexically, with shorter items collating - * before longer items. - * @warning This function must be called before any data access functions are used, - * otherwise data corruption may occur. The same comparison function must be used by every - * program accessing the database, every time the database is used. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] cmp A #MDB_cmp_func function - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_set_dupsort(MDB_txn *txn, MDB_dbi dbi, MDB_cmp_func *cmp); - - /** @brief Set a relocation function for a #MDB_FIXEDMAP database. - * - * @todo The relocation function is called whenever it is necessary to move the data - * of an item to a different position in the database (e.g. through tree - * balancing operations, shifts as a result of adds or deletes, etc.). It is - * intended to allow address/position-dependent data items to be stored in - * a database in an environment opened with the #MDB_FIXEDMAP option. - * Currently the relocation feature is unimplemented and setting - * this function has no effect. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] rel A #MDB_rel_func function - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_set_relfunc(MDB_txn *txn, MDB_dbi dbi, MDB_rel_func *rel); - - /** @brief Set a context pointer for a #MDB_FIXEDMAP database's relocation function. - * - * See #mdb_set_relfunc and #MDB_rel_func for more details. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] ctx An arbitrary pointer for whatever the application needs. - * It will be passed to the callback function set by #mdb_set_relfunc - * as its \b relctx parameter whenever the callback is invoked. - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_set_relctx(MDB_txn *txn, MDB_dbi dbi, void *ctx); - - /** @brief Get items from a database. - * - * This function retrieves key/data pairs from the database. The address - * and length of the data associated with the specified \b key are returned - * in the structure to which \b data refers. - * If the database supports duplicate keys (#MDB_DUPSORT) then the - * first data item for the key will be returned. Retrieval of other - * items requires the use of #mdb_cursor_get(). - * - * @note The memory pointed to by the returned values is owned by the - * database. The caller need not dispose of the memory, and may not - * modify it in any way. For values returned in a read-only transaction - * any modification attempts will cause a SIGSEGV. - * @note Values returned from the database are valid only until a - * subsequent update operation, or the end of the transaction. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] key The key to search for in the database - * @param[out] data The data corresponding to the key - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • #MDB_NOTFOUND - the key was not in the database. - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_get(MDB_txn *txn, MDB_dbi dbi, MDB_val *key, MDB_val *data); - - /** @brief Store items into a database. - * - * This function stores key/data pairs in the database. The default behavior - * is to enter the new key/data pair, replacing any previously existing key - * if duplicates are disallowed, or adding a duplicate data item if - * duplicates are allowed (#MDB_DUPSORT). - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] key The key to store in the database - * @param[in,out] data The data to store - * @param[in] flags Special options for this operation. This parameter - * must be set to 0 or by bitwise OR'ing together one or more of the - * values described here. - *
    - *
  • #MDB_NODUPDATA - enter the new key/data pair only if it does not - * already appear in the database. This flag may only be specified - * if the database was opened with #MDB_DUPSORT. The function will - * return #MDB_KEYEXIST if the key/data pair already appears in the - * database. - *
  • #MDB_NOOVERWRITE - enter the new key/data pair only if the key - * does not already appear in the database. The function will return - * #MDB_KEYEXIST if the key already appears in the database, even if - * the database supports duplicates (#MDB_DUPSORT). The \b data - * parameter will be set to point to the existing item. - *
  • #MDB_RESERVE - reserve space for data of the given size, but - * don't copy the given data. Instead, return a pointer to the - * reserved space, which the caller can fill in later - before - * the next update operation or the transaction ends. This saves - * an extra memcpy if the data is being generated later. - * LMDB does nothing else with this memory, the caller is expected - * to modify all of the space requested. This flag must not be - * specified if the database was opened with #MDB_DUPSORT. - *
  • #MDB_APPEND - append the given key/data pair to the end of the - * database. This option allows fast bulk loading when keys are - * already known to be in the correct order. Loading unsorted keys - * with this flag will cause a #MDB_KEYEXIST error. - *
  • #MDB_APPENDDUP - as above, but for sorted dup data. - *
- * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • #MDB_MAP_FULL - the database is full, see #mdb_env_set_mapsize(). - *
  • #MDB_TXN_FULL - the transaction has too many dirty pages. - *
  • EACCES - an attempt was made to write in a read-only transaction. - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_put(MDB_txn *txn, MDB_dbi dbi, MDB_val *key, MDB_val *data, - unsigned int flags); - - /** @brief Delete items from a database. - * - * This function removes key/data pairs from the database. - * If the database does not support sorted duplicate data items - * (#MDB_DUPSORT) the data parameter is ignored. - * If the database supports sorted duplicates and the data parameter - * is NULL, all of the duplicate data items for the key will be - * deleted. Otherwise, if the data parameter is non-NULL - * only the matching data item will be deleted. - * This function will return #MDB_NOTFOUND if the specified key/data - * pair is not in the database. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] key The key to delete from the database - * @param[in] data The data to delete - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EACCES - an attempt was made to write in a read-only transaction. - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_del(MDB_txn *txn, MDB_dbi dbi, MDB_val *key, MDB_val *data); - - /** @brief Create a cursor handle. - * - * A cursor is associated with a specific transaction and database. - * A cursor cannot be used when its database handle is closed. Nor - * when its transaction has ended, except with #mdb_cursor_renew(). - * It can be discarded with #mdb_cursor_close(). - * A cursor in a write-transaction can be closed before its transaction - * ends, and will otherwise be closed when its transaction ends. - * A cursor in a read-only transaction must be closed explicitly, before - * or after its transaction ends. It can be reused with - * #mdb_cursor_renew() before finally closing it. - * @note Earlier documentation said that cursors in every transaction - * were closed when the transaction committed or aborted. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[out] cursor Address where the new #MDB_cursor handle will be stored - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_cursor_open(MDB_txn *txn, MDB_dbi dbi, MDB_cursor **cursor); - - /** @brief Close a cursor handle. - * - * The cursor handle will be freed and must not be used again after this call. - * Its transaction must still be live if it is a write-transaction. - * @param[in] cursor A cursor handle returned by #mdb_cursor_open() - */ -void mdb_cursor_close(MDB_cursor *cursor); - - /** @brief Renew a cursor handle. - * - * A cursor is associated with a specific transaction and database. - * Cursors that are only used in read-only - * transactions may be re-used, to avoid unnecessary malloc/free overhead. - * The cursor may be associated with a new read-only transaction, and - * referencing the same database handle as it was created with. - * This may be done whether the previous transaction is live or dead. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] cursor A cursor handle returned by #mdb_cursor_open() - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_cursor_renew(MDB_txn *txn, MDB_cursor *cursor); - - /** @brief Return the cursor's transaction handle. - * - * @param[in] cursor A cursor handle returned by #mdb_cursor_open() - */ -MDB_txn *mdb_cursor_txn(MDB_cursor *cursor); - - /** @brief Return the cursor's database handle. - * - * @param[in] cursor A cursor handle returned by #mdb_cursor_open() - */ -MDB_dbi mdb_cursor_dbi(MDB_cursor *cursor); - - /** @brief Retrieve by cursor. - * - * This function retrieves key/data pairs from the database. The address and length - * of the key are returned in the object to which \b key refers (except for the - * case of the #MDB_SET option, in which the \b key object is unchanged), and - * the address and length of the data are returned in the object to which \b data - * refers. - * See #mdb_get() for restrictions on using the output values. - * @param[in] cursor A cursor handle returned by #mdb_cursor_open() - * @param[in,out] key The key for a retrieved item - * @param[in,out] data The data of a retrieved item - * @param[in] op A cursor operation #MDB_cursor_op - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • #MDB_NOTFOUND - no matching key found. - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_cursor_get(MDB_cursor *cursor, MDB_val *key, MDB_val *data, - MDB_cursor_op op); - - /** @brief Store by cursor. - * - * This function stores key/data pairs into the database. - * The cursor is positioned at the new item, or on failure usually near it. - * @note Earlier documentation incorrectly said errors would leave the - * state of the cursor unchanged. - * @param[in] cursor A cursor handle returned by #mdb_cursor_open() - * @param[in] key The key operated on. - * @param[in] data The data operated on. - * @param[in] flags Options for this operation. This parameter - * must be set to 0 or one of the values described here. - *
    - *
  • #MDB_CURRENT - replace the item at the current cursor position. - * The \b key parameter must still be provided, and must match it. - * If using sorted duplicates (#MDB_DUPSORT) the data item must still - * sort into the same place. This is intended to be used when the - * new data is the same size as the old. Otherwise it will simply - * perform a delete of the old record followed by an insert. - *
  • #MDB_NODUPDATA - enter the new key/data pair only if it does not - * already appear in the database. This flag may only be specified - * if the database was opened with #MDB_DUPSORT. The function will - * return #MDB_KEYEXIST if the key/data pair already appears in the - * database. - *
  • #MDB_NOOVERWRITE - enter the new key/data pair only if the key - * does not already appear in the database. The function will return - * #MDB_KEYEXIST if the key already appears in the database, even if - * the database supports duplicates (#MDB_DUPSORT). - *
  • #MDB_RESERVE - reserve space for data of the given size, but - * don't copy the given data. Instead, return a pointer to the - * reserved space, which the caller can fill in later - before - * the next update operation or the transaction ends. This saves - * an extra memcpy if the data is being generated later. This flag - * must not be specified if the database was opened with #MDB_DUPSORT. - *
  • #MDB_APPEND - append the given key/data pair to the end of the - * database. No key comparisons are performed. This option allows - * fast bulk loading when keys are already known to be in the - * correct order. Loading unsorted keys with this flag will cause - * a #MDB_KEYEXIST error. - *
  • #MDB_APPENDDUP - as above, but for sorted dup data. - *
  • #MDB_MULTIPLE - store multiple contiguous data elements in a - * single request. This flag may only be specified if the database - * was opened with #MDB_DUPFIXED. The \b data argument must be an - * array of two MDB_vals. The mv_size of the first MDB_val must be - * the size of a single data element. The mv_data of the first MDB_val - * must point to the beginning of the array of contiguous data elements. - * The mv_size of the second MDB_val must be the count of the number - * of data elements to store. On return this field will be set to - * the count of the number of elements actually written. The mv_data - * of the second MDB_val is unused. - *
- * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • #MDB_MAP_FULL - the database is full, see #mdb_env_set_mapsize(). - *
  • #MDB_TXN_FULL - the transaction has too many dirty pages. - *
  • EACCES - an attempt was made to write in a read-only transaction. - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_cursor_put(MDB_cursor *cursor, MDB_val *key, MDB_val *data, - unsigned int flags); - - /** @brief Delete current key/data pair - * - * This function deletes the key/data pair to which the cursor refers. - * This does not invalidate the cursor, so operations such as MDB_NEXT - * can still be used on it. - * Both MDB_NEXT and MDB_GET_CURRENT will return the same record after - * this operation. - * @param[in] cursor A cursor handle returned by #mdb_cursor_open() - * @param[in] flags Options for this operation. This parameter - * must be set to 0 or one of the values described here. - *
    - *
  • #MDB_NODUPDATA - delete all of the data items for the current key. - * This flag may only be specified if the database was opened with #MDB_DUPSORT. - *
- * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EACCES - an attempt was made to write in a read-only transaction. - *
  • EINVAL - an invalid parameter was specified. - *
- */ -int mdb_cursor_del(MDB_cursor *cursor, unsigned int flags); - - /** @brief Return count of duplicates for current key. - * - * This call is only valid on databases that support sorted duplicate - * data items #MDB_DUPSORT. - * @param[in] cursor A cursor handle returned by #mdb_cursor_open() - * @param[out] countp Address where the count will be stored - * @return A non-zero error value on failure and 0 on success. Some possible - * errors are: - *
    - *
  • EINVAL - cursor is not initialized, or an invalid parameter was specified. - *
- */ -int mdb_cursor_count(MDB_cursor *cursor, size_t *countp); - - /** @brief Compare two data items according to a particular database. - * - * This returns a comparison as if the two data items were keys in the - * specified database. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] a The first item to compare - * @param[in] b The second item to compare - * @return < 0 if a < b, 0 if a == b, > 0 if a > b - */ -int mdb_cmp(MDB_txn *txn, MDB_dbi dbi, const MDB_val *a, const MDB_val *b); - - /** @brief Compare two data items according to a particular database. - * - * This returns a comparison as if the two items were data items of - * the specified database. The database must have the #MDB_DUPSORT flag. - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - * @param[in] a The first item to compare - * @param[in] b The second item to compare - * @return < 0 if a < b, 0 if a == b, > 0 if a > b - */ -int mdb_dcmp(MDB_txn *txn, MDB_dbi dbi, const MDB_val *a, const MDB_val *b); - - /** @brief A callback function used to print a message from the library. - * - * @param[in] msg The string to be printed. - * @param[in] ctx An arbitrary context pointer for the callback. - * @return < 0 on failure, >= 0 on success. - */ -typedef int (MDB_msg_func)(const char *msg, void *ctx); - - /** @brief Dump the entries in the reader lock table. - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[in] func A #MDB_msg_func function - * @param[in] ctx Anything the message function needs - * @return < 0 on failure, >= 0 on success. - */ -int mdb_reader_list(MDB_env *env, MDB_msg_func *func, void *ctx); - - /** @brief Check for stale entries in the reader lock table. - * - * @param[in] env An environment handle returned by #mdb_env_create() - * @param[out] dead Number of stale slots that were cleared - * @return 0 on success, non-zero on failure. - */ -int mdb_reader_check(MDB_env *env, int *dead); -/** @} */ - -#ifdef __cplusplus -} -#endif -/** @page tools LMDB Command Line Tools - The following describes the command line tools that are available for LMDB. - \li \ref mdb_copy_1 - \li \ref mdb_dump_1 - \li \ref mdb_load_1 - \li \ref mdb_stat_1 -*/ - -#endif /* _LMDB_H_ */ diff --git a/nostrdb/mdb.c b/nostrdb/mdb.c deleted file mode 100644 index c9614a30de..0000000000 --- a/nostrdb/mdb.c +++ /dev/null @@ -1,10363 +0,0 @@ -/** @file mdb.c - * @brief Lightning memory-mapped database library - * - * A Btree-based database management library modeled loosely on the - * BerkeleyDB API, but much simplified. - */ -/* - * Copyright 2011-2021 Howard Chu, Symas Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted only as authorized by the OpenLDAP - * Public License. - * - * A copy of this license is available in the file LICENSE in the - * top-level directory of the distribution or, alternatively, at - * . - * - * This code is derived from btree.c written by Martin Hedenfalk. - * - * Copyright (c) 2009, 2010 Martin Hedenfalk - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -#ifndef _GNU_SOURCE -#define _GNU_SOURCE 1 -#endif -#if defined(__WIN64__) -#define _FILE_OFFSET_BITS 64 -#endif -#ifdef _WIN32 -#include -#include -#include /* get wcscpy() */ - -/** getpid() returns int; MinGW defines pid_t but MinGW64 typedefs it - * as int64 which is wrong. MSVC doesn't define it at all, so just - * don't use it. - */ -#define MDB_PID_T int -#define MDB_THR_T DWORD -#include -#include -#ifdef __GNUC__ -# include -#else -# define LITTLE_ENDIAN 1234 -# define BIG_ENDIAN 4321 -# define BYTE_ORDER LITTLE_ENDIAN -# ifndef SSIZE_MAX -# define SSIZE_MAX INT_MAX -# endif -#endif -#else -#include -#include -#define MDB_PID_T pid_t -#define MDB_THR_T pthread_t -#include -#include -#include -#ifdef HAVE_SYS_FILE_H -#include -#endif -#include -#endif - -#if defined(__mips) && defined(__linux) -/* MIPS has cache coherency issues, requires explicit cache control */ -#include -#define CACHEFLUSH(addr, bytes, cache) cacheflush(addr, bytes, cache) -#else -#define CACHEFLUSH(addr, bytes, cache) -#endif - -#if defined(__linux) && !defined(MDB_FDATASYNC_WORKS) -/** fdatasync is broken on ext3/ext4fs on older kernels, see - * description in #mdb_env_open2 comments. You can safely - * define MDB_FDATASYNC_WORKS if this code will only be run - * on kernels 3.6 and newer. - */ -#define BROKEN_FDATASYNC -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -#include -typedef SSIZE_T ssize_t; -#else -#include -#endif - -#if defined(__sun) || defined(ANDROID) -/* Most platforms have posix_memalign, older may only have memalign */ -#define HAVE_MEMALIGN 1 -#include -/* On Solaris, we need the POSIX sigwait function */ -#if defined (__sun) -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -#endif - -#if !(defined(BYTE_ORDER) || defined(__BYTE_ORDER)) -#include -#include /* defines BYTE_ORDER on HPUX and Solaris */ -#endif - -#if defined(__FreeBSD__) && defined(__FreeBSD_version) && __FreeBSD_version >= 1100110 -# define MDB_USE_POSIX_MUTEX 1 -# define MDB_USE_ROBUST 1 -#elif defined(__APPLE__) || defined (BSD) || defined(__FreeBSD_kernel__) -# define MDB_USE_POSIX_SEM 1 -# define MDB_FDATASYNC fsync -#elif defined(ANDROID) -# define MDB_FDATASYNC fsync -#endif - -#ifndef _WIN32 -#include -#include -#ifdef MDB_USE_POSIX_SEM -# define MDB_USE_HASH 1 -#include -#else -#define MDB_USE_POSIX_MUTEX 1 -#endif -#endif - -#if defined(_WIN32) + defined(MDB_USE_POSIX_SEM) \ - + defined(MDB_USE_POSIX_MUTEX) != 1 -# error "Ambiguous shared-lock implementation" -#endif - -#ifdef USE_VALGRIND -#include -#define VGMEMP_CREATE(h,r,z) VALGRIND_CREATE_MEMPOOL(h,r,z) -#define VGMEMP_ALLOC(h,a,s) VALGRIND_MEMPOOL_ALLOC(h,a,s) -#define VGMEMP_FREE(h,a) VALGRIND_MEMPOOL_FREE(h,a) -#define VGMEMP_DESTROY(h) VALGRIND_DESTROY_MEMPOOL(h) -#define VGMEMP_DEFINED(a,s) VALGRIND_MAKE_MEM_DEFINED(a,s) -#else -#define VGMEMP_CREATE(h,r,z) -#define VGMEMP_ALLOC(h,a,s) -#define VGMEMP_FREE(h,a) -#define VGMEMP_DESTROY(h) -#define VGMEMP_DEFINED(a,s) -#endif - -#ifndef BYTE_ORDER -# if (defined(_LITTLE_ENDIAN) || defined(_BIG_ENDIAN)) && !(defined(_LITTLE_ENDIAN) && defined(_BIG_ENDIAN)) -/* Solaris just defines one or the other */ -# define LITTLE_ENDIAN 1234 -# define BIG_ENDIAN 4321 -# ifdef _LITTLE_ENDIAN -# define BYTE_ORDER LITTLE_ENDIAN -# else -# define BYTE_ORDER BIG_ENDIAN -# endif -# else -# define BYTE_ORDER __BYTE_ORDER -# endif -#endif - -#ifndef LITTLE_ENDIAN -#define LITTLE_ENDIAN __LITTLE_ENDIAN -#endif -#ifndef BIG_ENDIAN -#define BIG_ENDIAN __BIG_ENDIAN -#endif - -#if defined(__i386) || defined(__x86_64) || defined(_M_IX86) -#define MISALIGNED_OK 1 -#endif - -#include "lmdb.h" -#include "midl.h" - -#if (BYTE_ORDER == LITTLE_ENDIAN) == (BYTE_ORDER == BIG_ENDIAN) -# error "Unknown or unsupported endianness (BYTE_ORDER)" -#elif (-6 & 5) || CHAR_BIT != 8 || UINT_MAX < 0xffffffff || ULONG_MAX % 0xFFFF -# error "Two's complement, reasonably sized integer types, please" -#endif - -#if (((__clang_major__ << 8) | __clang_minor__) >= 0x0302) || (((__GNUC__ << 8) | __GNUC_MINOR__) >= 0x0403) -/** Mark infrequently used env functions as cold. This puts them in a separate - * section, and optimizes them for size */ -#define ESECT __attribute__ ((cold)) -#else -/* On older compilers, use a separate section */ -# ifdef __GNUC__ -# ifdef __APPLE__ -# define ESECT __attribute__ ((section("__TEXT,text_env"))) -# else -# define ESECT __attribute__ ((section("text_env"))) -# endif -# else -# define ESECT -# endif -#endif - -#ifdef _WIN32 -#define CALL_CONV WINAPI -#else -#define CALL_CONV -#endif - -/** @defgroup internal LMDB Internals - * @{ - */ -/** @defgroup compat Compatibility Macros - * A bunch of macros to minimize the amount of platform-specific ifdefs - * needed throughout the rest of the code. When the features this library - * needs are similar enough to POSIX to be hidden in a one-or-two line - * replacement, this macro approach is used. - * @{ - */ - - /** Features under development */ -#ifndef MDB_DEVEL -#define MDB_DEVEL 0 -#endif - - /** Wrapper around __func__, which is a C99 feature */ -#if __STDC_VERSION__ >= 199901L -# define mdb_func_ __func__ -#elif __GNUC__ >= 2 || _MSC_VER >= 1300 -# define mdb_func_ __FUNCTION__ -#else -/* If a debug message says (), update the #if statements above */ -# define mdb_func_ "" -#endif - -/* Internal error codes, not exposed outside liblmdb */ -#define MDB_NO_ROOT (MDB_LAST_ERRCODE + 10) -#ifdef _WIN32 -#define MDB_OWNERDEAD ((int) WAIT_ABANDONED) -#elif defined(MDB_USE_POSIX_MUTEX) && defined(EOWNERDEAD) -#define MDB_OWNERDEAD EOWNERDEAD /**< #LOCK_MUTEX0() result if dead owner */ -#endif - -#ifdef __GLIBC__ -#define GLIBC_VER ((__GLIBC__ << 16 )| __GLIBC_MINOR__) -#endif -/** Some platforms define the EOWNERDEAD error code - * even though they don't support Robust Mutexes. - * Compile with -DMDB_USE_ROBUST=0, or use some other - * mechanism like -DMDB_USE_POSIX_SEM instead of - * -DMDB_USE_POSIX_MUTEX. - * (Posix semaphores are not robust.) - */ -#ifndef MDB_USE_ROBUST -/* Android currently lacks Robust Mutex support. So does glibc < 2.4. */ -# if defined(MDB_USE_POSIX_MUTEX) && (defined(ANDROID) || \ - (defined(__GLIBC__) && GLIBC_VER < 0x020004)) -# define MDB_USE_ROBUST 0 -# else -# define MDB_USE_ROBUST 1 -# endif -#endif /* !MDB_USE_ROBUST */ - -#if defined(MDB_USE_POSIX_MUTEX) && (MDB_USE_ROBUST) -/* glibc < 2.12 only provided _np API */ -# if (defined(__GLIBC__) && GLIBC_VER < 0x02000c) || \ - (defined(PTHREAD_MUTEX_ROBUST_NP) && !defined(PTHREAD_MUTEX_ROBUST)) -# define PTHREAD_MUTEX_ROBUST PTHREAD_MUTEX_ROBUST_NP -# define pthread_mutexattr_setrobust(attr, flag) pthread_mutexattr_setrobust_np(attr, flag) -# define pthread_mutex_consistent(mutex) pthread_mutex_consistent_np(mutex) -# endif -#endif /* MDB_USE_POSIX_MUTEX && MDB_USE_ROBUST */ - -#if defined(MDB_OWNERDEAD) && (MDB_USE_ROBUST) -#define MDB_ROBUST_SUPPORTED 1 -#endif - -#ifdef _WIN32 -#define MDB_USE_HASH 1 -#define MDB_PIDLOCK 0 -#define THREAD_RET DWORD -#define pthread_t HANDLE -#define pthread_mutex_t HANDLE -#define pthread_cond_t HANDLE -typedef HANDLE mdb_mutex_t, mdb_mutexref_t; -#define pthread_key_t DWORD -#define pthread_self() GetCurrentThreadId() -#define pthread_key_create(x,y) \ - ((*(x) = TlsAlloc()) == TLS_OUT_OF_INDEXES ? ErrCode() : 0) -#define pthread_key_delete(x) TlsFree(x) -#define pthread_getspecific(x) TlsGetValue(x) -#define pthread_setspecific(x,y) (TlsSetValue(x,y) ? 0 : ErrCode()) -#define pthread_mutex_unlock(x) ReleaseMutex(*x) -#define pthread_mutex_lock(x) WaitForSingleObject(*x, INFINITE) -#define pthread_cond_signal(x) SetEvent(*x) -#define pthread_cond_wait(cond,mutex) do{SignalObjectAndWait(*mutex, *cond, INFINITE, FALSE); WaitForSingleObject(*mutex, INFINITE);}while(0) -#define THREAD_CREATE(thr,start,arg) \ - (((thr) = CreateThread(NULL, 0, start, arg, 0, NULL)) ? 0 : ErrCode()) -#define THREAD_FINISH(thr) \ - (WaitForSingleObject(thr, INFINITE) ? ErrCode() : 0) -#define LOCK_MUTEX0(mutex) WaitForSingleObject(mutex, INFINITE) -#define UNLOCK_MUTEX(mutex) ReleaseMutex(mutex) -#define mdb_mutex_consistent(mutex) 0 -#define getpid() GetCurrentProcessId() -#define MDB_FDATASYNC(fd) (!FlushFileBuffers(fd)) -#define MDB_MSYNC(addr,len,flags) (!FlushViewOfFile(addr,len)) -#define ErrCode() GetLastError() -#define GET_PAGESIZE(x) {SYSTEM_INFO si; GetSystemInfo(&si); (x) = si.dwPageSize;} -#define close(fd) (CloseHandle(fd) ? 0 : -1) -#define munmap(ptr,len) UnmapViewOfFile(ptr) -#ifdef PROCESS_QUERY_LIMITED_INFORMATION -#define MDB_PROCESS_QUERY_LIMITED_INFORMATION PROCESS_QUERY_LIMITED_INFORMATION -#else -#define MDB_PROCESS_QUERY_LIMITED_INFORMATION 0x1000 -#endif -#define Z "I" -#else -#define THREAD_RET void * -#define THREAD_CREATE(thr,start,arg) pthread_create(&thr,NULL,start,arg) -#define THREAD_FINISH(thr) pthread_join(thr,NULL) -#define Z "z" /**< printf format modifier for size_t */ - - /** For MDB_LOCK_FORMAT: True if readers take a pid lock in the lockfile */ -#define MDB_PIDLOCK 1 - -#ifdef MDB_USE_POSIX_SEM - -typedef sem_t *mdb_mutex_t, *mdb_mutexref_t; -#define LOCK_MUTEX0(mutex) mdb_sem_wait(mutex) -#define UNLOCK_MUTEX(mutex) sem_post(mutex) - -static int -mdb_sem_wait(sem_t *sem) -{ - int rc; - while ((rc = sem_wait(sem)) && (rc = errno) == EINTR) ; - return rc; -} - -#else /* MDB_USE_POSIX_MUTEX: */ - /** Shared mutex/semaphore as the original is stored. - * - * Not for copies. Instead it can be assigned to an #mdb_mutexref_t. - * When mdb_mutexref_t is a pointer and mdb_mutex_t is not, then it - * is array[size 1] so it can be assigned to the pointer. - */ -typedef pthread_mutex_t mdb_mutex_t[1]; - /** Reference to an #mdb_mutex_t */ -typedef pthread_mutex_t *mdb_mutexref_t; - /** Lock the reader or writer mutex. - * Returns 0 or a code to give #mdb_mutex_failed(), as in #LOCK_MUTEX(). - */ -#define LOCK_MUTEX0(mutex) pthread_mutex_lock(mutex) - /** Unlock the reader or writer mutex. - */ -#define UNLOCK_MUTEX(mutex) pthread_mutex_unlock(mutex) - /** Mark mutex-protected data as repaired, after death of previous owner. - */ -#define mdb_mutex_consistent(mutex) pthread_mutex_consistent(mutex) -#endif /* MDB_USE_POSIX_SEM */ - - /** Get the error code for the last failed system function. - */ -#define ErrCode() errno - - /** An abstraction for a file handle. - * On POSIX systems file handles are small integers. On Windows - * they're opaque pointers. - */ -#define HANDLE int - - /** A value for an invalid file handle. - * Mainly used to initialize file variables and signify that they are - * unused. - */ -#define INVALID_HANDLE_VALUE (-1) - - /** Get the size of a memory page for the system. - * This is the basic size that the platform's memory manager uses, and is - * fundamental to the use of memory-mapped files. - */ -#define GET_PAGESIZE(x) ((x) = sysconf(_SC_PAGE_SIZE)) -#endif - -#if defined(_WIN32) || defined(MDB_USE_POSIX_SEM) -#define MNAME_LEN 32 -#else -#define MNAME_LEN (sizeof(pthread_mutex_t)) -#endif - -/** @} */ - -#ifdef MDB_ROBUST_SUPPORTED - /** Lock mutex, handle any error, set rc = result. - * Return 0 on success, nonzero (not rc) on error. - */ -#define LOCK_MUTEX(rc, env, mutex) \ - (((rc) = LOCK_MUTEX0(mutex)) && \ - ((rc) = mdb_mutex_failed(env, mutex, rc))) -static int mdb_mutex_failed(MDB_env *env, mdb_mutexref_t mutex, int rc); -#else -#define LOCK_MUTEX(rc, env, mutex) ((rc) = LOCK_MUTEX0(mutex)) -#define mdb_mutex_failed(env, mutex, rc) (rc) -#endif - -#ifndef _WIN32 -/** A flag for opening a file and requesting synchronous data writes. - * This is only used when writing a meta page. It's not strictly needed; - * we could just do a normal write and then immediately perform a flush. - * But if this flag is available it saves us an extra system call. - * - * @note If O_DSYNC is undefined but exists in /usr/include, - * preferably set some compiler flag to get the definition. - */ -#ifndef MDB_DSYNC -# ifdef O_DSYNC -# define MDB_DSYNC O_DSYNC -# else -# define MDB_DSYNC O_SYNC -# endif -#endif -#endif - -/** Function for flushing the data of a file. Define this to fsync - * if fdatasync() is not supported. - */ -#ifndef MDB_FDATASYNC -# define MDB_FDATASYNC fdatasync -#endif - -#ifndef MDB_MSYNC -# define MDB_MSYNC(addr,len,flags) msync(addr,len,flags) -#endif - -#ifndef MS_SYNC -#define MS_SYNC 1 -#endif - -#ifndef MS_ASYNC -#define MS_ASYNC 0 -#endif - - /** A page number in the database. - * Note that 64 bit page numbers are overkill, since pages themselves - * already represent 12-13 bits of addressable memory, and the OS will - * always limit applications to a maximum of 63 bits of address space. - * - * @note In the #MDB_node structure, we only store 48 bits of this value, - * which thus limits us to only 60 bits of addressable data. - */ -typedef MDB_ID pgno_t; - - /** A transaction ID. - * See struct MDB_txn.mt_txnid for details. - */ -typedef MDB_ID txnid_t; - -/** @defgroup debug Debug Macros - * @{ - */ -#ifndef MDB_DEBUG - /** Enable debug output. Needs variable argument macros (a C99 feature). - * Set this to 1 for copious tracing. Set to 2 to add dumps of all IDLs - * read from and written to the database (used for free space management). - */ -#define MDB_DEBUG 0 -#endif - -#if MDB_DEBUG -static int mdb_debug; -static txnid_t mdb_debug_start; - - /** Print a debug message with printf formatting. - * Requires double parenthesis around 2 or more args. - */ -# define DPRINTF(args) ((void) ((mdb_debug) && DPRINTF0 args)) -# define DPRINTF0(fmt, ...) \ - fprintf(stderr, "%s:%d " fmt "\n", mdb_func_, __LINE__, __VA_ARGS__) -#else -# define DPRINTF(args) ((void) 0) -#endif - /** Print a debug string. - * The string is printed literally, with no format processing. - */ -#define DPUTS(arg) DPRINTF(("%s", arg)) - /** Debugging output value of a cursor DBI: Negative in a sub-cursor. */ -#define DDBI(mc) \ - (((mc)->mc_flags & C_SUB) ? -(int)(mc)->mc_dbi : (int)(mc)->mc_dbi) -/** @} */ - - /** @brief The maximum size of a database page. - * - * It is 32k or 64k, since value-PAGEBASE must fit in - * #MDB_page.%mp_upper. - * - * LMDB will use database pages < OS pages if needed. - * That causes more I/O in write transactions: The OS must - * know (read) the whole page before writing a partial page. - * - * Note that we don't currently support Huge pages. On Linux, - * regular data files cannot use Huge pages, and in general - * Huge pages aren't actually pageable. We rely on the OS - * demand-pager to read our data and page it out when memory - * pressure from other processes is high. So until OSs have - * actual paging support for Huge pages, they're not viable. - */ -#define MAX_PAGESIZE (PAGEBASE ? 0x10000 : 0x8000) - - /** The minimum number of keys required in a database page. - * Setting this to a larger value will place a smaller bound on the - * maximum size of a data item. Data items larger than this size will - * be pushed into overflow pages instead of being stored directly in - * the B-tree node. This value used to default to 4. With a page size - * of 4096 bytes that meant that any item larger than 1024 bytes would - * go into an overflow page. That also meant that on average 2-3KB of - * each overflow page was wasted space. The value cannot be lower than - * 2 because then there would no longer be a tree structure. With this - * value, items larger than 2KB will go into overflow pages, and on - * average only 1KB will be wasted. - */ -#define MDB_MINKEYS 2 - - /** A stamp that identifies a file as an LMDB file. - * There's nothing special about this value other than that it is easily - * recognizable, and it will reflect any byte order mismatches. - */ -#define MDB_MAGIC 0xBEEFC0DE - - /** The version number for a database's datafile format. */ -#define MDB_DATA_VERSION ((MDB_DEVEL) ? 999 : 1) - /** The version number for a database's lockfile format. */ -#define MDB_LOCK_VERSION 1 - - /** @brief The max size of a key we can write, or 0 for computed max. - * - * This macro should normally be left alone or set to 0. - * Note that a database with big keys or dupsort data cannot be - * reliably modified by a liblmdb which uses a smaller max. - * The default is 511 for backwards compat, or 0 when #MDB_DEVEL. - * - * Other values are allowed, for backwards compat. However: - * A value bigger than the computed max can break if you do not - * know what you are doing, and liblmdb <= 0.9.10 can break when - * modifying a DB with keys/dupsort data bigger than its max. - * - * Data items in an #MDB_DUPSORT database are also limited to - * this size, since they're actually keys of a sub-DB. Keys and - * #MDB_DUPSORT data items must fit on a node in a regular page. - */ -#ifndef MDB_MAXKEYSIZE -#define MDB_MAXKEYSIZE ((MDB_DEVEL) ? 0 : 511) -#endif - - /** The maximum size of a key we can write to the environment. */ -#if MDB_MAXKEYSIZE -#define ENV_MAXKEY(env) (MDB_MAXKEYSIZE) -#else -#define ENV_MAXKEY(env) ((env)->me_maxkey) -#endif - - /** @brief The maximum size of a data item. - * - * We only store a 32 bit value for node sizes. - */ -#define MAXDATASIZE 0xffffffffUL - -#if MDB_DEBUG - /** Key size which fits in a #DKBUF. - * @ingroup debug - */ -#define DKBUF_MAXKEYSIZE ((MDB_MAXKEYSIZE) > 0 ? (MDB_MAXKEYSIZE) : 511) - /** A key buffer. - * @ingroup debug - * This is used for printing a hex dump of a key's contents. - */ -#define DKBUF char kbuf[DKBUF_MAXKEYSIZE*2+1] - /** Display a key in hex. - * @ingroup debug - * Invoke a function to display a key in hex. - */ -#define DKEY(x) mdb_dkey(x, kbuf) -#else -#define DKBUF -#define DKEY(x) 0 -#endif - - /** An invalid page number. - * Mainly used to denote an empty tree. - */ -#define P_INVALID (~(pgno_t)0) - - /** Test if the flags \b f are set in a flag word \b w. */ -#define F_ISSET(w, f) (((w) & (f)) == (f)) - - /** Round \b n up to an even number. */ -#define EVEN(n) (((n) + 1U) & -2) /* sign-extending -2 to match n+1U */ - - /** Used for offsets within a single page. - * Since memory pages are typically 4 or 8KB in size, 12-13 bits, - * this is plenty. - */ -typedef uint16_t indx_t; - - /** Default size of memory map. - * This is certainly too small for any actual applications. Apps should always set - * the size explicitly using #mdb_env_set_mapsize(). - */ -#define DEFAULT_MAPSIZE 1048576 - -/** @defgroup readers Reader Lock Table - * Readers don't acquire any locks for their data access. Instead, they - * simply record their transaction ID in the reader table. The reader - * mutex is needed just to find an empty slot in the reader table. The - * slot's address is saved in thread-specific data so that subsequent read - * transactions started by the same thread need no further locking to proceed. - * - * If #MDB_NOTLS is set, the slot address is not saved in thread-specific data. - * - * No reader table is used if the database is on a read-only filesystem, or - * if #MDB_NOLOCK is set. - * - * Since the database uses multi-version concurrency control, readers don't - * actually need any locking. This table is used to keep track of which - * readers are using data from which old transactions, so that we'll know - * when a particular old transaction is no longer in use. Old transactions - * that have discarded any data pages can then have those pages reclaimed - * for use by a later write transaction. - * - * The lock table is constructed such that reader slots are aligned with the - * processor's cache line size. Any slot is only ever used by one thread. - * This alignment guarantees that there will be no contention or cache - * thrashing as threads update their own slot info, and also eliminates - * any need for locking when accessing a slot. - * - * A writer thread will scan every slot in the table to determine the oldest - * outstanding reader transaction. Any freed pages older than this will be - * reclaimed by the writer. The writer doesn't use any locks when scanning - * this table. This means that there's no guarantee that the writer will - * see the most up-to-date reader info, but that's not required for correct - * operation - all we need is to know the upper bound on the oldest reader, - * we don't care at all about the newest reader. So the only consequence of - * reading stale information here is that old pages might hang around a - * while longer before being reclaimed. That's actually good anyway, because - * the longer we delay reclaiming old pages, the more likely it is that a - * string of contiguous pages can be found after coalescing old pages from - * many old transactions together. - * @{ - */ - /** Number of slots in the reader table. - * This value was chosen somewhat arbitrarily. 126 readers plus a - * couple mutexes fit exactly into 8KB on my development machine. - * Applications should set the table size using #mdb_env_set_maxreaders(). - */ -#define DEFAULT_READERS 126 - - /** The size of a CPU cache line in bytes. We want our lock structures - * aligned to this size to avoid false cache line sharing in the - * lock table. - * This value works for most CPUs. For Itanium this should be 128. - */ -#ifndef CACHELINE -#define CACHELINE 64 -#endif - - /** The information we store in a single slot of the reader table. - * In addition to a transaction ID, we also record the process and - * thread ID that owns a slot, so that we can detect stale information, - * e.g. threads or processes that went away without cleaning up. - * @note We currently don't check for stale records. We simply re-init - * the table when we know that we're the only process opening the - * lock file. - */ -typedef struct MDB_rxbody { - /** Current Transaction ID when this transaction began, or (txnid_t)-1. - * Multiple readers that start at the same time will probably have the - * same ID here. Again, it's not important to exclude them from - * anything; all we need to know is which version of the DB they - * started from so we can avoid overwriting any data used in that - * particular version. - */ - volatile txnid_t mrb_txnid; - /** The process ID of the process owning this reader txn. */ - volatile MDB_PID_T mrb_pid; - /** The thread ID of the thread owning this txn. */ - volatile MDB_THR_T mrb_tid; -} MDB_rxbody; - - /** The actual reader record, with cacheline padding. */ -typedef struct MDB_reader { - union { - MDB_rxbody mrx; - /** shorthand for mrb_txnid */ -#define mr_txnid mru.mrx.mrb_txnid -#define mr_pid mru.mrx.mrb_pid -#define mr_tid mru.mrx.mrb_tid - /** cache line alignment */ - char pad[(sizeof(MDB_rxbody)+CACHELINE-1) & ~(CACHELINE-1)]; - } mru; -} MDB_reader; - - /** The header for the reader table. - * The table resides in a memory-mapped file. (This is a different file - * than is used for the main database.) - * - * For POSIX the actual mutexes reside in the shared memory of this - * mapped file. On Windows, mutexes are named objects allocated by the - * kernel; we store the mutex names in this mapped file so that other - * processes can grab them. This same approach is also used on - * MacOSX/Darwin (using named semaphores) since MacOSX doesn't support - * process-shared POSIX mutexes. For these cases where a named object - * is used, the object name is derived from a 64 bit FNV hash of the - * environment pathname. As such, naming collisions are extremely - * unlikely. If a collision occurs, the results are unpredictable. - */ -typedef struct MDB_txbody { - /** Stamp identifying this as an LMDB file. It must be set - * to #MDB_MAGIC. */ - uint32_t mtb_magic; - /** Format of this lock file. Must be set to #MDB_LOCK_FORMAT. */ - uint32_t mtb_format; -#if defined(_WIN32) || defined(MDB_USE_POSIX_SEM) - char mtb_rmname[MNAME_LEN]; -#else - /** Mutex protecting access to this table. - * This is the reader table lock used with LOCK_MUTEX(). - */ - mdb_mutex_t mtb_rmutex; -#endif - /** The ID of the last transaction committed to the database. - * This is recorded here only for convenience; the value can always - * be determined by reading the main database meta pages. - */ - volatile txnid_t mtb_txnid; - /** The number of slots that have been used in the reader table. - * This always records the maximum count, it is not decremented - * when readers release their slots. - */ - volatile unsigned mtb_numreaders; -} MDB_txbody; - - /** The actual reader table definition. */ -typedef struct MDB_txninfo { - union { - MDB_txbody mtb; -#define mti_magic mt1.mtb.mtb_magic -#define mti_format mt1.mtb.mtb_format -#define mti_rmutex mt1.mtb.mtb_rmutex -#define mti_rmname mt1.mtb.mtb_rmname -#define mti_txnid mt1.mtb.mtb_txnid -#define mti_numreaders mt1.mtb.mtb_numreaders - char pad[(sizeof(MDB_txbody)+CACHELINE-1) & ~(CACHELINE-1)]; - } mt1; - union { -#if defined(_WIN32) || defined(MDB_USE_POSIX_SEM) - char mt2_wmname[MNAME_LEN]; -#define mti_wmname mt2.mt2_wmname -#else - mdb_mutex_t mt2_wmutex; -#define mti_wmutex mt2.mt2_wmutex -#endif - char pad[(MNAME_LEN+CACHELINE-1) & ~(CACHELINE-1)]; - } mt2; - MDB_reader mti_readers[1]; -} MDB_txninfo; - - /** Lockfile format signature: version, features and field layout */ -#define MDB_LOCK_FORMAT \ - ((uint32_t) \ - ((MDB_LOCK_VERSION) \ - /* Flags which describe functionality */ \ - + (((MDB_PIDLOCK) != 0) << 16))) -/** @} */ - -/** Common header for all page types. The page type depends on #mp_flags. - * - * #P_BRANCH and #P_LEAF pages have unsorted '#MDB_node's at the end, with - * sorted #mp_ptrs[] entries referring to them. Exception: #P_LEAF2 pages - * omit mp_ptrs and pack sorted #MDB_DUPFIXED values after the page header. - * - * #P_OVERFLOW records occupy one or more contiguous pages where only the - * first has a page header. They hold the real data of #F_BIGDATA nodes. - * - * #P_SUBP sub-pages are small leaf "pages" with duplicate data. - * A node with flag #F_DUPDATA but not #F_SUBDATA contains a sub-page. - * (Duplicate data can also go in sub-databases, which use normal pages.) - * - * #P_META pages contain #MDB_meta, the start point of an LMDB snapshot. - * - * Each non-metapage up to #MDB_meta.%mm_last_pg is reachable exactly once - * in the snapshot: Either used by a database or listed in a freeDB record. - */ -typedef struct MDB_page { -#define mp_pgno mp_p.p_pgno -#define mp_next mp_p.p_next - union { - pgno_t p_pgno; /**< page number */ - struct MDB_page *p_next; /**< for in-memory list of freed pages */ - } mp_p; - uint16_t mp_pad; /**< key size if this is a LEAF2 page */ -/** @defgroup mdb_page Page Flags - * @ingroup internal - * Flags for the page headers. - * @{ - */ -#define P_BRANCH 0x01 /**< branch page */ -#define P_LEAF 0x02 /**< leaf page */ -#define P_OVERFLOW 0x04 /**< overflow page */ -#define P_META 0x08 /**< meta page */ -#define P_DIRTY 0x10 /**< dirty page, also set for #P_SUBP pages */ -#define P_LEAF2 0x20 /**< for #MDB_DUPFIXED records */ -#define P_SUBP 0x40 /**< for #MDB_DUPSORT sub-pages */ -#define P_LOOSE 0x4000 /**< page was dirtied then freed, can be reused */ -#define P_KEEP 0x8000 /**< leave this page alone during spill */ -/** @} */ - uint16_t mp_flags; /**< @ref mdb_page */ -#define mp_lower mp_pb.pb.pb_lower -#define mp_upper mp_pb.pb.pb_upper -#define mp_pages mp_pb.pb_pages - union { - struct { - indx_t pb_lower; /**< lower bound of free space */ - indx_t pb_upper; /**< upper bound of free space */ - } pb; - uint32_t pb_pages; /**< number of overflow pages */ - } mp_pb; - indx_t mp_ptrs[0]; /**< dynamic size */ -} MDB_page; - -/** Alternate page header, for 2-byte aligned access */ -typedef struct MDB_page2 { - uint16_t mp2_p[sizeof(pgno_t)/2]; - uint16_t mp2_pad; - uint16_t mp2_flags; - indx_t mp2_lower; - indx_t mp2_upper; - indx_t mp2_ptrs[0]; -} MDB_page2; - -#define MP_PGNO(p) (((MDB_page2 *)(void *)(p))->mp2_p) -#define MP_PAD(p) (((MDB_page2 *)(void *)(p))->mp2_pad) -#define MP_FLAGS(p) (((MDB_page2 *)(void *)(p))->mp2_flags) -#define MP_LOWER(p) (((MDB_page2 *)(void *)(p))->mp2_lower) -#define MP_UPPER(p) (((MDB_page2 *)(void *)(p))->mp2_upper) -#define MP_PTRS(p) (((MDB_page2 *)(void *)(p))->mp2_ptrs) - - /** Size of the page header, excluding dynamic data at the end */ -#define PAGEHDRSZ ((unsigned) offsetof(MDB_page, mp_ptrs)) - - /** Address of first usable data byte in a page, after the header */ -#define METADATA(p) ((void *)((char *)(p) + PAGEHDRSZ)) - - /** ITS#7713, change PAGEBASE to handle 65536 byte pages */ -#define PAGEBASE ((MDB_DEVEL) ? PAGEHDRSZ : 0) - - /** Number of nodes on a page */ -#define NUMKEYS(p) ((MP_LOWER(p) - (PAGEHDRSZ-PAGEBASE)) >> 1) - - /** The amount of space remaining in the page */ -#define SIZELEFT(p) (indx_t)(MP_UPPER(p) - MP_LOWER(p)) - - /** The percentage of space used in the page, in tenths of a percent. */ -#define PAGEFILL(env, p) (1000L * ((env)->me_psize - PAGEHDRSZ - SIZELEFT(p)) / \ - ((env)->me_psize - PAGEHDRSZ)) - /** The minimum page fill factor, in tenths of a percent. - * Pages emptier than this are candidates for merging. - */ -#define FILL_THRESHOLD 250 - - /** Test if a page is a leaf page */ -#define IS_LEAF(p) F_ISSET(MP_FLAGS(p), P_LEAF) - /** Test if a page is a LEAF2 page */ -#define IS_LEAF2(p) F_ISSET(MP_FLAGS(p), P_LEAF2) - /** Test if a page is a branch page */ -#define IS_BRANCH(p) F_ISSET(MP_FLAGS(p), P_BRANCH) - /** Test if a page is an overflow page */ -#define IS_OVERFLOW(p) F_ISSET(MP_FLAGS(p), P_OVERFLOW) - /** Test if a page is a sub page */ -#define IS_SUBP(p) F_ISSET(MP_FLAGS(p), P_SUBP) - - /** The number of overflow pages needed to store the given size. */ -#define OVPAGES(size, psize) ((PAGEHDRSZ-1 + (size)) / (psize) + 1) - - /** Link in #MDB_txn.%mt_loose_pgs list. - * Kept outside the page header, which is needed when reusing the page. - */ -#define NEXT_LOOSE_PAGE(p) (*(MDB_page **)((p) + 2)) - - /** Header for a single key/data pair within a page. - * Used in pages of type #P_BRANCH and #P_LEAF without #P_LEAF2. - * We guarantee 2-byte alignment for 'MDB_node's. - * - * #mn_lo and #mn_hi are used for data size on leaf nodes, and for child - * pgno on branch nodes. On 64 bit platforms, #mn_flags is also used - * for pgno. (Branch nodes have no flags). Lo and hi are in host byte - * order in case some accesses can be optimized to 32-bit word access. - * - * Leaf node flags describe node contents. #F_BIGDATA says the node's - * data part is the page number of an overflow page with actual data. - * #F_DUPDATA and #F_SUBDATA can be combined giving duplicate data in - * a sub-page/sub-database, and named databases (just #F_SUBDATA). - */ -typedef struct MDB_node { - /** part of data size or pgno - * @{ */ -#if BYTE_ORDER == LITTLE_ENDIAN - unsigned short mn_lo, mn_hi; -#else - unsigned short mn_hi, mn_lo; -#endif - /** @} */ -/** @defgroup mdb_node Node Flags - * @ingroup internal - * Flags for node headers. - * @{ - */ -#define F_BIGDATA 0x01 /**< data put on overflow page */ -#define F_SUBDATA 0x02 /**< data is a sub-database */ -#define F_DUPDATA 0x04 /**< data has duplicates */ - -/** valid flags for #mdb_node_add() */ -#define NODE_ADD_FLAGS (F_DUPDATA|F_SUBDATA|MDB_RESERVE|MDB_APPEND) - -/** @} */ - unsigned short mn_flags; /**< @ref mdb_node */ - unsigned short mn_ksize; /**< key size */ - char mn_data[1]; /**< key and data are appended here */ -} MDB_node; - - /** Size of the node header, excluding dynamic data at the end */ -#define NODESIZE offsetof(MDB_node, mn_data) - - /** Bit position of top word in page number, for shifting mn_flags */ -#define PGNO_TOPWORD ((pgno_t)-1 > 0xffffffffu ? 32 : 0) - - /** Size of a node in a branch page with a given key. - * This is just the node header plus the key, there is no data. - */ -#define INDXSIZE(k) (NODESIZE + ((k) == NULL ? 0 : (k)->mv_size)) - - /** Size of a node in a leaf page with a given key and data. - * This is node header plus key plus data size. - */ -#define LEAFSIZE(k, d) (NODESIZE + (k)->mv_size + (d)->mv_size) - - /** Address of node \b i in page \b p */ -#define NODEPTR(p, i) ((MDB_node *)((char *)(p) + MP_PTRS(p)[i] + PAGEBASE)) - - /** Address of the key for the node */ -#define NODEKEY(node) (void *)((node)->mn_data) - - /** Address of the data for a node */ -#define NODEDATA(node) (void *)((char *)(node)->mn_data + (node)->mn_ksize) - - /** Get the page number pointed to by a branch node */ -#define NODEPGNO(node) \ - ((node)->mn_lo | ((pgno_t) (node)->mn_hi << 16) | \ - (PGNO_TOPWORD ? ((pgno_t) (node)->mn_flags << PGNO_TOPWORD) : 0)) - /** Set the page number in a branch node */ -#define SETPGNO(node,pgno) do { \ - (node)->mn_lo = (pgno) & 0xffff; (node)->mn_hi = (pgno) >> 16; \ - if (PGNO_TOPWORD) (node)->mn_flags = (pgno) >> PGNO_TOPWORD; } while(0) - - /** Get the size of the data in a leaf node */ -#define NODEDSZ(node) ((node)->mn_lo | ((unsigned)(node)->mn_hi << 16)) - /** Set the size of the data for a leaf node */ -#define SETDSZ(node,size) do { \ - (node)->mn_lo = (size) & 0xffff; (node)->mn_hi = (size) >> 16;} while(0) - /** The size of a key in a node */ -#define NODEKSZ(node) ((node)->mn_ksize) - - /** Copy a page number from src to dst */ -#ifdef MISALIGNED_OK -#define COPY_PGNO(dst,src) dst = src -#undef MP_PGNO -#define MP_PGNO(p) ((p)->mp_pgno) -#else -#if SIZE_MAX > 4294967295UL -#define COPY_PGNO(dst,src) do { \ - unsigned short *s, *d; \ - s = (unsigned short *)&(src); \ - d = (unsigned short *)&(dst); \ - *d++ = *s++; \ - *d++ = *s++; \ - *d++ = *s++; \ - *d = *s; \ -} while (0) -#else -#define COPY_PGNO(dst,src) do { \ - unsigned short *s, *d; \ - s = (unsigned short *)&(src); \ - d = (unsigned short *)&(dst); \ - *d++ = *s++; \ - *d = *s; \ -} while (0) -#endif -#endif - /** The address of a key in a LEAF2 page. - * LEAF2 pages are used for #MDB_DUPFIXED sorted-duplicate sub-DBs. - * There are no node headers, keys are stored contiguously. - */ -#define LEAF2KEY(p, i, ks) ((char *)(p) + PAGEHDRSZ + ((i)*(ks))) - - /** Set the \b node's key into \b keyptr, if requested. */ -#define MDB_GET_KEY(node, keyptr) { if ((keyptr) != NULL) { \ - (keyptr)->mv_size = NODEKSZ(node); (keyptr)->mv_data = NODEKEY(node); } } - - /** Set the \b node's key into \b key. */ -#define MDB_GET_KEY2(node, key) { key.mv_size = NODEKSZ(node); key.mv_data = NODEKEY(node); } - - /** Information about a single database in the environment. */ -typedef struct MDB_db { - uint32_t md_pad; /**< also ksize for LEAF2 pages */ - uint16_t md_flags; /**< @ref mdb_dbi_open */ - uint16_t md_depth; /**< depth of this tree */ - pgno_t md_branch_pages; /**< number of internal pages */ - pgno_t md_leaf_pages; /**< number of leaf pages */ - pgno_t md_overflow_pages; /**< number of overflow pages */ - size_t md_entries; /**< number of data items */ - pgno_t md_root; /**< the root page of this tree */ -} MDB_db; - -#define MDB_VALID 0x8000 /**< DB handle is valid, for me_dbflags */ -#define PERSISTENT_FLAGS (0xffff & ~(MDB_VALID)) - /** #mdb_dbi_open() flags */ -#define VALID_FLAGS (MDB_REVERSEKEY|MDB_DUPSORT|MDB_INTEGERKEY|MDB_DUPFIXED|\ - MDB_INTEGERDUP|MDB_REVERSEDUP|MDB_CREATE) - - /** Handle for the DB used to track free pages. */ -#define FREE_DBI 0 - /** Handle for the default DB. */ -#define MAIN_DBI 1 - /** Number of DBs in metapage (free and main) - also hardcoded elsewhere */ -#define CORE_DBS 2 - - /** Number of meta pages - also hardcoded elsewhere */ -#define NUM_METAS 2 - - /** Meta page content. - * A meta page is the start point for accessing a database snapshot. - * Pages 0-1 are meta pages. Transaction N writes meta page #(N % 2). - */ -typedef struct MDB_meta { - /** Stamp identifying this as an LMDB file. It must be set - * to #MDB_MAGIC. */ - uint32_t mm_magic; - /** Version number of this file. Must be set to #MDB_DATA_VERSION. */ - uint32_t mm_version; - void *mm_address; /**< address for fixed mapping */ - size_t mm_mapsize; /**< size of mmap region */ - MDB_db mm_dbs[CORE_DBS]; /**< first is free space, 2nd is main db */ - /** The size of pages used in this DB */ -#define mm_psize mm_dbs[FREE_DBI].md_pad - /** Any persistent environment flags. @ref mdb_env */ -#define mm_flags mm_dbs[FREE_DBI].md_flags - /** Last used page in the datafile. - * Actually the file may be shorter if the freeDB lists the final pages. - */ - pgno_t mm_last_pg; - volatile txnid_t mm_txnid; /**< txnid that committed this page */ -} MDB_meta; - - /** Buffer for a stack-allocated meta page. - * The members define size and alignment, and silence type - * aliasing warnings. They are not used directly; that could - * mean incorrectly using several union members in parallel. - */ -typedef union MDB_metabuf { - MDB_page mb_page; - struct { - char mm_pad[PAGEHDRSZ]; - MDB_meta mm_meta; - } mb_metabuf; -} MDB_metabuf; - - /** Auxiliary DB info. - * The information here is mostly static/read-only. There is - * only a single copy of this record in the environment. - */ -typedef struct MDB_dbx { - MDB_val md_name; /**< name of the database */ - MDB_cmp_func *md_cmp; /**< function for comparing keys */ - MDB_cmp_func *md_dcmp; /**< function for comparing data items */ - MDB_rel_func *md_rel; /**< user relocate function */ - void *md_relctx; /**< user-provided context for md_rel */ -} MDB_dbx; - - /** A database transaction. - * Every operation requires a transaction handle. - */ -struct MDB_txn { - MDB_txn *mt_parent; /**< parent of a nested txn */ - /** Nested txn under this txn, set together with flag #MDB_TXN_HAS_CHILD */ - MDB_txn *mt_child; - pgno_t mt_next_pgno; /**< next unallocated page */ - /** The ID of this transaction. IDs are integers incrementing from 1. - * Only committed write transactions increment the ID. If a transaction - * aborts, the ID may be re-used by the next writer. - */ - txnid_t mt_txnid; - MDB_env *mt_env; /**< the DB environment */ - /** The list of pages that became unused during this transaction. - */ - MDB_IDL mt_free_pgs; - /** The list of loose pages that became unused and may be reused - * in this transaction, linked through #NEXT_LOOSE_PAGE(page). - */ - MDB_page *mt_loose_pgs; - /** Number of loose pages (#mt_loose_pgs) */ - int mt_loose_count; - /** The sorted list of dirty pages we temporarily wrote to disk - * because the dirty list was full. page numbers in here are - * shifted left by 1, deleted slots have the LSB set. - */ - MDB_IDL mt_spill_pgs; - union { - /** For write txns: Modified pages. Sorted when not MDB_WRITEMAP. */ - MDB_ID2L dirty_list; - /** For read txns: This thread/txn's reader table slot, or NULL. */ - MDB_reader *reader; - } mt_u; - /** Array of records for each DB known in the environment. */ - MDB_dbx *mt_dbxs; - /** Array of MDB_db records for each known DB */ - MDB_db *mt_dbs; - /** Array of sequence numbers for each DB handle */ - unsigned int *mt_dbiseqs; -/** @defgroup mt_dbflag Transaction DB Flags - * @ingroup internal - * @{ - */ -#define DB_DIRTY 0x01 /**< DB was written in this txn */ -#define DB_STALE 0x02 /**< Named-DB record is older than txnID */ -#define DB_NEW 0x04 /**< Named-DB handle opened in this txn */ -#define DB_VALID 0x08 /**< DB handle is valid, see also #MDB_VALID */ -#define DB_USRVALID 0x10 /**< As #DB_VALID, but not set for #FREE_DBI */ -#define DB_DUPDATA 0x20 /**< DB is #MDB_DUPSORT data */ -/** @} */ - /** In write txns, array of cursors for each DB */ - MDB_cursor **mt_cursors; - /** Array of flags for each DB */ - unsigned char *mt_dbflags; - /** Number of DB records in use, or 0 when the txn is finished. - * This number only ever increments until the txn finishes; we - * don't decrement it when individual DB handles are closed. - */ - MDB_dbi mt_numdbs; - -/** @defgroup mdb_txn Transaction Flags - * @ingroup internal - * @{ - */ - /** #mdb_txn_begin() flags */ -#define MDB_TXN_BEGIN_FLAGS MDB_RDONLY -#define MDB_TXN_RDONLY MDB_RDONLY /**< read-only transaction */ - /* internal txn flags */ -#define MDB_TXN_WRITEMAP MDB_WRITEMAP /**< copy of #MDB_env flag in writers */ -#define MDB_TXN_FINISHED 0x01 /**< txn is finished or never began */ -#define MDB_TXN_ERROR 0x02 /**< txn is unusable after an error */ -#define MDB_TXN_DIRTY 0x04 /**< must write, even if dirty list is empty */ -#define MDB_TXN_SPILLS 0x08 /**< txn or a parent has spilled pages */ -#define MDB_TXN_HAS_CHILD 0x10 /**< txn has an #MDB_txn.%mt_child */ - /** most operations on the txn are currently illegal */ -#define MDB_TXN_BLOCKED (MDB_TXN_FINISHED|MDB_TXN_ERROR|MDB_TXN_HAS_CHILD) -/** @} */ - unsigned int mt_flags; /**< @ref mdb_txn */ - /** #dirty_list room: Array size - \#dirty pages visible to this txn. - * Includes ancestor txns' dirty pages not hidden by other txns' - * dirty/spilled pages. Thus commit(nested txn) has room to merge - * dirty_list into mt_parent after freeing hidden mt_parent pages. - */ - unsigned int mt_dirty_room; -}; - -/** Enough space for 2^32 nodes with minimum of 2 keys per node. I.e., plenty. - * At 4 keys per node, enough for 2^64 nodes, so there's probably no need to - * raise this on a 64 bit machine. - */ -#define CURSOR_STACK 32 - -struct MDB_xcursor; - - /** Cursors are used for all DB operations. - * A cursor holds a path of (page pointer, key index) from the DB - * root to a position in the DB, plus other state. #MDB_DUPSORT - * cursors include an xcursor to the current data item. Write txns - * track their cursors and keep them up to date when data moves. - * Exception: An xcursor's pointer to a #P_SUBP page can be stale. - * (A node with #F_DUPDATA but no #F_SUBDATA contains a subpage). - */ -struct MDB_cursor { - /** Next cursor on this DB in this txn */ - MDB_cursor *mc_next; - /** Backup of the original cursor if this cursor is a shadow */ - MDB_cursor *mc_backup; - /** Context used for databases with #MDB_DUPSORT, otherwise NULL */ - struct MDB_xcursor *mc_xcursor; - /** The transaction that owns this cursor */ - MDB_txn *mc_txn; - /** The database handle this cursor operates on */ - MDB_dbi mc_dbi; - /** The database record for this cursor */ - MDB_db *mc_db; - /** The database auxiliary record for this cursor */ - MDB_dbx *mc_dbx; - /** The @ref mt_dbflag for this database */ - unsigned char *mc_dbflag; - unsigned short mc_snum; /**< number of pushed pages */ - unsigned short mc_top; /**< index of top page, normally mc_snum-1 */ -/** @defgroup mdb_cursor Cursor Flags - * @ingroup internal - * Cursor state flags. - * @{ - */ -#define C_INITIALIZED 0x01 /**< cursor has been initialized and is valid */ -#define C_EOF 0x02 /**< No more data */ -#define C_SUB 0x04 /**< Cursor is a sub-cursor */ -#define C_DEL 0x08 /**< last op was a cursor_del */ -#define C_UNTRACK 0x40 /**< Un-track cursor when closing */ -/** @} */ - unsigned int mc_flags; /**< @ref mdb_cursor */ - MDB_page *mc_pg[CURSOR_STACK]; /**< stack of pushed pages */ - indx_t mc_ki[CURSOR_STACK]; /**< stack of page indices */ -}; - - /** Context for sorted-dup records. - * We could have gone to a fully recursive design, with arbitrarily - * deep nesting of sub-databases. But for now we only handle these - * levels - main DB, optional sub-DB, sorted-duplicate DB. - */ -typedef struct MDB_xcursor { - /** A sub-cursor for traversing the Dup DB */ - MDB_cursor mx_cursor; - /** The database record for this Dup DB */ - MDB_db mx_db; - /** The auxiliary DB record for this Dup DB */ - MDB_dbx mx_dbx; - /** The @ref mt_dbflag for this Dup DB */ - unsigned char mx_dbflag; -} MDB_xcursor; - - /** Check if there is an inited xcursor */ -#define XCURSOR_INITED(mc) \ - ((mc)->mc_xcursor && ((mc)->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED)) - - /** Update the xcursor's sub-page pointer, if any, in \b mc. Needed - * when the node which contains the sub-page may have moved. Called - * with leaf page \b mp = mc->mc_pg[\b top]. - */ -#define XCURSOR_REFRESH(mc, top, mp) do { \ - MDB_page *xr_pg = (mp); \ - MDB_node *xr_node; \ - if (!XCURSOR_INITED(mc) || (mc)->mc_ki[top] >= NUMKEYS(xr_pg)) break; \ - xr_node = NODEPTR(xr_pg, (mc)->mc_ki[top]); \ - if ((xr_node->mn_flags & (F_DUPDATA|F_SUBDATA)) == F_DUPDATA) \ - (mc)->mc_xcursor->mx_cursor.mc_pg[0] = NODEDATA(xr_node); \ -} while (0) - - /** State of FreeDB old pages, stored in the MDB_env */ -typedef struct MDB_pgstate { - pgno_t *mf_pghead; /**< Reclaimed freeDB pages, or NULL before use */ - txnid_t mf_pglast; /**< ID of last used record, or 0 if !mf_pghead */ -} MDB_pgstate; - - /** The database environment. */ -struct MDB_env { - HANDLE me_fd; /**< The main data file */ - HANDLE me_lfd; /**< The lock file */ - HANDLE me_mfd; /**< For writing and syncing the meta pages */ - /** Failed to update the meta page. Probably an I/O error. */ -#define MDB_FATAL_ERROR 0x80000000U - /** Some fields are initialized. */ -#define MDB_ENV_ACTIVE 0x20000000U - /** me_txkey is set */ -#define MDB_ENV_TXKEY 0x10000000U - /** fdatasync is unreliable */ -#define MDB_FSYNCONLY 0x08000000U - uint32_t me_flags; /**< @ref mdb_env */ - unsigned int me_psize; /**< DB page size, inited from me_os_psize */ - unsigned int me_os_psize; /**< OS page size, from #GET_PAGESIZE */ - unsigned int me_maxreaders; /**< size of the reader table */ - /** Max #MDB_txninfo.%mti_numreaders of interest to #mdb_env_close() */ - volatile int me_close_readers; - MDB_dbi me_numdbs; /**< number of DBs opened */ - MDB_dbi me_maxdbs; /**< size of the DB table */ - MDB_PID_T me_pid; /**< process ID of this env */ - char *me_path; /**< path to the DB files */ - char *me_map; /**< the memory map of the data file */ - MDB_txninfo *me_txns; /**< the memory map of the lock file or NULL */ - MDB_meta *me_metas[NUM_METAS]; /**< pointers to the two meta pages */ - void *me_pbuf; /**< scratch area for DUPSORT put() */ - MDB_txn *me_txn; /**< current write transaction */ - MDB_txn *me_txn0; /**< prealloc'd write transaction */ - size_t me_mapsize; /**< size of the data memory map */ - off_t me_size; /**< current file size */ - pgno_t me_maxpg; /**< me_mapsize / me_psize */ - MDB_dbx *me_dbxs; /**< array of static DB info */ - uint16_t *me_dbflags; /**< array of flags from MDB_db.md_flags */ - unsigned int *me_dbiseqs; /**< array of dbi sequence numbers */ - pthread_key_t me_txkey; /**< thread-key for readers */ - txnid_t me_pgoldest; /**< ID of oldest reader last time we looked */ - MDB_pgstate me_pgstate; /**< state of old pages from freeDB */ -# define me_pglast me_pgstate.mf_pglast -# define me_pghead me_pgstate.mf_pghead - MDB_page *me_dpages; /**< list of malloc'd blocks for re-use */ - /** IDL of pages that became unused in a write txn */ - MDB_IDL me_free_pgs; - /** ID2L of pages written during a write txn. Length MDB_IDL_UM_SIZE. */ - MDB_ID2L me_dirty_list; - /** Max number of freelist items that can fit in a single overflow page */ - int me_maxfree_1pg; - /** Max size of a node on a page */ - unsigned int me_nodemax; -#if !(MDB_MAXKEYSIZE) - unsigned int me_maxkey; /**< max size of a key */ -#endif - int me_live_reader; /**< have liveness lock in reader table */ -#ifdef _WIN32 - int me_pidquery; /**< Used in OpenProcess */ -#endif -#ifdef MDB_USE_POSIX_MUTEX /* Posix mutexes reside in shared mem */ -# define me_rmutex me_txns->mti_rmutex /**< Shared reader lock */ -# define me_wmutex me_txns->mti_wmutex /**< Shared writer lock */ -#else - mdb_mutex_t me_rmutex; - mdb_mutex_t me_wmutex; -#endif - void *me_userctx; /**< User-settable context */ - MDB_assert_func *me_assert_func; /**< Callback for assertion failures */ -}; - - /** Nested transaction */ -typedef struct MDB_ntxn { - MDB_txn mnt_txn; /**< the transaction */ - MDB_pgstate mnt_pgstate; /**< parent transaction's saved freestate */ -} MDB_ntxn; - - /** max number of pages to commit in one writev() call */ -#define MDB_COMMIT_PAGES 64 -#if defined(IOV_MAX) && IOV_MAX < MDB_COMMIT_PAGES -#undef MDB_COMMIT_PAGES -#define MDB_COMMIT_PAGES IOV_MAX -#endif - - /** max bytes to write in one call */ -#define MAX_WRITE (0x40000000U >> (sizeof(ssize_t) == 4)) - - /** Check \b txn and \b dbi arguments to a function */ -#define TXN_DBI_EXIST(txn, dbi, validity) \ - ((txn) && (dbi)<(txn)->mt_numdbs && ((txn)->mt_dbflags[dbi] & (validity))) - - /** Check for misused \b dbi handles */ -#define TXN_DBI_CHANGED(txn, dbi) \ - ((txn)->mt_dbiseqs[dbi] != (txn)->mt_env->me_dbiseqs[dbi]) - -static int mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp); -static int mdb_page_new(MDB_cursor *mc, uint32_t flags, int num, MDB_page **mp); -static int mdb_page_touch(MDB_cursor *mc); - -#define MDB_END_NAMES {"committed", "empty-commit", "abort", "reset", \ - "reset-tmp", "fail-begin", "fail-beginchild"} -enum { - /* mdb_txn_end operation number, for logging */ - MDB_END_COMMITTED, MDB_END_EMPTY_COMMIT, MDB_END_ABORT, MDB_END_RESET, - MDB_END_RESET_TMP, MDB_END_FAIL_BEGIN, MDB_END_FAIL_BEGINCHILD -}; -#define MDB_END_OPMASK 0x0F /**< mask for #mdb_txn_end() operation number */ -#define MDB_END_UPDATE 0x10 /**< update env state (DBIs) */ -#define MDB_END_FREE 0x20 /**< free txn unless it is #MDB_env.%me_txn0 */ -#define MDB_END_SLOT MDB_NOTLS /**< release any reader slot if #MDB_NOTLS */ -static void mdb_txn_end(MDB_txn *txn, unsigned mode); - -static int mdb_page_get(MDB_cursor *mc, pgno_t pgno, MDB_page **mp, int *lvl); -static int mdb_page_search_root(MDB_cursor *mc, - MDB_val *key, int modify); -#define MDB_PS_MODIFY 1 -#define MDB_PS_ROOTONLY 2 -#define MDB_PS_FIRST 4 -#define MDB_PS_LAST 8 -static int mdb_page_search(MDB_cursor *mc, - MDB_val *key, int flags); -static int mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst); - -#define MDB_SPLIT_REPLACE MDB_APPENDDUP /**< newkey is not new */ -static int mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, - pgno_t newpgno, unsigned int nflags); - -static int mdb_env_read_header(MDB_env *env, MDB_meta *meta); -static MDB_meta *mdb_env_pick_meta(const MDB_env *env); -static int mdb_env_write_meta(MDB_txn *txn); -#if defined(MDB_USE_POSIX_MUTEX) && !defined(MDB_ROBUST_SUPPORTED) /* Drop unused excl arg */ -# define mdb_env_close0(env, excl) mdb_env_close1(env) -#endif -static void mdb_env_close0(MDB_env *env, int excl); - -static MDB_node *mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp); -static int mdb_node_add(MDB_cursor *mc, indx_t indx, - MDB_val *key, MDB_val *data, pgno_t pgno, unsigned int flags); -static void mdb_node_del(MDB_cursor *mc, int ksize); -static void mdb_node_shrink(MDB_page *mp, indx_t indx); -static int mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft); -static int mdb_node_read(MDB_cursor *mc, MDB_node *leaf, MDB_val *data); -static size_t mdb_leaf_size(MDB_env *env, MDB_val *key, MDB_val *data); -static size_t mdb_branch_size(MDB_env *env, MDB_val *key); - -static int mdb_rebalance(MDB_cursor *mc); -static int mdb_update_key(MDB_cursor *mc, MDB_val *key); - -static void mdb_cursor_pop(MDB_cursor *mc); -static int mdb_cursor_push(MDB_cursor *mc, MDB_page *mp); - -static int mdb_cursor_del0(MDB_cursor *mc); -static int mdb_del0(MDB_txn *txn, MDB_dbi dbi, MDB_val *key, MDB_val *data, unsigned flags); -static int mdb_cursor_sibling(MDB_cursor *mc, int move_right); -static int mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op); -static int mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op); -static int mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op, - int *exactp); -static int mdb_cursor_first(MDB_cursor *mc, MDB_val *key, MDB_val *data); -static int mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data); - -static void mdb_cursor_init(MDB_cursor *mc, MDB_txn *txn, MDB_dbi dbi, MDB_xcursor *mx); -static void mdb_xcursor_init0(MDB_cursor *mc); -static void mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node); -static void mdb_xcursor_init2(MDB_cursor *mc, MDB_xcursor *src_mx, int force); - -static int mdb_drop0(MDB_cursor *mc, int subs); -static void mdb_default_cmp(MDB_txn *txn, MDB_dbi dbi); -static int mdb_reader_check0(MDB_env *env, int rlocked, int *dead); - -/** @cond */ -static MDB_cmp_func mdb_cmp_memn, mdb_cmp_memnr, mdb_cmp_int, mdb_cmp_cint, mdb_cmp_long; -/** @endcond */ - -/** Compare two items pointing at size_t's of unknown alignment. */ -#ifdef MISALIGNED_OK -# define mdb_cmp_clong mdb_cmp_long -#else -# define mdb_cmp_clong mdb_cmp_cint -#endif - -#ifdef _WIN32 -static SECURITY_DESCRIPTOR mdb_null_sd; -static SECURITY_ATTRIBUTES mdb_all_sa; -static int mdb_sec_inited; - -struct MDB_name; -static int utf8_to_utf16(const char *src, struct MDB_name *dst, int xtra); -#endif - -/** Return the library version info. */ -char * ESECT -mdb_version(int *major, int *minor, int *patch) -{ - if (major) *major = MDB_VERSION_MAJOR; - if (minor) *minor = MDB_VERSION_MINOR; - if (patch) *patch = MDB_VERSION_PATCH; - return MDB_VERSION_STRING; -} - -/** Table of descriptions for LMDB @ref errors */ -static char *const mdb_errstr[] = { - "MDB_KEYEXIST: Key/data pair already exists", - "MDB_NOTFOUND: No matching key/data pair found", - "MDB_PAGE_NOTFOUND: Requested page not found", - "MDB_CORRUPTED: Located page was wrong type", - "MDB_PANIC: Update of meta page failed or environment had fatal error", - "MDB_VERSION_MISMATCH: Database environment version mismatch", - "MDB_INVALID: File is not an LMDB file", - "MDB_MAP_FULL: Environment mapsize limit reached", - "MDB_DBS_FULL: Environment maxdbs limit reached", - "MDB_READERS_FULL: Environment maxreaders limit reached", - "MDB_TLS_FULL: Thread-local storage keys full - too many environments open", - "MDB_TXN_FULL: Transaction has too many dirty pages - transaction too big", - "MDB_CURSOR_FULL: Internal error - cursor stack limit reached", - "MDB_PAGE_FULL: Internal error - page has no more space", - "MDB_MAP_RESIZED: Database contents grew beyond environment mapsize", - "MDB_INCOMPATIBLE: Operation and DB incompatible, or DB flags changed", - "MDB_BAD_RSLOT: Invalid reuse of reader locktable slot", - "MDB_BAD_TXN: Transaction must abort, has a child, or is invalid", - "MDB_BAD_VALSIZE: Unsupported size of key/DB name/data, or wrong DUPFIXED size", - "MDB_BAD_DBI: The specified DBI handle was closed/changed unexpectedly", -}; - -char * -mdb_strerror(int err) -{ -#ifdef _WIN32 - /** HACK: pad 4KB on stack over the buf. Return system msgs in buf. - * This works as long as no function between the call to mdb_strerror - * and the actual use of the message uses more than 4K of stack. - */ -#define MSGSIZE 1024 -#define PADSIZE 4096 - char buf[MSGSIZE+PADSIZE], *ptr = buf; -#endif - int i; - if (!err) - return ("Successful return: 0"); - - if (err >= MDB_KEYEXIST && err <= MDB_LAST_ERRCODE) { - i = err - MDB_KEYEXIST; - return mdb_errstr[i]; - } - -#ifdef _WIN32 - /* These are the C-runtime error codes we use. The comment indicates - * their numeric value, and the Win32 error they would correspond to - * if the error actually came from a Win32 API. A major mess, we should - * have used LMDB-specific error codes for everything. - */ - switch(err) { - case ENOENT: /* 2, FILE_NOT_FOUND */ - case EIO: /* 5, ACCESS_DENIED */ - case ENOMEM: /* 12, INVALID_ACCESS */ - case EACCES: /* 13, INVALID_DATA */ - case EBUSY: /* 16, CURRENT_DIRECTORY */ - case EINVAL: /* 22, BAD_COMMAND */ - case ENOSPC: /* 28, OUT_OF_PAPER */ - return strerror(err); - default: - ; - } - buf[0] = 0; - FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, err, 0, ptr, MSGSIZE, (va_list *)buf+MSGSIZE); - return ptr; -#else - if (err < 0) - return "Invalid error code"; - return strerror(err); -#endif -} - -/** assert(3) variant in cursor context */ -#define mdb_cassert(mc, expr) mdb_assert0((mc)->mc_txn->mt_env, expr, #expr) -/** assert(3) variant in transaction context */ -#define mdb_tassert(txn, expr) mdb_assert0((txn)->mt_env, expr, #expr) -/** assert(3) variant in environment context */ -#define mdb_eassert(env, expr) mdb_assert0(env, expr, #expr) - -#ifndef NDEBUG -# define mdb_assert0(env, expr, expr_txt) ((expr) ? (void)0 : \ - mdb_assert_fail(env, expr_txt, mdb_func_, __FILE__, __LINE__)) - -static void ESECT -mdb_assert_fail(MDB_env *env, const char *expr_txt, - const char *func, const char *file, int line) -{ - char buf[400]; - sprintf(buf, "%.100s:%d: Assertion '%.200s' failed in %.40s()", - file, line, expr_txt, func); - if (env->me_assert_func) - env->me_assert_func(env, buf); - fprintf(stderr, "%s\n", buf); - abort(); -} -#else -# define mdb_assert0(env, expr, expr_txt) ((void) 0) -#endif /* NDEBUG */ - -#if MDB_DEBUG -/** Return the page number of \b mp which may be sub-page, for debug output */ -static pgno_t -mdb_dbg_pgno(MDB_page *mp) -{ - pgno_t ret; - COPY_PGNO(ret, MP_PGNO(mp)); - return ret; -} - -/** Display a key in hexadecimal and return the address of the result. - * @param[in] key the key to display - * @param[in] buf the buffer to write into. Should always be #DKBUF. - * @return The key in hexadecimal form. - */ -char * -mdb_dkey(MDB_val *key, char *buf) -{ - char *ptr = buf; - unsigned char *c = key->mv_data; - unsigned int i; - - if (!key) - return ""; - - if (key->mv_size > DKBUF_MAXKEYSIZE) - return "MDB_MAXKEYSIZE"; - /* may want to make this a dynamic check: if the key is mostly - * printable characters, print it as-is instead of converting to hex. - */ -#if 1 - buf[0] = '\0'; - for (i=0; imv_size; i++) - ptr += sprintf(ptr, "%02x", *c++); -#else - sprintf(buf, "%.*s", key->mv_size, key->mv_data); -#endif - return buf; -} - -static const char * -mdb_leafnode_type(MDB_node *n) -{ - static char *const tp[2][2] = {{"", ": DB"}, {": sub-page", ": sub-DB"}}; - return F_ISSET(n->mn_flags, F_BIGDATA) ? ": overflow page" : - tp[F_ISSET(n->mn_flags, F_DUPDATA)][F_ISSET(n->mn_flags, F_SUBDATA)]; -} - -/** Display all the keys in the page. */ -void -mdb_page_list(MDB_page *mp) -{ - pgno_t pgno = mdb_dbg_pgno(mp); - const char *type, *state = (MP_FLAGS(mp) & P_DIRTY) ? ", dirty" : ""; - MDB_node *node; - unsigned int i, nkeys, nsize, total = 0; - MDB_val key; - DKBUF; - - switch (MP_FLAGS(mp) & (P_BRANCH|P_LEAF|P_LEAF2|P_META|P_OVERFLOW|P_SUBP)) { - case P_BRANCH: type = "Branch page"; break; - case P_LEAF: type = "Leaf page"; break; - case P_LEAF|P_SUBP: type = "Sub-page"; break; - case P_LEAF|P_LEAF2: type = "LEAF2 page"; break; - case P_LEAF|P_LEAF2|P_SUBP: type = "LEAF2 sub-page"; break; - case P_OVERFLOW: - fprintf(stderr, "Overflow page %"Z"u pages %u%s\n", - pgno, mp->mp_pages, state); - return; - case P_META: - fprintf(stderr, "Meta-page %"Z"u txnid %"Z"u\n", - pgno, ((MDB_meta *)METADATA(mp))->mm_txnid); - return; - default: - fprintf(stderr, "Bad page %"Z"u flags 0x%X\n", pgno, MP_FLAGS(mp)); - return; - } - - nkeys = NUMKEYS(mp); - fprintf(stderr, "%s %"Z"u numkeys %d%s\n", type, pgno, nkeys, state); - - for (i=0; imp_pad; - key.mv_data = LEAF2KEY(mp, i, nsize); - total += nsize; - fprintf(stderr, "key %d: nsize %d, %s\n", i, nsize, DKEY(&key)); - continue; - } - node = NODEPTR(mp, i); - key.mv_size = node->mn_ksize; - key.mv_data = node->mn_data; - nsize = NODESIZE + key.mv_size; - if (IS_BRANCH(mp)) { - fprintf(stderr, "key %d: page %"Z"u, %s\n", i, NODEPGNO(node), - DKEY(&key)); - total += nsize; - } else { - if (F_ISSET(node->mn_flags, F_BIGDATA)) - nsize += sizeof(pgno_t); - else - nsize += NODEDSZ(node); - total += nsize; - nsize += sizeof(indx_t); - fprintf(stderr, "key %d: nsize %d, %s%s\n", - i, nsize, DKEY(&key), mdb_leafnode_type(node)); - } - total = EVEN(total); - } - fprintf(stderr, "Total: header %d + contents %d + unused %d\n", - IS_LEAF2(mp) ? PAGEHDRSZ : PAGEBASE + MP_LOWER(mp), total, SIZELEFT(mp)); -} - -void -mdb_cursor_chk(MDB_cursor *mc) -{ - unsigned int i; - MDB_node *node; - MDB_page *mp; - - if (!mc->mc_snum || !(mc->mc_flags & C_INITIALIZED)) return; - for (i=0; imc_top; i++) { - mp = mc->mc_pg[i]; - node = NODEPTR(mp, mc->mc_ki[i]); - if (NODEPGNO(node) != mc->mc_pg[i+1]->mp_pgno) - printf("oops!\n"); - } - if (mc->mc_ki[i] >= NUMKEYS(mc->mc_pg[i])) - printf("ack!\n"); - if (XCURSOR_INITED(mc)) { - node = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); - if (((node->mn_flags & (F_DUPDATA|F_SUBDATA)) == F_DUPDATA) && - mc->mc_xcursor->mx_cursor.mc_pg[0] != NODEDATA(node)) { - printf("blah!\n"); - } - } -} -#endif - -#if (MDB_DEBUG) > 2 -/** Count all the pages in each DB and in the freelist - * and make sure it matches the actual number of pages - * being used. - * All named DBs must be open for a correct count. - */ -static void mdb_audit(MDB_txn *txn) -{ - MDB_cursor mc; - MDB_val key, data; - MDB_ID freecount, count; - MDB_dbi i; - int rc; - - freecount = 0; - mdb_cursor_init(&mc, txn, FREE_DBI, NULL); - while ((rc = mdb_cursor_get(&mc, &key, &data, MDB_NEXT)) == 0) - freecount += *(MDB_ID *)data.mv_data; - mdb_tassert(txn, rc == MDB_NOTFOUND); - - count = 0; - for (i = 0; imt_numdbs; i++) { - MDB_xcursor mx; - if (!(txn->mt_dbflags[i] & DB_VALID)) - continue; - mdb_cursor_init(&mc, txn, i, &mx); - if (txn->mt_dbs[i].md_root == P_INVALID) - continue; - count += txn->mt_dbs[i].md_branch_pages + - txn->mt_dbs[i].md_leaf_pages + - txn->mt_dbs[i].md_overflow_pages; - if (txn->mt_dbs[i].md_flags & MDB_DUPSORT) { - rc = mdb_page_search(&mc, NULL, MDB_PS_FIRST); - for (; rc == MDB_SUCCESS; rc = mdb_cursor_sibling(&mc, 1)) { - unsigned j; - MDB_page *mp; - mp = mc.mc_pg[mc.mc_top]; - for (j=0; jmn_flags & F_SUBDATA) { - MDB_db db; - memcpy(&db, NODEDATA(leaf), sizeof(db)); - count += db.md_branch_pages + db.md_leaf_pages + - db.md_overflow_pages; - } - } - } - mdb_tassert(txn, rc == MDB_NOTFOUND); - } - } - if (freecount + count + NUM_METAS != txn->mt_next_pgno) { - fprintf(stderr, "audit: %"Z"u freecount: %"Z"u count: %"Z"u total: %"Z"u next_pgno: %"Z"u\n", - txn->mt_txnid, freecount, count+NUM_METAS, - freecount+count+NUM_METAS, txn->mt_next_pgno); - } -} -#endif - -int -mdb_cmp(MDB_txn *txn, MDB_dbi dbi, const MDB_val *a, const MDB_val *b) -{ - return txn->mt_dbxs[dbi].md_cmp(a, b); -} - -int -mdb_dcmp(MDB_txn *txn, MDB_dbi dbi, const MDB_val *a, const MDB_val *b) -{ - MDB_cmp_func *dcmp = txn->mt_dbxs[dbi].md_dcmp; -#if UINT_MAX < SIZE_MAX - if (dcmp == mdb_cmp_int && a->mv_size == sizeof(size_t)) - dcmp = mdb_cmp_clong; -#endif - return dcmp(a, b); -} - -/** Allocate memory for a page. - * Re-use old malloc'd pages first for singletons, otherwise just malloc. - * Set #MDB_TXN_ERROR on failure. - */ -static MDB_page * -mdb_page_malloc(MDB_txn *txn, unsigned num) -{ - MDB_env *env = txn->mt_env; - MDB_page *ret = env->me_dpages; - size_t psize = env->me_psize, sz = psize, off; - /* For ! #MDB_NOMEMINIT, psize counts how much to init. - * For a single page alloc, we init everything after the page header. - * For multi-page, we init the final page; if the caller needed that - * many pages they will be filling in at least up to the last page. - */ - if (num == 1) { - if (ret) { - VGMEMP_ALLOC(env, ret, sz); - VGMEMP_DEFINED(ret, sizeof(ret->mp_next)); - env->me_dpages = ret->mp_next; - return ret; - } - psize -= off = PAGEHDRSZ; - } else { - sz *= num; - off = sz - psize; - } - if ((ret = malloc(sz)) != NULL) { - VGMEMP_ALLOC(env, ret, sz); - if (!(env->me_flags & MDB_NOMEMINIT)) { - memset((char *)ret + off, 0, psize); - ret->mp_pad = 0; - } - } else { - txn->mt_flags |= MDB_TXN_ERROR; - } - return ret; -} -/** Free a single page. - * Saves single pages to a list, for future reuse. - * (This is not used for multi-page overflow pages.) - */ -static void -mdb_page_free(MDB_env *env, MDB_page *mp) -{ - mp->mp_next = env->me_dpages; - VGMEMP_FREE(env, mp); - env->me_dpages = mp; -} - -/** Free a dirty page */ -static void -mdb_dpage_free(MDB_env *env, MDB_page *dp) -{ - if (!IS_OVERFLOW(dp) || dp->mp_pages == 1) { - mdb_page_free(env, dp); - } else { - /* large pages just get freed directly */ - VGMEMP_FREE(env, dp); - free(dp); - } -} - -/** Return all dirty pages to dpage list */ -static void -mdb_dlist_free(MDB_txn *txn) -{ - MDB_env *env = txn->mt_env; - MDB_ID2L dl = txn->mt_u.dirty_list; - unsigned i, n = dl[0].mid; - - for (i = 1; i <= n; i++) { - mdb_dpage_free(env, dl[i].mptr); - } - dl[0].mid = 0; -} - -/** Loosen or free a single page. - * Saves single pages to a list for future reuse - * in this same txn. It has been pulled from the freeDB - * and already resides on the dirty list, but has been - * deleted. Use these pages first before pulling again - * from the freeDB. - * - * If the page wasn't dirtied in this txn, just add it - * to this txn's free list. - */ -static int -mdb_page_loose(MDB_cursor *mc, MDB_page *mp) -{ - int loose = 0; - pgno_t pgno = mp->mp_pgno; - MDB_txn *txn = mc->mc_txn; - - if ((mp->mp_flags & P_DIRTY) && mc->mc_dbi != FREE_DBI) { - if (txn->mt_parent) { - MDB_ID2 *dl = txn->mt_u.dirty_list; - /* If txn has a parent, make sure the page is in our - * dirty list. - */ - if (dl[0].mid) { - unsigned x = mdb_mid2l_search(dl, pgno); - if (x <= dl[0].mid && dl[x].mid == pgno) { - if (mp != dl[x].mptr) { /* bad cursor? */ - mc->mc_flags &= ~(C_INITIALIZED|C_EOF); - txn->mt_flags |= MDB_TXN_ERROR; - return MDB_CORRUPTED; - } - /* ok, it's ours */ - loose = 1; - } - } - } else { - /* no parent txn, so it's just ours */ - loose = 1; - } - } - if (loose) { - DPRINTF(("loosen db %d page %"Z"u", DDBI(mc), - mp->mp_pgno)); - NEXT_LOOSE_PAGE(mp) = txn->mt_loose_pgs; - txn->mt_loose_pgs = mp; - txn->mt_loose_count++; - mp->mp_flags |= P_LOOSE; - } else { - int rc = mdb_midl_append(&txn->mt_free_pgs, pgno); - if (rc) - return rc; - } - - return MDB_SUCCESS; -} - -/** Set or clear P_KEEP in dirty, non-overflow, non-sub pages watched by txn. - * @param[in] mc A cursor handle for the current operation. - * @param[in] pflags Flags of the pages to update: - * P_DIRTY to set P_KEEP, P_DIRTY|P_KEEP to clear it. - * @param[in] all No shortcuts. Needed except after a full #mdb_page_flush(). - * @return 0 on success, non-zero on failure. - */ -static int -mdb_pages_xkeep(MDB_cursor *mc, unsigned pflags, int all) -{ - enum { Mask = P_SUBP|P_DIRTY|P_LOOSE|P_KEEP }; - MDB_txn *txn = mc->mc_txn; - MDB_cursor *m3, *m0 = mc; - MDB_xcursor *mx; - MDB_page *dp, *mp; - MDB_node *leaf; - unsigned i, j; - int rc = MDB_SUCCESS, level; - - /* Mark pages seen by cursors */ - if (mc->mc_flags & C_UNTRACK) - mc = NULL; /* will find mc in mt_cursors */ - for (i = txn->mt_numdbs;; mc = txn->mt_cursors[--i]) { - for (; mc; mc=mc->mc_next) { - if (!(mc->mc_flags & C_INITIALIZED)) - continue; - for (m3 = mc;; m3 = &mx->mx_cursor) { - mp = NULL; - for (j=0; jmc_snum; j++) { - mp = m3->mc_pg[j]; - if ((mp->mp_flags & Mask) == pflags) - mp->mp_flags ^= P_KEEP; - } - mx = m3->mc_xcursor; - /* Proceed to mx if it is at a sub-database */ - if (! (mx && (mx->mx_cursor.mc_flags & C_INITIALIZED))) - break; - if (! (mp && (mp->mp_flags & P_LEAF))) - break; - leaf = NODEPTR(mp, m3->mc_ki[j-1]); - if (!(leaf->mn_flags & F_SUBDATA)) - break; - } - } - if (i == 0) - break; - } - - if (all) { - /* Mark dirty root pages */ - for (i=0; imt_numdbs; i++) { - if (txn->mt_dbflags[i] & DB_DIRTY) { - pgno_t pgno = txn->mt_dbs[i].md_root; - if (pgno == P_INVALID) - continue; - if ((rc = mdb_page_get(m0, pgno, &dp, &level)) != MDB_SUCCESS) - break; - if ((dp->mp_flags & Mask) == pflags && level <= 1) - dp->mp_flags ^= P_KEEP; - } - } - } - - return rc; -} - -static int mdb_page_flush(MDB_txn *txn, int keep); - -/** Spill pages from the dirty list back to disk. - * This is intended to prevent running into #MDB_TXN_FULL situations, - * but note that they may still occur in a few cases: - * 1) our estimate of the txn size could be too small. Currently this - * seems unlikely, except with a large number of #MDB_MULTIPLE items. - * 2) child txns may run out of space if their parents dirtied a - * lot of pages and never spilled them. TODO: we probably should do - * a preemptive spill during #mdb_txn_begin() of a child txn, if - * the parent's dirty_room is below a given threshold. - * - * Otherwise, if not using nested txns, it is expected that apps will - * not run into #MDB_TXN_FULL any more. The pages are flushed to disk - * the same way as for a txn commit, e.g. their P_DIRTY flag is cleared. - * If the txn never references them again, they can be left alone. - * If the txn only reads them, they can be used without any fuss. - * If the txn writes them again, they can be dirtied immediately without - * going thru all of the work of #mdb_page_touch(). Such references are - * handled by #mdb_page_unspill(). - * - * Also note, we never spill DB root pages, nor pages of active cursors, - * because we'll need these back again soon anyway. And in nested txns, - * we can't spill a page in a child txn if it was already spilled in a - * parent txn. That would alter the parent txns' data even though - * the child hasn't committed yet, and we'd have no way to undo it if - * the child aborted. - * - * @param[in] m0 cursor A cursor handle identifying the transaction and - * database for which we are checking space. - * @param[in] key For a put operation, the key being stored. - * @param[in] data For a put operation, the data being stored. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_page_spill(MDB_cursor *m0, MDB_val *key, MDB_val *data) -{ - MDB_txn *txn = m0->mc_txn; - MDB_page *dp; - MDB_ID2L dl = txn->mt_u.dirty_list; - unsigned int i, j, need; - int rc; - - if (m0->mc_flags & C_SUB) - return MDB_SUCCESS; - - /* Estimate how much space this op will take */ - i = m0->mc_db->md_depth; - /* Named DBs also dirty the main DB */ - if (m0->mc_dbi >= CORE_DBS) - i += txn->mt_dbs[MAIN_DBI].md_depth; - /* For puts, roughly factor in the key+data size */ - if (key) - i += (LEAFSIZE(key, data) + txn->mt_env->me_psize) / txn->mt_env->me_psize; - i += i; /* double it for good measure */ - need = i; - - if (txn->mt_dirty_room > i) - return MDB_SUCCESS; - - if (!txn->mt_spill_pgs) { - txn->mt_spill_pgs = mdb_midl_alloc(MDB_IDL_UM_MAX); - if (!txn->mt_spill_pgs) - return ENOMEM; - } else { - /* purge deleted slots */ - MDB_IDL sl = txn->mt_spill_pgs; - unsigned int num = sl[0]; - j=0; - for (i=1; i<=num; i++) { - if (!(sl[i] & 1)) - sl[++j] = sl[i]; - } - sl[0] = j; - } - - /* Preserve pages which may soon be dirtied again */ - if ((rc = mdb_pages_xkeep(m0, P_DIRTY, 1)) != MDB_SUCCESS) - goto done; - - /* Less aggressive spill - we originally spilled the entire dirty list, - * with a few exceptions for cursor pages and DB root pages. But this - * turns out to be a lot of wasted effort because in a large txn many - * of those pages will need to be used again. So now we spill only 1/8th - * of the dirty pages. Testing revealed this to be a good tradeoff, - * better than 1/2, 1/4, or 1/10. - */ - if (need < MDB_IDL_UM_MAX / 8) - need = MDB_IDL_UM_MAX / 8; - - /* Save the page IDs of all the pages we're flushing */ - /* flush from the tail forward, this saves a lot of shifting later on. */ - for (i=dl[0].mid; i && need; i--) { - MDB_ID pn = dl[i].mid << 1; - dp = dl[i].mptr; - if (dp->mp_flags & (P_LOOSE|P_KEEP)) - continue; - /* Can't spill twice, make sure it's not already in a parent's - * spill list. - */ - if (txn->mt_parent) { - MDB_txn *tx2; - for (tx2 = txn->mt_parent; tx2; tx2 = tx2->mt_parent) { - if (tx2->mt_spill_pgs) { - j = mdb_midl_search(tx2->mt_spill_pgs, pn); - if (j <= tx2->mt_spill_pgs[0] && tx2->mt_spill_pgs[j] == pn) { - dp->mp_flags |= P_KEEP; - break; - } - } - } - if (tx2) - continue; - } - if ((rc = mdb_midl_append(&txn->mt_spill_pgs, pn))) - goto done; - need--; - } - mdb_midl_sort(txn->mt_spill_pgs); - - /* Flush the spilled part of dirty list */ - if ((rc = mdb_page_flush(txn, i)) != MDB_SUCCESS) - goto done; - - /* Reset any dirty pages we kept that page_flush didn't see */ - rc = mdb_pages_xkeep(m0, P_DIRTY|P_KEEP, i); - -done: - txn->mt_flags |= rc ? MDB_TXN_ERROR : MDB_TXN_SPILLS; - return rc; -} - -/** Find oldest txnid still referenced. Expects txn->mt_txnid > 0. */ -static txnid_t -mdb_find_oldest(MDB_txn *txn) -{ - int i; - txnid_t mr, oldest = txn->mt_txnid - 1; - if (txn->mt_env->me_txns) { - MDB_reader *r = txn->mt_env->me_txns->mti_readers; - for (i = txn->mt_env->me_txns->mti_numreaders; --i >= 0; ) { - if (r[i].mr_pid) { - mr = r[i].mr_txnid; - if (oldest > mr) - oldest = mr; - } - } - } - return oldest; -} - -/** Add a page to the txn's dirty list */ -static void -mdb_page_dirty(MDB_txn *txn, MDB_page *mp) -{ - MDB_ID2 mid; - int rc, (*insert)(MDB_ID2L, MDB_ID2 *); - - if (txn->mt_flags & MDB_TXN_WRITEMAP) { - insert = mdb_mid2l_append; - } else { - insert = mdb_mid2l_insert; - } - mid.mid = mp->mp_pgno; - mid.mptr = mp; - rc = insert(txn->mt_u.dirty_list, &mid); - mdb_tassert(txn, rc == 0); - txn->mt_dirty_room--; -} - -/** Allocate page numbers and memory for writing. Maintain me_pglast, - * me_pghead and mt_next_pgno. Set #MDB_TXN_ERROR on failure. - * - * If there are free pages available from older transactions, they - * are re-used first. Otherwise allocate a new page at mt_next_pgno. - * Do not modify the freedB, just merge freeDB records into me_pghead[] - * and move me_pglast to say which records were consumed. Only this - * function can create me_pghead and move me_pglast/mt_next_pgno. - * @param[in] mc cursor A cursor handle identifying the transaction and - * database for which we are allocating. - * @param[in] num the number of pages to allocate. - * @param[out] mp Address of the allocated page(s). Requests for multiple pages - * will always be satisfied by a single contiguous chunk of memory. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp) -{ -#ifdef MDB_PARANOID /* Seems like we can ignore this now */ - /* Get at most more freeDB records once me_pghead - * has enough pages. If not enough, use new pages from the map. - * If and mc is updating the freeDB, only get new - * records if me_pghead is empty. Then the freelist cannot play - * catch-up with itself by growing while trying to save it. - */ - enum { Paranoid = 1, Max_retries = 500 }; -#else - enum { Paranoid = 0, Max_retries = INT_MAX /*infinite*/ }; -#endif - int rc, retry = num * 60; - MDB_txn *txn = mc->mc_txn; - MDB_env *env = txn->mt_env; - pgno_t pgno, *mop = env->me_pghead; - unsigned i, j, mop_len = mop ? mop[0] : 0, n2 = num-1; - MDB_page *np; - txnid_t oldest = 0, last; - MDB_cursor_op op; - MDB_cursor m2; - int found_old = 0; - - /* If there are any loose pages, just use them */ - if (num == 1 && txn->mt_loose_pgs) { - np = txn->mt_loose_pgs; - txn->mt_loose_pgs = NEXT_LOOSE_PAGE(np); - txn->mt_loose_count--; - DPRINTF(("db %d use loose page %"Z"u", DDBI(mc), - np->mp_pgno)); - *mp = np; - return MDB_SUCCESS; - } - - *mp = NULL; - - /* If our dirty list is already full, we can't do anything */ - if (txn->mt_dirty_room == 0) { - rc = MDB_TXN_FULL; - goto fail; - } - - for (op = MDB_FIRST;; op = MDB_NEXT) { - MDB_val key, data; - MDB_node *leaf; - pgno_t *idl; - - /* Seek a big enough contiguous page range. Prefer - * pages at the tail, just truncating the list. - */ - if (mop_len > n2) { - i = mop_len; - do { - pgno = mop[i]; - if (mop[i-n2] == pgno+n2) - goto search_done; - } while (--i > n2); - if (--retry < 0) - break; - } - - if (op == MDB_FIRST) { /* 1st iteration */ - /* Prepare to fetch more and coalesce */ - last = env->me_pglast; - oldest = env->me_pgoldest; - mdb_cursor_init(&m2, txn, FREE_DBI, NULL); - if (last) { - op = MDB_SET_RANGE; - key.mv_data = &last; /* will look up last+1 */ - key.mv_size = sizeof(last); - } - if (Paranoid && mc->mc_dbi == FREE_DBI) - retry = -1; - } - if (Paranoid && retry < 0 && mop_len) - break; - - last++; - /* Do not fetch more if the record will be too recent */ - if (oldest <= last) { - if (!found_old) { - oldest = mdb_find_oldest(txn); - env->me_pgoldest = oldest; - found_old = 1; - } - if (oldest <= last) - break; - } - rc = mdb_cursor_get(&m2, &key, NULL, op); - if (rc) { - if (rc == MDB_NOTFOUND) - break; - goto fail; - } - last = *(txnid_t*)key.mv_data; - if (oldest <= last) { - if (!found_old) { - oldest = mdb_find_oldest(txn); - env->me_pgoldest = oldest; - found_old = 1; - } - if (oldest <= last) - break; - } - np = m2.mc_pg[m2.mc_top]; - leaf = NODEPTR(np, m2.mc_ki[m2.mc_top]); - if ((rc = mdb_node_read(&m2, leaf, &data)) != MDB_SUCCESS) - goto fail; - - idl = (MDB_ID *) data.mv_data; - i = idl[0]; - if (!mop) { - if (!(env->me_pghead = mop = mdb_midl_alloc(i))) { - rc = ENOMEM; - goto fail; - } - } else { - if ((rc = mdb_midl_need(&env->me_pghead, i)) != 0) - goto fail; - mop = env->me_pghead; - } - env->me_pglast = last; -#if (MDB_DEBUG) > 1 - DPRINTF(("IDL read txn %"Z"u root %"Z"u num %u", - last, txn->mt_dbs[FREE_DBI].md_root, i)); - for (j = i; j; j--) - DPRINTF(("IDL %"Z"u", idl[j])); -#endif - /* Merge in descending sorted order */ - mdb_midl_xmerge(mop, idl); - mop_len = mop[0]; - } - - /* Use new pages from the map when nothing suitable in the freeDB */ - i = 0; - pgno = txn->mt_next_pgno; - if (pgno + num >= env->me_maxpg) { - DPUTS("DB size maxed out"); - rc = MDB_MAP_FULL; - goto fail; - } - -search_done: - if (env->me_flags & MDB_WRITEMAP) { - np = (MDB_page *)(env->me_map + env->me_psize * pgno); - } else { - if (!(np = mdb_page_malloc(txn, num))) { - rc = ENOMEM; - goto fail; - } - } - if (i) { - mop[0] = mop_len -= num; - /* Move any stragglers down */ - for (j = i-num; j < mop_len; ) - mop[++j] = mop[++i]; - } else { - txn->mt_next_pgno = pgno + num; - } - np->mp_pgno = pgno; - mdb_page_dirty(txn, np); - *mp = np; - - return MDB_SUCCESS; - -fail: - txn->mt_flags |= MDB_TXN_ERROR; - return rc; -} - -/** Copy the used portions of a non-overflow page. - * @param[in] dst page to copy into - * @param[in] src page to copy from - * @param[in] psize size of a page - */ -static void -mdb_page_copy(MDB_page *dst, MDB_page *src, unsigned int psize) -{ - enum { Align = sizeof(pgno_t) }; - indx_t upper = src->mp_upper, lower = src->mp_lower, unused = upper-lower; - - /* If page isn't full, just copy the used portion. Adjust - * alignment so memcpy may copy words instead of bytes. - */ - if ((unused &= -Align) && !IS_LEAF2(src)) { - upper = (upper + PAGEBASE) & -Align; - memcpy(dst, src, (lower + PAGEBASE + (Align-1)) & -Align); - memcpy((pgno_t *)((char *)dst+upper), (pgno_t *)((char *)src+upper), - psize - upper); - } else { - memcpy(dst, src, psize - unused); - } -} - -/** Pull a page off the txn's spill list, if present. - * If a page being referenced was spilled to disk in this txn, bring - * it back and make it dirty/writable again. - * @param[in] txn the transaction handle. - * @param[in] mp the page being referenced. It must not be dirty. - * @param[out] ret the writable page, if any. ret is unchanged if - * mp wasn't spilled. - */ -static int -mdb_page_unspill(MDB_txn *txn, MDB_page *mp, MDB_page **ret) -{ - MDB_env *env = txn->mt_env; - const MDB_txn *tx2; - unsigned x; - pgno_t pgno = mp->mp_pgno, pn = pgno << 1; - - for (tx2 = txn; tx2; tx2=tx2->mt_parent) { - if (!tx2->mt_spill_pgs) - continue; - x = mdb_midl_search(tx2->mt_spill_pgs, pn); - if (x <= tx2->mt_spill_pgs[0] && tx2->mt_spill_pgs[x] == pn) { - MDB_page *np; - int num; - if (txn->mt_dirty_room == 0) - return MDB_TXN_FULL; - if (IS_OVERFLOW(mp)) - num = mp->mp_pages; - else - num = 1; - if (env->me_flags & MDB_WRITEMAP) { - np = mp; - } else { - np = mdb_page_malloc(txn, num); - if (!np) - return ENOMEM; - if (num > 1) - memcpy(np, mp, num * env->me_psize); - else - mdb_page_copy(np, mp, env->me_psize); - } - if (tx2 == txn) { - /* If in current txn, this page is no longer spilled. - * If it happens to be the last page, truncate the spill list. - * Otherwise mark it as deleted by setting the LSB. - */ - if (x == txn->mt_spill_pgs[0]) - txn->mt_spill_pgs[0]--; - else - txn->mt_spill_pgs[x] |= 1; - } /* otherwise, if belonging to a parent txn, the - * page remains spilled until child commits - */ - - mdb_page_dirty(txn, np); - np->mp_flags |= P_DIRTY; - *ret = np; - break; - } - } - return MDB_SUCCESS; -} - -/** Touch a page: make it dirty and re-insert into tree with updated pgno. - * Set #MDB_TXN_ERROR on failure. - * @param[in] mc cursor pointing to the page to be touched - * @return 0 on success, non-zero on failure. - */ -static int -mdb_page_touch(MDB_cursor *mc) -{ - MDB_page *mp = mc->mc_pg[mc->mc_top], *np; - MDB_txn *txn = mc->mc_txn; - MDB_cursor *m2, *m3; - pgno_t pgno; - int rc; - - if (!F_ISSET(MP_FLAGS(mp), P_DIRTY)) { - if (txn->mt_flags & MDB_TXN_SPILLS) { - np = NULL; - rc = mdb_page_unspill(txn, mp, &np); - if (rc) - goto fail; - if (np) - goto done; - } - if ((rc = mdb_midl_need(&txn->mt_free_pgs, 1)) || - (rc = mdb_page_alloc(mc, 1, &np))) - goto fail; - pgno = np->mp_pgno; - DPRINTF(("touched db %d page %"Z"u -> %"Z"u", DDBI(mc), - mp->mp_pgno, pgno)); - mdb_cassert(mc, mp->mp_pgno != pgno); - mdb_midl_xappend(txn->mt_free_pgs, mp->mp_pgno); - /* Update the parent page, if any, to point to the new page */ - if (mc->mc_top) { - MDB_page *parent = mc->mc_pg[mc->mc_top-1]; - MDB_node *node = NODEPTR(parent, mc->mc_ki[mc->mc_top-1]); - SETPGNO(node, pgno); - } else { - mc->mc_db->md_root = pgno; - } - } else if (txn->mt_parent && !IS_SUBP(mp)) { - MDB_ID2 mid, *dl = txn->mt_u.dirty_list; - pgno = mp->mp_pgno; - /* If txn has a parent, make sure the page is in our - * dirty list. - */ - if (dl[0].mid) { - unsigned x = mdb_mid2l_search(dl, pgno); - if (x <= dl[0].mid && dl[x].mid == pgno) { - if (mp != dl[x].mptr) { /* bad cursor? */ - mc->mc_flags &= ~(C_INITIALIZED|C_EOF); - txn->mt_flags |= MDB_TXN_ERROR; - return MDB_CORRUPTED; - } - return 0; - } - } - mdb_cassert(mc, dl[0].mid < MDB_IDL_UM_MAX); - /* No - copy it */ - np = mdb_page_malloc(txn, 1); - if (!np) - return ENOMEM; - mid.mid = pgno; - mid.mptr = np; - rc = mdb_mid2l_insert(dl, &mid); - mdb_cassert(mc, rc == 0); - } else { - return 0; - } - - mdb_page_copy(np, mp, txn->mt_env->me_psize); - np->mp_pgno = pgno; - np->mp_flags |= P_DIRTY; - -done: - /* Adjust cursors pointing to mp */ - mc->mc_pg[mc->mc_top] = np; - m2 = txn->mt_cursors[mc->mc_dbi]; - if (mc->mc_flags & C_SUB) { - for (; m2; m2=m2->mc_next) { - m3 = &m2->mc_xcursor->mx_cursor; - if (m3->mc_snum < mc->mc_snum) continue; - if (m3->mc_pg[mc->mc_top] == mp) - m3->mc_pg[mc->mc_top] = np; - } - } else { - for (; m2; m2=m2->mc_next) { - if (m2->mc_snum < mc->mc_snum) continue; - if (m2 == mc) continue; - if (m2->mc_pg[mc->mc_top] == mp) { - m2->mc_pg[mc->mc_top] = np; - if (IS_LEAF(np)) - XCURSOR_REFRESH(m2, mc->mc_top, np); - } - } - } - return 0; - -fail: - txn->mt_flags |= MDB_TXN_ERROR; - return rc; -} - -int -mdb_env_sync(MDB_env *env, int force) -{ - int rc = 0; - if (env->me_flags & MDB_RDONLY) - return EACCES; - if (force || !F_ISSET(env->me_flags, MDB_NOSYNC)) { - if (env->me_flags & MDB_WRITEMAP) { - int flags = ((env->me_flags & MDB_MAPASYNC) && !force) - ? MS_ASYNC : MS_SYNC; - if (MDB_MSYNC(env->me_map, env->me_mapsize, flags)) - rc = ErrCode(); -#ifdef _WIN32 - else if (flags == MS_SYNC && MDB_FDATASYNC(env->me_fd)) - rc = ErrCode(); -#endif - } else { -#ifdef BROKEN_FDATASYNC - if (env->me_flags & MDB_FSYNCONLY) { - if (fsync(env->me_fd)) - rc = ErrCode(); - } else -#endif - if (MDB_FDATASYNC(env->me_fd)) - rc = ErrCode(); - } - } - return rc; -} - -/** Back up parent txn's cursors, then grab the originals for tracking */ -static int -mdb_cursor_shadow(MDB_txn *src, MDB_txn *dst) -{ - MDB_cursor *mc, *bk; - MDB_xcursor *mx; - size_t size; - int i; - - for (i = src->mt_numdbs; --i >= 0; ) { - if ((mc = src->mt_cursors[i]) != NULL) { - size = sizeof(MDB_cursor); - if (mc->mc_xcursor) - size += sizeof(MDB_xcursor); - for (; mc; mc = bk->mc_next) { - bk = malloc(size); - if (!bk) - return ENOMEM; - *bk = *mc; - mc->mc_backup = bk; - mc->mc_db = &dst->mt_dbs[i]; - /* Kill pointers into src to reduce abuse: The - * user may not use mc until dst ends. But we need a valid - * txn pointer here for cursor fixups to keep working. - */ - mc->mc_txn = dst; - mc->mc_dbflag = &dst->mt_dbflags[i]; - if ((mx = mc->mc_xcursor) != NULL) { - *(MDB_xcursor *)(bk+1) = *mx; - mx->mx_cursor.mc_txn = dst; - } - mc->mc_next = dst->mt_cursors[i]; - dst->mt_cursors[i] = mc; - } - } - } - return MDB_SUCCESS; -} - -/** Close this write txn's cursors, give parent txn's cursors back to parent. - * @param[in] txn the transaction handle. - * @param[in] merge true to keep changes to parent cursors, false to revert. - * @return 0 on success, non-zero on failure. - */ -static void -mdb_cursors_close(MDB_txn *txn, unsigned merge) -{ - MDB_cursor **cursors = txn->mt_cursors, *mc, *next, *bk; - MDB_xcursor *mx; - int i; - - for (i = txn->mt_numdbs; --i >= 0; ) { - for (mc = cursors[i]; mc; mc = next) { - next = mc->mc_next; - if ((bk = mc->mc_backup) != NULL) { - if (merge) { - /* Commit changes to parent txn */ - mc->mc_next = bk->mc_next; - mc->mc_backup = bk->mc_backup; - mc->mc_txn = bk->mc_txn; - mc->mc_db = bk->mc_db; - mc->mc_dbflag = bk->mc_dbflag; - if ((mx = mc->mc_xcursor) != NULL) - mx->mx_cursor.mc_txn = bk->mc_txn; - } else { - /* Abort nested txn */ - *mc = *bk; - if ((mx = mc->mc_xcursor) != NULL) - *mx = *(MDB_xcursor *)(bk+1); - } - mc = bk; - } - /* Only malloced cursors are permanently tracked. */ - free(mc); - } - cursors[i] = NULL; - } -} - -#if !(MDB_PIDLOCK) /* Currently the same as defined(_WIN32) */ -enum Pidlock_op { - Pidset, Pidcheck -}; -#else -enum Pidlock_op { - Pidset = F_SETLK, Pidcheck = F_GETLK -}; -#endif - -/** Set or check a pid lock. Set returns 0 on success. - * Check returns 0 if the process is certainly dead, nonzero if it may - * be alive (the lock exists or an error happened so we do not know). - * - * On Windows Pidset is a no-op, we merely check for the existence - * of the process with the given pid. On POSIX we use a single byte - * lock on the lockfile, set at an offset equal to the pid. - */ -static int -mdb_reader_pid(MDB_env *env, enum Pidlock_op op, MDB_PID_T pid) -{ -#if !(MDB_PIDLOCK) /* Currently the same as defined(_WIN32) */ - int ret = 0; - HANDLE h; - if (op == Pidcheck) { - h = OpenProcess(env->me_pidquery, FALSE, pid); - /* No documented "no such process" code, but other program use this: */ - if (!h) - return ErrCode() != ERROR_INVALID_PARAMETER; - /* A process exists until all handles to it close. Has it exited? */ - ret = WaitForSingleObject(h, 0) != 0; - CloseHandle(h); - } - return ret; -#else - for (;;) { - int rc; - struct flock lock_info; - memset(&lock_info, 0, sizeof(lock_info)); - lock_info.l_type = F_WRLCK; - lock_info.l_whence = SEEK_SET; - lock_info.l_start = pid; - lock_info.l_len = 1; - if ((rc = fcntl(env->me_lfd, op, &lock_info)) == 0) { - if (op == F_GETLK && lock_info.l_type != F_UNLCK) - rc = -1; - } else if ((rc = ErrCode()) == EINTR) { - continue; - } - return rc; - } -#endif -} - -/** Common code for #mdb_txn_begin() and #mdb_txn_renew(). - * @param[in] txn the transaction handle to initialize - * @return 0 on success, non-zero on failure. - */ -static int -mdb_txn_renew0(MDB_txn *txn) -{ - MDB_env *env = txn->mt_env; - MDB_txninfo *ti = env->me_txns; - MDB_meta *meta; - unsigned int i, nr, flags = txn->mt_flags; - uint16_t x; - int rc, new_notls = 0; - - if ((flags &= MDB_TXN_RDONLY) != 0) { - if (!ti) { - meta = mdb_env_pick_meta(env); - txn->mt_txnid = meta->mm_txnid; - txn->mt_u.reader = NULL; - } else { - MDB_reader *r = (env->me_flags & MDB_NOTLS) ? txn->mt_u.reader : - pthread_getspecific(env->me_txkey); - if (r) { - if (r->mr_pid != env->me_pid || r->mr_txnid != (txnid_t)-1) - return MDB_BAD_RSLOT; - } else { - MDB_PID_T pid = env->me_pid; - MDB_THR_T tid = pthread_self(); - mdb_mutexref_t rmutex = env->me_rmutex; - - if (!env->me_live_reader) { - rc = mdb_reader_pid(env, Pidset, pid); - if (rc) - return rc; - env->me_live_reader = 1; - } - - if (LOCK_MUTEX(rc, env, rmutex)) - return rc; - nr = ti->mti_numreaders; - for (i=0; imti_readers[i].mr_pid == 0) - break; - if (i == env->me_maxreaders) { - UNLOCK_MUTEX(rmutex); - return MDB_READERS_FULL; - } - r = &ti->mti_readers[i]; - /* Claim the reader slot, carefully since other code - * uses the reader table un-mutexed: First reset the - * slot, next publish it in mti_numreaders. After - * that, it is safe for mdb_env_close() to touch it. - * When it will be closed, we can finally claim it. - */ - r->mr_pid = 0; - r->mr_txnid = (txnid_t)-1; - r->mr_tid = tid; - if (i == nr) - ti->mti_numreaders = ++nr; - env->me_close_readers = nr; - r->mr_pid = pid; - UNLOCK_MUTEX(rmutex); - - new_notls = (env->me_flags & MDB_NOTLS); - if (!new_notls && (rc=pthread_setspecific(env->me_txkey, r))) { - r->mr_pid = 0; - return rc; - } - } - do /* LY: Retry on a race, ITS#7970. */ - r->mr_txnid = ti->mti_txnid; - while(r->mr_txnid != ti->mti_txnid); - txn->mt_txnid = r->mr_txnid; - txn->mt_u.reader = r; - meta = env->me_metas[txn->mt_txnid & 1]; - } - - } else { - /* Not yet touching txn == env->me_txn0, it may be active */ - if (ti) { - if (LOCK_MUTEX(rc, env, env->me_wmutex)) - return rc; - txn->mt_txnid = ti->mti_txnid; - meta = env->me_metas[txn->mt_txnid & 1]; - } else { - meta = mdb_env_pick_meta(env); - txn->mt_txnid = meta->mm_txnid; - } - txn->mt_txnid++; -#if MDB_DEBUG - if (txn->mt_txnid == mdb_debug_start) - mdb_debug = 1; -#endif - txn->mt_child = NULL; - txn->mt_loose_pgs = NULL; - txn->mt_loose_count = 0; - txn->mt_dirty_room = MDB_IDL_UM_MAX; - txn->mt_u.dirty_list = env->me_dirty_list; - txn->mt_u.dirty_list[0].mid = 0; - txn->mt_free_pgs = env->me_free_pgs; - txn->mt_free_pgs[0] = 0; - txn->mt_spill_pgs = NULL; - env->me_txn = txn; - memcpy(txn->mt_dbiseqs, env->me_dbiseqs, env->me_maxdbs * sizeof(unsigned int)); - } - - /* Copy the DB info and flags */ - memcpy(txn->mt_dbs, meta->mm_dbs, CORE_DBS * sizeof(MDB_db)); - - /* Moved to here to avoid a data race in read TXNs */ - txn->mt_next_pgno = meta->mm_last_pg+1; - - txn->mt_flags = flags; - - /* Setup db info */ - txn->mt_numdbs = env->me_numdbs; - for (i=CORE_DBS; imt_numdbs; i++) { - x = env->me_dbflags[i]; - txn->mt_dbs[i].md_flags = x & PERSISTENT_FLAGS; - txn->mt_dbflags[i] = (x & MDB_VALID) ? DB_VALID|DB_USRVALID|DB_STALE : 0; - } - txn->mt_dbflags[MAIN_DBI] = DB_VALID|DB_USRVALID; - txn->mt_dbflags[FREE_DBI] = DB_VALID; - - if (env->me_flags & MDB_FATAL_ERROR) { - DPUTS("environment had fatal error, must shutdown!"); - rc = MDB_PANIC; - } else if (env->me_maxpg < txn->mt_next_pgno) { - rc = MDB_MAP_RESIZED; - } else { - return MDB_SUCCESS; - } - mdb_txn_end(txn, new_notls /*0 or MDB_END_SLOT*/ | MDB_END_FAIL_BEGIN); - return rc; -} - -int -mdb_txn_renew(MDB_txn *txn) -{ - int rc; - - if (!txn || !F_ISSET(txn->mt_flags, MDB_TXN_RDONLY|MDB_TXN_FINISHED)) - return EINVAL; - - rc = mdb_txn_renew0(txn); - if (rc == MDB_SUCCESS) { - DPRINTF(("renew txn %"Z"u%c %p on mdbenv %p, root page %"Z"u", - txn->mt_txnid, (txn->mt_flags & MDB_TXN_RDONLY) ? 'r' : 'w', - (void *)txn, (void *)txn->mt_env, txn->mt_dbs[MAIN_DBI].md_root)); - } - return rc; -} - -int -mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **ret) -{ - MDB_txn *txn; - MDB_ntxn *ntxn; - int rc, size, tsize; - - flags &= MDB_TXN_BEGIN_FLAGS; - flags |= env->me_flags & MDB_WRITEMAP; - - if (env->me_flags & MDB_RDONLY & ~flags) /* write txn in RDONLY env */ - return EACCES; - - if (parent) { - /* Nested transactions: Max 1 child, write txns only, no writemap */ - flags |= parent->mt_flags; - if (flags & (MDB_RDONLY|MDB_WRITEMAP|MDB_TXN_BLOCKED)) { - return (parent->mt_flags & MDB_TXN_RDONLY) ? EINVAL : MDB_BAD_TXN; - } - /* Child txns save MDB_pgstate and use own copy of cursors */ - size = env->me_maxdbs * (sizeof(MDB_db)+sizeof(MDB_cursor *)+1); - size += tsize = sizeof(MDB_ntxn); - } else if (flags & MDB_RDONLY) { - size = env->me_maxdbs * (sizeof(MDB_db)+1); - size += tsize = sizeof(MDB_txn); - } else { - /* Reuse preallocated write txn. However, do not touch it until - * mdb_txn_renew0() succeeds, since it currently may be active. - */ - txn = env->me_txn0; - goto renew; - } - if ((txn = calloc(1, size)) == NULL) { - DPRINTF(("calloc: %s", strerror(errno))); - return ENOMEM; - } - txn->mt_dbxs = env->me_dbxs; /* static */ - txn->mt_dbs = (MDB_db *) ((char *)txn + tsize); - txn->mt_dbflags = (unsigned char *)txn + size - env->me_maxdbs; - txn->mt_flags = flags; - txn->mt_env = env; - - if (parent) { - unsigned int i; - txn->mt_cursors = (MDB_cursor **)(txn->mt_dbs + env->me_maxdbs); - txn->mt_dbiseqs = parent->mt_dbiseqs; - txn->mt_u.dirty_list = malloc(sizeof(MDB_ID2)*MDB_IDL_UM_SIZE); - if (!txn->mt_u.dirty_list || - !(txn->mt_free_pgs = mdb_midl_alloc(MDB_IDL_UM_MAX))) - { - free(txn->mt_u.dirty_list); - free(txn); - return ENOMEM; - } - txn->mt_txnid = parent->mt_txnid; - txn->mt_dirty_room = parent->mt_dirty_room; - txn->mt_u.dirty_list[0].mid = 0; - txn->mt_spill_pgs = NULL; - txn->mt_next_pgno = parent->mt_next_pgno; - parent->mt_flags |= MDB_TXN_HAS_CHILD; - parent->mt_child = txn; - txn->mt_parent = parent; - txn->mt_numdbs = parent->mt_numdbs; - memcpy(txn->mt_dbs, parent->mt_dbs, txn->mt_numdbs * sizeof(MDB_db)); - /* Copy parent's mt_dbflags, but clear DB_NEW */ - for (i=0; imt_numdbs; i++) - txn->mt_dbflags[i] = parent->mt_dbflags[i] & ~DB_NEW; - rc = 0; - ntxn = (MDB_ntxn *)txn; - ntxn->mnt_pgstate = env->me_pgstate; /* save parent me_pghead & co */ - if (env->me_pghead) { - size = MDB_IDL_SIZEOF(env->me_pghead); - env->me_pghead = mdb_midl_alloc(env->me_pghead[0]); - if (env->me_pghead) - memcpy(env->me_pghead, ntxn->mnt_pgstate.mf_pghead, size); - else - rc = ENOMEM; - } - if (!rc) - rc = mdb_cursor_shadow(parent, txn); - if (rc) - mdb_txn_end(txn, MDB_END_FAIL_BEGINCHILD); - } else { /* MDB_RDONLY */ - txn->mt_dbiseqs = env->me_dbiseqs; -renew: - rc = mdb_txn_renew0(txn); - } - if (rc) { - if (txn != env->me_txn0) - free(txn); - } else { - txn->mt_flags |= flags; /* could not change txn=me_txn0 earlier */ - *ret = txn; - DPRINTF(("begin txn %"Z"u%c %p on mdbenv %p, root page %"Z"u", - txn->mt_txnid, (flags & MDB_RDONLY) ? 'r' : 'w', - (void *) txn, (void *) env, txn->mt_dbs[MAIN_DBI].md_root)); - } - - return rc; -} - -MDB_env * -mdb_txn_env(MDB_txn *txn) -{ - if(!txn) return NULL; - return txn->mt_env; -} - -size_t -mdb_txn_id(MDB_txn *txn) -{ - if(!txn) return 0; - return txn->mt_txnid; -} - -/** Export or close DBI handles opened in this txn. */ -static void -mdb_dbis_update(MDB_txn *txn, int keep) -{ - int i; - MDB_dbi n = txn->mt_numdbs; - MDB_env *env = txn->mt_env; - unsigned char *tdbflags = txn->mt_dbflags; - - for (i = n; --i >= CORE_DBS;) { - if (tdbflags[i] & DB_NEW) { - if (keep) { - env->me_dbflags[i] = txn->mt_dbs[i].md_flags | MDB_VALID; - } else { - char *ptr = env->me_dbxs[i].md_name.mv_data; - if (ptr) { - env->me_dbxs[i].md_name.mv_data = NULL; - env->me_dbxs[i].md_name.mv_size = 0; - env->me_dbflags[i] = 0; - env->me_dbiseqs[i]++; - free(ptr); - } - } - } - } - if (keep && env->me_numdbs < n) - env->me_numdbs = n; -} - -/** End a transaction, except successful commit of a nested transaction. - * May be called twice for readonly txns: First reset it, then abort. - * @param[in] txn the transaction handle to end - * @param[in] mode why and how to end the transaction - */ -static void -mdb_txn_end(MDB_txn *txn, unsigned mode) -{ - MDB_env *env = txn->mt_env; -#if MDB_DEBUG - static const char *const names[] = MDB_END_NAMES; -#endif - - /* Export or close DBI handles opened in this txn */ - mdb_dbis_update(txn, mode & MDB_END_UPDATE); - - DPRINTF(("%s txn %"Z"u%c %p on mdbenv %p, root page %"Z"u", - names[mode & MDB_END_OPMASK], - txn->mt_txnid, (txn->mt_flags & MDB_TXN_RDONLY) ? 'r' : 'w', - (void *) txn, (void *)env, txn->mt_dbs[MAIN_DBI].md_root)); - - if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) { - if (txn->mt_u.reader) { - txn->mt_u.reader->mr_txnid = (txnid_t)-1; - if (!(env->me_flags & MDB_NOTLS)) { - txn->mt_u.reader = NULL; /* txn does not own reader */ - } else if (mode & MDB_END_SLOT) { - txn->mt_u.reader->mr_pid = 0; - txn->mt_u.reader = NULL; - } /* else txn owns the slot until it does MDB_END_SLOT */ - } - txn->mt_numdbs = 0; /* prevent further DBI activity */ - txn->mt_flags |= MDB_TXN_FINISHED; - - } else if (!F_ISSET(txn->mt_flags, MDB_TXN_FINISHED)) { - pgno_t *pghead = env->me_pghead; - - if (!(mode & MDB_END_UPDATE)) /* !(already closed cursors) */ - mdb_cursors_close(txn, 0); - if (!(env->me_flags & MDB_WRITEMAP)) { - mdb_dlist_free(txn); - } - - txn->mt_numdbs = 0; - txn->mt_flags = MDB_TXN_FINISHED; - - if (!txn->mt_parent) { - mdb_midl_shrink(&txn->mt_free_pgs); - env->me_free_pgs = txn->mt_free_pgs; - /* me_pgstate: */ - env->me_pghead = NULL; - env->me_pglast = 0; - - env->me_txn = NULL; - mode = 0; /* txn == env->me_txn0, do not free() it */ - - /* The writer mutex was locked in mdb_txn_begin. */ - if (env->me_txns) - UNLOCK_MUTEX(env->me_wmutex); - } else { - txn->mt_parent->mt_child = NULL; - txn->mt_parent->mt_flags &= ~MDB_TXN_HAS_CHILD; - env->me_pgstate = ((MDB_ntxn *)txn)->mnt_pgstate; - mdb_midl_free(txn->mt_free_pgs); - free(txn->mt_u.dirty_list); - } - mdb_midl_free(txn->mt_spill_pgs); - - mdb_midl_free(pghead); - } - - if (mode & MDB_END_FREE) - free(txn); -} - -void -mdb_txn_reset(MDB_txn *txn) -{ - if (txn == NULL) - return; - - /* This call is only valid for read-only txns */ - if (!(txn->mt_flags & MDB_TXN_RDONLY)) - return; - - mdb_txn_end(txn, MDB_END_RESET); -} - -void -mdb_txn_abort(MDB_txn *txn) -{ - if (txn == NULL) - return; - - if (txn->mt_child) - mdb_txn_abort(txn->mt_child); - - mdb_txn_end(txn, MDB_END_ABORT|MDB_END_SLOT|MDB_END_FREE); -} - -/** Save the freelist as of this transaction to the freeDB. - * This changes the freelist. Keep trying until it stabilizes. - */ -static int -mdb_freelist_save(MDB_txn *txn) -{ - /* env->me_pghead[] can grow and shrink during this call. - * env->me_pglast and txn->mt_free_pgs[] can only grow. - * Page numbers cannot disappear from txn->mt_free_pgs[]. - */ - MDB_cursor mc; - MDB_env *env = txn->mt_env; - int rc, maxfree_1pg = env->me_maxfree_1pg, more = 1; - txnid_t pglast = 0, head_id = 0; - pgno_t freecnt = 0, *free_pgs, *mop; - ssize_t head_room = 0, total_room = 0, mop_len, clean_limit; - - mdb_cursor_init(&mc, txn, FREE_DBI, NULL); - - if (env->me_pghead) { - /* Make sure first page of freeDB is touched and on freelist */ - rc = mdb_page_search(&mc, NULL, MDB_PS_FIRST|MDB_PS_MODIFY); - if (rc && rc != MDB_NOTFOUND) - return rc; - } - - if (!env->me_pghead && txn->mt_loose_pgs) { - /* Put loose page numbers in mt_free_pgs, since - * we may be unable to return them to me_pghead. - */ - MDB_page *mp = txn->mt_loose_pgs; - MDB_ID2 *dl = txn->mt_u.dirty_list; - unsigned x; - if ((rc = mdb_midl_need(&txn->mt_free_pgs, txn->mt_loose_count)) != 0) - return rc; - for (; mp; mp = NEXT_LOOSE_PAGE(mp)) { - mdb_midl_xappend(txn->mt_free_pgs, mp->mp_pgno); - /* must also remove from dirty list */ - if (txn->mt_flags & MDB_TXN_WRITEMAP) { - for (x=1; x<=dl[0].mid; x++) - if (dl[x].mid == mp->mp_pgno) - break; - mdb_tassert(txn, x <= dl[0].mid); - } else { - x = mdb_mid2l_search(dl, mp->mp_pgno); - mdb_tassert(txn, dl[x].mid == mp->mp_pgno); - mdb_dpage_free(env, mp); - } - dl[x].mptr = NULL; - } - { - /* squash freed slots out of the dirty list */ - unsigned y; - for (y=1; dl[y].mptr && y <= dl[0].mid; y++); - if (y <= dl[0].mid) { - for(x=y, y++;;) { - while (!dl[y].mptr && y <= dl[0].mid) y++; - if (y > dl[0].mid) break; - dl[x++] = dl[y++]; - } - dl[0].mid = x-1; - } else { - /* all slots freed */ - dl[0].mid = 0; - } - } - txn->mt_loose_pgs = NULL; - txn->mt_loose_count = 0; - } - - /* MDB_RESERVE cancels meminit in ovpage malloc (when no WRITEMAP) */ - clean_limit = (env->me_flags & (MDB_NOMEMINIT|MDB_WRITEMAP)) - ? SSIZE_MAX : maxfree_1pg; - - for (;;) { - /* Come back here after each Put() in case freelist changed */ - MDB_val key, data; - pgno_t *pgs; - ssize_t j; - - /* If using records from freeDB which we have not yet - * deleted, delete them and any we reserved for me_pghead. - */ - while (pglast < env->me_pglast) { - rc = mdb_cursor_first(&mc, &key, NULL); - if (rc) - return rc; - pglast = head_id = *(txnid_t *)key.mv_data; - total_room = head_room = 0; - mdb_tassert(txn, pglast <= env->me_pglast); - rc = mdb_cursor_del(&mc, 0); - if (rc) - return rc; - } - - /* Save the IDL of pages freed by this txn, to a single record */ - if (freecnt < txn->mt_free_pgs[0]) { - if (!freecnt) { - /* Make sure last page of freeDB is touched and on freelist */ - rc = mdb_page_search(&mc, NULL, MDB_PS_LAST|MDB_PS_MODIFY); - if (rc && rc != MDB_NOTFOUND) - return rc; - } - free_pgs = txn->mt_free_pgs; - /* Write to last page of freeDB */ - key.mv_size = sizeof(txn->mt_txnid); - key.mv_data = &txn->mt_txnid; - do { - freecnt = free_pgs[0]; - data.mv_size = MDB_IDL_SIZEOF(free_pgs); - rc = mdb_cursor_put(&mc, &key, &data, MDB_RESERVE); - if (rc) - return rc; - /* Retry if mt_free_pgs[] grew during the Put() */ - free_pgs = txn->mt_free_pgs; - } while (freecnt < free_pgs[0]); - mdb_midl_sort(free_pgs); - memcpy(data.mv_data, free_pgs, data.mv_size); -#if (MDB_DEBUG) > 1 - { - unsigned int i = free_pgs[0]; - DPRINTF(("IDL write txn %"Z"u root %"Z"u num %u", - txn->mt_txnid, txn->mt_dbs[FREE_DBI].md_root, i)); - for (; i; i--) - DPRINTF(("IDL %"Z"u", free_pgs[i])); - } -#endif - continue; - } - - mop = env->me_pghead; - mop_len = (mop ? mop[0] : 0) + txn->mt_loose_count; - - /* Reserve records for me_pghead[]. Split it if multi-page, - * to avoid searching freeDB for a page range. Use keys in - * range [1,me_pglast]: Smaller than txnid of oldest reader. - */ - if (total_room >= mop_len) { - if (total_room == mop_len || --more < 0) - break; - } else if (head_room >= maxfree_1pg && head_id > 1) { - /* Keep current record (overflow page), add a new one */ - head_id--; - head_room = 0; - } - /* (Re)write {key = head_id, IDL length = head_room} */ - total_room -= head_room; - head_room = mop_len - total_room; - if (head_room > maxfree_1pg && head_id > 1) { - /* Overflow multi-page for part of me_pghead */ - head_room /= head_id; /* amortize page sizes */ - head_room += maxfree_1pg - head_room % (maxfree_1pg + 1); - } else if (head_room < 0) { - /* Rare case, not bothering to delete this record */ - head_room = 0; - } - key.mv_size = sizeof(head_id); - key.mv_data = &head_id; - data.mv_size = (head_room + 1) * sizeof(pgno_t); - rc = mdb_cursor_put(&mc, &key, &data, MDB_RESERVE); - if (rc) - return rc; - /* IDL is initially empty, zero out at least the length */ - pgs = (pgno_t *)data.mv_data; - j = head_room > clean_limit ? head_room : 0; - do { - pgs[j] = 0; - } while (--j >= 0); - total_room += head_room; - } - - /* Return loose page numbers to me_pghead, though usually none are - * left at this point. The pages themselves remain in dirty_list. - */ - if (txn->mt_loose_pgs) { - MDB_page *mp = txn->mt_loose_pgs; - unsigned count = txn->mt_loose_count; - MDB_IDL loose; - /* Room for loose pages + temp IDL with same */ - if ((rc = mdb_midl_need(&env->me_pghead, 2*count+1)) != 0) - return rc; - mop = env->me_pghead; - loose = mop + MDB_IDL_ALLOCLEN(mop) - count; - for (count = 0; mp; mp = NEXT_LOOSE_PAGE(mp)) - loose[ ++count ] = mp->mp_pgno; - loose[0] = count; - mdb_midl_sort(loose); - mdb_midl_xmerge(mop, loose); - txn->mt_loose_pgs = NULL; - txn->mt_loose_count = 0; - mop_len = mop[0]; - } - - /* Fill in the reserved me_pghead records */ - rc = MDB_SUCCESS; - if (mop_len) { - MDB_val key, data; - - mop += mop_len; - rc = mdb_cursor_first(&mc, &key, &data); - for (; !rc; rc = mdb_cursor_next(&mc, &key, &data, MDB_NEXT)) { - txnid_t id = *(txnid_t *)key.mv_data; - ssize_t len = (ssize_t)(data.mv_size / sizeof(MDB_ID)) - 1; - MDB_ID save; - - mdb_tassert(txn, len >= 0 && id <= env->me_pglast); - key.mv_data = &id; - if (len > mop_len) { - len = mop_len; - data.mv_size = (len + 1) * sizeof(MDB_ID); - } - data.mv_data = mop -= len; - save = mop[0]; - mop[0] = len; - rc = mdb_cursor_put(&mc, &key, &data, MDB_CURRENT); - mop[0] = save; - if (rc || !(mop_len -= len)) - break; - } - } - return rc; -} - -/** Flush (some) dirty pages to the map, after clearing their dirty flag. - * @param[in] txn the transaction that's being committed - * @param[in] keep number of initial pages in dirty_list to keep dirty. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_page_flush(MDB_txn *txn, int keep) -{ - MDB_env *env = txn->mt_env; - MDB_ID2L dl = txn->mt_u.dirty_list; - unsigned psize = env->me_psize, j; - int i, pagecount = dl[0].mid, rc; - size_t size = 0, pos = 0; - pgno_t pgno = 0; - MDB_page *dp = NULL; -#ifdef _WIN32 - OVERLAPPED ov; -#else - struct iovec iov[MDB_COMMIT_PAGES]; - ssize_t wpos = 0, wsize = 0, wres; - size_t next_pos = 1; /* impossible pos, so pos != next_pos */ - int n = 0; -#endif - - j = i = keep; - - if (env->me_flags & MDB_WRITEMAP) { - /* Clear dirty flags */ - while (++i <= pagecount) { - dp = dl[i].mptr; - /* Don't flush this page yet */ - if (dp->mp_flags & (P_LOOSE|P_KEEP)) { - dp->mp_flags &= ~P_KEEP; - dl[++j] = dl[i]; - continue; - } - dp->mp_flags &= ~P_DIRTY; - } - goto done; - } - - /* Write the pages */ - for (;;) { - if (++i <= pagecount) { - dp = dl[i].mptr; - /* Don't flush this page yet */ - if (dp->mp_flags & (P_LOOSE|P_KEEP)) { - dp->mp_flags &= ~P_KEEP; - dl[i].mid = 0; - continue; - } - pgno = dl[i].mid; - /* clear dirty flag */ - dp->mp_flags &= ~P_DIRTY; - pos = pgno * psize; - size = psize; - if (IS_OVERFLOW(dp)) size *= dp->mp_pages; - } -#ifdef _WIN32 - else break; - - /* Windows actually supports scatter/gather I/O, but only on - * unbuffered file handles. Since we're relying on the OS page - * cache for all our data, that's self-defeating. So we just - * write pages one at a time. We use the ov structure to set - * the write offset, to at least save the overhead of a Seek - * system call. - */ - DPRINTF(("committing page %"Z"u", pgno)); - memset(&ov, 0, sizeof(ov)); - ov.Offset = pos & 0xffffffff; - ov.OffsetHigh = pos >> 16 >> 16; - if (!WriteFile(env->me_fd, dp, size, NULL, &ov)) { - rc = ErrCode(); - DPRINTF(("WriteFile: %d", rc)); - return rc; - } -#else - /* Write up to MDB_COMMIT_PAGES dirty pages at a time. */ - if (pos!=next_pos || n==MDB_COMMIT_PAGES || wsize+size>MAX_WRITE) { - if (n) { -retry_write: - /* Write previous page(s) */ -#ifdef MDB_USE_PWRITEV - wres = pwritev(env->me_fd, iov, n, wpos); -#else - if (n == 1) { - wres = pwrite(env->me_fd, iov[0].iov_base, wsize, wpos); - } else { -retry_seek: - if (lseek(env->me_fd, wpos, SEEK_SET) == -1) { - rc = ErrCode(); - if (rc == EINTR) - goto retry_seek; - DPRINTF(("lseek: %s", strerror(rc))); - return rc; - } - wres = writev(env->me_fd, iov, n); - } -#endif - if (wres != wsize) { - if (wres < 0) { - rc = ErrCode(); - if (rc == EINTR) - goto retry_write; - DPRINTF(("Write error: %s", strerror(rc))); - } else { - rc = EIO; /* TODO: Use which error code? */ - DPUTS("short write, filesystem full?"); - } - return rc; - } - n = 0; - } - if (i > pagecount) - break; - wpos = pos; - wsize = 0; - } - DPRINTF(("committing page %"Z"u", pgno)); - next_pos = pos + size; - iov[n].iov_len = size; - iov[n].iov_base = (char *)dp; - wsize += size; - n++; -#endif /* _WIN32 */ - } - - /* MIPS has cache coherency issues, this is a no-op everywhere else - * Note: for any size >= on-chip cache size, entire on-chip cache is - * flushed. - */ - CACHEFLUSH(env->me_map, txn->mt_next_pgno * env->me_psize, DCACHE); - - for (i = keep; ++i <= pagecount; ) { - dp = dl[i].mptr; - /* This is a page we skipped above */ - if (!dl[i].mid) { - dl[++j] = dl[i]; - dl[j].mid = dp->mp_pgno; - continue; - } - mdb_dpage_free(env, dp); - } - -done: - i--; - txn->mt_dirty_room += i - j; - dl[0].mid = j; - return MDB_SUCCESS; -} - -int -mdb_txn_commit(MDB_txn *txn) -{ - int rc; - unsigned int i, end_mode; - MDB_env *env; - - if (txn == NULL) - return EINVAL; - - /* mdb_txn_end() mode for a commit which writes nothing */ - end_mode = MDB_END_EMPTY_COMMIT|MDB_END_UPDATE|MDB_END_SLOT|MDB_END_FREE; - - if (txn->mt_child) { - rc = mdb_txn_commit(txn->mt_child); - if (rc) - goto fail; - } - - env = txn->mt_env; - - if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) { - goto done; - } - - if (txn->mt_flags & (MDB_TXN_FINISHED|MDB_TXN_ERROR)) { - DPUTS("txn has failed/finished, can't commit"); - if (txn->mt_parent) - txn->mt_parent->mt_flags |= MDB_TXN_ERROR; - rc = MDB_BAD_TXN; - goto fail; - } - - if (txn->mt_parent) { - MDB_txn *parent = txn->mt_parent; - MDB_page **lp; - MDB_ID2L dst, src; - MDB_IDL pspill; - unsigned x, y, len, ps_len; - - /* Append our free list to parent's */ - rc = mdb_midl_append_list(&parent->mt_free_pgs, txn->mt_free_pgs); - if (rc) - goto fail; - mdb_midl_free(txn->mt_free_pgs); - /* Failures after this must either undo the changes - * to the parent or set MDB_TXN_ERROR in the parent. - */ - - parent->mt_next_pgno = txn->mt_next_pgno; - parent->mt_flags = txn->mt_flags; - - /* Merge our cursors into parent's and close them */ - mdb_cursors_close(txn, 1); - - /* Update parent's DB table. */ - memcpy(parent->mt_dbs, txn->mt_dbs, txn->mt_numdbs * sizeof(MDB_db)); - parent->mt_numdbs = txn->mt_numdbs; - parent->mt_dbflags[FREE_DBI] = txn->mt_dbflags[FREE_DBI]; - parent->mt_dbflags[MAIN_DBI] = txn->mt_dbflags[MAIN_DBI]; - for (i=CORE_DBS; imt_numdbs; i++) { - /* preserve parent's DB_NEW status */ - x = parent->mt_dbflags[i] & DB_NEW; - parent->mt_dbflags[i] = txn->mt_dbflags[i] | x; - } - - dst = parent->mt_u.dirty_list; - src = txn->mt_u.dirty_list; - /* Remove anything in our dirty list from parent's spill list */ - if ((pspill = parent->mt_spill_pgs) && (ps_len = pspill[0])) { - x = y = ps_len; - pspill[0] = (pgno_t)-1; - /* Mark our dirty pages as deleted in parent spill list */ - for (i=0, len=src[0].mid; ++i <= len; ) { - MDB_ID pn = src[i].mid << 1; - while (pn > pspill[x]) - x--; - if (pn == pspill[x]) { - pspill[x] = 1; - y = --x; - } - } - /* Squash deleted pagenums if we deleted any */ - for (x=y; ++x <= ps_len; ) - if (!(pspill[x] & 1)) - pspill[++y] = pspill[x]; - pspill[0] = y; - } - - /* Remove anything in our spill list from parent's dirty list */ - if (txn->mt_spill_pgs && txn->mt_spill_pgs[0]) { - for (i=1; i<=txn->mt_spill_pgs[0]; i++) { - MDB_ID pn = txn->mt_spill_pgs[i]; - if (pn & 1) - continue; /* deleted spillpg */ - pn >>= 1; - y = mdb_mid2l_search(dst, pn); - if (y <= dst[0].mid && dst[y].mid == pn) { - free(dst[y].mptr); - while (y < dst[0].mid) { - dst[y] = dst[y+1]; - y++; - } - dst[0].mid--; - } - } - } - - /* Find len = length of merging our dirty list with parent's */ - x = dst[0].mid; - dst[0].mid = 0; /* simplify loops */ - if (parent->mt_parent) { - len = x + src[0].mid; - y = mdb_mid2l_search(src, dst[x].mid + 1) - 1; - for (i = x; y && i; y--) { - pgno_t yp = src[y].mid; - while (yp < dst[i].mid) - i--; - if (yp == dst[i].mid) { - i--; - len--; - } - } - } else { /* Simplify the above for single-ancestor case */ - len = MDB_IDL_UM_MAX - txn->mt_dirty_room; - } - /* Merge our dirty list with parent's */ - y = src[0].mid; - for (i = len; y; dst[i--] = src[y--]) { - pgno_t yp = src[y].mid; - while (yp < dst[x].mid) - dst[i--] = dst[x--]; - if (yp == dst[x].mid) - free(dst[x--].mptr); - } - mdb_tassert(txn, i == x); - dst[0].mid = len; - free(txn->mt_u.dirty_list); - parent->mt_dirty_room = txn->mt_dirty_room; - if (txn->mt_spill_pgs) { - if (parent->mt_spill_pgs) { - /* TODO: Prevent failure here, so parent does not fail */ - rc = mdb_midl_append_list(&parent->mt_spill_pgs, txn->mt_spill_pgs); - if (rc) - parent->mt_flags |= MDB_TXN_ERROR; - mdb_midl_free(txn->mt_spill_pgs); - mdb_midl_sort(parent->mt_spill_pgs); - } else { - parent->mt_spill_pgs = txn->mt_spill_pgs; - } - } - - /* Append our loose page list to parent's */ - for (lp = &parent->mt_loose_pgs; *lp; lp = &NEXT_LOOSE_PAGE(*lp)) - ; - *lp = txn->mt_loose_pgs; - parent->mt_loose_count += txn->mt_loose_count; - - parent->mt_child = NULL; - mdb_midl_free(((MDB_ntxn *)txn)->mnt_pgstate.mf_pghead); - free(txn); - return rc; - } - - if (txn != env->me_txn) { - DPUTS("attempt to commit unknown transaction"); - rc = EINVAL; - goto fail; - } - - mdb_cursors_close(txn, 0); - - if (!txn->mt_u.dirty_list[0].mid && - !(txn->mt_flags & (MDB_TXN_DIRTY|MDB_TXN_SPILLS))) - goto done; - - DPRINTF(("committing txn %"Z"u %p on mdbenv %p, root page %"Z"u", - txn->mt_txnid, (void*)txn, (void*)env, txn->mt_dbs[MAIN_DBI].md_root)); - - /* Update DB root pointers */ - if (txn->mt_numdbs > CORE_DBS) { - MDB_cursor mc; - MDB_dbi i; - MDB_val data; - data.mv_size = sizeof(MDB_db); - - mdb_cursor_init(&mc, txn, MAIN_DBI, NULL); - for (i = CORE_DBS; i < txn->mt_numdbs; i++) { - if (txn->mt_dbflags[i] & DB_DIRTY) { - if (TXN_DBI_CHANGED(txn, i)) { - rc = MDB_BAD_DBI; - goto fail; - } - data.mv_data = &txn->mt_dbs[i]; - rc = mdb_cursor_put(&mc, &txn->mt_dbxs[i].md_name, &data, - F_SUBDATA); - if (rc) - goto fail; - } - } - } - - rc = mdb_freelist_save(txn); - if (rc) - goto fail; - - mdb_midl_free(env->me_pghead); - env->me_pghead = NULL; - mdb_midl_shrink(&txn->mt_free_pgs); - -#if (MDB_DEBUG) > 2 - mdb_audit(txn); -#endif - - if ((rc = mdb_page_flush(txn, 0)) || - (rc = mdb_env_sync(env, 0)) || - (rc = mdb_env_write_meta(txn))) - goto fail; - end_mode = MDB_END_COMMITTED|MDB_END_UPDATE; - -done: - mdb_txn_end(txn, end_mode); - return MDB_SUCCESS; - -fail: - mdb_txn_abort(txn); - return rc; -} - -/** Read the environment parameters of a DB environment before - * mapping it into memory. - * @param[in] env the environment handle - * @param[out] meta address of where to store the meta information - * @return 0 on success, non-zero on failure. - */ -static int ESECT -mdb_env_read_header(MDB_env *env, MDB_meta *meta) -{ - MDB_metabuf pbuf; - MDB_page *p; - MDB_meta *m; - int i, rc, off; - enum { Size = sizeof(pbuf) }; - - /* We don't know the page size yet, so use a minimum value. - * Read both meta pages so we can use the latest one. - */ - - for (i=off=0; imm_psize) { -#ifdef _WIN32 - DWORD len; - OVERLAPPED ov; - memset(&ov, 0, sizeof(ov)); - ov.Offset = off; - rc = ReadFile(env->me_fd, &pbuf, Size, &len, &ov) ? (int)len : -1; - if (rc == -1 && ErrCode() == ERROR_HANDLE_EOF) - rc = 0; -#else - rc = pread(env->me_fd, &pbuf, Size, off); -#endif - if (rc != Size) { - if (rc == 0 && off == 0) - return ENOENT; - rc = rc < 0 ? (int) ErrCode() : MDB_INVALID; - DPRINTF(("read: %s", mdb_strerror(rc))); - return rc; - } - - p = (MDB_page *)&pbuf; - - if (!F_ISSET(p->mp_flags, P_META)) { - DPRINTF(("page %"Z"u not a meta page", p->mp_pgno)); - return MDB_INVALID; - } - - m = METADATA(p); - if (m->mm_magic != MDB_MAGIC) { - DPUTS("meta has invalid magic"); - return MDB_INVALID; - } - - if (m->mm_version != MDB_DATA_VERSION) { - DPRINTF(("database is version %u, expected version %u", - m->mm_version, MDB_DATA_VERSION)); - return MDB_VERSION_MISMATCH; - } - - if (off == 0 || m->mm_txnid > meta->mm_txnid) - *meta = *m; - } - return 0; -} - -/** Fill in most of the zeroed #MDB_meta for an empty database environment */ -static void ESECT -mdb_env_init_meta0(MDB_env *env, MDB_meta *meta) -{ - meta->mm_magic = MDB_MAGIC; - meta->mm_version = MDB_DATA_VERSION; - meta->mm_mapsize = env->me_mapsize; - meta->mm_psize = env->me_psize; - meta->mm_last_pg = NUM_METAS-1; - meta->mm_flags = env->me_flags & 0xffff; - meta->mm_flags |= MDB_INTEGERKEY; /* this is mm_dbs[FREE_DBI].md_flags */ - meta->mm_dbs[FREE_DBI].md_root = P_INVALID; - meta->mm_dbs[MAIN_DBI].md_root = P_INVALID; -} - -/** Write the environment parameters of a freshly created DB environment. - * @param[in] env the environment handle - * @param[in] meta the #MDB_meta to write - * @return 0 on success, non-zero on failure. - */ -static int ESECT -mdb_env_init_meta(MDB_env *env, MDB_meta *meta) -{ - MDB_page *p, *q; - int rc; - unsigned int psize; -#ifdef _WIN32 - DWORD len; - OVERLAPPED ov; - memset(&ov, 0, sizeof(ov)); -#define DO_PWRITE(rc, fd, ptr, size, len, pos) do { \ - ov.Offset = pos; \ - rc = WriteFile(fd, ptr, size, &len, &ov); } while(0) -#else - int len; -#define DO_PWRITE(rc, fd, ptr, size, len, pos) do { \ - len = pwrite(fd, ptr, size, pos); \ - if (len == -1 && ErrCode() == EINTR) continue; \ - rc = (len >= 0); break; } while(1) -#endif - - DPUTS("writing new meta page"); - - psize = env->me_psize; - - p = calloc(NUM_METAS, psize); - if (!p) - return ENOMEM; - - p->mp_pgno = 0; - p->mp_flags = P_META; - *(MDB_meta *)METADATA(p) = *meta; - - q = (MDB_page *)((char *)p + psize); - q->mp_pgno = 1; - q->mp_flags = P_META; - *(MDB_meta *)METADATA(q) = *meta; - - DO_PWRITE(rc, env->me_fd, p, psize * NUM_METAS, len, 0); - if (!rc) - rc = ErrCode(); - else if ((unsigned) len == psize * NUM_METAS) - rc = MDB_SUCCESS; - else - rc = ENOSPC; - free(p); - return rc; -} - -/** Update the environment info to commit a transaction. - * @param[in] txn the transaction that's being committed - * @return 0 on success, non-zero on failure. - */ -static int -mdb_env_write_meta(MDB_txn *txn) -{ - MDB_env *env; - MDB_meta meta, metab, *mp; - unsigned flags; - size_t mapsize; - off_t off; - int rc, len, toggle; - char *ptr; - HANDLE mfd; -#ifdef _WIN32 - OVERLAPPED ov; -#else - int r2; -#endif - - toggle = txn->mt_txnid & 1; - DPRINTF(("writing meta page %d for root page %"Z"u", - toggle, txn->mt_dbs[MAIN_DBI].md_root)); - - env = txn->mt_env; - flags = env->me_flags; - mp = env->me_metas[toggle]; - mapsize = env->me_metas[toggle ^ 1]->mm_mapsize; - /* Persist any increases of mapsize config */ - if (mapsize < env->me_mapsize) - mapsize = env->me_mapsize; - - if (flags & MDB_WRITEMAP) { - mp->mm_mapsize = mapsize; - mp->mm_dbs[FREE_DBI] = txn->mt_dbs[FREE_DBI]; - mp->mm_dbs[MAIN_DBI] = txn->mt_dbs[MAIN_DBI]; - mp->mm_last_pg = txn->mt_next_pgno - 1; -#if (__GNUC__ * 100 + __GNUC_MINOR__ >= 404) && /* TODO: portability */ \ - !(defined(__i386__) || defined(__x86_64__)) - /* LY: issue a memory barrier, if not x86. ITS#7969 */ - __sync_synchronize(); -#endif - mp->mm_txnid = txn->mt_txnid; - if (!(flags & (MDB_NOMETASYNC|MDB_NOSYNC))) { - unsigned meta_size = env->me_psize; - rc = (env->me_flags & MDB_MAPASYNC) ? MS_ASYNC : MS_SYNC; - ptr = (char *)mp - PAGEHDRSZ; -#ifndef _WIN32 /* POSIX msync() requires ptr = start of OS page */ - r2 = (ptr - env->me_map) & (env->me_os_psize - 1); - ptr -= r2; - meta_size += r2; -#endif - if (MDB_MSYNC(ptr, meta_size, rc)) { - rc = ErrCode(); - goto fail; - } - } - goto done; - } - metab.mm_txnid = mp->mm_txnid; - metab.mm_last_pg = mp->mm_last_pg; - - meta.mm_mapsize = mapsize; - meta.mm_dbs[FREE_DBI] = txn->mt_dbs[FREE_DBI]; - meta.mm_dbs[MAIN_DBI] = txn->mt_dbs[MAIN_DBI]; - meta.mm_last_pg = txn->mt_next_pgno - 1; - meta.mm_txnid = txn->mt_txnid; - - off = offsetof(MDB_meta, mm_mapsize); - ptr = (char *)&meta + off; - len = sizeof(MDB_meta) - off; - off += (char *)mp - env->me_map; - - /* Write to the SYNC fd unless MDB_NOSYNC/MDB_NOMETASYNC. - * (me_mfd goes to the same file as me_fd, but writing to it - * also syncs to disk. Avoids a separate fdatasync() call.) - */ - mfd = (flags & (MDB_NOSYNC|MDB_NOMETASYNC)) ? env->me_fd : env->me_mfd; -#ifdef _WIN32 - { - memset(&ov, 0, sizeof(ov)); - ov.Offset = off; - if (!WriteFile(mfd, ptr, len, (DWORD *)&rc, &ov)) - rc = -1; - } -#else -retry_write: - rc = pwrite(mfd, ptr, len, off); -#endif - if (rc != len) { - rc = rc < 0 ? ErrCode() : EIO; -#ifndef _WIN32 - if (rc == EINTR) - goto retry_write; -#endif - DPUTS("write failed, disk error?"); - /* On a failure, the pagecache still contains the new data. - * Write some old data back, to prevent it from being used. - * Use the non-SYNC fd; we know it will fail anyway. - */ - meta.mm_last_pg = metab.mm_last_pg; - meta.mm_txnid = metab.mm_txnid; -#ifdef _WIN32 - memset(&ov, 0, sizeof(ov)); - ov.Offset = off; - WriteFile(env->me_fd, ptr, len, NULL, &ov); -#else - r2 = pwrite(env->me_fd, ptr, len, off); - (void)r2; /* Silence warnings. We don't care about pwrite's return value */ -#endif -fail: - env->me_flags |= MDB_FATAL_ERROR; - return rc; - } - /* MIPS has cache coherency issues, this is a no-op everywhere else */ - CACHEFLUSH(env->me_map + off, len, DCACHE); -done: - /* Memory ordering issues are irrelevant; since the entire writer - * is wrapped by wmutex, all of these changes will become visible - * after the wmutex is unlocked. Since the DB is multi-version, - * readers will get consistent data regardless of how fresh or - * how stale their view of these values is. - */ - if (env->me_txns) - env->me_txns->mti_txnid = txn->mt_txnid; - - return MDB_SUCCESS; -} - -/** Check both meta pages to see which one is newer. - * @param[in] env the environment handle - * @return newest #MDB_meta. - */ -static MDB_meta * -mdb_env_pick_meta(const MDB_env *env) -{ - MDB_meta *const *metas = env->me_metas; - return metas[ metas[0]->mm_txnid < metas[1]->mm_txnid ]; -} - -int ESECT -mdb_env_create(MDB_env **env) -{ - MDB_env *e; - - e = calloc(1, sizeof(MDB_env)); - if (!e) - return ENOMEM; - - e->me_maxreaders = DEFAULT_READERS; - e->me_maxdbs = e->me_numdbs = CORE_DBS; - e->me_fd = INVALID_HANDLE_VALUE; - e->me_lfd = INVALID_HANDLE_VALUE; - e->me_mfd = INVALID_HANDLE_VALUE; -#ifdef MDB_USE_POSIX_SEM - e->me_rmutex = SEM_FAILED; - e->me_wmutex = SEM_FAILED; -#endif - e->me_pid = getpid(); - GET_PAGESIZE(e->me_os_psize); - VGMEMP_CREATE(e,0,0); - *env = e; - return MDB_SUCCESS; -} - -static int ESECT -mdb_env_map(MDB_env *env, void *addr) -{ - MDB_page *p; - unsigned int flags = env->me_flags; -#ifdef _WIN32 - int rc; - HANDLE mh; - LONG sizelo, sizehi; - size_t msize; - - if (flags & MDB_RDONLY) { - /* Don't set explicit map size, use whatever exists */ - msize = 0; - sizelo = 0; - sizehi = 0; - } else { - msize = env->me_mapsize; - sizelo = msize & 0xffffffff; - sizehi = msize >> 16 >> 16; /* only needed on Win64 */ - - /* Windows won't create mappings for zero length files. - * and won't map more than the file size. - * Just set the maxsize right now. - */ - if (!(flags & MDB_WRITEMAP) && (SetFilePointer(env->me_fd, sizelo, &sizehi, 0) != (DWORD)sizelo - || !SetEndOfFile(env->me_fd) - || SetFilePointer(env->me_fd, 0, NULL, 0) != 0)) - return ErrCode(); - } - - mh = CreateFileMapping(env->me_fd, NULL, flags & MDB_WRITEMAP ? - PAGE_READWRITE : PAGE_READONLY, - sizehi, sizelo, NULL); - if (!mh) - return ErrCode(); - env->me_map = MapViewOfFileEx(mh, flags & MDB_WRITEMAP ? - FILE_MAP_WRITE : FILE_MAP_READ, - 0, 0, msize, addr); - rc = env->me_map ? 0 : ErrCode(); - CloseHandle(mh); - if (rc) - return rc; -#else - int mmap_flags = MAP_SHARED; - int prot = PROT_READ; -#ifdef MAP_NOSYNC /* Used on FreeBSD */ - if (flags & MDB_NOSYNC) - mmap_flags |= MAP_NOSYNC; -#endif - if (flags & MDB_WRITEMAP) { - prot |= PROT_WRITE; - if (ftruncate(env->me_fd, env->me_mapsize) < 0) - return ErrCode(); - } - env->me_map = mmap(addr, env->me_mapsize, prot, mmap_flags, - env->me_fd, 0); - if (env->me_map == MAP_FAILED) { - env->me_map = NULL; - return ErrCode(); - } - - if (flags & MDB_NORDAHEAD) { - /* Turn off readahead. It's harmful when the DB is larger than RAM. */ -#ifdef MADV_RANDOM - madvise(env->me_map, env->me_mapsize, MADV_RANDOM); -#else -#ifdef POSIX_MADV_RANDOM - posix_madvise(env->me_map, env->me_mapsize, POSIX_MADV_RANDOM); -#endif /* POSIX_MADV_RANDOM */ -#endif /* MADV_RANDOM */ - } -#endif /* _WIN32 */ - - /* Can happen because the address argument to mmap() is just a - * hint. mmap() can pick another, e.g. if the range is in use. - * The MAP_FIXED flag would prevent that, but then mmap could - * instead unmap existing pages to make room for the new map. - */ - if (addr && env->me_map != addr) - return EBUSY; /* TODO: Make a new MDB_* error code? */ - - p = (MDB_page *)env->me_map; - env->me_metas[0] = METADATA(p); - env->me_metas[1] = (MDB_meta *)((char *)env->me_metas[0] + env->me_psize); - - return MDB_SUCCESS; -} - -int ESECT -mdb_env_set_mapsize(MDB_env *env, size_t size) -{ - /* If env is already open, caller is responsible for making - * sure there are no active txns. - */ - if (env->me_map) { - int rc; - MDB_meta *meta; - void *old; - if (env->me_txn) - return EINVAL; - meta = mdb_env_pick_meta(env); - if (!size) - size = meta->mm_mapsize; - { - /* Silently round up to minimum if the size is too small */ - size_t minsize = (meta->mm_last_pg + 1) * env->me_psize; - if (size < minsize) - size = minsize; - } - munmap(env->me_map, env->me_mapsize); - env->me_mapsize = size; - old = (env->me_flags & MDB_FIXEDMAP) ? env->me_map : NULL; - rc = mdb_env_map(env, old); - if (rc) - return rc; - } - env->me_mapsize = size; - if (env->me_psize) - env->me_maxpg = env->me_mapsize / env->me_psize; - return MDB_SUCCESS; -} - -int ESECT -mdb_env_set_maxdbs(MDB_env *env, MDB_dbi dbs) -{ - if (env->me_map) - return EINVAL; - env->me_maxdbs = dbs + CORE_DBS; - return MDB_SUCCESS; -} - -int ESECT -mdb_env_set_maxreaders(MDB_env *env, unsigned int readers) -{ - if (env->me_map || readers < 1) - return EINVAL; - env->me_maxreaders = readers; - return MDB_SUCCESS; -} - -int ESECT -mdb_env_get_maxreaders(MDB_env *env, unsigned int *readers) -{ - if (!env || !readers) - return EINVAL; - *readers = env->me_maxreaders; - return MDB_SUCCESS; -} - -static int ESECT -mdb_fsize(HANDLE fd, size_t *size) -{ -#ifdef _WIN32 - LARGE_INTEGER fsize; - - if (!GetFileSizeEx(fd, &fsize)) - return ErrCode(); - - *size = fsize.QuadPart; -#else - struct stat st; - - if (fstat(fd, &st)) - return ErrCode(); - - *size = st.st_size; -#endif - return MDB_SUCCESS; -} - - -#ifdef _WIN32 -typedef wchar_t mdb_nchar_t; -# define MDB_NAME(str) L##str -# define mdb_name_cpy wcscpy -#else -/** Character type for file names: char on Unix, wchar_t on Windows */ -typedef char mdb_nchar_t; -# define MDB_NAME(str) str /**< #mdb_nchar_t[] string literal */ -# define mdb_name_cpy strcpy /**< Copy name (#mdb_nchar_t string) */ -#endif - -/** Filename - string of #mdb_nchar_t[] */ -typedef struct MDB_name { - int mn_len; /**< Length */ - int mn_alloced; /**< True if #mn_val was malloced */ - mdb_nchar_t *mn_val; /**< Contents */ -} MDB_name; - -/** Filename suffixes [datafile,lockfile][without,with MDB_NOSUBDIR] */ -static const mdb_nchar_t *const mdb_suffixes[2][2] = { - { MDB_NAME("/data.mdb"), MDB_NAME("") }, - { MDB_NAME("/lock.mdb"), MDB_NAME("-lock") } -}; - -#define MDB_SUFFLEN 9 /**< Max string length in #mdb_suffixes[] */ - -/** Set up filename + scratch area for filename suffix, for opening files. - * It should be freed with #mdb_fname_destroy(). - * On Windows, paths are converted from char *UTF-8 to wchar_t *UTF-16. - * - * @param[in] path Pathname for #mdb_env_open(). - * @param[in] envflags Whether a subdir and/or lockfile will be used. - * @param[out] fname Resulting filename, with room for a suffix if necessary. - */ -static int ESECT -mdb_fname_init(const char *path, unsigned envflags, MDB_name *fname) -{ - int no_suffix = F_ISSET(envflags, MDB_NOSUBDIR|MDB_NOLOCK); - fname->mn_alloced = 0; -#ifdef _WIN32 - return utf8_to_utf16(path, fname, no_suffix ? 0 : MDB_SUFFLEN); -#else - fname->mn_len = strlen(path); - if (no_suffix) - fname->mn_val = (char *) path; - else if ((fname->mn_val = malloc(fname->mn_len + MDB_SUFFLEN+1)) != NULL) { - fname->mn_alloced = 1; - strcpy(fname->mn_val, path); - } - else - return ENOMEM; - return MDB_SUCCESS; -#endif -} - -/** Destroy \b fname from #mdb_fname_init() */ -#define mdb_fname_destroy(fname) \ - do { if ((fname).mn_alloced) free((fname).mn_val); } while (0) - -#ifdef O_CLOEXEC /* POSIX.1-2008: Set FD_CLOEXEC atomically at open() */ -# define MDB_CLOEXEC O_CLOEXEC -#else -# define MDB_CLOEXEC 0 -#endif - -/** File type, access mode etc. for #mdb_fopen() */ -enum mdb_fopen_type { -#ifdef _WIN32 - MDB_O_RDONLY, MDB_O_RDWR, MDB_O_META, MDB_O_COPY, MDB_O_LOCKS -#else - /* A comment in mdb_fopen() explains some O_* flag choices. */ - MDB_O_RDONLY= O_RDONLY, /**< for RDONLY me_fd */ - MDB_O_RDWR = O_RDWR |O_CREAT, /**< for me_fd */ - MDB_O_META = O_WRONLY|MDB_DSYNC |MDB_CLOEXEC, /**< for me_mfd */ - MDB_O_COPY = O_WRONLY|O_CREAT|O_EXCL|MDB_CLOEXEC, /**< for #mdb_env_copy() */ - /** Bitmask for open() flags in enum #mdb_fopen_type. The other bits - * distinguish otherwise-equal MDB_O_* constants from each other. - */ - MDB_O_MASK = MDB_O_RDWR|MDB_CLOEXEC | MDB_O_RDONLY|MDB_O_META|MDB_O_COPY, - MDB_O_LOCKS = MDB_O_RDWR|MDB_CLOEXEC | ((MDB_O_MASK+1) & ~MDB_O_MASK) /**< for me_lfd */ -#endif -}; - -/** Open an LMDB file. - * @param[in] env The LMDB environment. - * @param[in,out] fname Path from from #mdb_fname_init(). A suffix is - * appended if necessary to create the filename, without changing mn_len. - * @param[in] which Determines file type, access mode, etc. - * @param[in] mode The Unix permissions for the file, if we create it. - * @param[out] res Resulting file handle. - * @return 0 on success, non-zero on failure. - */ -static int ESECT -mdb_fopen(const MDB_env *env, MDB_name *fname, - enum mdb_fopen_type which, mdb_mode_t mode, - HANDLE *res) -{ - int rc = MDB_SUCCESS; - HANDLE fd; -#ifdef _WIN32 - DWORD acc, share, disp, attrs; -#else - int flags; -#endif - - if (fname->mn_alloced) /* modifiable copy */ - mdb_name_cpy(fname->mn_val + fname->mn_len, - mdb_suffixes[which==MDB_O_LOCKS][F_ISSET(env->me_flags, MDB_NOSUBDIR)]); - - /* The directory must already exist. Usually the file need not. - * MDB_O_META requires the file because we already created it using - * MDB_O_RDWR. MDB_O_COPY must not overwrite an existing file. - * - * With MDB_O_COPY we do not want the OS to cache the writes, since - * the source data is already in the OS cache. - * - * The lockfile needs FD_CLOEXEC (close file descriptor on exec*()) - * to avoid the flock() issues noted under Caveats in lmdb.h. - * Also set it for other filehandles which the user cannot get at - * and close himself, which he may need after fork(). I.e. all but - * me_fd, which programs do use via mdb_env_get_fd(). - */ - -#ifdef _WIN32 - acc = GENERIC_READ|GENERIC_WRITE; - share = FILE_SHARE_READ|FILE_SHARE_WRITE; - disp = OPEN_ALWAYS; - attrs = FILE_ATTRIBUTE_NORMAL; - switch (which) { - case MDB_O_RDONLY: /* read-only datafile */ - acc = GENERIC_READ; - disp = OPEN_EXISTING; - break; - case MDB_O_META: /* for writing metapages */ - acc = GENERIC_WRITE; - disp = OPEN_EXISTING; - attrs = FILE_ATTRIBUTE_NORMAL|FILE_FLAG_WRITE_THROUGH; - break; - case MDB_O_COPY: /* mdb_env_copy() & co */ - acc = GENERIC_WRITE; - share = 0; - disp = CREATE_NEW; - attrs = FILE_FLAG_NO_BUFFERING|FILE_FLAG_WRITE_THROUGH; - break; - default: break; /* silence gcc -Wswitch (not all enum values handled) */ - } - fd = CreateFileW(fname->mn_val, acc, share, NULL, disp, attrs, NULL); -#else - fd = open(fname->mn_val, which & MDB_O_MASK, mode); -#endif - - if (fd == INVALID_HANDLE_VALUE) - rc = ErrCode(); -#ifndef _WIN32 - else { - if (which != MDB_O_RDONLY && which != MDB_O_RDWR) { - /* Set CLOEXEC if we could not pass it to open() */ - if (!MDB_CLOEXEC && (flags = fcntl(fd, F_GETFD)) != -1) - (void) fcntl(fd, F_SETFD, flags | FD_CLOEXEC); - } - if (which == MDB_O_COPY && env->me_psize >= env->me_os_psize) { - /* This may require buffer alignment. There is no portable - * way to ask how much, so we require OS pagesize alignment. - */ -# ifdef F_NOCACHE /* __APPLE__ */ - (void) fcntl(fd, F_NOCACHE, 1); -# elif defined O_DIRECT - /* open(...O_DIRECT...) would break on filesystems without - * O_DIRECT support (ITS#7682). Try to set it here instead. - */ - if ((flags = fcntl(fd, F_GETFL)) != -1) - (void) fcntl(fd, F_SETFL, flags | O_DIRECT); -# endif - } - } -#endif /* !_WIN32 */ - - *res = fd; - return rc; -} - - -#ifdef BROKEN_FDATASYNC -#include -#include -#endif - -/** Further setup required for opening an LMDB environment - */ -static int ESECT -mdb_env_open2(MDB_env *env) -{ - unsigned int flags = env->me_flags; - int i, newenv = 0, rc; - MDB_meta meta; - -#ifdef _WIN32 - /* See if we should use QueryLimited */ - rc = GetVersion(); - if ((rc & 0xff) > 5) - env->me_pidquery = MDB_PROCESS_QUERY_LIMITED_INFORMATION; - else - env->me_pidquery = PROCESS_QUERY_INFORMATION; -#endif /* _WIN32 */ - -#ifdef BROKEN_FDATASYNC - /* ext3/ext4 fdatasync is broken on some older Linux kernels. - * https://lkml.org/lkml/2012/9/3/83 - * Kernels after 3.6-rc6 are known good. - * https://lkml.org/lkml/2012/9/10/556 - * See if the DB is on ext3/ext4, then check for new enough kernel - * Kernels 2.6.32.60, 2.6.34.15, 3.2.30, and 3.5.4 are also known - * to be patched. - */ - { - struct statfs st; - fstatfs(env->me_fd, &st); - while (st.f_type == 0xEF53) { - struct utsname uts; - int i; - uname(&uts); - if (uts.release[0] < '3') { - if (!strncmp(uts.release, "2.6.32.", 7)) { - i = atoi(uts.release+7); - if (i >= 60) - break; /* 2.6.32.60 and newer is OK */ - } else if (!strncmp(uts.release, "2.6.34.", 7)) { - i = atoi(uts.release+7); - if (i >= 15) - break; /* 2.6.34.15 and newer is OK */ - } - } else if (uts.release[0] == '3') { - i = atoi(uts.release+2); - if (i > 5) - break; /* 3.6 and newer is OK */ - if (i == 5) { - i = atoi(uts.release+4); - if (i >= 4) - break; /* 3.5.4 and newer is OK */ - } else if (i == 2) { - i = atoi(uts.release+4); - if (i >= 30) - break; /* 3.2.30 and newer is OK */ - } - } else { /* 4.x and newer is OK */ - break; - } - env->me_flags |= MDB_FSYNCONLY; - break; - } - } -#endif - - if ((i = mdb_env_read_header(env, &meta)) != 0) { - if (i != ENOENT) - return i; - DPUTS("new mdbenv"); - newenv = 1; - env->me_psize = env->me_os_psize; - if (env->me_psize > MAX_PAGESIZE) - env->me_psize = MAX_PAGESIZE; - memset(&meta, 0, sizeof(meta)); - mdb_env_init_meta0(env, &meta); - meta.mm_mapsize = DEFAULT_MAPSIZE; - } else { - env->me_psize = meta.mm_psize; - } - - /* Was a mapsize configured? */ - if (!env->me_mapsize) { - env->me_mapsize = meta.mm_mapsize; - } - { - /* Make sure mapsize >= committed data size. Even when using - * mm_mapsize, which could be broken in old files (ITS#7789). - */ - size_t minsize = (meta.mm_last_pg + 1) * meta.mm_psize; - if (env->me_mapsize < minsize) - env->me_mapsize = minsize; - } - meta.mm_mapsize = env->me_mapsize; - - if (newenv && !(flags & MDB_FIXEDMAP)) { - /* mdb_env_map() may grow the datafile. Write the metapages - * first, so the file will be valid if initialization fails. - * Except with FIXEDMAP, since we do not yet know mm_address. - * We could fill in mm_address later, but then a different - * program might end up doing that - one with a memory layout - * and map address which does not suit the main program. - */ - rc = mdb_env_init_meta(env, &meta); - if (rc) - return rc; - newenv = 0; - } - - rc = mdb_env_map(env, (flags & MDB_FIXEDMAP) ? meta.mm_address : NULL); - if (rc) - return rc; - - if (newenv) { - if (flags & MDB_FIXEDMAP) - meta.mm_address = env->me_map; - i = mdb_env_init_meta(env, &meta); - if (i != MDB_SUCCESS) { - return i; - } - } - - env->me_maxfree_1pg = (env->me_psize - PAGEHDRSZ) / sizeof(pgno_t) - 1; - env->me_nodemax = (((env->me_psize - PAGEHDRSZ) / MDB_MINKEYS) & -2) - - sizeof(indx_t); -#if !(MDB_MAXKEYSIZE) - env->me_maxkey = env->me_nodemax - (NODESIZE + sizeof(MDB_db)); -#endif - env->me_maxpg = env->me_mapsize / env->me_psize; - -#if MDB_DEBUG - { - MDB_meta *meta = mdb_env_pick_meta(env); - MDB_db *db = &meta->mm_dbs[MAIN_DBI]; - - DPRINTF(("opened database version %u, pagesize %u", - meta->mm_version, env->me_psize)); - DPRINTF(("using meta page %d", (int) (meta->mm_txnid & 1))); - DPRINTF(("depth: %u", db->md_depth)); - DPRINTF(("entries: %"Z"u", db->md_entries)); - DPRINTF(("branch pages: %"Z"u", db->md_branch_pages)); - DPRINTF(("leaf pages: %"Z"u", db->md_leaf_pages)); - DPRINTF(("overflow pages: %"Z"u", db->md_overflow_pages)); - DPRINTF(("root: %"Z"u", db->md_root)); - } -#endif - - return MDB_SUCCESS; -} - - -/** Release a reader thread's slot in the reader lock table. - * This function is called automatically when a thread exits. - * @param[in] ptr This points to the slot in the reader lock table. - */ -static void -mdb_env_reader_dest(void *ptr) -{ - MDB_reader *reader = ptr; - -#ifndef _WIN32 - if (reader->mr_pid == getpid()) /* catch pthread_exit() in child process */ -#endif - /* We omit the mutex, so do this atomically (i.e. skip mr_txnid) */ - reader->mr_pid = 0; -} - -#ifdef _WIN32 -/** Junk for arranging thread-specific callbacks on Windows. This is - * necessarily platform and compiler-specific. Windows supports up - * to 1088 keys. Let's assume nobody opens more than 64 environments - * in a single process, for now. They can override this if needed. - */ -#ifndef MAX_TLS_KEYS -#define MAX_TLS_KEYS 64 -#endif -static pthread_key_t mdb_tls_keys[MAX_TLS_KEYS]; -static int mdb_tls_nkeys; - -static void NTAPI mdb_tls_callback(PVOID module, DWORD reason, PVOID ptr) -{ - int i; - switch(reason) { - case DLL_PROCESS_ATTACH: break; - case DLL_THREAD_ATTACH: break; - case DLL_THREAD_DETACH: - for (i=0; ime_txns->mti_txnid = meta->mm_txnid; - -#ifdef _WIN32 - { - OVERLAPPED ov; - /* First acquire a shared lock. The Unlock will - * then release the existing exclusive lock. - */ - memset(&ov, 0, sizeof(ov)); - if (!LockFileEx(env->me_lfd, 0, 0, 1, 0, &ov)) { - rc = ErrCode(); - } else { - UnlockFile(env->me_lfd, 0, 0, 1, 0); - *excl = 0; - } - } -#else - { - struct flock lock_info; - /* The shared lock replaces the existing lock */ - memset((void *)&lock_info, 0, sizeof(lock_info)); - lock_info.l_type = F_RDLCK; - lock_info.l_whence = SEEK_SET; - lock_info.l_start = 0; - lock_info.l_len = 1; - while ((rc = fcntl(env->me_lfd, F_SETLK, &lock_info)) && - (rc = ErrCode()) == EINTR) ; - *excl = rc ? -1 : 0; /* error may mean we lost the lock */ - } -#endif - - return rc; -} - -/** Try to get exclusive lock, otherwise shared. - * Maintain *excl = -1: no/unknown lock, 0: shared, 1: exclusive. - */ -static int ESECT -mdb_env_excl_lock(MDB_env *env, int *excl) -{ - int rc = 0; -#ifdef _WIN32 - if (LockFile(env->me_lfd, 0, 0, 1, 0)) { - *excl = 1; - } else { - OVERLAPPED ov; - memset(&ov, 0, sizeof(ov)); - if (LockFileEx(env->me_lfd, 0, 0, 1, 0, &ov)) { - *excl = 0; - } else { - rc = ErrCode(); - } - } -#else - struct flock lock_info; - memset((void *)&lock_info, 0, sizeof(lock_info)); - lock_info.l_type = F_WRLCK; - lock_info.l_whence = SEEK_SET; - lock_info.l_start = 0; - lock_info.l_len = 1; - while ((rc = fcntl(env->me_lfd, F_SETLK, &lock_info)) && - (rc = ErrCode()) == EINTR) ; - if (!rc) { - *excl = 1; - } else -# ifndef MDB_USE_POSIX_MUTEX - if (*excl < 0) /* always true when MDB_USE_POSIX_MUTEX */ -# endif - { - lock_info.l_type = F_RDLCK; - while ((rc = fcntl(env->me_lfd, F_SETLKW, &lock_info)) && - (rc = ErrCode()) == EINTR) ; - if (rc == 0) - *excl = 0; - } -#endif - return rc; -} - -#ifdef MDB_USE_HASH -/* - * hash_64 - 64 bit Fowler/Noll/Vo-0 FNV-1a hash code - * - * @(#) $Revision: 5.1 $ - * @(#) $Id: hash_64a.c,v 5.1 2009/06/30 09:01:38 chongo Exp $ - * @(#) $Source: /usr/local/src/cmd/fnv/RCS/hash_64a.c,v $ - * - * http://www.isthe.com/chongo/tech/comp/fnv/index.html - * - *** - * - * Please do not copyright this code. This code is in the public domain. - * - * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO - * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF - * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - * - * By: - * chongo /\oo/\ - * http://www.isthe.com/chongo/ - * - * Share and Enjoy! :-) - */ - -typedef unsigned long long mdb_hash_t; -#define MDB_HASH_INIT ((mdb_hash_t)0xcbf29ce484222325ULL) - -/** perform a 64 bit Fowler/Noll/Vo FNV-1a hash on a buffer - * @param[in] val value to hash - * @param[in] hval initial value for hash - * @return 64 bit hash - * - * NOTE: To use the recommended 64 bit FNV-1a hash, use MDB_HASH_INIT as the - * hval arg on the first call. - */ -static mdb_hash_t -mdb_hash_val(MDB_val *val, mdb_hash_t hval) -{ - unsigned char *s = (unsigned char *)val->mv_data; /* unsigned string */ - unsigned char *end = s + val->mv_size; - /* - * FNV-1a hash each octet of the string - */ - while (s < end) { - /* xor the bottom with the current octet */ - hval ^= (mdb_hash_t)*s++; - - /* multiply by the 64 bit FNV magic prime mod 2^64 */ - hval += (hval << 1) + (hval << 4) + (hval << 5) + - (hval << 7) + (hval << 8) + (hval << 40); - } - /* return our new hash value */ - return hval; -} - -/** Hash the string and output the encoded hash. - * This uses modified RFC1924 Ascii85 encoding to accommodate systems with - * very short name limits. We don't care about the encoding being reversible, - * we just want to preserve as many bits of the input as possible in a - * small printable string. - * @param[in] str string to hash - * @param[out] encbuf an array of 11 chars to hold the hash - */ -static const char mdb_a85[]= "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~"; - -static void ESECT -mdb_pack85(unsigned long l, char *out) -{ - int i; - - for (i=0; i<5; i++) { - *out++ = mdb_a85[l % 85]; - l /= 85; - } -} - -static void ESECT -mdb_hash_enc(MDB_val *val, char *encbuf) -{ - mdb_hash_t h = mdb_hash_val(val, MDB_HASH_INIT); - - mdb_pack85(h, encbuf); - mdb_pack85(h>>32, encbuf+5); - encbuf[10] = '\0'; -} -#endif - -/** Open and/or initialize the lock region for the environment. - * @param[in] env The LMDB environment. - * @param[in] fname Filename + scratch area, from #mdb_fname_init(). - * @param[in] mode The Unix permissions for the file, if we create it. - * @param[in,out] excl In -1, out lock type: -1 none, 0 shared, 1 exclusive - * @return 0 on success, non-zero on failure. - */ -static int ESECT -mdb_env_setup_locks(MDB_env *env, MDB_name *fname, int mode, int *excl) -{ -#ifdef _WIN32 -# define MDB_ERRCODE_ROFS ERROR_WRITE_PROTECT -#else -# define MDB_ERRCODE_ROFS EROFS -#endif - int rc; - off_t size, rsize; - - rc = mdb_fopen(env, fname, MDB_O_LOCKS, mode, &env->me_lfd); - if (rc) { - /* Omit lockfile if read-only env on read-only filesystem */ - if (rc == MDB_ERRCODE_ROFS && (env->me_flags & MDB_RDONLY)) { - return MDB_SUCCESS; - } - goto fail; - } - - if (!(env->me_flags & MDB_NOTLS)) { - rc = pthread_key_create(&env->me_txkey, mdb_env_reader_dest); - if (rc) - goto fail; - env->me_flags |= MDB_ENV_TXKEY; -#ifdef _WIN32 - /* Windows TLS callbacks need help finding their TLS info. */ - if (mdb_tls_nkeys >= MAX_TLS_KEYS) { - rc = MDB_TLS_FULL; - goto fail; - } - mdb_tls_keys[mdb_tls_nkeys++] = env->me_txkey; -#endif - } - - /* Try to get exclusive lock. If we succeed, then - * nobody is using the lock region and we should initialize it. - */ - if ((rc = mdb_env_excl_lock(env, excl))) goto fail; - -#ifdef _WIN32 - size = GetFileSize(env->me_lfd, NULL); -#else - size = lseek(env->me_lfd, 0, SEEK_END); - if (size == -1) goto fail_errno; -#endif - rsize = (env->me_maxreaders-1) * sizeof(MDB_reader) + sizeof(MDB_txninfo); - if (size < rsize && *excl > 0) { -#ifdef _WIN32 - if (SetFilePointer(env->me_lfd, rsize, NULL, FILE_BEGIN) != (DWORD)rsize - || !SetEndOfFile(env->me_lfd)) - goto fail_errno; -#else - if (ftruncate(env->me_lfd, rsize) != 0) goto fail_errno; -#endif - } else { - rsize = size; - size = rsize - sizeof(MDB_txninfo); - env->me_maxreaders = size/sizeof(MDB_reader) + 1; - } - { -#ifdef _WIN32 - HANDLE mh; - mh = CreateFileMapping(env->me_lfd, NULL, PAGE_READWRITE, - 0, 0, NULL); - if (!mh) goto fail_errno; - env->me_txns = MapViewOfFileEx(mh, FILE_MAP_WRITE, 0, 0, rsize, NULL); - CloseHandle(mh); - if (!env->me_txns) goto fail_errno; -#else - void *m = mmap(NULL, rsize, PROT_READ|PROT_WRITE, MAP_SHARED, - env->me_lfd, 0); - if (m == MAP_FAILED) goto fail_errno; - env->me_txns = m; -#endif - } - if (*excl > 0) { -#ifdef _WIN32 - BY_HANDLE_FILE_INFORMATION stbuf; - struct { - DWORD volume; - DWORD nhigh; - DWORD nlow; - } idbuf; - MDB_val val; - char encbuf[11]; - - if (!mdb_sec_inited) { - InitializeSecurityDescriptor(&mdb_null_sd, - SECURITY_DESCRIPTOR_REVISION); - SetSecurityDescriptorDacl(&mdb_null_sd, TRUE, 0, FALSE); - mdb_all_sa.nLength = sizeof(SECURITY_ATTRIBUTES); - mdb_all_sa.bInheritHandle = FALSE; - mdb_all_sa.lpSecurityDescriptor = &mdb_null_sd; - mdb_sec_inited = 1; - } - if (!GetFileInformationByHandle(env->me_lfd, &stbuf)) goto fail_errno; - idbuf.volume = stbuf.dwVolumeSerialNumber; - idbuf.nhigh = stbuf.nFileIndexHigh; - idbuf.nlow = stbuf.nFileIndexLow; - val.mv_data = &idbuf; - val.mv_size = sizeof(idbuf); - mdb_hash_enc(&val, encbuf); - sprintf(env->me_txns->mti_rmname, "Global\\MDBr%s", encbuf); - sprintf(env->me_txns->mti_wmname, "Global\\MDBw%s", encbuf); - env->me_rmutex = CreateMutexA(&mdb_all_sa, FALSE, env->me_txns->mti_rmname); - if (!env->me_rmutex) goto fail_errno; - env->me_wmutex = CreateMutexA(&mdb_all_sa, FALSE, env->me_txns->mti_wmname); - if (!env->me_wmutex) goto fail_errno; -#elif defined(MDB_USE_POSIX_SEM) - struct stat stbuf; - struct { - dev_t dev; - ino_t ino; - } idbuf; - MDB_val val; - char encbuf[11]; - -#if defined(__NetBSD__) -#define MDB_SHORT_SEMNAMES 1 /* limited to 14 chars */ -#endif - if (fstat(env->me_lfd, &stbuf)) goto fail_errno; - idbuf.dev = stbuf.st_dev; - idbuf.ino = stbuf.st_ino; - val.mv_data = &idbuf; - val.mv_size = sizeof(idbuf); - mdb_hash_enc(&val, encbuf); -#ifdef MDB_SHORT_SEMNAMES - encbuf[9] = '\0'; /* drop name from 15 chars to 14 chars */ -#endif - -#define DEF_STR(x) #x -#define DEF_TO_STRING(x) DEF_STR(x) - sprintf(env->me_txns->mti_rmname, DEF_TO_STRING(MDB_SEM_NAME_PREFIX) "/MDBr%s", encbuf); - sprintf(env->me_txns->mti_wmname, DEF_TO_STRING(MDB_SEM_NAME_PREFIX) "/MDBw%s", encbuf); -#undef DEF_STR -#undef DEF_TO_STRING - - printf("mdb_env_setup_locks: using semnames '%s' (%d), '%s' (%d)\n", - env->me_txns->mti_rmname, strlen(env->me_txns->mti_rmname), - env->me_txns->mti_wmname, strlen(env->me_txns->mti_wmname)); - /* Clean up after a previous run, if needed: Try to - * remove both semaphores before doing anything else. - */ - sem_unlink(env->me_txns->mti_rmname); - sem_unlink(env->me_txns->mti_wmname); - env->me_rmutex = sem_open(env->me_txns->mti_rmname, - O_CREAT|O_EXCL, mode, 1); - if (env->me_rmutex == SEM_FAILED) goto fail_errno; - env->me_wmutex = sem_open(env->me_txns->mti_wmname, - O_CREAT|O_EXCL, mode, 1); - if (env->me_wmutex == SEM_FAILED) goto fail_errno; -#else /* MDB_USE_POSIX_MUTEX: */ - pthread_mutexattr_t mattr; - - /* Solaris needs this before initing a robust mutex. Otherwise - * it may skip the init and return EBUSY "seems someone already - * inited" or EINVAL "it was inited differently". - */ - memset(env->me_txns->mti_rmutex, 0, sizeof(*env->me_txns->mti_rmutex)); - memset(env->me_txns->mti_wmutex, 0, sizeof(*env->me_txns->mti_wmutex)); - - if ((rc = pthread_mutexattr_init(&mattr))) - goto fail; - - rc = pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED); -#ifdef MDB_ROBUST_SUPPORTED - if (!rc) rc = pthread_mutexattr_setrobust(&mattr, PTHREAD_MUTEX_ROBUST); -#endif - if (!rc) rc = pthread_mutex_init(env->me_txns->mti_rmutex, &mattr); - if (!rc) rc = pthread_mutex_init(env->me_txns->mti_wmutex, &mattr); - pthread_mutexattr_destroy(&mattr); - if (rc) - goto fail; -#endif /* _WIN32 || MDB_USE_POSIX_SEM */ - - env->me_txns->mti_magic = MDB_MAGIC; - env->me_txns->mti_format = MDB_LOCK_FORMAT; - env->me_txns->mti_txnid = 0; - env->me_txns->mti_numreaders = 0; - - } else { - if (env->me_txns->mti_magic != MDB_MAGIC) { - DPUTS("lock region has invalid magic"); - rc = MDB_INVALID; - goto fail; - } - if (env->me_txns->mti_format != MDB_LOCK_FORMAT) { - DPRINTF(("lock region has format+version 0x%x, expected 0x%x", - env->me_txns->mti_format, MDB_LOCK_FORMAT)); - rc = MDB_VERSION_MISMATCH; - goto fail; - } - rc = ErrCode(); - if (rc && rc != EACCES && rc != EAGAIN) { - goto fail; - } -#ifdef _WIN32 - env->me_rmutex = OpenMutexA(SYNCHRONIZE, FALSE, env->me_txns->mti_rmname); - if (!env->me_rmutex) goto fail_errno; - env->me_wmutex = OpenMutexA(SYNCHRONIZE, FALSE, env->me_txns->mti_wmname); - if (!env->me_wmutex) goto fail_errno; -#elif defined(MDB_USE_POSIX_SEM) - env->me_rmutex = sem_open(env->me_txns->mti_rmname, 0); - if (env->me_rmutex == SEM_FAILED) goto fail_errno; - env->me_wmutex = sem_open(env->me_txns->mti_wmname, 0); - if (env->me_wmutex == SEM_FAILED) goto fail_errno; -#endif - } - return MDB_SUCCESS; - -fail_errno: - rc = ErrCode(); -fail: - return rc; -} - - /** Only a subset of the @ref mdb_env flags can be changed - * at runtime. Changing other flags requires closing the - * environment and re-opening it with the new flags. - */ -#define CHANGEABLE (MDB_NOSYNC|MDB_NOMETASYNC|MDB_MAPASYNC|MDB_NOMEMINIT) -#define CHANGELESS (MDB_FIXEDMAP|MDB_NOSUBDIR|MDB_RDONLY| \ - MDB_WRITEMAP|MDB_NOTLS|MDB_NOLOCK|MDB_NORDAHEAD) - -#if VALID_FLAGS & PERSISTENT_FLAGS & (CHANGEABLE|CHANGELESS) -# error "Persistent DB flags & env flags overlap, but both go in mm_flags" -#endif - -int ESECT -mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode) -{ - int rc, excl = -1; - MDB_name fname; - - if (env->me_fd!=INVALID_HANDLE_VALUE || (flags & ~(CHANGEABLE|CHANGELESS))) - return EINVAL; - - flags |= env->me_flags; - - rc = mdb_fname_init(path, flags, &fname); - if (rc) - return rc; - - if (flags & MDB_RDONLY) { - /* silently ignore WRITEMAP when we're only getting read access */ - flags &= ~MDB_WRITEMAP; - } else { - if (!((env->me_free_pgs = mdb_midl_alloc(MDB_IDL_UM_MAX)) && - (env->me_dirty_list = calloc(MDB_IDL_UM_SIZE, sizeof(MDB_ID2))))) - rc = ENOMEM; - } - env->me_flags = flags |= MDB_ENV_ACTIVE; - if (rc) - goto leave; - - env->me_path = strdup(path); - env->me_dbxs = calloc(env->me_maxdbs, sizeof(MDB_dbx)); - env->me_dbflags = calloc(env->me_maxdbs, sizeof(uint16_t)); - env->me_dbiseqs = calloc(env->me_maxdbs, sizeof(unsigned int)); - if (!(env->me_dbxs && env->me_path && env->me_dbflags && env->me_dbiseqs)) { - rc = ENOMEM; - goto leave; - } - env->me_dbxs[FREE_DBI].md_cmp = mdb_cmp_long; /* aligned MDB_INTEGERKEY */ - - /* For RDONLY, get lockfile after we know datafile exists */ - if (!(flags & (MDB_RDONLY|MDB_NOLOCK))) { - rc = mdb_env_setup_locks(env, &fname, mode, &excl); - if (rc) - goto leave; - } - - rc = mdb_fopen(env, &fname, - (flags & MDB_RDONLY) ? MDB_O_RDONLY : MDB_O_RDWR, - mode, &env->me_fd); - if (rc) - goto leave; - - if ((flags & (MDB_RDONLY|MDB_NOLOCK)) == MDB_RDONLY) { - rc = mdb_env_setup_locks(env, &fname, mode, &excl); - if (rc) - goto leave; - } - - if ((rc = mdb_env_open2(env)) == MDB_SUCCESS) { - if (!(flags & (MDB_RDONLY|MDB_WRITEMAP))) { - /* Synchronous fd for meta writes. Needed even with - * MDB_NOSYNC/MDB_NOMETASYNC, in case these get reset. - */ - rc = mdb_fopen(env, &fname, MDB_O_META, mode, &env->me_mfd); - if (rc) - goto leave; - } - DPRINTF(("opened dbenv %p", (void *) env)); - if (excl > 0) { - rc = mdb_env_share_locks(env, &excl); - if (rc) - goto leave; - } - if (!(flags & MDB_RDONLY)) { - MDB_txn *txn; - int tsize = sizeof(MDB_txn), size = tsize + env->me_maxdbs * - (sizeof(MDB_db)+sizeof(MDB_cursor *)+sizeof(unsigned int)+1); - if ((env->me_pbuf = calloc(1, env->me_psize)) && - (txn = calloc(1, size))) - { - txn->mt_dbs = (MDB_db *)((char *)txn + tsize); - txn->mt_cursors = (MDB_cursor **)(txn->mt_dbs + env->me_maxdbs); - txn->mt_dbiseqs = (unsigned int *)(txn->mt_cursors + env->me_maxdbs); - txn->mt_dbflags = (unsigned char *)(txn->mt_dbiseqs + env->me_maxdbs); - txn->mt_env = env; - txn->mt_dbxs = env->me_dbxs; - txn->mt_flags = MDB_TXN_FINISHED; - env->me_txn0 = txn; - } else { - rc = ENOMEM; - } - } - } - -leave: - if (rc) { - mdb_env_close0(env, excl); - } - mdb_fname_destroy(fname); - return rc; -} - -/** Destroy resources from mdb_env_open(), clear our readers & DBIs */ -static void ESECT -mdb_env_close0(MDB_env *env, int excl) -{ - int i; - - if (!(env->me_flags & MDB_ENV_ACTIVE)) - return; - - /* Doing this here since me_dbxs may not exist during mdb_env_close */ - if (env->me_dbxs) { - for (i = env->me_maxdbs; --i >= CORE_DBS; ) - free(env->me_dbxs[i].md_name.mv_data); - free(env->me_dbxs); - } - - free(env->me_pbuf); - free(env->me_dbiseqs); - free(env->me_dbflags); - free(env->me_path); - free(env->me_dirty_list); - free(env->me_txn0); - mdb_midl_free(env->me_free_pgs); - - if (env->me_flags & MDB_ENV_TXKEY) { - pthread_key_delete(env->me_txkey); -#ifdef _WIN32 - /* Delete our key from the global list */ - for (i=0; ime_txkey) { - mdb_tls_keys[i] = mdb_tls_keys[mdb_tls_nkeys-1]; - mdb_tls_nkeys--; - break; - } -#endif - } - - if (env->me_map) { - munmap(env->me_map, env->me_mapsize); - } - if (env->me_mfd != INVALID_HANDLE_VALUE) - (void) close(env->me_mfd); - if (env->me_fd != INVALID_HANDLE_VALUE) - (void) close(env->me_fd); - if (env->me_txns) { - MDB_PID_T pid = getpid(); - /* Clearing readers is done in this function because - * me_txkey with its destructor must be disabled first. - * - * We skip the the reader mutex, so we touch only - * data owned by this process (me_close_readers and - * our readers), and clear each reader atomically. - */ - for (i = env->me_close_readers; --i >= 0; ) - if (env->me_txns->mti_readers[i].mr_pid == pid) - env->me_txns->mti_readers[i].mr_pid = 0; -#ifdef _WIN32 - if (env->me_rmutex) { - CloseHandle(env->me_rmutex); - if (env->me_wmutex) CloseHandle(env->me_wmutex); - } - /* Windows automatically destroys the mutexes when - * the last handle closes. - */ -#elif defined(MDB_USE_POSIX_SEM) - if (env->me_rmutex != SEM_FAILED) { - sem_close(env->me_rmutex); - if (env->me_wmutex != SEM_FAILED) - sem_close(env->me_wmutex); - /* If we have the filelock: If we are the - * only remaining user, clean up semaphores. - */ - if (excl == 0) - mdb_env_excl_lock(env, &excl); - if (excl > 0) { - sem_unlink(env->me_txns->mti_rmname); - sem_unlink(env->me_txns->mti_wmname); - } - } -#elif defined(MDB_ROBUST_SUPPORTED) - /* If we have the filelock: If we are the - * only remaining user, clean up robust - * mutexes. - */ - if (excl == 0) - mdb_env_excl_lock(env, &excl); - if (excl > 0) { - pthread_mutex_destroy(env->me_txns->mti_rmutex); - pthread_mutex_destroy(env->me_txns->mti_wmutex); - } -#endif - munmap((void *)env->me_txns, (env->me_maxreaders-1)*sizeof(MDB_reader)+sizeof(MDB_txninfo)); - } - if (env->me_lfd != INVALID_HANDLE_VALUE) { -#ifdef _WIN32 - if (excl >= 0) { - /* Unlock the lockfile. Windows would have unlocked it - * after closing anyway, but not necessarily at once. - */ - UnlockFile(env->me_lfd, 0, 0, 1, 0); - } -#endif - (void) close(env->me_lfd); - } - - env->me_flags &= ~(MDB_ENV_ACTIVE|MDB_ENV_TXKEY); -} - -void ESECT -mdb_env_close(MDB_env *env) -{ - MDB_page *dp; - - if (env == NULL) - return; - - VGMEMP_DESTROY(env); - while ((dp = env->me_dpages) != NULL) { - VGMEMP_DEFINED(&dp->mp_next, sizeof(dp->mp_next)); - env->me_dpages = dp->mp_next; - free(dp); - } - - mdb_env_close0(env, 0); - free(env); -} - -/** Compare two items pointing at aligned size_t's */ -static int -mdb_cmp_long(const MDB_val *a, const MDB_val *b) -{ - return (*(size_t *)a->mv_data < *(size_t *)b->mv_data) ? -1 : - *(size_t *)a->mv_data > *(size_t *)b->mv_data; -} - -/** Compare two items pointing at aligned unsigned int's. - * - * This is also set as #MDB_INTEGERDUP|#MDB_DUPFIXED's #MDB_dbx.%md_dcmp, - * but #mdb_cmp_clong() is called instead if the data type is size_t. - */ -static int -mdb_cmp_int(const MDB_val *a, const MDB_val *b) -{ - return (*(unsigned int *)a->mv_data < *(unsigned int *)b->mv_data) ? -1 : - *(unsigned int *)a->mv_data > *(unsigned int *)b->mv_data; -} - -/** Compare two items pointing at unsigned ints of unknown alignment. - * Nodes and keys are guaranteed to be 2-byte aligned. - */ -static int -mdb_cmp_cint(const MDB_val *a, const MDB_val *b) -{ -#if BYTE_ORDER == LITTLE_ENDIAN - unsigned short *u, *c; - int x; - - u = (unsigned short *) ((char *) a->mv_data + a->mv_size); - c = (unsigned short *) ((char *) b->mv_data + a->mv_size); - do { - x = *--u - *--c; - } while(!x && u > (unsigned short *)a->mv_data); - return x; -#else - unsigned short *u, *c, *end; - int x; - - end = (unsigned short *) ((char *) a->mv_data + a->mv_size); - u = (unsigned short *)a->mv_data; - c = (unsigned short *)b->mv_data; - do { - x = *u++ - *c++; - } while(!x && u < end); - return x; -#endif -} - -/** Compare two items lexically */ -static int -mdb_cmp_memn(const MDB_val *a, const MDB_val *b) -{ - int diff; - ssize_t len_diff; - unsigned int len; - - len = a->mv_size; - len_diff = (ssize_t) a->mv_size - (ssize_t) b->mv_size; - if (len_diff > 0) { - len = b->mv_size; - len_diff = 1; - } - - diff = memcmp(a->mv_data, b->mv_data, len); - return diff ? diff : len_diff<0 ? -1 : len_diff; -} - -/** Compare two items in reverse byte order */ -static int -mdb_cmp_memnr(const MDB_val *a, const MDB_val *b) -{ - const unsigned char *p1, *p2, *p1_lim; - ssize_t len_diff; - int diff; - - p1_lim = (const unsigned char *)a->mv_data; - p1 = (const unsigned char *)a->mv_data + a->mv_size; - p2 = (const unsigned char *)b->mv_data + b->mv_size; - - len_diff = (ssize_t) a->mv_size - (ssize_t) b->mv_size; - if (len_diff > 0) { - p1_lim += len_diff; - len_diff = 1; - } - - while (p1 > p1_lim) { - diff = *--p1 - *--p2; - if (diff) - return diff; - } - return len_diff<0 ? -1 : len_diff; -} - -/** Search for key within a page, using binary search. - * Returns the smallest entry larger or equal to the key. - * If exactp is non-null, stores whether the found entry was an exact match - * in *exactp (1 or 0). - * Updates the cursor index with the index of the found entry. - * If no entry larger or equal to the key is found, returns NULL. - */ -static MDB_node * -mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp) -{ - unsigned int i = 0, nkeys; - int low, high; - int rc = 0; - MDB_page *mp = mc->mc_pg[mc->mc_top]; - MDB_node *node = NULL; - MDB_val nodekey; - MDB_cmp_func *cmp; - DKBUF; - - nkeys = NUMKEYS(mp); - - DPRINTF(("searching %u keys in %s %spage %"Z"u", - nkeys, IS_LEAF(mp) ? "leaf" : "branch", IS_SUBP(mp) ? "sub-" : "", - mdb_dbg_pgno(mp))); - - low = IS_LEAF(mp) ? 0 : 1; - high = nkeys - 1; - cmp = mc->mc_dbx->md_cmp; - - /* Branch pages have no data, so if using integer keys, - * alignment is guaranteed. Use faster mdb_cmp_int. - */ - if (cmp == mdb_cmp_cint && IS_BRANCH(mp)) { - if (NODEPTR(mp, 1)->mn_ksize == sizeof(size_t)) - cmp = mdb_cmp_long; - else - cmp = mdb_cmp_int; - } - - if (IS_LEAF2(mp)) { - nodekey.mv_size = mc->mc_db->md_pad; - node = NODEPTR(mp, 0); /* fake */ - while (low <= high) { - i = (low + high) >> 1; - nodekey.mv_data = LEAF2KEY(mp, i, nodekey.mv_size); - rc = cmp(key, &nodekey); - DPRINTF(("found leaf index %u [%s], rc = %i", - i, DKEY(&nodekey), rc)); - if (rc == 0) - break; - if (rc > 0) - low = i + 1; - else - high = i - 1; - } - } else { - while (low <= high) { - i = (low + high) >> 1; - - node = NODEPTR(mp, i); - nodekey.mv_size = NODEKSZ(node); - nodekey.mv_data = NODEKEY(node); - - rc = cmp(key, &nodekey); -#if MDB_DEBUG - if (IS_LEAF(mp)) - DPRINTF(("found leaf index %u [%s], rc = %i", - i, DKEY(&nodekey), rc)); - else - DPRINTF(("found branch index %u [%s -> %"Z"u], rc = %i", - i, DKEY(&nodekey), NODEPGNO(node), rc)); -#endif - if (rc == 0) - break; - if (rc > 0) - low = i + 1; - else - high = i - 1; - } - } - - if (rc > 0) { /* Found entry is less than the key. */ - i++; /* Skip to get the smallest entry larger than key. */ - if (!IS_LEAF2(mp)) - node = NODEPTR(mp, i); - } - if (exactp) - *exactp = (rc == 0 && nkeys > 0); - /* store the key index */ - mc->mc_ki[mc->mc_top] = i; - if (i >= nkeys) - /* There is no entry larger or equal to the key. */ - return NULL; - - /* nodeptr is fake for LEAF2 */ - return node; -} - -#if 0 -static void -mdb_cursor_adjust(MDB_cursor *mc, func) -{ - MDB_cursor *m2; - - for (m2 = mc->mc_txn->mt_cursors[mc->mc_dbi]; m2; m2=m2->mc_next) { - if (m2->mc_pg[m2->mc_top] == mc->mc_pg[mc->mc_top]) { - func(mc, m2); - } - } -} -#endif - -/** Pop a page off the top of the cursor's stack. */ -static void -mdb_cursor_pop(MDB_cursor *mc) -{ - if (mc->mc_snum) { - DPRINTF(("popping page %"Z"u off db %d cursor %p", - mc->mc_pg[mc->mc_top]->mp_pgno, DDBI(mc), (void *) mc)); - - mc->mc_snum--; - if (mc->mc_snum) { - mc->mc_top--; - } else { - mc->mc_flags &= ~C_INITIALIZED; - } - } -} - -/** Push a page onto the top of the cursor's stack. - * Set #MDB_TXN_ERROR on failure. - */ -static int -mdb_cursor_push(MDB_cursor *mc, MDB_page *mp) -{ - DPRINTF(("pushing page %"Z"u on db %d cursor %p", mp->mp_pgno, - DDBI(mc), (void *) mc)); - - if (mc->mc_snum >= CURSOR_STACK) { - mc->mc_txn->mt_flags |= MDB_TXN_ERROR; - return MDB_CURSOR_FULL; - } - - mc->mc_top = mc->mc_snum++; - mc->mc_pg[mc->mc_top] = mp; - mc->mc_ki[mc->mc_top] = 0; - - return MDB_SUCCESS; -} - -/** Find the address of the page corresponding to a given page number. - * Set #MDB_TXN_ERROR on failure. - * @param[in] mc the cursor accessing the page. - * @param[in] pgno the page number for the page to retrieve. - * @param[out] ret address of a pointer where the page's address will be stored. - * @param[out] lvl dirty_list inheritance level of found page. 1=current txn, 0=mapped page. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_page_get(MDB_cursor *mc, pgno_t pgno, MDB_page **ret, int *lvl) -{ - MDB_txn *txn = mc->mc_txn; - MDB_env *env = txn->mt_env; - MDB_page *p = NULL; - int level; - - if (! (txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_WRITEMAP))) { - MDB_txn *tx2 = txn; - level = 1; - do { - MDB_ID2L dl = tx2->mt_u.dirty_list; - unsigned x; - /* Spilled pages were dirtied in this txn and flushed - * because the dirty list got full. Bring this page - * back in from the map (but don't unspill it here, - * leave that unless page_touch happens again). - */ - if (tx2->mt_spill_pgs) { - MDB_ID pn = pgno << 1; - x = mdb_midl_search(tx2->mt_spill_pgs, pn); - if (x <= tx2->mt_spill_pgs[0] && tx2->mt_spill_pgs[x] == pn) { - p = (MDB_page *)(env->me_map + env->me_psize * pgno); - goto done; - } - } - if (dl[0].mid) { - unsigned x = mdb_mid2l_search(dl, pgno); - if (x <= dl[0].mid && dl[x].mid == pgno) { - p = dl[x].mptr; - goto done; - } - } - level++; - } while ((tx2 = tx2->mt_parent) != NULL); - } - - if (pgno < txn->mt_next_pgno) { - level = 0; - p = (MDB_page *)(env->me_map + env->me_psize * pgno); - } else { - DPRINTF(("page %"Z"u not found", pgno)); - txn->mt_flags |= MDB_TXN_ERROR; - return MDB_PAGE_NOTFOUND; - } - -done: - *ret = p; - if (lvl) - *lvl = level; - return MDB_SUCCESS; -} - -/** Finish #mdb_page_search() / #mdb_page_search_lowest(). - * The cursor is at the root page, set up the rest of it. - */ -static int -mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int flags) -{ - MDB_page *mp = mc->mc_pg[mc->mc_top]; - int rc; - DKBUF; - - while (IS_BRANCH(mp)) { - MDB_node *node; - indx_t i; - - DPRINTF(("branch page %"Z"u has %u keys", mp->mp_pgno, NUMKEYS(mp))); - /* Don't assert on branch pages in the FreeDB. We can get here - * while in the process of rebalancing a FreeDB branch page; we must - * let that proceed. ITS#8336 - */ - mdb_cassert(mc, !mc->mc_dbi || NUMKEYS(mp) > 1); - DPRINTF(("found index 0 to page %"Z"u", NODEPGNO(NODEPTR(mp, 0)))); - - if (flags & (MDB_PS_FIRST|MDB_PS_LAST)) { - i = 0; - if (flags & MDB_PS_LAST) { - i = NUMKEYS(mp) - 1; - /* if already init'd, see if we're already in right place */ - if (mc->mc_flags & C_INITIALIZED) { - if (mc->mc_ki[mc->mc_top] == i) { - mc->mc_top = mc->mc_snum++; - mp = mc->mc_pg[mc->mc_top]; - goto ready; - } - } - } - } else { - int exact; - node = mdb_node_search(mc, key, &exact); - if (node == NULL) - i = NUMKEYS(mp) - 1; - else { - i = mc->mc_ki[mc->mc_top]; - if (!exact) { - mdb_cassert(mc, i > 0); - i--; - } - } - DPRINTF(("following index %u for key [%s]", i, DKEY(key))); - } - - mdb_cassert(mc, i < NUMKEYS(mp)); - node = NODEPTR(mp, i); - - if ((rc = mdb_page_get(mc, NODEPGNO(node), &mp, NULL)) != 0) - return rc; - - mc->mc_ki[mc->mc_top] = i; - if ((rc = mdb_cursor_push(mc, mp))) - return rc; - -ready: - if (flags & MDB_PS_MODIFY) { - if ((rc = mdb_page_touch(mc)) != 0) - return rc; - mp = mc->mc_pg[mc->mc_top]; - } - } - - if (!IS_LEAF(mp)) { - DPRINTF(("internal error, index points to a %02X page!?", - mp->mp_flags)); - mc->mc_txn->mt_flags |= MDB_TXN_ERROR; - return MDB_CORRUPTED; - } - - DPRINTF(("found leaf page %"Z"u for key [%s]", mp->mp_pgno, - key ? DKEY(key) : "null")); - mc->mc_flags |= C_INITIALIZED; - mc->mc_flags &= ~C_EOF; - - return MDB_SUCCESS; -} - -/** Search for the lowest key under the current branch page. - * This just bypasses a NUMKEYS check in the current page - * before calling mdb_page_search_root(), because the callers - * are all in situations where the current page is known to - * be underfilled. - */ -static int -mdb_page_search_lowest(MDB_cursor *mc) -{ - MDB_page *mp = mc->mc_pg[mc->mc_top]; - MDB_node *node = NODEPTR(mp, 0); - int rc; - - if ((rc = mdb_page_get(mc, NODEPGNO(node), &mp, NULL)) != 0) - return rc; - - mc->mc_ki[mc->mc_top] = 0; - if ((rc = mdb_cursor_push(mc, mp))) - return rc; - return mdb_page_search_root(mc, NULL, MDB_PS_FIRST); -} - -/** Search for the page a given key should be in. - * Push it and its parent pages on the cursor stack. - * @param[in,out] mc the cursor for this operation. - * @param[in] key the key to search for, or NULL for first/last page. - * @param[in] flags If MDB_PS_MODIFY is set, visited pages in the DB - * are touched (updated with new page numbers). - * If MDB_PS_FIRST or MDB_PS_LAST is set, find first or last leaf. - * This is used by #mdb_cursor_first() and #mdb_cursor_last(). - * If MDB_PS_ROOTONLY set, just fetch root node, no further lookups. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_page_search(MDB_cursor *mc, MDB_val *key, int flags) -{ - int rc; - pgno_t root; - - /* Make sure the txn is still viable, then find the root from - * the txn's db table and set it as the root of the cursor's stack. - */ - if (mc->mc_txn->mt_flags & MDB_TXN_BLOCKED) { - DPUTS("transaction may not be used now"); - return MDB_BAD_TXN; - } else { - /* Make sure we're using an up-to-date root */ - if (*mc->mc_dbflag & DB_STALE) { - MDB_cursor mc2; - if (TXN_DBI_CHANGED(mc->mc_txn, mc->mc_dbi)) - return MDB_BAD_DBI; - mdb_cursor_init(&mc2, mc->mc_txn, MAIN_DBI, NULL); - rc = mdb_page_search(&mc2, &mc->mc_dbx->md_name, 0); - if (rc) - return rc; - { - MDB_val data; - int exact = 0; - uint16_t flags; - MDB_node *leaf = mdb_node_search(&mc2, - &mc->mc_dbx->md_name, &exact); - if (!exact) - return MDB_NOTFOUND; - if ((leaf->mn_flags & (F_DUPDATA|F_SUBDATA)) != F_SUBDATA) - return MDB_INCOMPATIBLE; /* not a named DB */ - rc = mdb_node_read(&mc2, leaf, &data); - if (rc) - return rc; - memcpy(&flags, ((char *) data.mv_data + offsetof(MDB_db, md_flags)), - sizeof(uint16_t)); - /* The txn may not know this DBI, or another process may - * have dropped and recreated the DB with other flags. - */ - if ((mc->mc_db->md_flags & PERSISTENT_FLAGS) != flags) - return MDB_INCOMPATIBLE; - memcpy(mc->mc_db, data.mv_data, sizeof(MDB_db)); - } - *mc->mc_dbflag &= ~DB_STALE; - } - root = mc->mc_db->md_root; - - if (root == P_INVALID) { /* Tree is empty. */ - DPUTS("tree is empty"); - return MDB_NOTFOUND; - } - } - - mdb_cassert(mc, root > 1); - if (!mc->mc_pg[0] || mc->mc_pg[0]->mp_pgno != root) - if ((rc = mdb_page_get(mc, root, &mc->mc_pg[0], NULL)) != 0) - return rc; - - mc->mc_snum = 1; - mc->mc_top = 0; - - DPRINTF(("db %d root page %"Z"u has flags 0x%X", - DDBI(mc), root, mc->mc_pg[0]->mp_flags)); - - if (flags & MDB_PS_MODIFY) { - if ((rc = mdb_page_touch(mc))) - return rc; - } - - if (flags & MDB_PS_ROOTONLY) - return MDB_SUCCESS; - - return mdb_page_search_root(mc, key, flags); -} - -static int -mdb_ovpage_free(MDB_cursor *mc, MDB_page *mp) -{ - MDB_txn *txn = mc->mc_txn; - pgno_t pg = mp->mp_pgno; - unsigned x = 0, ovpages = mp->mp_pages; - MDB_env *env = txn->mt_env; - MDB_IDL sl = txn->mt_spill_pgs; - MDB_ID pn = pg << 1; - int rc; - - DPRINTF(("free ov page %"Z"u (%d)", pg, ovpages)); - /* If the page is dirty or on the spill list we just acquired it, - * so we should give it back to our current free list, if any. - * Otherwise put it onto the list of pages we freed in this txn. - * - * Won't create me_pghead: me_pglast must be inited along with it. - * Unsupported in nested txns: They would need to hide the page - * range in ancestor txns' dirty and spilled lists. - */ - if (env->me_pghead && - !txn->mt_parent && - ((mp->mp_flags & P_DIRTY) || - (sl && (x = mdb_midl_search(sl, pn)) <= sl[0] && sl[x] == pn))) - { - unsigned i, j; - pgno_t *mop; - MDB_ID2 *dl, ix, iy; - rc = mdb_midl_need(&env->me_pghead, ovpages); - if (rc) - return rc; - if (!(mp->mp_flags & P_DIRTY)) { - /* This page is no longer spilled */ - if (x == sl[0]) - sl[0]--; - else - sl[x] |= 1; - goto release; - } - /* Remove from dirty list */ - dl = txn->mt_u.dirty_list; - x = dl[0].mid--; - for (ix = dl[x]; ix.mptr != mp; ix = iy) { - if (x > 1) { - x--; - iy = dl[x]; - dl[x] = ix; - } else { - mdb_cassert(mc, x > 1); - j = ++(dl[0].mid); - dl[j] = ix; /* Unsorted. OK when MDB_TXN_ERROR. */ - txn->mt_flags |= MDB_TXN_ERROR; - return MDB_CORRUPTED; - } - } - txn->mt_dirty_room++; - if (!(env->me_flags & MDB_WRITEMAP)) - mdb_dpage_free(env, mp); -release: - /* Insert in me_pghead */ - mop = env->me_pghead; - j = mop[0] + ovpages; - for (i = mop[0]; i && mop[i] < pg; i--) - mop[j--] = mop[i]; - while (j>i) - mop[j--] = pg++; - mop[0] += ovpages; - } else { - rc = mdb_midl_append_range(&txn->mt_free_pgs, pg, ovpages); - if (rc) - return rc; - } - mc->mc_db->md_overflow_pages -= ovpages; - return 0; -} - -/** Return the data associated with a given node. - * @param[in] mc The cursor for this operation. - * @param[in] leaf The node being read. - * @param[out] data Updated to point to the node's data. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_node_read(MDB_cursor *mc, MDB_node *leaf, MDB_val *data) -{ - MDB_page *omp; /* overflow page */ - pgno_t pgno; - int rc; - - if (!F_ISSET(leaf->mn_flags, F_BIGDATA)) { - data->mv_size = NODEDSZ(leaf); - data->mv_data = NODEDATA(leaf); - return MDB_SUCCESS; - } - - /* Read overflow data. - */ - data->mv_size = NODEDSZ(leaf); - memcpy(&pgno, NODEDATA(leaf), sizeof(pgno)); - if ((rc = mdb_page_get(mc, pgno, &omp, NULL)) != 0) { - DPRINTF(("read overflow page %"Z"u failed", pgno)); - return rc; - } - data->mv_data = METADATA(omp); - - return MDB_SUCCESS; -} - -int -mdb_get(MDB_txn *txn, MDB_dbi dbi, - MDB_val *key, MDB_val *data) -{ - MDB_cursor mc; - MDB_xcursor mx; - int exact = 0; - DKBUF; - - DPRINTF(("===> get db %u key [%s]", dbi, DKEY(key))); - - if (!key || !data || !TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) - return EINVAL; - - if (txn->mt_flags & MDB_TXN_BLOCKED) - return MDB_BAD_TXN; - - mdb_cursor_init(&mc, txn, dbi, &mx); - return mdb_cursor_set(&mc, key, data, MDB_SET, &exact); -} - -/** Find a sibling for a page. - * Replaces the page at the top of the cursor's stack with the - * specified sibling, if one exists. - * @param[in] mc The cursor for this operation. - * @param[in] move_right Non-zero if the right sibling is requested, - * otherwise the left sibling. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_cursor_sibling(MDB_cursor *mc, int move_right) -{ - int rc; - MDB_node *indx; - MDB_page *mp; - - if (mc->mc_snum < 2) { - return MDB_NOTFOUND; /* root has no siblings */ - } - - mdb_cursor_pop(mc); - DPRINTF(("parent page is page %"Z"u, index %u", - mc->mc_pg[mc->mc_top]->mp_pgno, mc->mc_ki[mc->mc_top])); - - if (move_right ? (mc->mc_ki[mc->mc_top] + 1u >= NUMKEYS(mc->mc_pg[mc->mc_top])) - : (mc->mc_ki[mc->mc_top] == 0)) { - DPRINTF(("no more keys left, moving to %s sibling", - move_right ? "right" : "left")); - if ((rc = mdb_cursor_sibling(mc, move_right)) != MDB_SUCCESS) { - /* undo cursor_pop before returning */ - mc->mc_top++; - mc->mc_snum++; - return rc; - } - } else { - if (move_right) - mc->mc_ki[mc->mc_top]++; - else - mc->mc_ki[mc->mc_top]--; - DPRINTF(("just moving to %s index key %u", - move_right ? "right" : "left", mc->mc_ki[mc->mc_top])); - } - mdb_cassert(mc, IS_BRANCH(mc->mc_pg[mc->mc_top])); - - indx = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); - if ((rc = mdb_page_get(mc, NODEPGNO(indx), &mp, NULL)) != 0) { - /* mc will be inconsistent if caller does mc_snum++ as above */ - mc->mc_flags &= ~(C_INITIALIZED|C_EOF); - return rc; - } - - mdb_cursor_push(mc, mp); - if (!move_right) - mc->mc_ki[mc->mc_top] = NUMKEYS(mp)-1; - - return MDB_SUCCESS; -} - -/** Move the cursor to the next data item. */ -static int -mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op) -{ - MDB_page *mp; - MDB_node *leaf; - int rc; - - if ((mc->mc_flags & C_DEL && op == MDB_NEXT_DUP)) - return MDB_NOTFOUND; - - if (!(mc->mc_flags & C_INITIALIZED)) - return mdb_cursor_first(mc, key, data); - - mp = mc->mc_pg[mc->mc_top]; - - if (mc->mc_flags & C_EOF) { - if (mc->mc_ki[mc->mc_top] >= NUMKEYS(mp)-1) - return MDB_NOTFOUND; - mc->mc_flags ^= C_EOF; - } - - if (mc->mc_db->md_flags & MDB_DUPSORT) { - leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); - if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { - if (op == MDB_NEXT || op == MDB_NEXT_DUP) { - rc = mdb_cursor_next(&mc->mc_xcursor->mx_cursor, data, NULL, MDB_NEXT); - if (op != MDB_NEXT || rc != MDB_NOTFOUND) { - if (rc == MDB_SUCCESS) - MDB_GET_KEY(leaf, key); - return rc; - } - } - } else { - mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); - if (op == MDB_NEXT_DUP) - return MDB_NOTFOUND; - } - } - - DPRINTF(("cursor_next: top page is %"Z"u in cursor %p", - mdb_dbg_pgno(mp), (void *) mc)); - if (mc->mc_flags & C_DEL) { - mc->mc_flags ^= C_DEL; - goto skip; - } - - if (mc->mc_ki[mc->mc_top] + 1u >= NUMKEYS(mp)) { - DPUTS("=====> move to next sibling page"); - if ((rc = mdb_cursor_sibling(mc, 1)) != MDB_SUCCESS) { - mc->mc_flags |= C_EOF; - return rc; - } - mp = mc->mc_pg[mc->mc_top]; - DPRINTF(("next page is %"Z"u, key index %u", mp->mp_pgno, mc->mc_ki[mc->mc_top])); - } else - mc->mc_ki[mc->mc_top]++; - -skip: - DPRINTF(("==> cursor points to page %"Z"u with %u keys, key index %u", - mdb_dbg_pgno(mp), NUMKEYS(mp), mc->mc_ki[mc->mc_top])); - - if (IS_LEAF2(mp)) { - key->mv_size = mc->mc_db->md_pad; - key->mv_data = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], key->mv_size); - return MDB_SUCCESS; - } - - mdb_cassert(mc, IS_LEAF(mp)); - leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); - - if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { - mdb_xcursor_init1(mc, leaf); - rc = mdb_cursor_first(&mc->mc_xcursor->mx_cursor, data, NULL); - if (rc != MDB_SUCCESS) - return rc; - } else if (data) { - if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) - return rc; - } - - MDB_GET_KEY(leaf, key); - return MDB_SUCCESS; -} - -/** Move the cursor to the previous data item. */ -static int -mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op) -{ - MDB_page *mp; - MDB_node *leaf; - int rc; - - if (!(mc->mc_flags & C_INITIALIZED)) { - rc = mdb_cursor_last(mc, key, data); - if (rc) - return rc; - mc->mc_ki[mc->mc_top]++; - } - - mp = mc->mc_pg[mc->mc_top]; - - if ((mc->mc_db->md_flags & MDB_DUPSORT) && - mc->mc_ki[mc->mc_top] < NUMKEYS(mp)) { - leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); - if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { - if (op == MDB_PREV || op == MDB_PREV_DUP) { - rc = mdb_cursor_prev(&mc->mc_xcursor->mx_cursor, data, NULL, MDB_PREV); - if (op != MDB_PREV || rc != MDB_NOTFOUND) { - if (rc == MDB_SUCCESS) { - MDB_GET_KEY(leaf, key); - mc->mc_flags &= ~C_EOF; - } - return rc; - } - } - } else { - mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); - if (op == MDB_PREV_DUP) - return MDB_NOTFOUND; - } - } - - DPRINTF(("cursor_prev: top page is %"Z"u in cursor %p", - mdb_dbg_pgno(mp), (void *) mc)); - - mc->mc_flags &= ~(C_EOF|C_DEL); - - if (mc->mc_ki[mc->mc_top] == 0) { - DPUTS("=====> move to prev sibling page"); - if ((rc = mdb_cursor_sibling(mc, 0)) != MDB_SUCCESS) { - return rc; - } - mp = mc->mc_pg[mc->mc_top]; - mc->mc_ki[mc->mc_top] = NUMKEYS(mp) - 1; - DPRINTF(("prev page is %"Z"u, key index %u", mp->mp_pgno, mc->mc_ki[mc->mc_top])); - } else - mc->mc_ki[mc->mc_top]--; - - DPRINTF(("==> cursor points to page %"Z"u with %u keys, key index %u", - mdb_dbg_pgno(mp), NUMKEYS(mp), mc->mc_ki[mc->mc_top])); - - if (!IS_LEAF(mp)) - return MDB_CORRUPTED; - - if (IS_LEAF2(mp)) { - key->mv_size = mc->mc_db->md_pad; - key->mv_data = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], key->mv_size); - return MDB_SUCCESS; - } - - leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); - - if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { - mdb_xcursor_init1(mc, leaf); - rc = mdb_cursor_last(&mc->mc_xcursor->mx_cursor, data, NULL); - if (rc != MDB_SUCCESS) - return rc; - } else if (data) { - if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) - return rc; - } - - MDB_GET_KEY(leaf, key); - return MDB_SUCCESS; -} - -/** Set the cursor on a specific data item. */ -static int -mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data, - MDB_cursor_op op, int *exactp) -{ - int rc; - MDB_page *mp; - MDB_node *leaf = NULL; - DKBUF; - - if (key->mv_size == 0) - return MDB_BAD_VALSIZE; - - if (mc->mc_xcursor) - mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); - - /* See if we're already on the right page */ - if (mc->mc_flags & C_INITIALIZED) { - MDB_val nodekey; - - mp = mc->mc_pg[mc->mc_top]; - if (!NUMKEYS(mp)) { - mc->mc_ki[mc->mc_top] = 0; - return MDB_NOTFOUND; - } - if (MP_FLAGS(mp) & P_LEAF2) { - nodekey.mv_size = mc->mc_db->md_pad; - nodekey.mv_data = LEAF2KEY(mp, 0, nodekey.mv_size); - } else { - leaf = NODEPTR(mp, 0); - MDB_GET_KEY2(leaf, nodekey); - } - rc = mc->mc_dbx->md_cmp(key, &nodekey); - if (rc == 0) { - /* Probably happens rarely, but first node on the page - * was the one we wanted. - */ - mc->mc_ki[mc->mc_top] = 0; - if (exactp) - *exactp = 1; - goto set1; - } - if (rc > 0) { - unsigned int i; - unsigned int nkeys = NUMKEYS(mp); - if (nkeys > 1) { - if (MP_FLAGS(mp) & P_LEAF2) { - nodekey.mv_data = LEAF2KEY(mp, - nkeys-1, nodekey.mv_size); - } else { - leaf = NODEPTR(mp, nkeys-1); - MDB_GET_KEY2(leaf, nodekey); - } - rc = mc->mc_dbx->md_cmp(key, &nodekey); - if (rc == 0) { - /* last node was the one we wanted */ - mc->mc_ki[mc->mc_top] = nkeys-1; - if (exactp) - *exactp = 1; - goto set1; - } - if (rc < 0) { - if (mc->mc_ki[mc->mc_top] < NUMKEYS(mp)) { - /* This is definitely the right page, skip search_page */ - if (MP_FLAGS(mp) & P_LEAF2) { - nodekey.mv_data = LEAF2KEY(mp, - mc->mc_ki[mc->mc_top], nodekey.mv_size); - } else { - leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); - MDB_GET_KEY2(leaf, nodekey); - } - rc = mc->mc_dbx->md_cmp(key, &nodekey); - if (rc == 0) { - /* current node was the one we wanted */ - if (exactp) - *exactp = 1; - goto set1; - } - } - rc = 0; - mc->mc_flags &= ~C_EOF; - goto set2; - } - } - /* If any parents have right-sibs, search. - * Otherwise, there's nothing further. - */ - for (i=0; imc_top; i++) - if (mc->mc_ki[i] < - NUMKEYS(mc->mc_pg[i])-1) - break; - if (i == mc->mc_top) { - /* There are no other pages */ - mc->mc_ki[mc->mc_top] = nkeys; - return MDB_NOTFOUND; - } - } - if (!mc->mc_top) { - /* There are no other pages */ - mc->mc_ki[mc->mc_top] = 0; - if (op == MDB_SET_RANGE && !exactp) { - rc = 0; - goto set1; - } else - return MDB_NOTFOUND; - } - } else { - mc->mc_pg[0] = 0; - } - - rc = mdb_page_search(mc, key, 0); - if (rc != MDB_SUCCESS) - return rc; - - mp = mc->mc_pg[mc->mc_top]; - mdb_cassert(mc, IS_LEAF(mp)); - -set2: - leaf = mdb_node_search(mc, key, exactp); - if (exactp != NULL && !*exactp) { - /* MDB_SET specified and not an exact match. */ - return MDB_NOTFOUND; - } - - if (leaf == NULL) { - DPUTS("===> inexact leaf not found, goto sibling"); - if ((rc = mdb_cursor_sibling(mc, 1)) != MDB_SUCCESS) { - mc->mc_flags |= C_EOF; - return rc; /* no entries matched */ - } - mp = mc->mc_pg[mc->mc_top]; - mdb_cassert(mc, IS_LEAF(mp)); - leaf = NODEPTR(mp, 0); - } - -set1: - mc->mc_flags |= C_INITIALIZED; - mc->mc_flags &= ~C_EOF; - - if (IS_LEAF2(mp)) { - if (op == MDB_SET_RANGE || op == MDB_SET_KEY) { - key->mv_size = mc->mc_db->md_pad; - key->mv_data = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], key->mv_size); - } - return MDB_SUCCESS; - } - - if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { - mdb_xcursor_init1(mc, leaf); - if (op == MDB_SET || op == MDB_SET_KEY || op == MDB_SET_RANGE) { - rc = mdb_cursor_first(&mc->mc_xcursor->mx_cursor, data, NULL); - } else { - int ex2, *ex2p; - if (op == MDB_GET_BOTH) { - ex2p = &ex2; - ex2 = 0; - } else { - ex2p = NULL; - } - rc = mdb_cursor_set(&mc->mc_xcursor->mx_cursor, data, NULL, MDB_SET_RANGE, ex2p); - if (rc != MDB_SUCCESS) - return rc; - } - } else if (data) { - if (op == MDB_GET_BOTH || op == MDB_GET_BOTH_RANGE) { - MDB_val olddata; - MDB_cmp_func *dcmp; - if ((rc = mdb_node_read(mc, leaf, &olddata)) != MDB_SUCCESS) - return rc; - dcmp = mc->mc_dbx->md_dcmp; -#if UINT_MAX < SIZE_MAX - if (dcmp == mdb_cmp_int && olddata.mv_size == sizeof(size_t)) - dcmp = mdb_cmp_clong; -#endif - rc = dcmp(data, &olddata); - if (rc) { - if (op == MDB_GET_BOTH || rc > 0) - return MDB_NOTFOUND; - rc = 0; - } - *data = olddata; - - } else { - if (mc->mc_xcursor) - mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); - if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) - return rc; - } - } - - /* The key already matches in all other cases */ - if (op == MDB_SET_RANGE || op == MDB_SET_KEY) - MDB_GET_KEY(leaf, key); - DPRINTF(("==> cursor placed on key [%s]", DKEY(key))); - - return rc; -} - -/** Move the cursor to the first item in the database. */ -static int -mdb_cursor_first(MDB_cursor *mc, MDB_val *key, MDB_val *data) -{ - int rc; - MDB_node *leaf; - - if (mc->mc_xcursor) - mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); - - if (!(mc->mc_flags & C_INITIALIZED) || mc->mc_top) { - rc = mdb_page_search(mc, NULL, MDB_PS_FIRST); - if (rc != MDB_SUCCESS) - return rc; - } - mdb_cassert(mc, IS_LEAF(mc->mc_pg[mc->mc_top])); - - leaf = NODEPTR(mc->mc_pg[mc->mc_top], 0); - mc->mc_flags |= C_INITIALIZED; - mc->mc_flags &= ~C_EOF; - - mc->mc_ki[mc->mc_top] = 0; - - if (IS_LEAF2(mc->mc_pg[mc->mc_top])) { - if ( key ) { - key->mv_size = mc->mc_db->md_pad; - key->mv_data = LEAF2KEY(mc->mc_pg[mc->mc_top], 0, key->mv_size); - } - return MDB_SUCCESS; - } - - if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { - mdb_xcursor_init1(mc, leaf); - rc = mdb_cursor_first(&mc->mc_xcursor->mx_cursor, data, NULL); - if (rc) - return rc; - } else if (data) { - if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) - return rc; - } - - MDB_GET_KEY(leaf, key); - return MDB_SUCCESS; -} - -/** Move the cursor to the last item in the database. */ -static int -mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data) -{ - int rc; - MDB_node *leaf; - - if (mc->mc_xcursor) - mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); - - if (!(mc->mc_flags & C_INITIALIZED) || mc->mc_top) { - rc = mdb_page_search(mc, NULL, MDB_PS_LAST); - if (rc != MDB_SUCCESS) - return rc; - } - mdb_cassert(mc, IS_LEAF(mc->mc_pg[mc->mc_top])); - - mc->mc_ki[mc->mc_top] = NUMKEYS(mc->mc_pg[mc->mc_top]) - 1; - mc->mc_flags |= C_INITIALIZED|C_EOF; - leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); - - if (IS_LEAF2(mc->mc_pg[mc->mc_top])) { - if (key) { - key->mv_size = mc->mc_db->md_pad; - key->mv_data = LEAF2KEY(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top], key->mv_size); - } - return MDB_SUCCESS; - } - - if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { - mdb_xcursor_init1(mc, leaf); - rc = mdb_cursor_last(&mc->mc_xcursor->mx_cursor, data, NULL); - if (rc) - return rc; - } else if (data) { - if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) - return rc; - } - - MDB_GET_KEY(leaf, key); - return MDB_SUCCESS; -} - -int -mdb_cursor_get(MDB_cursor *mc, MDB_val *key, MDB_val *data, - MDB_cursor_op op) -{ - int rc; - int exact = 0; - int (*mfunc)(MDB_cursor *mc, MDB_val *key, MDB_val *data); - - if (mc == NULL) - return EINVAL; - - if (mc->mc_txn->mt_flags & MDB_TXN_BLOCKED) - return MDB_BAD_TXN; - - switch (op) { - case MDB_GET_CURRENT: - if (!(mc->mc_flags & C_INITIALIZED)) { - rc = EINVAL; - } else { - MDB_page *mp = mc->mc_pg[mc->mc_top]; - int nkeys = NUMKEYS(mp); - if (!nkeys || mc->mc_ki[mc->mc_top] >= nkeys) { - mc->mc_ki[mc->mc_top] = nkeys; - rc = MDB_NOTFOUND; - break; - } - rc = MDB_SUCCESS; - if (IS_LEAF2(mp)) { - key->mv_size = mc->mc_db->md_pad; - key->mv_data = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], key->mv_size); - } else { - MDB_node *leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); - MDB_GET_KEY(leaf, key); - if (data) { - if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { - rc = mdb_cursor_get(&mc->mc_xcursor->mx_cursor, data, NULL, MDB_GET_CURRENT); - } else { - rc = mdb_node_read(mc, leaf, data); - } - } - } - } - break; - case MDB_GET_BOTH: - case MDB_GET_BOTH_RANGE: - if (data == NULL) { - rc = EINVAL; - break; - } - if (mc->mc_xcursor == NULL) { - rc = MDB_INCOMPATIBLE; - break; - } - /* FALLTHRU */ - case MDB_SET: - case MDB_SET_KEY: - case MDB_SET_RANGE: - if (key == NULL) { - rc = EINVAL; - } else { - rc = mdb_cursor_set(mc, key, data, op, - op == MDB_SET_RANGE ? NULL : &exact); - } - break; - case MDB_GET_MULTIPLE: - if (data == NULL || !(mc->mc_flags & C_INITIALIZED)) { - rc = EINVAL; - break; - } - if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) { - rc = MDB_INCOMPATIBLE; - break; - } - rc = MDB_SUCCESS; - if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) || - (mc->mc_xcursor->mx_cursor.mc_flags & C_EOF)) - break; - goto fetchm; - case MDB_NEXT_MULTIPLE: - if (data == NULL) { - rc = EINVAL; - break; - } - if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) { - rc = MDB_INCOMPATIBLE; - break; - } - rc = mdb_cursor_next(mc, key, data, MDB_NEXT_DUP); - if (rc == MDB_SUCCESS) { - if (mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) { - MDB_cursor *mx; -fetchm: - mx = &mc->mc_xcursor->mx_cursor; - data->mv_size = NUMKEYS(mx->mc_pg[mx->mc_top]) * - mx->mc_db->md_pad; - data->mv_data = METADATA(mx->mc_pg[mx->mc_top]); - mx->mc_ki[mx->mc_top] = NUMKEYS(mx->mc_pg[mx->mc_top])-1; - } else { - rc = MDB_NOTFOUND; - } - } - break; - case MDB_PREV_MULTIPLE: - if (data == NULL) { - rc = EINVAL; - break; - } - if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) { - rc = MDB_INCOMPATIBLE; - break; - } - if (!(mc->mc_flags & C_INITIALIZED)) - rc = mdb_cursor_last(mc, key, data); - else - rc = MDB_SUCCESS; - if (rc == MDB_SUCCESS) { - MDB_cursor *mx = &mc->mc_xcursor->mx_cursor; - if (mx->mc_flags & C_INITIALIZED) { - rc = mdb_cursor_sibling(mx, 0); - if (rc == MDB_SUCCESS) - goto fetchm; - } else { - rc = MDB_NOTFOUND; - } - } - break; - case MDB_NEXT: - case MDB_NEXT_DUP: - case MDB_NEXT_NODUP: - rc = mdb_cursor_next(mc, key, data, op); - break; - case MDB_PREV: - case MDB_PREV_DUP: - case MDB_PREV_NODUP: - rc = mdb_cursor_prev(mc, key, data, op); - break; - case MDB_FIRST: - rc = mdb_cursor_first(mc, key, data); - break; - case MDB_FIRST_DUP: - mfunc = mdb_cursor_first; - mmove: - if (data == NULL || !(mc->mc_flags & C_INITIALIZED)) { - rc = EINVAL; - break; - } - if (mc->mc_xcursor == NULL) { - rc = MDB_INCOMPATIBLE; - break; - } - if (mc->mc_ki[mc->mc_top] >= NUMKEYS(mc->mc_pg[mc->mc_top])) { - mc->mc_ki[mc->mc_top] = NUMKEYS(mc->mc_pg[mc->mc_top]); - rc = MDB_NOTFOUND; - break; - } - mc->mc_flags &= ~C_EOF; - { - MDB_node *leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); - if (!F_ISSET(leaf->mn_flags, F_DUPDATA)) { - MDB_GET_KEY(leaf, key); - rc = mdb_node_read(mc, leaf, data); - break; - } - } - if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED)) { - rc = EINVAL; - break; - } - rc = mfunc(&mc->mc_xcursor->mx_cursor, data, NULL); - break; - case MDB_LAST: - rc = mdb_cursor_last(mc, key, data); - break; - case MDB_LAST_DUP: - mfunc = mdb_cursor_last; - goto mmove; - default: - DPRINTF(("unhandled/unimplemented cursor operation %u", op)); - rc = EINVAL; - break; - } - - if (mc->mc_flags & C_DEL) - mc->mc_flags ^= C_DEL; - - return rc; -} - -/** Touch all the pages in the cursor stack. Set mc_top. - * Makes sure all the pages are writable, before attempting a write operation. - * @param[in] mc The cursor to operate on. - */ -static int -mdb_cursor_touch(MDB_cursor *mc) -{ - int rc = MDB_SUCCESS; - - if (mc->mc_dbi >= CORE_DBS && !(*mc->mc_dbflag & (DB_DIRTY|DB_DUPDATA))) { - /* Touch DB record of named DB */ - MDB_cursor mc2; - MDB_xcursor mcx; - if (TXN_DBI_CHANGED(mc->mc_txn, mc->mc_dbi)) - return MDB_BAD_DBI; - mdb_cursor_init(&mc2, mc->mc_txn, MAIN_DBI, &mcx); - rc = mdb_page_search(&mc2, &mc->mc_dbx->md_name, MDB_PS_MODIFY); - if (rc) - return rc; - *mc->mc_dbflag |= DB_DIRTY; - } - mc->mc_top = 0; - if (mc->mc_snum) { - do { - rc = mdb_page_touch(mc); - } while (!rc && ++(mc->mc_top) < mc->mc_snum); - mc->mc_top = mc->mc_snum-1; - } - return rc; -} - -/** Do not spill pages to disk if txn is getting full, may fail instead */ -#define MDB_NOSPILL 0x8000 - -int -mdb_cursor_put(MDB_cursor *mc, MDB_val *key, MDB_val *data, - unsigned int flags) -{ - MDB_env *env; - MDB_node *leaf = NULL; - MDB_page *fp, *mp, *sub_root = NULL; - uint16_t fp_flags; - MDB_val xdata, *rdata, dkey, olddata; - MDB_db dummy; - int do_sub = 0, insert_key, insert_data; - unsigned int mcount = 0, dcount = 0, nospill; - size_t nsize; - int rc, rc2; - unsigned int nflags; - DKBUF; - - if (mc == NULL || key == NULL) - return EINVAL; - - env = mc->mc_txn->mt_env; - - /* Check this first so counter will always be zero on any - * early failures. - */ - if (flags & MDB_MULTIPLE) { - dcount = data[1].mv_size; - data[1].mv_size = 0; - if (!F_ISSET(mc->mc_db->md_flags, MDB_DUPFIXED)) - return MDB_INCOMPATIBLE; - } - - nospill = flags & MDB_NOSPILL; - flags &= ~MDB_NOSPILL; - - if (mc->mc_txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_BLOCKED)) - return (mc->mc_txn->mt_flags & MDB_TXN_RDONLY) ? EACCES : MDB_BAD_TXN; - - if (key->mv_size-1 >= ENV_MAXKEY(env)) - return MDB_BAD_VALSIZE; - -#if SIZE_MAX > MAXDATASIZE - if (data->mv_size > ((mc->mc_db->md_flags & MDB_DUPSORT) ? ENV_MAXKEY(env) : MAXDATASIZE)) - return MDB_BAD_VALSIZE; -#else - if ((mc->mc_db->md_flags & MDB_DUPSORT) && data->mv_size > ENV_MAXKEY(env)) - return MDB_BAD_VALSIZE; -#endif - - DPRINTF(("==> put db %d key [%s], size %"Z"u, data size %"Z"u", - DDBI(mc), DKEY(key), key ? key->mv_size : 0, data->mv_size)); - - dkey.mv_size = 0; - - if (flags & MDB_CURRENT) { - if (!(mc->mc_flags & C_INITIALIZED)) - return EINVAL; - rc = MDB_SUCCESS; - } else if (mc->mc_db->md_root == P_INVALID) { - /* new database, cursor has nothing to point to */ - mc->mc_snum = 0; - mc->mc_top = 0; - mc->mc_flags &= ~C_INITIALIZED; - rc = MDB_NO_ROOT; - } else { - int exact = 0; - MDB_val d2; - if (flags & MDB_APPEND) { - MDB_val k2; - rc = mdb_cursor_last(mc, &k2, &d2); - if (rc == 0) { - rc = mc->mc_dbx->md_cmp(key, &k2); - if (rc > 0) { - rc = MDB_NOTFOUND; - mc->mc_ki[mc->mc_top]++; - } else { - /* new key is <= last key */ - rc = MDB_KEYEXIST; - } - } - } else { - rc = mdb_cursor_set(mc, key, &d2, MDB_SET, &exact); - } - if ((flags & MDB_NOOVERWRITE) && rc == 0) { - DPRINTF(("duplicate key [%s]", DKEY(key))); - *data = d2; - return MDB_KEYEXIST; - } - if (rc && rc != MDB_NOTFOUND) - return rc; - } - - if (mc->mc_flags & C_DEL) - mc->mc_flags ^= C_DEL; - - /* Cursor is positioned, check for room in the dirty list */ - if (!nospill) { - if (flags & MDB_MULTIPLE) { - rdata = &xdata; - xdata.mv_size = data->mv_size * dcount; - } else { - rdata = data; - } - if ((rc2 = mdb_page_spill(mc, key, rdata))) - return rc2; - } - - if (rc == MDB_NO_ROOT) { - MDB_page *np; - /* new database, write a root leaf page */ - DPUTS("allocating new root leaf page"); - if ((rc2 = mdb_page_new(mc, P_LEAF, 1, &np))) { - return rc2; - } - mdb_cursor_push(mc, np); - mc->mc_db->md_root = np->mp_pgno; - mc->mc_db->md_depth++; - *mc->mc_dbflag |= DB_DIRTY; - if ((mc->mc_db->md_flags & (MDB_DUPSORT|MDB_DUPFIXED)) - == MDB_DUPFIXED) - MP_FLAGS(np) |= P_LEAF2; - mc->mc_flags |= C_INITIALIZED; - } else { - /* make sure all cursor pages are writable */ - rc2 = mdb_cursor_touch(mc); - if (rc2) - return rc2; - } - - insert_key = insert_data = rc; - if (insert_key) { - /* The key does not exist */ - DPRINTF(("inserting key at index %i", mc->mc_ki[mc->mc_top])); - if ((mc->mc_db->md_flags & MDB_DUPSORT) && - LEAFSIZE(key, data) > env->me_nodemax) - { - /* Too big for a node, insert in sub-DB. Set up an empty - * "old sub-page" for prep_subDB to expand to a full page. - */ - fp_flags = P_LEAF|P_DIRTY; - fp = env->me_pbuf; - fp->mp_pad = data->mv_size; /* used if MDB_DUPFIXED */ - MP_LOWER(fp) = MP_UPPER(fp) = (PAGEHDRSZ-PAGEBASE); - olddata.mv_size = PAGEHDRSZ; - goto prep_subDB; - } - } else { - /* there's only a key anyway, so this is a no-op */ - if (IS_LEAF2(mc->mc_pg[mc->mc_top])) { - char *ptr; - unsigned int ksize = mc->mc_db->md_pad; - if (key->mv_size != ksize) - return MDB_BAD_VALSIZE; - ptr = LEAF2KEY(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top], ksize); - memcpy(ptr, key->mv_data, ksize); -fix_parent: - /* if overwriting slot 0 of leaf, need to - * update branch key if there is a parent page - */ - if (mc->mc_top && !mc->mc_ki[mc->mc_top]) { - unsigned short dtop = 1; - mc->mc_top--; - /* slot 0 is always an empty key, find real slot */ - while (mc->mc_top && !mc->mc_ki[mc->mc_top]) { - mc->mc_top--; - dtop++; - } - if (mc->mc_ki[mc->mc_top]) - rc2 = mdb_update_key(mc, key); - else - rc2 = MDB_SUCCESS; - mc->mc_top += dtop; - if (rc2) - return rc2; - } - return MDB_SUCCESS; - } - -more: - leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); - olddata.mv_size = NODEDSZ(leaf); - olddata.mv_data = NODEDATA(leaf); - - /* DB has dups? */ - if (F_ISSET(mc->mc_db->md_flags, MDB_DUPSORT)) { - /* Prepare (sub-)page/sub-DB to accept the new item, - * if needed. fp: old sub-page or a header faking - * it. mp: new (sub-)page. offset: growth in page - * size. xdata: node data with new page or DB. - */ - unsigned i, offset = 0; - mp = fp = xdata.mv_data = env->me_pbuf; - mp->mp_pgno = mc->mc_pg[mc->mc_top]->mp_pgno; - - /* Was a single item before, must convert now */ - if (!F_ISSET(leaf->mn_flags, F_DUPDATA)) { - MDB_cmp_func *dcmp; - /* Just overwrite the current item */ - if (flags == MDB_CURRENT) - goto current; - dcmp = mc->mc_dbx->md_dcmp; -#if UINT_MAX < SIZE_MAX - if (dcmp == mdb_cmp_int && olddata.mv_size == sizeof(size_t)) - dcmp = mdb_cmp_clong; -#endif - /* does data match? */ - if (!dcmp(data, &olddata)) { - if (flags & (MDB_NODUPDATA|MDB_APPENDDUP)) - return MDB_KEYEXIST; - /* overwrite it */ - goto current; - } - - /* Back up original data item */ - dkey.mv_size = olddata.mv_size; - dkey.mv_data = memcpy(fp+1, olddata.mv_data, olddata.mv_size); - - /* Make sub-page header for the dup items, with dummy body */ - MP_FLAGS(fp) = P_LEAF|P_DIRTY|P_SUBP; - MP_LOWER(fp) = (PAGEHDRSZ-PAGEBASE); - xdata.mv_size = PAGEHDRSZ + dkey.mv_size + data->mv_size; - if (mc->mc_db->md_flags & MDB_DUPFIXED) { - MP_FLAGS(fp) |= P_LEAF2; - fp->mp_pad = data->mv_size; - xdata.mv_size += 2 * data->mv_size; /* leave space for 2 more */ - } else { - xdata.mv_size += 2 * (sizeof(indx_t) + NODESIZE) + - (dkey.mv_size & 1) + (data->mv_size & 1); - } - MP_UPPER(fp) = xdata.mv_size - PAGEBASE; - olddata.mv_size = xdata.mv_size; /* pretend olddata is fp */ - } else if (leaf->mn_flags & F_SUBDATA) { - /* Data is on sub-DB, just store it */ - flags |= F_DUPDATA|F_SUBDATA; - goto put_sub; - } else { - /* Data is on sub-page */ - fp = olddata.mv_data; - switch (flags) { - default: - if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) { - offset = EVEN(NODESIZE + sizeof(indx_t) + - data->mv_size); - break; - } - offset = fp->mp_pad; - if (SIZELEFT(fp) < offset) { - offset *= 4; /* space for 4 more */ - break; - } - /* FALLTHRU */ /* Big enough MDB_DUPFIXED sub-page */ - case MDB_CURRENT: - MP_FLAGS(fp) |= P_DIRTY; - COPY_PGNO(MP_PGNO(fp), MP_PGNO(mp)); - mc->mc_xcursor->mx_cursor.mc_pg[0] = fp; - flags |= F_DUPDATA; - goto put_sub; - } - xdata.mv_size = olddata.mv_size + offset; - } - - fp_flags = MP_FLAGS(fp); - if (NODESIZE + NODEKSZ(leaf) + xdata.mv_size > env->me_nodemax) { - /* Too big for a sub-page, convert to sub-DB */ - fp_flags &= ~P_SUBP; -prep_subDB: - if (mc->mc_db->md_flags & MDB_DUPFIXED) { - fp_flags |= P_LEAF2; - dummy.md_pad = fp->mp_pad; - dummy.md_flags = MDB_DUPFIXED; - if (mc->mc_db->md_flags & MDB_INTEGERDUP) - dummy.md_flags |= MDB_INTEGERKEY; - } else { - dummy.md_pad = 0; - dummy.md_flags = 0; - } - dummy.md_depth = 1; - dummy.md_branch_pages = 0; - dummy.md_leaf_pages = 1; - dummy.md_overflow_pages = 0; - dummy.md_entries = NUMKEYS(fp); - xdata.mv_size = sizeof(MDB_db); - xdata.mv_data = &dummy; - if ((rc = mdb_page_alloc(mc, 1, &mp))) - return rc; - offset = env->me_psize - olddata.mv_size; - flags |= F_DUPDATA|F_SUBDATA; - dummy.md_root = mp->mp_pgno; - sub_root = mp; - } - if (mp != fp) { - MP_FLAGS(mp) = fp_flags | P_DIRTY; - MP_PAD(mp) = MP_PAD(fp); - MP_LOWER(mp) = MP_LOWER(fp); - MP_UPPER(mp) = MP_UPPER(fp) + offset; - if (fp_flags & P_LEAF2) { - memcpy(METADATA(mp), METADATA(fp), NUMKEYS(fp) * fp->mp_pad); - } else { - memcpy((char *)mp + MP_UPPER(mp) + PAGEBASE, (char *)fp + MP_UPPER(fp) + PAGEBASE, - olddata.mv_size - MP_UPPER(fp) - PAGEBASE); - memcpy((char *)MP_PTRS(mp), (char *)MP_PTRS(fp), NUMKEYS(fp) * sizeof(mp->mp_ptrs[0])); - for (i=0; imp_ptrs[i] += offset; - } - } - - rdata = &xdata; - flags |= F_DUPDATA; - do_sub = 1; - if (!insert_key) - mdb_node_del(mc, 0); - goto new_sub; - } -current: - /* LMDB passes F_SUBDATA in 'flags' to write a DB record */ - if ((leaf->mn_flags ^ flags) & F_SUBDATA) - return MDB_INCOMPATIBLE; - /* overflow page overwrites need special handling */ - if (F_ISSET(leaf->mn_flags, F_BIGDATA)) { - MDB_page *omp; - pgno_t pg; - int level, ovpages, dpages = OVPAGES(data->mv_size, env->me_psize); - - memcpy(&pg, olddata.mv_data, sizeof(pg)); - if ((rc2 = mdb_page_get(mc, pg, &omp, &level)) != 0) - return rc2; - ovpages = omp->mp_pages; - - /* Is the ov page large enough? */ - if (ovpages >= dpages) { - if (!(omp->mp_flags & P_DIRTY) && - (level || (env->me_flags & MDB_WRITEMAP))) - { - rc = mdb_page_unspill(mc->mc_txn, omp, &omp); - if (rc) - return rc; - level = 0; /* dirty in this txn or clean */ - } - /* Is it dirty? */ - if (omp->mp_flags & P_DIRTY) { - /* yes, overwrite it. Note in this case we don't - * bother to try shrinking the page if the new data - * is smaller than the overflow threshold. - */ - if (level > 1) { - /* It is writable only in a parent txn */ - size_t sz = (size_t) env->me_psize * ovpages, off; - MDB_page *np = mdb_page_malloc(mc->mc_txn, ovpages); - MDB_ID2 id2; - if (!np) - return ENOMEM; - id2.mid = pg; - id2.mptr = np; - /* Note - this page is already counted in parent's dirty_room */ - rc2 = mdb_mid2l_insert(mc->mc_txn->mt_u.dirty_list, &id2); - mdb_cassert(mc, rc2 == 0); - /* Currently we make the page look as with put() in the - * parent txn, in case the user peeks at MDB_RESERVEd - * or unused parts. Some users treat ovpages specially. - */ - if (!(flags & MDB_RESERVE)) { - /* Skip the part where LMDB will put *data. - * Copy end of page, adjusting alignment so - * compiler may copy words instead of bytes. - */ - off = (PAGEHDRSZ + data->mv_size) & -(int)sizeof(size_t); - memcpy((size_t *)((char *)np + off), - (size_t *)((char *)omp + off), sz - off); - sz = PAGEHDRSZ; - } - memcpy(np, omp, sz); /* Copy beginning of page */ - omp = np; - } - SETDSZ(leaf, data->mv_size); - if (F_ISSET(flags, MDB_RESERVE)) - data->mv_data = METADATA(omp); - else - memcpy(METADATA(omp), data->mv_data, data->mv_size); - return MDB_SUCCESS; - } - } - if ((rc2 = mdb_ovpage_free(mc, omp)) != MDB_SUCCESS) - return rc2; - } else if (data->mv_size == olddata.mv_size) { - /* same size, just replace it. Note that we could - * also reuse this node if the new data is smaller, - * but instead we opt to shrink the node in that case. - */ - if (F_ISSET(flags, MDB_RESERVE)) - data->mv_data = olddata.mv_data; - else if (!(mc->mc_flags & C_SUB)) - memcpy(olddata.mv_data, data->mv_data, data->mv_size); - else { - if (key->mv_size != NODEKSZ(leaf)) - goto new_ksize; - memcpy(NODEKEY(leaf), key->mv_data, key->mv_size); - goto fix_parent; - } - return MDB_SUCCESS; - } -new_ksize: - mdb_node_del(mc, 0); - } - - rdata = data; - -new_sub: - nflags = flags & NODE_ADD_FLAGS; - nsize = IS_LEAF2(mc->mc_pg[mc->mc_top]) ? key->mv_size : mdb_leaf_size(env, key, rdata); - if (SIZELEFT(mc->mc_pg[mc->mc_top]) < nsize) { - if (( flags & (F_DUPDATA|F_SUBDATA)) == F_DUPDATA ) - nflags &= ~MDB_APPEND; /* sub-page may need room to grow */ - if (!insert_key) - nflags |= MDB_SPLIT_REPLACE; - rc = mdb_page_split(mc, key, rdata, P_INVALID, nflags); - } else { - /* There is room already in this leaf page. */ - rc = mdb_node_add(mc, mc->mc_ki[mc->mc_top], key, rdata, 0, nflags); - if (rc == 0) { - /* Adjust other cursors pointing to mp */ - MDB_cursor *m2, *m3; - MDB_dbi dbi = mc->mc_dbi; - unsigned i = mc->mc_top; - MDB_page *mp = mc->mc_pg[i]; - - for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { - if (mc->mc_flags & C_SUB) - m3 = &m2->mc_xcursor->mx_cursor; - else - m3 = m2; - if (m3 == mc || m3->mc_snum < mc->mc_snum || m3->mc_pg[i] != mp) continue; - if (m3->mc_ki[i] >= mc->mc_ki[i] && insert_key) { - m3->mc_ki[i]++; - } - XCURSOR_REFRESH(m3, i, mp); - } - } - } - - if (rc == MDB_SUCCESS) { - /* Now store the actual data in the child DB. Note that we're - * storing the user data in the keys field, so there are strict - * size limits on dupdata. The actual data fields of the child - * DB are all zero size. - */ - if (do_sub) { - int xflags, new_dupdata; - size_t ecount; -put_sub: - xdata.mv_size = 0; - xdata.mv_data = ""; - leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); - if ((flags & (MDB_CURRENT|MDB_APPENDDUP)) == MDB_CURRENT) { - xflags = MDB_CURRENT|MDB_NOSPILL; - } else { - mdb_xcursor_init1(mc, leaf); - xflags = (flags & MDB_NODUPDATA) ? - MDB_NOOVERWRITE|MDB_NOSPILL : MDB_NOSPILL; - } - if (sub_root) - mc->mc_xcursor->mx_cursor.mc_pg[0] = sub_root; - new_dupdata = (int)dkey.mv_size; - /* converted, write the original data first */ - if (dkey.mv_size) { - rc = mdb_cursor_put(&mc->mc_xcursor->mx_cursor, &dkey, &xdata, xflags); - if (rc) - goto bad_sub; - /* we've done our job */ - dkey.mv_size = 0; - } - if (!(leaf->mn_flags & F_SUBDATA) || sub_root) { - /* Adjust other cursors pointing to mp */ - MDB_cursor *m2; - MDB_xcursor *mx = mc->mc_xcursor; - unsigned i = mc->mc_top; - MDB_page *mp = mc->mc_pg[i]; - - for (m2 = mc->mc_txn->mt_cursors[mc->mc_dbi]; m2; m2=m2->mc_next) { - if (m2 == mc || m2->mc_snum < mc->mc_snum) continue; - if (!(m2->mc_flags & C_INITIALIZED)) continue; - if (m2->mc_pg[i] == mp) { - if (m2->mc_ki[i] == mc->mc_ki[i]) { - mdb_xcursor_init2(m2, mx, new_dupdata); - } else if (!insert_key) { - XCURSOR_REFRESH(m2, i, mp); - } - } - } - } - ecount = mc->mc_xcursor->mx_db.md_entries; - if (flags & MDB_APPENDDUP) - xflags |= MDB_APPEND; - rc = mdb_cursor_put(&mc->mc_xcursor->mx_cursor, data, &xdata, xflags); - if (flags & F_SUBDATA) { - void *db = NODEDATA(leaf); - memcpy(db, &mc->mc_xcursor->mx_db, sizeof(MDB_db)); - } - insert_data = mc->mc_xcursor->mx_db.md_entries - ecount; - } - /* Increment count unless we just replaced an existing item. */ - if (insert_data) - mc->mc_db->md_entries++; - if (insert_key) { - /* Invalidate txn if we created an empty sub-DB */ - if (rc) - goto bad_sub; - /* If we succeeded and the key didn't exist before, - * make sure the cursor is marked valid. - */ - mc->mc_flags |= C_INITIALIZED; - } - if (flags & MDB_MULTIPLE) { - if (!rc) { - mcount++; - /* let caller know how many succeeded, if any */ - data[1].mv_size = mcount; - if (mcount < dcount) { - data[0].mv_data = (char *)data[0].mv_data + data[0].mv_size; - insert_key = insert_data = 0; - goto more; - } - } - } - return rc; -bad_sub: - if (rc == MDB_KEYEXIST) /* should not happen, we deleted that item */ - rc = MDB_CORRUPTED; - } - mc->mc_txn->mt_flags |= MDB_TXN_ERROR; - return rc; -} - -int -mdb_cursor_del(MDB_cursor *mc, unsigned int flags) -{ - MDB_node *leaf; - MDB_page *mp; - int rc; - - if (mc->mc_txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_BLOCKED)) - return (mc->mc_txn->mt_flags & MDB_TXN_RDONLY) ? EACCES : MDB_BAD_TXN; - - if (!(mc->mc_flags & C_INITIALIZED)) - return EINVAL; - - if (mc->mc_ki[mc->mc_top] >= NUMKEYS(mc->mc_pg[mc->mc_top])) - return MDB_NOTFOUND; - - if (!(flags & MDB_NOSPILL) && (rc = mdb_page_spill(mc, NULL, NULL))) - return rc; - - rc = mdb_cursor_touch(mc); - if (rc) - return rc; - - mp = mc->mc_pg[mc->mc_top]; - if (!IS_LEAF(mp)) - return MDB_CORRUPTED; - if (IS_LEAF2(mp)) - goto del_key; - leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); - - if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { - if (flags & MDB_NODUPDATA) { - /* mdb_cursor_del0() will subtract the final entry */ - mc->mc_db->md_entries -= mc->mc_xcursor->mx_db.md_entries - 1; - mc->mc_xcursor->mx_cursor.mc_flags &= ~C_INITIALIZED; - } else { - if (!F_ISSET(leaf->mn_flags, F_SUBDATA)) { - mc->mc_xcursor->mx_cursor.mc_pg[0] = NODEDATA(leaf); - } - rc = mdb_cursor_del(&mc->mc_xcursor->mx_cursor, MDB_NOSPILL); - if (rc) - return rc; - /* If sub-DB still has entries, we're done */ - if (mc->mc_xcursor->mx_db.md_entries) { - if (leaf->mn_flags & F_SUBDATA) { - /* update subDB info */ - void *db = NODEDATA(leaf); - memcpy(db, &mc->mc_xcursor->mx_db, sizeof(MDB_db)); - } else { - MDB_cursor *m2; - /* shrink fake page */ - mdb_node_shrink(mp, mc->mc_ki[mc->mc_top]); - leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); - mc->mc_xcursor->mx_cursor.mc_pg[0] = NODEDATA(leaf); - /* fix other sub-DB cursors pointed at fake pages on this page */ - for (m2 = mc->mc_txn->mt_cursors[mc->mc_dbi]; m2; m2=m2->mc_next) { - if (m2 == mc || m2->mc_snum < mc->mc_snum) continue; - if (!(m2->mc_flags & C_INITIALIZED)) continue; - if (m2->mc_pg[mc->mc_top] == mp) { - XCURSOR_REFRESH(m2, mc->mc_top, mp); - } - } - } - mc->mc_db->md_entries--; - return rc; - } else { - mc->mc_xcursor->mx_cursor.mc_flags &= ~C_INITIALIZED; - } - /* otherwise fall thru and delete the sub-DB */ - } - - if (leaf->mn_flags & F_SUBDATA) { - /* add all the child DB's pages to the free list */ - rc = mdb_drop0(&mc->mc_xcursor->mx_cursor, 0); - if (rc) - goto fail; - } - } - /* LMDB passes F_SUBDATA in 'flags' to delete a DB record */ - else if ((leaf->mn_flags ^ flags) & F_SUBDATA) { - rc = MDB_INCOMPATIBLE; - goto fail; - } - - /* add overflow pages to free list */ - if (F_ISSET(leaf->mn_flags, F_BIGDATA)) { - MDB_page *omp; - pgno_t pg; - - memcpy(&pg, NODEDATA(leaf), sizeof(pg)); - if ((rc = mdb_page_get(mc, pg, &omp, NULL)) || - (rc = mdb_ovpage_free(mc, omp))) - goto fail; - } - -del_key: - return mdb_cursor_del0(mc); - -fail: - mc->mc_txn->mt_flags |= MDB_TXN_ERROR; - return rc; -} - -/** Allocate and initialize new pages for a database. - * Set #MDB_TXN_ERROR on failure. - * @param[in] mc a cursor on the database being added to. - * @param[in] flags flags defining what type of page is being allocated. - * @param[in] num the number of pages to allocate. This is usually 1, - * unless allocating overflow pages for a large record. - * @param[out] mp Address of a page, or NULL on failure. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_page_new(MDB_cursor *mc, uint32_t flags, int num, MDB_page **mp) -{ - MDB_page *np; - int rc; - - if ((rc = mdb_page_alloc(mc, num, &np))) - return rc; - DPRINTF(("allocated new mpage %"Z"u, page size %u", - np->mp_pgno, mc->mc_txn->mt_env->me_psize)); - np->mp_flags = flags | P_DIRTY; - np->mp_lower = (PAGEHDRSZ-PAGEBASE); - np->mp_upper = mc->mc_txn->mt_env->me_psize - PAGEBASE; - - if (IS_BRANCH(np)) - mc->mc_db->md_branch_pages++; - else if (IS_LEAF(np)) - mc->mc_db->md_leaf_pages++; - else if (IS_OVERFLOW(np)) { - mc->mc_db->md_overflow_pages += num; - np->mp_pages = num; - } - *mp = np; - - return 0; -} - -/** Calculate the size of a leaf node. - * The size depends on the environment's page size; if a data item - * is too large it will be put onto an overflow page and the node - * size will only include the key and not the data. Sizes are always - * rounded up to an even number of bytes, to guarantee 2-byte alignment - * of the #MDB_node headers. - * @param[in] env The environment handle. - * @param[in] key The key for the node. - * @param[in] data The data for the node. - * @return The number of bytes needed to store the node. - */ -static size_t -mdb_leaf_size(MDB_env *env, MDB_val *key, MDB_val *data) -{ - size_t sz; - - sz = LEAFSIZE(key, data); - if (sz > env->me_nodemax) { - /* put on overflow page */ - sz -= data->mv_size - sizeof(pgno_t); - } - - return EVEN(sz + sizeof(indx_t)); -} - -/** Calculate the size of a branch node. - * The size should depend on the environment's page size but since - * we currently don't support spilling large keys onto overflow - * pages, it's simply the size of the #MDB_node header plus the - * size of the key. Sizes are always rounded up to an even number - * of bytes, to guarantee 2-byte alignment of the #MDB_node headers. - * @param[in] env The environment handle. - * @param[in] key The key for the node. - * @return The number of bytes needed to store the node. - */ -static size_t -mdb_branch_size(MDB_env *env, MDB_val *key) -{ - size_t sz; - - sz = INDXSIZE(key); - if (sz > env->me_nodemax) { - /* put on overflow page */ - /* not implemented */ - /* sz -= key->size - sizeof(pgno_t); */ - } - - return sz + sizeof(indx_t); -} - -/** Add a node to the page pointed to by the cursor. - * Set #MDB_TXN_ERROR on failure. - * @param[in] mc The cursor for this operation. - * @param[in] indx The index on the page where the new node should be added. - * @param[in] key The key for the new node. - * @param[in] data The data for the new node, if any. - * @param[in] pgno The page number, if adding a branch node. - * @param[in] flags Flags for the node. - * @return 0 on success, non-zero on failure. Possible errors are: - *
    - *
  • ENOMEM - failed to allocate overflow pages for the node. - *
  • MDB_PAGE_FULL - there is insufficient room in the page. This error - * should never happen since all callers already calculate the - * page's free space before calling this function. - *
- */ -static int -mdb_node_add(MDB_cursor *mc, indx_t indx, - MDB_val *key, MDB_val *data, pgno_t pgno, unsigned int flags) -{ - unsigned int i; - size_t node_size = NODESIZE; - ssize_t room; - indx_t ofs; - MDB_node *node; - MDB_page *mp = mc->mc_pg[mc->mc_top]; - MDB_page *ofp = NULL; /* overflow page */ - void *ndata; - DKBUF; - - mdb_cassert(mc, MP_UPPER(mp) >= MP_LOWER(mp)); - - DPRINTF(("add to %s %spage %"Z"u index %i, data size %"Z"u key size %"Z"u [%s]", - IS_LEAF(mp) ? "leaf" : "branch", - IS_SUBP(mp) ? "sub-" : "", - mdb_dbg_pgno(mp), indx, data ? data->mv_size : 0, - key ? key->mv_size : 0, key ? DKEY(key) : "null")); - - if (IS_LEAF2(mp)) { - /* Move higher keys up one slot. */ - int ksize = mc->mc_db->md_pad, dif; - char *ptr = LEAF2KEY(mp, indx, ksize); - dif = NUMKEYS(mp) - indx; - if (dif > 0) - memmove(ptr+ksize, ptr, dif*ksize); - /* insert new key */ - memcpy(ptr, key->mv_data, ksize); - - /* Just using these for counting */ - MP_LOWER(mp) += sizeof(indx_t); - MP_UPPER(mp) -= ksize - sizeof(indx_t); - return MDB_SUCCESS; - } - - room = (ssize_t)SIZELEFT(mp) - (ssize_t)sizeof(indx_t); - if (key != NULL) - node_size += key->mv_size; - if (IS_LEAF(mp)) { - mdb_cassert(mc, key && data); - if (F_ISSET(flags, F_BIGDATA)) { - /* Data already on overflow page. */ - node_size += sizeof(pgno_t); - } else if (node_size + data->mv_size > mc->mc_txn->mt_env->me_nodemax) { - int ovpages = OVPAGES(data->mv_size, mc->mc_txn->mt_env->me_psize); - int rc; - /* Put data on overflow page. */ - DPRINTF(("data size is %"Z"u, node would be %"Z"u, put data on overflow page", - data->mv_size, node_size+data->mv_size)); - node_size = EVEN(node_size + sizeof(pgno_t)); - if ((ssize_t)node_size > room) - goto full; - if ((rc = mdb_page_new(mc, P_OVERFLOW, ovpages, &ofp))) - return rc; - DPRINTF(("allocated overflow page %"Z"u", ofp->mp_pgno)); - flags |= F_BIGDATA; - goto update; - } else { - node_size += data->mv_size; - } - } - node_size = EVEN(node_size); - if ((ssize_t)node_size > room) - goto full; - -update: - /* Move higher pointers up one slot. */ - for (i = NUMKEYS(mp); i > indx; i--) - MP_PTRS(mp)[i] = MP_PTRS(mp)[i - 1]; - - /* Adjust free space offsets. */ - ofs = MP_UPPER(mp) - node_size; - mdb_cassert(mc, ofs >= MP_LOWER(mp) + sizeof(indx_t)); - MP_PTRS(mp)[indx] = ofs; - MP_UPPER(mp) = ofs; - MP_LOWER(mp) += sizeof(indx_t); - - /* Write the node data. */ - node = NODEPTR(mp, indx); - node->mn_ksize = (key == NULL) ? 0 : key->mv_size; - node->mn_flags = flags; - if (IS_LEAF(mp)) - SETDSZ(node,data->mv_size); - else - SETPGNO(node,pgno); - - if (key) - memcpy(NODEKEY(node), key->mv_data, key->mv_size); - - if (IS_LEAF(mp)) { - ndata = NODEDATA(node); - if (ofp == NULL) { - if (F_ISSET(flags, F_BIGDATA)) - memcpy(ndata, data->mv_data, sizeof(pgno_t)); - else if (F_ISSET(flags, MDB_RESERVE)) - data->mv_data = ndata; - else - memcpy(ndata, data->mv_data, data->mv_size); - } else { - memcpy(ndata, &ofp->mp_pgno, sizeof(pgno_t)); - ndata = METADATA(ofp); - if (F_ISSET(flags, MDB_RESERVE)) - data->mv_data = ndata; - else - memcpy(ndata, data->mv_data, data->mv_size); - } - } - - return MDB_SUCCESS; - -full: - DPRINTF(("not enough room in page %"Z"u, got %u ptrs", - mdb_dbg_pgno(mp), NUMKEYS(mp))); - DPRINTF(("upper-lower = %u - %u = %"Z"d", MP_UPPER(mp),MP_LOWER(mp),room)); - DPRINTF(("node size = %"Z"u", node_size)); - mc->mc_txn->mt_flags |= MDB_TXN_ERROR; - return MDB_PAGE_FULL; -} - -/** Delete the specified node from a page. - * @param[in] mc Cursor pointing to the node to delete. - * @param[in] ksize The size of a node. Only used if the page is - * part of a #MDB_DUPFIXED database. - */ -static void -mdb_node_del(MDB_cursor *mc, int ksize) -{ - MDB_page *mp = mc->mc_pg[mc->mc_top]; - indx_t indx = mc->mc_ki[mc->mc_top]; - unsigned int sz; - indx_t i, j, numkeys, ptr; - MDB_node *node; - char *base; - - DPRINTF(("delete node %u on %s page %"Z"u", indx, - IS_LEAF(mp) ? "leaf" : "branch", mdb_dbg_pgno(mp))); - numkeys = NUMKEYS(mp); - mdb_cassert(mc, indx < numkeys); - - if (IS_LEAF2(mp)) { - int x = numkeys - 1 - indx; - base = LEAF2KEY(mp, indx, ksize); - if (x) - memmove(base, base + ksize, x * ksize); - MP_LOWER(mp) -= sizeof(indx_t); - MP_UPPER(mp) += ksize - sizeof(indx_t); - return; - } - - node = NODEPTR(mp, indx); - sz = NODESIZE + node->mn_ksize; - if (IS_LEAF(mp)) { - if (F_ISSET(node->mn_flags, F_BIGDATA)) - sz += sizeof(pgno_t); - else - sz += NODEDSZ(node); - } - sz = EVEN(sz); - - ptr = MP_PTRS(mp)[indx]; - for (i = j = 0; i < numkeys; i++) { - if (i != indx) { - MP_PTRS(mp)[j] = MP_PTRS(mp)[i]; - if (MP_PTRS(mp)[i] < ptr) - MP_PTRS(mp)[j] += sz; - j++; - } - } - - base = (char *)mp + MP_UPPER(mp) + PAGEBASE; - memmove(base + sz, base, ptr - MP_UPPER(mp)); - - MP_LOWER(mp) -= sizeof(indx_t); - MP_UPPER(mp) += sz; -} - -/** Compact the main page after deleting a node on a subpage. - * @param[in] mp The main page to operate on. - * @param[in] indx The index of the subpage on the main page. - */ -static void -mdb_node_shrink(MDB_page *mp, indx_t indx) -{ - MDB_node *node; - MDB_page *sp, *xp; - char *base; - indx_t delta, nsize, len, ptr; - int i; - - node = NODEPTR(mp, indx); - sp = (MDB_page *)NODEDATA(node); - delta = SIZELEFT(sp); - nsize = NODEDSZ(node) - delta; - - /* Prepare to shift upward, set len = length(subpage part to shift) */ - if (IS_LEAF2(sp)) { - len = nsize; - if (nsize & 1) - return; /* do not make the node uneven-sized */ - } else { - xp = (MDB_page *)((char *)sp + delta); /* destination subpage */ - for (i = NUMKEYS(sp); --i >= 0; ) - MP_PTRS(xp)[i] = MP_PTRS(sp)[i] - delta; - len = PAGEHDRSZ; - } - MP_UPPER(sp) = MP_LOWER(sp); - COPY_PGNO(MP_PGNO(sp), mp->mp_pgno); - SETDSZ(node, nsize); - - /* Shift upward */ - base = (char *)mp + mp->mp_upper + PAGEBASE; - memmove(base + delta, base, (char *)sp + len - base); - - ptr = mp->mp_ptrs[indx]; - for (i = NUMKEYS(mp); --i >= 0; ) { - if (mp->mp_ptrs[i] <= ptr) - mp->mp_ptrs[i] += delta; - } - mp->mp_upper += delta; -} - -/** Initial setup of a sorted-dups cursor. - * Sorted duplicates are implemented as a sub-database for the given key. - * The duplicate data items are actually keys of the sub-database. - * Operations on the duplicate data items are performed using a sub-cursor - * initialized when the sub-database is first accessed. This function does - * the preliminary setup of the sub-cursor, filling in the fields that - * depend only on the parent DB. - * @param[in] mc The main cursor whose sorted-dups cursor is to be initialized. - */ -static void -mdb_xcursor_init0(MDB_cursor *mc) -{ - MDB_xcursor *mx = mc->mc_xcursor; - - mx->mx_cursor.mc_xcursor = NULL; - mx->mx_cursor.mc_txn = mc->mc_txn; - mx->mx_cursor.mc_db = &mx->mx_db; - mx->mx_cursor.mc_dbx = &mx->mx_dbx; - mx->mx_cursor.mc_dbi = mc->mc_dbi; - mx->mx_cursor.mc_dbflag = &mx->mx_dbflag; - mx->mx_cursor.mc_snum = 0; - mx->mx_cursor.mc_top = 0; - mx->mx_cursor.mc_flags = C_SUB; - mx->mx_dbx.md_name.mv_size = 0; - mx->mx_dbx.md_name.mv_data = NULL; - mx->mx_dbx.md_cmp = mc->mc_dbx->md_dcmp; - mx->mx_dbx.md_dcmp = NULL; - mx->mx_dbx.md_rel = mc->mc_dbx->md_rel; -} - -/** Final setup of a sorted-dups cursor. - * Sets up the fields that depend on the data from the main cursor. - * @param[in] mc The main cursor whose sorted-dups cursor is to be initialized. - * @param[in] node The data containing the #MDB_db record for the - * sorted-dup database. - */ -static void -mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node) -{ - MDB_xcursor *mx = mc->mc_xcursor; - - if (node->mn_flags & F_SUBDATA) { - memcpy(&mx->mx_db, NODEDATA(node), sizeof(MDB_db)); - mx->mx_cursor.mc_pg[0] = 0; - mx->mx_cursor.mc_snum = 0; - mx->mx_cursor.mc_top = 0; - mx->mx_cursor.mc_flags = C_SUB; - } else { - MDB_page *fp = NODEDATA(node); - mx->mx_db.md_pad = 0; - mx->mx_db.md_flags = 0; - mx->mx_db.md_depth = 1; - mx->mx_db.md_branch_pages = 0; - mx->mx_db.md_leaf_pages = 1; - mx->mx_db.md_overflow_pages = 0; - mx->mx_db.md_entries = NUMKEYS(fp); - COPY_PGNO(mx->mx_db.md_root, MP_PGNO(fp)); - mx->mx_cursor.mc_snum = 1; - mx->mx_cursor.mc_top = 0; - mx->mx_cursor.mc_flags = C_INITIALIZED|C_SUB; - mx->mx_cursor.mc_pg[0] = fp; - mx->mx_cursor.mc_ki[0] = 0; - if (mc->mc_db->md_flags & MDB_DUPFIXED) { - mx->mx_db.md_flags = MDB_DUPFIXED; - mx->mx_db.md_pad = fp->mp_pad; - if (mc->mc_db->md_flags & MDB_INTEGERDUP) - mx->mx_db.md_flags |= MDB_INTEGERKEY; - } - } - DPRINTF(("Sub-db -%u root page %"Z"u", mx->mx_cursor.mc_dbi, - mx->mx_db.md_root)); - mx->mx_dbflag = DB_VALID|DB_USRVALID|DB_DUPDATA; -#if UINT_MAX < SIZE_MAX - if (mx->mx_dbx.md_cmp == mdb_cmp_int && mx->mx_db.md_pad == sizeof(size_t)) - mx->mx_dbx.md_cmp = mdb_cmp_clong; -#endif -} - - -/** Fixup a sorted-dups cursor due to underlying update. - * Sets up some fields that depend on the data from the main cursor. - * Almost the same as init1, but skips initialization steps if the - * xcursor had already been used. - * @param[in] mc The main cursor whose sorted-dups cursor is to be fixed up. - * @param[in] src_mx The xcursor of an up-to-date cursor. - * @param[in] new_dupdata True if converting from a non-#F_DUPDATA item. - */ -static void -mdb_xcursor_init2(MDB_cursor *mc, MDB_xcursor *src_mx, int new_dupdata) -{ - MDB_xcursor *mx = mc->mc_xcursor; - - if (new_dupdata) { - mx->mx_cursor.mc_snum = 1; - mx->mx_cursor.mc_top = 0; - mx->mx_cursor.mc_flags |= C_INITIALIZED; - mx->mx_cursor.mc_ki[0] = 0; - mx->mx_dbflag = DB_VALID|DB_USRVALID|DB_DUPDATA; -#if UINT_MAX < SIZE_MAX - mx->mx_dbx.md_cmp = src_mx->mx_dbx.md_cmp; -#endif - } else if (!(mx->mx_cursor.mc_flags & C_INITIALIZED)) { - return; - } - mx->mx_db = src_mx->mx_db; - mx->mx_cursor.mc_pg[0] = src_mx->mx_cursor.mc_pg[0]; - DPRINTF(("Sub-db -%u root page %"Z"u", mx->mx_cursor.mc_dbi, - mx->mx_db.md_root)); -} - -/** Initialize a cursor for a given transaction and database. */ -static void -mdb_cursor_init(MDB_cursor *mc, MDB_txn *txn, MDB_dbi dbi, MDB_xcursor *mx) -{ - mc->mc_next = NULL; - mc->mc_backup = NULL; - mc->mc_dbi = dbi; - mc->mc_txn = txn; - mc->mc_db = &txn->mt_dbs[dbi]; - mc->mc_dbx = &txn->mt_dbxs[dbi]; - mc->mc_dbflag = &txn->mt_dbflags[dbi]; - mc->mc_snum = 0; - mc->mc_top = 0; - mc->mc_pg[0] = 0; - mc->mc_ki[0] = 0; - mc->mc_flags = 0; - if (txn->mt_dbs[dbi].md_flags & MDB_DUPSORT) { - mdb_tassert(txn, mx != NULL); - mc->mc_xcursor = mx; - mdb_xcursor_init0(mc); - } else { - mc->mc_xcursor = NULL; - } - if (*mc->mc_dbflag & DB_STALE) { - mdb_page_search(mc, NULL, MDB_PS_ROOTONLY); - } -} - -int -mdb_cursor_open(MDB_txn *txn, MDB_dbi dbi, MDB_cursor **ret) -{ - MDB_cursor *mc; - size_t size = sizeof(MDB_cursor); - - if (!ret || !TXN_DBI_EXIST(txn, dbi, DB_VALID)) - return EINVAL; - - if (txn->mt_flags & MDB_TXN_BLOCKED) - return MDB_BAD_TXN; - - if (dbi == FREE_DBI && !F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) - return EINVAL; - - if (txn->mt_dbs[dbi].md_flags & MDB_DUPSORT) - size += sizeof(MDB_xcursor); - - if ((mc = malloc(size)) != NULL) { - mdb_cursor_init(mc, txn, dbi, (MDB_xcursor *)(mc + 1)); - if (txn->mt_cursors) { - mc->mc_next = txn->mt_cursors[dbi]; - txn->mt_cursors[dbi] = mc; - mc->mc_flags |= C_UNTRACK; - } - } else { - return ENOMEM; - } - - *ret = mc; - - return MDB_SUCCESS; -} - -int -mdb_cursor_renew(MDB_txn *txn, MDB_cursor *mc) -{ - if (!mc || !TXN_DBI_EXIST(txn, mc->mc_dbi, DB_VALID)) - return EINVAL; - - if ((mc->mc_flags & C_UNTRACK) || txn->mt_cursors) - return EINVAL; - - if (txn->mt_flags & MDB_TXN_BLOCKED) - return MDB_BAD_TXN; - - mdb_cursor_init(mc, txn, mc->mc_dbi, mc->mc_xcursor); - return MDB_SUCCESS; -} - -/* Return the count of duplicate data items for the current key */ -int -mdb_cursor_count(MDB_cursor *mc, size_t *countp) -{ - MDB_node *leaf; - - if (mc == NULL || countp == NULL) - return EINVAL; - - if (mc->mc_xcursor == NULL) - return MDB_INCOMPATIBLE; - - if (mc->mc_txn->mt_flags & MDB_TXN_BLOCKED) - return MDB_BAD_TXN; - - if (!(mc->mc_flags & C_INITIALIZED)) - return EINVAL; - - if (!mc->mc_snum) - return MDB_NOTFOUND; - - if (mc->mc_flags & C_EOF) { - if (mc->mc_ki[mc->mc_top] >= NUMKEYS(mc->mc_pg[mc->mc_top])) - return MDB_NOTFOUND; - mc->mc_flags ^= C_EOF; - } - - leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); - if (!F_ISSET(leaf->mn_flags, F_DUPDATA)) { - *countp = 1; - } else { - if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED)) - return EINVAL; - - *countp = mc->mc_xcursor->mx_db.md_entries; - } - return MDB_SUCCESS; -} - -void -mdb_cursor_close(MDB_cursor *mc) -{ - if (mc && !mc->mc_backup) { - /* remove from txn, if tracked */ - if ((mc->mc_flags & C_UNTRACK) && mc->mc_txn->mt_cursors) { - MDB_cursor **prev = &mc->mc_txn->mt_cursors[mc->mc_dbi]; - while (*prev && *prev != mc) prev = &(*prev)->mc_next; - if (*prev == mc) - *prev = mc->mc_next; - } - free(mc); - } -} - -MDB_txn * -mdb_cursor_txn(MDB_cursor *mc) -{ - if (!mc) return NULL; - return mc->mc_txn; -} - -MDB_dbi -mdb_cursor_dbi(MDB_cursor *mc) -{ - return mc->mc_dbi; -} - -/** Replace the key for a branch node with a new key. - * Set #MDB_TXN_ERROR on failure. - * @param[in] mc Cursor pointing to the node to operate on. - * @param[in] key The new key to use. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_update_key(MDB_cursor *mc, MDB_val *key) -{ - MDB_page *mp; - MDB_node *node; - char *base; - size_t len; - int delta, ksize, oksize; - indx_t ptr, i, numkeys, indx; - DKBUF; - - indx = mc->mc_ki[mc->mc_top]; - mp = mc->mc_pg[mc->mc_top]; - node = NODEPTR(mp, indx); - ptr = mp->mp_ptrs[indx]; -#if MDB_DEBUG - { - MDB_val k2; - char kbuf2[DKBUF_MAXKEYSIZE*2+1]; - k2.mv_data = NODEKEY(node); - k2.mv_size = node->mn_ksize; - DPRINTF(("update key %u (ofs %u) [%s] to [%s] on page %"Z"u", - indx, ptr, - mdb_dkey(&k2, kbuf2), - DKEY(key), - mp->mp_pgno)); - } -#endif - - /* Sizes must be 2-byte aligned. */ - ksize = EVEN(key->mv_size); - oksize = EVEN(node->mn_ksize); - delta = ksize - oksize; - - /* Shift node contents if EVEN(key length) changed. */ - if (delta) { - if (delta > 0 && SIZELEFT(mp) < delta) { - pgno_t pgno; - /* not enough space left, do a delete and split */ - DPRINTF(("Not enough room, delta = %d, splitting...", delta)); - pgno = NODEPGNO(node); - mdb_node_del(mc, 0); - return mdb_page_split(mc, key, NULL, pgno, MDB_SPLIT_REPLACE); - } - - numkeys = NUMKEYS(mp); - for (i = 0; i < numkeys; i++) { - if (mp->mp_ptrs[i] <= ptr) - mp->mp_ptrs[i] -= delta; - } - - base = (char *)mp + mp->mp_upper + PAGEBASE; - len = ptr - mp->mp_upper + NODESIZE; - memmove(base - delta, base, len); - mp->mp_upper -= delta; - - node = NODEPTR(mp, indx); - } - - /* But even if no shift was needed, update ksize */ - if (node->mn_ksize != key->mv_size) - node->mn_ksize = key->mv_size; - - if (key->mv_size) - memcpy(NODEKEY(node), key->mv_data, key->mv_size); - - return MDB_SUCCESS; -} - -static void -mdb_cursor_copy(const MDB_cursor *csrc, MDB_cursor *cdst); - -/** Perform \b act while tracking temporary cursor \b mn */ -#define WITH_CURSOR_TRACKING(mn, act) do { \ - MDB_cursor dummy, *tracked, **tp = &(mn).mc_txn->mt_cursors[mn.mc_dbi]; \ - if ((mn).mc_flags & C_SUB) { \ - dummy.mc_flags = C_INITIALIZED; \ - dummy.mc_xcursor = (MDB_xcursor *)&(mn); \ - tracked = &dummy; \ - } else { \ - tracked = &(mn); \ - } \ - tracked->mc_next = *tp; \ - *tp = tracked; \ - { act; } \ - *tp = tracked->mc_next; \ -} while (0) - -/** Move a node from csrc to cdst. - */ -static int -mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft) -{ - MDB_node *srcnode; - MDB_val key, data; - pgno_t srcpg; - MDB_cursor mn; - int rc; - unsigned short flags; - - DKBUF; - - /* Mark src and dst as dirty. */ - if ((rc = mdb_page_touch(csrc)) || - (rc = mdb_page_touch(cdst))) - return rc; - - if (IS_LEAF2(csrc->mc_pg[csrc->mc_top])) { - key.mv_size = csrc->mc_db->md_pad; - key.mv_data = LEAF2KEY(csrc->mc_pg[csrc->mc_top], csrc->mc_ki[csrc->mc_top], key.mv_size); - data.mv_size = 0; - data.mv_data = NULL; - srcpg = 0; - flags = 0; - } else { - srcnode = NODEPTR(csrc->mc_pg[csrc->mc_top], csrc->mc_ki[csrc->mc_top]); - mdb_cassert(csrc, !((size_t)srcnode & 1)); - srcpg = NODEPGNO(srcnode); - flags = srcnode->mn_flags; - if (csrc->mc_ki[csrc->mc_top] == 0 && IS_BRANCH(csrc->mc_pg[csrc->mc_top])) { - unsigned int snum = csrc->mc_snum; - MDB_node *s2; - /* must find the lowest key below src */ - rc = mdb_page_search_lowest(csrc); - if (rc) - return rc; - if (IS_LEAF2(csrc->mc_pg[csrc->mc_top])) { - key.mv_size = csrc->mc_db->md_pad; - key.mv_data = LEAF2KEY(csrc->mc_pg[csrc->mc_top], 0, key.mv_size); - } else { - s2 = NODEPTR(csrc->mc_pg[csrc->mc_top], 0); - key.mv_size = NODEKSZ(s2); - key.mv_data = NODEKEY(s2); - } - csrc->mc_snum = snum--; - csrc->mc_top = snum; - } else { - key.mv_size = NODEKSZ(srcnode); - key.mv_data = NODEKEY(srcnode); - } - data.mv_size = NODEDSZ(srcnode); - data.mv_data = NODEDATA(srcnode); - } - mn.mc_xcursor = NULL; - if (IS_BRANCH(cdst->mc_pg[cdst->mc_top]) && cdst->mc_ki[cdst->mc_top] == 0) { - unsigned int snum = cdst->mc_snum; - MDB_node *s2; - MDB_val bkey; - /* must find the lowest key below dst */ - mdb_cursor_copy(cdst, &mn); - rc = mdb_page_search_lowest(&mn); - if (rc) - return rc; - if (IS_LEAF2(mn.mc_pg[mn.mc_top])) { - bkey.mv_size = mn.mc_db->md_pad; - bkey.mv_data = LEAF2KEY(mn.mc_pg[mn.mc_top], 0, bkey.mv_size); - } else { - s2 = NODEPTR(mn.mc_pg[mn.mc_top], 0); - bkey.mv_size = NODEKSZ(s2); - bkey.mv_data = NODEKEY(s2); - } - mn.mc_snum = snum--; - mn.mc_top = snum; - mn.mc_ki[snum] = 0; - rc = mdb_update_key(&mn, &bkey); - if (rc) - return rc; - } - - DPRINTF(("moving %s node %u [%s] on page %"Z"u to node %u on page %"Z"u", - IS_LEAF(csrc->mc_pg[csrc->mc_top]) ? "leaf" : "branch", - csrc->mc_ki[csrc->mc_top], - DKEY(&key), - csrc->mc_pg[csrc->mc_top]->mp_pgno, - cdst->mc_ki[cdst->mc_top], cdst->mc_pg[cdst->mc_top]->mp_pgno)); - - /* Add the node to the destination page. - */ - rc = mdb_node_add(cdst, cdst->mc_ki[cdst->mc_top], &key, &data, srcpg, flags); - if (rc != MDB_SUCCESS) - return rc; - - /* Delete the node from the source page. - */ - mdb_node_del(csrc, key.mv_size); - - { - /* Adjust other cursors pointing to mp */ - MDB_cursor *m2, *m3; - MDB_dbi dbi = csrc->mc_dbi; - MDB_page *mpd, *mps; - - mps = csrc->mc_pg[csrc->mc_top]; - /* If we're adding on the left, bump others up */ - if (fromleft) { - mpd = cdst->mc_pg[csrc->mc_top]; - for (m2 = csrc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { - if (csrc->mc_flags & C_SUB) - m3 = &m2->mc_xcursor->mx_cursor; - else - m3 = m2; - if (!(m3->mc_flags & C_INITIALIZED) || m3->mc_top < csrc->mc_top) - continue; - if (m3 != cdst && - m3->mc_pg[csrc->mc_top] == mpd && - m3->mc_ki[csrc->mc_top] >= cdst->mc_ki[csrc->mc_top]) { - m3->mc_ki[csrc->mc_top]++; - } - if (m3 !=csrc && - m3->mc_pg[csrc->mc_top] == mps && - m3->mc_ki[csrc->mc_top] == csrc->mc_ki[csrc->mc_top]) { - m3->mc_pg[csrc->mc_top] = cdst->mc_pg[cdst->mc_top]; - m3->mc_ki[csrc->mc_top] = cdst->mc_ki[cdst->mc_top]; - m3->mc_ki[csrc->mc_top-1]++; - } - if (IS_LEAF(mps)) - XCURSOR_REFRESH(m3, csrc->mc_top, m3->mc_pg[csrc->mc_top]); - } - } else - /* Adding on the right, bump others down */ - { - for (m2 = csrc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { - if (csrc->mc_flags & C_SUB) - m3 = &m2->mc_xcursor->mx_cursor; - else - m3 = m2; - if (m3 == csrc) continue; - if (!(m3->mc_flags & C_INITIALIZED) || m3->mc_top < csrc->mc_top) - continue; - if (m3->mc_pg[csrc->mc_top] == mps) { - if (!m3->mc_ki[csrc->mc_top]) { - m3->mc_pg[csrc->mc_top] = cdst->mc_pg[cdst->mc_top]; - m3->mc_ki[csrc->mc_top] = cdst->mc_ki[cdst->mc_top]; - m3->mc_ki[csrc->mc_top-1]--; - } else { - m3->mc_ki[csrc->mc_top]--; - } - if (IS_LEAF(mps)) - XCURSOR_REFRESH(m3, csrc->mc_top, m3->mc_pg[csrc->mc_top]); - } - } - } - } - - /* Update the parent separators. - */ - if (csrc->mc_ki[csrc->mc_top] == 0) { - if (csrc->mc_ki[csrc->mc_top-1] != 0) { - if (IS_LEAF2(csrc->mc_pg[csrc->mc_top])) { - key.mv_data = LEAF2KEY(csrc->mc_pg[csrc->mc_top], 0, key.mv_size); - } else { - srcnode = NODEPTR(csrc->mc_pg[csrc->mc_top], 0); - key.mv_size = NODEKSZ(srcnode); - key.mv_data = NODEKEY(srcnode); - } - DPRINTF(("update separator for source page %"Z"u to [%s]", - csrc->mc_pg[csrc->mc_top]->mp_pgno, DKEY(&key))); - mdb_cursor_copy(csrc, &mn); - mn.mc_snum--; - mn.mc_top--; - /* We want mdb_rebalance to find mn when doing fixups */ - WITH_CURSOR_TRACKING(mn, - rc = mdb_update_key(&mn, &key)); - if (rc) - return rc; - } - if (IS_BRANCH(csrc->mc_pg[csrc->mc_top])) { - MDB_val nullkey; - indx_t ix = csrc->mc_ki[csrc->mc_top]; - nullkey.mv_size = 0; - csrc->mc_ki[csrc->mc_top] = 0; - rc = mdb_update_key(csrc, &nullkey); - csrc->mc_ki[csrc->mc_top] = ix; - mdb_cassert(csrc, rc == MDB_SUCCESS); - } - } - - if (cdst->mc_ki[cdst->mc_top] == 0) { - if (cdst->mc_ki[cdst->mc_top-1] != 0) { - if (IS_LEAF2(csrc->mc_pg[csrc->mc_top])) { - key.mv_data = LEAF2KEY(cdst->mc_pg[cdst->mc_top], 0, key.mv_size); - } else { - srcnode = NODEPTR(cdst->mc_pg[cdst->mc_top], 0); - key.mv_size = NODEKSZ(srcnode); - key.mv_data = NODEKEY(srcnode); - } - DPRINTF(("update separator for destination page %"Z"u to [%s]", - cdst->mc_pg[cdst->mc_top]->mp_pgno, DKEY(&key))); - mdb_cursor_copy(cdst, &mn); - mn.mc_snum--; - mn.mc_top--; - /* We want mdb_rebalance to find mn when doing fixups */ - WITH_CURSOR_TRACKING(mn, - rc = mdb_update_key(&mn, &key)); - if (rc) - return rc; - } - if (IS_BRANCH(cdst->mc_pg[cdst->mc_top])) { - MDB_val nullkey; - indx_t ix = cdst->mc_ki[cdst->mc_top]; - nullkey.mv_size = 0; - cdst->mc_ki[cdst->mc_top] = 0; - rc = mdb_update_key(cdst, &nullkey); - cdst->mc_ki[cdst->mc_top] = ix; - mdb_cassert(cdst, rc == MDB_SUCCESS); - } - } - - return MDB_SUCCESS; -} - -/** Merge one page into another. - * The nodes from the page pointed to by \b csrc will - * be copied to the page pointed to by \b cdst and then - * the \b csrc page will be freed. - * @param[in] csrc Cursor pointing to the source page. - * @param[in] cdst Cursor pointing to the destination page. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst) -{ - MDB_page *psrc, *pdst; - MDB_node *srcnode; - MDB_val key, data; - unsigned nkeys; - int rc; - indx_t i, j; - - psrc = csrc->mc_pg[csrc->mc_top]; - pdst = cdst->mc_pg[cdst->mc_top]; - - DPRINTF(("merging page %"Z"u into %"Z"u", psrc->mp_pgno, pdst->mp_pgno)); - - mdb_cassert(csrc, csrc->mc_snum > 1); /* can't merge root page */ - mdb_cassert(csrc, cdst->mc_snum > 1); - - /* Mark dst as dirty. */ - if ((rc = mdb_page_touch(cdst))) - return rc; - - /* get dst page again now that we've touched it. */ - pdst = cdst->mc_pg[cdst->mc_top]; - - /* Move all nodes from src to dst. - */ - j = nkeys = NUMKEYS(pdst); - if (IS_LEAF2(psrc)) { - key.mv_size = csrc->mc_db->md_pad; - key.mv_data = METADATA(psrc); - for (i = 0; i < NUMKEYS(psrc); i++, j++) { - rc = mdb_node_add(cdst, j, &key, NULL, 0, 0); - if (rc != MDB_SUCCESS) - return rc; - key.mv_data = (char *)key.mv_data + key.mv_size; - } - } else { - for (i = 0; i < NUMKEYS(psrc); i++, j++) { - srcnode = NODEPTR(psrc, i); - if (i == 0 && IS_BRANCH(psrc)) { - MDB_cursor mn; - MDB_node *s2; - mdb_cursor_copy(csrc, &mn); - mn.mc_xcursor = NULL; - /* must find the lowest key below src */ - rc = mdb_page_search_lowest(&mn); - if (rc) - return rc; - if (IS_LEAF2(mn.mc_pg[mn.mc_top])) { - key.mv_size = mn.mc_db->md_pad; - key.mv_data = LEAF2KEY(mn.mc_pg[mn.mc_top], 0, key.mv_size); - } else { - s2 = NODEPTR(mn.mc_pg[mn.mc_top], 0); - key.mv_size = NODEKSZ(s2); - key.mv_data = NODEKEY(s2); - } - } else { - key.mv_size = srcnode->mn_ksize; - key.mv_data = NODEKEY(srcnode); - } - - data.mv_size = NODEDSZ(srcnode); - data.mv_data = NODEDATA(srcnode); - rc = mdb_node_add(cdst, j, &key, &data, NODEPGNO(srcnode), srcnode->mn_flags); - if (rc != MDB_SUCCESS) - return rc; - } - } - - DPRINTF(("dst page %"Z"u now has %u keys (%.1f%% filled)", - pdst->mp_pgno, NUMKEYS(pdst), - (float)PAGEFILL(cdst->mc_txn->mt_env, pdst) / 10)); - - /* Unlink the src page from parent and add to free list. - */ - csrc->mc_top--; - mdb_node_del(csrc, 0); - if (csrc->mc_ki[csrc->mc_top] == 0) { - key.mv_size = 0; - rc = mdb_update_key(csrc, &key); - if (rc) { - csrc->mc_top++; - return rc; - } - } - csrc->mc_top++; - - psrc = csrc->mc_pg[csrc->mc_top]; - /* If not operating on FreeDB, allow this page to be reused - * in this txn. Otherwise just add to free list. - */ - rc = mdb_page_loose(csrc, psrc); - if (rc) - return rc; - if (IS_LEAF(psrc)) - csrc->mc_db->md_leaf_pages--; - else - csrc->mc_db->md_branch_pages--; - { - /* Adjust other cursors pointing to mp */ - MDB_cursor *m2, *m3; - MDB_dbi dbi = csrc->mc_dbi; - unsigned int top = csrc->mc_top; - - for (m2 = csrc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { - if (csrc->mc_flags & C_SUB) - m3 = &m2->mc_xcursor->mx_cursor; - else - m3 = m2; - if (m3 == csrc) continue; - if (m3->mc_snum < csrc->mc_snum) continue; - if (m3->mc_pg[top] == psrc) { - m3->mc_pg[top] = pdst; - m3->mc_ki[top] += nkeys; - m3->mc_ki[top-1] = cdst->mc_ki[top-1]; - } else if (m3->mc_pg[top-1] == csrc->mc_pg[top-1] && - m3->mc_ki[top-1] > csrc->mc_ki[top-1]) { - m3->mc_ki[top-1]--; - } - if (IS_LEAF(psrc)) - XCURSOR_REFRESH(m3, top, m3->mc_pg[top]); - } - } - { - unsigned int snum = cdst->mc_snum; - uint16_t depth = cdst->mc_db->md_depth; - mdb_cursor_pop(cdst); - rc = mdb_rebalance(cdst); - /* Did the tree height change? */ - if (depth != cdst->mc_db->md_depth) - snum += cdst->mc_db->md_depth - depth; - cdst->mc_snum = snum; - cdst->mc_top = snum-1; - } - return rc; -} - -/** Copy the contents of a cursor. - * @param[in] csrc The cursor to copy from. - * @param[out] cdst The cursor to copy to. - */ -static void -mdb_cursor_copy(const MDB_cursor *csrc, MDB_cursor *cdst) -{ - unsigned int i; - - cdst->mc_txn = csrc->mc_txn; - cdst->mc_dbi = csrc->mc_dbi; - cdst->mc_db = csrc->mc_db; - cdst->mc_dbx = csrc->mc_dbx; - cdst->mc_snum = csrc->mc_snum; - cdst->mc_top = csrc->mc_top; - cdst->mc_flags = csrc->mc_flags; - - for (i=0; imc_snum; i++) { - cdst->mc_pg[i] = csrc->mc_pg[i]; - cdst->mc_ki[i] = csrc->mc_ki[i]; - } -} - -/** Rebalance the tree after a delete operation. - * @param[in] mc Cursor pointing to the page where rebalancing - * should begin. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_rebalance(MDB_cursor *mc) -{ - MDB_node *node; - int rc, fromleft; - unsigned int ptop, minkeys, thresh; - MDB_cursor mn; - indx_t oldki; - - if (IS_BRANCH(mc->mc_pg[mc->mc_top])) { - minkeys = 2; - thresh = 1; - } else { - minkeys = 1; - thresh = FILL_THRESHOLD; - } - DPRINTF(("rebalancing %s page %"Z"u (has %u keys, %.1f%% full)", - IS_LEAF(mc->mc_pg[mc->mc_top]) ? "leaf" : "branch", - mdb_dbg_pgno(mc->mc_pg[mc->mc_top]), NUMKEYS(mc->mc_pg[mc->mc_top]), - (float)PAGEFILL(mc->mc_txn->mt_env, mc->mc_pg[mc->mc_top]) / 10)); - - if (PAGEFILL(mc->mc_txn->mt_env, mc->mc_pg[mc->mc_top]) >= thresh && - NUMKEYS(mc->mc_pg[mc->mc_top]) >= minkeys) { - DPRINTF(("no need to rebalance page %"Z"u, above fill threshold", - mdb_dbg_pgno(mc->mc_pg[mc->mc_top]))); - return MDB_SUCCESS; - } - - if (mc->mc_snum < 2) { - MDB_page *mp = mc->mc_pg[0]; - if (IS_SUBP(mp)) { - DPUTS("Can't rebalance a subpage, ignoring"); - return MDB_SUCCESS; - } - if (NUMKEYS(mp) == 0) { - DPUTS("tree is completely empty"); - mc->mc_db->md_root = P_INVALID; - mc->mc_db->md_depth = 0; - mc->mc_db->md_leaf_pages = 0; - rc = mdb_midl_append(&mc->mc_txn->mt_free_pgs, mp->mp_pgno); - if (rc) - return rc; - /* Adjust cursors pointing to mp */ - mc->mc_snum = 0; - mc->mc_top = 0; - mc->mc_flags &= ~C_INITIALIZED; - { - MDB_cursor *m2, *m3; - MDB_dbi dbi = mc->mc_dbi; - - for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { - if (mc->mc_flags & C_SUB) - m3 = &m2->mc_xcursor->mx_cursor; - else - m3 = m2; - if (!(m3->mc_flags & C_INITIALIZED) || (m3->mc_snum < mc->mc_snum)) - continue; - if (m3->mc_pg[0] == mp) { - m3->mc_snum = 0; - m3->mc_top = 0; - m3->mc_flags &= ~C_INITIALIZED; - } - } - } - } else if (IS_BRANCH(mp) && NUMKEYS(mp) == 1) { - int i; - DPUTS("collapsing root page!"); - rc = mdb_midl_append(&mc->mc_txn->mt_free_pgs, mp->mp_pgno); - if (rc) - return rc; - mc->mc_db->md_root = NODEPGNO(NODEPTR(mp, 0)); - rc = mdb_page_get(mc, mc->mc_db->md_root, &mc->mc_pg[0], NULL); - if (rc) - return rc; - mc->mc_db->md_depth--; - mc->mc_db->md_branch_pages--; - mc->mc_ki[0] = mc->mc_ki[1]; - for (i = 1; imc_db->md_depth; i++) { - mc->mc_pg[i] = mc->mc_pg[i+1]; - mc->mc_ki[i] = mc->mc_ki[i+1]; - } - { - /* Adjust other cursors pointing to mp */ - MDB_cursor *m2, *m3; - MDB_dbi dbi = mc->mc_dbi; - - for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { - if (mc->mc_flags & C_SUB) - m3 = &m2->mc_xcursor->mx_cursor; - else - m3 = m2; - if (m3 == mc) continue; - if (!(m3->mc_flags & C_INITIALIZED)) - continue; - if (m3->mc_pg[0] == mp) { - for (i=0; imc_db->md_depth; i++) { - m3->mc_pg[i] = m3->mc_pg[i+1]; - m3->mc_ki[i] = m3->mc_ki[i+1]; - } - m3->mc_snum--; - m3->mc_top--; - } - } - } - } else - DPUTS("root page doesn't need rebalancing"); - return MDB_SUCCESS; - } - - /* The parent (branch page) must have at least 2 pointers, - * otherwise the tree is invalid. - */ - ptop = mc->mc_top-1; - mdb_cassert(mc, NUMKEYS(mc->mc_pg[ptop]) > 1); - - /* Leaf page fill factor is below the threshold. - * Try to move keys from left or right neighbor, or - * merge with a neighbor page. - */ - - /* Find neighbors. - */ - mdb_cursor_copy(mc, &mn); - mn.mc_xcursor = NULL; - - oldki = mc->mc_ki[mc->mc_top]; - if (mc->mc_ki[ptop] == 0) { - /* We're the leftmost leaf in our parent. - */ - DPUTS("reading right neighbor"); - mn.mc_ki[ptop]++; - node = NODEPTR(mc->mc_pg[ptop], mn.mc_ki[ptop]); - rc = mdb_page_get(mc, NODEPGNO(node), &mn.mc_pg[mn.mc_top], NULL); - if (rc) - return rc; - mn.mc_ki[mn.mc_top] = 0; - mc->mc_ki[mc->mc_top] = NUMKEYS(mc->mc_pg[mc->mc_top]); - fromleft = 0; - } else { - /* There is at least one neighbor to the left. - */ - DPUTS("reading left neighbor"); - mn.mc_ki[ptop]--; - node = NODEPTR(mc->mc_pg[ptop], mn.mc_ki[ptop]); - rc = mdb_page_get(mc, NODEPGNO(node), &mn.mc_pg[mn.mc_top], NULL); - if (rc) - return rc; - mn.mc_ki[mn.mc_top] = NUMKEYS(mn.mc_pg[mn.mc_top]) - 1; - mc->mc_ki[mc->mc_top] = 0; - fromleft = 1; - } - - DPRINTF(("found neighbor page %"Z"u (%u keys, %.1f%% full)", - mn.mc_pg[mn.mc_top]->mp_pgno, NUMKEYS(mn.mc_pg[mn.mc_top]), - (float)PAGEFILL(mc->mc_txn->mt_env, mn.mc_pg[mn.mc_top]) / 10)); - - /* If the neighbor page is above threshold and has enough keys, - * move one key from it. Otherwise we should try to merge them. - * (A branch page must never have less than 2 keys.) - */ - if (PAGEFILL(mc->mc_txn->mt_env, mn.mc_pg[mn.mc_top]) >= thresh && NUMKEYS(mn.mc_pg[mn.mc_top]) > minkeys) { - rc = mdb_node_move(&mn, mc, fromleft); - if (fromleft) { - /* if we inserted on left, bump position up */ - oldki++; - } - } else { - if (!fromleft) { - rc = mdb_page_merge(&mn, mc); - } else { - oldki += NUMKEYS(mn.mc_pg[mn.mc_top]); - mn.mc_ki[mn.mc_top] += mc->mc_ki[mn.mc_top] + 1; - /* We want mdb_rebalance to find mn when doing fixups */ - WITH_CURSOR_TRACKING(mn, - rc = mdb_page_merge(mc, &mn)); - mdb_cursor_copy(&mn, mc); - } - mc->mc_flags &= ~C_EOF; - } - mc->mc_ki[mc->mc_top] = oldki; - return rc; -} - -/** Complete a delete operation started by #mdb_cursor_del(). */ -static int -mdb_cursor_del0(MDB_cursor *mc) -{ - int rc; - MDB_page *mp; - indx_t ki; - unsigned int nkeys; - MDB_cursor *m2, *m3; - MDB_dbi dbi = mc->mc_dbi; - - ki = mc->mc_ki[mc->mc_top]; - mp = mc->mc_pg[mc->mc_top]; - mdb_node_del(mc, mc->mc_db->md_pad); - mc->mc_db->md_entries--; - { - /* Adjust other cursors pointing to mp */ - for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { - m3 = (mc->mc_flags & C_SUB) ? &m2->mc_xcursor->mx_cursor : m2; - if (! (m2->mc_flags & m3->mc_flags & C_INITIALIZED)) - continue; - if (m3 == mc || m3->mc_snum < mc->mc_snum) - continue; - if (m3->mc_pg[mc->mc_top] == mp) { - if (m3->mc_ki[mc->mc_top] == ki) { - m3->mc_flags |= C_DEL; - if (mc->mc_db->md_flags & MDB_DUPSORT) { - /* Sub-cursor referred into dataset which is gone */ - m3->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); - } - continue; - } else if (m3->mc_ki[mc->mc_top] > ki) { - m3->mc_ki[mc->mc_top]--; - } - XCURSOR_REFRESH(m3, mc->mc_top, mp); - } - } - } - rc = mdb_rebalance(mc); - if (rc) - goto fail; - - /* DB is totally empty now, just bail out. - * Other cursors adjustments were already done - * by mdb_rebalance and aren't needed here. - */ - if (!mc->mc_snum) { - mc->mc_flags |= C_EOF; - return rc; - } - - mp = mc->mc_pg[mc->mc_top]; - nkeys = NUMKEYS(mp); - - /* Adjust other cursors pointing to mp */ - for (m2 = mc->mc_txn->mt_cursors[dbi]; !rc && m2; m2=m2->mc_next) { - m3 = (mc->mc_flags & C_SUB) ? &m2->mc_xcursor->mx_cursor : m2; - if (!(m2->mc_flags & m3->mc_flags & C_INITIALIZED)) - continue; - if (m3->mc_snum < mc->mc_snum) - continue; - if (m3->mc_pg[mc->mc_top] == mp) { - if (m3->mc_ki[mc->mc_top] >= mc->mc_ki[mc->mc_top]) { - /* if m3 points past last node in page, find next sibling */ - if (m3->mc_ki[mc->mc_top] >= nkeys) { - rc = mdb_cursor_sibling(m3, 1); - if (rc == MDB_NOTFOUND) { - m3->mc_flags |= C_EOF; - rc = MDB_SUCCESS; - continue; - } - if (rc) - goto fail; - } - if (m3->mc_xcursor && !(m3->mc_flags & C_EOF)) { - MDB_node *node = NODEPTR(m3->mc_pg[m3->mc_top], m3->mc_ki[m3->mc_top]); - /* If this node has dupdata, it may need to be reinited - * because its data has moved. - * If the xcursor was not initd it must be reinited. - * Else if node points to a subDB, nothing is needed. - * Else (xcursor was initd, not a subDB) needs mc_pg[0] reset. - */ - if (node->mn_flags & F_DUPDATA) { - if (m3->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) { - if (!(node->mn_flags & F_SUBDATA)) - m3->mc_xcursor->mx_cursor.mc_pg[0] = NODEDATA(node); - } else { - mdb_xcursor_init1(m3, node); - rc = mdb_cursor_first(&m3->mc_xcursor->mx_cursor, NULL, NULL); - if (rc) - goto fail; - } - } - m3->mc_xcursor->mx_cursor.mc_flags |= C_DEL; - } - } - } - } - mc->mc_flags |= C_DEL; - -fail: - if (rc) - mc->mc_txn->mt_flags |= MDB_TXN_ERROR; - return rc; -} - -int -mdb_del(MDB_txn *txn, MDB_dbi dbi, - MDB_val *key, MDB_val *data) -{ - if (!key || !TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) - return EINVAL; - - if (txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_BLOCKED)) - return (txn->mt_flags & MDB_TXN_RDONLY) ? EACCES : MDB_BAD_TXN; - - if (!F_ISSET(txn->mt_dbs[dbi].md_flags, MDB_DUPSORT)) { - /* must ignore any data */ - data = NULL; - } - - return mdb_del0(txn, dbi, key, data, 0); -} - -static int -mdb_del0(MDB_txn *txn, MDB_dbi dbi, - MDB_val *key, MDB_val *data, unsigned flags) -{ - MDB_cursor mc; - MDB_xcursor mx; - MDB_cursor_op op; - MDB_val rdata, *xdata; - int rc, exact = 0; - DKBUF; - - DPRINTF(("====> delete db %u key [%s]", dbi, DKEY(key))); - - mdb_cursor_init(&mc, txn, dbi, &mx); - - if (data) { - op = MDB_GET_BOTH; - rdata = *data; - xdata = &rdata; - } else { - op = MDB_SET; - xdata = NULL; - flags |= MDB_NODUPDATA; - } - rc = mdb_cursor_set(&mc, key, xdata, op, &exact); - if (rc == 0) { - /* let mdb_page_split know about this cursor if needed: - * delete will trigger a rebalance; if it needs to move - * a node from one page to another, it will have to - * update the parent's separator key(s). If the new sepkey - * is larger than the current one, the parent page may - * run out of space, triggering a split. We need this - * cursor to be consistent until the end of the rebalance. - */ - mc.mc_flags |= C_UNTRACK; - mc.mc_next = txn->mt_cursors[dbi]; - txn->mt_cursors[dbi] = &mc; - rc = mdb_cursor_del(&mc, flags); - txn->mt_cursors[dbi] = mc.mc_next; - } - return rc; -} - -/** Split a page and insert a new node. - * Set #MDB_TXN_ERROR on failure. - * @param[in,out] mc Cursor pointing to the page and desired insertion index. - * The cursor will be updated to point to the actual page and index where - * the node got inserted after the split. - * @param[in] newkey The key for the newly inserted node. - * @param[in] newdata The data for the newly inserted node. - * @param[in] newpgno The page number, if the new node is a branch node. - * @param[in] nflags The #NODE_ADD_FLAGS for the new node. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno, - unsigned int nflags) -{ - unsigned int flags; - int rc = MDB_SUCCESS, new_root = 0, did_split = 0; - indx_t newindx; - pgno_t pgno = 0; - int i, j, split_indx, nkeys, pmax; - MDB_env *env = mc->mc_txn->mt_env; - MDB_node *node; - MDB_val sepkey, rkey, xdata, *rdata = &xdata; - MDB_page *copy = NULL; - MDB_page *mp, *rp, *pp; - int ptop; - MDB_cursor mn; - DKBUF; - - mp = mc->mc_pg[mc->mc_top]; - newindx = mc->mc_ki[mc->mc_top]; - nkeys = NUMKEYS(mp); - - DPRINTF(("-----> splitting %s page %"Z"u and adding [%s] at index %i/%i", - IS_LEAF(mp) ? "leaf" : "branch", mp->mp_pgno, - DKEY(newkey), mc->mc_ki[mc->mc_top], nkeys)); - - /* Create a right sibling. */ - if ((rc = mdb_page_new(mc, mp->mp_flags, 1, &rp))) - return rc; - rp->mp_pad = mp->mp_pad; - DPRINTF(("new right sibling: page %"Z"u", rp->mp_pgno)); - - /* Usually when splitting the root page, the cursor - * height is 1. But when called from mdb_update_key, - * the cursor height may be greater because it walks - * up the stack while finding the branch slot to update. - */ - if (mc->mc_top < 1) { - if ((rc = mdb_page_new(mc, P_BRANCH, 1, &pp))) - goto done; - /* shift current top to make room for new parent */ - for (i=mc->mc_snum; i>0; i--) { - mc->mc_pg[i] = mc->mc_pg[i-1]; - mc->mc_ki[i] = mc->mc_ki[i-1]; - } - mc->mc_pg[0] = pp; - mc->mc_ki[0] = 0; - mc->mc_db->md_root = pp->mp_pgno; - DPRINTF(("root split! new root = %"Z"u", pp->mp_pgno)); - new_root = mc->mc_db->md_depth++; - - /* Add left (implicit) pointer. */ - if ((rc = mdb_node_add(mc, 0, NULL, NULL, mp->mp_pgno, 0)) != MDB_SUCCESS) { - /* undo the pre-push */ - mc->mc_pg[0] = mc->mc_pg[1]; - mc->mc_ki[0] = mc->mc_ki[1]; - mc->mc_db->md_root = mp->mp_pgno; - mc->mc_db->md_depth--; - goto done; - } - mc->mc_snum++; - mc->mc_top++; - ptop = 0; - } else { - ptop = mc->mc_top-1; - DPRINTF(("parent branch page is %"Z"u", mc->mc_pg[ptop]->mp_pgno)); - } - - mdb_cursor_copy(mc, &mn); - mn.mc_xcursor = NULL; - mn.mc_pg[mn.mc_top] = rp; - mn.mc_ki[ptop] = mc->mc_ki[ptop]+1; - - if (nflags & MDB_APPEND) { - mn.mc_ki[mn.mc_top] = 0; - sepkey = *newkey; - split_indx = newindx; - nkeys = 0; - } else { - - split_indx = (nkeys+1) / 2; - - if (IS_LEAF2(rp)) { - char *split, *ins; - int x; - unsigned int lsize, rsize, ksize; - /* Move half of the keys to the right sibling */ - x = mc->mc_ki[mc->mc_top] - split_indx; - ksize = mc->mc_db->md_pad; - split = LEAF2KEY(mp, split_indx, ksize); - rsize = (nkeys - split_indx) * ksize; - lsize = (nkeys - split_indx) * sizeof(indx_t); - mp->mp_lower -= lsize; - rp->mp_lower += lsize; - mp->mp_upper += rsize - lsize; - rp->mp_upper -= rsize - lsize; - sepkey.mv_size = ksize; - if (newindx == split_indx) { - sepkey.mv_data = newkey->mv_data; - } else { - sepkey.mv_data = split; - } - if (x<0) { - ins = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], ksize); - memcpy(rp->mp_ptrs, split, rsize); - sepkey.mv_data = rp->mp_ptrs; - memmove(ins+ksize, ins, (split_indx - mc->mc_ki[mc->mc_top]) * ksize); - memcpy(ins, newkey->mv_data, ksize); - mp->mp_lower += sizeof(indx_t); - mp->mp_upper -= ksize - sizeof(indx_t); - } else { - if (x) - memcpy(rp->mp_ptrs, split, x * ksize); - ins = LEAF2KEY(rp, x, ksize); - memcpy(ins, newkey->mv_data, ksize); - memcpy(ins+ksize, split + x * ksize, rsize - x * ksize); - rp->mp_lower += sizeof(indx_t); - rp->mp_upper -= ksize - sizeof(indx_t); - mc->mc_ki[mc->mc_top] = x; - } - } else { - int psize, nsize, k, keythresh; - - /* Maximum free space in an empty page */ - pmax = env->me_psize - PAGEHDRSZ; - /* Threshold number of keys considered "small" */ - keythresh = env->me_psize >> 7; - - if (IS_LEAF(mp)) - nsize = mdb_leaf_size(env, newkey, newdata); - else - nsize = mdb_branch_size(env, newkey); - nsize = EVEN(nsize); - - /* grab a page to hold a temporary copy */ - copy = mdb_page_malloc(mc->mc_txn, 1); - if (copy == NULL) { - rc = ENOMEM; - goto done; - } - copy->mp_pgno = mp->mp_pgno; - copy->mp_flags = mp->mp_flags; - copy->mp_lower = (PAGEHDRSZ-PAGEBASE); - copy->mp_upper = env->me_psize - PAGEBASE; - - /* prepare to insert */ - for (i=0, j=0; imp_ptrs[j++] = 0; - } - copy->mp_ptrs[j++] = mp->mp_ptrs[i]; - } - - /* When items are relatively large the split point needs - * to be checked, because being off-by-one will make the - * difference between success or failure in mdb_node_add. - * - * It's also relevant if a page happens to be laid out - * such that one half of its nodes are all "small" and - * the other half of its nodes are "large." If the new - * item is also "large" and falls on the half with - * "large" nodes, it also may not fit. - * - * As a final tweak, if the new item goes on the last - * spot on the page (and thus, onto the new page), bias - * the split so the new page is emptier than the old page. - * This yields better packing during sequential inserts. - */ - if (nkeys < keythresh || nsize > pmax/16 || newindx >= nkeys) { - /* Find split point */ - psize = 0; - if (newindx <= split_indx || newindx >= nkeys) { - i = 0; j = 1; - k = newindx >= nkeys ? nkeys : split_indx+1+IS_LEAF(mp); - } else { - i = nkeys; j = -1; - k = split_indx-1; - } - for (; i!=k; i+=j) { - if (i == newindx) { - psize += nsize; - node = NULL; - } else { - node = (MDB_node *)((char *)mp + copy->mp_ptrs[i] + PAGEBASE); - psize += NODESIZE + NODEKSZ(node) + sizeof(indx_t); - if (IS_LEAF(mp)) { - if (F_ISSET(node->mn_flags, F_BIGDATA)) - psize += sizeof(pgno_t); - else - psize += NODEDSZ(node); - } - psize = EVEN(psize); - } - if (psize > pmax || i == k-j) { - split_indx = i + (j<0); - break; - } - } - } - if (split_indx == newindx) { - sepkey.mv_size = newkey->mv_size; - sepkey.mv_data = newkey->mv_data; - } else { - node = (MDB_node *)((char *)mp + copy->mp_ptrs[split_indx] + PAGEBASE); - sepkey.mv_size = node->mn_ksize; - sepkey.mv_data = NODEKEY(node); - } - } - } - - DPRINTF(("separator is %d [%s]", split_indx, DKEY(&sepkey))); - - /* Copy separator key to the parent. - */ - if (SIZELEFT(mn.mc_pg[ptop]) < mdb_branch_size(env, &sepkey)) { - int snum = mc->mc_snum; - mn.mc_snum--; - mn.mc_top--; - did_split = 1; - /* We want other splits to find mn when doing fixups */ - WITH_CURSOR_TRACKING(mn, - rc = mdb_page_split(&mn, &sepkey, NULL, rp->mp_pgno, 0)); - if (rc) - goto done; - - /* root split? */ - if (mc->mc_snum > snum) { - ptop++; - } - /* Right page might now have changed parent. - * Check if left page also changed parent. - */ - if (mn.mc_pg[ptop] != mc->mc_pg[ptop] && - mc->mc_ki[ptop] >= NUMKEYS(mc->mc_pg[ptop])) { - for (i=0; imc_pg[i] = mn.mc_pg[i]; - mc->mc_ki[i] = mn.mc_ki[i]; - } - mc->mc_pg[ptop] = mn.mc_pg[ptop]; - if (mn.mc_ki[ptop]) { - mc->mc_ki[ptop] = mn.mc_ki[ptop] - 1; - } else { - /* find right page's left sibling */ - mc->mc_ki[ptop] = mn.mc_ki[ptop]; - mdb_cursor_sibling(mc, 0); - } - } - } else { - mn.mc_top--; - rc = mdb_node_add(&mn, mn.mc_ki[ptop], &sepkey, NULL, rp->mp_pgno, 0); - mn.mc_top++; - } - if (rc != MDB_SUCCESS) { - goto done; - } - if (nflags & MDB_APPEND) { - mc->mc_pg[mc->mc_top] = rp; - mc->mc_ki[mc->mc_top] = 0; - rc = mdb_node_add(mc, 0, newkey, newdata, newpgno, nflags); - if (rc) - goto done; - for (i=0; imc_top; i++) - mc->mc_ki[i] = mn.mc_ki[i]; - } else if (!IS_LEAF2(mp)) { - /* Move nodes */ - mc->mc_pg[mc->mc_top] = rp; - i = split_indx; - j = 0; - do { - if (i == newindx) { - rkey.mv_data = newkey->mv_data; - rkey.mv_size = newkey->mv_size; - if (IS_LEAF(mp)) { - rdata = newdata; - } else - pgno = newpgno; - flags = nflags; - /* Update index for the new key. */ - mc->mc_ki[mc->mc_top] = j; - } else { - node = (MDB_node *)((char *)mp + copy->mp_ptrs[i] + PAGEBASE); - rkey.mv_data = NODEKEY(node); - rkey.mv_size = node->mn_ksize; - if (IS_LEAF(mp)) { - xdata.mv_data = NODEDATA(node); - xdata.mv_size = NODEDSZ(node); - rdata = &xdata; - } else - pgno = NODEPGNO(node); - flags = node->mn_flags; - } - - if (!IS_LEAF(mp) && j == 0) { - /* First branch index doesn't need key data. */ - rkey.mv_size = 0; - } - - rc = mdb_node_add(mc, j, &rkey, rdata, pgno, flags); - if (rc) - goto done; - if (i == nkeys) { - i = 0; - j = 0; - mc->mc_pg[mc->mc_top] = copy; - } else { - i++; - j++; - } - } while (i != split_indx); - - nkeys = NUMKEYS(copy); - for (i=0; imp_ptrs[i] = copy->mp_ptrs[i]; - mp->mp_lower = copy->mp_lower; - mp->mp_upper = copy->mp_upper; - memcpy(NODEPTR(mp, nkeys-1), NODEPTR(copy, nkeys-1), - env->me_psize - copy->mp_upper - PAGEBASE); - - /* reset back to original page */ - if (newindx < split_indx) { - mc->mc_pg[mc->mc_top] = mp; - } else { - mc->mc_pg[mc->mc_top] = rp; - mc->mc_ki[ptop]++; - /* Make sure mc_ki is still valid. - */ - if (mn.mc_pg[ptop] != mc->mc_pg[ptop] && - mc->mc_ki[ptop] >= NUMKEYS(mc->mc_pg[ptop])) { - for (i=0; i<=ptop; i++) { - mc->mc_pg[i] = mn.mc_pg[i]; - mc->mc_ki[i] = mn.mc_ki[i]; - } - } - } - if (nflags & MDB_RESERVE) { - node = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); - if (!(node->mn_flags & F_BIGDATA)) - newdata->mv_data = NODEDATA(node); - } - } else { - if (newindx >= split_indx) { - mc->mc_pg[mc->mc_top] = rp; - mc->mc_ki[ptop]++; - /* Make sure mc_ki is still valid. - */ - if (mn.mc_pg[ptop] != mc->mc_pg[ptop] && - mc->mc_ki[ptop] >= NUMKEYS(mc->mc_pg[ptop])) { - for (i=0; i<=ptop; i++) { - mc->mc_pg[i] = mn.mc_pg[i]; - mc->mc_ki[i] = mn.mc_ki[i]; - } - } - } - } - - { - /* Adjust other cursors pointing to mp */ - MDB_cursor *m2, *m3; - MDB_dbi dbi = mc->mc_dbi; - nkeys = NUMKEYS(mp); - - for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { - if (mc->mc_flags & C_SUB) - m3 = &m2->mc_xcursor->mx_cursor; - else - m3 = m2; - if (m3 == mc) - continue; - if (!(m2->mc_flags & m3->mc_flags & C_INITIALIZED)) - continue; - if (new_root) { - int k; - /* sub cursors may be on different DB */ - if (m3->mc_pg[0] != mp) - continue; - /* root split */ - for (k=new_root; k>=0; k--) { - m3->mc_ki[k+1] = m3->mc_ki[k]; - m3->mc_pg[k+1] = m3->mc_pg[k]; - } - if (m3->mc_ki[0] >= nkeys) { - m3->mc_ki[0] = 1; - } else { - m3->mc_ki[0] = 0; - } - m3->mc_pg[0] = mc->mc_pg[0]; - m3->mc_snum++; - m3->mc_top++; - } - if (m3->mc_top >= mc->mc_top && m3->mc_pg[mc->mc_top] == mp) { - if (m3->mc_ki[mc->mc_top] >= newindx && !(nflags & MDB_SPLIT_REPLACE)) - m3->mc_ki[mc->mc_top]++; - if (m3->mc_ki[mc->mc_top] >= nkeys) { - m3->mc_pg[mc->mc_top] = rp; - m3->mc_ki[mc->mc_top] -= nkeys; - for (i=0; imc_top; i++) { - m3->mc_ki[i] = mn.mc_ki[i]; - m3->mc_pg[i] = mn.mc_pg[i]; - } - } - } else if (!did_split && m3->mc_top >= ptop && m3->mc_pg[ptop] == mc->mc_pg[ptop] && - m3->mc_ki[ptop] >= mc->mc_ki[ptop]) { - m3->mc_ki[ptop]++; - } - if (IS_LEAF(mp)) - XCURSOR_REFRESH(m3, mc->mc_top, m3->mc_pg[mc->mc_top]); - } - } - DPRINTF(("mp left: %d, rp left: %d", SIZELEFT(mp), SIZELEFT(rp))); - -done: - if (copy) /* tmp page */ - mdb_page_free(env, copy); - if (rc) - mc->mc_txn->mt_flags |= MDB_TXN_ERROR; - return rc; -} - -int -mdb_put(MDB_txn *txn, MDB_dbi dbi, - MDB_val *key, MDB_val *data, unsigned int flags) -{ - MDB_cursor mc; - MDB_xcursor mx; - int rc; - - if (!key || !data || !TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) - return EINVAL; - - if (flags & ~(MDB_NOOVERWRITE|MDB_NODUPDATA|MDB_RESERVE|MDB_APPEND|MDB_APPENDDUP)) - return EINVAL; - - if (txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_BLOCKED)) - return (txn->mt_flags & MDB_TXN_RDONLY) ? EACCES : MDB_BAD_TXN; - - mdb_cursor_init(&mc, txn, dbi, &mx); - mc.mc_next = txn->mt_cursors[dbi]; - txn->mt_cursors[dbi] = &mc; - rc = mdb_cursor_put(&mc, key, data, flags); - txn->mt_cursors[dbi] = mc.mc_next; - return rc; -} - -#ifndef MDB_WBUF -#define MDB_WBUF (1024*1024) -#endif -#define MDB_EOF 0x10 /**< #mdb_env_copyfd1() is done reading */ - - /** State needed for a double-buffering compacting copy. */ -typedef struct mdb_copy { - MDB_env *mc_env; - MDB_txn *mc_txn; - pthread_mutex_t mc_mutex; - pthread_cond_t mc_cond; /**< Condition variable for #mc_new */ - char *mc_wbuf[2]; - char *mc_over[2]; - int mc_wlen[2]; - int mc_olen[2]; - pgno_t mc_next_pgno; - HANDLE mc_fd; - int mc_toggle; /**< Buffer number in provider */ - int mc_new; /**< (0-2 buffers to write) | (#MDB_EOF at end) */ - /** Error code. Never cleared if set. Both threads can set nonzero - * to fail the copy. Not mutex-protected, LMDB expects atomic int. - */ - volatile int mc_error; -} mdb_copy; - - /** Dedicated writer thread for compacting copy. */ -static THREAD_RET ESECT CALL_CONV -mdb_env_copythr(void *arg) -{ - mdb_copy *my = arg; - char *ptr; - int toggle = 0, wsize, rc; -#ifdef _WIN32 - DWORD len; -#define DO_WRITE(rc, fd, ptr, w2, len) rc = WriteFile(fd, ptr, w2, &len, NULL) -#else - int len; -#define DO_WRITE(rc, fd, ptr, w2, len) len = write(fd, ptr, w2); rc = (len >= 0) -#ifdef SIGPIPE - sigset_t set; - sigemptyset(&set); - sigaddset(&set, SIGPIPE); - if ((rc = pthread_sigmask(SIG_BLOCK, &set, NULL)) != 0) - my->mc_error = rc; -#endif -#endif - - pthread_mutex_lock(&my->mc_mutex); - for(;;) { - while (!my->mc_new) - pthread_cond_wait(&my->mc_cond, &my->mc_mutex); - if (my->mc_new == 0 + MDB_EOF) /* 0 buffers, just EOF */ - break; - wsize = my->mc_wlen[toggle]; - ptr = my->mc_wbuf[toggle]; -again: - rc = MDB_SUCCESS; - while (wsize > 0 && !my->mc_error) { - DO_WRITE(rc, my->mc_fd, ptr, wsize, len); - if (!rc) { - rc = ErrCode(); -#if defined(SIGPIPE) && !defined(_WIN32) - if (rc == EPIPE) { - /* Collect the pending SIGPIPE, otherwise at least OS X - * gives it to the process on thread-exit (ITS#8504). - */ - int tmp; - sigwait(&set, &tmp); - } -#endif - break; - } else if (len > 0) { - rc = MDB_SUCCESS; - ptr += len; - wsize -= len; - continue; - } else { - rc = EIO; - break; - } - } - if (rc) { - my->mc_error = rc; - } - /* If there's an overflow page tail, write it too */ - if (my->mc_olen[toggle]) { - wsize = my->mc_olen[toggle]; - ptr = my->mc_over[toggle]; - my->mc_olen[toggle] = 0; - goto again; - } - my->mc_wlen[toggle] = 0; - toggle ^= 1; - /* Return the empty buffer to provider */ - my->mc_new--; - pthread_cond_signal(&my->mc_cond); - } - pthread_mutex_unlock(&my->mc_mutex); - return (THREAD_RET)0; -#undef DO_WRITE -} - - /** Give buffer and/or #MDB_EOF to writer thread, await unused buffer. - * - * @param[in] my control structure. - * @param[in] adjust (1 to hand off 1 buffer) | (MDB_EOF when ending). - */ -static int ESECT -mdb_env_cthr_toggle(mdb_copy *my, int adjust) -{ - pthread_mutex_lock(&my->mc_mutex); - my->mc_new += adjust; - pthread_cond_signal(&my->mc_cond); - while (my->mc_new & 2) /* both buffers in use */ - pthread_cond_wait(&my->mc_cond, &my->mc_mutex); - pthread_mutex_unlock(&my->mc_mutex); - - my->mc_toggle ^= (adjust & 1); - /* Both threads reset mc_wlen, to be safe from threading errors */ - my->mc_wlen[my->mc_toggle] = 0; - return my->mc_error; -} - - /** Depth-first tree traversal for compacting copy. - * @param[in] my control structure. - * @param[in,out] pg database root. - * @param[in] flags includes #F_DUPDATA if it is a sorted-duplicate sub-DB. - */ -static int ESECT -mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags) -{ - MDB_cursor mc = {0}; - MDB_node *ni; - MDB_page *mo, *mp, *leaf; - char *buf, *ptr; - int rc, toggle; - unsigned int i; - - /* Empty DB, nothing to do */ - if (*pg == P_INVALID) - return MDB_SUCCESS; - - mc.mc_snum = 1; - mc.mc_txn = my->mc_txn; - - rc = mdb_page_get(&mc, *pg, &mc.mc_pg[0], NULL); - if (rc) - return rc; - rc = mdb_page_search_root(&mc, NULL, MDB_PS_FIRST); - if (rc) - return rc; - - /* Make cursor pages writable */ - buf = ptr = malloc(my->mc_env->me_psize * mc.mc_snum); - if (buf == NULL) - return ENOMEM; - - for (i=0; imc_env->me_psize); - mc.mc_pg[i] = (MDB_page *)ptr; - ptr += my->mc_env->me_psize; - } - - /* This is writable space for a leaf page. Usually not needed. */ - leaf = (MDB_page *)ptr; - - toggle = my->mc_toggle; - while (mc.mc_snum > 0) { - unsigned n; - mp = mc.mc_pg[mc.mc_top]; - n = NUMKEYS(mp); - - if (IS_LEAF(mp)) { - if (!IS_LEAF2(mp) && !(flags & F_DUPDATA)) { - for (i=0; imn_flags & F_BIGDATA) { - MDB_page *omp; - pgno_t pg; - - /* Need writable leaf */ - if (mp != leaf) { - mc.mc_pg[mc.mc_top] = leaf; - mdb_page_copy(leaf, mp, my->mc_env->me_psize); - mp = leaf; - ni = NODEPTR(mp, i); - } - - memcpy(&pg, NODEDATA(ni), sizeof(pg)); - memcpy(NODEDATA(ni), &my->mc_next_pgno, sizeof(pgno_t)); - rc = mdb_page_get(&mc, pg, &omp, NULL); - if (rc) - goto done; - if (my->mc_wlen[toggle] >= MDB_WBUF) { - rc = mdb_env_cthr_toggle(my, 1); - if (rc) - goto done; - toggle = my->mc_toggle; - } - mo = (MDB_page *)(my->mc_wbuf[toggle] + my->mc_wlen[toggle]); - memcpy(mo, omp, my->mc_env->me_psize); - mo->mp_pgno = my->mc_next_pgno; - my->mc_next_pgno += omp->mp_pages; - my->mc_wlen[toggle] += my->mc_env->me_psize; - if (omp->mp_pages > 1) { - my->mc_olen[toggle] = my->mc_env->me_psize * (omp->mp_pages - 1); - my->mc_over[toggle] = (char *)omp + my->mc_env->me_psize; - rc = mdb_env_cthr_toggle(my, 1); - if (rc) - goto done; - toggle = my->mc_toggle; - } - } else if (ni->mn_flags & F_SUBDATA) { - MDB_db db; - - /* Need writable leaf */ - if (mp != leaf) { - mc.mc_pg[mc.mc_top] = leaf; - mdb_page_copy(leaf, mp, my->mc_env->me_psize); - mp = leaf; - ni = NODEPTR(mp, i); - } - - memcpy(&db, NODEDATA(ni), sizeof(db)); - my->mc_toggle = toggle; - rc = mdb_env_cwalk(my, &db.md_root, ni->mn_flags & F_DUPDATA); - if (rc) - goto done; - toggle = my->mc_toggle; - memcpy(NODEDATA(ni), &db, sizeof(db)); - } - } - } - } else { - mc.mc_ki[mc.mc_top]++; - if (mc.mc_ki[mc.mc_top] < n) { - pgno_t pg; -again: - ni = NODEPTR(mp, mc.mc_ki[mc.mc_top]); - pg = NODEPGNO(ni); - rc = mdb_page_get(&mc, pg, &mp, NULL); - if (rc) - goto done; - mc.mc_top++; - mc.mc_snum++; - mc.mc_ki[mc.mc_top] = 0; - if (IS_BRANCH(mp)) { - /* Whenever we advance to a sibling branch page, - * we must proceed all the way down to its first leaf. - */ - mdb_page_copy(mc.mc_pg[mc.mc_top], mp, my->mc_env->me_psize); - goto again; - } else - mc.mc_pg[mc.mc_top] = mp; - continue; - } - } - if (my->mc_wlen[toggle] >= MDB_WBUF) { - rc = mdb_env_cthr_toggle(my, 1); - if (rc) - goto done; - toggle = my->mc_toggle; - } - mo = (MDB_page *)(my->mc_wbuf[toggle] + my->mc_wlen[toggle]); - mdb_page_copy(mo, mp, my->mc_env->me_psize); - mo->mp_pgno = my->mc_next_pgno++; - my->mc_wlen[toggle] += my->mc_env->me_psize; - if (mc.mc_top) { - /* Update parent if there is one */ - ni = NODEPTR(mc.mc_pg[mc.mc_top-1], mc.mc_ki[mc.mc_top-1]); - SETPGNO(ni, mo->mp_pgno); - mdb_cursor_pop(&mc); - } else { - /* Otherwise we're done */ - *pg = mo->mp_pgno; - break; - } - } -done: - free(buf); - return rc; -} - - /** Copy environment with compaction. */ -static int ESECT -mdb_env_copyfd1(MDB_env *env, HANDLE fd) -{ - MDB_meta *mm; - MDB_page *mp; - mdb_copy my = {0}; - MDB_txn *txn = NULL; - pthread_t thr; - pgno_t root, new_root; - int rc = MDB_SUCCESS; - -#ifdef _WIN32 - if (!(my.mc_mutex = CreateMutex(NULL, FALSE, NULL)) || - !(my.mc_cond = CreateEvent(NULL, FALSE, FALSE, NULL))) { - rc = ErrCode(); - goto done; - } - my.mc_wbuf[0] = _aligned_malloc(MDB_WBUF*2, env->me_os_psize); - if (my.mc_wbuf[0] == NULL) { - /* _aligned_malloc() sets errno, but we use Windows error codes */ - rc = ERROR_NOT_ENOUGH_MEMORY; - goto done; - } -#else - if ((rc = pthread_mutex_init(&my.mc_mutex, NULL)) != 0) - return rc; - if ((rc = pthread_cond_init(&my.mc_cond, NULL)) != 0) - goto done2; -#ifdef HAVE_MEMALIGN - my.mc_wbuf[0] = memalign(env->me_os_psize, MDB_WBUF*2); - if (my.mc_wbuf[0] == NULL) { - rc = errno; - goto done; - } -#else - { - void *p; - if ((rc = posix_memalign(&p, env->me_os_psize, MDB_WBUF*2)) != 0) - goto done; - my.mc_wbuf[0] = p; - } -#endif -#endif - memset(my.mc_wbuf[0], 0, MDB_WBUF*2); - my.mc_wbuf[1] = my.mc_wbuf[0] + MDB_WBUF; - my.mc_next_pgno = NUM_METAS; - my.mc_env = env; - my.mc_fd = fd; - rc = THREAD_CREATE(thr, mdb_env_copythr, &my); - if (rc) - goto done; - - rc = mdb_txn_begin(env, NULL, MDB_RDONLY, &txn); - if (rc) - goto finish; - - mp = (MDB_page *)my.mc_wbuf[0]; - memset(mp, 0, NUM_METAS * env->me_psize); - mp->mp_pgno = 0; - mp->mp_flags = P_META; - mm = (MDB_meta *)METADATA(mp); - mdb_env_init_meta0(env, mm); - mm->mm_address = env->me_metas[0]->mm_address; - - mp = (MDB_page *)(my.mc_wbuf[0] + env->me_psize); - mp->mp_pgno = 1; - mp->mp_flags = P_META; - *(MDB_meta *)METADATA(mp) = *mm; - mm = (MDB_meta *)METADATA(mp); - - /* Set metapage 1 with current main DB */ - root = new_root = txn->mt_dbs[MAIN_DBI].md_root; - if (root != P_INVALID) { - /* Count free pages + freeDB pages. Subtract from last_pg - * to find the new last_pg, which also becomes the new root. - */ - MDB_ID freecount = 0; - MDB_cursor mc; - MDB_val key, data; - mdb_cursor_init(&mc, txn, FREE_DBI, NULL); - while ((rc = mdb_cursor_get(&mc, &key, &data, MDB_NEXT)) == 0) - freecount += *(MDB_ID *)data.mv_data; - if (rc != MDB_NOTFOUND) - goto finish; - freecount += txn->mt_dbs[FREE_DBI].md_branch_pages + - txn->mt_dbs[FREE_DBI].md_leaf_pages + - txn->mt_dbs[FREE_DBI].md_overflow_pages; - - new_root = txn->mt_next_pgno - 1 - freecount; - mm->mm_last_pg = new_root; - mm->mm_dbs[MAIN_DBI] = txn->mt_dbs[MAIN_DBI]; - mm->mm_dbs[MAIN_DBI].md_root = new_root; - } else { - /* When the DB is empty, handle it specially to - * fix any breakage like page leaks from ITS#8174. - */ - mm->mm_dbs[MAIN_DBI].md_flags = txn->mt_dbs[MAIN_DBI].md_flags; - } - if (root != P_INVALID || mm->mm_dbs[MAIN_DBI].md_flags) { - mm->mm_txnid = 1; /* use metapage 1 */ - } - - my.mc_wlen[0] = env->me_psize * NUM_METAS; - my.mc_txn = txn; - rc = mdb_env_cwalk(&my, &root, 0); - if (rc == MDB_SUCCESS && root != new_root) { - rc = MDB_INCOMPATIBLE; /* page leak or corrupt DB */ - } - -finish: - if (rc) - my.mc_error = rc; - mdb_env_cthr_toggle(&my, 1 | MDB_EOF); - rc = THREAD_FINISH(thr); - mdb_txn_abort(txn); - -done: -#ifdef _WIN32 - if (my.mc_wbuf[0]) _aligned_free(my.mc_wbuf[0]); - if (my.mc_cond) CloseHandle(my.mc_cond); - if (my.mc_mutex) CloseHandle(my.mc_mutex); -#else - free(my.mc_wbuf[0]); - pthread_cond_destroy(&my.mc_cond); -done2: - pthread_mutex_destroy(&my.mc_mutex); -#endif - return rc ? rc : my.mc_error; -} - - /** Copy environment as-is. */ -static int ESECT -mdb_env_copyfd0(MDB_env *env, HANDLE fd) -{ - MDB_txn *txn = NULL; - mdb_mutexref_t wmutex = NULL; - int rc; - size_t wsize, w3; - char *ptr; -#ifdef _WIN32 - DWORD len, w2; -#define DO_WRITE(rc, fd, ptr, w2, len) rc = WriteFile(fd, ptr, w2, &len, NULL) -#else - ssize_t len; - size_t w2; -#define DO_WRITE(rc, fd, ptr, w2, len) len = write(fd, ptr, w2); rc = (len >= 0) -#endif - - /* Do the lock/unlock of the reader mutex before starting the - * write txn. Otherwise other read txns could block writers. - */ - rc = mdb_txn_begin(env, NULL, MDB_RDONLY, &txn); - if (rc) - return rc; - - if (env->me_txns) { - /* We must start the actual read txn after blocking writers */ - mdb_txn_end(txn, MDB_END_RESET_TMP); - - /* Temporarily block writers until we snapshot the meta pages */ - wmutex = env->me_wmutex; - if (LOCK_MUTEX(rc, env, wmutex)) - goto leave; - - rc = mdb_txn_renew0(txn); - if (rc) { - UNLOCK_MUTEX(wmutex); - goto leave; - } - } - - wsize = env->me_psize * NUM_METAS; - ptr = env->me_map; - w2 = wsize; - while (w2 > 0) { - DO_WRITE(rc, fd, ptr, w2, len); - if (!rc) { - rc = ErrCode(); - break; - } else if (len > 0) { - rc = MDB_SUCCESS; - ptr += len; - w2 -= len; - continue; - } else { - /* Non-blocking or async handles are not supported */ - rc = EIO; - break; - } - } - if (wmutex) - UNLOCK_MUTEX(wmutex); - - if (rc) - goto leave; - - w3 = txn->mt_next_pgno * env->me_psize; - { - size_t fsize = 0; - if ((rc = mdb_fsize(env->me_fd, &fsize))) - goto leave; - if (w3 > fsize) - w3 = fsize; - } - wsize = w3 - wsize; - while (wsize > 0) { - if (wsize > MAX_WRITE) - w2 = MAX_WRITE; - else - w2 = wsize; - DO_WRITE(rc, fd, ptr, w2, len); - if (!rc) { - rc = ErrCode(); - break; - } else if (len > 0) { - rc = MDB_SUCCESS; - ptr += len; - wsize -= len; - continue; - } else { - rc = EIO; - break; - } - } - -leave: - mdb_txn_abort(txn); - return rc; -} - -int ESECT -mdb_env_copyfd2(MDB_env *env, HANDLE fd, unsigned int flags) -{ - if (flags & MDB_CP_COMPACT) - return mdb_env_copyfd1(env, fd); - else - return mdb_env_copyfd0(env, fd); -} - -int ESECT -mdb_env_copyfd(MDB_env *env, HANDLE fd) -{ - return mdb_env_copyfd2(env, fd, 0); -} - -int ESECT -mdb_env_copy2(MDB_env *env, const char *path, unsigned int flags) -{ - int rc; - MDB_name fname; - HANDLE newfd = INVALID_HANDLE_VALUE; - - rc = mdb_fname_init(path, env->me_flags | MDB_NOLOCK, &fname); - if (rc == MDB_SUCCESS) { - rc = mdb_fopen(env, &fname, MDB_O_COPY, 0666, &newfd); - mdb_fname_destroy(fname); - } - if (rc == MDB_SUCCESS) { - rc = mdb_env_copyfd2(env, newfd, flags); - if (close(newfd) < 0 && rc == MDB_SUCCESS) - rc = ErrCode(); - } - return rc; -} - -int ESECT -mdb_env_copy(MDB_env *env, const char *path) -{ - return mdb_env_copy2(env, path, 0); -} - -int ESECT -mdb_env_set_flags(MDB_env *env, unsigned int flag, int onoff) -{ - if (flag & ~CHANGEABLE) - return EINVAL; - if (onoff) - env->me_flags |= flag; - else - env->me_flags &= ~flag; - return MDB_SUCCESS; -} - -int ESECT -mdb_env_get_flags(MDB_env *env, unsigned int *arg) -{ - if (!env || !arg) - return EINVAL; - - *arg = env->me_flags & (CHANGEABLE|CHANGELESS); - return MDB_SUCCESS; -} - -int ESECT -mdb_env_set_userctx(MDB_env *env, void *ctx) -{ - if (!env) - return EINVAL; - env->me_userctx = ctx; - return MDB_SUCCESS; -} - -void * ESECT -mdb_env_get_userctx(MDB_env *env) -{ - return env ? env->me_userctx : NULL; -} - -int ESECT -mdb_env_set_assert(MDB_env *env, MDB_assert_func *func) -{ - if (!env) - return EINVAL; -#ifndef NDEBUG - env->me_assert_func = func; -#endif - return MDB_SUCCESS; -} - -int ESECT -mdb_env_get_path(MDB_env *env, const char **arg) -{ - if (!env || !arg) - return EINVAL; - - *arg = env->me_path; - return MDB_SUCCESS; -} - -int ESECT -mdb_env_get_fd(MDB_env *env, mdb_filehandle_t *arg) -{ - if (!env || !arg) - return EINVAL; - - *arg = env->me_fd; - return MDB_SUCCESS; -} - -/** Common code for #mdb_stat() and #mdb_env_stat(). - * @param[in] env the environment to operate in. - * @param[in] db the #MDB_db record containing the stats to return. - * @param[out] arg the address of an #MDB_stat structure to receive the stats. - * @return 0, this function always succeeds. - */ -static int ESECT -mdb_stat0(MDB_env *env, MDB_db *db, MDB_stat *arg) -{ - arg->ms_psize = env->me_psize; - arg->ms_depth = db->md_depth; - arg->ms_branch_pages = db->md_branch_pages; - arg->ms_leaf_pages = db->md_leaf_pages; - arg->ms_overflow_pages = db->md_overflow_pages; - arg->ms_entries = db->md_entries; - - return MDB_SUCCESS; -} - -int ESECT -mdb_env_stat(MDB_env *env, MDB_stat *arg) -{ - MDB_meta *meta; - - if (env == NULL || arg == NULL) - return EINVAL; - - meta = mdb_env_pick_meta(env); - - return mdb_stat0(env, &meta->mm_dbs[MAIN_DBI], arg); -} - -int ESECT -mdb_env_info(MDB_env *env, MDB_envinfo *arg) -{ - MDB_meta *meta; - - if (env == NULL || arg == NULL) - return EINVAL; - - meta = mdb_env_pick_meta(env); - arg->me_mapaddr = meta->mm_address; - arg->me_last_pgno = meta->mm_last_pg; - arg->me_last_txnid = meta->mm_txnid; - - arg->me_mapsize = env->me_mapsize; - arg->me_maxreaders = env->me_maxreaders; - arg->me_numreaders = env->me_txns ? env->me_txns->mti_numreaders : 0; - return MDB_SUCCESS; -} - -/** Set the default comparison functions for a database. - * Called immediately after a database is opened to set the defaults. - * The user can then override them with #mdb_set_compare() or - * #mdb_set_dupsort(). - * @param[in] txn A transaction handle returned by #mdb_txn_begin() - * @param[in] dbi A database handle returned by #mdb_dbi_open() - */ -static void -mdb_default_cmp(MDB_txn *txn, MDB_dbi dbi) -{ - uint16_t f = txn->mt_dbs[dbi].md_flags; - - txn->mt_dbxs[dbi].md_cmp = - (f & MDB_REVERSEKEY) ? mdb_cmp_memnr : - (f & MDB_INTEGERKEY) ? mdb_cmp_cint : mdb_cmp_memn; - - txn->mt_dbxs[dbi].md_dcmp = - !(f & MDB_DUPSORT) ? 0 : - ((f & MDB_INTEGERDUP) - ? ((f & MDB_DUPFIXED) ? mdb_cmp_int : mdb_cmp_cint) - : ((f & MDB_REVERSEDUP) ? mdb_cmp_memnr : mdb_cmp_memn)); -} - -int mdb_dbi_open(MDB_txn *txn, const char *name, unsigned int flags, MDB_dbi *dbi) -{ - MDB_val key, data; - MDB_dbi i; - MDB_cursor mc; - MDB_db dummy; - int rc, dbflag, exact; - unsigned int unused = 0, seq; - char *namedup; - size_t len; - - if (flags & ~VALID_FLAGS) - return EINVAL; - if (txn->mt_flags & MDB_TXN_BLOCKED) - return MDB_BAD_TXN; - - /* main DB? */ - if (!name) { - *dbi = MAIN_DBI; - if (flags & PERSISTENT_FLAGS) { - uint16_t f2 = flags & PERSISTENT_FLAGS; - /* make sure flag changes get committed */ - if ((txn->mt_dbs[MAIN_DBI].md_flags | f2) != txn->mt_dbs[MAIN_DBI].md_flags) { - txn->mt_dbs[MAIN_DBI].md_flags |= f2; - txn->mt_flags |= MDB_TXN_DIRTY; - } - } - mdb_default_cmp(txn, MAIN_DBI); - return MDB_SUCCESS; - } - - if (txn->mt_dbxs[MAIN_DBI].md_cmp == NULL) { - mdb_default_cmp(txn, MAIN_DBI); - } - - /* Is the DB already open? */ - len = strlen(name); - for (i=CORE_DBS; imt_numdbs; i++) { - if (!txn->mt_dbxs[i].md_name.mv_size) { - /* Remember this free slot */ - if (!unused) unused = i; - continue; - } - if (len == txn->mt_dbxs[i].md_name.mv_size && - !strncmp(name, txn->mt_dbxs[i].md_name.mv_data, len)) { - *dbi = i; - return MDB_SUCCESS; - } - } - - /* If no free slot and max hit, fail */ - if (!unused && txn->mt_numdbs >= txn->mt_env->me_maxdbs) - return MDB_DBS_FULL; - - /* Cannot mix named databases with some mainDB flags */ - if (txn->mt_dbs[MAIN_DBI].md_flags & (MDB_DUPSORT|MDB_INTEGERKEY)) - return (flags & MDB_CREATE) ? MDB_INCOMPATIBLE : MDB_NOTFOUND; - - /* Find the DB info */ - dbflag = DB_NEW|DB_VALID|DB_USRVALID; - exact = 0; - key.mv_size = len; - key.mv_data = (void *)name; - mdb_cursor_init(&mc, txn, MAIN_DBI, NULL); - rc = mdb_cursor_set(&mc, &key, &data, MDB_SET, &exact); - if (rc == MDB_SUCCESS) { - /* make sure this is actually a DB */ - MDB_node *node = NODEPTR(mc.mc_pg[mc.mc_top], mc.mc_ki[mc.mc_top]); - if ((node->mn_flags & (F_DUPDATA|F_SUBDATA)) != F_SUBDATA) - return MDB_INCOMPATIBLE; - } else { - if (rc != MDB_NOTFOUND || !(flags & MDB_CREATE)) - return rc; - if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) - return EACCES; - } - - /* Done here so we cannot fail after creating a new DB */ - if ((namedup = strdup(name)) == NULL) - return ENOMEM; - - if (rc) { - /* MDB_NOTFOUND and MDB_CREATE: Create new DB */ - data.mv_size = sizeof(MDB_db); - data.mv_data = &dummy; - memset(&dummy, 0, sizeof(dummy)); - dummy.md_root = P_INVALID; - dummy.md_flags = flags & PERSISTENT_FLAGS; - WITH_CURSOR_TRACKING(mc, - rc = mdb_cursor_put(&mc, &key, &data, F_SUBDATA)); - dbflag |= DB_DIRTY; - } - - if (rc) { - free(namedup); - } else { - /* Got info, register DBI in this txn */ - unsigned int slot = unused ? unused : txn->mt_numdbs; - txn->mt_dbxs[slot].md_name.mv_data = namedup; - txn->mt_dbxs[slot].md_name.mv_size = len; - txn->mt_dbxs[slot].md_rel = NULL; - txn->mt_dbflags[slot] = dbflag; - /* txn-> and env-> are the same in read txns, use - * tmp variable to avoid undefined assignment - */ - seq = ++txn->mt_env->me_dbiseqs[slot]; - txn->mt_dbiseqs[slot] = seq; - - memcpy(&txn->mt_dbs[slot], data.mv_data, sizeof(MDB_db)); - *dbi = slot; - mdb_default_cmp(txn, slot); - if (!unused) { - txn->mt_numdbs++; - } - } - - return rc; -} - -int ESECT -mdb_stat(MDB_txn *txn, MDB_dbi dbi, MDB_stat *arg) -{ - if (!arg || !TXN_DBI_EXIST(txn, dbi, DB_VALID)) - return EINVAL; - - if (txn->mt_flags & MDB_TXN_BLOCKED) - return MDB_BAD_TXN; - - if (txn->mt_dbflags[dbi] & DB_STALE) { - MDB_cursor mc; - MDB_xcursor mx; - /* Stale, must read the DB's root. cursor_init does it for us. */ - mdb_cursor_init(&mc, txn, dbi, &mx); - } - return mdb_stat0(txn->mt_env, &txn->mt_dbs[dbi], arg); -} - -void mdb_dbi_close(MDB_env *env, MDB_dbi dbi) -{ - char *ptr; - if (dbi < CORE_DBS || dbi >= env->me_maxdbs) - return; - ptr = env->me_dbxs[dbi].md_name.mv_data; - /* If there was no name, this was already closed */ - if (ptr) { - env->me_dbxs[dbi].md_name.mv_data = NULL; - env->me_dbxs[dbi].md_name.mv_size = 0; - env->me_dbflags[dbi] = 0; - env->me_dbiseqs[dbi]++; - free(ptr); - } -} - -int mdb_dbi_flags(MDB_txn *txn, MDB_dbi dbi, unsigned int *flags) -{ - /* We could return the flags for the FREE_DBI too but what's the point? */ - if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) - return EINVAL; - *flags = txn->mt_dbs[dbi].md_flags & PERSISTENT_FLAGS; - return MDB_SUCCESS; -} - -/** Add all the DB's pages to the free list. - * @param[in] mc Cursor on the DB to free. - * @param[in] subs non-Zero to check for sub-DBs in this DB. - * @return 0 on success, non-zero on failure. - */ -static int -mdb_drop0(MDB_cursor *mc, int subs) -{ - int rc; - - rc = mdb_page_search(mc, NULL, MDB_PS_FIRST); - if (rc == MDB_SUCCESS) { - MDB_txn *txn = mc->mc_txn; - MDB_node *ni; - MDB_cursor mx; - unsigned int i; - - /* DUPSORT sub-DBs have no ovpages/DBs. Omit scanning leaves. - * This also avoids any P_LEAF2 pages, which have no nodes. - * Also if the DB doesn't have sub-DBs and has no overflow - * pages, omit scanning leaves. - */ - if ((mc->mc_flags & C_SUB) || - (!subs && !mc->mc_db->md_overflow_pages)) - mdb_cursor_pop(mc); - - mdb_cursor_copy(mc, &mx); - while (mc->mc_snum > 0) { - MDB_page *mp = mc->mc_pg[mc->mc_top]; - unsigned n = NUMKEYS(mp); - if (IS_LEAF(mp)) { - for (i=0; imn_flags & F_BIGDATA) { - MDB_page *omp; - pgno_t pg; - memcpy(&pg, NODEDATA(ni), sizeof(pg)); - rc = mdb_page_get(mc, pg, &omp, NULL); - if (rc != 0) - goto done; - mdb_cassert(mc, IS_OVERFLOW(omp)); - rc = mdb_midl_append_range(&txn->mt_free_pgs, - pg, omp->mp_pages); - if (rc) - goto done; - mc->mc_db->md_overflow_pages -= omp->mp_pages; - if (!mc->mc_db->md_overflow_pages && !subs) - break; - } else if (subs && (ni->mn_flags & F_SUBDATA)) { - mdb_xcursor_init1(mc, ni); - rc = mdb_drop0(&mc->mc_xcursor->mx_cursor, 0); - if (rc) - goto done; - } - } - if (!subs && !mc->mc_db->md_overflow_pages) - goto pop; - } else { - if ((rc = mdb_midl_need(&txn->mt_free_pgs, n)) != 0) - goto done; - for (i=0; imt_free_pgs, pg); - } - } - if (!mc->mc_top) - break; - mc->mc_ki[mc->mc_top] = i; - rc = mdb_cursor_sibling(mc, 1); - if (rc) { - if (rc != MDB_NOTFOUND) - goto done; - /* no more siblings, go back to beginning - * of previous level. - */ -pop: - mdb_cursor_pop(mc); - mc->mc_ki[0] = 0; - for (i=1; imc_snum; i++) { - mc->mc_ki[i] = 0; - mc->mc_pg[i] = mx.mc_pg[i]; - } - } - } - /* free it */ - rc = mdb_midl_append(&txn->mt_free_pgs, mc->mc_db->md_root); -done: - if (rc) - txn->mt_flags |= MDB_TXN_ERROR; - } else if (rc == MDB_NOTFOUND) { - rc = MDB_SUCCESS; - } - mc->mc_flags &= ~C_INITIALIZED; - return rc; -} - -int mdb_drop(MDB_txn *txn, MDB_dbi dbi, int del) -{ - MDB_cursor *mc, *m2; - int rc; - - if ((unsigned)del > 1 || !TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) - return EINVAL; - - if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) - return EACCES; - - if (TXN_DBI_CHANGED(txn, dbi)) - return MDB_BAD_DBI; - - rc = mdb_cursor_open(txn, dbi, &mc); - if (rc) - return rc; - - rc = mdb_drop0(mc, mc->mc_db->md_flags & MDB_DUPSORT); - /* Invalidate the dropped DB's cursors */ - for (m2 = txn->mt_cursors[dbi]; m2; m2 = m2->mc_next) - m2->mc_flags &= ~(C_INITIALIZED|C_EOF); - if (rc) - goto leave; - - /* Can't delete the main DB */ - if (del && dbi >= CORE_DBS) { - rc = mdb_del0(txn, MAIN_DBI, &mc->mc_dbx->md_name, NULL, F_SUBDATA); - if (!rc) { - txn->mt_dbflags[dbi] = DB_STALE; - mdb_dbi_close(txn->mt_env, dbi); - } else { - txn->mt_flags |= MDB_TXN_ERROR; - } - } else { - /* reset the DB record, mark it dirty */ - txn->mt_dbflags[dbi] |= DB_DIRTY; - txn->mt_dbs[dbi].md_depth = 0; - txn->mt_dbs[dbi].md_branch_pages = 0; - txn->mt_dbs[dbi].md_leaf_pages = 0; - txn->mt_dbs[dbi].md_overflow_pages = 0; - txn->mt_dbs[dbi].md_entries = 0; - txn->mt_dbs[dbi].md_root = P_INVALID; - - txn->mt_flags |= MDB_TXN_DIRTY; - } -leave: - mdb_cursor_close(mc); - return rc; -} - -int mdb_set_compare(MDB_txn *txn, MDB_dbi dbi, MDB_cmp_func *cmp) -{ - if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) - return EINVAL; - - txn->mt_dbxs[dbi].md_cmp = cmp; - return MDB_SUCCESS; -} - -int mdb_set_dupsort(MDB_txn *txn, MDB_dbi dbi, MDB_cmp_func *cmp) -{ - if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) - return EINVAL; - - txn->mt_dbxs[dbi].md_dcmp = cmp; - return MDB_SUCCESS; -} - -int mdb_set_relfunc(MDB_txn *txn, MDB_dbi dbi, MDB_rel_func *rel) -{ - if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) - return EINVAL; - - txn->mt_dbxs[dbi].md_rel = rel; - return MDB_SUCCESS; -} - -int mdb_set_relctx(MDB_txn *txn, MDB_dbi dbi, void *ctx) -{ - if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) - return EINVAL; - - txn->mt_dbxs[dbi].md_relctx = ctx; - return MDB_SUCCESS; -} - -int ESECT -mdb_env_get_maxkeysize(MDB_env *env) -{ - return ENV_MAXKEY(env); -} - -int ESECT -mdb_reader_list(MDB_env *env, MDB_msg_func *func, void *ctx) -{ - unsigned int i, rdrs; - MDB_reader *mr; - char buf[64]; - int rc = 0, first = 1; - - if (!env || !func) - return -1; - if (!env->me_txns) { - return func("(no reader locks)\n", ctx); - } - rdrs = env->me_txns->mti_numreaders; - mr = env->me_txns->mti_readers; - for (i=0; i> 1; - cursor = base + pivot + 1; - val = pid - ids[cursor]; - - if( val < 0 ) { - n = pivot; - - } else if ( val > 0 ) { - base = cursor; - n -= pivot + 1; - - } else { - /* found, so it's a duplicate */ - return -1; - } - } - - if( val > 0 ) { - ++cursor; - } - ids[0]++; - for (n = ids[0]; n > cursor; n--) - ids[n] = ids[n-1]; - ids[n] = pid; - return 0; -} - -int ESECT -mdb_reader_check(MDB_env *env, int *dead) -{ - if (!env) - return EINVAL; - if (dead) - *dead = 0; - return env->me_txns ? mdb_reader_check0(env, 0, dead) : MDB_SUCCESS; -} - -/** As #mdb_reader_check(). \b rlocked is set if caller locked #me_rmutex. */ -static int ESECT -mdb_reader_check0(MDB_env *env, int rlocked, int *dead) -{ - mdb_mutexref_t rmutex = rlocked ? NULL : env->me_rmutex; - unsigned int i, j, rdrs; - MDB_reader *mr; - MDB_PID_T *pids, pid; - int rc = MDB_SUCCESS, count = 0; - - rdrs = env->me_txns->mti_numreaders; - pids = malloc((rdrs+1) * sizeof(MDB_PID_T)); - if (!pids) - return ENOMEM; - pids[0] = 0; - mr = env->me_txns->mti_readers; - for (i=0; ime_pid) { - if (mdb_pid_insert(pids, pid) == 0) { - if (!mdb_reader_pid(env, Pidcheck, pid)) { - /* Stale reader found */ - j = i; - if (rmutex) { - if ((rc = LOCK_MUTEX0(rmutex)) != 0) { - if ((rc = mdb_mutex_failed(env, rmutex, rc))) - break; - rdrs = 0; /* the above checked all readers */ - } else { - /* Recheck, a new process may have reused pid */ - if (mdb_reader_pid(env, Pidcheck, pid)) - j = rdrs; - } - } - for (; jme_rmutex); - if (!rlocked) { - /* Keep mti_txnid updated, otherwise next writer can - * overwrite data which latest meta page refers to. - */ - meta = mdb_env_pick_meta(env); - env->me_txns->mti_txnid = meta->mm_txnid; - /* env is hosed if the dead thread was ours */ - if (env->me_txn) { - env->me_flags |= MDB_FATAL_ERROR; - env->me_txn = NULL; - rc = MDB_PANIC; - } - } - DPRINTF(("%cmutex owner died, %s", (rlocked ? 'r' : 'w'), - (rc ? "this process' env is hosed" : "recovering"))); - rc2 = mdb_reader_check0(env, rlocked, NULL); - if (rc2 == 0) - rc2 = mdb_mutex_consistent(mutex); - if (rc || (rc = rc2)) { - DPRINTF(("LOCK_MUTEX recovery failed, %s", mdb_strerror(rc))); - UNLOCK_MUTEX(mutex); - } - } else { -#ifdef _WIN32 - rc = ErrCode(); -#endif - DPRINTF(("LOCK_MUTEX failed, %s", mdb_strerror(rc))); - } - - return rc; -} -#endif /* MDB_ROBUST_SUPPORTED */ - -#if defined(_WIN32) -/** Convert \b src to new wchar_t[] string with room for \b xtra extra chars */ -static int ESECT -utf8_to_utf16(const char *src, MDB_name *dst, int xtra) -{ - int rc, need = 0; - wchar_t *result = NULL; - for (;;) { /* malloc result, then fill it in */ - need = MultiByteToWideChar(CP_UTF8, 0, src, -1, result, need); - if (!need) { - rc = ErrCode(); - free(result); - return rc; - } - if (!result) { - result = malloc(sizeof(wchar_t) * (need + xtra)); - if (!result) - return ENOMEM; - continue; - } - dst->mn_alloced = 1; - dst->mn_len = need - 1; - dst->mn_val = result; - return MDB_SUCCESS; - } -} -#endif /* defined(_WIN32) */ -/** @} */ diff --git a/nostrdb/mem.c b/nostrdb/mem.c deleted file mode 100644 index 150f06164e..0000000000 --- a/nostrdb/mem.c +++ /dev/null @@ -1,128 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ - -#include "config.h" - -#include -#include -#include "mem.h" - -#if !HAVE_MEMMEM -void *memmem(const void *haystack, size_t haystacklen, - const void *needle, size_t needlelen) -{ - const char *p; - - if (needlelen > haystacklen) - return NULL; - - p = haystack; - - for (p = haystack; - (p + needlelen) <= ((const char *)haystack + haystacklen); - p++) - if (memcmp(p, needle, needlelen) == 0) - return (void *)p; - - return NULL; -} -#endif - -#if !HAVE_MEMRCHR -void *memrchr(const void *s, int c, size_t n) -{ - unsigned char *p = (unsigned char *)s; - - while (n) { - if (p[n-1] == c) - return p + n - 1; - n--; - } - - return NULL; -} -#endif - -void *mempbrkm(const void *data_, size_t len, const void *accept_, size_t accept_len) -{ - const char *data = data_, *accept = accept_; - size_t i, j; - - for (i = 0; i < len; i++) - for (j = 0; j < accept_len; j++) - if (accept[j] == data[i]) - return (void *)&data[i]; - return NULL; -} - -void *memcchr(void const *data, int c, size_t data_len) -{ - char const *p = data; - size_t i; - - for (i = 0; i < data_len; i++) - if (p[i] != c) - return (void *)&p[i]; - - return NULL; -} - -#define MEMSWAP_TMP_SIZE 256 - -void memswap(void *a, void *b, size_t n) -{ - char *ap = a; - char *bp = b; - char tmp[MEMSWAP_TMP_SIZE]; - - assert(!memoverlaps(a, n, b, n)); - - while (n) { - size_t m = n > MEMSWAP_TMP_SIZE ? MEMSWAP_TMP_SIZE : n; - - memcpy(tmp, bp, m); - memcpy(bp, ap, m); - memcpy(ap, tmp, m); - - ap += m; - bp += m; - n -= m; - } -} - -bool memeqzero(const void *data, size_t length) -{ - const unsigned char *p = data; - size_t len; - - /* Check first 16 bytes manually */ - for (len = 0; len < 16; len++) { - if (!length) - return true; - if (*p) - return false; - p++; - length--; - } - - /* Now we know that's zero, memcmp with self. */ - return memcmp(data, p, length) == 0; -} - -void memtaint(void *data, size_t len) -{ - /* Using 16 bytes is a bit quicker than 4 */ - const unsigned tainter[] - = { 0xdeadbeef, 0xdeadbeef, 0xdeadbeef, 0xdeadbeef }; - char *p = data; - - while (len >= sizeof(tainter)) { - memcpy(p, tainter, sizeof(tainter)); - p += sizeof(tainter); - len -= sizeof(tainter); - } - memcpy(p, tainter, len); - -#if HAVE_VALGRIND_MEMCHECK_H - VALGRIND_MAKE_MEM_UNDEFINED(data, len); -#endif -} diff --git a/nostrdb/mem.h b/nostrdb/mem.h deleted file mode 100644 index d01d2fa2e9..0000000000 --- a/nostrdb/mem.h +++ /dev/null @@ -1,295 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_MEM_H -#define CCAN_MEM_H - -#include "config.h" -#include "compiler.h" - -#include -#include - -#if !HAVE_MEMMEM -PURE_FUNCTION -void *memmem(const void *haystack, size_t haystacklen, - const void *needle, size_t needlelen); -#endif - -#if !HAVE_MEMRCHR -PURE_FUNCTION -void *memrchr(const void *s, int c, size_t n); -#endif - -/** - * mempbrkm - locates the first occurrence in @data of any bytes in @accept - * @data: where we search - * @len: length of data in bytes - * @accept: array of bytes we search for - * @accept_len: # of bytes in accept - * - * Returns a pointer to the byte in @data that matches one of the bytes in - * @accept, or NULL if no such byte is found. - * - * Example: - * char otherbytes[] = "Hello \0world"; - * size_t otherbytes_len = sizeof(otherbytes) - 1; - * char *r = mempbrkm(otherbytes, otherbytes_len, "\0b", 2); - * if (r) { - * printf("Found %c\n", *r); - * } else { - * printf("Nada\n"); - * } - * - */ -PURE_FUNCTION -void *mempbrkm(const void *data, size_t len, const void *accept, size_t accept_len); - -/** - * mempbrk - locates the first occurrence in @data of any bytes in @accept - * @data: where we search - * @len: length of data in bytes - * @accept: NUL terminated string containing the bytes we search for - * - * Returns a pointer to the byte in @data that matches one of the bytes in - * @accept, or NULL if no such byte is found. - * - * Example: - * - * r = mempbrk(otherbytes, otherbytes_len, "abcde"); - * if (r) { - * printf("Found %c\n", *r); - * } else { - * printf("Nada\n"); - * } - */ -PURE_FUNCTION -static inline char *mempbrk(const void *data, size_t len, const char *accept) -{ - return mempbrkm(data, len, accept, strlen(accept)); -} - -/** - * memcchr - scan memory until a character does _not_ match - * @data: pointer to memory to scan - * @data_len: length of data - * @c: character to scan for - * - * The complement of memchr(). - * - * Returns a pointer to the first character which is _not_ @c. If all memory in - * @data is @c, returns NULL. - * - * Example: - * char somebytes[] = "HI By\0e"; - * size_t bytes_len = sizeof(somebytes) - 1; - * r = memcchr(somebytes, ' ', bytes_len); - * if (r) { - * printf("Found %c after trimming spaces\n", *r); - * } - */ -PURE_FUNCTION -void *memcchr(void const *data, int c, size_t data_len); - -/** - * memeq - Are two byte arrays equal? - * @a: first array - * @al: bytes in first array - * @b: second array - * @bl: bytes in second array - * - * Example: - * if (memeq(somebytes, bytes_len, otherbytes, otherbytes_len)) { - * printf("memory blocks are the same!\n"); - * } - */ -PURE_FUNCTION -static inline bool memeq(const void *a, size_t al, const void *b, size_t bl) -{ - return al == bl && !memcmp(a, b, bl); -} - -/** - * memstarts - determine if @data starts with @prefix - * @data: does this begin with @prefix? - * @data_len: bytes in @data - * @prefix: does @data begin with these bytes? - * @prefix_len: bytes in @prefix - * - * Returns true if @data starts with @prefix, otherwise return false. - * - * Example: - * if (memstarts(somebytes, bytes_len, otherbytes, otherbytes_len)) { - * printf("somebytes starts with otherbytes!\n"); - * } - */ -PURE_FUNCTION -static inline bool memstarts(void const *data, size_t data_len, - void const *prefix, size_t prefix_len) -{ - if (prefix_len > data_len) - return false; - return memeq(data, prefix_len, prefix, prefix_len); -} - -/** - * memeqstr - Is a byte array equal to a NUL terminated string? - * @data: byte array - * @length: length of @data in bytes - * @string: NUL terminated string - * - * The '\0' byte is ignored when checking if @bytes == @string. - * - * Example: - * if (memeqstr(somebytes, bytes_len, "foo")) { - * printf("somebytes == 'foo'!\n"); - * } - */ -PURE_FUNCTION -static inline bool memeqstr(const void *data, size_t length, const char *string) -{ - return memeq(data, length, string, strlen(string)); -} - -/** - * memeqzero - Is a byte array all zeroes? - * @data: byte array - * @length: length of @data in bytes - * - * Example: - * if (memeqzero(somebytes, bytes_len)) { - * printf("somebytes == 0!\n"); - * } - */ -PURE_FUNCTION -bool memeqzero(const void *data, size_t length); - -/** - * memstarts_str - Does this byte array start with a string prefix? - * @a: byte array - * @al: length in bytes - * @s: string prefix - * - * Example: - * if (memstarts_str(somebytes, bytes_len, "It")) { - * printf("somebytes starts with 'It'\n"); - * } - */ -PURE_FUNCTION -static inline bool memstarts_str(const void *a, size_t al, const char *s) -{ - return memstarts(a, al, s, strlen(s)); -} - -/** - * memends - Does this byte array end with a given byte-array suffix? - * @s: byte array - * @s_len: length in bytes - * @suffix: byte array suffix - * @suffix_len: length of suffix in bytes - * - * Returns true if @suffix appears as a substring at the end of @s, - * false otherwise. - */ -PURE_FUNCTION -static inline bool memends(const void *s, size_t s_len, const void *suffix, size_t suffix_len) -{ - return (s_len >= suffix_len) && (memcmp((const char *)s + s_len - suffix_len, - suffix, suffix_len) == 0); -} - -/** - * memends_str - Does this byte array end with a string suffix? - * @a: byte array - * @al: length in bytes - * @s: string suffix - * - * Example: - * if (memends_str(somebytes, bytes_len, "It")) { - * printf("somebytes ends with with 'It'\n"); - * } - */ -PURE_FUNCTION -static inline bool memends_str(const void *a, size_t al, const char *s) -{ - return memends(a, al, s, strlen(s)); -} - -/** - * memoverlaps - Do two memory ranges overlap? - * @a: pointer to first memory range - * @al: length of first memory range - * @b: pointer to second memory range - * @al: length of second memory range - */ -CONST_FUNCTION -static inline bool memoverlaps(const void *a_, size_t al, - const void *b_, size_t bl) -{ - const char *a = a_; - const char *b = b_; - - return (a < (b + bl)) && (b < (a + al)); -} - -/* - * memswap - Exchange two memory regions - * @a: first region - * @b: second region - * @n: length of the regions - * - * Undefined results if the two memory regions overlap. - */ -void memswap(void *a, void *b, size_t n); - -#if HAVE_VALGRIND_MEMCHECK_H -#include -static inline void *memcheck_(const void *data, size_t len) -{ - VALGRIND_CHECK_MEM_IS_DEFINED(data, len); - return (void *)data; -} -#else -static inline void *memcheck_(const void *data, size_t len) -{ - (void)len; - return (void *)data; -} -#endif - -#if HAVE_TYPEOF -/** - * memcheck - check that a memory region is initialized - * @data: start of region - * @len: length in bytes - * - * When running under valgrind, this causes an error to be printed - * if the entire region is not defined. Otherwise valgrind only - * reports an error when an undefined value is used for a branch, or - * written out. - * - * Example: - * // Search for space, but make sure it's all initialized. - * if (memchr(memcheck(somebytes, bytes_len), ' ', bytes_len)) { - * printf("space was found!\n"); - * } - */ -#define memcheck(data, len) ((__typeof__((data)+0))memcheck_((data), (len))) -#else -#define memcheck(data, len) memcheck_((data), (len)) -#endif - -/** - * memtaint - mark a memory region unused - * @data: start of region - * @len: length in bytes - * - * This writes an "0xdeadbeef" eyecatcher repeatedly to the memory. - * When running under valgrind, it also tells valgrind that the memory is - * uninitialized, triggering valgrind errors if it is used for branches - * or written out (or passed to memcheck!) in future. - * - * Example: - * // We'll reuse this buffer later, but be sure we don't access it. - * memtaint(somebytes, bytes_len); - */ -void memtaint(void *data, size_t len); -#endif /* CCAN_MEM_H */ diff --git a/nostrdb/midl.c b/nostrdb/midl.c deleted file mode 100644 index 0d5a5c653a..0000000000 --- a/nostrdb/midl.c +++ /dev/null @@ -1,360 +0,0 @@ -/** @file midl.c - * @brief ldap bdb back-end ID List functions */ -/* $OpenLDAP$ */ -/* This work is part of OpenLDAP Software . - * - * Copyright 2000-2021 The OpenLDAP Foundation. - * Portions Copyright 2001-2021 Howard Chu, Symas Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted only as authorized by the OpenLDAP - * Public License. - * - * A copy of this license is available in the file LICENSE in the - * top-level directory of the distribution or, alternatively, at - * . - */ - -#include -#include -#include -#include -#include -#include "midl.h" - -/** @defgroup internal LMDB Internals - * @{ - */ -/** @defgroup idls ID List Management - * @{ - */ -#define CMP(x,y) ( (x) < (y) ? -1 : (x) > (y) ) - -unsigned mdb_midl_search( MDB_IDL ids, MDB_ID id ) -{ - /* - * binary search of id in ids - * if found, returns position of id - * if not found, returns first position greater than id - */ - unsigned base = 0; - unsigned cursor = 1; - int val = 0; - unsigned n = ids[0]; - - while( 0 < n ) { - unsigned pivot = n >> 1; - cursor = base + pivot + 1; - val = CMP( ids[cursor], id ); - - if( val < 0 ) { - n = pivot; - - } else if ( val > 0 ) { - base = cursor; - n -= pivot + 1; - - } else { - return cursor; - } - } - - if( val > 0 ) { - ++cursor; - } - return cursor; -} - -#if 0 /* superseded by append/sort */ -int mdb_midl_insert( MDB_IDL ids, MDB_ID id ) -{ - unsigned x, i; - - x = mdb_midl_search( ids, id ); - assert( x > 0 ); - - if( x < 1 ) { - /* internal error */ - return -2; - } - - if ( x <= ids[0] && ids[x] == id ) { - /* duplicate */ - assert(0); - return -1; - } - - if ( ++ids[0] >= MDB_IDL_DB_MAX ) { - /* no room */ - --ids[0]; - return -2; - - } else { - /* insert id */ - for (i=ids[0]; i>x; i--) - ids[i] = ids[i-1]; - ids[x] = id; - } - - return 0; -} -#endif - -MDB_IDL mdb_midl_alloc(int num) -{ - MDB_IDL ids = malloc((num+2) * sizeof(MDB_ID)); - if (ids) { - *ids++ = num; - *ids = 0; - } - return ids; -} - -void mdb_midl_free(MDB_IDL ids) -{ - if (ids) - free(ids-1); -} - -void mdb_midl_shrink( MDB_IDL *idp ) -{ - MDB_IDL ids = *idp; - if (*(--ids) > MDB_IDL_UM_MAX && - (ids = realloc(ids, (MDB_IDL_UM_MAX+2) * sizeof(MDB_ID)))) - { - *ids++ = MDB_IDL_UM_MAX; - *idp = ids; - } -} - -static int mdb_midl_grow( MDB_IDL *idp, int num ) -{ - MDB_IDL idn = *idp-1; - /* grow it */ - idn = realloc(idn, (*idn + num + 2) * sizeof(MDB_ID)); - if (!idn) - return ENOMEM; - *idn++ += num; - *idp = idn; - return 0; -} - -int mdb_midl_need( MDB_IDL *idp, unsigned num ) -{ - MDB_IDL ids = *idp; - num += ids[0]; - if (num > ids[-1]) { - num = (num + num/4 + (256 + 2)) & -256; - if (!(ids = realloc(ids-1, num * sizeof(MDB_ID)))) - return ENOMEM; - *ids++ = num - 2; - *idp = ids; - } - return 0; -} - -int mdb_midl_append( MDB_IDL *idp, MDB_ID id ) -{ - MDB_IDL ids = *idp; - /* Too big? */ - if (ids[0] >= ids[-1]) { - if (mdb_midl_grow(idp, MDB_IDL_UM_MAX)) - return ENOMEM; - ids = *idp; - } - ids[0]++; - ids[ids[0]] = id; - return 0; -} - -int mdb_midl_append_list( MDB_IDL *idp, MDB_IDL app ) -{ - MDB_IDL ids = *idp; - - /* Too big? */ - if (ids[0] + app[0] >= ids[-1]) { - if (mdb_midl_grow(idp, app[0])) - return ENOMEM; - ids = *idp; - } - memcpy(&ids[ids[0]+1], &app[1], app[0] * sizeof(MDB_ID)); - ids[0] += app[0]; - return 0; -} - -int mdb_midl_append_range( MDB_IDL *idp, MDB_ID id, unsigned n ) -{ - MDB_ID *ids = *idp, len = ids[0]; - /* Too big? */ - if (len + n > ids[-1]) { - if (mdb_midl_grow(idp, n | MDB_IDL_UM_MAX)) - return ENOMEM; - ids = *idp; - } - ids[0] = len + n; - ids += len; - while (n) - ids[n--] = id++; - return 0; -} - -void mdb_midl_xmerge( MDB_IDL idl, MDB_IDL merge ) -{ - MDB_ID old_id, merge_id, i = merge[0], j = idl[0], k = i+j, total = k; - idl[0] = (MDB_ID)-1; /* delimiter for idl scan below */ - old_id = idl[j]; - while (i) { - merge_id = merge[i--]; - for (; old_id < merge_id; old_id = idl[--j]) - idl[k--] = old_id; - idl[k--] = merge_id; - } - idl[0] = total; -} - -/* Quicksort + Insertion sort for small arrays */ - -#define SMALL 8 -#define MIDL_SWAP(a,b) { itmp=(a); (a)=(b); (b)=itmp; } - -void -mdb_midl_sort( MDB_IDL ids ) -{ - /* Max possible depth of int-indexed tree * 2 items/level */ - int istack[sizeof(int)*CHAR_BIT * 2]; - int i,j,k,l,ir,jstack; - MDB_ID a, itmp; - - ir = (int)ids[0]; - l = 1; - jstack = 0; - for(;;) { - if (ir - l < SMALL) { /* Insertion sort */ - for (j=l+1;j<=ir;j++) { - a = ids[j]; - for (i=j-1;i>=1;i--) { - if (ids[i] >= a) break; - ids[i+1] = ids[i]; - } - ids[i+1] = a; - } - if (jstack == 0) break; - ir = istack[jstack--]; - l = istack[jstack--]; - } else { - k = (l + ir) >> 1; /* Choose median of left, center, right */ - MIDL_SWAP(ids[k], ids[l+1]); - if (ids[l] < ids[ir]) { - MIDL_SWAP(ids[l], ids[ir]); - } - if (ids[l+1] < ids[ir]) { - MIDL_SWAP(ids[l+1], ids[ir]); - } - if (ids[l] < ids[l+1]) { - MIDL_SWAP(ids[l], ids[l+1]); - } - i = l+1; - j = ir; - a = ids[l+1]; - for(;;) { - do i++; while(ids[i] > a); - do j--; while(ids[j] < a); - if (j < i) break; - MIDL_SWAP(ids[i],ids[j]); - } - ids[l+1] = ids[j]; - ids[j] = a; - jstack += 2; - if (ir-i+1 >= j-l) { - istack[jstack] = ir; - istack[jstack-1] = i; - ir = j-1; - } else { - istack[jstack] = j-1; - istack[jstack-1] = l; - l = i; - } - } - } -} - -unsigned mdb_mid2l_search( MDB_ID2L ids, MDB_ID id ) -{ - /* - * binary search of id in ids - * if found, returns position of id - * if not found, returns first position greater than id - */ - unsigned base = 0; - unsigned cursor = 1; - int val = 0; - unsigned n = (unsigned)ids[0].mid; - - while( 0 < n ) { - unsigned pivot = n >> 1; - cursor = base + pivot + 1; - val = CMP( id, ids[cursor].mid ); - - if( val < 0 ) { - n = pivot; - - } else if ( val > 0 ) { - base = cursor; - n -= pivot + 1; - - } else { - return cursor; - } - } - - if( val > 0 ) { - ++cursor; - } - return cursor; -} - -int mdb_mid2l_insert( MDB_ID2L ids, MDB_ID2 *id ) -{ - unsigned x, i; - - x = mdb_mid2l_search( ids, id->mid ); - - if( x < 1 ) { - /* internal error */ - return -2; - } - - if ( x <= ids[0].mid && ids[x].mid == id->mid ) { - /* duplicate */ - return -1; - } - - if ( ids[0].mid >= MDB_IDL_UM_MAX ) { - /* too big */ - return -2; - - } else { - /* insert id */ - ids[0].mid++; - for (i=(unsigned)ids[0].mid; i>x; i--) - ids[i] = ids[i-1]; - ids[x] = *id; - } - - return 0; -} - -int mdb_mid2l_append( MDB_ID2L ids, MDB_ID2 *id ) -{ - /* Too big? */ - if (ids[0].mid >= MDB_IDL_UM_MAX) { - return -2; - } - ids[0].mid++; - ids[ids[0].mid] = *id; - return 0; -} - -/** @} */ -/** @} */ diff --git a/nostrdb/midl.h b/nostrdb/midl.h deleted file mode 100644 index dd6ae77c37..0000000000 --- a/nostrdb/midl.h +++ /dev/null @@ -1,186 +0,0 @@ -/** @file midl.h - * @brief LMDB ID List header file. - * - * This file was originally part of back-bdb but has been - * modified for use in libmdb. Most of the macros defined - * in this file are unused, just left over from the original. - * - * This file is only used internally in libmdb and its definitions - * are not exposed publicly. - */ -/* $OpenLDAP$ */ -/* This work is part of OpenLDAP Software . - * - * Copyright 2000-2021 The OpenLDAP Foundation. - * Portions Copyright 2001-2021 Howard Chu, Symas Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted only as authorized by the OpenLDAP - * Public License. - * - * A copy of this license is available in the file LICENSE in the - * top-level directory of the distribution or, alternatively, at - * . - */ - -#ifndef _MDB_MIDL_H_ -#define _MDB_MIDL_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** @defgroup internal LMDB Internals - * @{ - */ - -/** @defgroup idls ID List Management - * @{ - */ - /** A generic unsigned ID number. These were entryIDs in back-bdb. - * Preferably it should have the same size as a pointer. - */ -typedef size_t MDB_ID; - - /** An IDL is an ID List, a sorted array of IDs. The first - * element of the array is a counter for how many actual - * IDs are in the list. In the original back-bdb code, IDLs are - * sorted in ascending order. For libmdb IDLs are sorted in - * descending order. - */ -typedef MDB_ID *MDB_IDL; - -/* IDL sizes - likely should be even bigger - * limiting factors: sizeof(ID), thread stack size - */ -#define MDB_IDL_LOGN 16 /* DB_SIZE is 2^16, UM_SIZE is 2^17 */ -#define MDB_IDL_DB_SIZE (1< -#include -#include -#include -#include -#include - -static int usage() -{ - printf("usage: ndb [--skip-verification] [-d db_dir] \n\n"); - printf("commands\n\n"); - printf(" stat\n"); - printf(" search [--oldest-first] [--limit 42] \n"); - printf(" import \n\n"); - printf("settings\n\n"); - printf(" --skip-verification skip signature validation\n"); - printf(" -d set database directory\n"); - return 1; -} - - -static int map_file(const char *filename, unsigned char **p, size_t *flen) -{ - struct stat st; - int des; - stat(filename, &st); - *flen = st.st_size; - - des = open(filename, O_RDONLY); - - *p = mmap(NULL, *flen, PROT_READ, MAP_PRIVATE, des, 0); - close(des); - - return *p != MAP_FAILED; -} - -static inline void print_stat_counts(struct ndb_stat_counts *counts) -{ - printf("%zu\t%zu\t%zu\t%zu\n", - counts->count, - counts->key_size, - counts->value_size, - counts->key_size + counts->value_size); -} - -static void print_stats(struct ndb_stat *stat) -{ - int i; - const char *name; - struct ndb_stat_counts *c; - - struct ndb_stat_counts total; - ndb_stat_counts_init(&total); - - printf("name\tcount\tkey_bytes\tvalue_bytes\ttotal_bytes\n"); - printf("---\ndbs\n---\n"); - for (i = 0; i < NDB_DBS; i++) { - name = ndb_db_name(i); - - total.count += stat->dbs[i].count; - total.key_size += stat->dbs[i].key_size; - total.value_size += stat->dbs[i].value_size; - - printf("%s\t", name); - print_stat_counts(&stat->dbs[i]); - } - - printf("total\t"); - print_stat_counts(&total); - - printf("-----\nkinds\n-----\n"); - for (i = 0; i < NDB_CKIND_COUNT; i++) { - c = &stat->common_kinds[i]; - if (c->count == 0) - continue; - - printf("%s\t", ndb_kind_name(i)); - print_stat_counts(c); - } - - if (stat->other_kinds.count != 0) { - printf("other\t"); - print_stat_counts(&stat->other_kinds); - } -} - -int ndb_print_search_keys(struct ndb_txn *txn); - -int main(int argc, char *argv[]) -{ - struct ndb *ndb; - int i, flags, limit; - struct ndb_stat stat; - struct ndb_txn txn; - struct ndb_text_search_results results; - struct ndb_text_search_result *result; - const char *dir; - unsigned char *data; - size_t data_len; - struct ndb_config config; - struct ndb_text_search_config search_config; - ndb_default_config(&config); - ndb_default_text_search_config(&search_config); - ndb_config_set_mapsize(&config, 1024ULL * 1024ULL * 1024ULL * 1024ULL /* 1 TiB */); - - if (argc < 2) { - return usage(); - } - - dir = "."; - flags = 0; - for (i = 0; i < 2; i++) - { - if (!strcmp(argv[1], "-d") && argv[2]) { - dir = argv[2]; - argv += 2; - argc -= 2; - } else if (!strcmp(argv[1], "--skip-verification")) { - flags = NDB_FLAG_SKIP_NOTE_VERIFY; - argv += 1; - argc -= 1; - } - } - - ndb_config_set_flags(&config, flags); - - fprintf(stderr, "using db '%s'\n", dir); - - if (!ndb_init(&ndb, dir, &config)) { - return 2; - } - - if (argc >= 3 && !strcmp(argv[1], "search")) { - for (i = 0; i < 2; i++) { - if (!strcmp(argv[2], "--oldest-first")) { - ndb_text_search_config_set_order(&search_config, NDB_ORDER_ASCENDING); - argv++; - argc--; - } else if (!strcmp(argv[2], "--limit")) { - limit = atoi(argv[3]); - ndb_text_search_config_set_limit(&search_config, limit); - argv += 2; - argc -= 2; - } - } - - ndb_begin_query(ndb, &txn); - ndb_text_search(&txn, argv[2], &results, &search_config); - - // print results for now - for (i = 0; i < results.num_results; i++) { - result = &results.results[i]; - printf("[%02d] ", i+1); - ndb_print_text_search_result(&txn, result); - } - - ndb_end_query(&txn); - } else if (argc == 2 && !strcmp(argv[1], "stat")) { - if (!ndb_stat(ndb, &stat)) { - return 3; - } - - print_stats(&stat); - } else if (argc == 3 && !strcmp(argv[1], "import")) { - if (!strcmp(argv[2], "-")) { - ndb_process_events_stream(ndb, stdin); - } else { - map_file(argv[2], &data, &data_len); - ndb_process_events(ndb, (const char *)data, data_len); - ndb_process_client_events(ndb, (const char *)data, data_len); - } - } else if (argc == 2 && !strcmp(argv[1], "print-search-keys")) { - ndb_begin_query(ndb, &txn); - ndb_print_search_keys(&txn); - ndb_end_query(&txn); - } else { - return usage(); - } - - ndb_destroy(ndb); -} diff --git a/nostrdb/node_id.c b/nostrdb/node_id.c deleted file mode 100644 index 6778ddca60..0000000000 --- a/nostrdb/node_id.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "config.h" -#include -#include "array_size.h" -#include "mem.h" -#include "hex.h" -#include "talstr.h" -#include "node_id.h" - -/* Convert from pubkey to compressed pubkey. */ -/* -void node_id_from_pubkey(struct node_id *id, const struct pubkey *key) -{ - size_t outlen = ARRAY_SIZE(id->k); - if (!secp256k1_ec_pubkey_serialize(secp256k1_ctx, id->k, &outlen, - &key->pubkey, - SECP256K1_EC_COMPRESSED)) - abort(); -} - -WARN_UNUSED_RESULT -bool pubkey_from_node_id(struct pubkey *key, const struct node_id *id) -{ - return secp256k1_ec_pubkey_parse(secp256k1_ctx, &key->pubkey, - memcheck(id->k, sizeof(id->k)), - sizeof(id->k)); -} - -WARN_UNUSED_RESULT -bool point32_from_node_id(struct point32 *key, const struct node_id *id) -{ - struct pubkey k; - if (!pubkey_from_node_id(&k, id)) - return false; - return secp256k1_xonly_pubkey_from_pubkey(secp256k1_ctx, &key->pubkey, - NULL, &k.pubkey) == 1; -} -*/ - -char *tal_hexstr(const tal_t *ctx, const void *data, size_t len) -{ - char *str = tal_arr(ctx, char, hex_str_size(len)); - hex_encode(data, len, str, hex_str_size(len)); - return str; -} - - -/* Convert to hex string of SEC1 encoding */ -char *node_id_to_hexstr(const tal_t *ctx, const struct node_id *id) -{ - return tal_hexstr(ctx, id->k, sizeof(id->k)); -} - -/* Convert from hex string of SEC1 encoding */ - -bool node_id_from_hexstr(const char *str, size_t slen, struct node_id *id) -{ - return hex_decode(str, slen, id->k, sizeof(id->k)); - /* && node_id_valid(id);*/ -} - -int node_id_cmp(const struct node_id *a, const struct node_id *b) -{ - return memcmp(a->k, b->k, sizeof(a->k)); -} diff --git a/nostrdb/node_id.h b/nostrdb/node_id.h deleted file mode 100644 index 3a4c19c53f..0000000000 --- a/nostrdb/node_id.h +++ /dev/null @@ -1,38 +0,0 @@ -/* Encapsulation for pubkeys used as node ids: more compact, more dangerous. */ -#ifndef LIGHTNING_COMMON_NODE_ID_H -#define LIGHTNING_COMMON_NODE_ID_H -#include "config.h" -#include "short_types.h" -#include "tal.h" - -struct node_id { - u8 k[33]; -}; - -static inline bool node_id_eq(const struct node_id *a, - const struct node_id *b) -{ - return memcmp(a->k, b->k, sizeof(a->k)) == 0; -} - -/* Is this actually a valid pubkey? Relatively expensive. */ -//bool node_id_valid(const struct node_id *id); - -/* Convert to hex string of SEC1 encoding. */ -char *node_id_to_hexstr(const tal_t *ctx, const struct node_id *id); - -/* Convert from hex string of SEC1 encoding: checks validity! */ -bool node_id_from_hexstr(const char *str, size_t slen, struct node_id *id); - -/* Compare the keys `a` and `b`. Return <0 if `a`<`b`, 0 if equal and >0 otherwise */ -int node_id_cmp(const struct node_id *a, const struct node_id *b); - -/* If the two nodes[] are id1 and id2, which index would id1 be? */ -static inline int node_id_idx(const struct node_id *id1, - const struct node_id *id2) -{ - return node_id_cmp(id1, id2) > 0; -} - -/* marshal/unmarshal functions */ -#endif /* LIGHTNING_COMMON_NODE_ID_H */ diff --git a/nostrdb/overflows.h b/nostrdb/overflows.h deleted file mode 100644 index 721899c6f7..0000000000 --- a/nostrdb/overflows.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef LIGHTNING_COMMON_OVERFLOWS_H -#define LIGHTNING_COMMON_OVERFLOWS_H -#include "config.h" -#include "short_types.h" - -static inline bool add_overflows_size_t(uint64_t a, uint64_t b) -{ - return (size_t)a != a || (size_t)b != b || (a + b) < (size_t)a; -} - -static inline bool add_overflows_u64(uint64_t a, uint64_t b) -{ - return (a + b) < a; -} - -static inline bool mul_overflows_u64(uint64_t a, uint64_t b) -{ - uint64_t ret; - - if (a == 0) - return false; - ret = a * b; - return (ret / a != b); -} - -static inline bool assign_overflow_u8(u8 *dst, uint64_t v) -{ - *dst = v; - return *dst == v; -} - -static inline bool assign_overflow_u16(u16 *dst, uint64_t v) -{ - *dst = v; - return *dst == v; -} - -static inline bool assign_overflow_u32(u32 *dst, uint64_t v) -{ - *dst = (u32)v; - return *dst == v; -} -#endif /* LIGHTNING_COMMON_OVERFLOWS_H */ diff --git a/nostrdb/secp256k1.h b/nostrdb/secp256k1.h deleted file mode 100644 index 936f0b42b7..0000000000 --- a/nostrdb/secp256k1.h +++ /dev/null @@ -1,909 +0,0 @@ -#ifndef SECP256K1_H -#define SECP256K1_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/** Unless explicitly stated all pointer arguments must not be NULL. - * - * The following rules specify the order of arguments in API calls: - * - * 1. Context pointers go first, followed by output arguments, combined - * output/input arguments, and finally input-only arguments. - * 2. Array lengths always immediately follow the argument whose length - * they describe, even if this violates rule 1. - * 3. Within the OUT/OUTIN/IN groups, pointers to data that is typically generated - * later go first. This means: signatures, public nonces, secret nonces, - * messages, public keys, secret keys, tweaks. - * 4. Arguments that are not data pointers go last, from more complex to less - * complex: function pointers, algorithm names, messages, void pointers, - * counts, flags, booleans. - * 5. Opaque data pointers follow the function pointer they are to be passed to. - */ - -/** Opaque data structure that holds context information - * - * The primary purpose of context objects is to store randomization data for - * enhanced protection against side-channel leakage. This protection is only - * effective if the context is randomized after its creation. See - * secp256k1_context_create for creation of contexts and - * secp256k1_context_randomize for randomization. - * - * A secondary purpose of context objects is to store pointers to callback - * functions that the library will call when certain error states arise. See - * secp256k1_context_set_error_callback as well as - * secp256k1_context_set_illegal_callback for details. Future library versions - * may use context objects for additional purposes. - * - * A constructed context can safely be used from multiple threads - * simultaneously, but API calls that take a non-const pointer to a context - * need exclusive access to it. In particular this is the case for - * secp256k1_context_destroy, secp256k1_context_preallocated_destroy, - * and secp256k1_context_randomize. - * - * Regarding randomization, either do it once at creation time (in which case - * you do not need any locking for the other calls), or use a read-write lock. - */ -typedef struct secp256k1_context_struct secp256k1_context; - -/** Opaque data structure that holds rewritable "scratch space" - * - * The purpose of this structure is to replace dynamic memory allocations, - * because we target architectures where this may not be available. It is - * essentially a resizable (within specified parameters) block of bytes, - * which is initially created either by memory allocation or TODO as a pointer - * into some fixed rewritable space. - * - * Unlike the context object, this cannot safely be shared between threads - * without additional synchronization logic. - */ -typedef struct secp256k1_scratch_space_struct secp256k1_scratch_space; - -/** Opaque data structure that holds a parsed and valid public key. - * - * The exact representation of data inside is implementation defined and not - * guaranteed to be portable between different platforms or versions. It is - * however guaranteed to be 64 bytes in size, and can be safely copied/moved. - * If you need to convert to a format suitable for storage or transmission, - * use secp256k1_ec_pubkey_serialize and secp256k1_ec_pubkey_parse. To - * compare keys, use secp256k1_ec_pubkey_cmp. - */ -typedef struct { - unsigned char data[64]; -} secp256k1_pubkey; - -/** Opaque data structured that holds a parsed ECDSA signature. - * - * The exact representation of data inside is implementation defined and not - * guaranteed to be portable between different platforms or versions. It is - * however guaranteed to be 64 bytes in size, and can be safely copied/moved. - * If you need to convert to a format suitable for storage, transmission, or - * comparison, use the secp256k1_ecdsa_signature_serialize_* and - * secp256k1_ecdsa_signature_parse_* functions. - */ -typedef struct { - unsigned char data[64]; -} secp256k1_ecdsa_signature; - -/** A pointer to a function to deterministically generate a nonce. - * - * Returns: 1 if a nonce was successfully generated. 0 will cause signing to fail. - * Out: nonce32: pointer to a 32-byte array to be filled by the function. - * In: msg32: the 32-byte message hash being verified (will not be NULL) - * key32: pointer to a 32-byte secret key (will not be NULL) - * algo16: pointer to a 16-byte array describing the signature - * algorithm (will be NULL for ECDSA for compatibility). - * data: Arbitrary data pointer that is passed through. - * attempt: how many iterations we have tried to find a nonce. - * This will almost always be 0, but different attempt values - * are required to result in a different nonce. - * - * Except for test cases, this function should compute some cryptographic hash of - * the message, the algorithm, the key and the attempt. - */ -typedef int (*secp256k1_nonce_function)( - unsigned char *nonce32, - const unsigned char *msg32, - const unsigned char *key32, - const unsigned char *algo16, - void *data, - unsigned int attempt -); - -# if !defined(SECP256K1_GNUC_PREREQ) -# if defined(__GNUC__)&&defined(__GNUC_MINOR__) -# define SECP256K1_GNUC_PREREQ(_maj,_min) \ - ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) -# else -# define SECP256K1_GNUC_PREREQ(_maj,_min) 0 -# endif -# endif - -/* When this header is used at build-time the SECP256K1_BUILD define needs to be set - * to correctly setup export attributes and nullness checks. This is normally done - * by secp256k1.c but to guard against this header being included before secp256k1.c - * has had a chance to set the define (e.g. via test harnesses that just includes - * secp256k1.c) we set SECP256K1_NO_BUILD when this header is processed without the - * BUILD define so this condition can be caught. - */ -#ifndef SECP256K1_BUILD -# define SECP256K1_NO_BUILD -#endif - -/* Symbol visibility. */ -#if defined(_WIN32) - /* GCC for Windows (e.g., MinGW) accepts the __declspec syntax - * for MSVC compatibility. A __declspec declaration implies (but is not - * exactly equivalent to) __attribute__ ((visibility("default"))), and so we - * actually want __declspec even on GCC, see "Microsoft Windows Function - * Attributes" in the GCC manual and the recommendations in - * https://gcc.gnu.org/wiki/Visibility. */ -# if defined(SECP256K1_BUILD) -# if defined(DLL_EXPORT) || defined(SECP256K1_DLL_EXPORT) - /* Building libsecp256k1 as a DLL. - * 1. If using Libtool, it defines DLL_EXPORT automatically. - * 2. In other cases, SECP256K1_DLL_EXPORT must be defined. */ -# define SECP256K1_API extern __declspec (dllexport) -# endif - /* The user must define SECP256K1_STATIC when consuming libsecp256k1 as a static - * library on Windows. */ -# elif !defined(SECP256K1_STATIC) - /* Consuming libsecp256k1 as a DLL. */ -# define SECP256K1_API extern __declspec (dllimport) -# endif -#endif -#ifndef SECP256K1_API -# if defined(__GNUC__) && (__GNUC__ >= 4) && defined(SECP256K1_BUILD) - /* Building libsecp256k1 on non-Windows using GCC or compatible. */ -# define SECP256K1_API extern __attribute__ ((visibility ("default"))) -# else - /* All cases not captured above. */ -# define SECP256K1_API extern -# endif -#endif - -/* Warning attributes - * NONNULL is not used if SECP256K1_BUILD is set to avoid the compiler optimizing out - * some paranoid null checks. */ -# if defined(__GNUC__) && SECP256K1_GNUC_PREREQ(3, 4) -# define SECP256K1_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) -# else -# define SECP256K1_WARN_UNUSED_RESULT -# endif -# if !defined(SECP256K1_BUILD) && defined(__GNUC__) && SECP256K1_GNUC_PREREQ(3, 4) -# define SECP256K1_ARG_NONNULL(_x) __attribute__ ((__nonnull__(_x))) -# else -# define SECP256K1_ARG_NONNULL(_x) -# endif - -/* Attribute for marking functions, types, and variables as deprecated */ -#if !defined(SECP256K1_BUILD) && defined(__has_attribute) -# if __has_attribute(__deprecated__) -# define SECP256K1_DEPRECATED(_msg) __attribute__ ((__deprecated__(_msg))) -# else -# define SECP256K1_DEPRECATED(_msg) -# endif -#else -# define SECP256K1_DEPRECATED(_msg) -#endif - -/* All flags' lower 8 bits indicate what they're for. Do not use directly. */ -#define SECP256K1_FLAGS_TYPE_MASK ((1 << 8) - 1) -#define SECP256K1_FLAGS_TYPE_CONTEXT (1 << 0) -#define SECP256K1_FLAGS_TYPE_COMPRESSION (1 << 1) -/* The higher bits contain the actual data. Do not use directly. */ -#define SECP256K1_FLAGS_BIT_CONTEXT_VERIFY (1 << 8) -#define SECP256K1_FLAGS_BIT_CONTEXT_SIGN (1 << 9) -#define SECP256K1_FLAGS_BIT_CONTEXT_DECLASSIFY (1 << 10) -#define SECP256K1_FLAGS_BIT_COMPRESSION (1 << 8) - -/** Context flags to pass to secp256k1_context_create, secp256k1_context_preallocated_size, and - * secp256k1_context_preallocated_create. */ -#define SECP256K1_CONTEXT_NONE (SECP256K1_FLAGS_TYPE_CONTEXT) - -/** Deprecated context flags. These flags are treated equivalent to SECP256K1_CONTEXT_NONE. */ -#define SECP256K1_CONTEXT_VERIFY (SECP256K1_FLAGS_TYPE_CONTEXT | SECP256K1_FLAGS_BIT_CONTEXT_VERIFY) -#define SECP256K1_CONTEXT_SIGN (SECP256K1_FLAGS_TYPE_CONTEXT | SECP256K1_FLAGS_BIT_CONTEXT_SIGN) - -/* Testing flag. Do not use. */ -#define SECP256K1_CONTEXT_DECLASSIFY (SECP256K1_FLAGS_TYPE_CONTEXT | SECP256K1_FLAGS_BIT_CONTEXT_DECLASSIFY) - -/** Flag to pass to secp256k1_ec_pubkey_serialize. */ -#define SECP256K1_EC_COMPRESSED (SECP256K1_FLAGS_TYPE_COMPRESSION | SECP256K1_FLAGS_BIT_COMPRESSION) -#define SECP256K1_EC_UNCOMPRESSED (SECP256K1_FLAGS_TYPE_COMPRESSION) - -/** Prefix byte used to tag various encoded curvepoints for specific purposes */ -#define SECP256K1_TAG_PUBKEY_EVEN 0x02 -#define SECP256K1_TAG_PUBKEY_ODD 0x03 -#define SECP256K1_TAG_PUBKEY_UNCOMPRESSED 0x04 -#define SECP256K1_TAG_PUBKEY_HYBRID_EVEN 0x06 -#define SECP256K1_TAG_PUBKEY_HYBRID_ODD 0x07 - -/** A built-in constant secp256k1 context object with static storage duration, to be - * used in conjunction with secp256k1_selftest. - * - * This context object offers *only limited functionality* , i.e., it cannot be used - * for API functions that perform computations involving secret keys, e.g., signing - * and public key generation. If this restriction applies to a specific API function, - * it is mentioned in its documentation. See secp256k1_context_create if you need a - * full context object that supports all functionality offered by the library. - * - * It is highly recommended to call secp256k1_selftest before using this context. - */ -SECP256K1_API const secp256k1_context *secp256k1_context_static; - -/** Deprecated alias for secp256k1_context_static. */ -SECP256K1_API const secp256k1_context *secp256k1_context_no_precomp -SECP256K1_DEPRECATED("Use secp256k1_context_static instead"); - -/** Perform basic self tests (to be used in conjunction with secp256k1_context_static) - * - * This function performs self tests that detect some serious usage errors and - * similar conditions, e.g., when the library is compiled for the wrong endianness. - * This is a last resort measure to be used in production. The performed tests are - * very rudimentary and are not intended as a replacement for running the test - * binaries. - * - * It is highly recommended to call this before using secp256k1_context_static. - * It is not necessary to call this function before using a context created with - * secp256k1_context_create (or secp256k1_context_preallocated_create), which will - * take care of performing the self tests. - * - * If the tests fail, this function will call the default error handler to abort the - * program (see secp256k1_context_set_error_callback). - */ -SECP256K1_API void secp256k1_selftest(void); - - -/** Create a secp256k1 context object (in dynamically allocated memory). - * - * This function uses malloc to allocate memory. It is guaranteed that malloc is - * called at most once for every call of this function. If you need to avoid dynamic - * memory allocation entirely, see secp256k1_context_static and the functions in - * secp256k1_preallocated.h. - * - * Returns: a newly created context object. - * In: flags: Always set to SECP256K1_CONTEXT_NONE (see below). - * - * The only valid non-deprecated flag in recent library versions is - * SECP256K1_CONTEXT_NONE, which will create a context sufficient for all functionality - * offered by the library. All other (deprecated) flags will be treated as equivalent - * to the SECP256K1_CONTEXT_NONE flag. Though the flags parameter primarily exists for - * historical reasons, future versions of the library may introduce new flags. - * - * If the context is intended to be used for API functions that perform computations - * involving secret keys, e.g., signing and public key generation, then it is highly - * recommended to call secp256k1_context_randomize on the context before calling - * those API functions. This will provide enhanced protection against side-channel - * leakage, see secp256k1_context_randomize for details. - * - * Do not create a new context object for each operation, as construction and - * randomization can take non-negligible time. - */ -SECP256K1_API secp256k1_context *secp256k1_context_create( - unsigned int flags -) SECP256K1_WARN_UNUSED_RESULT; - -/** Copy a secp256k1 context object (into dynamically allocated memory). - * - * This function uses malloc to allocate memory. It is guaranteed that malloc is - * called at most once for every call of this function. If you need to avoid dynamic - * memory allocation entirely, see the functions in secp256k1_preallocated.h. - * - * Cloning secp256k1_context_static is not possible, and should not be emulated by - * the caller (e.g., using memcpy). Create a new context instead. - * - * Returns: a newly created context object. - * Args: ctx: an existing context to copy (not secp256k1_context_static) - */ -SECP256K1_API secp256k1_context *secp256k1_context_clone( - const secp256k1_context *ctx -) SECP256K1_ARG_NONNULL(1) SECP256K1_WARN_UNUSED_RESULT; - -/** Destroy a secp256k1 context object (created in dynamically allocated memory). - * - * The context pointer may not be used afterwards. - * - * The context to destroy must have been created using secp256k1_context_create - * or secp256k1_context_clone. If the context has instead been created using - * secp256k1_context_preallocated_create or secp256k1_context_preallocated_clone, the - * behaviour is undefined. In that case, secp256k1_context_preallocated_destroy must - * be used instead. - * - * Args: ctx: an existing context to destroy, constructed using - * secp256k1_context_create or secp256k1_context_clone - * (i.e., not secp256k1_context_static). - */ -SECP256K1_API void secp256k1_context_destroy( - secp256k1_context *ctx -) SECP256K1_ARG_NONNULL(1); - -/** Set a callback function to be called when an illegal argument is passed to - * an API call. It will only trigger for violations that are mentioned - * explicitly in the header. - * - * The philosophy is that these shouldn't be dealt with through a - * specific return value, as calling code should not have branches to deal with - * the case that this code itself is broken. - * - * On the other hand, during debug stage, one would want to be informed about - * such mistakes, and the default (crashing) may be inadvisable. - * When this callback is triggered, the API function called is guaranteed not - * to cause a crash, though its return value and output arguments are - * undefined. - * - * When this function has not been called (or called with fn==NULL), then the - * default handler will be used. The library provides a default handler which - * writes the message to stderr and calls abort. This default handler can be - * replaced at link time if the preprocessor macro - * USE_EXTERNAL_DEFAULT_CALLBACKS is defined, which is the case if the build - * has been configured with --enable-external-default-callbacks. Then the - * following two symbols must be provided to link against: - * - void secp256k1_default_illegal_callback_fn(const char *message, void *data); - * - void secp256k1_default_error_callback_fn(const char *message, void *data); - * The library can call these default handlers even before a proper callback data - * pointer could have been set using secp256k1_context_set_illegal_callback or - * secp256k1_context_set_error_callback, e.g., when the creation of a context - * fails. In this case, the corresponding default handler will be called with - * the data pointer argument set to NULL. - * - * Args: ctx: an existing context object. - * In: fun: a pointer to a function to call when an illegal argument is - * passed to the API, taking a message and an opaque pointer. - * (NULL restores the default handler.) - * data: the opaque pointer to pass to fun above, must be NULL for the default handler. - * - * See also secp256k1_context_set_error_callback. - */ -SECP256K1_API void secp256k1_context_set_illegal_callback( - secp256k1_context *ctx, - void (*fun)(const char *message, void *data), - const void *data -) SECP256K1_ARG_NONNULL(1); - -/** Set a callback function to be called when an internal consistency check - * fails. - * - * The default callback writes an error message to stderr and calls abort - * to abort the program. - * - * This can only trigger in case of a hardware failure, miscompilation, - * memory corruption, serious bug in the library, or other error would can - * otherwise result in undefined behaviour. It will not trigger due to mere - * incorrect usage of the API (see secp256k1_context_set_illegal_callback - * for that). After this callback returns, anything may happen, including - * crashing. - * - * Args: ctx: an existing context object. - * In: fun: a pointer to a function to call when an internal error occurs, - * taking a message and an opaque pointer (NULL restores the - * default handler, see secp256k1_context_set_illegal_callback - * for details). - * data: the opaque pointer to pass to fun above, must be NULL for the default handler. - * - * See also secp256k1_context_set_illegal_callback. - */ -SECP256K1_API void secp256k1_context_set_error_callback( - secp256k1_context *ctx, - void (*fun)(const char *message, void *data), - const void *data -) SECP256K1_ARG_NONNULL(1); - -/** Create a secp256k1 scratch space object. - * - * Returns: a newly created scratch space. - * Args: ctx: an existing context object. - * In: size: amount of memory to be available as scratch space. Some extra - * (<100 bytes) will be allocated for extra accounting. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT secp256k1_scratch_space *secp256k1_scratch_space_create( - const secp256k1_context *ctx, - size_t size -) SECP256K1_ARG_NONNULL(1); - -/** Destroy a secp256k1 scratch space. - * - * The pointer may not be used afterwards. - * Args: ctx: a secp256k1 context object. - * scratch: space to destroy - */ -SECP256K1_API void secp256k1_scratch_space_destroy( - const secp256k1_context *ctx, - secp256k1_scratch_space *scratch -) SECP256K1_ARG_NONNULL(1); - -/** Parse a variable-length public key into the pubkey object. - * - * Returns: 1 if the public key was fully valid. - * 0 if the public key could not be parsed or is invalid. - * Args: ctx: a secp256k1 context object. - * Out: pubkey: pointer to a pubkey object. If 1 is returned, it is set to a - * parsed version of input. If not, its value is undefined. - * In: input: pointer to a serialized public key - * inputlen: length of the array pointed to by input - * - * This function supports parsing compressed (33 bytes, header byte 0x02 or - * 0x03), uncompressed (65 bytes, header byte 0x04), or hybrid (65 bytes, header - * byte 0x06 or 0x07) format public keys. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_parse( - const secp256k1_context *ctx, - secp256k1_pubkey *pubkey, - const unsigned char *input, - size_t inputlen -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Serialize a pubkey object into a serialized byte sequence. - * - * Returns: 1 always. - * Args: ctx: a secp256k1 context object. - * Out: output: a pointer to a 65-byte (if compressed==0) or 33-byte (if - * compressed==1) byte array to place the serialized key - * in. - * In/Out: outputlen: a pointer to an integer which is initially set to the - * size of output, and is overwritten with the written - * size. - * In: pubkey: a pointer to a secp256k1_pubkey containing an - * initialized public key. - * flags: SECP256K1_EC_COMPRESSED if serialization should be in - * compressed format, otherwise SECP256K1_EC_UNCOMPRESSED. - */ -SECP256K1_API int secp256k1_ec_pubkey_serialize( - const secp256k1_context *ctx, - unsigned char *output, - size_t *outputlen, - const secp256k1_pubkey *pubkey, - unsigned int flags -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); - -/** Compare two public keys using lexicographic (of compressed serialization) order - * - * Returns: <0 if the first public key is less than the second - * >0 if the first public key is greater than the second - * 0 if the two public keys are equal - * Args: ctx: a secp256k1 context object. - * In: pubkey1: first public key to compare - * pubkey2: second public key to compare - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_cmp( - const secp256k1_context *ctx, - const secp256k1_pubkey *pubkey1, - const secp256k1_pubkey *pubkey2 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Parse an ECDSA signature in compact (64 bytes) format. - * - * Returns: 1 when the signature could be parsed, 0 otherwise. - * Args: ctx: a secp256k1 context object - * Out: sig: a pointer to a signature object - * In: input64: a pointer to the 64-byte array to parse - * - * The signature must consist of a 32-byte big endian R value, followed by a - * 32-byte big endian S value. If R or S fall outside of [0..order-1], the - * encoding is invalid. R and S with value 0 are allowed in the encoding. - * - * After the call, sig will always be initialized. If parsing failed or R or - * S are zero, the resulting sig value is guaranteed to fail verification for - * any message and public key. - */ -SECP256K1_API int secp256k1_ecdsa_signature_parse_compact( - const secp256k1_context *ctx, - secp256k1_ecdsa_signature *sig, - const unsigned char *input64 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Parse a DER ECDSA signature. - * - * Returns: 1 when the signature could be parsed, 0 otherwise. - * Args: ctx: a secp256k1 context object - * Out: sig: a pointer to a signature object - * In: input: a pointer to the signature to be parsed - * inputlen: the length of the array pointed to be input - * - * This function will accept any valid DER encoded signature, even if the - * encoded numbers are out of range. - * - * After the call, sig will always be initialized. If parsing failed or the - * encoded numbers are out of range, signature verification with it is - * guaranteed to fail for every message and public key. - */ -SECP256K1_API int secp256k1_ecdsa_signature_parse_der( - const secp256k1_context *ctx, - secp256k1_ecdsa_signature *sig, - const unsigned char *input, - size_t inputlen -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Serialize an ECDSA signature in DER format. - * - * Returns: 1 if enough space was available to serialize, 0 otherwise - * Args: ctx: a secp256k1 context object - * Out: output: a pointer to an array to store the DER serialization - * In/Out: outputlen: a pointer to a length integer. Initially, this integer - * should be set to the length of output. After the call - * it will be set to the length of the serialization (even - * if 0 was returned). - * In: sig: a pointer to an initialized signature object - */ -SECP256K1_API int secp256k1_ecdsa_signature_serialize_der( - const secp256k1_context *ctx, - unsigned char *output, - size_t *outputlen, - const secp256k1_ecdsa_signature *sig -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); - -/** Serialize an ECDSA signature in compact (64 byte) format. - * - * Returns: 1 - * Args: ctx: a secp256k1 context object - * Out: output64: a pointer to a 64-byte array to store the compact serialization - * In: sig: a pointer to an initialized signature object - * - * See secp256k1_ecdsa_signature_parse_compact for details about the encoding. - */ -SECP256K1_API int secp256k1_ecdsa_signature_serialize_compact( - const secp256k1_context *ctx, - unsigned char *output64, - const secp256k1_ecdsa_signature *sig -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Verify an ECDSA signature. - * - * Returns: 1: correct signature - * 0: incorrect or unparseable signature - * Args: ctx: a secp256k1 context object. - * In: sig: the signature being verified. - * msghash32: the 32-byte message hash being verified. - * The verifier must make sure to apply a cryptographic - * hash function to the message by itself and not accept an - * msghash32 value directly. Otherwise, it would be easy to - * create a "valid" signature without knowledge of the - * secret key. See also - * https://bitcoin.stackexchange.com/a/81116/35586 for more - * background on this topic. - * pubkey: pointer to an initialized public key to verify with. - * - * To avoid accepting malleable signatures, only ECDSA signatures in lower-S - * form are accepted. - * - * If you need to accept ECDSA signatures from sources that do not obey this - * rule, apply secp256k1_ecdsa_signature_normalize to the signature prior to - * verification, but be aware that doing so results in malleable signatures. - * - * For details, see the comments for that function. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_verify( - const secp256k1_context *ctx, - const secp256k1_ecdsa_signature *sig, - const unsigned char *msghash32, - const secp256k1_pubkey *pubkey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); - -/** Convert a signature to a normalized lower-S form. - * - * Returns: 1 if sigin was not normalized, 0 if it already was. - * Args: ctx: a secp256k1 context object - * Out: sigout: a pointer to a signature to fill with the normalized form, - * or copy if the input was already normalized. (can be NULL if - * you're only interested in whether the input was already - * normalized). - * In: sigin: a pointer to a signature to check/normalize (can be identical to sigout) - * - * With ECDSA a third-party can forge a second distinct signature of the same - * message, given a single initial signature, but without knowing the key. This - * is done by negating the S value modulo the order of the curve, 'flipping' - * the sign of the random point R which is not included in the signature. - * - * Forgery of the same message isn't universally problematic, but in systems - * where message malleability or uniqueness of signatures is important this can - * cause issues. This forgery can be blocked by all verifiers forcing signers - * to use a normalized form. - * - * The lower-S form reduces the size of signatures slightly on average when - * variable length encodings (such as DER) are used and is cheap to verify, - * making it a good choice. Security of always using lower-S is assured because - * anyone can trivially modify a signature after the fact to enforce this - * property anyway. - * - * The lower S value is always between 0x1 and - * 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, - * inclusive. - * - * No other forms of ECDSA malleability are known and none seem likely, but - * there is no formal proof that ECDSA, even with this additional restriction, - * is free of other malleability. Commonly used serialization schemes will also - * accept various non-unique encodings, so care should be taken when this - * property is required for an application. - * - * The secp256k1_ecdsa_sign function will by default create signatures in the - * lower-S form, and secp256k1_ecdsa_verify will not accept others. In case - * signatures come from a system that cannot enforce this property, - * secp256k1_ecdsa_signature_normalize must be called before verification. - */ -SECP256K1_API int secp256k1_ecdsa_signature_normalize( - const secp256k1_context *ctx, - secp256k1_ecdsa_signature *sigout, - const secp256k1_ecdsa_signature *sigin -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(3); - -/** An implementation of RFC6979 (using HMAC-SHA256) as nonce generation function. - * If a data pointer is passed, it is assumed to be a pointer to 32 bytes of - * extra entropy. - */ -SECP256K1_API const secp256k1_nonce_function secp256k1_nonce_function_rfc6979; - -/** A default safe nonce generation function (currently equal to secp256k1_nonce_function_rfc6979). */ -SECP256K1_API const secp256k1_nonce_function secp256k1_nonce_function_default; - -/** Create an ECDSA signature. - * - * Returns: 1: signature created - * 0: the nonce generation function failed, or the secret key was invalid. - * Args: ctx: pointer to a context object (not secp256k1_context_static). - * Out: sig: pointer to an array where the signature will be placed. - * In: msghash32: the 32-byte message hash being signed. - * seckey: pointer to a 32-byte secret key. - * noncefp: pointer to a nonce generation function. If NULL, - * secp256k1_nonce_function_default is used. - * ndata: pointer to arbitrary data used by the nonce generation function - * (can be NULL). If it is non-NULL and - * secp256k1_nonce_function_default is used, then ndata must be a - * pointer to 32-bytes of additional data. - * - * The created signature is always in lower-S form. See - * secp256k1_ecdsa_signature_normalize for more details. - */ -SECP256K1_API int secp256k1_ecdsa_sign( - const secp256k1_context *ctx, - secp256k1_ecdsa_signature *sig, - const unsigned char *msghash32, - const unsigned char *seckey, - secp256k1_nonce_function noncefp, - const void *ndata -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); - -/** Verify an ECDSA secret key. - * - * A secret key is valid if it is not 0 and less than the secp256k1 curve order - * when interpreted as an integer (most significant byte first). The - * probability of choosing a 32-byte string uniformly at random which is an - * invalid secret key is negligible. - * - * Returns: 1: secret key is valid - * 0: secret key is invalid - * Args: ctx: pointer to a context object. - * In: seckey: pointer to a 32-byte secret key. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_seckey_verify( - const secp256k1_context *ctx, - const unsigned char *seckey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); - -/** Compute the public key for a secret key. - * - * Returns: 1: secret was valid, public key stores. - * 0: secret was invalid, try again. - * Args: ctx: pointer to a context object (not secp256k1_context_static). - * Out: pubkey: pointer to the created public key. - * In: seckey: pointer to a 32-byte secret key. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_create( - const secp256k1_context *ctx, - secp256k1_pubkey *pubkey, - const unsigned char *seckey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Negates a secret key in place. - * - * Returns: 0 if the given secret key is invalid according to - * secp256k1_ec_seckey_verify. 1 otherwise - * Args: ctx: pointer to a context object - * In/Out: seckey: pointer to the 32-byte secret key to be negated. If the - * secret key is invalid according to - * secp256k1_ec_seckey_verify, this function returns 0 and - * seckey will be set to some unspecified value. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_seckey_negate( - const secp256k1_context *ctx, - unsigned char *seckey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); - -/** Same as secp256k1_ec_seckey_negate, but DEPRECATED. Will be removed in - * future versions. */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_negate( - const secp256k1_context *ctx, - unsigned char *seckey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) - SECP256K1_DEPRECATED("Use secp256k1_ec_seckey_negate instead"); - -/** Negates a public key in place. - * - * Returns: 1 always - * Args: ctx: pointer to a context object - * In/Out: pubkey: pointer to the public key to be negated. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_negate( - const secp256k1_context *ctx, - secp256k1_pubkey *pubkey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); - -/** Tweak a secret key by adding tweak to it. - * - * Returns: 0 if the arguments are invalid or the resulting secret key would be - * invalid (only when the tweak is the negation of the secret key). 1 - * otherwise. - * Args: ctx: pointer to a context object. - * In/Out: seckey: pointer to a 32-byte secret key. If the secret key is - * invalid according to secp256k1_ec_seckey_verify, this - * function returns 0. seckey will be set to some unspecified - * value if this function returns 0. - * In: tweak32: pointer to a 32-byte tweak, which must be valid according to - * secp256k1_ec_seckey_verify or 32 zero bytes. For uniformly - * random 32-byte tweaks, the chance of being invalid is - * negligible (around 1 in 2^128). - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_seckey_tweak_add( - const secp256k1_context *ctx, - unsigned char *seckey, - const unsigned char *tweak32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Same as secp256k1_ec_seckey_tweak_add, but DEPRECATED. Will be removed in - * future versions. */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_tweak_add( - const secp256k1_context *ctx, - unsigned char *seckey, - const unsigned char *tweak32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) - SECP256K1_DEPRECATED("Use secp256k1_ec_seckey_tweak_add instead"); - -/** Tweak a public key by adding tweak times the generator to it. - * - * Returns: 0 if the arguments are invalid or the resulting public key would be - * invalid (only when the tweak is the negation of the corresponding - * secret key). 1 otherwise. - * Args: ctx: pointer to a context object. - * In/Out: pubkey: pointer to a public key object. pubkey will be set to an - * invalid value if this function returns 0. - * In: tweak32: pointer to a 32-byte tweak, which must be valid according to - * secp256k1_ec_seckey_verify or 32 zero bytes. For uniformly - * random 32-byte tweaks, the chance of being invalid is - * negligible (around 1 in 2^128). - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_tweak_add( - const secp256k1_context *ctx, - secp256k1_pubkey *pubkey, - const unsigned char *tweak32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Tweak a secret key by multiplying it by a tweak. - * - * Returns: 0 if the arguments are invalid. 1 otherwise. - * Args: ctx: pointer to a context object. - * In/Out: seckey: pointer to a 32-byte secret key. If the secret key is - * invalid according to secp256k1_ec_seckey_verify, this - * function returns 0. seckey will be set to some unspecified - * value if this function returns 0. - * In: tweak32: pointer to a 32-byte tweak. If the tweak is invalid according to - * secp256k1_ec_seckey_verify, this function returns 0. For - * uniformly random 32-byte arrays the chance of being invalid - * is negligible (around 1 in 2^128). - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_seckey_tweak_mul( - const secp256k1_context *ctx, - unsigned char *seckey, - const unsigned char *tweak32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Same as secp256k1_ec_seckey_tweak_mul, but DEPRECATED. Will be removed in - * future versions. */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_tweak_mul( - const secp256k1_context *ctx, - unsigned char *seckey, - const unsigned char *tweak32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) - SECP256K1_DEPRECATED("Use secp256k1_ec_seckey_tweak_mul instead"); - -/** Tweak a public key by multiplying it by a tweak value. - * - * Returns: 0 if the arguments are invalid. 1 otherwise. - * Args: ctx: pointer to a context object. - * In/Out: pubkey: pointer to a public key object. pubkey will be set to an - * invalid value if this function returns 0. - * In: tweak32: pointer to a 32-byte tweak. If the tweak is invalid according to - * secp256k1_ec_seckey_verify, this function returns 0. For - * uniformly random 32-byte arrays the chance of being invalid - * is negligible (around 1 in 2^128). - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_tweak_mul( - const secp256k1_context *ctx, - secp256k1_pubkey *pubkey, - const unsigned char *tweak32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Randomizes the context to provide enhanced protection against side-channel leakage. - * - * Returns: 1: randomization successful - * 0: error - * Args: ctx: pointer to a context object (not secp256k1_context_static). - * In: seed32: pointer to a 32-byte random seed (NULL resets to initial state). - * - * While secp256k1 code is written and tested to be constant-time no matter what - * secret values are, it is possible that a compiler may output code which is not, - * and also that the CPU may not emit the same radio frequencies or draw the same - * amount of power for all values. Randomization of the context shields against - * side-channel observations which aim to exploit secret-dependent behaviour in - * certain computations which involve secret keys. - * - * It is highly recommended to call this function on contexts returned from - * secp256k1_context_create or secp256k1_context_clone (or from the corresponding - * functions in secp256k1_preallocated.h) before using these contexts to call API - * functions that perform computations involving secret keys, e.g., signing and - * public key generation. It is possible to call this function more than once on - * the same context, and doing so before every few computations involving secret - * keys is recommended as a defense-in-depth measure. Randomization of the static - * context secp256k1_context_static is not supported. - * - * Currently, the random seed is mainly used for blinding multiplications of a - * secret scalar with the elliptic curve base point. Multiplications of this - * kind are performed by exactly those API functions which are documented to - * require a context that is not secp256k1_context_static. As a rule of thumb, - * these are all functions which take a secret key (or a keypair) as an input. - * A notable exception to that rule is the ECDH module, which relies on a different - * kind of elliptic curve point multiplication and thus does not benefit from - * enhanced protection against side-channel leakage currently. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_context_randomize( - secp256k1_context *ctx, - const unsigned char *seed32 -) SECP256K1_ARG_NONNULL(1); - -/** Add a number of public keys together. - * - * Returns: 1: the sum of the public keys is valid. - * 0: the sum of the public keys is not valid. - * Args: ctx: pointer to a context object. - * Out: out: pointer to a public key object for placing the resulting public key. - * In: ins: pointer to array of pointers to public keys. - * n: the number of public keys to add together (must be at least 1). - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_combine( - const secp256k1_context *ctx, - secp256k1_pubkey *out, - const secp256k1_pubkey * const *ins, - size_t n -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Compute a tagged hash as defined in BIP-340. - * - * This is useful for creating a message hash and achieving domain separation - * through an application-specific tag. This function returns - * SHA256(SHA256(tag)||SHA256(tag)||msg). Therefore, tagged hash - * implementations optimized for a specific tag can precompute the SHA256 state - * after hashing the tag hashes. - * - * Returns: 1 always. - * Args: ctx: pointer to a context object - * Out: hash32: pointer to a 32-byte array to store the resulting hash - * In: tag: pointer to an array containing the tag - * taglen: length of the tag array - * msg: pointer to an array containing the message - * msglen: length of the message array - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_tagged_sha256( - const secp256k1_context *ctx, - unsigned char *hash32, - const unsigned char *tag, - size_t taglen, - const unsigned char *msg, - size_t msglen -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(5); - -#ifdef __cplusplus -} -#endif - -#endif /* SECP256K1_H */ diff --git a/nostrdb/secp256k1_ecdh.h b/nostrdb/secp256k1_ecdh.h deleted file mode 100644 index 515e174299..0000000000 --- a/nostrdb/secp256k1_ecdh.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef SECP256K1_ECDH_H -#define SECP256K1_ECDH_H - -#include "secp256k1.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** A pointer to a function that hashes an EC point to obtain an ECDH secret - * - * Returns: 1 if the point was successfully hashed. - * 0 will cause secp256k1_ecdh to fail and return 0. - * Other return values are not allowed, and the behaviour of - * secp256k1_ecdh is undefined for other return values. - * Out: output: pointer to an array to be filled by the function - * In: x32: pointer to a 32-byte x coordinate - * y32: pointer to a 32-byte y coordinate - * data: arbitrary data pointer that is passed through - */ -typedef int (*secp256k1_ecdh_hash_function)( - unsigned char *output, - const unsigned char *x32, - const unsigned char *y32, - void *data -); - -/** An implementation of SHA256 hash function that applies to compressed public key. - * Populates the output parameter with 32 bytes. */ -SECP256K1_API const secp256k1_ecdh_hash_function secp256k1_ecdh_hash_function_sha256; - -/** A default ECDH hash function (currently equal to secp256k1_ecdh_hash_function_sha256). - * Populates the output parameter with 32 bytes. */ -SECP256K1_API const secp256k1_ecdh_hash_function secp256k1_ecdh_hash_function_default; - -/** Compute an EC Diffie-Hellman secret in constant time - * - * Returns: 1: exponentiation was successful - * 0: scalar was invalid (zero or overflow) or hashfp returned 0 - * Args: ctx: pointer to a context object. - * Out: output: pointer to an array to be filled by hashfp. - * In: pubkey: a pointer to a secp256k1_pubkey containing an initialized public key. - * seckey: a 32-byte scalar with which to multiply the point. - * hashfp: pointer to a hash function. If NULL, - * secp256k1_ecdh_hash_function_sha256 is used - * (in which case, 32 bytes will be written to output). - * data: arbitrary data pointer that is passed through to hashfp - * (can be NULL for secp256k1_ecdh_hash_function_sha256). - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdh( - const secp256k1_context *ctx, - unsigned char *output, - const secp256k1_pubkey *pubkey, - const unsigned char *seckey, - secp256k1_ecdh_hash_function hashfp, - void *data -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); - -#ifdef __cplusplus -} -#endif - -#endif /* SECP256K1_ECDH_H */ diff --git a/nostrdb/secp256k1_extrakeys.h b/nostrdb/secp256k1_extrakeys.h deleted file mode 100644 index 7fcce68e68..0000000000 --- a/nostrdb/secp256k1_extrakeys.h +++ /dev/null @@ -1,247 +0,0 @@ -#ifndef SECP256K1_EXTRAKEYS_H -#define SECP256K1_EXTRAKEYS_H - -#include "secp256k1.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Opaque data structure that holds a parsed and valid "x-only" public key. - * An x-only pubkey encodes a point whose Y coordinate is even. It is - * serialized using only its X coordinate (32 bytes). See BIP-340 for more - * information about x-only pubkeys. - * - * The exact representation of data inside is implementation defined and not - * guaranteed to be portable between different platforms or versions. It is - * however guaranteed to be 64 bytes in size, and can be safely copied/moved. - * If you need to convert to a format suitable for storage, transmission, use - * use secp256k1_xonly_pubkey_serialize and secp256k1_xonly_pubkey_parse. To - * compare keys, use secp256k1_xonly_pubkey_cmp. - */ -typedef struct { - unsigned char data[64]; -} secp256k1_xonly_pubkey; - -/** Opaque data structure that holds a keypair consisting of a secret and a - * public key. - * - * The exact representation of data inside is implementation defined and not - * guaranteed to be portable between different platforms or versions. It is - * however guaranteed to be 96 bytes in size, and can be safely copied/moved. - */ -typedef struct { - unsigned char data[96]; -} secp256k1_keypair; - -/** Parse a 32-byte sequence into a xonly_pubkey object. - * - * Returns: 1 if the public key was fully valid. - * 0 if the public key could not be parsed or is invalid. - * - * Args: ctx: a secp256k1 context object. - * Out: pubkey: pointer to a pubkey object. If 1 is returned, it is set to a - * parsed version of input. If not, it's set to an invalid value. - * In: input32: pointer to a serialized xonly_pubkey. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_xonly_pubkey_parse( - const secp256k1_context *ctx, - secp256k1_xonly_pubkey *pubkey, - const unsigned char *input32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Serialize an xonly_pubkey object into a 32-byte sequence. - * - * Returns: 1 always. - * - * Args: ctx: a secp256k1 context object. - * Out: output32: a pointer to a 32-byte array to place the serialized key in. - * In: pubkey: a pointer to a secp256k1_xonly_pubkey containing an initialized public key. - */ -SECP256K1_API int secp256k1_xonly_pubkey_serialize( - const secp256k1_context *ctx, - unsigned char *output32, - const secp256k1_xonly_pubkey *pubkey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Compare two x-only public keys using lexicographic order - * - * Returns: <0 if the first public key is less than the second - * >0 if the first public key is greater than the second - * 0 if the two public keys are equal - * Args: ctx: a secp256k1 context object. - * In: pubkey1: first public key to compare - * pubkey2: second public key to compare - */ -SECP256K1_API int secp256k1_xonly_pubkey_cmp( - const secp256k1_context *ctx, - const secp256k1_xonly_pubkey *pk1, - const secp256k1_xonly_pubkey *pk2 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Converts a secp256k1_pubkey into a secp256k1_xonly_pubkey. - * - * Returns: 1 always. - * - * Args: ctx: pointer to a context object. - * Out: xonly_pubkey: pointer to an x-only public key object for placing the converted public key. - * pk_parity: Ignored if NULL. Otherwise, pointer to an integer that - * will be set to 1 if the point encoded by xonly_pubkey is - * the negation of the pubkey and set to 0 otherwise. - * In: pubkey: pointer to a public key that is converted. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_xonly_pubkey_from_pubkey( - const secp256k1_context *ctx, - secp256k1_xonly_pubkey *xonly_pubkey, - int *pk_parity, - const secp256k1_pubkey *pubkey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4); - -/** Tweak an x-only public key by adding the generator multiplied with tweak32 - * to it. - * - * Note that the resulting point can not in general be represented by an x-only - * pubkey because it may have an odd Y coordinate. Instead, the output_pubkey - * is a normal secp256k1_pubkey. - * - * Returns: 0 if the arguments are invalid or the resulting public key would be - * invalid (only when the tweak is the negation of the corresponding - * secret key). 1 otherwise. - * - * Args: ctx: pointer to a context object. - * Out: output_pubkey: pointer to a public key to store the result. Will be set - * to an invalid value if this function returns 0. - * In: internal_pubkey: pointer to an x-only pubkey to apply the tweak to. - * tweak32: pointer to a 32-byte tweak, which must be valid - * according to secp256k1_ec_seckey_verify or 32 zero - * bytes. For uniformly random 32-byte tweaks, the chance of - * being invalid is negligible (around 1 in 2^128). - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_xonly_pubkey_tweak_add( - const secp256k1_context *ctx, - secp256k1_pubkey *output_pubkey, - const secp256k1_xonly_pubkey *internal_pubkey, - const unsigned char *tweak32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); - -/** Checks that a tweaked pubkey is the result of calling - * secp256k1_xonly_pubkey_tweak_add with internal_pubkey and tweak32. - * - * The tweaked pubkey is represented by its 32-byte x-only serialization and - * its pk_parity, which can both be obtained by converting the result of - * tweak_add to a secp256k1_xonly_pubkey. - * - * Note that this alone does _not_ verify that the tweaked pubkey is a - * commitment. If the tweak is not chosen in a specific way, the tweaked pubkey - * can easily be the result of a different internal_pubkey and tweak. - * - * Returns: 0 if the arguments are invalid or the tweaked pubkey is not the - * result of tweaking the internal_pubkey with tweak32. 1 otherwise. - * Args: ctx: pointer to a context object. - * In: tweaked_pubkey32: pointer to a serialized xonly_pubkey. - * tweaked_pk_parity: the parity of the tweaked pubkey (whose serialization - * is passed in as tweaked_pubkey32). This must match the - * pk_parity value that is returned when calling - * secp256k1_xonly_pubkey with the tweaked pubkey, or - * this function will fail. - * internal_pubkey: pointer to an x-only public key object to apply the tweak to. - * tweak32: pointer to a 32-byte tweak. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_xonly_pubkey_tweak_add_check( - const secp256k1_context *ctx, - const unsigned char *tweaked_pubkey32, - int tweaked_pk_parity, - const secp256k1_xonly_pubkey *internal_pubkey, - const unsigned char *tweak32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5); - -/** Compute the keypair for a secret key. - * - * Returns: 1: secret was valid, keypair is ready to use - * 0: secret was invalid, try again with a different secret - * Args: ctx: pointer to a context object (not secp256k1_context_static). - * Out: keypair: pointer to the created keypair. - * In: seckey: pointer to a 32-byte secret key. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_create( - const secp256k1_context *ctx, - secp256k1_keypair *keypair, - const unsigned char *seckey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Get the secret key from a keypair. - * - * Returns: 1 always. - * Args: ctx: pointer to a context object. - * Out: seckey: pointer to a 32-byte buffer for the secret key. - * In: keypair: pointer to a keypair. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_sec( - const secp256k1_context *ctx, - unsigned char *seckey, - const secp256k1_keypair *keypair -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Get the public key from a keypair. - * - * Returns: 1 always. - * Args: ctx: pointer to a context object. - * Out: pubkey: pointer to a pubkey object, set to the keypair public key. - * In: keypair: pointer to a keypair. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_pub( - const secp256k1_context *ctx, - secp256k1_pubkey *pubkey, - const secp256k1_keypair *keypair -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -/** Get the x-only public key from a keypair. - * - * This is the same as calling secp256k1_keypair_pub and then - * secp256k1_xonly_pubkey_from_pubkey. - * - * Returns: 1 always. - * Args: ctx: pointer to a context object. - * Out: pubkey: pointer to an xonly_pubkey object, set to the keypair - * public key after converting it to an xonly_pubkey. - * pk_parity: Ignored if NULL. Otherwise, pointer to an integer that will be set to the - * pk_parity argument of secp256k1_xonly_pubkey_from_pubkey. - * In: keypair: pointer to a keypair. - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_xonly_pub( - const secp256k1_context *ctx, - secp256k1_xonly_pubkey *pubkey, - int *pk_parity, - const secp256k1_keypair *keypair -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4); - -/** Tweak a keypair by adding tweak32 to the secret key and updating the public - * key accordingly. - * - * Calling this function and then secp256k1_keypair_pub results in the same - * public key as calling secp256k1_keypair_xonly_pub and then - * secp256k1_xonly_pubkey_tweak_add. - * - * Returns: 0 if the arguments are invalid or the resulting keypair would be - * invalid (only when the tweak is the negation of the keypair's - * secret key). 1 otherwise. - * - * Args: ctx: pointer to a context object. - * In/Out: keypair: pointer to a keypair to apply the tweak to. Will be set to - * an invalid value if this function returns 0. - * In: tweak32: pointer to a 32-byte tweak, which must be valid according to - * secp256k1_ec_seckey_verify or 32 zero bytes. For uniformly - * random 32-byte tweaks, the chance of being invalid is - * negligible (around 1 in 2^128). - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_keypair_xonly_tweak_add( - const secp256k1_context *ctx, - secp256k1_keypair *keypair, - const unsigned char *tweak32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); - -#ifdef __cplusplus -} -#endif - -#endif /* SECP256K1_EXTRAKEYS_H */ diff --git a/nostrdb/secp256k1_schnorrsig.h b/nostrdb/secp256k1_schnorrsig.h deleted file mode 100644 index 26358533f6..0000000000 --- a/nostrdb/secp256k1_schnorrsig.h +++ /dev/null @@ -1,190 +0,0 @@ -#ifndef SECP256K1_SCHNORRSIG_H -#define SECP256K1_SCHNORRSIG_H - -#include "secp256k1.h" -#include "secp256k1_extrakeys.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** This module implements a variant of Schnorr signatures compliant with - * Bitcoin Improvement Proposal 340 "Schnorr Signatures for secp256k1" - * (https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki). - */ - -/** A pointer to a function to deterministically generate a nonce. - * - * Same as secp256k1_nonce function with the exception of accepting an - * additional pubkey argument and not requiring an attempt argument. The pubkey - * argument can protect signature schemes with key-prefixed challenge hash - * inputs against reusing the nonce when signing with the wrong precomputed - * pubkey. - * - * Returns: 1 if a nonce was successfully generated. 0 will cause signing to - * return an error. - * Out: nonce32: pointer to a 32-byte array to be filled by the function - * In: msg: the message being verified. Is NULL if and only if msglen - * is 0. - * msglen: the length of the message - * key32: pointer to a 32-byte secret key (will not be NULL) - * xonly_pk32: the 32-byte serialized xonly pubkey corresponding to key32 - * (will not be NULL) - * algo: pointer to an array describing the signature - * algorithm (will not be NULL) - * algolen: the length of the algo array - * data: arbitrary data pointer that is passed through - * - * Except for test cases, this function should compute some cryptographic hash of - * the message, the key, the pubkey, the algorithm description, and data. - */ -typedef int (*secp256k1_nonce_function_hardened)( - unsigned char *nonce32, - const unsigned char *msg, - size_t msglen, - const unsigned char *key32, - const unsigned char *xonly_pk32, - const unsigned char *algo, - size_t algolen, - void *data -); - -/** An implementation of the nonce generation function as defined in Bitcoin - * Improvement Proposal 340 "Schnorr Signatures for secp256k1" - * (https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki). - * - * If a data pointer is passed, it is assumed to be a pointer to 32 bytes of - * auxiliary random data as defined in BIP-340. If the data pointer is NULL, - * the nonce derivation procedure follows BIP-340 by setting the auxiliary - * random data to zero. The algo argument must be non-NULL, otherwise the - * function will fail and return 0. The hash will be tagged with algo. - * Therefore, to create BIP-340 compliant signatures, algo must be set to - * "BIP0340/nonce" and algolen to 13. - */ -SECP256K1_API const secp256k1_nonce_function_hardened secp256k1_nonce_function_bip340; - -/** Data structure that contains additional arguments for schnorrsig_sign_custom. - * - * A schnorrsig_extraparams structure object can be initialized correctly by - * setting it to SECP256K1_SCHNORRSIG_EXTRAPARAMS_INIT. - * - * Members: - * magic: set to SECP256K1_SCHNORRSIG_EXTRAPARAMS_MAGIC at initialization - * and has no other function than making sure the object is - * initialized. - * noncefp: pointer to a nonce generation function. If NULL, - * secp256k1_nonce_function_bip340 is used - * ndata: pointer to arbitrary data used by the nonce generation function - * (can be NULL). If it is non-NULL and - * secp256k1_nonce_function_bip340 is used, then ndata must be a - * pointer to 32-byte auxiliary randomness as per BIP-340. - */ -typedef struct { - unsigned char magic[4]; - secp256k1_nonce_function_hardened noncefp; - void *ndata; -} secp256k1_schnorrsig_extraparams; - -#define SECP256K1_SCHNORRSIG_EXTRAPARAMS_MAGIC { 0xda, 0x6f, 0xb3, 0x8c } -#define SECP256K1_SCHNORRSIG_EXTRAPARAMS_INIT {\ - SECP256K1_SCHNORRSIG_EXTRAPARAMS_MAGIC,\ - NULL,\ - NULL\ -} - -/** Create a Schnorr signature. - * - * Does _not_ strictly follow BIP-340 because it does not verify the resulting - * signature. Instead, you can manually use secp256k1_schnorrsig_verify and - * abort if it fails. - * - * This function only signs 32-byte messages. If you have messages of a - * different size (or the same size but without a context-specific tag - * prefix), it is recommended to create a 32-byte message hash with - * secp256k1_tagged_sha256 and then sign the hash. Tagged hashing allows - * providing an context-specific tag for domain separation. This prevents - * signatures from being valid in multiple contexts by accident. - * - * Returns 1 on success, 0 on failure. - * Args: ctx: pointer to a context object (not secp256k1_context_static). - * Out: sig64: pointer to a 64-byte array to store the serialized signature. - * In: msg32: the 32-byte message being signed. - * keypair: pointer to an initialized keypair. - * aux_rand32: 32 bytes of fresh randomness. While recommended to provide - * this, it is only supplemental to security and can be NULL. A - * NULL argument is treated the same as an all-zero one. See - * BIP-340 "Default Signing" for a full explanation of this - * argument and for guidance if randomness is expensive. - */ -SECP256K1_API int secp256k1_schnorrsig_sign32( - const secp256k1_context *ctx, - unsigned char *sig64, - const unsigned char *msg32, - const secp256k1_keypair *keypair, - const unsigned char *aux_rand32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); - -/** Same as secp256k1_schnorrsig_sign32, but DEPRECATED. Will be removed in - * future versions. */ -SECP256K1_API int secp256k1_schnorrsig_sign( - const secp256k1_context *ctx, - unsigned char *sig64, - const unsigned char *msg32, - const secp256k1_keypair *keypair, - const unsigned char *aux_rand32 -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) - SECP256K1_DEPRECATED("Use secp256k1_schnorrsig_sign32 instead"); - -/** Create a Schnorr signature with a more flexible API. - * - * Same arguments as secp256k1_schnorrsig_sign except that it allows signing - * variable length messages and accepts a pointer to an extraparams object that - * allows customizing signing by passing additional arguments. - * - * Equivalent to secp256k1_schnorrsig_sign32(..., aux_rand32) if msglen is 32 - * and extraparams is initialized as follows: - * ``` - * secp256k1_schnorrsig_extraparams extraparams = SECP256K1_SCHNORRSIG_EXTRAPARAMS_INIT; - * extraparams.ndata = (unsigned char*)aux_rand32; - * ``` - * - * Returns 1 on success, 0 on failure. - * Args: ctx: pointer to a context object (not secp256k1_context_static). - * Out: sig64: pointer to a 64-byte array to store the serialized signature. - * In: msg: the message being signed. Can only be NULL if msglen is 0. - * msglen: length of the message. - * keypair: pointer to an initialized keypair. - * extraparams: pointer to an extraparams object (can be NULL). - */ -SECP256K1_API int secp256k1_schnorrsig_sign_custom( - const secp256k1_context *ctx, - unsigned char *sig64, - const unsigned char *msg, - size_t msglen, - const secp256k1_keypair *keypair, - secp256k1_schnorrsig_extraparams *extraparams -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(5); - -/** Verify a Schnorr signature. - * - * Returns: 1: correct signature - * 0: incorrect signature - * Args: ctx: a secp256k1 context object. - * In: sig64: pointer to the 64-byte signature to verify. - * msg: the message being verified. Can only be NULL if msglen is 0. - * msglen: length of the message - * pubkey: pointer to an x-only public key to verify with (cannot be NULL) - */ -SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_schnorrsig_verify( - const secp256k1_context *ctx, - const unsigned char *sig64, - const unsigned char *msg, - size_t msglen, - const secp256k1_xonly_pubkey *pubkey -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(5); - -#ifdef __cplusplus -} -#endif - -#endif /* SECP256K1_SCHNORRSIG_H */ diff --git a/nostrdb/short_types.h b/nostrdb/short_types.h deleted file mode 100644 index 175377e9ba..0000000000 --- a/nostrdb/short_types.h +++ /dev/null @@ -1,35 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_SHORT_TYPES_H -#define CCAN_SHORT_TYPES_H -#include - -/** - * u64/s64/u32/s32/u16/s16/u8/s8 - short names for explicitly-sized types. - */ -typedef uint64_t u64; -typedef int64_t s64; -typedef uint32_t u32; -typedef int32_t s32; -typedef uint16_t u16; -typedef int16_t s16; -typedef uint8_t u8; -typedef int8_t s8; - -/* Whichever they include first, they get these definitions. */ -#ifdef CCAN_ENDIAN_H -/** - * be64/be32/be16 - 64/32/16 bit big-endian representation. - */ -typedef beint64_t be64; -typedef beint32_t be32; -typedef beint16_t be16; - -/** - * le64/le32/le16 - 64/32/16 bit little-endian representation. - */ -typedef leint64_t le64; -typedef leint32_t le32; -typedef leint16_t le16; -#endif - -#endif /* CCAN_SHORT_TYPES_H */ diff --git a/nostrdb/src/bindings/c/flatbuffers_common_builder.h b/nostrdb/src/bindings/c/flatbuffers_common_builder.h deleted file mode 100644 index 6266b98946..0000000000 --- a/nostrdb/src/bindings/c/flatbuffers_common_builder.h +++ /dev/null @@ -1,685 +0,0 @@ -#ifndef FLATBUFFERS_COMMON_BUILDER_H -#define FLATBUFFERS_COMMON_BUILDER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -/* Common FlatBuffers build functionality for C. */ - -#include "flatcc_prologue.h" -#ifndef FLATBUILDER_H -#include "flatcc_builder.h" -#endif -typedef flatcc_builder_t flatbuffers_builder_t; -typedef flatcc_builder_ref_t flatbuffers_ref_t; -typedef flatcc_builder_ref_t flatbuffers_vec_ref_t; -typedef flatcc_builder_union_ref_t flatbuffers_union_ref_t; -typedef flatcc_builder_union_vec_ref_t flatbuffers_union_vec_ref_t; -/* integer return code (ref and ptr always fail on 0) */ -#define flatbuffers_failed(x) ((x) < 0) -typedef flatbuffers_ref_t flatbuffers_root_t; -#define flatbuffers_root(ref) ((flatbuffers_root_t)(ref)) - -#define __flatbuffers_memoize_begin(B, src)\ -do { flatcc_builder_ref_t _ref; if ((_ref = flatcc_builder_refmap_find((B), (src)))) return _ref; } while (0) -#define __flatbuffers_memoize_end(B, src, op) do { return flatcc_builder_refmap_insert((B), (src), (op)); } while (0) -#define __flatbuffers_memoize(B, src, op) do { __flatbuffers_memoize_begin(B, src); __flatbuffers_memoize_end(B, src, op); } while (0) - -#define __flatbuffers_build_buffer(NS)\ -typedef NS ## ref_t NS ## buffer_ref_t;\ -static inline int NS ## buffer_start(NS ## builder_t *B, const NS ##fid_t fid)\ -{ return flatcc_builder_start_buffer(B, fid, 0, 0); }\ -static inline int NS ## buffer_start_with_size(NS ## builder_t *B, const NS ##fid_t fid)\ -{ return flatcc_builder_start_buffer(B, fid, 0, flatcc_builder_with_size); }\ -static inline int NS ## buffer_start_aligned(NS ## builder_t *B, NS ##fid_t fid, uint16_t block_align)\ -{ return flatcc_builder_start_buffer(B, fid, block_align, 0); }\ -static inline int NS ## buffer_start_aligned_with_size(NS ## builder_t *B, NS ##fid_t fid, uint16_t block_align)\ -{ return flatcc_builder_start_buffer(B, fid, block_align, flatcc_builder_with_size); }\ -static inline NS ## buffer_ref_t NS ## buffer_end(NS ## builder_t *B, NS ## ref_t root)\ -{ return flatcc_builder_end_buffer(B, root); } - -#define __flatbuffers_build_table_root(NS, N, FID, TFID)\ -static inline int N ## _start_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? -1 : N ## _start(B); }\ -static inline int N ## _start_as_root_with_size(NS ## builder_t *B)\ -{ return NS ## buffer_start_with_size(B, FID) ? -1 : N ## _start(B); }\ -static inline int N ## _start_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, TFID) ? -1 : N ## _start(B); }\ -static inline int N ## _start_as_typed_root_with_size(NS ## builder_t *B)\ -{ return NS ## buffer_start_with_size(B, TFID) ? -1 : N ## _start(B); }\ -static inline NS ## buffer_ref_t N ## _end_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end(B)); }\ -static inline NS ## buffer_ref_t N ## _end_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end(B)); }\ -static inline NS ## buffer_ref_t N ## _create_as_root(NS ## builder_t *B __ ## N ## _formal_args)\ -{ if (NS ## buffer_start(B, FID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\ -static inline NS ## buffer_ref_t N ## _create_as_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\ -{ if (NS ## buffer_start_with_size(B, FID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\ -static inline NS ## buffer_ref_t N ## _create_as_typed_root(NS ## builder_t *B __ ## N ## _formal_args)\ -{ if (NS ## buffer_start(B, TFID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\ -static inline NS ## buffer_ref_t N ## _create_as_typed_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\ -{ if (NS ## buffer_start_with_size(B, TFID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\ -static inline NS ## buffer_ref_t N ## _clone_as_root(NS ## builder_t *B, N ## _table_t t)\ -{ if (NS ## buffer_start(B, FID)) return 0; return NS ## buffer_end(B, N ## _clone(B, t)); }\ -static inline NS ## buffer_ref_t N ## _clone_as_root_with_size(NS ## builder_t *B, N ## _table_t t)\ -{ if (NS ## buffer_start_with_size(B, FID)) return 0; return NS ## buffer_end(B, N ## _clone(B, t)); }\ -static inline NS ## buffer_ref_t N ## _clone_as_typed_root(NS ## builder_t *B, N ## _table_t t)\ -{ if (NS ## buffer_start(B, TFID)) return 0;return NS ## buffer_end(B, N ## _clone(B, t)); }\ -static inline NS ## buffer_ref_t N ## _clone_as_typed_root_with_size(NS ## builder_t *B, N ## _table_t t)\ -{ if (NS ## buffer_start_with_size(B, TFID)) return 0; return NS ## buffer_end(B, N ## _clone(B, t)); } - -#define __flatbuffers_build_table_prolog(NS, N, FID, TFID)\ -__flatbuffers_build_table_vector_ops(NS, N ## _vec, N)\ -__flatbuffers_build_table_root(NS, N, FID, TFID) - -#define __flatbuffers_build_struct_root(NS, N, A, FID, TFID)\ -static inline N ## _t *N ## _start_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? 0 : N ## _start(B); }\ -static inline N ## _t *N ## _start_as_root_with_size(NS ## builder_t *B)\ -{ return NS ## buffer_start_with_size(B, FID) ? 0 : N ## _start(B); }\ -static inline N ## _t *N ## _start_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, TFID) ? 0 : N ## _start(B); }\ -static inline N ## _t *N ## _start_as_typed_root_with_size(NS ## builder_t *B)\ -{ return NS ## buffer_start_with_size(B, TFID) ? 0 : N ## _start(B); }\ -static inline NS ## buffer_ref_t N ## _end_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end(B)); }\ -static inline NS ## buffer_ref_t N ## _end_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end(B)); }\ -static inline NS ## buffer_ref_t N ## _end_pe_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end_pe(B)); }\ -static inline NS ## buffer_ref_t N ## _end_pe_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_end(B, N ## _end_pe(B)); }\ -static inline NS ## buffer_ref_t N ## _create_as_root(NS ## builder_t *B __ ## N ## _formal_args)\ -{ return flatcc_builder_create_buffer(B, FID, 0,\ - N ## _create(B __ ## N ## _call_args), A, 0); }\ -static inline NS ## buffer_ref_t N ## _create_as_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\ -{ return flatcc_builder_create_buffer(B, FID, 0,\ - N ## _create(B __ ## N ## _call_args), A, flatcc_builder_with_size); }\ -static inline NS ## buffer_ref_t N ## _create_as_typed_root(NS ## builder_t *B __ ## N ## _formal_args)\ -{ return flatcc_builder_create_buffer(B, TFID, 0,\ - N ## _create(B __ ## N ## _call_args), A, 0); }\ -static inline NS ## buffer_ref_t N ## _create_as_typed_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\ -{ return flatcc_builder_create_buffer(B, TFID, 0,\ - N ## _create(B __ ## N ## _call_args), A, flatcc_builder_with_size); }\ -static inline NS ## buffer_ref_t N ## _clone_as_root(NS ## builder_t *B, N ## _struct_t p)\ -{ return flatcc_builder_create_buffer(B, FID, 0, N ## _clone(B, p), A, 0); }\ -static inline NS ## buffer_ref_t N ## _clone_as_root_with_size(NS ## builder_t *B, N ## _struct_t p)\ -{ return flatcc_builder_create_buffer(B, FID, 0, N ## _clone(B, p), A, flatcc_builder_with_size); }\ -static inline NS ## buffer_ref_t N ## _clone_as_typed_root(NS ## builder_t *B, N ## _struct_t p)\ -{ return flatcc_builder_create_buffer(B, TFID, 0, N ## _clone(B, p), A, 0); }\ -static inline NS ## buffer_ref_t N ## _clone_as_typed_root_with_size(NS ## builder_t *B, N ## _struct_t p)\ -{ return flatcc_builder_create_buffer(B, TFID, 0, N ## _clone(B, p), A, flatcc_builder_with_size); } - -#define __flatbuffers_build_nested_table_root(NS, N, TN, FID, TFID)\ -static inline int N ## _start_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? -1 : TN ## _start(B); }\ -static inline int N ## _start_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, TFID) ? -1 : TN ## _start(B); }\ -static inline int N ## _end_as_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\ -static inline int N ## _end_as_typed_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\ -static inline int N ## _nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\ -{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\ - align ? align : 8, FLATBUFFERS_COUNT_MAX(1))); }\ -static inline int N ## _typed_nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\ -{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\ - align ? align : 8, FLATBUFFERS_COUNT_MAX(1))); }\ -static inline int N ## _clone_as_root(NS ## builder_t *B, TN ## _table_t t)\ -{ return N ## _add(B, TN ## _clone_as_root(B, t)); }\ -static inline int N ## _clone_as_typed_root(NS ## builder_t *B, TN ## _table_t t)\ -{ return N ## _add(B, TN ## _clone_as_typed_root(B, t)); } - -#define __flatbuffers_build_nested_struct_root(NS, N, TN, A, FID, TFID)\ -static inline TN ## _t *N ## _start_as_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? 0 : TN ## _start(B); }\ -static inline TN ## _t *N ## _start_as_typed_root(NS ## builder_t *B)\ -{ return NS ## buffer_start(B, FID) ? 0 : TN ## _start(B); }\ -static inline int N ## _end_as_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\ -static inline int N ## _end_as_typed_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\ -static inline int N ## _end_pe_as_root(NS ## builder_t *B)\ -{ return N ## _add(B, NS ## buffer_end(B, TN ## _end_pe(B))); }\ -static inline int N ## _create_as_root(NS ## builder_t *B __ ## TN ## _formal_args)\ -{ return N ## _add(B, flatcc_builder_create_buffer(B, FID, 0,\ - TN ## _create(B __ ## TN ## _call_args), A, flatcc_builder_is_nested)); }\ -static inline int N ## _create_as_typed_root(NS ## builder_t *B __ ## TN ## _formal_args)\ -{ return N ## _add(B, flatcc_builder_create_buffer(B, TFID, 0,\ - TN ## _create(B __ ## TN ## _call_args), A, flatcc_builder_is_nested)); }\ -static inline int N ## _nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\ -{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\ - align < A ? A : align, FLATBUFFERS_COUNT_MAX(1))); }\ -static inline int N ## _typed_nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\ -{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\ - align < A ? A : align, FLATBUFFERS_COUNT_MAX(1))); }\ -static inline int N ## _clone_as_root(NS ## builder_t *B, TN ## _struct_t p)\ -{ return N ## _add(B, TN ## _clone_as_root(B, p)); }\ -static inline int N ## _clone_as_typed_root(NS ## builder_t *B, TN ## _struct_t p)\ -{ return N ## _add(B, TN ## _clone_as_typed_root(B, p)); } - -#define __flatbuffers_build_vector_ops(NS, V, N, TN, T)\ -static inline T *V ## _extend(NS ## builder_t *B, size_t len)\ -{ return (T *)flatcc_builder_extend_vector(B, len); }\ -static inline T *V ## _append(NS ## builder_t *B, const T *data, size_t len)\ -{ return (T *)flatcc_builder_append_vector(B, data, len); }\ -static inline int V ## _truncate(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_truncate_vector(B, len); }\ -static inline T *V ## _edit(NS ## builder_t *B)\ -{ return (T *)flatcc_builder_vector_edit(B); }\ -static inline size_t V ## _reserved_len(NS ## builder_t *B)\ -{ return flatcc_builder_vector_count(B); }\ -static inline T *V ## _push(NS ## builder_t *B, const T *p)\ -{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? (memcpy(_p, p, TN ## __size()), _p) : 0; }\ -static inline T *V ## _push_copy(NS ## builder_t *B, const T *p)\ -{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? TN ## _copy(_p, p) : 0; }\ -static inline T *V ## _push_clone(NS ## builder_t *B, const T *p)\ -{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? TN ## _copy(_p, p) : 0; }\ -static inline T *V ## _push_create(NS ## builder_t *B __ ## TN ## _formal_args)\ -{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? TN ## _assign(_p __ ## TN ## _call_args) : 0; } - -#define __flatbuffers_build_vector(NS, N, T, S, A)\ -typedef NS ## ref_t N ## _vec_ref_t;\ -static inline int N ## _vec_start(NS ## builder_t *B)\ -{ return flatcc_builder_start_vector(B, S, A, FLATBUFFERS_COUNT_MAX(S)); }\ -static inline N ## _vec_ref_t N ## _vec_end_pe(NS ## builder_t *B)\ -{ return flatcc_builder_end_vector(B); }\ -static inline N ## _vec_ref_t N ## _vec_end(NS ## builder_t *B)\ -{ if (!NS ## is_native_pe()) { size_t i, n; T *p = (T *)flatcc_builder_vector_edit(B);\ - for (i = 0, n = flatcc_builder_vector_count(B); i < n; ++i)\ - { N ## _to_pe(N ## __ptr_add(p, i)); }} return flatcc_builder_end_vector(B); }\ -static inline N ## _vec_ref_t N ## _vec_create_pe(NS ## builder_t *B, const T *data, size_t len)\ -{ return flatcc_builder_create_vector(B, data, len, S, A, FLATBUFFERS_COUNT_MAX(S)); }\ -static inline N ## _vec_ref_t N ## _vec_create(NS ## builder_t *B, const T *data, size_t len)\ -{ if (!NS ## is_native_pe()) { size_t i; T *p; int ret = flatcc_builder_start_vector(B, S, A, FLATBUFFERS_COUNT_MAX(S)); if (ret) { return ret; }\ - p = (T *)flatcc_builder_extend_vector(B, len); if (!p) return 0;\ - for (i = 0; i < len; ++i) { N ## _copy_to_pe(N ## __ptr_add(p, i), N ## __const_ptr_add(data, i)); }\ - return flatcc_builder_end_vector(B); } else return flatcc_builder_create_vector(B, data, len, S, A, FLATBUFFERS_COUNT_MAX(S)); }\ -static inline N ## _vec_ref_t N ## _vec_clone(NS ## builder_t *B, N ##_vec_t vec)\ -{ __flatbuffers_memoize(B, vec, flatcc_builder_create_vector(B, vec, N ## _vec_len(vec), S, A, FLATBUFFERS_COUNT_MAX(S))); }\ -static inline N ## _vec_ref_t N ## _vec_slice(NS ## builder_t *B, N ##_vec_t vec, size_t index, size_t len)\ -{ size_t n = N ## _vec_len(vec); if (index >= n) index = n; n -= index; if (len > n) len = n;\ - return flatcc_builder_create_vector(B, N ## __const_ptr_add(vec, index), len, S, A, FLATBUFFERS_COUNT_MAX(S)); }\ -__flatbuffers_build_vector_ops(NS, N ## _vec, N, N, T) - -#define __flatbuffers_build_union_vector_ops(NS, V, N, TN)\ -static inline TN ## _union_ref_t *V ## _extend(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_extend_union_vector(B, len); }\ -static inline TN ## _union_ref_t *V ## _append(NS ## builder_t *B, const TN ## _union_ref_t *data, size_t len)\ -{ return flatcc_builder_append_union_vector(B, data, len); }\ -static inline int V ## _truncate(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_truncate_union_vector(B, len); }\ -static inline TN ## _union_ref_t *V ## _edit(NS ## builder_t *B)\ -{ return (TN ## _union_ref_t *) flatcc_builder_union_vector_edit(B); }\ -static inline size_t V ## _reserved_len(NS ## builder_t *B)\ -{ return flatcc_builder_union_vector_count(B); }\ -static inline TN ## _union_ref_t *V ## _push(NS ## builder_t *B, const TN ## _union_ref_t ref)\ -{ return flatcc_builder_union_vector_push(B, ref); }\ -static inline TN ## _union_ref_t *V ## _push_clone(NS ## builder_t *B, TN ## _union_t u)\ -{ return TN ## _vec_push(B, TN ## _clone(B, u)); } - -#define __flatbuffers_build_union_vector(NS, N)\ -static inline int N ## _vec_start(NS ## builder_t *B)\ -{ return flatcc_builder_start_union_vector(B); }\ -static inline N ## _union_vec_ref_t N ## _vec_end(NS ## builder_t *B)\ -{ return flatcc_builder_end_union_vector(B); }\ -static inline N ## _union_vec_ref_t N ## _vec_create(NS ## builder_t *B, const N ## _union_ref_t *data, size_t len)\ -{ return flatcc_builder_create_union_vector(B, data, len); }\ -__flatbuffers_build_union_vector_ops(NS, N ## _vec, N, N)\ -/* Preserves DAG structure separately for type and value vector, so a type vector could be shared for many value vectors. */\ -static inline N ## _union_vec_ref_t N ## _vec_clone(NS ## builder_t *B, N ##_union_vec_t vec)\ -{ N ## _union_vec_ref_t _uvref, _ret = { 0, 0 }; NS ## union_ref_t _uref; size_t _i, _len;\ - if (vec.type == 0) return _ret;\ - _uvref.type = flatcc_builder_refmap_find(B, vec.type); _uvref.value = flatcc_builder_refmap_find(B, vec.value);\ - _len = N ## _union_vec_len(vec); if (_uvref.type == 0) {\ - _uvref.type = flatcc_builder_refmap_insert(B, vec.type, (flatcc_builder_create_type_vector(B, vec.type, _len))); }\ - if (_uvref.type == 0) return _ret; if (_uvref.value == 0) {\ - if (flatcc_builder_start_offset_vector(B)) return _ret;\ - for (_i = 0; _i < _len; ++_i) { _uref = N ## _clone(B, N ## _union_vec_at(vec, _i));\ - if (!_uref.value || !(flatcc_builder_offset_vector_push(B, _uref.value))) return _ret; }\ - _uvref.value = flatcc_builder_refmap_insert(B, vec.value, flatcc_builder_end_offset_vector(B));\ - if (_uvref.value == 0) return _ret; } return _uvref; } - -#define __flatbuffers_build_string_vector_ops(NS, N)\ -static inline int N ## _push_start(NS ## builder_t *B)\ -{ return NS ## string_start(B); }\ -static inline NS ## string_ref_t *N ## _push_end(NS ## builder_t *B)\ -{ return NS ## string_vec_push(B, NS ## string_end(B)); }\ -static inline NS ## string_ref_t *N ## _push_create(NS ## builder_t *B, const char *s, size_t len)\ -{ return NS ## string_vec_push(B, NS ## string_create(B, s, len)); }\ -static inline NS ## string_ref_t *N ## _push_create_str(NS ## builder_t *B, const char *s)\ -{ return NS ## string_vec_push(B, NS ## string_create_str(B, s)); }\ -static inline NS ## string_ref_t *N ## _push_create_strn(NS ## builder_t *B, const char *s, size_t max_len)\ -{ return NS ## string_vec_push(B, NS ## string_create_strn(B, s, max_len)); }\ -static inline NS ## string_ref_t *N ## _push_clone(NS ## builder_t *B, NS ## string_t string)\ -{ return NS ## string_vec_push(B, NS ## string_clone(B, string)); }\ -static inline NS ## string_ref_t *N ## _push_slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\ -{ return NS ## string_vec_push(B, NS ## string_slice(B, string, index, len)); } - -#define __flatbuffers_build_table_vector_ops(NS, N, TN)\ -static inline int N ## _push_start(NS ## builder_t *B)\ -{ return TN ## _start(B); }\ -static inline TN ## _ref_t *N ## _push_end(NS ## builder_t *B)\ -{ return N ## _push(B, TN ## _end(B)); }\ -static inline TN ## _ref_t *N ## _push_create(NS ## builder_t *B __ ## TN ##_formal_args)\ -{ return N ## _push(B, TN ## _create(B __ ## TN ## _call_args)); } - -#define __flatbuffers_build_offset_vector_ops(NS, V, N, TN)\ -static inline TN ## _ref_t *V ## _extend(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_extend_offset_vector(B, len); }\ -static inline TN ## _ref_t *V ## _append(NS ## builder_t *B, const TN ## _ref_t *data, size_t len)\ -{ return flatcc_builder_append_offset_vector(B, data, len); }\ -static inline int V ## _truncate(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_truncate_offset_vector(B, len); }\ -static inline TN ## _ref_t *V ## _edit(NS ## builder_t *B)\ -{ return (TN ## _ref_t *)flatcc_builder_offset_vector_edit(B); }\ -static inline size_t V ## _reserved_len(NS ## builder_t *B)\ -{ return flatcc_builder_offset_vector_count(B); }\ -static inline TN ## _ref_t *V ## _push(NS ## builder_t *B, const TN ## _ref_t ref)\ -{ return ref ? flatcc_builder_offset_vector_push(B, ref) : 0; } - -#define __flatbuffers_build_offset_vector(NS, N)\ -typedef NS ## ref_t N ## _vec_ref_t;\ -static inline int N ## _vec_start(NS ## builder_t *B)\ -{ return flatcc_builder_start_offset_vector(B); }\ -static inline N ## _vec_ref_t N ## _vec_end(NS ## builder_t *B)\ -{ return flatcc_builder_end_offset_vector(B); }\ -static inline N ## _vec_ref_t N ## _vec_create(NS ## builder_t *B, const N ## _ref_t *data, size_t len)\ -{ return flatcc_builder_create_offset_vector(B, data, len); }\ -__flatbuffers_build_offset_vector_ops(NS, N ## _vec, N, N)\ -static inline N ## _vec_ref_t N ## _vec_clone(NS ## builder_t *B, N ##_vec_t vec)\ -{ int _ret; N ## _ref_t _e; size_t _i, _len; __flatbuffers_memoize_begin(B, vec);\ - _len = N ## _vec_len(vec); if (flatcc_builder_start_offset_vector(B)) return 0;\ - for (_i = 0; _i < _len; ++_i) { if (!(_e = N ## _clone(B, N ## _vec_at(vec, _i)))) return 0;\ - if (!flatcc_builder_offset_vector_push(B, _e)) return 0; }\ - __flatbuffers_memoize_end(B, vec, flatcc_builder_end_offset_vector(B)); }\ - -#define __flatbuffers_build_string_ops(NS, N)\ -static inline char *N ## _append(NS ## builder_t *B, const char *s, size_t len)\ -{ return flatcc_builder_append_string(B, s, len); }\ -static inline char *N ## _append_str(NS ## builder_t *B, const char *s)\ -{ return flatcc_builder_append_string_str(B, s); }\ -static inline char *N ## _append_strn(NS ## builder_t *B, const char *s, size_t len)\ -{ return flatcc_builder_append_string_strn(B, s, len); }\ -static inline size_t N ## _reserved_len(NS ## builder_t *B)\ -{ return flatcc_builder_string_len(B); }\ -static inline char *N ## _extend(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_extend_string(B, len); }\ -static inline char *N ## _edit(NS ## builder_t *B)\ -{ return flatcc_builder_string_edit(B); }\ -static inline int N ## _truncate(NS ## builder_t *B, size_t len)\ -{ return flatcc_builder_truncate_string(B, len); } - -#define __flatbuffers_build_string(NS)\ -typedef NS ## ref_t NS ## string_ref_t;\ -static inline int NS ## string_start(NS ## builder_t *B)\ -{ return flatcc_builder_start_string(B); }\ -static inline NS ## string_ref_t NS ## string_end(NS ## builder_t *B)\ -{ return flatcc_builder_end_string(B); }\ -static inline NS ## ref_t NS ## string_create(NS ## builder_t *B, const char *s, size_t len)\ -{ return flatcc_builder_create_string(B, s, len); }\ -static inline NS ## ref_t NS ## string_create_str(NS ## builder_t *B, const char *s)\ -{ return flatcc_builder_create_string_str(B, s); }\ -static inline NS ## ref_t NS ## string_create_strn(NS ## builder_t *B, const char *s, size_t len)\ -{ return flatcc_builder_create_string_strn(B, s, len); }\ -static inline NS ## string_ref_t NS ## string_clone(NS ## builder_t *B, NS ## string_t string)\ -{ __flatbuffers_memoize(B, string, flatcc_builder_create_string(B, string, NS ## string_len(string))); }\ -static inline NS ## string_ref_t NS ## string_slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\ -{ size_t n = NS ## string_len(string); if (index >= n) index = n; n -= index; if (len > n) len = n;\ - return flatcc_builder_create_string(B, string + index, len); }\ -__flatbuffers_build_string_ops(NS, NS ## string)\ -__flatbuffers_build_offset_vector(NS, NS ## string) - -#define __flatbuffers_copy_from_pe(P, P2, N) (*(P) = N ## _read_from_pe(P2), (P)) -#define __flatbuffers_from_pe(P, N) (*(P) = N ## _read_from_pe(P), (P)) -#define __flatbuffers_copy_to_pe(P, P2, N) (N ## _write_to_pe((P), *(P2)), (P)) -#define __flatbuffers_to_pe(P, N) (N ## _write_to_pe((P), *(P)), (P)) -#define __flatbuffers_define_fixed_array_primitives(NS, N, T)\ -static inline T *N ## _array_copy(T *p, const T *p2, size_t n)\ -{ memcpy(p, p2, n * sizeof(T)); return p; }\ -static inline T *N ## _array_copy_from_pe(T *p, const T *p2, size_t n)\ -{ size_t i; if (NS ## is_native_pe()) memcpy(p, p2, n * sizeof(T)); else\ - for (i = 0; i < n; ++i) N ## _copy_from_pe(&p[i], &p2[i]); return p; }\ -static inline T *N ## _array_copy_to_pe(T *p, const T *p2, size_t n)\ -{ size_t i; if (NS ## is_native_pe()) memcpy(p, p2, n * sizeof(T)); else\ - for (i = 0; i < n; ++i) N ## _copy_to_pe(&p[i], &p2[i]); return p; } -#define __flatbuffers_define_scalar_primitives(NS, N, T)\ -static inline T *N ## _from_pe(T *p) { return __ ## NS ## from_pe(p, N); }\ -static inline T *N ## _to_pe(T *p) { return __ ## NS ## to_pe(p, N); }\ -static inline T *N ## _copy(T *p, const T *p2) { *p = *p2; return p; }\ -static inline T *N ## _copy_from_pe(T *p, const T *p2)\ -{ return __ ## NS ## copy_from_pe(p, p2, N); }\ -static inline T *N ## _copy_to_pe(T *p, const T *p2) \ -{ return __ ## NS ## copy_to_pe(p, p2, N); }\ -static inline T *N ## _assign(T *p, const T v0) { *p = v0; return p; }\ -static inline T *N ## _assign_from_pe(T *p, T v0)\ -{ *p = N ## _read_from_pe(&v0); return p; }\ -static inline T *N ## _assign_to_pe(T *p, T v0)\ -{ N ## _write_to_pe(p, v0); return p; } -#define __flatbuffers_build_scalar(NS, N, T)\ -__ ## NS ## define_scalar_primitives(NS, N, T)\ -__ ## NS ## define_fixed_array_primitives(NS, N, T)\ -__ ## NS ## build_vector(NS, N, T, sizeof(T), sizeof(T)) -/* Depends on generated copy_to/from_pe functions, and the type. */ -#define __flatbuffers_define_struct_primitives(NS, N)\ -static inline N ## _t *N ##_to_pe(N ## _t *p)\ -{ if (!NS ## is_native_pe()) { N ## _copy_to_pe(p, p); }; return p; }\ -static inline N ## _t *N ##_from_pe(N ## _t *p)\ -{ if (!NS ## is_native_pe()) { N ## _copy_from_pe(p, p); }; return p; }\ -static inline N ## _t *N ## _clear(N ## _t *p) { return (N ## _t *)memset(p, 0, N ## __size()); } - -/* Depends on generated copy/assign_to/from_pe functions, and the type. */ -#define __flatbuffers_build_struct(NS, N, S, A, FID, TFID)\ -__ ## NS ## define_struct_primitives(NS, N)\ -typedef NS ## ref_t N ## _ref_t;\ -static inline N ## _t *N ## _start(NS ## builder_t *B)\ -{ return (N ## _t *)flatcc_builder_start_struct(B, S, A); }\ -static inline N ## _ref_t N ## _end(NS ## builder_t *B)\ -{ if (!NS ## is_native_pe()) { N ## _to_pe((N ## _t *)flatcc_builder_struct_edit(B)); }\ - return flatcc_builder_end_struct(B); }\ -static inline N ## _ref_t N ## _end_pe(NS ## builder_t *B)\ -{ return flatcc_builder_end_struct(B); }\ -static inline N ## _ref_t N ## _create(NS ## builder_t *B __ ## N ## _formal_args)\ -{ N ## _t *_p = N ## _start(B); if (!_p) return 0; N ##_assign_to_pe(_p __ ## N ## _call_args);\ - return N ## _end_pe(B); }\ -static inline N ## _ref_t N ## _clone(NS ## builder_t *B, N ## _struct_t p)\ -{ N ## _t *_p; __flatbuffers_memoize_begin(B, p); _p = N ## _start(B); if (!_p) return 0;\ - N ## _copy(_p, p); __flatbuffers_memoize_end(B, p, N ##_end_pe(B)); }\ -__flatbuffers_build_vector(NS, N, N ## _t, S, A)\ -__flatbuffers_build_struct_root(NS, N, A, FID, TFID)\ - -#define __flatbuffers_struct_clear_field(p) memset((p), 0, sizeof(*(p))) -#define __flatbuffers_build_table(NS, N, K)\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return flatcc_builder_start_table(B, K); }\ -static inline N ## _ref_t N ## _end(NS ## builder_t *B)\ -{ FLATCC_ASSERT(flatcc_builder_check_required(B, __ ## N ## _required,\ - sizeof(__ ## N ## _required) / sizeof(__ ## N ## _required[0]) - 1));\ - return flatcc_builder_end_table(B); }\ -__flatbuffers_build_offset_vector(NS, N) - -#define __flatbuffers_build_table_field(ID, NS, N, TN, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _ref_t ref)\ -{ TN ## _ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ?\ - ((*_p = ref), 0) : -1; }\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return TN ## _start(B); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, TN ## _end(B)); }\ -static inline TN ## _ref_t N ## _create(NS ## builder_t *B __ ## TN ##_formal_args)\ -{ return N ## _add(B, TN ## _create(B __ ## TN ## _call_args)); }\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _table_t p)\ -{ return N ## _add(B, TN ## _clone(B, p)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _table_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_union_field(ID, NS, N, TN, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _union_ref_t uref)\ -{ NS ## ref_t *_p; TN ## _union_type_t *_pt; if (uref.type == TN ## _NONE) return 0; if (uref.value == 0) return -1;\ - if (!(_pt = (TN ## _union_type_t *)flatcc_builder_table_add(B, ID - 1, sizeof(*_pt), sizeof(*_pt)))) return -1;\ - *_pt = uref.type; if (!(_p = flatcc_builder_table_add_offset(B, ID))) return -1; *_p = uref.value; return 0; }\ -static inline int N ## _add_type(NS ## builder_t *B, TN ## _union_type_t type)\ -{ TN ## _union_type_t *_pt; if (type == TN ## _NONE) return 0; return (_pt = (TN ## _union_type_t *)flatcc_builder_table_add(B, ID - 1,\ - sizeof(*_pt), sizeof(*_pt))) ? ((*_pt = type), 0) : -1; }\ -static inline int N ## _add_value(NS ## builder_t *B, TN ## _union_ref_t uref)\ -{ NS ## ref_t *p; if (uref.type == TN ## _NONE) return 0; return (p = flatcc_builder_table_add_offset(B, ID)) ?\ - ((*p = uref.value), 0) : -1; }\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _union_t p)\ -{ return N ## _add(B, TN ## _clone(B, p)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _union_t _p = N ## _union(t); return _p.type ? N ## _clone(B, _p) : 0; } - -/* M is the union value name and T is its type, i.e. the qualified name. */ -#define __flatbuffers_build_union_table_value_field(NS, N, NU, M, T)\ -static inline int N ## _ ## M ## _add(NS ## builder_t *B, T ## _ref_t ref)\ -{ return N ## _add(B, NU ## _as_ ## M (ref)); }\ -static inline int N ## _ ## M ## _start(NS ## builder_t *B)\ -{ return T ## _start(B); }\ -static inline int N ## _ ## M ## _end(NS ## builder_t *B)\ -{ T ## _ref_t ref = T ## _end(B);\ - return ref ? N ## _ ## M ## _add(B, ref) : -1; }\ -static inline int N ## _ ## M ## _create(NS ## builder_t *B __ ## T ##_formal_args)\ -{ T ## _ref_t ref = T ## _create(B __ ## T ## _call_args);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }\ -static inline int N ## _ ## M ## _clone(NS ## builder_t *B, T ## _table_t t)\ -{ T ## _ref_t ref = T ## _clone(B, t);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; } - -/* M is the union value name and T is its type, i.e. the qualified name. */ -#define __flatbuffers_build_union_struct_value_field(NS, N, NU, M, T)\ -static inline int N ## _ ## M ## _add(NS ## builder_t *B, T ## _ref_t ref)\ -{ return N ## _add(B, NU ## _as_ ## M (ref)); }\ -static inline T ## _t *N ## _ ## M ## _start(NS ## builder_t *B)\ -{ return T ## _start(B); }\ -static inline int N ## _ ## M ## _end(NS ## builder_t *B)\ -{ T ## _ref_t ref = T ## _end(B);\ - return ref ? N ## _ ## M ## _add(B, ref) : -1; }\ -static inline int N ## _ ## M ## _create(NS ## builder_t *B __ ## T ##_formal_args)\ -{ T ## _ref_t ref = T ## _create(B __ ## T ## _call_args);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }\ -static inline int N ## _ ## M ## _end_pe(NS ## builder_t *B)\ -{ T ## _ref_t ref = T ## _end_pe(B);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }\ -static inline int N ## _ ## M ## _clone(NS ## builder_t *B, T ## _struct_t p)\ -{ T ## _ref_t ref = T ## _clone(B, p);\ - return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; } -#define __flatbuffers_build_union_string_value_field(NS, N, NU, M)\ -static inline int N ## _ ## M ## _add(NS ## builder_t *B, NS ## string_ref_t ref)\ -{ return N ## _add(B, NU ## _as_ ## M (ref)); }\ -__flatbuffers_build_string_field_ops(NS, N ## _ ## M) - -/* NS: common namespace, ID: table field id (not offset), TN: name of type T, TT: name of table type - * S: sizeof of scalar type, A: alignment of type T, default value V of type T. */ -#define __flatbuffers_build_scalar_field(ID, NS, N, TN, T, S, A, V, TT)\ -static inline int N ## _add(NS ## builder_t *B, const T v)\ -{ T *_p; if (v == V) return 0; if (!(_p = (T *)flatcc_builder_table_add(B, ID, S, A))) return -1;\ - TN ## _assign_to_pe(_p, v); return 0; }\ -static inline int N ## _force_add(NS ## builder_t *B, const T v)\ -{ T *_p; if (!(_p = (T *)flatcc_builder_table_add(B, ID, S, A))) return -1;\ - TN ## _assign_to_pe(_p, v); return 0; }\ -/* Clone does not skip default values and expects pe endian content. */\ -static inline int N ## _clone(NS ## builder_t *B, const T *p)\ -{ return 0 == flatcc_builder_table_add_copy(B, ID, p, S, A) ? -1 : 0; }\ -/* Transferring a missing field is a nop success with 0 as result. */\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ const T *_p = N ## _get_ptr(t); return _p ? N ## _clone(B, _p) : 0; } - -/* NS: common namespace, ID: table field id (not offset), TN: name of type T, TT: name of table type - * S: sizeof of scalar type, A: alignment of type T. */ -#define __flatbuffers_build_scalar_optional_field(ID, NS, N, TN, T, S, A, TT)\ -static inline int N ## _add(NS ## builder_t *B, const T v)\ -{ T *_p; if (!(_p = (T *)flatcc_builder_table_add(B, ID, S, A))) return -1;\ - TN ## _assign_to_pe(_p, v); return 0; }\ -/* Clone does not skip default values and expects pe endian content. */\ -static inline int N ## _clone(NS ## builder_t *B, const T *p)\ -{ return 0 == flatcc_builder_table_add_copy(B, ID, p, S, A) ? -1 : 0; }\ -/* Transferring a missing field is a nop success with 0 as result. */\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ const T *_p = N ## _get_ptr(t); return _p ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_struct_field(ID, NS, N, TN, S, A, TT)\ -static inline TN ## _t *N ## _start(NS ## builder_t *B)\ -{ return (TN ## _t *)flatcc_builder_table_add(B, ID, S, A); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ if (!NS ## is_native_pe()) { TN ## _to_pe((TN ## _t *)flatcc_builder_table_edit(B, S)); } return 0; }\ -static inline int N ## _end_pe(NS ## builder_t *B) { return 0; }\ -static inline int N ## _create(NS ## builder_t *B __ ## TN ## _formal_args)\ -{ TN ## _t *_p = N ## _start(B); if (!_p) return -1; TN ##_assign_to_pe(_p __ ## TN ## _call_args);\ - return 0; }\ -static inline int N ## _add(NS ## builder_t *B, const TN ## _t *p)\ -{ TN ## _t *_p = N ## _start(B); if (!_p) return -1; TN ##_copy_to_pe(_p, p); return 0; }\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _struct_t p)\ -{ return 0 == flatcc_builder_table_add_copy(B, ID, p, S, A) ? -1 : 0; }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _struct_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_vector_field(ID, NS, N, TN, T, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _vec_ref_t ref)\ -{ TN ## _vec_ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ? ((*_p = ref), 0) : -1; }\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return TN ## _vec_start(B); }\ -static inline int N ## _end_pe(NS ## builder_t *B)\ -{ return N ## _add(B, TN ## _vec_end_pe(B)); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, TN ## _vec_end(B)); }\ -static inline int N ## _create_pe(NS ## builder_t *B, const T *data, size_t len)\ -{ return N ## _add(B, TN ## _vec_create_pe(B, data, len)); }\ -static inline int N ## _create(NS ## builder_t *B, const T *data, size_t len)\ -{ return N ## _add(B, TN ## _vec_create(B, data, len)); }\ -static inline int N ## _slice(NS ## builder_t *B, TN ## _vec_t vec, size_t index, size_t len)\ -{ return N ## _add(B, TN ## _vec_slice(B, vec, index, len)); }\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _vec_t vec)\ -{ return N ## _add(B, TN ## _vec_clone(B, vec)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _vec_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; }\ -__flatbuffers_build_vector_ops(NS, N, N, TN, T)\ - -#define __flatbuffers_build_offset_vector_field(ID, NS, N, TN, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _vec_ref_t ref)\ -{ TN ## _vec_ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ? ((*_p = ref), 0) : -1; }\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return flatcc_builder_start_offset_vector(B); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, flatcc_builder_end_offset_vector(B)); }\ -static inline int N ## _create(NS ## builder_t *B, const TN ## _ref_t *data, size_t len)\ -{ return N ## _add(B, flatcc_builder_create_offset_vector(B, data, len)); }\ -__flatbuffers_build_offset_vector_ops(NS, N, N, TN)\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _vec_t vec)\ -{ return N ## _add(B, TN ## _vec_clone(B, vec)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _vec_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; } - -/* depends on N ## _add which differs for union member fields and ordinary fields */\ -#define __flatbuffers_build_string_field_ops(NS, N)\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return flatcc_builder_start_string(B); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, flatcc_builder_end_string(B)); }\ -static inline int N ## _create(NS ## builder_t *B, const char *s, size_t len)\ -{ return N ## _add(B, flatcc_builder_create_string(B, s, len)); }\ -static inline int N ## _create_str(NS ## builder_t *B, const char *s)\ -{ return N ## _add(B, flatcc_builder_create_string_str(B, s)); }\ -static inline int N ## _create_strn(NS ## builder_t *B, const char *s, size_t max_len)\ -{ return N ## _add(B, flatcc_builder_create_string_strn(B, s, max_len)); }\ -static inline int N ## _clone(NS ## builder_t *B, NS ## string_t string)\ -{ return N ## _add(B, NS ## string_clone(B, string)); }\ -static inline int N ## _slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\ -{ return N ## _add(B, NS ## string_slice(B, string, index, len)); }\ -__flatbuffers_build_string_ops(NS, N) - -#define __flatbuffers_build_string_field(ID, NS, N, TT)\ -static inline int N ## _add(NS ## builder_t *B, NS ## string_ref_t ref)\ -{ NS ## string_ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ? ((*_p = ref), 0) : -1; }\ -__flatbuffers_build_string_field_ops(NS, N)\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ NS ## string_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_table_vector_field(ID, NS, N, TN, TT)\ -__flatbuffers_build_offset_vector_field(ID, NS, N, TN, TT)\ -__flatbuffers_build_table_vector_ops(NS, N, TN) - -#define __flatbuffers_build_union_vector_field(ID, NS, N, TN, TT)\ -static inline int N ## _add(NS ## builder_t *B, TN ## _union_vec_ref_t uvref)\ -{ NS ## vec_ref_t *_p; if (!uvref.type || !uvref.value) return uvref.type == uvref.value ? 0 : -1;\ - if (!(_p = flatcc_builder_table_add_offset(B, ID - 1))) return -1; *_p = uvref.type;\ - if (!(_p = flatcc_builder_table_add_offset(B, ID))) return -1; *_p = uvref.value; return 0; }\ -static inline int N ## _start(NS ## builder_t *B)\ -{ return flatcc_builder_start_union_vector(B); }\ -static inline int N ## _end(NS ## builder_t *B)\ -{ return N ## _add(B, flatcc_builder_end_union_vector(B)); }\ -static inline int N ## _create(NS ## builder_t *B, const TN ## _union_ref_t *data, size_t len)\ -{ return N ## _add(B, flatcc_builder_create_union_vector(B, data, len)); }\ -__flatbuffers_build_union_vector_ops(NS, N, N, TN)\ -static inline int N ## _clone(NS ## builder_t *B, TN ## _union_vec_t vec)\ -{ return N ## _add(B, TN ## _vec_clone(B, vec)); }\ -static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\ -{ TN ## _union_vec_t _p = N ## _union(t); return _p.type ? N ## _clone(B, _p) : 0; } - -#define __flatbuffers_build_union_table_vector_value_field(NS, N, NU, M, T)\ -static inline int N ## _ ## M ## _push_start(NS ## builder_t *B)\ -{ return T ## _start(B); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_end(NS ## builder_t *B)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (T ## _end(B))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push(NS ## builder_t *B, T ## _ref_t ref)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (ref)); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create(NS ## builder_t *B __ ## T ##_formal_args)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _create(B __ ## T ## _call_args))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_clone(NS ## builder_t *B, T ## _table_t t)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _clone(B, t))); } - -#define __flatbuffers_build_union_struct_vector_value_field(NS, N, NU, M, T)\ -static inline T ## _t *N ## _ ## M ## _push_start(NS ## builder_t *B)\ -{ return T ## _start(B); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_end(NS ## builder_t *B)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (T ## _end(B))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push(NS ## builder_t *B, T ## _ref_t ref)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (ref)); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create(NS ## builder_t *B __ ## T ##_formal_args)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _create(B __ ## T ## _call_args))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_clone(NS ## builder_t *B, T ## _struct_t p)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _clone(B, p))); } - -#define __flatbuffers_build_union_string_vector_value_field(NS, N, NU, M)\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push(NS ## builder_t *B, NS ## string_ref_t ref)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M (ref)); }\ -static inline int N ## _ ## M ## _push_start(NS ## builder_t *B)\ -{ return NS ## string_start(B); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_end(NS ## builder_t *B)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_end(B))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create(NS ## builder_t *B, const char *s, size_t len)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_create(B, s, len))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create_str(NS ## builder_t *B, const char *s)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_create_str(B, s))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_create_strn(NS ## builder_t *B, const char *s, size_t max_len)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_create_strn(B, s, max_len))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_clone(NS ## builder_t *B, NS ## string_t string)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_clone(B, string))); }\ -static inline NU ## _union_ref_t *N ## _ ## M ## _push_slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\ -{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_slice(B, string, index, len))); } - -#define __flatbuffers_build_string_vector_field(ID, NS, N, TT)\ -__flatbuffers_build_offset_vector_field(ID, NS, N, NS ## string, TT)\ -__flatbuffers_build_string_vector_ops(NS, N) - -#define __flatbuffers_char_formal_args , char v0 -#define __flatbuffers_char_call_args , v0 -#define __flatbuffers_uint8_formal_args , uint8_t v0 -#define __flatbuffers_uint8_call_args , v0 -#define __flatbuffers_int8_formal_args , int8_t v0 -#define __flatbuffers_int8_call_args , v0 -#define __flatbuffers_bool_formal_args , flatbuffers_bool_t v0 -#define __flatbuffers_bool_call_args , v0 -#define __flatbuffers_uint16_formal_args , uint16_t v0 -#define __flatbuffers_uint16_call_args , v0 -#define __flatbuffers_uint32_formal_args , uint32_t v0 -#define __flatbuffers_uint32_call_args , v0 -#define __flatbuffers_uint64_formal_args , uint64_t v0 -#define __flatbuffers_uint64_call_args , v0 -#define __flatbuffers_int16_formal_args , int16_t v0 -#define __flatbuffers_int16_call_args , v0 -#define __flatbuffers_int32_formal_args , int32_t v0 -#define __flatbuffers_int32_call_args , v0 -#define __flatbuffers_int64_formal_args , int64_t v0 -#define __flatbuffers_int64_call_args , v0 -#define __flatbuffers_float_formal_args , float v0 -#define __flatbuffers_float_call_args , v0 -#define __flatbuffers_double_formal_args , double v0 -#define __flatbuffers_double_call_args , v0 - -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_char, char) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint8, uint8_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int8, int8_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_bool, flatbuffers_bool_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint16, uint16_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint32, uint32_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint64, uint64_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int16, int16_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int32, int32_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int64, int64_t) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_float, float) -__flatbuffers_build_scalar(flatbuffers_, flatbuffers_double, double) - -__flatbuffers_build_string(flatbuffers_) - -__flatbuffers_build_buffer(flatbuffers_) -#include "flatcc_epilogue.h" -#endif /* FLATBUFFERS_COMMON_BUILDER_H */ diff --git a/nostrdb/src/bindings/c/flatbuffers_common_reader.h b/nostrdb/src/bindings/c/flatbuffers_common_reader.h deleted file mode 100644 index 49e479e299..0000000000 --- a/nostrdb/src/bindings/c/flatbuffers_common_reader.h +++ /dev/null @@ -1,578 +0,0 @@ -#ifndef FLATBUFFERS_COMMON_READER_H -#define FLATBUFFERS_COMMON_READER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -/* Common FlatBuffers read functionality for C. */ - -#include "flatcc_prologue.h" -#include "flatcc_flatbuffers.h" - - -#define __flatbuffers_read_scalar_at_byteoffset(N, p, o) N ## _read_from_pe((uint8_t *)(p) + (o)) -#define __flatbuffers_read_scalar(N, p) N ## _read_from_pe(p) -#define __flatbuffers_read_vt(ID, offset, t)\ -flatbuffers_voffset_t offset = 0;\ -{ flatbuffers_voffset_t id__tmp, *vt__tmp;\ - FLATCC_ASSERT(t != 0 && "null pointer table access");\ - id__tmp = ID;\ - vt__tmp = (flatbuffers_voffset_t *)((uint8_t *)(t) -\ - __flatbuffers_soffset_read_from_pe(t));\ - if (__flatbuffers_voffset_read_from_pe(vt__tmp) >= sizeof(vt__tmp[0]) * (id__tmp + 3u)) {\ - offset = __flatbuffers_voffset_read_from_pe(vt__tmp + id__tmp + 2);\ - }\ -} -#define __flatbuffers_field_present(ID, t) { __flatbuffers_read_vt(ID, offset__tmp, t) return offset__tmp != 0; } -#define __flatbuffers_scalar_field(T, ID, t)\ -{\ - __flatbuffers_read_vt(ID, offset__tmp, t)\ - if (offset__tmp) {\ - return (const T *)((uint8_t *)(t) + offset__tmp);\ - }\ - return 0;\ -} -#define __flatbuffers_define_scalar_field(ID, N, NK, TK, T, V)\ -static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -{ __flatbuffers_read_vt(ID, offset__tmp, t__tmp)\ - return offset__tmp ? __flatbuffers_read_scalar_at_byteoffset(TK, t__tmp, offset__tmp) : V;\ -}\ -static inline T N ## _ ## NK(N ## _table_t t__tmp)\ -{ __flatbuffers_read_vt(ID, offset__tmp, t__tmp)\ - return offset__tmp ? __flatbuffers_read_scalar_at_byteoffset(TK, t__tmp, offset__tmp) : V;\ -}\ -static inline const T *N ## _ ## NK ## _get_ptr(N ## _table_t t__tmp)\ -__flatbuffers_scalar_field(T, ID, t__tmp)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp)\ -__flatbuffers_define_scan_by_scalar_field(N, NK, T) -#define __flatbuffers_define_scalar_optional_field(ID, N, NK, TK, T, V)\ -__flatbuffers_define_scalar_field(ID, N, NK, TK, T, V)\ -static inline TK ## _option_t N ## _ ## NK ## _option(N ## _table_t t__tmp)\ -{ TK ## _option_t ret; __flatbuffers_read_vt(ID, offset__tmp, t__tmp)\ - ret.is_null = offset__tmp == 0; ret.value = offset__tmp ?\ - __flatbuffers_read_scalar_at_byteoffset(TK, t__tmp, offset__tmp) : V;\ - return ret; } -#define __flatbuffers_struct_field(T, ID, t, r)\ -{\ - __flatbuffers_read_vt(ID, offset__tmp, t)\ - if (offset__tmp) {\ - return (T)((uint8_t *)(t) + offset__tmp);\ - }\ - FLATCC_ASSERT(!(r) && "required field missing");\ - return 0;\ -} -#define __flatbuffers_offset_field(T, ID, t, r, adjust)\ -{\ - flatbuffers_uoffset_t *elem__tmp;\ - __flatbuffers_read_vt(ID, offset__tmp, t)\ - if (offset__tmp) {\ - elem__tmp = (flatbuffers_uoffset_t *)((uint8_t *)(t) + offset__tmp);\ - /* Add sizeof so C api can have raw access past header field. */\ - return (T)((uint8_t *)(elem__tmp) + adjust +\ - __flatbuffers_uoffset_read_from_pe(elem__tmp));\ - }\ - FLATCC_ASSERT(!(r) && "required field missing");\ - return 0;\ -} -#define __flatbuffers_vector_field(T, ID, t, r) __flatbuffers_offset_field(T, ID, t, r, sizeof(flatbuffers_uoffset_t)) -#define __flatbuffers_table_field(T, ID, t, r) __flatbuffers_offset_field(T, ID, t, r, 0) -#define __flatbuffers_define_struct_field(ID, N, NK, T, r)\ -static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__flatbuffers_struct_field(T, ID, t__tmp, r)\ -static inline T N ## _ ## NK(N ## _table_t t__tmp)\ -__flatbuffers_struct_field(T, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp) -#define __flatbuffers_define_vector_field(ID, N, NK, T, r)\ -static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__flatbuffers_vector_field(T, ID, t__tmp, r)\ -static inline T N ## _ ## NK(N ## _table_t t__tmp)\ -__flatbuffers_vector_field(T, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp) -#define __flatbuffers_define_table_field(ID, N, NK, T, r)\ -static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__flatbuffers_table_field(T, ID, t__tmp, r)\ -static inline T N ## _ ## NK(N ## _table_t t__tmp)\ -__flatbuffers_table_field(T, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp) -#define __flatbuffers_define_string_field(ID, N, NK, r)\ -static inline flatbuffers_string_t N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__flatbuffers_vector_field(flatbuffers_string_t, ID, t__tmp, r)\ -static inline flatbuffers_string_t N ## _ ## NK(N ## _table_t t__tmp)\ -__flatbuffers_vector_field(flatbuffers_string_t, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__flatbuffers_field_present(ID, t__tmp)\ -__flatbuffers_define_scan_by_string_field(N, NK) -#define __flatbuffers_vec_len(vec)\ -{ return (vec) ? (size_t)__flatbuffers_uoffset_read_from_pe((flatbuffers_uoffset_t *)vec - 1) : 0; } -#define __flatbuffers_string_len(s) __flatbuffers_vec_len(s) -static inline size_t flatbuffers_vec_len(const void *vec) -__flatbuffers_vec_len(vec) -#define __flatbuffers_scalar_vec_at(N, vec, i)\ -{ FLATCC_ASSERT(flatbuffers_vec_len(vec) > (i) && "index out of range");\ - return __flatbuffers_read_scalar(N, &(vec)[i]); } -#define __flatbuffers_struct_vec_at(vec, i)\ -{ FLATCC_ASSERT(flatbuffers_vec_len(vec) > (i) && "index out of range"); return (vec) + (i); } -/* `adjust` skips past the header for string vectors. */ -#define __flatbuffers_offset_vec_at(T, vec, i, adjust)\ -{ const flatbuffers_uoffset_t *elem__tmp = (vec) + (i);\ - FLATCC_ASSERT(flatbuffers_vec_len(vec) > (i) && "index out of range");\ - return (T)((uint8_t *)(elem__tmp) + (size_t)__flatbuffers_uoffset_read_from_pe(elem__tmp) + (adjust)); } -#define __flatbuffers_define_scalar_vec_len(N)\ -static inline size_t N ## _vec_len(N ##_vec_t vec__tmp)\ -{ return flatbuffers_vec_len(vec__tmp); } -#define __flatbuffers_define_scalar_vec_at(N, T) \ -static inline T N ## _vec_at(N ## _vec_t vec__tmp, size_t i__tmp)\ -__flatbuffers_scalar_vec_at(N, vec__tmp, i__tmp) -typedef const char *flatbuffers_string_t; -static inline size_t flatbuffers_string_len(flatbuffers_string_t s) -__flatbuffers_string_len(s) -typedef const flatbuffers_uoffset_t *flatbuffers_string_vec_t; -typedef flatbuffers_uoffset_t *flatbuffers_string_mutable_vec_t; -static inline size_t flatbuffers_string_vec_len(flatbuffers_string_vec_t vec) -__flatbuffers_vec_len(vec) -static inline flatbuffers_string_t flatbuffers_string_vec_at(flatbuffers_string_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(flatbuffers_string_t, vec, i, sizeof(vec[0])) -typedef const void *flatbuffers_generic_t; -typedef void *flatbuffers_mutable_generic_t; -static inline flatbuffers_string_t flatbuffers_string_cast_from_generic(const flatbuffers_generic_t p) -{ return p ? ((const char *)p) + __flatbuffers_uoffset__size() : 0; } -typedef const flatbuffers_uoffset_t *flatbuffers_generic_vec_t; -typedef flatbuffers_uoffset_t *flatbuffers_generic_table_mutable_vec_t; -static inline size_t flatbuffers_generic_vec_len(flatbuffers_generic_vec_t vec) -__flatbuffers_vec_len(vec) -static inline flatbuffers_generic_t flatbuffers_generic_vec_at(flatbuffers_generic_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(flatbuffers_generic_t, vec, i, 0) -static inline flatbuffers_generic_t flatbuffers_generic_vec_at_as_string(flatbuffers_generic_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(flatbuffers_generic_t, vec, i, sizeof(vec[0])) -typedef struct flatbuffers_union { - flatbuffers_union_type_t type; - flatbuffers_generic_t value; -} flatbuffers_union_t; -typedef struct flatbuffers_union_vec { - const flatbuffers_union_type_t *type; - const flatbuffers_uoffset_t *value; -} flatbuffers_union_vec_t; -typedef struct flatbuffers_mutable_union { - flatbuffers_union_type_t type; - flatbuffers_mutable_generic_t value; -} flatbuffers_mutable_union_t; -typedef struct flatbuffers_mutable_union_vec { - flatbuffers_union_type_t *type; - flatbuffers_uoffset_t *value; -} flatbuffers_mutable_union_vec_t; -static inline flatbuffers_mutable_union_t flatbuffers_mutable_union_cast(flatbuffers_union_t u__tmp)\ -{ flatbuffers_mutable_union_t mu = { u__tmp.type, (flatbuffers_mutable_generic_t)u__tmp.value };\ - return mu; } -static inline flatbuffers_mutable_union_vec_t flatbuffers_mutable_union_vec_cast(flatbuffers_union_vec_t uv__tmp)\ -{ flatbuffers_mutable_union_vec_t muv =\ - { (flatbuffers_union_type_t *)uv__tmp.type, (flatbuffers_uoffset_t *)uv__tmp.value }; return muv; } -#define __flatbuffers_union_type_field(ID, t)\ -{\ - __flatbuffers_read_vt(ID, offset__tmp, t)\ - return offset__tmp ? __flatbuffers_read_scalar_at_byteoffset(__flatbuffers_utype, t, offset__tmp) : 0;\ -} -static inline flatbuffers_string_t flatbuffers_string_cast_from_union(const flatbuffers_union_t u__tmp)\ -{ return flatbuffers_string_cast_from_generic(u__tmp.value); } -#define __flatbuffers_define_union_field(NS, ID, N, NK, T, r)\ -static inline T ## _union_type_t N ## _ ## NK ## _type_get(N ## _table_t t__tmp)\ -__## NS ## union_type_field(((ID) - 1), t__tmp)\ -static inline NS ## generic_t N ## _ ## NK ## _get(N ## _table_t t__tmp)\ -__## NS ## table_field(NS ## generic_t, ID, t__tmp, r)\ -static inline T ## _union_type_t N ## _ ## NK ## _type(N ## _table_t t__tmp)\ -__## NS ## union_type_field(((ID) - 1), t__tmp)\ -static inline NS ## generic_t N ## _ ## NK(N ## _table_t t__tmp)\ -__## NS ## table_field(NS ## generic_t, ID, t__tmp, r)\ -static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\ -__## NS ## field_present(ID, t__tmp)\ -static inline T ## _union_t N ## _ ## NK ## _union(N ## _table_t t__tmp)\ -{ T ## _union_t u__tmp = { 0, 0 }; u__tmp.type = N ## _ ## NK ## _type_get(t__tmp);\ - if (u__tmp.type == 0) return u__tmp; u__tmp.value = N ## _ ## NK ## _get(t__tmp); return u__tmp; }\ -static inline NS ## string_t N ## _ ## NK ## _as_string(N ## _table_t t__tmp)\ -{ return NS ## string_cast_from_generic(N ## _ ## NK ## _get(t__tmp)); }\ - -#define __flatbuffers_define_union_vector_ops(NS, T)\ -static inline size_t T ## _union_vec_len(T ## _union_vec_t uv__tmp)\ -{ return NS ## vec_len(uv__tmp.type); }\ -static inline T ## _union_t T ## _union_vec_at(T ## _union_vec_t uv__tmp, size_t i__tmp)\ -{ T ## _union_t u__tmp = { 0, 0 }; size_t n__tmp = NS ## vec_len(uv__tmp.type);\ - FLATCC_ASSERT(n__tmp > (i__tmp) && "index out of range"); u__tmp.type = uv__tmp.type[i__tmp];\ - /* Unknown type is treated as NONE for schema evolution. */\ - if (u__tmp.type == 0) return u__tmp;\ - u__tmp.value = NS ## generic_vec_at(uv__tmp.value, i__tmp); return u__tmp; }\ -static inline NS ## string_t T ## _union_vec_at_as_string(T ## _union_vec_t uv__tmp, size_t i__tmp)\ -{ return (NS ## string_t) NS ## generic_vec_at_as_string(uv__tmp.value, i__tmp); }\ - -#define __flatbuffers_define_union_vector(NS, T)\ -typedef NS ## union_vec_t T ## _union_vec_t;\ -typedef NS ## mutable_union_vec_t T ## _mutable_union_vec_t;\ -static inline T ## _mutable_union_vec_t T ## _mutable_union_vec_cast(T ## _union_vec_t u__tmp)\ -{ return NS ## mutable_union_vec_cast(u__tmp); }\ -__## NS ## define_union_vector_ops(NS, T) -#define __flatbuffers_define_union(NS, T)\ -typedef NS ## union_t T ## _union_t;\ -typedef NS ## mutable_union_t T ## _mutable_union_t;\ -static inline T ## _mutable_union_t T ## _mutable_union_cast(T ## _union_t u__tmp)\ -{ return NS ## mutable_union_cast(u__tmp); }\ -__## NS ## define_union_vector(NS, T) -#define __flatbuffers_define_union_vector_field(NS, ID, N, NK, T, r)\ -__## NS ## define_vector_field(ID - 1, N, NK ## _type, T ## _vec_t, r)\ -__## NS ## define_vector_field(ID, N, NK, flatbuffers_generic_vec_t, r)\ -static inline T ## _union_vec_t N ## _ ## NK ## _union(N ## _table_t t__tmp)\ -{ T ## _union_vec_t uv__tmp; uv__tmp.type = N ## _ ## NK ## _type_get(t__tmp);\ - uv__tmp.value = N ## _ ## NK(t__tmp);\ - FLATCC_ASSERT(NS ## vec_len(uv__tmp.type) == NS ## vec_len(uv__tmp.value)\ - && "union vector type length mismatch"); return uv__tmp; } -#include -static const size_t flatbuffers_not_found = (size_t)-1; -static const size_t flatbuffers_end = (size_t)-1; -#define __flatbuffers_identity(n) (n) -#define __flatbuffers_min(a, b) ((a) < (b) ? (a) : (b)) -/* Subtraction doesn't work for unsigned types. */ -#define __flatbuffers_scalar_cmp(x, y, n) ((x) < (y) ? -1 : (x) > (y)) -static inline int __flatbuffers_string_n_cmp(flatbuffers_string_t v, const char *s, size_t n) -{ size_t nv = flatbuffers_string_len(v); int x = strncmp(v, s, nv < n ? nv : n); - return x != 0 ? x : nv < n ? -1 : nv > n; } -/* `n` arg unused, but needed by string find macro expansion. */ -static inline int __flatbuffers_string_cmp(flatbuffers_string_t v, const char *s, size_t n) { (void)n; return strcmp(v, s); } -/* A = identity if searching scalar vectors rather than key fields. */ -/* Returns lowest matching index or not_found. */ -#define __flatbuffers_find_by_field(A, V, E, L, K, Kn, T, D)\ -{ T v__tmp; size_t a__tmp = 0, b__tmp, m__tmp; if (!(b__tmp = L(V))) { return flatbuffers_not_found; }\ - --b__tmp;\ - while (a__tmp < b__tmp) {\ - m__tmp = a__tmp + ((b__tmp - a__tmp) >> 1);\ - v__tmp = A(E(V, m__tmp));\ - if ((D(v__tmp, (K), (Kn))) < 0) {\ - a__tmp = m__tmp + 1;\ - } else {\ - b__tmp = m__tmp;\ - }\ - }\ - if (a__tmp == b__tmp) {\ - v__tmp = A(E(V, a__tmp));\ - if (D(v__tmp, (K), (Kn)) == 0) {\ - return a__tmp;\ - }\ - }\ - return flatbuffers_not_found;\ -} -#define __flatbuffers_find_by_scalar_field(A, V, E, L, K, T)\ -__flatbuffers_find_by_field(A, V, E, L, K, 0, T, __flatbuffers_scalar_cmp) -#define __flatbuffers_find_by_string_field(A, V, E, L, K)\ -__flatbuffers_find_by_field(A, V, E, L, K, 0, flatbuffers_string_t, __flatbuffers_string_cmp) -#define __flatbuffers_find_by_string_n_field(A, V, E, L, K, Kn)\ -__flatbuffers_find_by_field(A, V, E, L, K, Kn, flatbuffers_string_t, __flatbuffers_string_n_cmp) -#define __flatbuffers_define_find_by_scalar_field(N, NK, TK)\ -static inline size_t N ## _vec_find_by_ ## NK(N ## _vec_t vec__tmp, TK key__tmp)\ -__flatbuffers_find_by_scalar_field(N ## _ ## NK, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, TK) -#define __flatbuffers_define_scalar_find(N, T)\ -static inline size_t N ## _vec_find(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_find_by_scalar_field(__flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T) -#define __flatbuffers_define_find_by_string_field(N, NK) \ -/* Note: find only works on vectors sorted by this field. */\ -static inline size_t N ## _vec_find_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp)\ -__flatbuffers_find_by_string_field(N ## _ ## NK, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_find_n_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_find_by_string_n_field(N ## _ ## NK, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp) -#define __flatbuffers_define_default_find_by_scalar_field(N, NK, TK)\ -static inline size_t N ## _vec_find(N ## _vec_t vec__tmp, TK key__tmp)\ -{ return N ## _vec_find_by_ ## NK(vec__tmp, key__tmp); } -#define __flatbuffers_define_default_find_by_string_field(N, NK) \ -static inline size_t N ## _vec_find(N ## _vec_t vec__tmp, const char *s__tmp)\ -{ return N ## _vec_find_by_ ## NK(vec__tmp, s__tmp); }\ -static inline size_t N ## _vec_find_n(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_find_n_by_ ## NK(vec__tmp, s__tmp, n__tmp); } -/* A = identity if searching scalar vectors rather than key fields. */ -/* Returns lowest matching index or not_found. */ -#define __flatbuffers_scan_by_field(b, e, A, V, E, L, K, Kn, T, D)\ -{ T v__tmp; size_t i__tmp;\ - for (i__tmp = b; i__tmp < e; ++i__tmp) {\ - v__tmp = A(E(V, i__tmp));\ - if (D(v__tmp, (K), (Kn)) == 0) {\ - return i__tmp;\ - }\ - }\ - return flatbuffers_not_found;\ -} -#define __flatbuffers_rscan_by_field(b, e, A, V, E, L, K, Kn, T, D)\ -{ T v__tmp; size_t i__tmp = e;\ - while (i__tmp-- > b) {\ - v__tmp = A(E(V, i__tmp));\ - if (D(v__tmp, (K), (Kn)) == 0) {\ - return i__tmp;\ - }\ - }\ - return flatbuffers_not_found;\ -} -#define __flatbuffers_scan_by_scalar_field(b, e, A, V, E, L, K, T)\ -__flatbuffers_scan_by_field(b, e, A, V, E, L, K, 0, T, __flatbuffers_scalar_cmp) -#define __flatbuffers_scan_by_string_field(b, e, A, V, E, L, K)\ -__flatbuffers_scan_by_field(b, e, A, V, E, L, K, 0, flatbuffers_string_t, __flatbuffers_string_cmp) -#define __flatbuffers_scan_by_string_n_field(b, e, A, V, E, L, K, Kn)\ -__flatbuffers_scan_by_field(b, e, A, V, E, L, K, Kn, flatbuffers_string_t, __flatbuffers_string_n_cmp) -#define __flatbuffers_rscan_by_scalar_field(b, e, A, V, E, L, K, T)\ -__flatbuffers_rscan_by_field(b, e, A, V, E, L, K, 0, T, __flatbuffers_scalar_cmp) -#define __flatbuffers_rscan_by_string_field(b, e, A, V, E, L, K)\ -__flatbuffers_rscan_by_field(b, e, A, V, E, L, K, 0, flatbuffers_string_t, __flatbuffers_string_cmp) -#define __flatbuffers_rscan_by_string_n_field(b, e, A, V, E, L, K, Kn)\ -__flatbuffers_rscan_by_field(b, e, A, V, E, L, K, Kn, flatbuffers_string_t, __flatbuffers_string_n_cmp) -#define __flatbuffers_define_scan_by_scalar_field(N, NK, T)\ -static inline size_t N ## _vec_scan_by_ ## NK(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_scan_by_scalar_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_scan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\ -__flatbuffers_scan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_rscan_by_ ## NK(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_rscan_by_scalar_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_rscan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\ -__flatbuffers_rscan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T) -#define __flatbuffers_define_scalar_scan(N, T)\ -static inline size_t N ## _vec_scan(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_scan_by_scalar_field(0, N ## _vec_len(vec__tmp), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_scan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\ -__flatbuffers_scan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_rscan(N ## _vec_t vec__tmp, T key__tmp)\ -__flatbuffers_rscan_by_scalar_field(0, N ## _vec_len(vec__tmp), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\ -static inline size_t N ## _vec_rscan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\ -__flatbuffers_rscan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T) -#define __flatbuffers_define_scan_by_string_field(N, NK) \ -static inline size_t N ## _vec_scan_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp)\ -__flatbuffers_scan_by_string_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_scan_n_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_scan_by_string_n_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)\ -static inline size_t N ## _vec_scan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\ -__flatbuffers_scan_by_string_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_scan_ex_n_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_scan_by_string_n_field(begin__tmp, __flatbuffers_min( end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)\ -static inline size_t N ## _vec_rscan_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp)\ -__flatbuffers_rscan_by_string_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_rscan_n_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_rscan_by_string_n_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)\ -static inline size_t N ## _vec_rscan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\ -__flatbuffers_rscan_by_string_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\ -static inline size_t N ## _vec_rscan_ex_n_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\ -__flatbuffers_rscan_by_string_n_field(begin__tmp, __flatbuffers_min( end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp) -#define __flatbuffers_define_default_scan_by_scalar_field(N, NK, TK)\ -static inline size_t N ## _vec_scan(N ## _vec_t vec__tmp, TK key__tmp)\ -{ return N ## _vec_scan_by_ ## NK(vec__tmp, key__tmp); }\ -static inline size_t N ## _vec_scan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, TK key__tmp)\ -{ return N ## _vec_scan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, key__tmp); }\ -static inline size_t N ## _vec_rscan(N ## _vec_t vec__tmp, TK key__tmp)\ -{ return N ## _vec_rscan_by_ ## NK(vec__tmp, key__tmp); }\ -static inline size_t N ## _vec_rscan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, TK key__tmp)\ -{ return N ## _vec_rscan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, key__tmp); } -#define __flatbuffers_define_default_scan_by_string_field(N, NK) \ -static inline size_t N ## _vec_scan(N ## _vec_t vec__tmp, const char *s__tmp)\ -{ return N ## _vec_scan_by_ ## NK(vec__tmp, s__tmp); }\ -static inline size_t N ## _vec_scan_n(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_scan_n_by_ ## NK(vec__tmp, s__tmp, n__tmp); }\ -static inline size_t N ## _vec_scan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\ -{ return N ## _vec_scan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp); }\ -static inline size_t N ## _vec_scan_ex_n(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_scan_ex_n_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp, n__tmp); }\ -static inline size_t N ## _vec_rscan(N ## _vec_t vec__tmp, const char *s__tmp)\ -{ return N ## _vec_rscan_by_ ## NK(vec__tmp, s__tmp); }\ -static inline size_t N ## _vec_rscan_n(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_rscan_n_by_ ## NK(vec__tmp, s__tmp, n__tmp); }\ -static inline size_t N ## _vec_rscan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\ -{ return N ## _vec_rscan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp); }\ -static inline size_t N ## _vec_rscan_ex_n(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\ -{ return N ## _vec_rscan_ex_n_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp, n__tmp); } -#define __flatbuffers_heap_sort(N, X, A, E, L, TK, TE, D, S)\ -static inline void __ ## N ## X ## __heap_sift_down(\ - N ## _mutable_vec_t vec__tmp, size_t start__tmp, size_t end__tmp)\ -{ size_t child__tmp, root__tmp; TK v1__tmp, v2__tmp, vroot__tmp;\ - root__tmp = start__tmp;\ - while ((root__tmp << 1) <= end__tmp) {\ - child__tmp = root__tmp << 1;\ - if (child__tmp < end__tmp) {\ - v1__tmp = A(E(vec__tmp, child__tmp));\ - v2__tmp = A(E(vec__tmp, child__tmp + 1));\ - if (D(v1__tmp, v2__tmp) < 0) {\ - child__tmp++;\ - }\ - }\ - vroot__tmp = A(E(vec__tmp, root__tmp));\ - v1__tmp = A(E(vec__tmp, child__tmp));\ - if (D(vroot__tmp, v1__tmp) < 0) {\ - S(vec__tmp, root__tmp, child__tmp, TE);\ - root__tmp = child__tmp;\ - } else {\ - return;\ - }\ - }\ -}\ -static inline void __ ## N ## X ## __heap_sort(N ## _mutable_vec_t vec__tmp)\ -{ size_t start__tmp, end__tmp, size__tmp;\ - size__tmp = L(vec__tmp); if (size__tmp == 0) return; end__tmp = size__tmp - 1; start__tmp = size__tmp >> 1;\ - do { __ ## N ## X ## __heap_sift_down(vec__tmp, start__tmp, end__tmp); } while (start__tmp--);\ - while (end__tmp > 0) { \ - S(vec__tmp, 0, end__tmp, TE);\ - __ ## N ## X ## __heap_sift_down(vec__tmp, 0, --end__tmp); } } -#define __flatbuffers_define_sort_by_field(N, NK, TK, TE, D, S)\ - __flatbuffers_heap_sort(N, _sort_by_ ## NK, N ## _ ## NK ## _get, N ## _vec_at, N ## _vec_len, TK, TE, D, S)\ -static inline void N ## _vec_sort_by_ ## NK(N ## _mutable_vec_t vec__tmp)\ -{ __ ## N ## _sort_by_ ## NK ## __heap_sort(vec__tmp); } -#define __flatbuffers_define_sort(N, TK, TE, D, S)\ -__flatbuffers_heap_sort(N, , __flatbuffers_identity, N ## _vec_at, N ## _vec_len, TK, TE, D, S)\ -static inline void N ## _vec_sort(N ## _mutable_vec_t vec__tmp) { __ ## N ## __heap_sort(vec__tmp); } -#define __flatbuffers_scalar_diff(x, y) ((x) < (y) ? -1 : (x) > (y)) -#define __flatbuffers_string_diff(x, y) __flatbuffers_string_n_cmp((x), (const char *)(y), flatbuffers_string_len(y)) -#define __flatbuffers_value_swap(vec, a, b, TE) { TE x__tmp = vec[b]; vec[b] = vec[a]; vec[a] = x__tmp; } -#define __flatbuffers_uoffset_swap(vec, a, b, TE)\ -{ TE ta__tmp, tb__tmp, d__tmp;\ - d__tmp = (TE)((a - b) * sizeof(vec[0]));\ - ta__tmp = __flatbuffers_uoffset_read_from_pe(vec + b) - d__tmp;\ - tb__tmp = __flatbuffers_uoffset_read_from_pe(vec + a) + d__tmp;\ - __flatbuffers_uoffset_write_to_pe(vec + a, ta__tmp);\ - __flatbuffers_uoffset_write_to_pe(vec + b, tb__tmp); } -#define __flatbuffers_scalar_swap(vec, a, b, TE) __flatbuffers_value_swap(vec, a, b, TE) -#define __flatbuffers_string_swap(vec, a, b, TE) __flatbuffers_uoffset_swap(vec, a, b, TE) -#define __flatbuffers_struct_swap(vec, a, b, TE) __flatbuffers_value_swap(vec, a, b, TE) -#define __flatbuffers_table_swap(vec, a, b, TE) __flatbuffers_uoffset_swap(vec, a, b, TE) -#define __flatbuffers_define_struct_sort_by_scalar_field(N, NK, TK, TE)\ - __flatbuffers_define_sort_by_field(N, NK, TK, TE, __flatbuffers_scalar_diff, __flatbuffers_struct_swap) -#define __flatbuffers_define_table_sort_by_scalar_field(N, NK, TK)\ - __flatbuffers_define_sort_by_field(N, NK, TK, flatbuffers_uoffset_t, __flatbuffers_scalar_diff, __flatbuffers_table_swap) -#define __flatbuffers_define_table_sort_by_string_field(N, NK)\ - __flatbuffers_define_sort_by_field(N, NK, flatbuffers_string_t, flatbuffers_uoffset_t, __flatbuffers_string_diff, __flatbuffers_table_swap) -#define __flatbuffers_define_scalar_sort(N, T) __flatbuffers_define_sort(N, T, T, __flatbuffers_scalar_diff, __flatbuffers_scalar_swap) -#define __flatbuffers_define_string_sort() __flatbuffers_define_sort(flatbuffers_string, flatbuffers_string_t, flatbuffers_uoffset_t, __flatbuffers_string_diff, __flatbuffers_string_swap) -#define __flatbuffers_sort_vector_field(N, NK, T, t)\ -{ T ## _mutable_vec_t v__tmp = (T ## _mutable_vec_t) N ## _ ## NK ## _get(t);\ - if (v__tmp) T ## _vec_sort(v__tmp); } -#define __flatbuffers_sort_table_field(N, NK, T, t)\ -{ T ## _sort((T ## _mutable_table_t)N ## _ ## NK ## _get(t)); } -#define __flatbuffers_sort_union_field(N, NK, T, t)\ -{ T ## _sort(T ## _mutable_union_cast(N ## _ ## NK ## _union(t))); } -#define __flatbuffers_sort_table_vector_field_elements(N, NK, T, t)\ -{ T ## _vec_t v__tmp = N ## _ ## NK ## _get(t); size_t i__tmp, n__tmp;\ - n__tmp = T ## _vec_len(v__tmp); for (i__tmp = 0; i__tmp < n__tmp; ++i__tmp) {\ - T ## _sort((T ## _mutable_table_t)T ## _vec_at(v__tmp, i__tmp)); }} -#define __flatbuffers_sort_union_vector_field_elements(N, NK, T, t)\ -{ T ## _union_vec_t v__tmp = N ## _ ## NK ## _union(t); size_t i__tmp, n__tmp;\ - n__tmp = T ## _union_vec_len(v__tmp); for (i__tmp = 0; i__tmp < n__tmp; ++i__tmp) {\ - T ## _sort(T ## _mutable_union_cast(T ## _union_vec_at(v__tmp, i__tmp))); }} -#define __flatbuffers_define_scalar_vector(N, T)\ -typedef const T *N ## _vec_t;\ -typedef T *N ## _mutable_vec_t;\ -__flatbuffers_define_scalar_vec_len(N)\ -__flatbuffers_define_scalar_vec_at(N, T)\ -__flatbuffers_define_scalar_find(N, T)\ -__flatbuffers_define_scalar_scan(N, T)\ -__flatbuffers_define_scalar_sort(N, T) - -#define __flatbuffers_define_integer_type(N, T, W)\ -__flatcc_define_integer_accessors(N, T, W, flatbuffers_endian)\ -__flatbuffers_define_scalar_vector(N, T) -__flatbuffers_define_scalar_vector(flatbuffers_bool, flatbuffers_bool_t) -__flatbuffers_define_scalar_vector(flatbuffers_char, char) -__flatbuffers_define_scalar_vector(flatbuffers_uint8, uint8_t) -__flatbuffers_define_scalar_vector(flatbuffers_int8, int8_t) -__flatbuffers_define_scalar_vector(flatbuffers_uint16, uint16_t) -__flatbuffers_define_scalar_vector(flatbuffers_int16, int16_t) -__flatbuffers_define_scalar_vector(flatbuffers_uint32, uint32_t) -__flatbuffers_define_scalar_vector(flatbuffers_int32, int32_t) -__flatbuffers_define_scalar_vector(flatbuffers_uint64, uint64_t) -__flatbuffers_define_scalar_vector(flatbuffers_int64, int64_t) -__flatbuffers_define_scalar_vector(flatbuffers_float, float) -__flatbuffers_define_scalar_vector(flatbuffers_double, double) -__flatbuffers_define_scalar_vector(flatbuffers_union_type, flatbuffers_union_type_t) -static inline size_t flatbuffers_string_vec_find(flatbuffers_string_vec_t vec, const char *s) -__flatbuffers_find_by_string_field(__flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_find_n(flatbuffers_string_vec_t vec, const char *s, size_t n) -__flatbuffers_find_by_string_n_field(__flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -static inline size_t flatbuffers_string_vec_scan(flatbuffers_string_vec_t vec, const char *s) -__flatbuffers_scan_by_string_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_scan_n(flatbuffers_string_vec_t vec, const char *s, size_t n) -__flatbuffers_scan_by_string_n_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -static inline size_t flatbuffers_string_vec_scan_ex(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s) -__flatbuffers_scan_by_string_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_scan_ex_n(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s, size_t n) -__flatbuffers_scan_by_string_n_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -static inline size_t flatbuffers_string_vec_rscan(flatbuffers_string_vec_t vec, const char *s) -__flatbuffers_rscan_by_string_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_rscan_n(flatbuffers_string_vec_t vec, const char *s, size_t n) -__flatbuffers_rscan_by_string_n_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -static inline size_t flatbuffers_string_vec_rscan_ex(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s) -__flatbuffers_rscan_by_string_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s) -static inline size_t flatbuffers_string_vec_rscan_ex_n(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s, size_t n) -__flatbuffers_rscan_by_string_n_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n) -__flatbuffers_define_string_sort() -#define __flatbuffers_define_struct_scalar_fixed_array_field(N, NK, TK, T, L)\ -static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp, size_t i__tmp)\ -{ if (!t__tmp || i__tmp >= L) return 0;\ - return __flatbuffers_read_scalar(TK, &(t__tmp->NK[i__tmp])); }\ -static inline const T *N ## _ ## NK ## _get_ptr(N ## _struct_t t__tmp)\ -{ return t__tmp ? t__tmp->NK : 0; }\ -static inline size_t N ## _ ## NK ## _get_len(void) { return L; }\ -static inline T N ## _ ## NK (N ## _struct_t t__tmp, size_t i__tmp)\ -{ return N ## _ ## NK ## _get(t__tmp, i__tmp); } -#define __flatbuffers_define_struct_struct_fixed_array_field(N, NK, T, L)\ -static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp, size_t i__tmp)\ -{ if (!t__tmp || i__tmp >= L) return 0; return t__tmp->NK + i__tmp; }static inline T N ## _ ## NK ## _get_ptr(N ## _struct_t t__tmp)\ -{ return t__tmp ? t__tmp->NK : 0; }\ -static inline size_t N ## _ ## NK ## _get_len(void) { return L; }\ -static inline T N ## _ ## NK(N ## _struct_t t__tmp, size_t i__tmp)\ -{ if (!t__tmp || i__tmp >= L) return 0; return t__tmp->NK + i__tmp; } -#define __flatbuffers_define_struct_scalar_field(N, NK, TK, T)\ -static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp)\ -{ return t__tmp ? __flatbuffers_read_scalar(TK, &(t__tmp->NK)) : 0; }\ -static inline const T *N ## _ ## NK ## _get_ptr(N ## _struct_t t__tmp)\ -{ return t__tmp ? &(t__tmp->NK) : 0; }\ -static inline T N ## _ ## NK (N ## _struct_t t__tmp)\ -{ return t__tmp ? __flatbuffers_read_scalar(TK, &(t__tmp->NK)) : 0; }\ -__flatbuffers_define_scan_by_scalar_field(N, NK, T) -#define __flatbuffers_define_struct_struct_field(N, NK, T)\ -static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp) { return t__tmp ? &(t__tmp->NK) : 0; }\ -static inline T N ## _ ## NK (N ## _struct_t t__tmp) { return t__tmp ? &(t__tmp->NK) : 0; } -/* If fid is null, the function returns true without testing as buffer is not expected to have any id. */ -static inline int flatbuffers_has_identifier(const void *buffer, const char *fid) -{ flatbuffers_thash_t id, id2 = 0; if (fid == 0) { return 1; }; - id2 = flatbuffers_type_hash_from_string(fid); - id = __flatbuffers_thash_read_from_pe(((flatbuffers_uoffset_t *)buffer) + 1); - return id2 == 0 || id == id2; } -static inline int flatbuffers_has_type_hash(const void *buffer, flatbuffers_thash_t thash) -{ return thash == 0 || (__flatbuffers_thash_read_from_pe((flatbuffers_uoffset_t *)buffer + 1) == thash); } - -static inline flatbuffers_thash_t flatbuffers_get_type_hash(const void *buffer) -{ return __flatbuffers_thash_read_from_pe((flatbuffers_uoffset_t *)buffer + 1); } - -#define flatbuffers_verify_endian() flatbuffers_has_identifier("\x00\x00\x00\x00" "1234", "1234") -static inline void *flatbuffers_read_size_prefix(void *b, size_t *size_out) -{ if (size_out) { *size_out = (size_t)__flatbuffers_uoffset_read_from_pe(b); } - return (uint8_t *)b + sizeof(flatbuffers_uoffset_t); } -/* Null file identifier accepts anything, otherwise fid should be 4 characters. */ -#define __flatbuffers_read_root(T, K, buffer, fid)\ - ((!buffer || !flatbuffers_has_identifier(buffer, fid)) ? 0 :\ - ((T ## _ ## K ## t)(((uint8_t *)buffer) +\ - __flatbuffers_uoffset_read_from_pe(buffer)))) -#define __flatbuffers_read_typed_root(T, K, buffer, thash)\ - ((!buffer || !flatbuffers_has_type_hash(buffer, thash)) ? 0 :\ - ((T ## _ ## K ## t)(((uint8_t *)buffer) +\ - __flatbuffers_uoffset_read_from_pe(buffer)))) -#define __flatbuffers_nested_buffer_as_root(C, N, T, K)\ -static inline T ## _ ## K ## t C ## _ ## N ## _as_root_with_identifier(C ## _ ## table_t t__tmp, const char *fid__tmp)\ -{ const uint8_t *buffer__tmp = C ## _ ## N(t__tmp); return __flatbuffers_read_root(T, K, buffer__tmp, fid__tmp); }\ -static inline T ## _ ## K ## t C ## _ ## N ## _as_typed_root(C ## _ ## table_t t__tmp)\ -{ const uint8_t *buffer__tmp = C ## _ ## N(t__tmp); return __flatbuffers_read_root(T, K, buffer__tmp, C ## _ ## type_identifier); }\ -static inline T ## _ ## K ## t C ## _ ## N ## _as_root(C ## _ ## table_t t__tmp)\ -{ const char *fid__tmp = T ## _file_identifier;\ - const uint8_t *buffer__tmp = C ## _ ## N(t__tmp); return __flatbuffers_read_root(T, K, buffer__tmp, fid__tmp); } -#define __flatbuffers_buffer_as_root(N, K)\ -static inline N ## _ ## K ## t N ## _as_root_with_identifier(const void *buffer__tmp, const char *fid__tmp)\ -{ return __flatbuffers_read_root(N, K, buffer__tmp, fid__tmp); }\ -static inline N ## _ ## K ## t N ## _as_root_with_type_hash(const void *buffer__tmp, flatbuffers_thash_t thash__tmp)\ -{ return __flatbuffers_read_typed_root(N, K, buffer__tmp, thash__tmp); }\ -static inline N ## _ ## K ## t N ## _as_root(const void *buffer__tmp)\ -{ const char *fid__tmp = N ## _file_identifier;\ - return __flatbuffers_read_root(N, K, buffer__tmp, fid__tmp); }\ -static inline N ## _ ## K ## t N ## _as_typed_root(const void *buffer__tmp)\ -{ return __flatbuffers_read_typed_root(N, K, buffer__tmp, N ## _type_hash); } -#define __flatbuffers_struct_as_root(N) __flatbuffers_buffer_as_root(N, struct_) -#define __flatbuffers_table_as_root(N) __flatbuffers_buffer_as_root(N, table_) - -#include "flatcc_epilogue.h" -#endif /* FLATBUFFERS_COMMON_H */ diff --git a/nostrdb/src/bindings/c/meta_builder.h b/nostrdb/src/bindings/c/meta_builder.h deleted file mode 100644 index ad850bd53f..0000000000 --- a/nostrdb/src/bindings/c/meta_builder.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef META_BUILDER_H -#define META_BUILDER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#ifndef META_READER_H -#include "meta_reader.h" -#endif -#ifndef FLATBUFFERS_COMMON_BUILDER_H -#include "flatbuffers_common_builder.h" -#endif -#include "flatcc_prologue.h" -#ifndef flatbuffers_identifier -#define flatbuffers_identifier 0 -#endif -#ifndef flatbuffers_extension -#define flatbuffers_extension "bin" -#endif - -static const flatbuffers_voffset_t __NdbEventMeta_required[] = { 0 }; -typedef flatbuffers_ref_t NdbEventMeta_ref_t; -static NdbEventMeta_ref_t NdbEventMeta_clone(flatbuffers_builder_t *B, NdbEventMeta_table_t t); -__flatbuffers_build_table(flatbuffers_, NdbEventMeta, 6) - -#define __NdbEventMeta_formal_args ,\ - int32_t v0, int32_t v1, int32_t v2, int32_t v3, int32_t v4, int64_t v5 -#define __NdbEventMeta_call_args ,\ - v0, v1, v2, v3, v4, v5 -static inline NdbEventMeta_ref_t NdbEventMeta_create(flatbuffers_builder_t *B __NdbEventMeta_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, NdbEventMeta, NdbEventMeta_file_identifier, NdbEventMeta_type_identifier) - -__flatbuffers_build_scalar_field(0, flatbuffers_, NdbEventMeta_received_at, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), NdbEventMeta) -__flatbuffers_build_scalar_field(1, flatbuffers_, NdbEventMeta_reactions, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), NdbEventMeta) -__flatbuffers_build_scalar_field(2, flatbuffers_, NdbEventMeta_quotes, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), NdbEventMeta) -__flatbuffers_build_scalar_field(3, flatbuffers_, NdbEventMeta_reposts, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), NdbEventMeta) -__flatbuffers_build_scalar_field(4, flatbuffers_, NdbEventMeta_zaps, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), NdbEventMeta) -__flatbuffers_build_scalar_field(5, flatbuffers_, NdbEventMeta_zap_total, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), NdbEventMeta) - -static inline NdbEventMeta_ref_t NdbEventMeta_create(flatbuffers_builder_t *B __NdbEventMeta_formal_args) -{ - if (NdbEventMeta_start(B) - || NdbEventMeta_zap_total_add(B, v5) - || NdbEventMeta_received_at_add(B, v0) - || NdbEventMeta_reactions_add(B, v1) - || NdbEventMeta_quotes_add(B, v2) - || NdbEventMeta_reposts_add(B, v3) - || NdbEventMeta_zaps_add(B, v4)) { - return 0; - } - return NdbEventMeta_end(B); -} - -static NdbEventMeta_ref_t NdbEventMeta_clone(flatbuffers_builder_t *B, NdbEventMeta_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (NdbEventMeta_start(B) - || NdbEventMeta_zap_total_pick(B, t) - || NdbEventMeta_received_at_pick(B, t) - || NdbEventMeta_reactions_pick(B, t) - || NdbEventMeta_quotes_pick(B, t) - || NdbEventMeta_reposts_pick(B, t) - || NdbEventMeta_zaps_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, NdbEventMeta_end(B)); -} - -#include "flatcc_epilogue.h" -#endif /* META_BUILDER_H */ diff --git a/nostrdb/src/bindings/c/meta_json_parser.h b/nostrdb/src/bindings/c/meta_json_parser.h deleted file mode 100644 index 44fa6bd3e2..0000000000 --- a/nostrdb/src/bindings/c/meta_json_parser.h +++ /dev/null @@ -1,250 +0,0 @@ -#ifndef META_JSON_PARSER_H -#define META_JSON_PARSER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#include "flatcc/flatcc_json_parser.h" -#include "flatcc/flatcc_prologue.h" - -/* - * Parses the default root table or struct of the schema and constructs a FlatBuffer. - * - * Builder `B` must be initialized. `ctx` can be null but will hold - * hold detailed error info on return when available. - * Returns 0 on success, or error code. - * `flags` : 0 by default, `flatcc_json_parser_f_skip_unknown` silently - * ignores unknown table and structs fields, and union types. - */ -static int meta_parse_json(flatcc_builder_t *B, flatcc_json_parser_t *ctx, - const char *buf, size_t bufsiz, int flags); - -static const char *NdbEventMeta_parse_json_table(flatcc_json_parser_t *ctx, const char *buf, const char *end, flatcc_builder_ref_t *result); -static const char *meta_local_json_parser_enum(flatcc_json_parser_t *ctx, const char *buf, const char *end, -int *value_type, uint64_t *value, int *aggregate); -static const char *meta_global_json_parser_enum(flatcc_json_parser_t *ctx, const char *buf, const char *end, - int *value_type, uint64_t *value, int *aggregate); - -static const char *NdbEventMeta_parse_json_table(flatcc_json_parser_t *ctx, const char *buf, const char *end, flatcc_builder_ref_t *result) -{ - int more; - void *pval; - flatcc_builder_ref_t ref, *pref; - const char *mark; - uint64_t w; - - *result = 0; - if (flatcc_builder_start_table(ctx->ctx, 6)) goto failed; - buf = flatcc_json_parser_object_start(ctx, buf, end, &more); - while (more) { - buf = flatcc_json_parser_symbol_start(ctx, buf, end); - w = flatcc_json_parser_symbol_part(buf, end); - if (w < 0x7265636569766564) { /* branch "received" */ - if ((w & 0xffffffffffff0000) == 0x71756f7465730000) { /* "quotes" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 6); - if (mark != buf) { - int32_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - meta_local_json_parser_enum, - meta_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_int32(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_int32(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != INT32_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 2, 4, 4))) goto failed; - flatbuffers_int32_write_to_pe(pval, val); - } - } else { - goto pfguard1; - } - } else { /* "quotes" */ - goto pfguard1; - } /* "quotes" */ - goto endpfguard1; -pfguard1: - if (w == 0x7265616374696f6e) { /* descend "reaction" */ - buf += 8; - w = flatcc_json_parser_symbol_part(buf, end); - if ((w & 0xff00000000000000) == 0x7300000000000000) { /* "s" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 1); - if (mark != buf) { - int32_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - meta_local_json_parser_enum, - meta_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_int32(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_int32(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != INT32_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 1, 4, 4))) goto failed; - flatbuffers_int32_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "s" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "s" */ - } else { /* descend "reaction" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* descend "reaction" */ -endpfguard1: - (void)0; - } else { /* branch "received" */ - if (w < 0x7265706f73747300) { /* branch "reposts" */ - if (w == 0x7265636569766564) { /* descend "received" */ - buf += 8; - w = flatcc_json_parser_symbol_part(buf, end); - if ((w & 0xffffff0000000000) == 0x5f61740000000000) { /* "_at" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 3); - if (mark != buf) { - int32_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - meta_local_json_parser_enum, - meta_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_int32(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_int32(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != INT32_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 0, 4, 4))) goto failed; - flatbuffers_int32_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "_at" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "_at" */ - } else { /* descend "received" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* descend "received" */ - } else { /* branch "reposts" */ - if (w < 0x7a61705f746f7461) { /* branch "zap_tota" */ - if ((w & 0xffffffffffffff00) == 0x7265706f73747300) { /* "reposts" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 7); - if (mark != buf) { - int32_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - meta_local_json_parser_enum, - meta_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_int32(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_int32(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != INT32_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 3, 4, 4))) goto failed; - flatbuffers_int32_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "reposts" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "reposts" */ - } else { /* branch "zap_tota" */ - if (w == 0x7a61705f746f7461) { /* descend "zap_tota" */ - buf += 8; - w = flatcc_json_parser_symbol_part(buf, end); - if ((w & 0xff00000000000000) == 0x6c00000000000000) { /* "l" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 1); - if (mark != buf) { - int64_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - meta_local_json_parser_enum, - meta_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_int64(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_int64(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != INT64_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 5, 8, 8))) goto failed; - flatbuffers_int64_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "l" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "l" */ - } else { /* descend "zap_tota" */ - if ((w & 0xffffffff00000000) == 0x7a61707300000000) { /* "zaps" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 4); - if (mark != buf) { - int32_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - meta_local_json_parser_enum, - meta_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_int32(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_int32(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != INT32_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 4, 4, 4))) goto failed; - flatbuffers_int32_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "zaps" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "zaps" */ - } /* descend "zap_tota" */ - } /* branch "zap_tota" */ - } /* branch "reposts" */ - } /* branch "received" */ - buf = flatcc_json_parser_object_end(ctx, buf, end, &more); - } - if (ctx->error) goto failed; - if (!(*result = flatcc_builder_end_table(ctx->ctx))) goto failed; - return buf; -failed: - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_runtime); -} - -static inline int NdbEventMeta_parse_json_as_root(flatcc_builder_t *B, flatcc_json_parser_t *ctx, const char *buf, size_t bufsiz, int flags, const char *fid) -{ - return flatcc_json_parser_table_as_root(B, ctx, buf, bufsiz, flags, fid, NdbEventMeta_parse_json_table); -} - -static const char *meta_local_json_parser_enum(flatcc_json_parser_t *ctx, const char *buf, const char *end, - int *value_type, uint64_t *value, int *aggregate) -{ - /* Scope has no enum / union types to look up. */ - return buf; /* unmatched; */ -} - -static const char *meta_global_json_parser_enum(flatcc_json_parser_t *ctx, const char *buf, const char *end, - int *value_type, uint64_t *value, int *aggregate) -{ - /* Global scope has no enum / union types to look up. */ - return buf; /* unmatched; */ -} - -static int meta_parse_json(flatcc_builder_t *B, flatcc_json_parser_t *ctx, - const char *buf, size_t bufsiz, int flags) -{ - flatcc_json_parser_t parser; - flatcc_builder_ref_t root; - - ctx = ctx ? ctx : &parser; - flatcc_json_parser_init(ctx, B, buf, buf + bufsiz, flags); - if (flatcc_builder_start_buffer(B, 0, 0, 0)) return -1; - NdbEventMeta_parse_json_table(ctx, buf, buf + bufsiz, &root); - if (ctx->error) { - return ctx->error; - } - if (!flatcc_builder_end_buffer(B, root)) return -1; - ctx->end_loc = buf; - return 0; -} - -#include "flatcc/flatcc_epilogue.h" -#endif /* META_JSON_PARSER_H */ diff --git a/nostrdb/src/bindings/c/meta_reader.h b/nostrdb/src/bindings/c/meta_reader.h deleted file mode 100644 index 90f2223eed..0000000000 --- a/nostrdb/src/bindings/c/meta_reader.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef META_READER_H -#define META_READER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#ifndef FLATBUFFERS_COMMON_READER_H -#include "flatbuffers_common_reader.h" -#endif -#include "flatcc_flatbuffers.h" -#ifndef __alignas_is_defined -#include -#endif -#include "flatcc_prologue.h" -#ifndef flatbuffers_identifier -#define flatbuffers_identifier 0 -#endif -#ifndef flatbuffers_extension -#define flatbuffers_extension "bin" -#endif - - -typedef const struct NdbEventMeta_table *NdbEventMeta_table_t; -typedef struct NdbEventMeta_table *NdbEventMeta_mutable_table_t; -typedef const flatbuffers_uoffset_t *NdbEventMeta_vec_t; -typedef flatbuffers_uoffset_t *NdbEventMeta_mutable_vec_t; -#ifndef NdbEventMeta_file_identifier -#define NdbEventMeta_file_identifier 0 -#endif -/* deprecated, use NdbEventMeta_file_identifier */ -#ifndef NdbEventMeta_identifier -#define NdbEventMeta_identifier 0 -#endif -#define NdbEventMeta_type_hash ((flatbuffers_thash_t)0xa8c23be8) -#define NdbEventMeta_type_identifier "\xe8\x3b\xc2\xa8" -#ifndef NdbEventMeta_file_extension -#define NdbEventMeta_file_extension "bin" -#endif - - - -struct NdbEventMeta_table { uint8_t unused__; }; - -static inline size_t NdbEventMeta_vec_len(NdbEventMeta_vec_t vec) -__flatbuffers_vec_len(vec) -static inline NdbEventMeta_table_t NdbEventMeta_vec_at(NdbEventMeta_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(NdbEventMeta_table_t, vec, i, 0) -__flatbuffers_table_as_root(NdbEventMeta) - -__flatbuffers_define_scalar_field(0, NdbEventMeta, received_at, flatbuffers_int32, int32_t, INT32_C(0)) -__flatbuffers_define_scalar_field(1, NdbEventMeta, reactions, flatbuffers_int32, int32_t, INT32_C(0)) -__flatbuffers_define_scalar_field(2, NdbEventMeta, quotes, flatbuffers_int32, int32_t, INT32_C(0)) -__flatbuffers_define_scalar_field(3, NdbEventMeta, reposts, flatbuffers_int32, int32_t, INT32_C(0)) -__flatbuffers_define_scalar_field(4, NdbEventMeta, zaps, flatbuffers_int32, int32_t, INT32_C(0)) -__flatbuffers_define_scalar_field(5, NdbEventMeta, zap_total, flatbuffers_int64, int64_t, INT64_C(0)) - - -#include "flatcc_epilogue.h" -#endif /* META_READER_H */ diff --git a/nostrdb/src/bindings/c/meta_verifier.h b/nostrdb/src/bindings/c/meta_verifier.h deleted file mode 100644 index f1a52537a0..0000000000 --- a/nostrdb/src/bindings/c/meta_verifier.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef META_VERIFIER_H -#define META_VERIFIER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#ifndef META_READER_H -#include "meta_reader.h" -#endif -#include "flatcc/flatcc_verifier.h" -#include "flatcc/flatcc_prologue.h" - -static int NdbEventMeta_verify_table(flatcc_table_verifier_descriptor_t *td); - -static int NdbEventMeta_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_field(td, 0, 4, 4) /* received_at */)) return ret; - if ((ret = flatcc_verify_field(td, 1, 4, 4) /* reactions */)) return ret; - if ((ret = flatcc_verify_field(td, 2, 4, 4) /* quotes */)) return ret; - if ((ret = flatcc_verify_field(td, 3, 4, 4) /* reposts */)) return ret; - if ((ret = flatcc_verify_field(td, 4, 4, 4) /* zaps */)) return ret; - if ((ret = flatcc_verify_field(td, 5, 8, 8) /* zap_total */)) return ret; - return flatcc_verify_ok; -} - -static inline int NdbEventMeta_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, NdbEventMeta_identifier, &NdbEventMeta_verify_table); -} - -static inline int NdbEventMeta_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, NdbEventMeta_type_identifier, &NdbEventMeta_verify_table); -} - -static inline int NdbEventMeta_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &NdbEventMeta_verify_table); -} - -static inline int NdbEventMeta_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &NdbEventMeta_verify_table); -} - -#include "flatcc/flatcc_epilogue.h" -#endif /* META_VERIFIER_H */ diff --git a/nostrdb/src/bindings/c/profile_builder.h b/nostrdb/src/bindings/c/profile_builder.h deleted file mode 100644 index 97341d552e..0000000000 --- a/nostrdb/src/bindings/c/profile_builder.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef PROFILE_BUILDER_H -#define PROFILE_BUILDER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#ifndef PROFILE_READER_H -#include "profile_reader.h" -#endif -#ifndef FLATBUFFERS_COMMON_BUILDER_H -#include "flatbuffers_common_builder.h" -#endif -#include "flatcc_prologue.h" -#ifndef flatbuffers_identifier -#define flatbuffers_identifier 0 -#endif -#ifndef flatbuffers_extension -#define flatbuffers_extension "bin" -#endif - -static const flatbuffers_voffset_t __NdbProfile_required[] = { 0 }; -typedef flatbuffers_ref_t NdbProfile_ref_t; -static NdbProfile_ref_t NdbProfile_clone(flatbuffers_builder_t *B, NdbProfile_table_t t); -__flatbuffers_build_table(flatbuffers_, NdbProfile, 12) - -static const flatbuffers_voffset_t __NdbProfileRecord_required[] = { 0 }; -typedef flatbuffers_ref_t NdbProfileRecord_ref_t; -static NdbProfileRecord_ref_t NdbProfileRecord_clone(flatbuffers_builder_t *B, NdbProfileRecord_table_t t); -__flatbuffers_build_table(flatbuffers_, NdbProfileRecord, 4) - -#define __NdbProfile_formal_args ,\ - flatbuffers_string_ref_t v0, flatbuffers_string_ref_t v1, flatbuffers_string_ref_t v2, flatbuffers_string_ref_t v3,\ - flatbuffers_string_ref_t v4, flatbuffers_string_ref_t v5, flatbuffers_bool_t v6, flatbuffers_string_ref_t v7,\ - flatbuffers_string_ref_t v8, int32_t v9, int32_t v10, flatbuffers_string_ref_t v11 -#define __NdbProfile_call_args ,\ - v0, v1, v2, v3,\ - v4, v5, v6, v7,\ - v8, v9, v10, v11 -static inline NdbProfile_ref_t NdbProfile_create(flatbuffers_builder_t *B __NdbProfile_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, NdbProfile, NdbProfile_file_identifier, NdbProfile_type_identifier) - -#define __NdbProfileRecord_formal_args , NdbProfile_ref_t v0, uint64_t v1, uint64_t v2, flatbuffers_string_ref_t v3 -#define __NdbProfileRecord_call_args , v0, v1, v2, v3 -static inline NdbProfileRecord_ref_t NdbProfileRecord_create(flatbuffers_builder_t *B __NdbProfileRecord_formal_args); -__flatbuffers_build_table_prolog(flatbuffers_, NdbProfileRecord, NdbProfileRecord_file_identifier, NdbProfileRecord_type_identifier) - -__flatbuffers_build_string_field(0, flatbuffers_, NdbProfile_name, NdbProfile) -__flatbuffers_build_string_field(1, flatbuffers_, NdbProfile_website, NdbProfile) -__flatbuffers_build_string_field(2, flatbuffers_, NdbProfile_about, NdbProfile) -__flatbuffers_build_string_field(3, flatbuffers_, NdbProfile_lud16, NdbProfile) -__flatbuffers_build_string_field(4, flatbuffers_, NdbProfile_banner, NdbProfile) -__flatbuffers_build_string_field(5, flatbuffers_, NdbProfile_display_name, NdbProfile) -__flatbuffers_build_scalar_field(6, flatbuffers_, NdbProfile_reactions, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(1), NdbProfile) -__flatbuffers_build_string_field(7, flatbuffers_, NdbProfile_picture, NdbProfile) -__flatbuffers_build_string_field(8, flatbuffers_, NdbProfile_nip05, NdbProfile) -__flatbuffers_build_scalar_field(9, flatbuffers_, NdbProfile_damus_donation, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), NdbProfile) -__flatbuffers_build_scalar_field(10, flatbuffers_, NdbProfile_damus_donation_v2, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), NdbProfile) -__flatbuffers_build_string_field(11, flatbuffers_, NdbProfile_lud06, NdbProfile) - -static inline NdbProfile_ref_t NdbProfile_create(flatbuffers_builder_t *B __NdbProfile_formal_args) -{ - if (NdbProfile_start(B) - || NdbProfile_name_add(B, v0) - || NdbProfile_website_add(B, v1) - || NdbProfile_about_add(B, v2) - || NdbProfile_lud16_add(B, v3) - || NdbProfile_banner_add(B, v4) - || NdbProfile_display_name_add(B, v5) - || NdbProfile_picture_add(B, v7) - || NdbProfile_nip05_add(B, v8) - || NdbProfile_damus_donation_add(B, v9) - || NdbProfile_damus_donation_v2_add(B, v10) - || NdbProfile_lud06_add(B, v11) - || NdbProfile_reactions_add(B, v6)) { - return 0; - } - return NdbProfile_end(B); -} - -static NdbProfile_ref_t NdbProfile_clone(flatbuffers_builder_t *B, NdbProfile_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (NdbProfile_start(B) - || NdbProfile_name_pick(B, t) - || NdbProfile_website_pick(B, t) - || NdbProfile_about_pick(B, t) - || NdbProfile_lud16_pick(B, t) - || NdbProfile_banner_pick(B, t) - || NdbProfile_display_name_pick(B, t) - || NdbProfile_picture_pick(B, t) - || NdbProfile_nip05_pick(B, t) - || NdbProfile_damus_donation_pick(B, t) - || NdbProfile_damus_donation_v2_pick(B, t) - || NdbProfile_lud06_pick(B, t) - || NdbProfile_reactions_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, NdbProfile_end(B)); -} - -__flatbuffers_build_table_field(0, flatbuffers_, NdbProfileRecord_profile, NdbProfile, NdbProfileRecord) -__flatbuffers_build_scalar_field(1, flatbuffers_, NdbProfileRecord_received_at, flatbuffers_uint64, uint64_t, 8, 8, UINT64_C(0), NdbProfileRecord) -__flatbuffers_build_scalar_field(2, flatbuffers_, NdbProfileRecord_note_key, flatbuffers_uint64, uint64_t, 8, 8, UINT64_C(0), NdbProfileRecord) -__flatbuffers_build_string_field(3, flatbuffers_, NdbProfileRecord_lnurl, NdbProfileRecord) - -static inline NdbProfileRecord_ref_t NdbProfileRecord_create(flatbuffers_builder_t *B __NdbProfileRecord_formal_args) -{ - if (NdbProfileRecord_start(B) - || NdbProfileRecord_received_at_add(B, v1) - || NdbProfileRecord_note_key_add(B, v2) - || NdbProfileRecord_profile_add(B, v0) - || NdbProfileRecord_lnurl_add(B, v3)) { - return 0; - } - return NdbProfileRecord_end(B); -} - -static NdbProfileRecord_ref_t NdbProfileRecord_clone(flatbuffers_builder_t *B, NdbProfileRecord_table_t t) -{ - __flatbuffers_memoize_begin(B, t); - if (NdbProfileRecord_start(B) - || NdbProfileRecord_received_at_pick(B, t) - || NdbProfileRecord_note_key_pick(B, t) - || NdbProfileRecord_profile_pick(B, t) - || NdbProfileRecord_lnurl_pick(B, t)) { - return 0; - } - __flatbuffers_memoize_end(B, t, NdbProfileRecord_end(B)); -} - -#include "flatcc_epilogue.h" -#endif /* PROFILE_BUILDER_H */ diff --git a/nostrdb/src/bindings/c/profile_json_parser.h b/nostrdb/src/bindings/c/profile_json_parser.h deleted file mode 100644 index 5c33a7442b..0000000000 --- a/nostrdb/src/bindings/c/profile_json_parser.h +++ /dev/null @@ -1,412 +0,0 @@ -#ifndef PROFILE_JSON_PARSER_H -#define PROFILE_JSON_PARSER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#include "flatcc_json_parser.h" -#include "flatcc_prologue.h" - -/* - * Parses the default root table or struct of the schema and constructs a FlatBuffer. - * - * Builder `B` must be initialized. `ctx` can be null but will hold - * hold detailed error info on return when available. - * Returns 0 on success, or error code. - * `flags` : 0 by default, `flatcc_json_parser_f_skip_unknown` silently - * ignores unknown table and structs fields, and union types. - */ -static int profile_parse_json(flatcc_builder_t *B, flatcc_json_parser_t *ctx, - const char *buf, size_t bufsiz, int flags); - -static const char *NdbProfile_parse_json_table(flatcc_json_parser_t *ctx, const char *buf, const char *end, flatcc_builder_ref_t *result); -static const char *NdbProfileRecord_parse_json_table(flatcc_json_parser_t *ctx, const char *buf, const char *end, flatcc_builder_ref_t *result); -static const char *profile_local_json_parser_enum(flatcc_json_parser_t *ctx, const char *buf, const char *end, -int *value_type, uint64_t *value, int *aggregate); -static const char *profile_global_json_parser_enum(flatcc_json_parser_t *ctx, const char *buf, const char *end, - int *value_type, uint64_t *value, int *aggregate); - -static const char *NdbProfile_parse_json_table(flatcc_json_parser_t *ctx, const char *buf, const char *end, flatcc_builder_ref_t *result) -{ - int more; - void *pval; - flatcc_builder_ref_t ref, *pref; - const char *mark; - uint64_t w; - - *result = 0; - if (flatcc_builder_start_table(ctx->ctx, 12)) goto failed; - buf = flatcc_json_parser_object_start(ctx, buf, end, &more); - while (more) { - buf = flatcc_json_parser_symbol_start(ctx, buf, end); - w = flatcc_json_parser_symbol_part(buf, end); - if (w < 0x6c75643036000000) { /* branch "lud06" */ - if (w < 0x64616d75735f646f) { /* branch "damus_do" */ - if ((w & 0xffffffffffff0000) == 0x62616e6e65720000) { /* "banner" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 6); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 4))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "banner" */ - if ((w & 0xffffffffff000000) == 0x61626f7574000000) { /* "about" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 5); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 2))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "about" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "about" */ - } /* "banner" */ - } else { /* branch "damus_do" */ - if (w == 0x64616d75735f646f) { /* descend "damus_do" */ - buf += 8; - w = flatcc_json_parser_symbol_part(buf, end); - if (w == 0x6e6174696f6e5f76) { /* descend "nation_v" */ - buf += 8; - w = flatcc_json_parser_symbol_part(buf, end); - if ((w & 0xff00000000000000) == 0x3200000000000000) { /* "2" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 1); - if (mark != buf) { - int32_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - profile_local_json_parser_enum, - profile_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_int32(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_int32(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != INT32_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 10, 4, 4))) goto failed; - flatbuffers_int32_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "2" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "2" */ - } else { /* descend "nation_v" */ - if ((w & 0xffffffffffff0000) == 0x6e6174696f6e0000) { /* "nation" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 6); - if (mark != buf) { - int32_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - profile_local_json_parser_enum, - profile_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_int32(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_int32(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != INT32_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 9, 4, 4))) goto failed; - flatbuffers_int32_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "nation" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "nation" */ - } /* descend "nation_v" */ - } else { /* descend "damus_do" */ - if (w == 0x646973706c61795f) { /* descend "display_" */ - buf += 8; - w = flatcc_json_parser_symbol_part(buf, end); - if ((w & 0xffffffff00000000) == 0x6e616d6500000000) { /* "name" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 4); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 5))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "name" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "name" */ - } else { /* descend "display_" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* descend "display_" */ - } /* descend "damus_do" */ - } /* branch "damus_do" */ - } else { /* branch "lud06" */ - if (w < 0x6e69703035000000) { /* branch "nip05" */ - if (w < 0x6c75643136000000) { /* branch "lud16" */ - if ((w & 0xffffffffff000000) == 0x6c75643036000000) { /* "lud06" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 5); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 11))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "lud06" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "lud06" */ - } else { /* branch "lud16" */ - if ((w & 0xffffffff00000000) == 0x6e616d6500000000) { /* "name" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 4); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 0))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "name" */ - if ((w & 0xffffffffff000000) == 0x6c75643136000000) { /* "lud16" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 5); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 3))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "lud16" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "lud16" */ - } /* "name" */ - } /* branch "lud16" */ - } else { /* branch "nip05" */ - if (w < 0x7069637475726500) { /* branch "picture" */ - if ((w & 0xffffffffff000000) == 0x6e69703035000000) { /* "nip05" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 5); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 8))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "nip05" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "nip05" */ - } else { /* branch "picture" */ - if (w < 0x7265616374696f6e) { /* branch "reaction" */ - if ((w & 0xffffffffffffff00) == 0x7069637475726500) { /* "picture" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 7); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 7))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "picture" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "picture" */ - } else { /* branch "reaction" */ - if (w == 0x7265616374696f6e) { /* descend "reaction" */ - buf += 8; - w = flatcc_json_parser_symbol_part(buf, end); - if ((w & 0xff00000000000000) == 0x7300000000000000) { /* "s" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 1); - if (mark != buf) { - uint8_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - profile_local_json_parser_enum, - profile_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_bool(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_bool(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != UINT8_C(1) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 6, 1, 1))) goto failed; - flatbuffers_bool_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "s" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "s" */ - } else { /* descend "reaction" */ - if ((w & 0xffffffffffffff00) == 0x7765627369746500) { /* "website" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 7); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 1))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "website" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "website" */ - } /* descend "reaction" */ - } /* branch "reaction" */ - } /* branch "picture" */ - } /* branch "nip05" */ - } /* branch "lud06" */ - buf = flatcc_json_parser_object_end(ctx, buf, end, &more); - } - if (ctx->error) goto failed; - if (!(*result = flatcc_builder_end_table(ctx->ctx))) goto failed; - return buf; -failed: - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_runtime); -} - -static inline int NdbProfile_parse_json_as_root(flatcc_builder_t *B, flatcc_json_parser_t *ctx, const char *buf, size_t bufsiz, int flags, const char *fid) -{ - return flatcc_json_parser_table_as_root(B, ctx, buf, bufsiz, flags, fid, NdbProfile_parse_json_table); -} - -static const char *NdbProfileRecord_parse_json_table(flatcc_json_parser_t *ctx, const char *buf, const char *end, flatcc_builder_ref_t *result) -{ - int more; - void *pval; - flatcc_builder_ref_t ref, *pref; - const char *mark; - uint64_t w; - - *result = 0; - if (flatcc_builder_start_table(ctx->ctx, 4)) goto failed; - buf = flatcc_json_parser_object_start(ctx, buf, end, &more); - while (more) { - buf = flatcc_json_parser_symbol_start(ctx, buf, end); - w = flatcc_json_parser_symbol_part(buf, end); - if (w < 0x6e6f74655f6b6579) { /* branch "note_key" */ - if ((w & 0xffffffffff000000) == 0x6c6e75726c000000) { /* "lnurl" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 5); - if (mark != buf) { - buf = flatcc_json_parser_build_string(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 3))) goto failed; - *pref = ref; - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "lnurl" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "lnurl" */ - } else { /* branch "note_key" */ - if (w < 0x70726f66696c6500) { /* branch "profile" */ - if (w == 0x6e6f74655f6b6579) { /* "note_key" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 8); - if (mark != buf) { - uint64_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - profile_local_json_parser_enum, - profile_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_uint64(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_uint64(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != UINT64_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 2, 8, 8))) goto failed; - flatbuffers_uint64_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "note_key" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "note_key" */ - } else { /* branch "profile" */ - if ((w & 0xffffffffffffff00) == 0x70726f66696c6500) { /* "profile" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 7); - if (mark != buf) { - buf = NdbProfile_parse_json_table(ctx, buf, end, &ref); - if (!ref || !(pref = flatcc_builder_table_add_offset(ctx->ctx, 0))) goto failed; - *pref = ref; - } else { - goto pfguard1; - } - } else { /* "profile" */ - goto pfguard1; - } /* "profile" */ - goto endpfguard1; -pfguard1: - if (w == 0x7265636569766564) { /* descend "received" */ - buf += 8; - w = flatcc_json_parser_symbol_part(buf, end); - if ((w & 0xffffff0000000000) == 0x5f61740000000000) { /* "_at" */ - buf = flatcc_json_parser_match_symbol(ctx, (mark = buf), end, 3); - if (mark != buf) { - uint64_t val = 0; - static flatcc_json_parser_integral_symbol_f *symbolic_parsers[] = { - profile_local_json_parser_enum, - profile_global_json_parser_enum, 0 }; - buf = flatcc_json_parser_uint64(ctx, (mark = buf), end, &val); - if (mark == buf) { - buf = flatcc_json_parser_symbolic_uint64(ctx, (mark = buf), end, symbolic_parsers, &val); - if (buf == mark || buf == end) goto failed; - } - if (val != UINT64_C(0) || (ctx->flags & flatcc_json_parser_f_force_add)) { - if (!(pval = flatcc_builder_table_add(ctx->ctx, 1, 8, 8))) goto failed; - flatbuffers_uint64_write_to_pe(pval, val); - } - } else { - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } - } else { /* "_at" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* "_at" */ - } else { /* descend "received" */ - buf = flatcc_json_parser_unmatched_symbol(ctx, buf, end); - } /* descend "received" */ -endpfguard1: - (void)0; - } /* branch "profile" */ - } /* branch "note_key" */ - buf = flatcc_json_parser_object_end(ctx, buf, end, &more); - } - if (ctx->error) goto failed; - if (!(*result = flatcc_builder_end_table(ctx->ctx))) goto failed; - return buf; -failed: - return flatcc_json_parser_set_error(ctx, buf, end, flatcc_json_parser_error_runtime); -} - -static inline int NdbProfileRecord_parse_json_as_root(flatcc_builder_t *B, flatcc_json_parser_t *ctx, const char *buf, size_t bufsiz, int flags, const char *fid) -{ - return flatcc_json_parser_table_as_root(B, ctx, buf, bufsiz, flags, fid, NdbProfileRecord_parse_json_table); -} - -static const char *profile_local_json_parser_enum(flatcc_json_parser_t *ctx, const char *buf, const char *end, - int *value_type, uint64_t *value, int *aggregate) -{ - /* Scope has no enum / union types to look up. */ - return buf; /* unmatched; */ -} - -static const char *profile_global_json_parser_enum(flatcc_json_parser_t *ctx, const char *buf, const char *end, - int *value_type, uint64_t *value, int *aggregate) -{ - /* Global scope has no enum / union types to look up. */ - return buf; /* unmatched; */ -} - -static int profile_parse_json(flatcc_builder_t *B, flatcc_json_parser_t *ctx, - const char *buf, size_t bufsiz, int flags) -{ - flatcc_json_parser_t parser; - flatcc_builder_ref_t root; - - ctx = ctx ? ctx : &parser; - flatcc_json_parser_init(ctx, B, buf, buf + bufsiz, flags); - if (flatcc_builder_start_buffer(B, 0, 0, 0)) return -1; - NdbProfileRecord_parse_json_table(ctx, buf, buf + bufsiz, &root); - if (ctx->error) { - return ctx->error; - } - if (!flatcc_builder_end_buffer(B, root)) return -1; - ctx->end_loc = buf; - return 0; -} - -#include "flatcc_epilogue.h" -#endif /* PROFILE_JSON_PARSER_H */ diff --git a/nostrdb/src/bindings/c/profile_reader.h b/nostrdb/src/bindings/c/profile_reader.h deleted file mode 100644 index 069ec2cbc5..0000000000 --- a/nostrdb/src/bindings/c/profile_reader.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef PROFILE_READER_H -#define PROFILE_READER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#ifndef FLATBUFFERS_COMMON_READER_H -#include "flatbuffers_common_reader.h" -#endif -#include "flatcc_flatbuffers.h" -#ifndef __alignas_is_defined -#include -#endif -#include "flatcc_prologue.h" -#ifndef flatbuffers_identifier -#define flatbuffers_identifier 0 -#endif -#ifndef flatbuffers_extension -#define flatbuffers_extension "bin" -#endif - - -typedef const struct NdbProfile_table *NdbProfile_table_t; -typedef struct NdbProfile_table *NdbProfile_mutable_table_t; -typedef const flatbuffers_uoffset_t *NdbProfile_vec_t; -typedef flatbuffers_uoffset_t *NdbProfile_mutable_vec_t; -typedef const struct NdbProfileRecord_table *NdbProfileRecord_table_t; -typedef struct NdbProfileRecord_table *NdbProfileRecord_mutable_table_t; -typedef const flatbuffers_uoffset_t *NdbProfileRecord_vec_t; -typedef flatbuffers_uoffset_t *NdbProfileRecord_mutable_vec_t; -#ifndef NdbProfile_file_identifier -#define NdbProfile_file_identifier 0 -#endif -/* deprecated, use NdbProfile_file_identifier */ -#ifndef NdbProfile_identifier -#define NdbProfile_identifier 0 -#endif -#define NdbProfile_type_hash ((flatbuffers_thash_t)0xba639e28) -#define NdbProfile_type_identifier "\x28\x9e\x63\xba" -#ifndef NdbProfile_file_extension -#define NdbProfile_file_extension "bin" -#endif -#ifndef NdbProfileRecord_file_identifier -#define NdbProfileRecord_file_identifier 0 -#endif -/* deprecated, use NdbProfileRecord_file_identifier */ -#ifndef NdbProfileRecord_identifier -#define NdbProfileRecord_identifier 0 -#endif -#define NdbProfileRecord_type_hash ((flatbuffers_thash_t)0xa1a8569d) -#define NdbProfileRecord_type_identifier "\x9d\x56\xa8\xa1" -#ifndef NdbProfileRecord_file_extension -#define NdbProfileRecord_file_extension "bin" -#endif - - - -struct NdbProfile_table { uint8_t unused__; }; - -static inline size_t NdbProfile_vec_len(NdbProfile_vec_t vec) -__flatbuffers_vec_len(vec) -static inline NdbProfile_table_t NdbProfile_vec_at(NdbProfile_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(NdbProfile_table_t, vec, i, 0) -__flatbuffers_table_as_root(NdbProfile) - -__flatbuffers_define_string_field(0, NdbProfile, name, 0) -__flatbuffers_define_string_field(1, NdbProfile, website, 0) -__flatbuffers_define_string_field(2, NdbProfile, about, 0) -__flatbuffers_define_string_field(3, NdbProfile, lud16, 0) -__flatbuffers_define_string_field(4, NdbProfile, banner, 0) -__flatbuffers_define_string_field(5, NdbProfile, display_name, 0) -__flatbuffers_define_scalar_field(6, NdbProfile, reactions, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(1)) -__flatbuffers_define_string_field(7, NdbProfile, picture, 0) -__flatbuffers_define_string_field(8, NdbProfile, nip05, 0) -__flatbuffers_define_scalar_field(9, NdbProfile, damus_donation, flatbuffers_int32, int32_t, INT32_C(0)) -__flatbuffers_define_scalar_field(10, NdbProfile, damus_donation_v2, flatbuffers_int32, int32_t, INT32_C(0)) -__flatbuffers_define_string_field(11, NdbProfile, lud06, 0) - -struct NdbProfileRecord_table { uint8_t unused__; }; - -static inline size_t NdbProfileRecord_vec_len(NdbProfileRecord_vec_t vec) -__flatbuffers_vec_len(vec) -static inline NdbProfileRecord_table_t NdbProfileRecord_vec_at(NdbProfileRecord_vec_t vec, size_t i) -__flatbuffers_offset_vec_at(NdbProfileRecord_table_t, vec, i, 0) -__flatbuffers_table_as_root(NdbProfileRecord) - -__flatbuffers_define_table_field(0, NdbProfileRecord, profile, NdbProfile_table_t, 0) -__flatbuffers_define_scalar_field(1, NdbProfileRecord, received_at, flatbuffers_uint64, uint64_t, UINT64_C(0)) -__flatbuffers_define_scalar_field(2, NdbProfileRecord, note_key, flatbuffers_uint64, uint64_t, UINT64_C(0)) -__flatbuffers_define_string_field(3, NdbProfileRecord, lnurl, 0) - - -#include "flatcc_epilogue.h" -#endif /* PROFILE_READER_H */ diff --git a/nostrdb/src/bindings/c/profile_verifier.h b/nostrdb/src/bindings/c/profile_verifier.h deleted file mode 100644 index 9595ab7aa2..0000000000 --- a/nostrdb/src/bindings/c/profile_verifier.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef PROFILE_VERIFIER_H -#define PROFILE_VERIFIER_H - -/* Generated by flatcc 0.6.1 FlatBuffers schema compiler for C by dvide.com */ - -#ifndef PROFILE_READER_H -#include "profile_reader.h" -#endif -#include "flatcc_verifier.h" -#include "flatcc_prologue.h" - -static int NdbProfile_verify_table(flatcc_table_verifier_descriptor_t *td); -static int NdbProfileRecord_verify_table(flatcc_table_verifier_descriptor_t *td); - -static int NdbProfile_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_string_field(td, 0, 0) /* name */)) return ret; - if ((ret = flatcc_verify_string_field(td, 1, 0) /* website */)) return ret; - if ((ret = flatcc_verify_string_field(td, 2, 0) /* about */)) return ret; - if ((ret = flatcc_verify_string_field(td, 3, 0) /* lud16 */)) return ret; - if ((ret = flatcc_verify_string_field(td, 4, 0) /* banner */)) return ret; - if ((ret = flatcc_verify_string_field(td, 5, 0) /* display_name */)) return ret; - if ((ret = flatcc_verify_field(td, 6, 1, 1) /* reactions */)) return ret; - if ((ret = flatcc_verify_string_field(td, 7, 0) /* picture */)) return ret; - if ((ret = flatcc_verify_string_field(td, 8, 0) /* nip05 */)) return ret; - if ((ret = flatcc_verify_field(td, 9, 4, 4) /* damus_donation */)) return ret; - if ((ret = flatcc_verify_field(td, 10, 4, 4) /* damus_donation_v2 */)) return ret; - if ((ret = flatcc_verify_string_field(td, 11, 0) /* lud06 */)) return ret; - return flatcc_verify_ok; -} - -static inline int NdbProfile_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, NdbProfile_identifier, &NdbProfile_verify_table); -} - -static inline int NdbProfile_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, NdbProfile_type_identifier, &NdbProfile_verify_table); -} - -static inline int NdbProfile_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &NdbProfile_verify_table); -} - -static inline int NdbProfile_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &NdbProfile_verify_table); -} - -static int NdbProfileRecord_verify_table(flatcc_table_verifier_descriptor_t *td) -{ - int ret; - if ((ret = flatcc_verify_table_field(td, 0, 0, &NdbProfile_verify_table) /* profile */)) return ret; - if ((ret = flatcc_verify_field(td, 1, 8, 8) /* received_at */)) return ret; - if ((ret = flatcc_verify_field(td, 2, 8, 8) /* note_key */)) return ret; - if ((ret = flatcc_verify_string_field(td, 3, 0) /* lnurl */)) return ret; - return flatcc_verify_ok; -} - -static inline int NdbProfileRecord_verify_as_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, NdbProfileRecord_identifier, &NdbProfileRecord_verify_table); -} - -static inline int NdbProfileRecord_verify_as_typed_root(const void *buf, size_t bufsiz) -{ - return flatcc_verify_table_as_root(buf, bufsiz, NdbProfileRecord_type_identifier, &NdbProfileRecord_verify_table); -} - -static inline int NdbProfileRecord_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid) -{ - return flatcc_verify_table_as_root(buf, bufsiz, fid, &NdbProfileRecord_verify_table); -} - -static inline int NdbProfileRecord_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash) -{ - return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &NdbProfileRecord_verify_table); -} - -#include "flatcc_epilogue.h" -#endif /* PROFILE_VERIFIER_H */ diff --git a/nostrdb/src/bindings/rust/ndb_meta.rs b/nostrdb/src/bindings/rust/ndb_meta.rs deleted file mode 100644 index 10554dc56f..0000000000 --- a/nostrdb/src/bindings/rust/ndb_meta.rs +++ /dev/null @@ -1,264 +0,0 @@ -// automatically generated by the FlatBuffers compiler, do not modify - - -// @generated - -use core::mem; -use core::cmp::Ordering; - -extern crate flatbuffers; -use self::flatbuffers::{EndianScalar, Follow}; - -pub enum NdbEventMetaOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct NdbEventMeta<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for NdbEventMeta<'a> { - type Inner = NdbEventMeta<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> NdbEventMeta<'a> { - pub const VT_RECEIVED_AT: flatbuffers::VOffsetT = 4; - pub const VT_REACTIONS: flatbuffers::VOffsetT = 6; - pub const VT_QUOTES: flatbuffers::VOffsetT = 8; - pub const VT_REPOSTS: flatbuffers::VOffsetT = 10; - pub const VT_ZAPS: flatbuffers::VOffsetT = 12; - pub const VT_ZAP_TOTAL: flatbuffers::VOffsetT = 14; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - NdbEventMeta { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args NdbEventMetaArgs - ) -> flatbuffers::WIPOffset> { - let mut builder = NdbEventMetaBuilder::new(_fbb); - builder.add_zap_total(args.zap_total); - builder.add_zaps(args.zaps); - builder.add_reposts(args.reposts); - builder.add_quotes(args.quotes); - builder.add_reactions(args.reactions); - builder.add_received_at(args.received_at); - builder.finish() - } - - - #[inline] - pub fn received_at(&self) -> i32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbEventMeta::VT_RECEIVED_AT, Some(0)).unwrap()} - } - #[inline] - pub fn reactions(&self) -> i32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbEventMeta::VT_REACTIONS, Some(0)).unwrap()} - } - #[inline] - pub fn quotes(&self) -> i32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbEventMeta::VT_QUOTES, Some(0)).unwrap()} - } - #[inline] - pub fn reposts(&self) -> i32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbEventMeta::VT_REPOSTS, Some(0)).unwrap()} - } - #[inline] - pub fn zaps(&self) -> i32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbEventMeta::VT_ZAPS, Some(0)).unwrap()} - } - #[inline] - pub fn zap_total(&self) -> i64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbEventMeta::VT_ZAP_TOTAL, Some(0)).unwrap()} - } -} - -impl flatbuffers::Verifiable for NdbEventMeta<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::("received_at", Self::VT_RECEIVED_AT, false)? - .visit_field::("reactions", Self::VT_REACTIONS, false)? - .visit_field::("quotes", Self::VT_QUOTES, false)? - .visit_field::("reposts", Self::VT_REPOSTS, false)? - .visit_field::("zaps", Self::VT_ZAPS, false)? - .visit_field::("zap_total", Self::VT_ZAP_TOTAL, false)? - .finish(); - Ok(()) - } -} -pub struct NdbEventMetaArgs { - pub received_at: i32, - pub reactions: i32, - pub quotes: i32, - pub reposts: i32, - pub zaps: i32, - pub zap_total: i64, -} -impl<'a> Default for NdbEventMetaArgs { - #[inline] - fn default() -> Self { - NdbEventMetaArgs { - received_at: 0, - reactions: 0, - quotes: 0, - reposts: 0, - zaps: 0, - zap_total: 0, - } - } -} - -pub struct NdbEventMetaBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> NdbEventMetaBuilder<'a, 'b> { - #[inline] - pub fn add_received_at(&mut self, received_at: i32) { - self.fbb_.push_slot::(NdbEventMeta::VT_RECEIVED_AT, received_at, 0); - } - #[inline] - pub fn add_reactions(&mut self, reactions: i32) { - self.fbb_.push_slot::(NdbEventMeta::VT_REACTIONS, reactions, 0); - } - #[inline] - pub fn add_quotes(&mut self, quotes: i32) { - self.fbb_.push_slot::(NdbEventMeta::VT_QUOTES, quotes, 0); - } - #[inline] - pub fn add_reposts(&mut self, reposts: i32) { - self.fbb_.push_slot::(NdbEventMeta::VT_REPOSTS, reposts, 0); - } - #[inline] - pub fn add_zaps(&mut self, zaps: i32) { - self.fbb_.push_slot::(NdbEventMeta::VT_ZAPS, zaps, 0); - } - #[inline] - pub fn add_zap_total(&mut self, zap_total: i64) { - self.fbb_.push_slot::(NdbEventMeta::VT_ZAP_TOTAL, zap_total, 0); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> NdbEventMetaBuilder<'a, 'b> { - let start = _fbb.start_table(); - NdbEventMetaBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for NdbEventMeta<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("NdbEventMeta"); - ds.field("received_at", &self.received_at()); - ds.field("reactions", &self.reactions()); - ds.field("quotes", &self.quotes()); - ds.field("reposts", &self.reposts()); - ds.field("zaps", &self.zaps()); - ds.field("zap_total", &self.zap_total()); - ds.finish() - } -} -#[inline] -/// Verifies that a buffer of bytes contains a `NdbEventMeta` -/// and returns it. -/// Note that verification is still experimental and may not -/// catch every error, or be maximally performant. For the -/// previous, unchecked, behavior use -/// `root_as_ndb_event_meta_unchecked`. -pub fn root_as_ndb_event_meta(buf: &[u8]) -> Result { - flatbuffers::root::(buf) -} -#[inline] -/// Verifies that a buffer of bytes contains a size prefixed -/// `NdbEventMeta` and returns it. -/// Note that verification is still experimental and may not -/// catch every error, or be maximally performant. For the -/// previous, unchecked, behavior use -/// `size_prefixed_root_as_ndb_event_meta_unchecked`. -pub fn size_prefixed_root_as_ndb_event_meta(buf: &[u8]) -> Result { - flatbuffers::size_prefixed_root::(buf) -} -#[inline] -/// Verifies, with the given options, that a buffer of bytes -/// contains a `NdbEventMeta` and returns it. -/// Note that verification is still experimental and may not -/// catch every error, or be maximally performant. For the -/// previous, unchecked, behavior use -/// `root_as_ndb_event_meta_unchecked`. -pub fn root_as_ndb_event_meta_with_opts<'b, 'o>( - opts: &'o flatbuffers::VerifierOptions, - buf: &'b [u8], -) -> Result, flatbuffers::InvalidFlatbuffer> { - flatbuffers::root_with_opts::>(opts, buf) -} -#[inline] -/// Verifies, with the given verifier options, that a buffer of -/// bytes contains a size prefixed `NdbEventMeta` and returns -/// it. Note that verification is still experimental and may not -/// catch every error, or be maximally performant. For the -/// previous, unchecked, behavior use -/// `root_as_ndb_event_meta_unchecked`. -pub fn size_prefixed_root_as_ndb_event_meta_with_opts<'b, 'o>( - opts: &'o flatbuffers::VerifierOptions, - buf: &'b [u8], -) -> Result, flatbuffers::InvalidFlatbuffer> { - flatbuffers::size_prefixed_root_with_opts::>(opts, buf) -} -#[inline] -/// Assumes, without verification, that a buffer of bytes contains a NdbEventMeta and returns it. -/// # Safety -/// Callers must trust the given bytes do indeed contain a valid `NdbEventMeta`. -pub unsafe fn root_as_ndb_event_meta_unchecked(buf: &[u8]) -> NdbEventMeta { - flatbuffers::root_unchecked::(buf) -} -#[inline] -/// Assumes, without verification, that a buffer of bytes contains a size prefixed NdbEventMeta and returns it. -/// # Safety -/// Callers must trust the given bytes do indeed contain a valid size prefixed `NdbEventMeta`. -pub unsafe fn size_prefixed_root_as_ndb_event_meta_unchecked(buf: &[u8]) -> NdbEventMeta { - flatbuffers::size_prefixed_root_unchecked::(buf) -} -#[inline] -pub fn finish_ndb_event_meta_buffer<'a, 'b>( - fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, - root: flatbuffers::WIPOffset>) { - fbb.finish(root, None); -} - -#[inline] -pub fn finish_size_prefixed_ndb_event_meta_buffer<'a, 'b>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, root: flatbuffers::WIPOffset>) { - fbb.finish_size_prefixed(root, None); -} diff --git a/nostrdb/src/bindings/rust/ndb_profile.rs b/nostrdb/src/bindings/rust/ndb_profile.rs deleted file mode 100644 index b0fe90e4bd..0000000000 --- a/nostrdb/src/bindings/rust/ndb_profile.rs +++ /dev/null @@ -1,514 +0,0 @@ -// automatically generated by the FlatBuffers compiler, do not modify - - -// @generated - -use core::mem; -use core::cmp::Ordering; - -extern crate flatbuffers; -use self::flatbuffers::{EndianScalar, Follow}; - -pub enum NdbProfileOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct NdbProfile<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for NdbProfile<'a> { - type Inner = NdbProfile<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> NdbProfile<'a> { - pub const VT_NAME: flatbuffers::VOffsetT = 4; - pub const VT_WEBSITE: flatbuffers::VOffsetT = 6; - pub const VT_ABOUT: flatbuffers::VOffsetT = 8; - pub const VT_LUD16: flatbuffers::VOffsetT = 10; - pub const VT_BANNER: flatbuffers::VOffsetT = 12; - pub const VT_DISPLAY_NAME: flatbuffers::VOffsetT = 14; - pub const VT_REACTIONS: flatbuffers::VOffsetT = 16; - pub const VT_PICTURE: flatbuffers::VOffsetT = 18; - pub const VT_NIP05: flatbuffers::VOffsetT = 20; - pub const VT_DAMUS_DONATION: flatbuffers::VOffsetT = 22; - pub const VT_DAMUS_DONATION_V2: flatbuffers::VOffsetT = 24; - pub const VT_LUD06: flatbuffers::VOffsetT = 26; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - NdbProfile { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args NdbProfileArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = NdbProfileBuilder::new(_fbb); - if let Some(x) = args.lud06 { builder.add_lud06(x); } - builder.add_damus_donation_v2(args.damus_donation_v2); - builder.add_damus_donation(args.damus_donation); - if let Some(x) = args.nip05 { builder.add_nip05(x); } - if let Some(x) = args.picture { builder.add_picture(x); } - if let Some(x) = args.display_name { builder.add_display_name(x); } - if let Some(x) = args.banner { builder.add_banner(x); } - if let Some(x) = args.lud16 { builder.add_lud16(x); } - if let Some(x) = args.about { builder.add_about(x); } - if let Some(x) = args.website { builder.add_website(x); } - if let Some(x) = args.name { builder.add_name(x); } - builder.add_reactions(args.reactions); - builder.finish() - } - - - #[inline] - pub fn name(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfile::VT_NAME, None)} - } - #[inline] - pub fn website(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfile::VT_WEBSITE, None)} - } - #[inline] - pub fn about(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfile::VT_ABOUT, None)} - } - #[inline] - pub fn lud16(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfile::VT_LUD16, None)} - } - #[inline] - pub fn banner(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfile::VT_BANNER, None)} - } - #[inline] - pub fn display_name(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfile::VT_DISPLAY_NAME, None)} - } - #[inline] - pub fn reactions(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbProfile::VT_REACTIONS, Some(true)).unwrap()} - } - #[inline] - pub fn picture(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfile::VT_PICTURE, None)} - } - #[inline] - pub fn nip05(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfile::VT_NIP05, None)} - } - #[inline] - pub fn damus_donation(&self) -> i32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbProfile::VT_DAMUS_DONATION, Some(0)).unwrap()} - } - #[inline] - pub fn damus_donation_v2(&self) -> i32 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbProfile::VT_DAMUS_DONATION_V2, Some(0)).unwrap()} - } - #[inline] - pub fn lud06(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfile::VT_LUD06, None)} - } -} - -impl flatbuffers::Verifiable for NdbProfile<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>("name", Self::VT_NAME, false)? - .visit_field::>("website", Self::VT_WEBSITE, false)? - .visit_field::>("about", Self::VT_ABOUT, false)? - .visit_field::>("lud16", Self::VT_LUD16, false)? - .visit_field::>("banner", Self::VT_BANNER, false)? - .visit_field::>("display_name", Self::VT_DISPLAY_NAME, false)? - .visit_field::("reactions", Self::VT_REACTIONS, false)? - .visit_field::>("picture", Self::VT_PICTURE, false)? - .visit_field::>("nip05", Self::VT_NIP05, false)? - .visit_field::("damus_donation", Self::VT_DAMUS_DONATION, false)? - .visit_field::("damus_donation_v2", Self::VT_DAMUS_DONATION_V2, false)? - .visit_field::>("lud06", Self::VT_LUD06, false)? - .finish(); - Ok(()) - } -} -pub struct NdbProfileArgs<'a> { - pub name: Option>, - pub website: Option>, - pub about: Option>, - pub lud16: Option>, - pub banner: Option>, - pub display_name: Option>, - pub reactions: bool, - pub picture: Option>, - pub nip05: Option>, - pub damus_donation: i32, - pub damus_donation_v2: i32, - pub lud06: Option>, -} -impl<'a> Default for NdbProfileArgs<'a> { - #[inline] - fn default() -> Self { - NdbProfileArgs { - name: None, - website: None, - about: None, - lud16: None, - banner: None, - display_name: None, - reactions: true, - picture: None, - nip05: None, - damus_donation: 0, - damus_donation_v2: 0, - lud06: None, - } - } -} - -pub struct NdbProfileBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> NdbProfileBuilder<'a, 'b> { - #[inline] - pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfile::VT_NAME, name); - } - #[inline] - pub fn add_website(&mut self, website: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfile::VT_WEBSITE, website); - } - #[inline] - pub fn add_about(&mut self, about: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfile::VT_ABOUT, about); - } - #[inline] - pub fn add_lud16(&mut self, lud16: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfile::VT_LUD16, lud16); - } - #[inline] - pub fn add_banner(&mut self, banner: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfile::VT_BANNER, banner); - } - #[inline] - pub fn add_display_name(&mut self, display_name: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfile::VT_DISPLAY_NAME, display_name); - } - #[inline] - pub fn add_reactions(&mut self, reactions: bool) { - self.fbb_.push_slot::(NdbProfile::VT_REACTIONS, reactions, true); - } - #[inline] - pub fn add_picture(&mut self, picture: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfile::VT_PICTURE, picture); - } - #[inline] - pub fn add_nip05(&mut self, nip05: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfile::VT_NIP05, nip05); - } - #[inline] - pub fn add_damus_donation(&mut self, damus_donation: i32) { - self.fbb_.push_slot::(NdbProfile::VT_DAMUS_DONATION, damus_donation, 0); - } - #[inline] - pub fn add_damus_donation_v2(&mut self, damus_donation_v2: i32) { - self.fbb_.push_slot::(NdbProfile::VT_DAMUS_DONATION_V2, damus_donation_v2, 0); - } - #[inline] - pub fn add_lud06(&mut self, lud06: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfile::VT_LUD06, lud06); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> NdbProfileBuilder<'a, 'b> { - let start = _fbb.start_table(); - NdbProfileBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for NdbProfile<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("NdbProfile"); - ds.field("name", &self.name()); - ds.field("website", &self.website()); - ds.field("about", &self.about()); - ds.field("lud16", &self.lud16()); - ds.field("banner", &self.banner()); - ds.field("display_name", &self.display_name()); - ds.field("reactions", &self.reactions()); - ds.field("picture", &self.picture()); - ds.field("nip05", &self.nip05()); - ds.field("damus_donation", &self.damus_donation()); - ds.field("damus_donation_v2", &self.damus_donation_v2()); - ds.field("lud06", &self.lud06()); - ds.finish() - } -} -pub enum NdbProfileRecordOffset {} -#[derive(Copy, Clone, PartialEq)] - -pub struct NdbProfileRecord<'a> { - pub _tab: flatbuffers::Table<'a>, -} - -impl<'a> flatbuffers::Follow<'a> for NdbProfileRecord<'a> { - type Inner = NdbProfileRecord<'a>; - #[inline] - unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - Self { _tab: flatbuffers::Table::new(buf, loc) } - } -} - -impl<'a> NdbProfileRecord<'a> { - pub const VT_PROFILE: flatbuffers::VOffsetT = 4; - pub const VT_RECEIVED_AT: flatbuffers::VOffsetT = 6; - pub const VT_NOTE_KEY: flatbuffers::VOffsetT = 8; - pub const VT_LNURL: flatbuffers::VOffsetT = 10; - - #[inline] - pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { - NdbProfileRecord { _tab: table } - } - #[allow(unused_mut)] - pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( - _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args NdbProfileRecordArgs<'args> - ) -> flatbuffers::WIPOffset> { - let mut builder = NdbProfileRecordBuilder::new(_fbb); - builder.add_note_key(args.note_key); - builder.add_received_at(args.received_at); - if let Some(x) = args.lnurl { builder.add_lnurl(x); } - if let Some(x) = args.profile { builder.add_profile(x); } - builder.finish() - } - - - #[inline] - pub fn profile(&self) -> Option> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfileRecord::VT_PROFILE, None)} - } - #[inline] - pub fn received_at(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbProfileRecord::VT_RECEIVED_AT, Some(0)).unwrap()} - } - #[inline] - pub fn note_key(&self) -> u64 { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(NdbProfileRecord::VT_NOTE_KEY, Some(0)).unwrap()} - } - #[inline] - pub fn lnurl(&self) -> Option<&'a str> { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::>(NdbProfileRecord::VT_LNURL, None)} - } -} - -impl flatbuffers::Verifiable for NdbProfileRecord<'_> { - #[inline] - fn run_verifier( - v: &mut flatbuffers::Verifier, pos: usize - ) -> Result<(), flatbuffers::InvalidFlatbuffer> { - use self::flatbuffers::Verifiable; - v.visit_table(pos)? - .visit_field::>("profile", Self::VT_PROFILE, false)? - .visit_field::("received_at", Self::VT_RECEIVED_AT, false)? - .visit_field::("note_key", Self::VT_NOTE_KEY, false)? - .visit_field::>("lnurl", Self::VT_LNURL, false)? - .finish(); - Ok(()) - } -} -pub struct NdbProfileRecordArgs<'a> { - pub profile: Option>>, - pub received_at: u64, - pub note_key: u64, - pub lnurl: Option>, -} -impl<'a> Default for NdbProfileRecordArgs<'a> { - #[inline] - fn default() -> Self { - NdbProfileRecordArgs { - profile: None, - received_at: 0, - note_key: 0, - lnurl: None, - } - } -} - -pub struct NdbProfileRecordBuilder<'a: 'b, 'b> { - fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, - start_: flatbuffers::WIPOffset, -} -impl<'a: 'b, 'b> NdbProfileRecordBuilder<'a, 'b> { - #[inline] - pub fn add_profile(&mut self, profile: flatbuffers::WIPOffset>) { - self.fbb_.push_slot_always::>(NdbProfileRecord::VT_PROFILE, profile); - } - #[inline] - pub fn add_received_at(&mut self, received_at: u64) { - self.fbb_.push_slot::(NdbProfileRecord::VT_RECEIVED_AT, received_at, 0); - } - #[inline] - pub fn add_note_key(&mut self, note_key: u64) { - self.fbb_.push_slot::(NdbProfileRecord::VT_NOTE_KEY, note_key, 0); - } - #[inline] - pub fn add_lnurl(&mut self, lnurl: flatbuffers::WIPOffset<&'b str>) { - self.fbb_.push_slot_always::>(NdbProfileRecord::VT_LNURL, lnurl); - } - #[inline] - pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> NdbProfileRecordBuilder<'a, 'b> { - let start = _fbb.start_table(); - NdbProfileRecordBuilder { - fbb_: _fbb, - start_: start, - } - } - #[inline] - pub fn finish(self) -> flatbuffers::WIPOffset> { - let o = self.fbb_.end_table(self.start_); - flatbuffers::WIPOffset::new(o.value()) - } -} - -impl core::fmt::Debug for NdbProfileRecord<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - let mut ds = f.debug_struct("NdbProfileRecord"); - ds.field("profile", &self.profile()); - ds.field("received_at", &self.received_at()); - ds.field("note_key", &self.note_key()); - ds.field("lnurl", &self.lnurl()); - ds.finish() - } -} -#[inline] -/// Verifies that a buffer of bytes contains a `NdbProfileRecord` -/// and returns it. -/// Note that verification is still experimental and may not -/// catch every error, or be maximally performant. For the -/// previous, unchecked, behavior use -/// `root_as_ndb_profile_record_unchecked`. -pub fn root_as_ndb_profile_record(buf: &[u8]) -> Result { - flatbuffers::root::(buf) -} -#[inline] -/// Verifies that a buffer of bytes contains a size prefixed -/// `NdbProfileRecord` and returns it. -/// Note that verification is still experimental and may not -/// catch every error, or be maximally performant. For the -/// previous, unchecked, behavior use -/// `size_prefixed_root_as_ndb_profile_record_unchecked`. -pub fn size_prefixed_root_as_ndb_profile_record(buf: &[u8]) -> Result { - flatbuffers::size_prefixed_root::(buf) -} -#[inline] -/// Verifies, with the given options, that a buffer of bytes -/// contains a `NdbProfileRecord` and returns it. -/// Note that verification is still experimental and may not -/// catch every error, or be maximally performant. For the -/// previous, unchecked, behavior use -/// `root_as_ndb_profile_record_unchecked`. -pub fn root_as_ndb_profile_record_with_opts<'b, 'o>( - opts: &'o flatbuffers::VerifierOptions, - buf: &'b [u8], -) -> Result, flatbuffers::InvalidFlatbuffer> { - flatbuffers::root_with_opts::>(opts, buf) -} -#[inline] -/// Verifies, with the given verifier options, that a buffer of -/// bytes contains a size prefixed `NdbProfileRecord` and returns -/// it. Note that verification is still experimental and may not -/// catch every error, or be maximally performant. For the -/// previous, unchecked, behavior use -/// `root_as_ndb_profile_record_unchecked`. -pub fn size_prefixed_root_as_ndb_profile_record_with_opts<'b, 'o>( - opts: &'o flatbuffers::VerifierOptions, - buf: &'b [u8], -) -> Result, flatbuffers::InvalidFlatbuffer> { - flatbuffers::size_prefixed_root_with_opts::>(opts, buf) -} -#[inline] -/// Assumes, without verification, that a buffer of bytes contains a NdbProfileRecord and returns it. -/// # Safety -/// Callers must trust the given bytes do indeed contain a valid `NdbProfileRecord`. -pub unsafe fn root_as_ndb_profile_record_unchecked(buf: &[u8]) -> NdbProfileRecord { - flatbuffers::root_unchecked::(buf) -} -#[inline] -/// Assumes, without verification, that a buffer of bytes contains a size prefixed NdbProfileRecord and returns it. -/// # Safety -/// Callers must trust the given bytes do indeed contain a valid size prefixed `NdbProfileRecord`. -pub unsafe fn size_prefixed_root_as_ndb_profile_record_unchecked(buf: &[u8]) -> NdbProfileRecord { - flatbuffers::size_prefixed_root_unchecked::(buf) -} -#[inline] -pub fn finish_ndb_profile_record_buffer<'a, 'b>( - fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, - root: flatbuffers::WIPOffset>) { - fbb.finish(root, None); -} - -#[inline] -pub fn finish_size_prefixed_ndb_profile_record_buffer<'a, 'b>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, root: flatbuffers::WIPOffset>) { - fbb.finish_size_prefixed(root, None); -} diff --git a/nostrdb/src/block.c b/nostrdb/src/block.c deleted file mode 100644 index 6c2f22f5b8..0000000000 --- a/nostrdb/src/block.c +++ /dev/null @@ -1,205 +0,0 @@ - - -#include "nostrdb.h" -#include "block.h" -#include - -int push_str_block(struct cursor *buf, const char *content, struct ndb_str_block *block) { - return cursor_push_varint(buf, block->str - content) && - cursor_push_varint(buf, block->len); -} - -int pull_str_block(struct cursor *buf, const char *content, struct ndb_str_block *block) { - uint32_t start; - if (!cursor_pull_varint_u32(buf, &start)) - return 0; - - block->str = content + start; - - return cursor_pull_varint_u32(buf, &block->len); -} - -static int pull_nostr_bech32_type(struct cursor *cur, enum nostr_bech32_type *type) -{ - uint64_t inttype; - if (!cursor_pull_varint(cur, &inttype)) - return 0; - - if (inttype <= 0 || inttype > NOSTR_BECH32_KNOWN_TYPES) - return 0; - - *type = inttype; - return 1; -} - - -static int pull_bech32_mention(const char *content, struct cursor *cur, struct ndb_mention_bech32_block *block) { - uint16_t size; - unsigned char *start; - struct cursor bech32; - - if (!pull_str_block(cur, content, &block->str)) - return 0; - - if (!cursor_pull_u16(cur, &size)) - return 0; - - if (!pull_nostr_bech32_type(cur, &block->bech32.type)) - return 0; - - make_cursor(cur->p, cur->p + size, &bech32); - - start = cur->p; - - if (!parse_nostr_bech32_buffer(&bech32, block->bech32.type, &block->bech32)) - return 0; - - //assert(bech32.p == start + size); - cur->p = start + size; - return 1; -} - -static int pull_invoice(const char *content, struct cursor *cur, - struct ndb_invoice_block *block) -{ - if (!pull_str_block(cur, content, &block->invstr)) - return 0; - - return ndb_decode_invoice(cur, &block->invoice); -} - -static int pull_block_type(struct cursor *cur, enum ndb_block_type *type) -{ - uint32_t itype; - *type = 0; - if (!cursor_pull_varint_u32(cur, &itype)) - return 0; - - if (itype <= 0 || itype > NDB_NUM_BLOCK_TYPES) - return 0; - - *type = itype; - return 1; -} - -static int pull_block(const char *content, struct cursor *cur, struct ndb_block *block) -{ - unsigned char *start = cur->p; - - if (!pull_block_type(cur, &block->type)) - return 0; - - switch (block->type) { - case BLOCK_HASHTAG: - case BLOCK_TEXT: - case BLOCK_URL: - if (!pull_str_block(cur, content, &block->block.str)) - goto fail; - break; - - case BLOCK_MENTION_INDEX: - if (!cursor_pull_varint_u32(cur, &block->block.mention_index)) - goto fail; - break; - - case BLOCK_MENTION_BECH32: - if (!pull_bech32_mention(content, cur, &block->block.mention_bech32)) - goto fail; - break; - - case BLOCK_INVOICE: - // we only push invoice strs here - if (!pull_invoice(content, cur, &block->block.invoice)) - goto fail; - break; - } - - return 1; -fail: - cur->p = start; - return 0; -} - - -enum ndb_block_type ndb_get_block_type(struct ndb_block *block) { - return block->type; -} - -// BLOCK ITERATORS -void ndb_blocks_iterate_start(const char *content, struct ndb_blocks *blocks, struct ndb_block_iterator *iter) { - iter->blocks = blocks; - iter->content = content; - iter->p = blocks->blocks; -} - -struct ndb_block *ndb_blocks_iterate_next(struct ndb_block_iterator *iter) -{ - struct cursor cur; - cur.start = iter->blocks->blocks; - cur.p = iter->p; - cur.end = iter->blocks->blocks + iter->blocks->blocks_size; - - while (cur.p < cur.end) { - if (!pull_block(iter->content, &cur, &iter->block)) { - iter->p = cur.p; - return NULL; - } else { - iter->p = cur.p; - return &iter->block; - } - } - - return NULL; -} - -// STR BLOCKS -struct ndb_str_block *ndb_block_str(struct ndb_block *block) -{ - switch (block->type) { - case BLOCK_HASHTAG: - case BLOCK_TEXT: - case BLOCK_URL: - return &block->block.str; - case BLOCK_MENTION_INDEX: - return NULL; - case BLOCK_MENTION_BECH32: - return &block->block.mention_bech32.str; - case BLOCK_INVOICE: - return &block->block.invoice.invstr; - } - - return NULL; -} - -const char *ndb_str_block_ptr(struct ndb_str_block *str_block) { - return str_block->str; -} - -uint32_t ndb_str_block_len(struct ndb_str_block *str_block) { - return str_block->len; -} - -struct nostr_bech32 *ndb_bech32_block(struct ndb_block *block) { - return &block->block.mention_bech32.bech32; -} - -// total size including padding -size_t ndb_blocks_total_size(struct ndb_blocks *blocks) { - assert(blocks->total_size < 1000000); - return blocks->total_size; -} - -void ndb_blocks_free(struct ndb_blocks *blocks) { - if ((blocks->flags & NDB_BLOCK_FLAG_OWNED) != NDB_BLOCK_FLAG_OWNED) - return; - - free(blocks); -} - -int ndb_blocks_flags(struct ndb_blocks *blocks) { - return blocks->flags; -} - -int ndb_blocks_word_count(struct ndb_blocks *blocks) { - return blocks->words; -} diff --git a/nostrdb/src/block.h b/nostrdb/src/block.h deleted file mode 100644 index ed4b358b51..0000000000 --- a/nostrdb/src/block.h +++ /dev/null @@ -1,36 +0,0 @@ - -#ifndef NDB_BLOCK_H -#define NDB_BLOCK_H - -#include "invoice.h" -#include "str_block.h" -#include "cursor.h" -#include "nostr_bech32.h" -#include "nostrdb.h" -#include - -#define NDB_BLOCK_FLAG_OWNED 1 - -#pragma pack(push, 1) - -struct ndb_blocks { - unsigned char version; - unsigned char flags; - unsigned char padding[2]; - - uint32_t words; - uint32_t num_blocks; - uint32_t blocks_size; - // future expansion - uint32_t total_size; - uint32_t reserved; - unsigned char blocks[0]; // see ndb_block definition -}; - -#pragma pack(pop) - -int push_str_block(struct cursor *buf, const char *content, struct ndb_str_block *block); -int pull_str_block(struct cursor *buf, const char *content, struct ndb_str_block *block); - - -#endif // NDB_BLOCK_H diff --git a/nostrdb/src/bolt11/amount.c b/nostrdb/src/bolt11/amount.c deleted file mode 100644 index a7584ad7aa..0000000000 --- a/nostrdb/src/bolt11/amount.c +++ /dev/null @@ -1,566 +0,0 @@ -#include "../config.h" -#include "ccan/mem/mem.h" -#include "ccan/tal/str/str.h" -#include "amount.h" -#include "overflows.h" -#include -#include - -bool amount_sat_to_msat(struct amount_msat *msat, - struct amount_sat sat) -{ - if (mul_overflows_u64(sat.satoshis, MSAT_PER_SAT)) - return false; - msat->millisatoshis = sat.satoshis * MSAT_PER_SAT; - return true; -} - -bool amount_msat_to_sat(struct amount_sat *sat, - struct amount_msat msat) -{ - if (msat.millisatoshis % MSAT_PER_SAT) - return false; - sat->satoshis = msat.millisatoshis / MSAT_PER_SAT; - return true; -} - - -/* You can always truncate millisatoshis->satoshis. */ -struct amount_sat amount_msat_to_sat_round_down(struct amount_msat msat) -{ - struct amount_sat sat; - - sat.satoshis = msat.millisatoshis / MSAT_PER_SAT; - return sat; -} - -/* Different formatting by amounts: btc, sat and msat */ -const char *fmt_amount_msat_btc(const tal_t *ctx, - struct amount_msat msat, - bool append_unit) -{ - if (msat.millisatoshis == 0) - return tal_fmt(ctx, append_unit ? "0btc" : "0"); - - return tal_fmt(ctx, "%"PRIu64".%011"PRIu64"%s", - msat.millisatoshis / MSAT_PER_BTC, - msat.millisatoshis % MSAT_PER_BTC, - append_unit ? "btc" : ""); -} - -const char *fmt_amount_msat(const tal_t *ctx, struct amount_msat msat) -{ - return tal_fmt(ctx, "%"PRIu64"msat", msat.millisatoshis); -} - -const char *fmt_amount_sat_btc(const tal_t *ctx, - struct amount_sat sat, - bool append_unit) -{ - if (sat.satoshis == 0) - return tal_fmt(ctx, append_unit ? "0btc" : "0"); - - return tal_fmt(ctx, "%"PRIu64".%08"PRIu64"%s", - sat.satoshis / SAT_PER_BTC, - sat.satoshis % SAT_PER_BTC, - append_unit ? "btc" : ""); -} - -const char *fmt_amount_sat(const tal_t *ctx, struct amount_sat sat) -{ - return tal_fmt(ctx, "%"PRIu64"sat", sat.satoshis); -} - -static bool breakup(const char *str, size_t slen, - /* Length of first numeric part. */ - size_t *whole_number_len, - /* Pointer to post-decimal part, or NULL */ - const char **post_decimal_ptr, - size_t *post_decimal_len, - /* Pointer to suffix, or NULL */ - const char **suffix_ptr, - size_t *suffix_len) -{ - size_t i; - - *whole_number_len = 0; - *post_decimal_len = 0; - *post_decimal_ptr = NULL; - *suffix_ptr = NULL; - *suffix_len = 0; - - for (i = 0;; i++) { - /* The string may be null-terminated. */ - if (i >= slen || str[i] == '\0') - return i != 0; - if (cisdigit(str[i])) - (*whole_number_len)++; - else - break; - } - - if (str[i] == '.') { - i++; - *post_decimal_ptr = str + i; - for (;; i++) { - /* True if > 0 decimals. */ - if (i >= slen || str[i] == '\0') - return str + i != *post_decimal_ptr; - if (cisdigit(str[i])) - (*post_decimal_len)++; - else - break; - } - } - - *suffix_ptr = str + i; - *suffix_len = slen - i; - return true; -} - -static bool from_number(u64 *res, const char *s, size_t len, int tens_factor) -{ - if (len == 0) - return false; - - *res = 0; - for (size_t i = 0; i < len; i++) { - if (mul_overflows_u64(*res, 10)) - return false; - *res *= 10; - assert(cisdigit(s[i])); - if (add_overflows_u64(*res, s[i] - '0')) - return false; - *res += s[i] - '0'; - } - while (tens_factor > 0) { - if (mul_overflows_u64(*res, 10)) - return false; - *res *= 10; - tens_factor--; - } - return true; -} - -static bool from_numbers(u64 *res, - const char *s1, size_t len1, int tens_factor, - const char *s2, size_t len2) -{ - u64 p1, p2; - if (len2 > tens_factor) - return false; - - if (!from_number(&p1, s1, len1, tens_factor) - || !from_number(&p2, s2, len2, tens_factor - (int)len2)) - return false; - - if (add_overflows_u64(p1, p2)) - return false; - - *res = p1 + p2; - return true; -} - -/* Valid strings: - * [0-9]+ => millisatoshi. - * [0-9]+msat => millisatoshi. - * [0-9]+sat => *1000 -> millisatoshi. - * [0-9]+.[0-9]{1,11}btc => millisatoshi. - */ -bool parse_amount_msat(struct amount_msat *msat, const char *s, size_t slen) -{ - size_t whole_number_len, post_decimal_len, suffix_len; - const char *post_decimal_ptr, *suffix_ptr; - - if (!breakup(s, slen, &whole_number_len, - &post_decimal_ptr, &post_decimal_len, - &suffix_ptr, &suffix_len)) - return false; - - if (!post_decimal_ptr && !suffix_ptr) - return from_number(&msat->millisatoshis, s, whole_number_len, 0); - if (!post_decimal_ptr && memstarts_str(suffix_ptr, suffix_len, "msat")) - return from_number(&msat->millisatoshis, s, whole_number_len, 0); - if (!post_decimal_ptr && memstarts_str(suffix_ptr, suffix_len, "sat")) - return from_number(&msat->millisatoshis, s, whole_number_len, 3); - if (memstarts_str(suffix_ptr, suffix_len, "btc")) { - if (post_decimal_len > 0) - return from_numbers(&msat->millisatoshis, - s, whole_number_len, 11, - post_decimal_ptr, post_decimal_len); - return from_number(&msat->millisatoshis, s, whole_number_len, 11); - } - - return false; -} - -/* Valid strings: - * [0-9]+ => satoshi. - * [0-9]+sat => satoshi. - * [0-9]+000msat => satoshi. - * 0msat => 0 satoshi - * [0-9]+.[0-9]{1,8}btc => satoshi. - */ -bool parse_amount_sat(struct amount_sat *sat, const char *s, size_t slen) -{ - size_t whole_number_len, post_decimal_len, suffix_len; - const char *post_decimal_ptr, *suffix_ptr; - - if (!breakup(s, slen, &whole_number_len, - &post_decimal_ptr, &post_decimal_len, - &suffix_ptr, &suffix_len)) - return false; - - if (!post_decimal_ptr && !suffix_ptr) - return from_number(&sat->satoshis, s, whole_number_len, 0); - if (!post_decimal_ptr && memstarts_str(suffix_ptr, suffix_len, "sat")) - return from_number(&sat->satoshis, s, whole_number_len, 0); - if (!post_decimal_ptr && memstarts_str(suffix_ptr, suffix_len, "msat")) { - if (!memends(s, whole_number_len, "000", strlen("000"))) { - if (memstarts_str(s, whole_number_len, "0")) - return from_number(&sat->satoshis, s, - whole_number_len, 0); - return false; - } - return from_number(&sat->satoshis, s, whole_number_len - 3, 0); - } - if (memstarts_str(suffix_ptr, suffix_len, "btc")) { - if (post_decimal_len > 0) - return from_numbers(&sat->satoshis, - s, whole_number_len, 8, - post_decimal_ptr, post_decimal_len); - return from_number(&sat->satoshis, s, whole_number_len, 8); - } - - return false; -} - -WARN_UNUSED_RESULT bool amount_msat_add(struct amount_msat *val, - struct amount_msat a, - struct amount_msat b) -{ - if (add_overflows_u64(a.millisatoshis, b.millisatoshis)) - return false; - - val->millisatoshis = a.millisatoshis + b.millisatoshis; - return true; -} - -WARN_UNUSED_RESULT bool amount_msat_sub(struct amount_msat *val, - struct amount_msat a, - struct amount_msat b) -{ - if (a.millisatoshis < b.millisatoshis) - return false; - - val->millisatoshis = a.millisatoshis - b.millisatoshis; - return true; -} - -WARN_UNUSED_RESULT bool amount_sat_add(struct amount_sat *val, - struct amount_sat a, - struct amount_sat b) -{ - if (add_overflows_u64(a.satoshis, b.satoshis)) - return false; - - val->satoshis = a.satoshis + b.satoshis; - return true; -} - -WARN_UNUSED_RESULT bool amount_sat_sub(struct amount_sat *val, - struct amount_sat a, - struct amount_sat b) -{ - if (a.satoshis < b.satoshis) - return false; - - val->satoshis = a.satoshis - b.satoshis; - return true; -} - -WARN_UNUSED_RESULT bool amount_msat_sub_sat(struct amount_msat *val, - struct amount_msat a, - struct amount_sat b) -{ - struct amount_msat msatb; - - if (!amount_sat_to_msat(&msatb, b)) - return false; - - return amount_msat_sub(val, a, msatb); -} - -WARN_UNUSED_RESULT bool amount_sat_sub_msat(struct amount_msat *val, - struct amount_sat a, - struct amount_msat b) -{ - struct amount_msat msata; - - if (!amount_sat_to_msat(&msata, a)) - return false; - - return amount_msat_sub(val, msata, b); -} - -WARN_UNUSED_RESULT bool amount_msat_add_sat(struct amount_msat *val, - struct amount_msat a, - struct amount_sat b) -{ - struct amount_msat msatb; - - if (!amount_sat_to_msat(&msatb, b)) - return false; - - return amount_msat_add(val, a, msatb); -} - -WARN_UNUSED_RESULT bool amount_msat_scale(struct amount_msat *val, - struct amount_msat msat, - double scale) -{ - double scaled = msat.millisatoshis * scale; - - /* If mantissa is < 64 bits, a naive "if (scaled > - * UINT64_MAX)" doesn't work. Stick to powers of 2. */ - if (scaled >= (double)((u64)1 << 63) * 2) - return false; - val->millisatoshis = scaled; - return true; -} - -WARN_UNUSED_RESULT bool amount_sat_scale(struct amount_sat *val, - struct amount_sat sat, - double scale) -{ - double scaled = sat.satoshis * scale; - - /* If mantissa is < 64 bits, a naive "if (scaled > - * UINT64_MAX)" doesn't work. Stick to powers of 2. */ - if (scaled >= (double)((u64)1 << 63) * 2) - return false; - val->satoshis = scaled; - return true; -} - -bool amount_sat_eq(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis == b.satoshis; -} - -bool amount_sat_zero(struct amount_sat a) -{ - return a.satoshis == 0; -} - -bool amount_msat_zero(struct amount_msat a) -{ - return a.millisatoshis == 0; -} - -bool amount_msat_eq(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis == b.millisatoshis; -} - -bool amount_sat_greater(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis > b.satoshis; -} - -bool amount_msat_greater(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis > b.millisatoshis; -} - -bool amount_sat_greater_eq(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis >= b.satoshis; -} - -bool amount_msat_greater_eq(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis >= b.millisatoshis; -} - -bool amount_sat_less(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis < b.satoshis; -} - -bool amount_msat_less(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis < b.millisatoshis; -} - -bool amount_sat_less_eq(struct amount_sat a, struct amount_sat b) -{ - return a.satoshis <= b.satoshis; -} - -bool amount_msat_less_eq(struct amount_msat a, struct amount_msat b) -{ - return a.millisatoshis <= b.millisatoshis; -} - -bool amount_msat_greater_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - return msat.millisatoshis > msat_from_sat.millisatoshis; -} - -bool amount_msat_greater_eq_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - return msat.millisatoshis >= msat_from_sat.millisatoshis; -} - -bool amount_msat_less_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - return msat.millisatoshis < msat_from_sat.millisatoshis; -} - -bool amount_msat_less_eq_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - return msat.millisatoshis <= msat_from_sat.millisatoshis; -} - -bool amount_msat_eq_sat(struct amount_msat msat, struct amount_sat sat) -{ - struct amount_msat msat_from_sat; - - if (!amount_sat_to_msat(&msat_from_sat, sat)) - return false; - - return msat.millisatoshis == msat_from_sat.millisatoshis; -} - -bool amount_msat_to_u32(struct amount_msat msat, u32 *millisatoshis) -{ - if (amount_msat_greater_eq(msat, AMOUNT_MSAT(0x100000000))) - return false; - *millisatoshis = (u32)msat.millisatoshis; - return true; -} - -struct amount_msat amount_msat(u64 millisatoshis) -{ - struct amount_msat msat; - - msat.millisatoshis = millisatoshis; - return msat; -} - -struct amount_sat amount_sat(u64 satoshis) -{ - struct amount_sat sat; - - sat.satoshis = satoshis; - return sat; -} - -double amount_msat_ratio(struct amount_msat a, struct amount_msat b) -{ - return (double)a.millisatoshis / b.millisatoshis; -} - -struct amount_msat amount_msat_div(struct amount_msat msat, u64 div) -{ - msat.millisatoshis /= div; - return msat; -} - -struct amount_sat amount_sat_div(struct amount_sat sat, u64 div) -{ - sat.satoshis /= div; - return sat; -} - -bool amount_msat_fee(struct amount_msat *fee, - struct amount_msat amt, - u32 fee_base_msat, - u32 fee_proportional_millionths) -{ - struct amount_msat fee_base, fee_prop; - - /* BOLT #7: - * - * - SHOULD accept HTLCs that pay a fee equal to or greater than: - * - fee_base_msat + ( amount_to_forward * fee_proportional_millionths / 1000000 ) - */ - fee_base.millisatoshis = fee_base_msat; - - if (mul_overflows_u64(amt.millisatoshis, fee_proportional_millionths)) - return false; - fee_prop.millisatoshis = amt.millisatoshis * fee_proportional_millionths - / 1000000; - - return amount_msat_add(fee, fee_base, fee_prop); -} - -bool amount_msat_add_fee(struct amount_msat *amt, - u32 fee_base_msat, - u32 fee_proportional_millionths) -{ - struct amount_msat fee; - - if (!amount_msat_fee(&fee, *amt, - fee_base_msat, fee_proportional_millionths)) - return false; - return amount_msat_add(amt, *amt, fee); -} - -struct amount_sat amount_tx_fee(u32 fee_per_kw, size_t weight) -{ - struct amount_sat fee; - - /* If this overflows, weight must be > 2^32, which is not a real tx */ - assert(!mul_overflows_u64(fee_per_kw, weight)); - fee.satoshis = (u64)fee_per_kw * weight / 1000; - - return fee; -} - -/* -struct amount_msat fromwire_amount_msat(const u8 **cursor, size_t *max) -{ - struct amount_msat msat; - - msat.millisatoshis = fromwire_u64(cursor, max); - return msat; -} - -struct amount_sat fromwire_amount_sat(const u8 **cursor, size_t *max) -{ - struct amount_sat sat; - - sat.satoshis = fromwire_u64(cursor, max); - return sat; -} - -void towire_amount_msat(u8 **pptr, const struct amount_msat msat) -{ - towire_u64(pptr, msat.millisatoshis); -} - -void towire_amount_sat(u8 **pptr, const struct amount_sat sat) -{ - towire_u64(pptr, sat.satoshis); -} - - -*/ diff --git a/nostrdb/src/bolt11/amount.h b/nostrdb/src/bolt11/amount.h deleted file mode 100644 index db8e540230..0000000000 --- a/nostrdb/src/bolt11/amount.h +++ /dev/null @@ -1,203 +0,0 @@ -#ifndef LIGHTNING_COMMON_AMOUNT_H -#define LIGHTNING_COMMON_AMOUNT_H -#include "../config.h" -#include "ccan/short_types/short_types.h" -#include "ccan/tal/tal.h" - -#define MSAT_PER_SAT ((u64)1000) -#define SAT_PER_BTC ((u64)100000000) -#define MSAT_PER_BTC (MSAT_PER_SAT * SAT_PER_BTC) - -/* Use these to wrap amounts, for typesafety. Please use ops where possible, - * rather than accessing the members directly. */ -struct amount_sat { - /* Amount in satoshis. */ - u64 satoshis; -}; - -struct amount_msat { - /* Amount in millisatoshis. */ - u64 millisatoshis; -}; - -struct amount_asset { - u64 value; - u8 asset[33]; /* 1 version byte + 32 byte asset_tag */ -}; - -/* For constants only: others must be built from primitives! */ -#if HAVE_BUILTIN_CONSTANT_P -#define AMOUNT_MUST_BE_CONST(c) BUILD_ASSERT_OR_ZERO(IS_COMPILE_CONSTANT(c)) -#else -#define AMOUNT_MUST_BE_CONST(c) 0 -#endif - -/* GCC 4.8.5 (Centos 7.6!) thinks struct casts are not constants, so we - * need to not use a cast for static initializations. */ -#define AMOUNT_MSAT_INIT(msat) \ - { .millisatoshis = (msat) } -#define AMOUNT_SAT_INIT(sat) \ - { .satoshis = (sat) } - -#define AMOUNT_MSAT(constant) \ - ((struct amount_msat){(constant) + AMOUNT_MUST_BE_CONST(constant)}) - -#define AMOUNT_SAT(constant) \ - ((struct amount_sat){(constant) + AMOUNT_MUST_BE_CONST(constant)}) - -/* We do sometimes need to import from raw types, eg. wally or wire fmt */ -struct amount_msat amount_msat(u64 millisatoshis); -struct amount_sat amount_sat(u64 satoshis); - -/* You may not always be able to convert satoshis->millisatoshis. */ - bool amount_sat_to_msat(struct amount_msat *msat, - struct amount_sat sat); - -/* You may not always be able to convert millisatoshis->satoshis without rounding. */ - bool amount_msat_to_sat(struct amount_sat *sat, - struct amount_msat msat); - -/* You can always truncate millisatoshis->satoshis. */ -struct amount_sat amount_msat_to_sat_round_down(struct amount_msat msat); - -/* Simple operations: val = a + b, val = a - b. */ - bool amount_msat_add(struct amount_msat *val, - struct amount_msat a, - struct amount_msat b); - bool amount_msat_sub(struct amount_msat *val, - struct amount_msat a, - struct amount_msat b); - bool amount_sat_add(struct amount_sat *val, - struct amount_sat a, - struct amount_sat b); - bool amount_sat_sub(struct amount_sat *val, - struct amount_sat a, - struct amount_sat b); - bool amount_msat_sub_sat(struct amount_msat *val, - struct amount_msat a, - struct amount_sat b); - bool amount_msat_add_sat(struct amount_msat *val, - struct amount_msat a, - struct amount_sat b); - bool amount_sat_sub_msat(struct amount_msat *val, - struct amount_sat a, - struct amount_msat b); - bool amount_msat_scale(struct amount_msat *val, - struct amount_msat msat, - double scale); - bool amount_sat_scale(struct amount_sat *val, - struct amount_sat sat, - double scale); - -struct amount_msat amount_msat_div(struct amount_msat msat, u64 div); -struct amount_sat amount_sat_div(struct amount_sat sat, u64 div); - -/* Is a == b? */ -bool amount_sat_eq(struct amount_sat a, struct amount_sat b); -bool amount_msat_eq(struct amount_msat a, struct amount_msat b); - -/* Is a zero? */ -bool amount_sat_zero(struct amount_sat a); -bool amount_msat_zero(struct amount_msat a); - -/* Is a > b? */ -bool amount_sat_greater(struct amount_sat a, struct amount_sat b); -bool amount_msat_greater(struct amount_msat a, struct amount_msat b); - -/* Is a >= b */ -bool amount_sat_greater_eq(struct amount_sat a, struct amount_sat b); -bool amount_msat_greater_eq(struct amount_msat a, struct amount_msat b); - -/* Is a < b? */ -bool amount_sat_less(struct amount_sat a, struct amount_sat b); -bool amount_msat_less(struct amount_msat a, struct amount_msat b); - -/* Is a <= b? */ -bool amount_sat_less_eq(struct amount_sat a, struct amount_sat b); -bool amount_msat_less_eq(struct amount_msat a, struct amount_msat b); - -/* Is msat > sat? */ -bool amount_msat_greater_sat(struct amount_msat msat, struct amount_sat sat); -/* Is msat >= sat? */ -bool amount_msat_greater_eq_sat(struct amount_msat msat, struct amount_sat sat); -/* Is msat < sat? */ -bool amount_msat_less_sat(struct amount_msat msat, struct amount_sat sat); -/* Is msat <= sat? */ -bool amount_msat_less_eq_sat(struct amount_msat msat, struct amount_sat sat); -/* Is msat == sat? */ -bool amount_msat_eq_sat(struct amount_msat msat, struct amount_sat sat); - -/* a / b */ -double amount_msat_ratio(struct amount_msat a, struct amount_msat b); - -/* Check whether this asset is actually the main / fee-paying asset of the - * current chain. */ -bool amount_asset_is_main(struct amount_asset *asset); - -/* Convert an amount_sat to an amount_asset */ -struct amount_asset amount_sat_to_asset(struct amount_sat *sat, const u8 *asset); - -/* amount_asset_extract_value -Prefix the amount_asset's value - * to have the 'explicit' marker. Returns NULL if the - * asset was originally blinded. - * FIXME: pass through blinded amounts */ -u8 *amount_asset_extract_value(const tal_t *ctx, struct amount_asset *asset); - -/* Convert from a generic asset to the fee-paying asset if possible. */ -struct amount_sat amount_asset_to_sat(struct amount_asset *asset); - -/* Returns true if msat fits in a u32 value. */ - bool amount_msat_to_u32(struct amount_msat msat, - u32 *millisatoshis); - -/* Common operation: what is the HTLC fee for given feerate? Can overflow! */ - bool amount_msat_fee(struct amount_msat *fee, - struct amount_msat amt, - u32 fee_base_msat, - u32 fee_proportional_millionths); - -/* Same, but add into amt. */ - bool amount_msat_add_fee(struct amount_msat *amt, - u32 fee_base_msat, - u32 fee_proportional_millionths); - -/* What is the fee for this tx weight? */ -struct amount_sat amount_tx_fee(u32 fee_per_kw, size_t weight); - -/* Different formatting by amounts: btc, sat and msat */ -/* => 1.23456789012btc (11 decimals!) */ -const char *fmt_amount_msat_btc(const tal_t *ctx, - struct amount_msat msat, - bool append_unit); -/* => 1234msat */ -const char *fmt_amount_msat(const tal_t *ctx, struct amount_msat msat); - -/* => 1.23456789btc (8 decimals!) */ -const char *fmt_amount_sat_btc(const tal_t *ctx, - struct amount_sat sat, - bool append_unit); -/* => 1234sat */ -const char *fmt_amount_sat(const tal_t *ctx, struct amount_sat sat); - -/* Valid strings: - * [0-9]+ => millisatoshi. - * [0-9]+msat => millisatoshi. - * [0-9]+sat => *1000 -> millisatopshi. - * [0-9]+.[0-9]{1,11}btc => millisatoshi. - */ -bool parse_amount_msat(struct amount_msat *msat, const char *s, size_t slen); - -/* Valid strings: - * [0-9]+ => satoshi. - * [0-9]+sat => satoshi. - * [0-9]+000msat => satoshi. - * [0-9]+.[0-9]{1,8}btc => satoshi. - */ -bool parse_amount_sat(struct amount_sat *sat, const char *s, size_t slen); - -/* Marshal/unmarshal functions */ -struct amount_msat fromwire_amount_msat(const u8 **cursor, size_t *max); -struct amount_sat fromwire_amount_sat(const u8 **cursor, size_t *max); -void towire_amount_msat(u8 **pptr, const struct amount_msat msat); -void towire_amount_sat(u8 **pptr, const struct amount_sat sat); -#endif /* LIGHTNING_COMMON_AMOUNT_H */ diff --git a/nostrdb/src/bolt11/bech32.c b/nostrdb/src/bolt11/bech32.c deleted file mode 100644 index 00c9441460..0000000000 --- a/nostrdb/src/bolt11/bech32.c +++ /dev/null @@ -1,231 +0,0 @@ -/* Stolen from https://github.com/sipa/bech32/blob/master/ref/c/segwit_addr.c, - * with only the two ' > 90' checks hoisted, and more internals exposed */ - -/* Copyright (c) 2017, 2021 Pieter Wuille - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#include "../config.h" -#include -#include "bech32.h" -#include - -static uint32_t bech32_polymod_step(uint32_t pre) { - uint8_t b = pre >> 25; - return ((pre & 0x1FFFFFF) << 5) ^ - (-((b >> 0) & 1) & 0x3b6a57b2UL) ^ - (-((b >> 1) & 1) & 0x26508e6dUL) ^ - (-((b >> 2) & 1) & 0x1ea119faUL) ^ - (-((b >> 3) & 1) & 0x3d4233ddUL) ^ - (-((b >> 4) & 1) & 0x2a1462b3UL); -} - -static uint32_t bech32_final_constant(bech32_encoding enc) { - if (enc == BECH32_ENCODING_BECH32) return 1; - if (enc == BECH32_ENCODING_BECH32M) return 0x2bc830a3; - assert(0); -} - -const char bech32_charset[] = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"; - -const int8_t bech32_charset_rev[128] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 15, -1, 10, 17, 21, 20, 26, 30, 7, 5, -1, -1, -1, -1, -1, -1, - -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, - 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1, - -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, - 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1 -}; - -int bech32_encode(char *output, const char *hrp, const uint8_t *data, size_t data_len, size_t max_input_len, bech32_encoding enc) { - uint32_t chk = 1; - size_t i = 0; - while (hrp[i] != 0) { - int ch = hrp[i]; - if (ch < 33 || ch > 126) { - return 0; - } - - if (ch >= 'A' && ch <= 'Z') return 0; - chk = bech32_polymod_step(chk) ^ (ch >> 5); - ++i; - } - if (i + 7 + data_len > max_input_len) return 0; - chk = bech32_polymod_step(chk); - while (*hrp != 0) { - chk = bech32_polymod_step(chk) ^ (*hrp & 0x1f); - *(output++) = *(hrp++); - } - *(output++) = '1'; - for (i = 0; i < data_len; ++i) { - if (*data >> 5) return 0; - chk = bech32_polymod_step(chk) ^ (*data); - *(output++) = bech32_charset[*(data++)]; - } - for (i = 0; i < 6; ++i) { - chk = bech32_polymod_step(chk); - } - chk ^= bech32_final_constant(enc); - for (i = 0; i < 6; ++i) { - *(output++) = bech32_charset[(chk >> ((5 - i) * 5)) & 0x1f]; - } - *output = 0; - return 1; -} - -bech32_encoding bech32_decode_len(char* hrp, uint8_t *data, size_t *data_len, const char *input, size_t input_len, int max_hrp_len) { - uint32_t chk = 1; - size_t i; - size_t hrp_len; - int have_lower = 0, have_upper = 0; - if (input_len < 8) { - return BECH32_ENCODING_NONE; - } - *data_len = 0; - while (*data_len < input_len && input[(input_len - 1) - *data_len] != '1') { - ++(*data_len); - } - hrp_len = input_len - (1 + *data_len); - // Maximum amount of text content is buffer length - 1 byte, to account for the null-terminator - int max_hrp_content_len = max_hrp_len - 1; - if (hrp_len > max_hrp_content_len) - return BECH32_ENCODING_NONE; - if (1 + *data_len >= input_len || *data_len < 6) { - return BECH32_ENCODING_NONE; - } - *(data_len) -= 6; - for (i = 0; i < hrp_len; ++i) { - int ch = input[i]; - if (ch < 33 || ch > 126) { - return BECH32_ENCODING_NONE; - } - if (ch >= 'a' && ch <= 'z') { - have_lower = 1; - } else if (ch >= 'A' && ch <= 'Z') { - have_upper = 1; - ch = (ch - 'A') + 'a'; - } - hrp[i] = ch; - chk = bech32_polymod_step(chk) ^ (ch >> 5); - } - hrp[i] = 0; - chk = bech32_polymod_step(chk); - for (i = 0; i < hrp_len; ++i) { - chk = bech32_polymod_step(chk) ^ (input[i] & 0x1f); - } - ++i; - while (i < input_len) { - int v = (input[i] & 0x80) ? -1 : bech32_charset_rev[(int)input[i]]; - if (input[i] >= 'a' && input[i] <= 'z') have_lower = 1; - if (input[i] >= 'A' && input[i] <= 'Z') have_upper = 1; - if (v == -1) { - return BECH32_ENCODING_NONE; - } - chk = bech32_polymod_step(chk) ^ v; - if (i + 6 < input_len) { - data[i - (1 + hrp_len)] = v; - } - ++i; - } - if (have_lower && have_upper) { - return BECH32_ENCODING_NONE; - } - if (chk == bech32_final_constant(BECH32_ENCODING_BECH32)) { - return BECH32_ENCODING_BECH32; - } else if (chk == bech32_final_constant(BECH32_ENCODING_BECH32M)) { - return BECH32_ENCODING_BECH32M; - } else { - return BECH32_ENCODING_NONE; - } -} - -/** - * Decode a bech32 string. - * - * IMPORTANT: Caller must allocate hrp buffer of at least (strlen(input) - 6) bytes - * to hold the maximum possible HRP for the given input. This matches bolt11.c usage. - */ -bech32_encoding bech32_decode(char* hrp, uint8_t *data, size_t *data_len, const char *input, size_t max_input_len) { - size_t len = strlen(input); - if (len > max_input_len) { - return BECH32_ENCODING_NONE; - } - // Derive max HRP length from input: input = hrp + '1' + data + checksum(6) - // Caller must allocate hrp buffer of at least len-6 bytes (see bolt11.c:386) - int max_hrp_len = (len > 6) ? (int)(len - 6) : 1; - return bech32_decode_len(hrp, data, data_len, input, len, max_hrp_len); -} - -int bech32_convert_bits(uint8_t* out, size_t* outlen, int outbits, const uint8_t* in, size_t inlen, int inbits, int pad) { - uint32_t val = 0; - int bits = 0; - uint32_t maxv = (((uint32_t)1) << outbits) - 1; - *outlen = 0; - while (inlen--) { - val = (val << inbits) | *(in++); - bits += inbits; - while (bits >= outbits) { - bits -= outbits; - out[(*outlen)++] = (val >> bits) & maxv; - } - } - if (pad) { - if (bits) { - out[(*outlen)++] = (val << (outbits - bits)) & maxv; - } - } else if (((val << (outbits - bits)) & maxv) || bits >= inbits) { - return 0; - } - return 1; -} - -int segwit_addr_encode(char *output, const char *hrp, int witver, const uint8_t *witprog, size_t witprog_len) { - uint8_t data[65]; - size_t datalen = 0; - bech32_encoding enc = BECH32_ENCODING_BECH32; - if (witver > 16) return 0; - if (witver == 0 && witprog_len != 20 && witprog_len != 32) return 0; - if (witprog_len < 2 || witprog_len > 40) return 0; - if (witver > 0) enc = BECH32_ENCODING_BECH32M; - data[0] = witver; - bech32_convert_bits(data + 1, &datalen, 5, witprog, witprog_len, 8, 1); - ++datalen; - return bech32_encode(output, hrp, data, datalen, 90, enc); -} - -int segwit_addr_decode(int* witver, uint8_t* witdata, size_t* witdata_len, const char* hrp, const char* addr) { - uint8_t data[84]; - char hrp_actual[84]; - size_t data_len; - bech32_encoding enc = bech32_decode(hrp_actual, data, &data_len, addr, 90); - if (enc == BECH32_ENCODING_NONE) return 0; - if (data_len == 0 || data_len > 65) return 0; - if (strncmp(hrp, hrp_actual, 84) != 0) return 0; - if (data[0] > 16) return 0; - if (data[0] == 0 && enc != BECH32_ENCODING_BECH32) return 0; - if (data[0] > 0 && enc != BECH32_ENCODING_BECH32M) return 0; - *witdata_len = 0; - if (!bech32_convert_bits(witdata, witdata_len, 8, data + 1, data_len - 1, 5, 0)) return 0; - if (*witdata_len < 2 || *witdata_len > 40) return 0; - if (data[0] == 0 && *witdata_len != 20 && *witdata_len != 32) return 0; - *witver = data[0]; - return 1; -} diff --git a/nostrdb/src/bolt11/bech32.h b/nostrdb/src/bolt11/bech32.h deleted file mode 100644 index f69eb4a94c..0000000000 --- a/nostrdb/src/bolt11/bech32.h +++ /dev/null @@ -1,143 +0,0 @@ -/* Stolen from https://github.com/sipa/bech32/blob/master/ref/c/segwit_addr.h, - * with only the two ' > 90' checks hoisted */ - -/* Copyright (c) 2017, 2021 Pieter Wuille - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef LIGHTNING_COMMON_BECH32_H -#define LIGHTNING_COMMON_BECH32_H -#include "../config.h" - -#include -#include - -/** Encode a SegWit address - * - * Out: output: Pointer to a buffer of size 73 + strlen(hrp) that will be - * updated to contain the null-terminated address. - * In: hrp: Pointer to the null-terminated human readable part to use - * (chain/network specific). - * ver: Version of the witness program (between 0 and 16 inclusive). - * prog: Data bytes for the witness program (between 2 and 40 bytes). - * prog_len: Number of data bytes in prog. - * Returns 1 if successful. - */ -int segwit_addr_encode( - char *output, - const char *hrp, - int ver, - const uint8_t *prog, - size_t prog_len -); - -/** Decode a SegWit address - * - * Out: ver: Pointer to an int that will be updated to contain the witness - * program version (between 0 and 16 inclusive). - * prog: Pointer to a buffer of size 40 that will be updated to - * contain the witness program bytes. - * prog_len: Pointer to a size_t that will be updated to contain the length - * of bytes in prog. - * hrp: Pointer to the null-terminated human readable part that is - * expected (chain/network specific). - * addr: Pointer to the null-terminated address. - * Returns 1 if successful. - */ -int segwit_addr_decode( - int* ver, - uint8_t* prog, - size_t* prog_len, - const char* hrp, - const char* addr -); - -/** Supported encodings. */ -typedef enum { - BECH32_ENCODING_NONE, - BECH32_ENCODING_BECH32, - BECH32_ENCODING_BECH32M -} bech32_encoding; - -/** Encode a Bech32 or Bech32m string - * - * Out: output: Pointer to a buffer of size strlen(hrp) + data_len + 8 that - * will be updated to contain the null-terminated Bech32 string. - * In: hrp : Pointer to the null-terminated human readable part. - * data : Pointer to an array of 5-bit values. - * data_len: Length of the data array. - * max_input_len: Maximum valid length of input (90 for segwit usage). - * enc: Which encoding to use (BECH32_ENCODING_BECH32{,M}). - * Returns 1 if successful. - */ -int bech32_encode( - char *output, - const char *hrp, - const uint8_t *data, - size_t data_len, - size_t max_input_len, - bech32_encoding enc -); - -/** Decode a Bech32 or Bech32m string - * - * Out: hrp: Pointer to a buffer of size strlen(input) - 6. Will be - * updated to contain the null-terminated human readable part. - * data: Pointer to a buffer of size strlen(input) - 8 that will - * hold the encoded 5-bit data values. - * data_len: Pointer to a size_t that will be updated to be the number - * of entries in data. - * In: input: Pointer to a null-terminated Bech32 string. - * max_input_len: Maximum valid length of input (90 for segwit usage). - * Returns BECH32_ENCODING_BECH32{,M} to indicate decoding was successful - * with the specified encoding standard. BECH32_ENCODING_NONE is returned if - * decoding failed. - */ -bech32_encoding bech32_decode( - char *hrp, - uint8_t *data, - size_t *data_len, - const char *input, - size_t max_input_len -); - -bech32_encoding bech32_decode_len( - char *hrp, - uint8_t *data, - size_t *data_len, - const char *input, - size_t input_len, - int max_prefix_len -); - -/* Helper from bech32: translates inbits-bit bytes to outbits-bit bytes. - * @outlen is incremented as bytes are added. - * @pad is true if we're to pad, otherwise truncate last byte if necessary - */ -int bech32_convert_bits(uint8_t* out, size_t* outlen, int outbits, - const uint8_t* in, size_t inlen, int inbits, - int pad); - -/* The charset, and reverse mapping */ -extern const char bech32_charset[32]; -extern const int8_t bech32_charset_rev[128]; - -#endif /* LIGHTNING_COMMON_BECH32_H */ - diff --git a/nostrdb/src/bolt11/bech32_util.c b/nostrdb/src/bolt11/bech32_util.c deleted file mode 100644 index 3667c28e68..0000000000 --- a/nostrdb/src/bolt11/bech32_util.c +++ /dev/null @@ -1,127 +0,0 @@ -#include "config.h" -#include "bech32.h" -#include "bech32_util.h" -#include "hash_u5.h" -#include "talstr.h" -#include "tal.h" -#include "short_types.h" -#include - -static u8 get_bit(const u8 *src, size_t bitoff) -{ - return ((src[bitoff / 8] >> (7 - (bitoff % 8))) & 1); -} - -void bech32_push_bits(u5 **data, const void *src, size_t nbits) -{ - size_t i, b; - size_t data_len = tal_count(*data); - - for (i = 0; i < nbits; i += b) { - tal_resize(data, data_len+1); - (*data)[data_len] = 0; - for (b = 0; b < 5; b++) { - (*data)[data_len] <<= 1; - /* If we need bits we don't have, zero */ - if (i+b < nbits) - (*data)[data_len] |= get_bit(src, i+b); - } - data_len++; - } -} - -static u8 get_u5_bit(const u5 *src, size_t bitoff) -{ - return ((src[bitoff / 5] >> (4 - (bitoff % 5))) & 1); -} - -void bech32_pull_bits(u8 **data, const u5 *src, size_t nbits) -{ - size_t i; - size_t data_len = tal_count(*data); - - /* We discard trailing bits. */ - for (i = 0; i + 8 <= nbits; i += 8) { - tal_resize(data, data_len+1); - (*data)[data_len] = 0; - for (size_t b = 0; b < 8; b++) { - (*data)[data_len] <<= 1; - (*data)[data_len] |= get_u5_bit(src, i+b); - } - data_len++; - } -} - -/* Returns a char, tracks case. */ -static int fixup_char(int c, bool *upper, bool *lower) -{ - if (c >= 'A' && c <= 'Z') { - *upper = true; - return c + ('a' - 'A'); - } else if (c >= 'a' && c <= 'z') { - *lower = true; - } - return c; -} - -bool from_bech32_charset(const tal_t *ctx, - const char *bech32, - size_t bech32_len, - char **hrp, u8 **data) -{ - u5 *u5data; - const char *sep; - bool upper = false, lower = false; - size_t datalen; - - sep = memchr(bech32, '1', bech32_len); - if (!sep) - return false; - - *hrp = tal_strndup(ctx, bech32, sep - bech32); - for (size_t i = 0; i < strlen(*hrp); i++) - (*hrp)[i] = fixup_char((*hrp)[i], &upper, &lower); - - datalen = bech32_len - (sep + 1 - bech32); - u5data = tal_arr(NULL, u5, datalen); - for (size_t i = 0; i < datalen; i++) { - int c = sep[1+i]; - if (c < 0 || c > 128) - goto fail; - c = fixup_char(c, &upper, &lower); - if (bech32_charset_rev[c] == -1) - goto fail; - u5data[i] = bech32_charset_rev[c]; - } - - /* Check case consistency */ - if (upper && lower) - goto fail; - - *data = tal_arr(ctx, u8, 0); - bech32_pull_bits(data, u5data, tal_bytelen(u5data) * 5); - tal_free(u5data); - return true; - -fail: - *hrp = tal_free(*hrp); - tal_free(u5data); - return false; -} - -char *to_bech32_charset(const tal_t *ctx, - const char *hrp, const u8 *data) -{ - u5 *u5data = tal_arr(NULL, u5, 0); - char *ret; - - bech32_push_bits(&u5data, data, tal_bytelen(data) * 8); - ret = tal_dup_arr(ctx, char, hrp, strlen(hrp), - 1 + tal_bytelen(u5data) + 1); - ret[strlen(hrp)] = '1'; - for (size_t i = 0; i < tal_bytelen(u5data); i++) - ret[strlen(hrp) + 1 + i] = bech32_charset[u5data[i]]; - ret[strlen(hrp) + 1 + tal_bytelen(u5data)] = '\0'; - tal_free(u5data); - return ret; -} diff --git a/nostrdb/src/bolt11/bech32_util.h b/nostrdb/src/bolt11/bech32_util.h deleted file mode 100644 index 3d5ce31395..0000000000 --- a/nostrdb/src/bolt11/bech32_util.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef LIGHTNING_COMMON_BECH32_UTIL_H -#define LIGHTNING_COMMON_BECH32_UTIL_H -#include "../config.h" - -#include "ccan/tal/tal.h" -#include "hash_u5.h" - -/** - * Push the bytes in src in 5 bit format onto the end of data. - */ -void bech32_push_bits(u5 **data, const void *src, size_t nbits); - -/** - * Push the bytes in src in 8 bit format onto the end of data. - */ -void bech32_pull_bits(u8 **data, const u5 *src, size_t nbits); - -/** - * Checksumless bech32 routines. - */ -bool from_bech32_charset(const tal_t *ctx, - const char *bech32, size_t bech32_len, - char **hrp, u8 **data); - -char *to_bech32_charset(const tal_t *ctx, - const char *hrp, const u8 *data); - -#endif /* LIGHTNING_COMMON_BECH32_UTIL_H */ diff --git a/nostrdb/src/bolt11/bolt11.c b/nostrdb/src/bolt11/bolt11.c deleted file mode 100644 index 80477c984c..0000000000 --- a/nostrdb/src/bolt11/bolt11.c +++ /dev/null @@ -1,632 +0,0 @@ -// -// bolt11.c -// damus -// -// Created by William Casarin on 2022-10-18. -// - -#include "bolt11.h" - -//#include "address.h" -//#include "script.h" -#include "bech32.h" -#include "ccan/utf8/utf8.h" -#include "ccan/compiler//compiler.h" -#include "ccan/endian/endian.h" -#include "ccan/list/list.h" -#include "ccan/tal/str/str.h" -#include "ccan/tal/tal.h" -#include "node_id.h" -#include "bech32_util.h" -#include "bolt11.h" -#include "amount.h" -#include "ccan/array_size/array_size.h" -#include "ccan/structeq/structeq.h" - -//#include "features.h" -#include -#include -#include - -#define MSAT_PER_SAT ((u64)1000) -#define SAT_PER_BTC ((u64)100000000) -#define MSAT_PER_BTC (MSAT_PER_SAT * SAT_PER_BTC) - -struct multiplier { - const char letter; - /* We can't represent p postfix to msat, so we multiply this by 10 */ - u64 m10; -}; - -/* BOLT #11: - * - * The following `multiplier` letters are defined: - * - * * `m` (milli): multiply by 0.001 - * * `u` (micro): multiply by 0.000001 - * * `n` (nano): multiply by 0.000000001 - * * `p` (pico): multiply by 0.000000000001 - */ -static struct multiplier multipliers[] = { - { 'm', 10 * MSAT_PER_BTC / 1000 }, - { 'u', 10 * MSAT_PER_BTC / 1000000 }, - { 'n', 10 * MSAT_PER_BTC / 1000000000 }, - { 'p', 10 * MSAT_PER_BTC / 1000000000000ULL } -}; - -/* If pad is false, we discard any bits which don't fit in the last byte. - * Otherwise we add an extra byte. Returns error string or NULL on success. */ -static const char *pull_bits(struct hash_u5 *hu5, - const u5 **data, size_t *data_len, - void *dst, size_t nbits, - bool pad) -{ - size_t n5 = nbits / 5; - size_t len = 0; - - if (nbits % 5) - n5++; - - if (*data_len < n5) - return "truncated"; - if (!bech32_convert_bits(dst, &len, 8, *data, n5, 5, pad)) - return "non-zero trailing bits"; - if (hu5) - hash_u5(hu5, *data, n5); - *data += n5; - *data_len -= n5; - - return NULL; -} - -/* Helper for pulling a variable-length big-endian int. */ -static const char *pull_uint(struct hash_u5 *hu5, - const u5 **data, size_t *data_len, - u64 *val, size_t databits) -{ - be64 be_val; - const char *err; - - /* Too big. */ - if (databits > sizeof(be_val) * CHAR_BIT) - return "integer too large"; - err = pull_bits(hu5, data, data_len, &be_val, databits, true); - if (err) - return err; - if (databits == 0) - *val = 0; - else - *val = be64_to_cpu(be_val) >> - (sizeof(be_val) * CHAR_BIT - databits); - return NULL; -} - -static void *pull_all(const tal_t *ctx, - struct hash_u5 *hu5, - const u5 **data, size_t *data_len, - bool pad, - const char **err) -{ - void *ret; - size_t retlen; - - if (pad) - retlen = (*data_len * 5 + 7) / 8; - else - retlen = (*data_len * 5) / 8; - - ret = tal_arr(ctx, u8, retlen); - *err = pull_bits(hu5, data, data_len, ret, *data_len * 5, pad); - if (*err) - return tal_free(ret); - return ret; -} - -/* Frees bolt11, returns NULL. */ -static struct bolt11 *decode_fail(struct bolt11 *b11, char **fail, - const char *fmt, ...) - PRINTF_FMT(3,4); - -static struct bolt11 *decode_fail(struct bolt11 *b11, char **fail, - const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - if (fail) - *fail = tal_vfmt(tal_parent(b11), fmt, ap); - va_end(ap); - return tal_free(b11); -} - -/* - * These handle specific fields in the payment request; returning the problem - * if any, or NULL. - */ -static const char *unknown_field(struct bolt11 *b11, - struct hash_u5 *hu5, - const u5 **data, size_t *field_len, - u5 type) -{ - const char *err; - - tal_free(pull_all(NULL, hu5, data, field_len, true, &err)); - return err; -} - -/* If field isn't expected length (in *bech32*!), call unknown_field. - * Otherwise copy into dst without padding, set have_flag if non-NULL. */ -static const char *pull_expected_length(struct bolt11 *b11, - struct hash_u5 *hu5, - const u5 **data, size_t *field_len, - size_t expected_length, - u5 type, - bool *have_flag, - void *dst) -{ - if (*field_len != expected_length) - return unknown_field(b11, hu5, data, field_len, type); - - if (have_flag) - *have_flag = true; - return pull_bits(hu5, data, field_len, dst, *field_len * 5, false); -} - -/* BOLT #11: - * - * `p` (1): `data_length` 52. 256-bit SHA256 payment_hash. Preimage of this - * provides proof of payment - */ -static const char *decode_p(struct bolt11 *b11, - const struct feature_set *our_features, - struct hash_u5 *hu5, - const u5 **data, size_t *field_len, - bool *have_p) -{ - struct sha256 payment_hash; - /* BOLT #11: - * - * A payer... SHOULD use the first `p` field that it did NOT - * skip as the payment hash. - */ - assert(!*have_p); - - /* BOLT #11: - * - * A reader... MUST skip over unknown fields, OR an `f` field - * with unknown `version`, OR `p`, `h`, `s` or `n` fields that do - * NOT have `data_length`s of 52, 52, 52 or 53, respectively. - */ - return pull_expected_length(b11, hu5, data, field_len, 52, 'p', - have_p, &payment_hash); -} - -/* Check for valid UTF-8 */ -static bool utf8_check(const void *vbuf, size_t buflen) -{ - const u8 *buf = vbuf; - struct utf8_state utf8_state = UTF8_STATE_INIT; - bool need_more = false; - - for (size_t i = 0; i < buflen; i++) { - if (!utf8_decode(&utf8_state, buf[i])) { - need_more = true; - continue; - } - need_more = false; - if (errno != 0) - return false; - } - return !need_more; -} - -static char *utf8_str(const tal_t *ctx, const u8 *buf TAKES, size_t buflen) -{ - char *ret; - - if (!utf8_check(buf, buflen)) { - if (taken(buf)) - tal_free(buf); - return NULL; - } - - /* Add one for nul term */ - ret = tal_dup_arr(ctx, char, (const char *)buf, buflen, 1); - ret[buflen] = '\0'; - return ret; -} - -/* BOLT #11: - * - * `d` (13): `data_length` variable. Short description of purpose of payment - * (UTF-8), e.g. '1 cup of coffee' or 'ナンセンス 1杯' - */ -static const char *decode_d(struct bolt11 *b11, - const struct feature_set *our_features, - struct hash_u5 *hu5, - const u5 **data, size_t *field_len, - bool *have_d) -{ - u8 *desc; - const char *err; - - assert(!*have_d); - desc = pull_all(NULL, hu5, data, field_len, false, &err); - if (!desc) - return err; - - *have_d = true; - b11->description = utf8_str(b11, take(desc), tal_bytelen(desc)); - if (b11->description) - return NULL; - - return tal_fmt(b11, "d: invalid utf8"); -} - -/* BOLT #11: - * - * `h` (23): `data_length` 52. 256-bit description of purpose of payment - * (SHA256). This is used to commit to an associated description that is over - * 639 bytes, but the transport mechanism for the description in that case is - * transport specific and not defined here. - */ -static const char *decode_h(struct bolt11 *b11, - const struct feature_set *our_features, - struct hash_u5 *hu5, - const u5 **data, size_t *field_len, - bool *have_h) -{ - const char *err; - struct sha256 hash; - - assert(!*have_h); - /* BOLT #11: - * - * A reader... MUST skip over unknown fields, OR an `f` field - * with unknown `version`, OR `p`, `h`, `s` or `n` fields that do - * NOT have `data_length`s of 52, 52, 52 or 53, respectively. */ - err = pull_expected_length(b11, hu5, data, field_len, 52, 'h', - have_h, &hash); - - /* If that gave us the hash, store it */ - if (*have_h) - b11->description_hash = tal_dup(b11, struct sha256, &hash); - return err; -} - -/* BOLT #11: - * - * `x` (6): `data_length` variable. `expiry` time in seconds - * (big-endian). Default is 3600 (1 hour) if not specified. - */ -#define DEFAULT_X 3600 -static const char *decode_x(struct bolt11 *b11, - const struct feature_set *our_features, - struct hash_u5 *hu5, - const u5 **data, size_t *field_len, - bool *have_x) -{ - const char *err; - - assert(!*have_x); - - /* FIXME: Put upper limit in bolt 11 */ - err = pull_uint(hu5, data, field_len, &b11->expiry, *field_len * 5); - if (err) - return tal_fmt(b11, "x: %s", err); - - *have_x = true; - return NULL; -} - -static struct bolt11 *new_bolt11(const tal_t *ctx, - const struct amount_msat *msat TAKES) -{ - struct bolt11 *b11 = tal(ctx, struct bolt11); - - b11->description = NULL; - b11->description_hash = NULL; - b11->msat = NULL; - b11->expiry = DEFAULT_X; - - if (msat) - b11->msat = tal_dup(b11, struct amount_msat, msat); - return b11; -} - -struct decoder { - /* What BOLT11 letter this is */ - const char letter; - /* If false, then any dups get treated as "unknown" fields */ - bool allow_duplicates; - /* Routine to decode: returns NULL if it decodes ok, and - * sets *have_field = true if it is not an unknown form. - * Otherwise returns error string (literal or tal off b11). */ - const char *(*decode)(struct bolt11 *b11, - const struct feature_set *our_features, - struct hash_u5 *hu5, - const u5 **data, size_t *field_len, - bool *have_field); -}; - -static const struct decoder decoders[] = { - /* BOLT #11: - * - * A payer... SHOULD use the first `p` field that it did NOT - * skip as the payment hash. - */ - { 'p', false, decode_p }, - { 'd', false, decode_d }, - { 'h', false, decode_h }, - { 'x', false, decode_x }, -}; - -static const struct decoder *find_decoder(char c) -{ - for (size_t i = 0; i < ARRAY_SIZE(decoders); i++) { - if (decoders[i].letter == c) - return decoders + i; - } - return NULL; -} - -static bool bech32_decode_alloc(const tal_t *ctx, - const char **hrp_ret, - const u5 **data_ret, - size_t *data_len, - const char *str) -{ - size_t len = strlen(str); - - /* Minimum: 1 HRP + '1' separator + 6 checksum = 8 chars. - * Guard prevents underflow in (len - 6) and (len - 8) below. */ - if (len < 8) - return false; - - char *hrp = tal_arr(ctx, char, len - 6); - u5 *data = tal_arr(ctx, u5, len - 8); - - if (bech32_decode(hrp, data, data_len, str, (size_t)-1) - != BECH32_ENCODING_BECH32) { - tal_free(hrp); - tal_free(data); - return false; - } - - /* We needed temporaries because these are const */ - *hrp_ret = hrp; - *data_ret = data; - return true; -} - -static bool has_lightning_prefix(const char *invstring) -{ - /* BOLT #11: - * - * If a URI scheme is desired, the current recommendation is to either - * use 'lightning:' as a prefix before the BOLT-11 encoding */ - return (strstarts(invstring, "lightning:") || - strstarts(invstring, "LIGHTNING:")); -} - -static char *str_lowering(const void *ctx, const char *string TAKES) -{ - char *ret; - - ret = tal_strdup(ctx, string); - for (char *p = ret; *p; p++) *p = tolower(*p); - return ret; -} - -static const char *to_canonical_invstr(const tal_t *ctx, - const char *invstring) -{ - if (has_lightning_prefix(invstring)) - invstring += strlen("lightning:"); - return str_lowering(ctx, invstring); -} - -/* Extracts signature but does not check it. */ -static struct bolt11 *bolt11_decode_nosig(const tal_t *ctx, const char *str, - const struct feature_set *our_features, - struct sha256 *hash, - const u5 **sig, - bool *have_n, - char **fail) -{ - const char *hrp, *prefix; - char *amountstr; - const u5 *data; - size_t data_len; - struct bolt11 *b11 = new_bolt11(ctx, NULL); - struct hash_u5 hu5; - const char *err; - /* We don't need all of these, but in theory we could have 32 types */ - bool have_field[32]; - - memset(have_field, 0, sizeof(have_field)); - - if (strlen(str) < 8) - return decode_fail(b11, fail, "Bad bech32 string"); - - if (!bech32_decode_alloc(b11, &hrp, &data, &data_len, str)) - return decode_fail(b11, fail, "Bad bech32 string"); - - /* For signature checking at the end. */ - hash_u5_init(&hu5, hrp); - - /* BOLT #11: - * - * The human-readable part of a Lightning invoice consists of two sections: - * 1. `prefix`: `ln` + BIP-0173 currency prefix (e.g. `lnbc` for Bitcoin mainnet, - * `lntb` for Bitcoin testnet, `lntbs` for Bitcoin signet, and `lnbcrt` for Bitcoin regtest) - * 1. `amount`: optional number in that currency, followed by an optional - * `multiplier` letter. The unit encoded here is the 'social' convention of a payment unit -- in the case of Bitcoin the unit is 'bitcoin' NOT satoshis. - */ - prefix = tal_strndup(b11, hrp, strcspn(hrp, "0123456789")); - - /* BOLT #11: - * - * A reader...if it does NOT understand the `prefix`... MUST fail the payment. - */ - if (!strstarts(prefix, "ln")) - return decode_fail(b11, fail, - "Prefix '%s' does not start with ln", prefix); - - /* BOLT #11: - * - * - if the `amount` is empty: - * */ - amountstr = tal_strdup(b11, hrp + strlen(prefix)); - if (streq(amountstr, "")) { - /* BOLT #11: - * - * - SHOULD indicate to the payer that amount is unspecified. - */ - b11->msat = NULL; - } else { - u64 m10 = 10 * MSAT_PER_BTC; /* Pico satoshis in a Bitcoin */ - u64 amount; - char *end; - - /* Gather and trim multiplier */ - end = amountstr + strlen(amountstr)-1; - for (size_t i = 0; i < ARRAY_SIZE(multipliers); i++) { - if (*end == multipliers[i].letter) { - m10 = multipliers[i].m10; - *end = '\0'; - break; - } - } - - /* BOLT #11: - * - * if `amount` contains a non-digit OR is followed by - * anything except a `multiplier` (see table above)... MUST fail the - * payment. - **/ - amount = strtoull(amountstr, &end, 10); - if (amount == ULLONG_MAX && errno == ERANGE) - return decode_fail(b11, fail, - "Invalid amount '%s'", amountstr); - if (!*amountstr || *end) - return decode_fail(b11, fail, - "Invalid amount postfix '%s'", end); - - /* BOLT #11: - * - * if the `multiplier` is present... MUST multiply - * `amount` by the `multiplier` value to derive the - * amount required for payment. - */ - b11->msat = tal(b11, struct amount_msat); - /* BOLT #11: - * - * - if multiplier is `p` and the last decimal of `amount` is - * not 0: - * - MUST fail the payment. - */ - if (amount * m10 % 10 != 0) - return decode_fail(b11, fail, - "Invalid sub-millisatoshi amount" - " '%sp'", amountstr); - - *b11->msat = amount_msat(amount * m10 / 10); - } - - /* BOLT #11: - * - * The data part of a Lightning invoice consists of multiple sections: - * - * 1. `timestamp`: seconds-since-1970 (35 bits, big-endian) - * 1. zero or more tagged parts - * 1. `signature`: Bitcoin-style signature of above (520 bits) - */ - err = pull_uint(&hu5, &data, &data_len, &b11->timestamp, 35); - if (err) - return decode_fail(b11, fail, - "Can't get 35-bit timestamp: %s", err); - - while (data_len > 520 / 5) { - const char *problem = NULL; - u64 type, field_len64; - size_t field_len; - const struct decoder *decoder; - - /* BOLT #11: - * - * Each Tagged Field is of the form: - * - * 1. `type` (5 bits) - * 1. `data_length` (10 bits, big-endian) - * 1. `data` (`data_length` x 5 bits) - */ - err = pull_uint(&hu5, &data, &data_len, &type, 5); - if (err) - return decode_fail(b11, fail, - "Can't get tag: %s", err); - err = pull_uint(&hu5, &data, &data_len, &field_len64, 10); - if (err) - return decode_fail(b11, fail, - "Can't get length: %s", err); - - /* Can't exceed total data remaining. */ - if (field_len64 > data_len) - return decode_fail(b11, fail, "%c: truncated", - bech32_charset[type]); - - /* These are different types on 32 bit! But since data_len is - * also size_t, above check ensures this will fit. */ - field_len = field_len64; - assert(field_len == field_len64); - - /* Do this now: the decode function fixes up the data ptr */ - data_len -= field_len; - - decoder = find_decoder(bech32_charset[type]); - if (!decoder || (have_field[type] && !decoder->allow_duplicates)) { - problem = unknown_field(b11, &hu5, &data, &field_len, - bech32_charset[type]); - } else { - problem = decoder->decode(b11, our_features, &hu5, - &data, &field_len, &have_field[type]); - } - if (problem) - return decode_fail(b11, fail, "%s", problem); - if (field_len) - return decode_fail(b11, fail, "%c: extra %zu bytes", - bech32_charset[type], field_len); - } - - if (!have_field[bech32_charset_rev['p']]) - return decode_fail(b11, fail, "No valid 'p' field found"); - - /* BOLT #11: - * A writer: - *... - * - MUST include either exactly one `d` or exactly one `h` field. - */ - /* FIXME: It doesn't actually say the reader must check though! */ - if (!have_field[bech32_charset_rev['d']] - && !have_field[bech32_charset_rev['h']]) - return decode_fail(b11, fail, - "must have either 'd' or 'h' field"); - - hash_u5_done(&hu5, hash); - *sig = tal_dup_arr(ctx, u5, data, data_len, 0); - - *have_n = have_field[bech32_charset_rev['n']]; - return b11; -} - -struct bolt11 *bolt11_decode_minimal(const tal_t *ctx, const char *str, - char **fail) -{ - const u5 *sigdata; - struct sha256 hash; - bool have_n; - - str = to_canonical_invstr(ctx, str); - return bolt11_decode_nosig(ctx, str, NULL, &hash, &sigdata, &have_n, - fail); -} diff --git a/nostrdb/src/bolt11/bolt11.h b/nostrdb/src/bolt11/bolt11.h deleted file mode 100644 index 9fb24fd434..0000000000 --- a/nostrdb/src/bolt11/bolt11.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef LIGHTNING_COMMON_BOLT11_H -#define LIGHTNING_COMMON_BOLT11_H -/* Borrowed from CLN's common/bolt11.[ch] implementation as of v24.08rc1 */ - -#include "ccan/short_types/short_types.h" -#include "hash_u5.h" -#include "amount.h" -#include "ccan/list/list.h" -#include "amount.h" -#include "node_id.h" - -/* We only have 10 bits for the field length, meaning < 640 bytes */ -#define BOLT11_FIELD_BYTE_LIMIT ((1 << 10) * 5 / 8) - -/* BOLT #11: - * * `c` (24): `data_length` variable. - * `min_final_cltv_expiry` to use for the last HTLC in the route. - * Default is 18 if not specified. - */ -#define DEFAULT_FINAL_CLTV_DELTA 18 - -struct feature_set; - -struct bolt11_field { - struct list_node list; - - char tag; - u5 *data; -}; - -struct bolt11 { - u64 timestamp; - struct amount_msat *msat; /* NULL if not specified. */ - - /* description_hash valid if and only if description is NULL. */ - const char *description; - struct sha256 *description_hash; - - /* How many seconds to pay from @timestamp above. */ - u64 expiry; -}; - -/* Does not check signature, nor extract node. */ -struct bolt11 *bolt11_decode_minimal(const tal_t *ctx, const char *str, char **fail); - -#endif /* LIGHTNING_COMMON_BOLT11_H */ diff --git a/nostrdb/src/bolt11/debug.h b/nostrdb/src/bolt11/debug.h deleted file mode 100644 index 11a6344ec8..0000000000 --- a/nostrdb/src/bolt11/debug.h +++ /dev/null @@ -1,15 +0,0 @@ - -#ifndef PROTOVERSE_DEBUG_H -#define PROTOVERSE_DEBUG_H - -#include - -#define unusual(...) fprintf(stderr, "UNUSUAL: " __VA_ARGS__) - -#ifdef DEBUG -#define debug(...) printf(__VA_ARGS__) -#else -#define debug(...) -#endif - -#endif /* PROTOVERSE_DEBUG_H */ diff --git a/nostrdb/src/bolt11/error.c b/nostrdb/src/bolt11/error.c deleted file mode 100644 index 5f26a2b8bc..0000000000 --- a/nostrdb/src/bolt11/error.c +++ /dev/null @@ -1,34 +0,0 @@ - -#include "error.h" - -#include -#include - -int note_error_(struct errors *errs_, struct cursor *p, const char *fmt, ...) -{ - static char buf[512]; - struct error err; - struct cursor *errs; - va_list ap; - - errs = &errs_->cur; - - if (errs_->enabled == 0) - return 0; - - va_start(ap, fmt); - vsprintf(buf, fmt, ap); - va_end(ap); - - err.msg = buf; - err.pos = p ? (int)(p->p - p->start) : 0; - - if (!cursor_push_error(errs, &err)) { - fprintf(stderr, "arena OOM when recording error, "); - fprintf(stderr, "errs->p at %ld, remaining %ld, strlen %ld\n", - errs->p - errs->start, errs->end - errs->p, strlen(buf)); - } - - return 0; -} - diff --git a/nostrdb/src/bolt11/error.h b/nostrdb/src/bolt11/error.h deleted file mode 100644 index 48a6299650..0000000000 --- a/nostrdb/src/bolt11/error.h +++ /dev/null @@ -1,33 +0,0 @@ - -#ifndef PROTOVERSE_ERROR_H -#define PROTOVERSE_ERROR_H - -#include "cursor.h" - -struct error { - int pos; - const char *msg; -}; - -struct errors { - struct cursor cur; - int enabled; -}; - -#define note_error(errs, p, fmt, ...) note_error_(errs, p, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__) - -static inline int cursor_push_error(struct cursor *cur, struct error *err) -{ - return cursor_push_int(cur, err->pos) && - cursor_push_c_str(cur, err->msg); -} - -static inline int cursor_pull_error(struct cursor *cur, struct error *err) -{ - return cursor_pull_int(cur, &err->pos) && - cursor_pull_c_str(cur, &err->msg); -} - -int note_error_(struct errors *errs, struct cursor *p, const char *fmt, ...); - -#endif /* PROTOVERSE_ERROR_H */ diff --git a/nostrdb/src/bolt11/hash_u5.c b/nostrdb/src/bolt11/hash_u5.c deleted file mode 100644 index 04cb5fcee7..0000000000 --- a/nostrdb/src/bolt11/hash_u5.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "../config.h" -#include "ccan/endian/endian.h" -#include "ccan/short_types/short_types.h" -#include "hash_u5.h" -#include - -void hash_u5_init(struct hash_u5 *hu5, const char *hrp) -{ - hu5->buf = 0; - hu5->num_bits = 0; - sha256_init(&hu5->hash); - sha256_update(&hu5->hash, hrp, strlen(hrp)); -} - -void hash_u5(struct hash_u5 *hu5, const u8 *u5, size_t len) -{ - size_t bits = len * 5; - - while (bits) { - size_t n = 5; - - if (bits < n) - n = bits; - - hu5->buf <<= n; - hu5->buf |= (*u5 >> (5-n)); - bits -= n; - hu5->num_bits += n; - - if (n == 5) - u5++; - - if (hu5->num_bits >= 32) { - be32 be32 = cpu_to_be32((u32)(hu5->buf >> (hu5->num_bits-32))); - sha256_update(&hu5->hash, &be32, sizeof(be32)); - hu5->num_bits -= 32; - } - } -} - -void hash_u5_done(struct hash_u5 *hu5, struct sha256 *res) -{ - if (hu5->num_bits) { - be32 be32 = cpu_to_be32((u32)(hu5->buf << (32 - hu5->num_bits))); - - sha256_update(&hu5->hash, &be32, (hu5->num_bits + 7) / 8); - } - sha256_done(&hu5->hash, res); -} diff --git a/nostrdb/src/bolt11/hash_u5.h b/nostrdb/src/bolt11/hash_u5.h deleted file mode 100644 index 8d4debec5f..0000000000 --- a/nostrdb/src/bolt11/hash_u5.h +++ /dev/null @@ -1,20 +0,0 @@ -/* bech32 (thus bolt11) deal in 5-bit values */ -#ifndef LIGHTNING_COMMON_HASH_U5_H -#define LIGHTNING_COMMON_HASH_U5_H -#include "ccan/crypto/sha256/sha256.h" -#include "ccan/short_types/short_types.h" - -/* Type to annotate a 5 bit value. */ -typedef unsigned char u5; - -struct hash_u5 { - u64 buf; - unsigned int num_bits; - struct sha256_ctx hash; -}; - -void hash_u5_init(struct hash_u5 *hu5, const char *hrp); -void hash_u5(struct hash_u5 *hu5, const u5 *u5, size_t len); -void hash_u5_done(struct hash_u5 *hu5, struct sha256 *res); - -#endif /* LIGHTNING_COMMON_HASH_U5_H */ diff --git a/nostrdb/src/bolt11/node_id.c b/nostrdb/src/bolt11/node_id.c deleted file mode 100644 index 6778ddca60..0000000000 --- a/nostrdb/src/bolt11/node_id.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "config.h" -#include -#include "array_size.h" -#include "mem.h" -#include "hex.h" -#include "talstr.h" -#include "node_id.h" - -/* Convert from pubkey to compressed pubkey. */ -/* -void node_id_from_pubkey(struct node_id *id, const struct pubkey *key) -{ - size_t outlen = ARRAY_SIZE(id->k); - if (!secp256k1_ec_pubkey_serialize(secp256k1_ctx, id->k, &outlen, - &key->pubkey, - SECP256K1_EC_COMPRESSED)) - abort(); -} - -WARN_UNUSED_RESULT -bool pubkey_from_node_id(struct pubkey *key, const struct node_id *id) -{ - return secp256k1_ec_pubkey_parse(secp256k1_ctx, &key->pubkey, - memcheck(id->k, sizeof(id->k)), - sizeof(id->k)); -} - -WARN_UNUSED_RESULT -bool point32_from_node_id(struct point32 *key, const struct node_id *id) -{ - struct pubkey k; - if (!pubkey_from_node_id(&k, id)) - return false; - return secp256k1_xonly_pubkey_from_pubkey(secp256k1_ctx, &key->pubkey, - NULL, &k.pubkey) == 1; -} -*/ - -char *tal_hexstr(const tal_t *ctx, const void *data, size_t len) -{ - char *str = tal_arr(ctx, char, hex_str_size(len)); - hex_encode(data, len, str, hex_str_size(len)); - return str; -} - - -/* Convert to hex string of SEC1 encoding */ -char *node_id_to_hexstr(const tal_t *ctx, const struct node_id *id) -{ - return tal_hexstr(ctx, id->k, sizeof(id->k)); -} - -/* Convert from hex string of SEC1 encoding */ - -bool node_id_from_hexstr(const char *str, size_t slen, struct node_id *id) -{ - return hex_decode(str, slen, id->k, sizeof(id->k)); - /* && node_id_valid(id);*/ -} - -int node_id_cmp(const struct node_id *a, const struct node_id *b) -{ - return memcmp(a->k, b->k, sizeof(a->k)); -} diff --git a/nostrdb/src/bolt11/node_id.h b/nostrdb/src/bolt11/node_id.h deleted file mode 100644 index 00d798d670..0000000000 --- a/nostrdb/src/bolt11/node_id.h +++ /dev/null @@ -1,38 +0,0 @@ -/* Encapsulation for pubkeys used as node ids: more compact, more dangerous. */ -#ifndef LIGHTNING_COMMON_NODE_ID_H -#define LIGHTNING_COMMON_NODE_ID_H -#include "../config.h" -#include "ccan/short_types/short_types.h" -#include "ccan/tal/tal.h" - -struct node_id { - u8 k[33]; -}; - -static inline bool node_id_eq(const struct node_id *a, - const struct node_id *b) -{ - return memcmp(a->k, b->k, sizeof(a->k)) == 0; -} - -/* Is this actually a valid pubkey? Relatively expensive. */ -//bool node_id_valid(const struct node_id *id); - -/* Convert to hex string of SEC1 encoding. */ -char *node_id_to_hexstr(const tal_t *ctx, const struct node_id *id); - -/* Convert from hex string of SEC1 encoding: checks validity! */ -bool node_id_from_hexstr(const char *str, size_t slen, struct node_id *id); - -/* Compare the keys `a` and `b`. Return <0 if `a`<`b`, 0 if equal and >0 otherwise */ -int node_id_cmp(const struct node_id *a, const struct node_id *b); - -/* If the two nodes[] are id1 and id2, which index would id1 be? */ -static inline int node_id_idx(const struct node_id *id1, - const struct node_id *id2) -{ - return node_id_cmp(id1, id2) > 0; -} - -/* marshal/unmarshal functions */ -#endif /* LIGHTNING_COMMON_NODE_ID_H */ diff --git a/nostrdb/src/bolt11/overflows.h b/nostrdb/src/bolt11/overflows.h deleted file mode 100644 index 129b618fc0..0000000000 --- a/nostrdb/src/bolt11/overflows.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef LIGHTNING_COMMON_OVERFLOWS_H -#define LIGHTNING_COMMON_OVERFLOWS_H -#include "../config.h" -#include "ccan/short_types/short_types.h" - -static inline bool add_overflows_size_t(uint64_t a, uint64_t b) -{ - return (size_t)a != a || (size_t)b != b || (a + b) < (size_t)a; -} - -static inline bool add_overflows_u64(uint64_t a, uint64_t b) -{ - return (a + b) < a; -} - -static inline bool mul_overflows_u64(uint64_t a, uint64_t b) -{ - uint64_t ret; - - if (a == 0) - return false; - ret = a * b; - return (ret / a != b); -} - -static inline bool assign_overflow_u8(u8 *dst, uint64_t v) -{ - *dst = v; - return *dst == v; -} - -static inline bool assign_overflow_u16(u16 *dst, uint64_t v) -{ - *dst = v; - return *dst == v; -} - -static inline bool assign_overflow_u32(u32 *dst, uint64_t v) -{ - *dst = (u32)v; - return *dst == v; -} -#endif /* LIGHTNING_COMMON_OVERFLOWS_H */ diff --git a/nostrdb/src/config.h b/nostrdb/src/config.h deleted file mode 100644 index ed2f8e5cc5..0000000000 --- a/nostrdb/src/config.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Generated by CCAN configurator */ -#ifndef CCAN_CONFIG_H -#define CCAN_CONFIG_H -#ifndef _GNU_SOURCE -#define _GNU_SOURCE /* Always use GNU extensions. */ -#endif -#define CCAN_COMPILER "cc" -#define CCAN_CFLAGS "-g3 -ggdb -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition" -#define CCAN_OUTPUT_EXE_CFLAG "-o" - -#define HAVE_CCAN 1 -#define HAVE_UNALIGNED_ACCESS 1 -#define HAVE_TYPEOF 1 -#define HAVE_BIG_ENDIAN 0 -#define HAVE_BYTESWAP_H 0 -#define HAVE_BSWAP_64 0 -#define HAVE_LITTLE_ENDIAN 1 -#endif /* CCAN_CONFIG_H */ diff --git a/nostrdb/src/content_parser.c b/nostrdb/src/content_parser.c deleted file mode 100644 index 1e5aa7b2e6..0000000000 --- a/nostrdb/src/content_parser.c +++ /dev/null @@ -1,619 +0,0 @@ -#include "cursor.h" -#include "nostr_bech32.h" -#include "block.h" -#include "nostrdb.h" -#include "invoice.h" - -#ifndef _WIN32 -#include "bolt11/bolt11.h" -#endif - -#include "bolt11/bech32.h" - -#include -#include - -#include "cursor.h" - -struct ndb_content_parser { - int bech32_strs; - struct cursor buffer; - struct cursor content; - struct ndb_blocks *blocks; -}; - -static int parse_digit(struct cursor *cur, int *digit) { - int c; - if ((c = peek_char(cur, 0)) == -1) { - *digit = 0; - return 0; - } - - c -= '0'; - - if (c >= 0 && c <= 9) { - *digit = c; - cur->p++; - return 1; - } - return 0; -} - - -static int parse_mention_index(struct cursor *cur, struct ndb_block *block) { - int d1, d2, d3, ind; - unsigned char *start = cur->p; - - if (!parse_str(cur, "#[")) - return 0; - - if (!parse_digit(cur, &d1)) { - cur->p = start; - return 0; - } - - ind = d1; - - if (parse_digit(cur, &d2)) - ind = (d1 * 10) + d2; - - if (parse_digit(cur, &d3)) - ind = (d1 * 100) + (d2 * 10) + d3; - - if (!parse_char(cur, ']')) { - cur->p = start; - return 0; - } - - block->type = BLOCK_MENTION_INDEX; - block->block.mention_index = ind; - - return 1; -} - -static int parse_hashtag(struct cursor *cur, struct ndb_block *block) { - int c; - unsigned char *start = cur->p; - - if (!parse_char(cur, '#')) - return 0; - - c = peek_char(cur, 0); - if (c == -1 || is_whitespace(c) || c == '#') { - cur->p = start; - return 0; - } - - consume_until_boundary(cur); - - block->type = BLOCK_HASHTAG; - block->block.str.str = (const char*)(start + 1); - block->block.str.len = cur->p - (start + 1); - - return 1; -} - -// -// decode and push a bech32 mention into our blocks output buffer. -// -// bech32 blocks are stored as: -// -// bech32_buffer_size : u16 -// nostr_bech32_type : varint -// bech32_data : [u8] -// -// The TLV form is compact already, so we just use it directly -// -// This allows us to not duplicate all of the TLV encoding and decoding code -// for our on-disk nostrdb format. -// -static int push_bech32_mention(struct ndb_content_parser *p, struct ndb_str_block *bech32) -{ - // we decode the raw bech32 directly into the output buffer - struct cursor u8, u5; - unsigned char *start; - uint16_t *u8_size; - enum nostr_bech32_type type; - size_t u5_out_len, u8_out_len; - static const int MAX_PREFIX = 9; // 8 bytes for the text, 1 byte for the null terminator - char prefix[9] = {0}; - - start = p->buffer.p; - - if (!parse_nostr_bech32_type(bech32->str, &type)) - goto fail; - - // make sure to push the str block! - if (!push_str_block(&p->buffer, (const char*)p->content.start, bech32)) - goto fail; - // - // save a spot for the raw bech32 buffer size - u8_size = (uint16_t*)p->buffer.p; - if (!cursor_skip(&p->buffer, 2)) - goto fail; - - if (!cursor_push_varint(&p->buffer, type)) - goto fail; - - if (!cursor_malloc_slice(&p->buffer, &u8, bech32->len)) - goto fail; - - if (!cursor_malloc_slice(&p->buffer, &u5, bech32->len)) - goto fail; - - if (bech32_decode_len(prefix, u5.p, &u5_out_len, bech32->str, - bech32->len, MAX_PREFIX) == BECH32_ENCODING_NONE) { - goto fail; - } - - u5.p += u5_out_len; - - if (!bech32_convert_bits(u8.p, &u8_out_len, 8, u5.start, u5.p - u5.start, 5, 0)) - goto fail; - - u8.p += u8_out_len; - - // move the out cursor to the end of the 8-bit buffer - p->buffer.p = u8.p; - - if (u8_out_len > UINT16_MAX) - goto fail; - - // mark the size of the bech32 buffer - *u8_size = (uint16_t)u8_out_len; - - return 1; - -fail: - p->buffer.p = start; - return 0; -} - -static int push_invoice_str(struct ndb_content_parser *p, struct ndb_str_block *str) -{ -#ifdef _WIN32 - // we shouldn't be pushing invoices on windows until we fix - // bolt11 parser portability - return 0; -#else - unsigned char *start; - struct bolt11 *bolt11; - char *fail; - - // Create null-terminated copy since str->str points into content buffer - char *invoice_str = strndup(str->str, str->len); - if (!invoice_str) - return 0; - - bolt11 = bolt11_decode_minimal(NULL, invoice_str, &fail); - free(invoice_str); - - if (!bolt11) - return 0; - - start = p->buffer.p; - - // push the text block just incase we don't care for the invoice - if (!push_str_block(&p->buffer, (const char*)p->content.start, str)) - return 0; - - // push decoded invoice data for quick access - if (!ndb_encode_invoice(&p->buffer, bolt11)) { - p->buffer.p = start; - tal_free(bolt11); - return 0; - } - - tal_free(bolt11); - return 1; -#endif -} - -int push_block(struct ndb_content_parser *p, struct ndb_block *block); -static int add_text_block(struct ndb_content_parser *p, const char *start, const char *end) -{ - struct ndb_block b; - - if (start == end) - return 1; - - b.type = BLOCK_TEXT; - b.block.str.str = start; - b.block.str.len = end - start; - - return push_block(p, &b); -} - - -int push_block(struct ndb_content_parser *p, struct ndb_block *block) -{ - unsigned char *start = p->buffer.p; - - // push the tag - if (!cursor_push_varint(&p->buffer, block->type)) - return 0; - - switch (block->type) { - case BLOCK_HASHTAG: - case BLOCK_TEXT: - case BLOCK_URL: - if (!push_str_block(&p->buffer, (const char*)p->content.start, - &block->block.str)) - goto fail; - break; - - case BLOCK_MENTION_INDEX: - if (!cursor_push_varint(&p->buffer, block->block.mention_index)) - goto fail; - break; - case BLOCK_MENTION_BECH32: - // we only push bech32 strs here - if (!push_bech32_mention(p, &block->block.str)) { - // if we fail for some reason, try pushing just a text block - p->buffer.p = start; - if (!add_text_block(p, block->block.str.str, - block->block.str.str + - block->block.str.len)) { - goto fail; - } - } - break; - - case BLOCK_INVOICE: - // we only push invoice strs here - if (!push_invoice_str(p, &block->block.str)) { - // if we fail for some reason, try pushing just a text block - p->buffer.p = start; - if (!add_text_block(p, block->block.str.str, - block->block.str.str + block->block.str.len)) { - goto fail; - } - } - break; - } - - p->blocks->num_blocks++; - - return 1; - -fail: - p->buffer.p = start; - return 0; -} - - - -static inline int next_char_is_whitespace(unsigned char *cur, unsigned char *end) { - unsigned char *next = cur + 1; - - if (next > end) - return 0; - - if (next == end) - return 1; - - return is_whitespace(*next); -} - -static inline int char_disallowed_at_end_url(char c) -{ - return c == '.' || c == ','; - -} - -static int is_final_url_char(unsigned char *cur, unsigned char *end) -{ - if (is_whitespace(*cur)) - return 1; - - if (next_char_is_whitespace(cur, end)) { - // next char is whitespace so this char could be the final char in the url - return char_disallowed_at_end_url(*cur); - } - - // next char isn't whitespace so it can't be a final char - return 0; -} - -static int consume_until_end_url(struct cursor *cur, int or_end) { - unsigned char *start = cur->p; - - while (cur->p < cur->end) { - if (is_final_url_char(cur->p, cur->end)) - return cur->p != start; - - cur->p++; - } - - return or_end; -} - -static int consume_url_fragment(struct cursor *cur) -{ - int c; - - if ((c = peek_char(cur, 0)) < 0) - return 1; - - if (c != '#' && c != '?') { - return 1; - } - - cur->p++; - - return consume_until_end_url(cur, 1); -} - -static int consume_url_path(struct cursor *cur) -{ - int c; - - if ((c = peek_char(cur, 0)) < 0) - return 1; - - if (c != '/') { - return 1; - } - - while (cur->p < cur->end) { - c = *cur->p; - - if (c == '?' || c == '#' || is_final_url_char(cur->p, cur->end)) { - return 1; - } - - cur->p++; - } - - return 1; -} - -static int consume_url_host(struct cursor *cur) -{ - char c; - int count = 0; - - while (cur->p < cur->end) { - c = *cur->p; - // TODO: handle IDNs - if ((is_alphanumeric(c) || c == '.' || c == '-') && !is_final_url_char(cur->p, cur->end)) - { - count++; - cur->p++; - continue; - } - - return count != 0; - } - - - // this means the end of the URL hostname is the end of the buffer and we finished - return count != 0; -} - -static int parse_url(struct cursor *cur, struct ndb_block *block) { - unsigned char *start = cur->p; - unsigned char *host; - unsigned char tmp[4096]; - int host_len; - struct cursor path_cur, tmp_cur; - enum nostr_bech32_type type; - make_cursor(tmp, tmp + sizeof(tmp), &tmp_cur); - - if (!parse_str(cur, "http")) - return 0; - - if (parse_char(cur, 's') || parse_char(cur, 'S')) { - if (!parse_str(cur, "://")) { - cur->p = start; - return 0; - } - } else { - if (!parse_str(cur, "://")) { - cur->p = start; - return 0; - } - } - - // make sure to save the hostname. We will use this to detect damus.io links - host = cur->p; - - if (!consume_url_host(cur)) { - cur->p = start; - return 0; - } - - // get the length of the host string - host_len = (int)(cur->p - host); - - // save the current parse state so that we can continue from here when - // parsing the bech32 in the damus.io link if we have it - copy_cursor(cur, &path_cur); - - // skip leading / - cursor_skip(&path_cur, 1); - - if (!consume_url_path(cur)) { - cur->p = start; - return 0; - } - - if (!consume_url_fragment(cur)) { - cur->p = start; - return 0; - } - - // smart parens - if ((start - 1) >= cur->start && - start < cur->end && - *(start - 1) == '(' && - (cur->p - 1) < cur->end && - *(cur->p - 1) == ')') - { - cur->p--; - } - - // save the bech32 string pos in case we hit a damus.io link - block->block.str.str = (const char *)path_cur.p; - - // if we have a damus link, make it a mention - if (host_len == 8 - && !strncmp((const char *)host, "damus.io", 8) - && parse_nostr_bech32_str(&path_cur, &type)) - { - block->block.str.len = path_cur.p - path_cur.start; - block->type = BLOCK_MENTION_BECH32; - return 1; - } - - block->type = BLOCK_URL; - block->block.str.str = (const char *)start; - block->block.str.len = cur->p - start; - - return 1; -} - -static int parse_invoice(struct cursor *cur, struct ndb_block *block) { - unsigned char *start, *end; - -#ifdef _WIN32 - // bolt11 stuff requires non-portable cc stuff, so ignore for now - return 0; -#else - - // optional - parse_str(cur, "lightning:"); - - start = cur->p; - - if (!parse_str(cur, "lnbc")) - return 0; - - if (!consume_until_whitespace(cur, 1)) { - cur->p = start; - return 0; - } - - end = cur->p; - - block->type = BLOCK_INVOICE; - - block->block.str.str = (const char*)start; - block->block.str.len = end - start; - - cur->p = end; - - return 1; -#endif -} - - -static int parse_mention_bech32(struct cursor *cur, struct ndb_block *block) { - unsigned char *start = cur->p; - enum nostr_bech32_type type; - - parse_char(cur, '@'); - parse_str(cur, "nostr:"); - - block->block.str.str = (const char *)cur->p; - - if (!parse_nostr_bech32_str(cur, &type)) { - cur->p = start; - return 0; - } - - block->block.str.len = cur->p - (unsigned char*)block->block.str.str; - block->type = BLOCK_MENTION_BECH32; - - return 1; -} - -static int add_text_then_block(struct ndb_content_parser *p, - struct ndb_block *block, - unsigned char **start, - const unsigned char *pre_mention) -{ - if (!add_text_block(p, (const char *)*start, (const char*)pre_mention)) - return 0; - - *start = (unsigned char*)p->content.p; - - return push_block(p, block); -} - -int ndb_parse_content(unsigned char *buf, int buf_size, - const char *content, int content_len, - struct ndb_blocks **blocks_p) -{ - int cp, c; - struct ndb_content_parser parser; - struct ndb_block block; - - unsigned char *start, *pre_mention, *blocks_start; - - make_cursor(buf, buf + buf_size, &parser.buffer); - - // allocate some space for the blocks header - *blocks_p = parser.blocks = (struct ndb_blocks *)buf; - parser.buffer.p += sizeof(struct ndb_blocks); - - make_cursor((unsigned char *)content, - (unsigned char*)content + content_len, &parser.content); - - parser.blocks->words = 0; - parser.blocks->num_blocks = 0; - parser.blocks->blocks_size = 0; - parser.blocks->flags = 0; - parser.blocks->version = 1; - - blocks_start = start = parser.content.p; - while (parser.content.p < parser.content.end) { - cp = peek_char(&parser.content, -1); - c = peek_char(&parser.content, 0); - - // new word - if (is_whitespace(cp) && !is_whitespace(c)) - parser.blocks->words++; - - pre_mention = parser.content.p; - if (cp == -1 || is_left_boundary(cp) || c == '#') { - if (c == '#' && (parse_mention_index(&parser.content, &block) || parse_hashtag(&parser.content, &block))) { - if (!add_text_then_block(&parser, &block, &start, pre_mention)) - return 0; - continue; - } else if ((c == 'h' || c == 'H') && parse_url(&parser.content, &block)) { - if (!add_text_then_block(&parser, &block, &start, pre_mention)) - return 0; - continue; - } else if ((c == 'l' || c == 'L') && parse_invoice(&parser.content, &block)) { - if (!add_text_then_block(&parser, &block, &start, pre_mention)) - return 0; - continue; - } else if ((c == 'n' || c == '@') && parse_mention_bech32(&parser.content, &block)) { - if (!add_text_then_block(&parser, &block, &start, pre_mention)) - return 0; - continue; - } - } - - parser.content.p++; - } - - if (parser.content.p - start > 0) { - if (!add_text_block(&parser, (const char*)start, (const char *)parser.content.p)) - return 0; - } - - parser.blocks->blocks_size = parser.buffer.p - (parser.buffer.start + sizeof(struct ndb_blocks)); - assert(parser.blocks->blocks_size < ((2<<18) + 1)); - - // - // pad to 8-byte alignment - // - if (!cursor_align(&parser.buffer, 8)) - return 0; - assert((parser.buffer.p - parser.buffer.start) % 8 == 0); - parser.blocks->total_size = parser.buffer.p - parser.buffer.start; - - return 1; -} diff --git a/nostrdb/src/cpu.h b/nostrdb/src/cpu.h deleted file mode 100644 index bb010aa0f7..0000000000 --- a/nostrdb/src/cpu.h +++ /dev/null @@ -1,34 +0,0 @@ - -#if defined(_WIN32) || defined(_WIN64) - #include -#elif defined(__linux__) - #include -#elif defined(__APPLE__) - #include - #include -#else - #error "Unsupported platform" -#endif - -static inline int get_cpu_cores() { - int num_cores = 0; - - // Windows - #if defined(_WIN32) || defined(_WIN64) - SYSTEM_INFO sysinfo; - GetSystemInfo(&sysinfo); - num_cores = sysinfo.dwNumberOfProcessors; // This returns logical processors - // Further use GetLogicalProcessorInformation for physical cores... - // Linux - #elif defined(__linux__) - num_cores = sysconf(_SC_NPROCESSORS_ONLN); // This returns logical processors - // macOS - #elif defined(__APPLE__) - size_t size = sizeof(num_cores); - sysctlbyname("hw.physicalcpu", &num_cores, &size, NULL, 0); - #else - num_cores = 2; // Unsupported platform - #endif - - return num_cores; -} diff --git a/nostrdb/src/cursor.h b/nostrdb/src/cursor.h deleted file mode 100644 index e24ff16eb4..0000000000 --- a/nostrdb/src/cursor.h +++ /dev/null @@ -1,725 +0,0 @@ - -#ifndef JB55_CURSOR_H -#define JB55_CURSOR_H - -#include "ccan/likely/likely.h" - -#include -#include -#include -#include -#include - -struct cursor { - unsigned char *start; - unsigned char *p; - unsigned char *end; -}; - -static inline void reset_cursor(struct cursor *cursor) -{ - cursor->p = cursor->start; -} - -static inline void wipe_cursor(struct cursor *cursor) -{ - reset_cursor(cursor); - memset(cursor->start, 0, cursor->end - cursor->start); -} - -static inline void make_cursor(unsigned char *start, unsigned char *end, struct cursor *cursor) -{ - cursor->start = start; - cursor->p = start; - cursor->end = end; -} - -static inline int cursor_eof(struct cursor *c) -{ - return c->p == c->end; -} - -static inline void *cursor_malloc(struct cursor *mem, unsigned long size) -{ - void *ret; - - if (mem->p + size > mem->end) { - return NULL; - } - - ret = mem->p; - mem->p += size; - - return ret; -} - -static inline void *cursor_alloc(struct cursor *mem, unsigned long size) -{ - void *ret; - if (!(ret = cursor_malloc(mem, size))) { - return 0; - } - - memset(ret, 0, size); - return ret; -} - -static inline int cursor_slice(struct cursor *mem, struct cursor *slice, size_t size) -{ - unsigned char *p; - if (!(p = cursor_alloc(mem, size))) { - return 0; - } - make_cursor(p, mem->p, slice); - return 1; -} - -static inline int cursor_malloc_slice(struct cursor *mem, struct cursor *slice, size_t size) -{ - unsigned char *p; - if (!(p = cursor_malloc(mem, size))) { - return 0; - } - make_cursor(p, mem->p, slice); - return 1; -} - - -static inline void copy_cursor(struct cursor *src, struct cursor *dest) -{ - dest->start = src->start; - dest->p = src->p; - dest->end = src->end; -} - -static inline int cursor_skip(struct cursor *cursor, int n) -{ - if (cursor->p + n >= cursor->end) - return 0; - - cursor->p += n; - - return 1; -} - -static inline int cursor_pull_byte(struct cursor *cursor, unsigned char *c) -{ - if (unlikely(cursor->p >= cursor->end)) - return 0; - - *c = *cursor->p; - cursor->p++; - - return 1; -} - -static inline int parse_byte(struct cursor *cursor, unsigned char *c) -{ - if (unlikely(cursor->p >= cursor->end)) - return 0; - - *c = *cursor->p; - //cursor->p++; - - return 1; -} - -static inline int parse_char(struct cursor *cur, char c) { - if (cur->p >= cur->end) - return 0; - - if (*cur->p == c) { - cur->p++; - return 1; - } - - return 0; -} - -static inline int peek_char(struct cursor *cur, int ind) { - if ((cur->p + ind < cur->start) || (cur->p + ind >= cur->end)) - return -1; - - return *(cur->p + ind); -} - -static inline int cursor_pull_c_str(struct cursor *cursor, const char **str) -{ - *str = (const char*)cursor->p; - - for (; cursor->p < cursor->end; cursor->p++) { - if (*cursor->p == 0) { - cursor->p++; - return 1; - } - } - - return 0; -} - - -static inline int cursor_push_byte(struct cursor *cursor, unsigned char c) -{ - if (unlikely(cursor->p + 1 > cursor->end)) { - return 0; - } - - *cursor->p = c; - cursor->p++; - - return 1; -} - -static inline int cursor_pull(struct cursor *cursor, unsigned char *data, int len) -{ - if (unlikely(cursor->p + len > cursor->end)) { - return 0; - } - - memcpy(data, cursor->p, len); - cursor->p += len; - - return 1; -} - -static inline int pull_data_into_cursor(struct cursor *cursor, - struct cursor *dest, - unsigned char **data, - int len) -{ - int ok; - - if (unlikely(dest->p + len > dest->end)) { - printf("not enough room in dest buffer\n"); - return 0; - } - - ok = cursor_pull(cursor, dest->p, len); - if (!ok) return 0; - - *data = dest->p; - dest->p += len; - - return 1; -} - -static inline int cursor_dropn(struct cursor *cur, int size, int n) -{ - if (n == 0) - return 1; - - if (unlikely(cur->p - size*n < cur->start)) { - return 0; - } - - cur->p -= size*n; - return 1; -} - -static inline int cursor_drop(struct cursor *cur, int size) -{ - return cursor_dropn(cur, size, 1); -} - -static inline unsigned char *cursor_topn(struct cursor *cur, int len, int n) -{ - n += 1; - if (unlikely(cur->p - len*n < cur->start)) { - return NULL; - } - return cur->p - len*n; -} - -static inline unsigned char *cursor_top(struct cursor *cur, int len) -{ - if (unlikely(cur->p - len < cur->start)) { - return NULL; - } - return cur->p - len; -} - -static inline int cursor_top_int(struct cursor *cur, int *i) -{ - unsigned char *p; - if (unlikely(!(p = cursor_top(cur, sizeof(*i))))) { - return 0; - } - *i = *((int*)p); - return 1; -} - -static inline int cursor_pop(struct cursor *cur, unsigned char *data, int len) -{ - if (unlikely(cur->p - len < cur->start)) { - return 0; - } - - cur->p -= len; - memcpy(data, cur->p, len); - - return 1; -} - -static inline int cursor_push(struct cursor *cursor, unsigned char *data, int len) -{ - if (unlikely(cursor->p + len > cursor->end)) { - return 0; - } - - if (cursor->p != data) - memcpy(cursor->p, data, len); - - cursor->p += len; - - return 1; -} - -static inline int cursor_push_int(struct cursor *cursor, int i) -{ - return cursor_push(cursor, (unsigned char*)&i, sizeof(i)); -} - -static inline size_t cursor_count(struct cursor *cursor, size_t elem_size) -{ - return (cursor->p - cursor->start)/elem_size; -} - -/* Encodes a 64-bit integer into a variable-length format and pushes it into a cursor. - * Returns the number of bytes used or -1 in case of an error. */ -static inline int cursor_push_varint(struct cursor *cursor, uint64_t n) -{ - int len = 0; - do { - unsigned char b = (n & 0x7F) | (n > 0x7F ? 0x80 : 0); - n >>= 7; - if (!cursor_push_byte(cursor, b)) - return -1; // Error handling - len++; - } while (n != 0); - - return len; -} - -static inline int cursor_pull_varint(struct cursor *cursor, uint64_t *n) -{ - int ok, i; - unsigned char b; - - *n = 0; - - for (i = 0; i < 10; i++) { // Loop up to 10 bytes for 64-bit - ok = cursor_pull_byte(cursor, &b); - if (!ok) return 0; - - *n |= ((int64_t)b & 0x7F) << (i * 7); - - if ((b & 0x80) == 0) { - return i + 1; // Successfully read i+1 bytes - } - } - - return 10; // Successfully read 10 bytes for a full 64-bit integer -} - -static int cursor_pull_varint_u32(struct cursor *cursor, uint32_t *v) -{ - uint64_t bigval; - - if (!cursor_pull_varint(cursor, &bigval)) - return 0; - - if (bigval > UINT32_MAX) - return 0; - - *v = (uint32_t) bigval; - return 1; -} - -static inline int cursor_pull_int(struct cursor *cursor, int *i) -{ - return cursor_pull(cursor, (unsigned char*)i, sizeof(*i)); -} - -static inline int cursor_push_u32(struct cursor *cursor, uint32_t i) { - return cursor_push(cursor, (unsigned char*)&i, sizeof(i)); -} - -static inline int cursor_push_u16(struct cursor *cursor, unsigned short i) -{ - return cursor_push(cursor, (unsigned char*)&i, sizeof(i)); -} - -static inline int cursor_pull_u16(struct cursor *cursor, uint16_t *i) -{ - return cursor_pull(cursor, (unsigned char*)i, sizeof(*i)); -} - -static inline void *index_cursor(struct cursor *cursor, unsigned int index, int elem_size) -{ - unsigned char *p; - p = &cursor->start[elem_size * index]; - - if (unlikely(p >= cursor->end)) - return NULL; - - return (void*)p; -} - - -static inline int push_sized_str(struct cursor *cursor, const char *str, int len) -{ - return cursor_push(cursor, (unsigned char*)str, len); -} - -static inline int cursor_push_lowercase(struct cursor *cur, const char *str, int len) -{ - int i; - - if (unlikely(cur->p + len >= cur->end)) - return 0; - - for (i = 0; i < len; i++) - cur->p[i] = tolower(str[i]); - - cur->p += len; - return 1; -} - -static inline int cursor_push_str(struct cursor *cursor, const char *str) -{ - return cursor_push(cursor, (unsigned char*)str, (int)strlen(str)); -} - -static inline int cursor_push_c_str(struct cursor *cursor, const char *str) -{ - if (str == NULL) - return cursor_push_byte(cursor, 0); - return cursor_push_str(cursor, str) && cursor_push_byte(cursor, 0); -} - -/* TODO: push varint size */ -static inline int push_prefixed_str(struct cursor *cursor, const char *str) -{ - uint64_t len; - len = strlen(str); - if (!cursor_push_varint(cursor, len)) - return 0; - return push_sized_str(cursor, str, len); -} - -static inline int pull_prefixed_str(struct cursor *cursor, struct cursor *dest_buf, const char **str) -{ - uint64_t len; - - if (!cursor_pull_varint(cursor, &len)) - return 0; - - if (unlikely(dest_buf->p + len > dest_buf->end)) - return 0; - - if (!pull_data_into_cursor(cursor, dest_buf, (unsigned char**)str, len)) - return 0; - - return cursor_push_byte(dest_buf, 0); -} - -static inline int cursor_remaining_capacity(struct cursor *cursor) -{ - return (int)(cursor->end - cursor->p); -} - - -#define max(a,b) ((a) > (b) ? (a) : (b)) -static inline void cursor_print_around(struct cursor *cur, int range) -{ - unsigned char *c; - - printf("[%ld/%ld]\n", cur->p - cur->start, cur->end - cur->start); - - c = max(cur->p - range, cur->start); - for (; c < cur->end && c < (cur->p + range); c++) { - printf("%02x", *c); - } - printf("\n"); - - c = max(cur->p - range, cur->start); - for (; c < cur->end && c < (cur->p + range); c++) { - if (c == cur->p) { - printf("^"); - continue; - } - printf(" "); - } - printf("\n"); -} -#undef max - -static inline int pull_bytes(struct cursor *cur, int count, const unsigned char **bytes) { - if (cur->p + count > cur->end) - return 0; - - *bytes = cur->p; - cur->p += count; - return 1; -} - -static inline int parse_str(struct cursor *cur, const char *str) { - unsigned int i; - char c, cs; - unsigned long len; - - len = strlen(str); - - if (cur->p + len >= cur->end) - return 0; - - for (i = 0; i < len; i++) { - c = tolower(cur->p[i]); - cs = tolower(str[i]); - - if (c != cs) - return 0; - } - - cur->p += len; - - return 1; -} - -static inline int is_whitespace(char c) { - return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; -} - -static inline int is_underscore(char c) { - return c == '_'; -} - -static inline int is_utf8_byte(unsigned char c) { - return c & 0x80; -} - -static inline int parse_utf8_char(struct cursor *cursor, unsigned int *code_point, unsigned int *utf8_length) -{ - unsigned char first_byte; - if (!parse_byte(cursor, &first_byte)) - return 0; // Not enough data - - // Determine the number of bytes in this UTF-8 character - int remaining_bytes = 0; - if (first_byte < 0x80) { - *code_point = first_byte; - return 1; - } else if ((first_byte & 0xE0) == 0xC0) { - remaining_bytes = 1; - *utf8_length = remaining_bytes + 1; - *code_point = first_byte & 0x1F; - } else if ((first_byte & 0xF0) == 0xE0) { - remaining_bytes = 2; - *utf8_length = remaining_bytes + 1; - *code_point = first_byte & 0x0F; - } else if ((first_byte & 0xF8) == 0xF0) { - remaining_bytes = 3; - *utf8_length = remaining_bytes + 1; - *code_point = first_byte & 0x07; - } else { - remaining_bytes = 0; - *utf8_length = 1; // Assume 1 byte length for unrecognized UTF-8 characters - // TODO: We need to gracefully handle unrecognized UTF-8 characters - //printf("Invalid UTF-8 byte: %x\n", *code_point); - *code_point = ((first_byte & 0xF0) << 6); // Prevent testing as punctuation - return 0; // Invalid first byte - } - - // Peek at remaining bytes - for (int i = 0; i < remaining_bytes; ++i) { - signed char next_byte; - if ((next_byte = peek_char(cursor, i+1)) == -1) { - *utf8_length = 1; - return 0; // Not enough data - } - - // Debugging lines - //printf("Cursor: %s\n", cursor->p); - //printf("Codepoint: %x\n", *code_point); - //printf("Codepoint <<6: %x\n", ((*code_point << 6) | (next_byte & 0x3F))); - //printf("Remaining bytes: %x\n", remaining_bytes); - //printf("First byte: %x\n", first_byte); - //printf("Next byte: %x\n", next_byte); - //printf("Bitwise AND result: %x\n", (next_byte & 0xC0)); - - if ((next_byte & 0xC0) != 0x80) { - *utf8_length = 1; - return 0; // Invalid byte in sequence - } - - *code_point = (*code_point << 6) | (next_byte & 0x3F); - } - - return 1; -} - -/** - * Checks if a given Unicode code point is a punctuation character - * - * @param codepoint The Unicode code point to check. @return true if the - * code point is a punctuation character, false otherwise. - */ -static inline int is_punctuation(unsigned int codepoint) { - - // Check for underscore (underscore is not treated as punctuation) - if (is_underscore(codepoint)) - return 0; - - // Check for ASCII punctuation - if (codepoint <= 128 && ispunct(codepoint)) - return 1; - - // Check for Unicode punctuation exceptions (punctuation allowed in hashtags) - if (codepoint == 0x301C || codepoint == 0xFF5E) // Japanese Wave Dash / Tilde - return 0; - - // Check for Unicode punctuation - // NOTE: We may need to adjust the codepoint ranges in the future, - // to include/exclude certain types of Unicode characters in hashtags. - // Unicode Blocks Reference: https://www.compart.com/en/unicode/block - return ( - // Latin-1 Supplement No-Break Space (NBSP): U+00A0 - (codepoint == 0x00A0) || - - // Latin-1 Supplement Punctuation: U+00A1 to U+00BF - (codepoint >= 0x00A1 && codepoint <= 0x00BF) || - - // General Punctuation: U+2000 to U+206F - (codepoint >= 0x2000 && codepoint <= 0x206F) || - - // Currency Symbols: U+20A0 to U+20CF - (codepoint >= 0x20A0 && codepoint <= 0x20CF) || - - // Supplemental Punctuation: U+2E00 to U+2E7F - (codepoint >= 0x2E00 && codepoint <= 0x2E7F) || - - // CJK Symbols and Punctuation: U+3000 to U+303F - (codepoint >= 0x3000 && codepoint <= 0x303F) || - - // Ideographic Description Characters: U+2FF0 to U+2FFF - (codepoint >= 0x2FF0 && codepoint <= 0x2FFF) - ); -} - -static inline int is_right_boundary(int c) { - return is_whitespace(c) || is_punctuation(c); -} - -static inline int is_left_boundary(char c) { - return is_right_boundary(c) || is_utf8_byte(c); -} - -static inline int is_alphanumeric(char c) { - return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9'); -} - -static inline int consume_until_boundary(struct cursor *cur) { - unsigned int c; - unsigned int char_length = 1; - unsigned int *utf8_char_length = &char_length; - - while (cur->p < cur->end) { - c = *cur->p; - - *utf8_char_length = 1; - - if (is_whitespace(c)) - return 1; - - // Need to check for UTF-8 characters, which can be multiple bytes long - if (is_utf8_byte(c)) { - if (!parse_utf8_char(cur, &c, utf8_char_length)) { - if (!is_right_boundary(c)){ - return 0; - } - } - } - - if (is_right_boundary(c)) - return 1; - - // Need to use a variable character byte length for UTF-8 (2-4 bytes) - if (cur->p + *utf8_char_length <= cur->end) - cur->p += *utf8_char_length; - else - cur->p++; - } - - return 1; -} - -static inline int consume_until_whitespace(struct cursor *cur, int or_end) { - char c; - int consumedAtLeastOne = 0; - - while (cur->p < cur->end) { - c = *cur->p; - - if (is_whitespace(c)) - return consumedAtLeastOne; - - cur->p++; - consumedAtLeastOne = 1; - } - - return or_end; -} - -static inline int consume_until_non_alphanumeric(struct cursor *cur, int or_end) { - char c; - int consumedAtLeastOne = 0; - - while (cur->p < cur->end) { - c = *cur->p; - - if (!is_alphanumeric(c)) - return consumedAtLeastOne; - - cur->p++; - consumedAtLeastOne = 1; - } - - return or_end; -} - - -static inline int cursor_memset(struct cursor *cursor, unsigned char c, int n) -{ - if (cursor->p + n >= cursor->end) - return 0; - - memset(cursor->p, c, n); - cursor->p += n; - - return 1; -} - -static void consume_whitespace_or_punctuation(struct cursor *cur) -{ - while (cur->p < cur->end) { - if (!is_right_boundary(*cur->p)) - return; - cur->p++; - } -} - -// pad cursor buffer to n-byte alignment -static inline int cursor_align(struct cursor *cur, int bytes) { - size_t size = cur->p - cur->start; - int pad; - - // pad to n-byte alignment - pad = ((size + (bytes-1)) & ~(bytes-1)) - size; - if (pad > 0 && !cursor_memset(cur, 0, pad)) - return 0; - - return 1; -} - - -#endif diff --git a/nostrdb/src/hex.h b/nostrdb/src/hex.h deleted file mode 100644 index ce20ff4f8e..0000000000 --- a/nostrdb/src/hex.h +++ /dev/null @@ -1,68 +0,0 @@ - -#ifndef HEX_H -#define HEX_H - -#include - -static const char hex_table[256] = { - ['0'] = 0, ['1'] = 1, ['2'] = 2, ['3'] = 3, - ['4'] = 4, ['5'] = 5, ['6'] = 6, ['7'] = 7, - ['8'] = 8, ['9'] = 9, ['a'] = 10, ['b'] = 11, - ['c'] = 12, ['d'] = 13, ['e'] = 14, ['f'] = 15, - ['A'] = 10, ['B'] = 11, ['C'] = 12, ['D'] = 13, - ['E'] = 14, ['F'] = 15 -}; - -static inline int char_to_hex(unsigned char *val, unsigned char c) -{ - if (hex_table[c] || c == '0') { - *val = hex_table[c]; - return 1; - } - return 0; -} - -static inline int hex_decode(const char *str, size_t slen, void *buf, size_t bufsize) -{ - unsigned char v1, v2; - unsigned char *p = buf; - - while (slen > 1) { - if (!char_to_hex(&v1, str[0]) || !char_to_hex(&v2, str[1])) - return 0; - if (!bufsize) - return 0; - *(p++) = (v1 << 4) | v2; - str += 2; - slen -= 2; - bufsize--; - } - return slen == 0 && bufsize == 0; -} - - -static inline char hexchar(unsigned int val) -{ - if (val < 10) - return '0' + val; - if (val < 16) - return 'a' + val - 10; - abort(); -} - -static int hex_encode(const void *buf, size_t bufsize, char *dest) -{ - size_t i; - - for (i = 0; i < bufsize; i++) { - unsigned int c = ((const unsigned char *)buf)[i]; - *(dest++) = hexchar(c >> 4); - *(dest++) = hexchar(c & 0xF); - } - *dest = '\0'; - - return 1; -} - - -#endif diff --git a/nostrdb/src/invoice.c b/nostrdb/src/invoice.c deleted file mode 100644 index a5a6f3438b..0000000000 --- a/nostrdb/src/invoice.c +++ /dev/null @@ -1,69 +0,0 @@ - -#include "cursor.h" -#include "invoice.h" -#include "nostrdb.h" -#include "bolt11/bolt11.h" -#include "bolt11/amount.h" - -int ndb_encode_invoice(struct cursor *cur, struct bolt11 *invoice) { - if (!invoice->description && !invoice->description_hash) - return 0; - - if (!cursor_push_byte(cur, 1)) - return 0; - - if (!cursor_push_varint(cur, invoice->msat == NULL ? 0 : invoice->msat->millisatoshis)) - return 0; - - if (!cursor_push_varint(cur, invoice->timestamp)) - return 0; - - if (!cursor_push_varint(cur, invoice->expiry)) - return 0; - - if (invoice->description) { - if (!cursor_push_byte(cur, 1)) - return 0; - if (!cursor_push_c_str(cur, invoice->description)) - return 0; - } else { - if (!cursor_push_byte(cur, 2)) - return 0; - if (!cursor_push(cur, invoice->description_hash->u.u8, 32)) - return 0; - } - - return 1; -} - -int ndb_decode_invoice(struct cursor *cur, struct ndb_invoice *invoice) -{ - unsigned char desc_type; - if (!cursor_pull_byte(cur, &invoice->version)) - return 0; - - if (!cursor_pull_varint(cur, &invoice->amount)) - return 0; - - if (!cursor_pull_varint(cur, &invoice->timestamp)) - return 0; - - if (!cursor_pull_varint(cur, &invoice->expiry)) - return 0; - - if (!cursor_pull_byte(cur, &desc_type)) - return 0; - - if (desc_type == 1) { - if (!cursor_pull_c_str(cur, (const char**)&invoice->description)) - return 0; - } else if (desc_type == 2) { - invoice->description_hash = cur->p; - if (!cursor_skip(cur, 32)) - return 0; - } else { - return 0; - } - - return 1; -} diff --git a/nostrdb/src/invoice.h b/nostrdb/src/invoice.h deleted file mode 100644 index 3e3e0c5248..0000000000 --- a/nostrdb/src/invoice.h +++ /dev/null @@ -1,15 +0,0 @@ - -#ifndef NDB_INVOICE_H -#define NDB_INVOICE_H - -#include -#include "cursor.h" -#include "nostrdb.h" - -struct bolt11; - -// ENCODING -int ndb_encode_invoice(struct cursor *cur, struct bolt11 *invoice); -int ndb_decode_invoice(struct cursor *cur, struct ndb_invoice *invoice); - -#endif /* NDB_INVOICE_H */ diff --git a/nostrdb/src/io.h b/nostrdb/src/io.h deleted file mode 100644 index b7d1368217..0000000000 --- a/nostrdb/src/io.h +++ /dev/null @@ -1,48 +0,0 @@ - -#include - -static int read_fd(FILE *fd, unsigned char *buf, int buflen, int *written) -{ - unsigned char *p = buf; - int len = 0; - *written = 0; - - do { - len = fread(p, 1, 4096, fd); - *written += len; - p += len; - if (p > buf + buflen) - return 0; - } while (len == 4096); - - return 1; -} - -static int write_file(const char *filename, unsigned char *buf, int buflen) -{ - FILE *file = NULL; - int ok; - - file = fopen(filename, "w"); - if (file == NULL) - return 0; - - ok = fwrite(buf, buflen, 1, file); - fclose(file); - return ok; -} - -static int read_file(const char *filename, unsigned char *buf, int buflen, int *written) -{ - FILE *file = NULL; - int ok; - - file = fopen(filename, "r"); - if (file == NULL) - return 1; - - ok = read_fd(file, buf, buflen, written); - fclose(file); - return ok; -} - diff --git a/nostrdb/src/jsmn.h b/nostrdb/src/jsmn.h deleted file mode 100644 index d263317d20..0000000000 --- a/nostrdb/src/jsmn.h +++ /dev/null @@ -1,491 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2010 Serge Zaitsev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef JSMN_H -#define JSMN_H - -#include - -#define JSMN_PARENT_LINKS -#define JSMN_STRICT - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef JSMN_STATIC -#define JSMN_API static -#else -#define JSMN_API extern -#endif - -/** - * JSON type identifier. Basic types are: - * o Object - * o Array - * o String - * o Other primitive: number, boolean (true/false) or null - */ -typedef enum { - JSMN_UNDEFINED = 0, - JSMN_OBJECT = 1 << 0, - JSMN_ARRAY = 1 << 1, - JSMN_STRING = 1 << 2, - JSMN_PRIMITIVE = 1 << 3 -} jsmntype_t; - -enum jsmnerr { - /* Not enough tokens were provided */ - JSMN_ERROR_NOMEM = -1, - /* Invalid character inside JSON string */ - JSMN_ERROR_INVAL = -2, - /* The string is not a full JSON packet, more bytes expected */ - JSMN_ERROR_PART = -3 -}; - -/** - * JSON token description. - * type type (object, array, string etc.) - * start start position in JSON data string - * end end position in JSON data string - */ -typedef struct jsmntok { - jsmntype_t type; - int start; - int end; - int size; -#ifdef JSMN_PARENT_LINKS - int parent; -#endif -} jsmntok_t; - -/** - * JSON parser. Contains an array of token blocks available. Also stores - * the string being parsed now and current position in that string. - */ -typedef struct jsmn_parser { - unsigned int pos; /* offset in the JSON string */ - unsigned int toknext; /* next token to allocate */ - int toksuper; /* superior token node, e.g. parent object or array */ -} jsmn_parser; - -/** - * Create JSON parser over an array of tokens - */ -JSMN_API void jsmn_init(jsmn_parser *parser); - -/** - * Run JSON parser. It parses a JSON data string into and array of tokens, each - * describing - * a single JSON object. - */ -JSMN_API int jsmn_parse(jsmn_parser *parser, const char *js, const size_t len, - jsmntok_t *tokens, const unsigned int num_tokens, int stop_at_id); - -#ifndef JSMN_HEADER -/** - * Allocates a fresh unused token from the token pool. - */ -static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser, jsmntok_t *tokens, - const size_t num_tokens) { - jsmntok_t *tok; - if (parser->toknext >= num_tokens) { - return NULL; - } - tok = &tokens[parser->toknext++]; - tok->start = tok->end = -1; - tok->size = 0; -#ifdef JSMN_PARENT_LINKS - tok->parent = -1; -#endif - return tok; -} - -/** - * Fills token type and boundaries. - */ -static void jsmn_fill_token(jsmntok_t *token, const jsmntype_t type, - const int start, const int end) { - token->type = type; - token->start = start; - token->end = end; - token->size = 0; -} - -/** - * Fills next available token with JSON primitive. - */ -static int jsmn_parse_primitive(jsmn_parser *parser, const char *js, - const size_t len, jsmntok_t *tokens, - const size_t num_tokens) { - jsmntok_t *token; - int start; - - start = parser->pos; - - for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { - switch (js[parser->pos]) { -#ifndef JSMN_STRICT - /* In strict mode primitive must be followed by "," or "}" or "]" */ - case ':': -#endif - case '\t': - case '\r': - case '\n': - case ' ': - case ',': - case ']': - case '}': - goto found; - default: - /* to quiet a warning from gcc*/ - break; - } - if (js[parser->pos] < 32 || js[parser->pos] >= 127) { - parser->pos = start; - return JSMN_ERROR_INVAL; - } - } -#ifdef JSMN_STRICT - /* In strict mode primitive must be followed by a comma/object/array */ - parser->pos = start; - return JSMN_ERROR_PART; -#endif - -found: - if (tokens == NULL) { - parser->pos--; - return 0; - } - token = jsmn_alloc_token(parser, tokens, num_tokens); - if (token == NULL) { - parser->pos = start; - return JSMN_ERROR_NOMEM; - } - jsmn_fill_token(token, JSMN_PRIMITIVE, start, parser->pos); -#ifdef JSMN_PARENT_LINKS - token->parent = parser->toksuper; -#endif - parser->pos--; - return 0; -} - -/** - * Fills next token with JSON string. - */ -static int jsmn_parse_string(jsmn_parser *parser, const char *js, - const size_t len, jsmntok_t *tokens, - const size_t num_tokens) { - jsmntok_t *token; - - int start = parser->pos; - - /* Skip starting quote */ - parser->pos++; - - for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { - char c = js[parser->pos]; - - /* Quote: end of string */ - if (c == '\"') { - if (tokens == NULL) { - return 0; - } - token = jsmn_alloc_token(parser, tokens, num_tokens); - if (token == NULL) { - parser->pos = start; - return JSMN_ERROR_NOMEM; - } - jsmn_fill_token(token, JSMN_STRING, start + 1, parser->pos); -#ifdef JSMN_PARENT_LINKS - token->parent = parser->toksuper; -#endif - return 0; - } - - /* Backslash: Quoted symbol expected */ - if (c == '\\' && parser->pos + 1 < len) { - int i; - parser->pos++; - switch (js[parser->pos]) { - /* Allowed escaped symbols */ - case '\"': - case '/': - case '\\': - case 'b': - case 'f': - case 'r': - case 'n': - case 't': - break; - /* Allows escaped symbol \uXXXX */ - case 'u': - parser->pos++; - for (i = 0; i < 4 && parser->pos < len && js[parser->pos] != '\0'; - i++) { - /* If it isn't a hex character we have an error */ - if (!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */ - (js[parser->pos] >= 65 && js[parser->pos] <= 70) || /* A-F */ - (js[parser->pos] >= 97 && js[parser->pos] <= 102))) { /* a-f */ - parser->pos = start; - return JSMN_ERROR_INVAL; - } - parser->pos++; - } - parser->pos--; - break; - /* Unexpected symbol */ - default: - parser->pos = start; - return JSMN_ERROR_INVAL; - } - } - } - parser->pos = start; - return JSMN_ERROR_PART; -} - -/** - * Parse JSON string and fill tokens. - */ -JSMN_API int jsmn_parse(jsmn_parser *parser, const char *js, const size_t len, - jsmntok_t *tokens, const unsigned int num_tokens, int stop_at_id) { - int r, i, idkey; - jsmntok_t *token; - int count = parser->toknext; - - idkey = 0; - - for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { - char c; - jsmntype_t type; - - c = js[parser->pos]; - switch (c) { - case '{': - case '[': - count++; - if (tokens == NULL) { - break; - } - token = jsmn_alloc_token(parser, tokens, num_tokens); - if (token == NULL) { - return JSMN_ERROR_NOMEM; - } - if (parser->toksuper != -1) { - jsmntok_t *t = &tokens[parser->toksuper]; -#ifdef JSMN_STRICT - /* In strict mode an object or array can't become a key */ - if (t->type == JSMN_OBJECT) { - return JSMN_ERROR_INVAL; - } -#endif - t->size++; -#ifdef JSMN_PARENT_LINKS - token->parent = parser->toksuper; -#endif - } - token->type = (c == '{' ? JSMN_OBJECT : JSMN_ARRAY); - token->start = parser->pos; - parser->toksuper = parser->toknext - 1; - break; - case '}': - case ']': - if (tokens == NULL) { - break; - } - type = (c == '}' ? JSMN_OBJECT : JSMN_ARRAY); -#ifdef JSMN_PARENT_LINKS - if (parser->toknext < 1) { - return JSMN_ERROR_INVAL; - } - token = &tokens[parser->toknext - 1]; - for (;;) { - if (token->start != -1 && token->end == -1) { - if (token->type != type) { - return JSMN_ERROR_INVAL; - } - token->end = parser->pos + 1; - parser->toksuper = token->parent; - break; - } - if (token->parent == -1) { - if (token->type != type || parser->toksuper == -1) { - return JSMN_ERROR_INVAL; - } - break; - } - token = &tokens[token->parent]; - } -#else - for (i = parser->toknext - 1; i >= 0; i--) { - token = &tokens[i]; - if (token->start != -1 && token->end == -1) { - if (token->type != type) { - return JSMN_ERROR_INVAL; - } - parser->toksuper = -1; - token->end = parser->pos + 1; - break; - } - } - /* Error if unmatched closing bracket */ - if (i == -1) { - return JSMN_ERROR_INVAL; - } - for (; i >= 0; i--) { - token = &tokens[i]; - if (token->start != -1 && token->end == -1) { - parser->toksuper = i; - break; - } - } -#endif - break; - case '\"': - r = jsmn_parse_string(parser, js, len, tokens, num_tokens); - if (r < 0) { - return r; - } - count++; - if (parser->toksuper != -1 && tokens != NULL) { - tokens[parser->toksuper].size++; - } - - // big hack. resumable parsing when encountering the id field - if (stop_at_id) { - token = &tokens[parser->toknext-1]; - if (idkey == 1 && (token->end - token->start) == 64) { - //printf("jsmn: found id '%.*s'\n", token->end - token->start, js + token->start); - parser->pos++; - return -42; - } else if (idkey == 0 && (token->end - token->start) == 2 && - (js + token->start)[0] == 'i' && - (js + token->start)[1] == 'd') { - //printf("jsmn: found id key\n"); - idkey = 1; - } - } - - break; - case '\t': - case '\r': - case '\n': - case ' ': - break; - case ':': - parser->toksuper = parser->toknext - 1; - break; - case ',': - if (tokens != NULL && parser->toksuper != -1 && - tokens[parser->toksuper].type != JSMN_ARRAY && - tokens[parser->toksuper].type != JSMN_OBJECT) { -#ifdef JSMN_PARENT_LINKS - parser->toksuper = tokens[parser->toksuper].parent; -#else - for (i = parser->toknext - 1; i >= 0; i--) { - if (tokens[i].type == JSMN_ARRAY || tokens[i].type == JSMN_OBJECT) { - if (tokens[i].start != -1 && tokens[i].end == -1) { - parser->toksuper = i; - break; - } - } - } -#endif - } - break; -#ifdef JSMN_STRICT - /* In strict mode primitives are: numbers and booleans */ - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 't': - case 'f': - case 'n': - /* And they must not be keys of the object */ - if (tokens != NULL && parser->toksuper != -1) { - const jsmntok_t *t = &tokens[parser->toksuper]; - if (t->type == JSMN_OBJECT || - (t->type == JSMN_STRING && t->size != 0)) { - return JSMN_ERROR_INVAL; - } - } -#else - /* In non-strict mode every unquoted value is a primitive */ - default: -#endif - r = jsmn_parse_primitive(parser, js, len, tokens, num_tokens); - if (r < 0) { - return r; - } - count++; - if (parser->toksuper != -1 && tokens != NULL) { - tokens[parser->toksuper].size++; - } - break; - -#ifdef JSMN_STRICT - /* Unexpected char in strict mode */ - default: - return JSMN_ERROR_INVAL; -#endif - } - } - - if (tokens != NULL) { - for (i = parser->toknext - 1; i >= 0; i--) { - /* Unmatched opened object or array */ - if (tokens[i].start != -1 && tokens[i].end == -1) { - return JSMN_ERROR_PART; - } - } - } - - return count; -} - -/** - * Creates a new parser based over a given buffer with an array of tokens - * available. - */ -JSMN_API void jsmn_init(jsmn_parser *parser) { - parser->pos = 0; - parser->toknext = 0; - parser->toksuper = -1; -} - -#endif /* JSMN_HEADER */ - -#ifdef __cplusplus -} -#endif - -#endif /* JSMN_H */ diff --git a/nostrdb/src/lmdb_util.h b/nostrdb/src/lmdb_util.h deleted file mode 100644 index 28a4732ea8..0000000000 --- a/nostrdb/src/lmdb_util.h +++ /dev/null @@ -1,100 +0,0 @@ - -// Define callback function type -typedef bool (*lmdb_callback_t)(const MDB_val*, const MDB_val*); - - -int lmdb_foreach(MDB_txn *txn, MDB_dbi dbi, MDB_val *start, MDB_val *start_dup, callback_t cb, bool reverse) { - int success = 0; - MDB_cursor *cursor; - - // Open a cursor on the provided transaction and database - int rc = mdb_cursor_open(txn, dbi, &cursor); - - if (rc != 0) - return 0; - - MDB_val k = *start, v = *start_dup; - MDB_cursor_op op = reverse ? MDB_PREV : MDB_NEXT; - - // If we're scanning in reverse... - if (reverse) { - // Try to position the cursor at the first key-value pair where - // both the key and the value are greater than or equal to our - // starting point. - rc = mdb_cursor_get(cursor, &k, &v, MDB_GET_BOTH_RANGE); - if (rc == 0) { - if (v.mv_size != start_dup->mv_size || - memcmp(v.mv_data, start_dup->mv_data, v.mv_size) != 0) { - // If the value doesn't match our starting - // point, step back to the previous record. - if (mdb_cursor_get(cursor, &k, &v, MDB_PREV) != 0) - goto cleanup; - } - } else { - // If we couldn't find a record that matches both our - // starting key and value, try to find a record that - // matches just our starting key. - if (mdb_cursor_get(cursor, &k, &v, MDB_SET) == 0) { - // If we find a match, move to the last value - // for this key, since we're scanning in - // reverse. - if (mdb_cursor_get(cursor, &k, &v, MDB_LAST_DUP) != 0) - goto cleanup; - } else { - // If we can't find a record with our starting - // key, try to find the first record with a key - // greater than our starting key. - if (mdb_cursor_get(cursor, &k, &v, MDB_SET_RANGE) == 0) { - // If we find such a record, step back - // to the previous record. - if (mdb_cursor_get(cursor, &k, &v, MDB_PREV) != 0) - goto cleanup; - } else { - // If we can't even find a record with - // a key greater than our starting key, - // fall back to starting from the last - // record in the database. - if (mdb_cursor_get(cursor, &k, &v, MDB_LAST) != 0) - goto cleanup; - } - } - } - // If we're not scanning in reverse... - else { - // Try to position the cursor at the first key-value - // pair where both the key and the value are greater - // than or equal to our starting point. - if (mdb_cursor_get(cursor, &k, &v, MDB_SET) != 0) { - // If we couldn't find a record that matches - // both our starting key and value, try to find - // a record that matches just our starting key. - if (mdb_cursor_get(cursor, &k, &v, MDB_SET_RANGE) != 0) - goto cleanup; - - // If we can't find a record with our starting - // key, try to find the first record with a key - // greater than our starting key. - if (mdb_cursor_get(cursor, &k, &v, MDB_FIRST_DUP) != 0) - goto cleanup; - } - } - } - - // Whether we're scanning forward or backward, start the actual - // iteration, moving one step at a time in the appropriate direction - // and calling the provided callback for each record. - do { - if (!cb(&k, &v)) - goto cleanup; - } while (mdb_cursor_get(cursor, &k, &v, op) == 0); - - // If we make it through the entire iteration without the callback - // returning false, return true to signal success. - success = 1; - -cleanup: - mdb_cursor_close(cursor); - return success; -} - - diff --git a/nostrdb/src/memchr.h b/nostrdb/src/memchr.h deleted file mode 100644 index 9c7ae74318..0000000000 --- a/nostrdb/src/memchr.h +++ /dev/null @@ -1,72 +0,0 @@ - - -#ifndef FAST_MEMCHR_H -#define FAST_MEMCHR_H - -#include - -#ifdef __ARM_NEON -#define vector_strchr neon_strchr -#else -#define vector_strchr native_memchr -#endif - -#ifdef __ARM_NEON -#include -static const char *neon_strchr(const char *str, char c, size_t length) { - const char* end = str + length; - - // Alignment handling - while (str < end && ((size_t)str & 0xF)) { - if (*str == c) - return str; - ++str; - } - - uint8x16_t searchChar = vdupq_n_u8(c); - - while (str + 16 <= end) { - uint8x16_t chunk = vld1q_u8((const uint8_t*)str); - uint8x16_t comparison = vceqq_u8(chunk, searchChar); - - // Check first 64 bits - uint64_t result0 = - vgetq_lane_u64(vreinterpretq_u64_u8(comparison), 0); - - if (result0) - return str + __builtin_ctzll(result0)/8; - - // Check second 64 bits - uint64_t result1 = vgetq_lane_u64(vreinterpretq_u64_u8(comparison), 1); - if (result1) - return str + 8 + __builtin_ctzll(result1)/8; - - str += 16; - } - - // Handle remaining unaligned characters - for (; str < end; ++str) { - if (*str == c) - return str; - } - - return NULL; -} -#endif - -static inline const char *native_memchr(const char *str, char c, size_t length) { - const void *result = memchr(str, c, length); - return (const char *) result; -} - -static inline const char *fast_strchr(const char *str, char c, size_t length) -{ - if (length >= 16) { - return vector_strchr(str, c, length); - } - - return native_memchr(str, c, length); -} - - -#endif // FAST_MEMCHR_H diff --git a/nostrdb/src/nostr_bech32.c b/nostrdb/src/nostr_bech32.c deleted file mode 100644 index 1affb1aff8..0000000000 --- a/nostrdb/src/nostr_bech32.c +++ /dev/null @@ -1,344 +0,0 @@ -// -// nostr_bech32.c -// damus -// -// Created by William Casarin on 2023-04-09. -// - -#include -#include "nostr_bech32.h" -#include "cursor.h" -#include "str_block.h" -#include "ccan/endian/endian.h" -#include "nostrdb.h" -#include "bolt11/bech32.h" - -#define MAX_TLVS 32 - -#define TLV_SPECIAL 0 -#define TLV_RELAY 1 -#define TLV_AUTHOR 2 -#define TLV_KIND 3 -#define TLV_KNOWN_TLVS 4 - -struct nostr_tlv { - unsigned char type; - unsigned char len; - const unsigned char *value; -}; - -static int parse_nostr_tlv(struct cursor *cur, struct nostr_tlv *tlv) { - // get the tlv tag - if (!cursor_pull_byte(cur, &tlv->type)) - return 0; - - if (tlv->type >= TLV_KNOWN_TLVS) - return 0; - - // get the length - if (!cursor_pull_byte(cur, &tlv->len)) - return 0; - - // is the reported length greater then our buffer? if so fail - if (cur->p + tlv->len > cur->end) - return 0; - - tlv->value = cur->p; - cur->p += tlv->len; - - return 1; -} - -int parse_nostr_bech32_type(const char *prefix, enum nostr_bech32_type *type) { - // Parse type - if (strncmp(prefix, "note", 4) == 0) { - *type = NOSTR_BECH32_NOTE; - return 4; - } else if (strncmp(prefix, "npub", 4) == 0) { - *type = NOSTR_BECH32_NPUB; - return 4; - } else if (strncmp(prefix, "nsec", 4) == 0) { - *type = NOSTR_BECH32_NSEC; - return 4; - } else if (strncmp(prefix, "nprofile", 8) == 0) { - *type = NOSTR_BECH32_NPROFILE; - return 8; - } else if (strncmp(prefix, "nevent", 6) == 0) { - *type = NOSTR_BECH32_NEVENT; - return 6; - } else if (strncmp(prefix, "nrelay", 6) == 0) { - *type = NOSTR_BECH32_NRELAY; - return 6; - } else if (strncmp(prefix, "naddr", 5) == 0) { - *type = NOSTR_BECH32_NADDR; - return 5; - } - - return 0; -} - -static int parse_nostr_bech32_note(struct cursor *cur, struct bech32_note *note) { - return pull_bytes(cur, 32, ¬e->event_id); -} - -static int parse_nostr_bech32_npub(struct cursor *cur, struct bech32_npub *npub) { - return pull_bytes(cur, 32, &npub->pubkey); -} - -static int parse_nostr_bech32_nsec(struct cursor *cur, struct bech32_nsec *nsec) { - return pull_bytes(cur, 32, &nsec->nsec); -} - -static int add_relay(struct ndb_relays *relays, struct nostr_tlv *tlv) -{ - struct ndb_str_block *str; - - if (relays->num_relays + 1 > NDB_MAX_RELAYS) - return 0; - - str = &relays->relays[relays->num_relays++]; - str->str = (const char*)tlv->value; - str->len = tlv->len; - - return 1; -} - -static int decode_tlv_u32(const struct nostr_tlv *tlv, uint32_t *ret) { - if (tlv->len != 4) { - return 0; - } - beint32_t *be32_bytes = (beint32_t*)tlv->value; - *ret = be32_to_cpu(*be32_bytes); - return 1; -} - -static int parse_nostr_bech32_nevent(struct cursor *cur, struct bech32_nevent *nevent) { - struct nostr_tlv tlv; - int i; - - nevent->event_id = NULL; - nevent->pubkey = NULL; - nevent->relays.num_relays = 0; - - for (i = 0; i < MAX_TLVS; i++) { - if (!parse_nostr_tlv(cur, &tlv)) - break; - - switch (tlv.type) { - case TLV_SPECIAL: - if (tlv.len != 32) - return 0; - nevent->event_id = tlv.value; - break; - case TLV_AUTHOR: - if (tlv.len != 32) - return 0; - nevent->pubkey = tlv.value; - break; - case TLV_RELAY: - add_relay(&nevent->relays, &tlv); - break; - case TLV_KIND: - if (decode_tlv_u32(&tlv, &nevent->kind)) { - nevent->has_kind = true; - } - break; - } - } - - return nevent->event_id != NULL; -} - -static int parse_nostr_bech32_naddr(struct cursor *cur, struct bech32_naddr *naddr) { - struct nostr_tlv tlv; - int i, has_kind; - - has_kind = 0; - naddr->identifier.str = NULL; - naddr->identifier.len = 0; - naddr->pubkey = NULL; - naddr->relays.num_relays = 0; - - for (i = 0; i < MAX_TLVS; i++) { - if (!parse_nostr_tlv(cur, &tlv)) - break; - - switch (tlv.type) { - case TLV_SPECIAL: - naddr->identifier.str = (const char*)tlv.value; - naddr->identifier.len = tlv.len; - break; - case TLV_AUTHOR: - if (tlv.len != 32) return 0; - naddr->pubkey = tlv.value; - break; - case TLV_RELAY: - add_relay(&naddr->relays, &tlv); - break; - case TLV_KIND: - if (decode_tlv_u32(&tlv, &naddr->kind)) { - has_kind = true; - } - break; - } - } - - return naddr->identifier.str != NULL && has_kind; -} - -static int parse_nostr_bech32_nprofile(struct cursor *cur, struct bech32_nprofile *nprofile) { - struct nostr_tlv tlv; - int i; - - nprofile->pubkey = NULL; - nprofile->relays.num_relays = 0; - - for (i = 0; i < MAX_TLVS; i++) { - if (!parse_nostr_tlv(cur, &tlv)) - break; - - switch (tlv.type) { - case TLV_SPECIAL: - if (tlv.len != 32) return 0; - nprofile->pubkey = tlv.value; - break; - case TLV_RELAY: - add_relay(&nprofile->relays, &tlv); - break; - } - } - - return nprofile->pubkey != NULL; -} - -static int parse_nostr_bech32_nrelay(struct cursor *cur, struct bech32_nrelay *nrelay) { - struct nostr_tlv tlv; - int i; - - nrelay->relay.str = NULL; - nrelay->relay.len = 0; - - for (i = 0; i < MAX_TLVS; i++) { - if (!parse_nostr_tlv(cur, &tlv)) - break; - - switch (tlv.type) { - case TLV_SPECIAL: - nrelay->relay.str = (const char*)tlv.value; - nrelay->relay.len = tlv.len; - break; - } - } - - return nrelay->relay.str != NULL; -} - -int parse_nostr_bech32_buffer(struct cursor *cur, - enum nostr_bech32_type type, - struct nostr_bech32 *obj) -{ - obj->type = type; - - switch (obj->type) { - case NOSTR_BECH32_NOTE: - if (!parse_nostr_bech32_note(cur, &obj->note)) - return 0; - break; - case NOSTR_BECH32_NPUB: - if (!parse_nostr_bech32_npub(cur, &obj->npub)) - return 0; - break; - case NOSTR_BECH32_NSEC: - if (!parse_nostr_bech32_nsec(cur, &obj->nsec)) - return 0; - break; - case NOSTR_BECH32_NEVENT: - if (!parse_nostr_bech32_nevent(cur, &obj->nevent)) - return 0; - break; - case NOSTR_BECH32_NADDR: - if (!parse_nostr_bech32_naddr(cur, &obj->naddr)) - return 0; - break; - case NOSTR_BECH32_NPROFILE: - if (!parse_nostr_bech32_nprofile(cur, &obj->nprofile)) - return 0; - break; - case NOSTR_BECH32_NRELAY: - if (!parse_nostr_bech32_nrelay(cur, &obj->nrelay)) - return 0; - break; - } - - return 1; -} - - -int parse_nostr_bech32_str(struct cursor *bech32, enum nostr_bech32_type *type) { - unsigned char *start = bech32->p; - unsigned char *data_start; - int n; - - if (!(n = parse_nostr_bech32_type((const char *)bech32->p, type))) { - bech32->p = start; - return 0; - } - - data_start = start + n; - if (!consume_until_non_alphanumeric(bech32, 1)) { - bech32->p = start; - return 0; - } - - // must be at least 59 chars for the data part - //ndb_debug("bech32_data_size %ld '%c' '%c' '%.*s'\n", bech32->p - data_start, *(bech32->p-1), *data_start, (int)(bech32->p - data_start), data_start); - if (bech32->p - data_start < 59) { - bech32->p = start; - return 0; - } - - return 1; -} - - -int parse_nostr_bech32(unsigned char *buf, int buflen, - const char *bech32_str, size_t bech32_len, - struct nostr_bech32 *obj) { - unsigned char *start; - size_t parsed_len, u5_out_len, u8_out_len; - enum nostr_bech32_type type; - #define MAX_PREFIX 9 // 8 bytes for the text, 1 byte for the null terminator - struct cursor cur, bech32, u8; - - make_cursor(buf, buf + buflen, &cur); - make_cursor((unsigned char*)bech32_str, (unsigned char*)bech32_str + bech32_len, &bech32); - - start = bech32.p; - if (!parse_nostr_bech32_str(&bech32, &type)) - return 0; - - parsed_len = bech32.p - start; - - // some random sanity checking - if (parsed_len < 10 || parsed_len > 10000) - return 0; - - unsigned char *u5 = malloc(parsed_len); - char prefix[MAX_PREFIX]; - - if (bech32_decode_len(prefix, u5, &u5_out_len, (const char*)start, - parsed_len, MAX_PREFIX) == BECH32_ENCODING_NONE) - { - return 0; - } - - if (!bech32_convert_bits(cur.p, &u8_out_len, 8, u5, u5_out_len, 5, 0)) - return 0; - - free(u5); - - make_cursor(cur.p, cur.p + u8_out_len, &u8); - - return parse_nostr_bech32_buffer(&u8, type, obj); -} - diff --git a/nostrdb/src/nostr_bech32.h b/nostrdb/src/nostr_bech32.h deleted file mode 100644 index 6b1956b92a..0000000000 --- a/nostrdb/src/nostr_bech32.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// nostr_bech32.h -// damus -// -// Created by William Casarin on 2023-04-09. -// - -#ifndef nostr_bech32_h -#define nostr_bech32_h - -#include -#include "str_block.h" -#include "nostrdb.h" -#include "cursor.h" - -int parse_nostr_bech32_str(struct cursor *bech32, enum nostr_bech32_type *type); -int parse_nostr_bech32_type(const char *prefix, enum nostr_bech32_type *type); - -int parse_nostr_bech32_buffer(struct cursor *cur, enum nostr_bech32_type type, - struct nostr_bech32 *obj); - -int parse_nostr_bech32(unsigned char *buf, int buflen, - const char *bech32_str, size_t bech32_len, - struct nostr_bech32 *obj); - -/* -int parse_nostr_bech32(const char *bech32, size_t input_len, - unsigned char *outbuf, size_t outlen, - enum nostr_bech32_type *type); - */ - -#endif /* nostr_bech32_h */ diff --git a/nostrdb/src/nostrdb.c b/nostrdb/src/nostrdb.c deleted file mode 100644 index a06e5821f8..0000000000 --- a/nostrdb/src/nostrdb.c +++ /dev/null @@ -1,8462 +0,0 @@ - -#include "nostrdb.h" -#include "jsmn.h" -#include "hex.h" -#include "cursor.h" -#include "random.h" -#include "ccan/crypto/sha256/sha256.h" -#include "bolt11/bolt11.h" -#include "bolt11/amount.h" -#include "lmdb.h" -#include "util.h" -#include "cpu.h" -#include "block.h" -#include "threadpool.h" -#include "thread.h" -#include "protected_queue.h" -#include "memchr.h" -#include "print_util.h" -#include -#include -#include - -#include "bindings/c/profile_json_parser.h" -#include "bindings/c/profile_builder.h" -#include "bindings/c/meta_builder.h" -#include "bindings/c/meta_reader.h" -#include "bindings/c/profile_verifier.h" -#include "secp256k1.h" -#include "secp256k1_ecdh.h" -#include "secp256k1_schnorrsig.h" - -#define max(a,b) ((a) > (b) ? (a) : (b)) -#define min(a,b) ((a) < (b) ? (a) : (b)) - -// the maximum number of things threads pop and push in bulk -#define THREAD_QUEUE_BATCH 4096 - -// maximum number of active subscriptions -#define MAX_SUBSCRIPTIONS 256 -#define MAX_SCAN_CURSORS 12 -#define MAX_FILTERS 16 - -// the maximum size of inbox queues -static const int DEFAULT_QUEUE_SIZE = 32768; - -// 2mb scratch size for the writer thread -static const int DEFAULT_WRITER_SCRATCH_SIZE = 2097152; - -// increase if we need bigger filters -#define NDB_FILTER_PAGES 64 - -#define ndb_flag_set(flags, f) ((flags & f) == f) - -#define NDB_PARSED_ID (1 << 0) -#define NDB_PARSED_PUBKEY (1 << 1) -#define NDB_PARSED_SIG (1 << 2) -#define NDB_PARSED_CREATED_AT (1 << 3) -#define NDB_PARSED_KIND (1 << 4) -#define NDB_PARSED_CONTENT (1 << 5) -#define NDB_PARSED_TAGS (1 << 6) -#define NDB_PARSED_ALL (NDB_PARSED_ID|NDB_PARSED_PUBKEY|NDB_PARSED_SIG|NDB_PARSED_CREATED_AT|NDB_PARSED_KIND|NDB_PARSED_CONTENT|NDB_PARSED_TAGS) - -typedef int (*ndb_migrate_fn)(struct ndb_txn *); -typedef int (*ndb_word_parser_fn)(void *, const char *word, int word_len, - int word_index); - -// these must be byte-aligned, they are directly accessing the serialized data -// representation -#pragma pack(push, 1) - -union ndb_packed_str { - struct { - char str[3]; - // we assume little endian everywhere. sorry not sorry. - unsigned char flag; // NDB_PACKED_STR, etc - } packed; - - uint32_t offset; - unsigned char bytes[4]; -}; - -struct ndb_tag { - uint16_t count; - union ndb_packed_str strs[0]; -}; - -struct ndb_tags { - uint16_t padding; - uint16_t count; -}; - -// v1 -struct ndb_note { - unsigned char version; // v=1 - unsigned char padding[3]; // keep things aligned - unsigned char id[32]; - unsigned char pubkey[32]; - unsigned char sig[64]; - - uint64_t created_at; - uint32_t kind; - uint32_t content_length; - union ndb_packed_str content; - uint32_t strings; - // nothing can come after tags since it contains variadic data - struct ndb_tags tags; -}; - -#pragma pack(pop) - - -struct ndb_migration { - ndb_migrate_fn fn; -}; - -struct ndb_profile_record_builder { - flatcc_builder_t *builder; - void *flatbuf; -}; - -// controls whether to continue or stop the json parser -enum ndb_idres { - NDB_IDRES_CONT, - NDB_IDRES_STOP, -}; - -// closure data for the id-detecting ingest controller -struct ndb_ingest_controller -{ - MDB_txn *read_txn; - struct ndb_lmdb *lmdb; - struct ndb_note *note; - uint64_t note_key; -}; - -enum ndb_writer_msgtype { - NDB_WRITER_QUIT, // kill thread immediately - NDB_WRITER_NOTE, // write a note to the db - NDB_WRITER_PROFILE, // write a profile to the db - NDB_WRITER_DBMETA, // write ndb metadata - NDB_WRITER_PROFILE_LAST_FETCH, // when profiles were last fetched - NDB_WRITER_BLOCKS, // write parsed note blocks - NDB_WRITER_MIGRATE, // migrate the database - NDB_WRITER_NOTE_RELAY, // we already have the note, but we have more relays to write -}; - -// keys used for storing data in the NDB metadata database (NDB_DB_NDB_META) -enum ndb_meta_key { - NDB_META_KEY_VERSION = 1 -}; - -struct ndb_json_parser { - const char *json; - int json_len; - struct ndb_builder builder; - jsmn_parser json_parser; - jsmntok_t *toks, *toks_end; - int i; - int num_tokens; -}; - -// useful to pass to threads on its own -struct ndb_lmdb { - MDB_env *env; - MDB_dbi dbs[NDB_DBS]; -}; - -struct ndb_writer { - struct ndb_lmdb *lmdb; - struct ndb_monitor *monitor; - - int scratch_size; - uint32_t ndb_flags; - void *queue_buf; - int queue_buflen; - pthread_t thread_id; - - struct prot_queue inbox; -}; - -struct ndb_ingester { - struct ndb_lmdb *lmdb; - uint32_t flags; - struct threadpool tp; - struct prot_queue *writer_inbox; - void *filter_context; - ndb_ingest_filter_fn filter; - - int scratch_size; -}; - -struct ndb_filter_group { - struct ndb_filter filters[MAX_FILTERS]; - int num_filters; -}; - -struct ndb_subscription { - uint64_t subid; - struct ndb_filter_group group; - struct prot_queue inbox; -}; - -struct ndb_monitor { - struct ndb_subscription subscriptions[MAX_SUBSCRIPTIONS]; - ndb_sub_fn sub_cb; - void *sub_cb_ctx; - int num_subscriptions; - - // monitor isn't a full inbox. We want pollers to be able to poll - // subscriptions efficiently without going through a message queue, so - // we use a simple mutex here. - pthread_mutex_t mutex; -}; - -struct ndb { - struct ndb_lmdb lmdb; - struct ndb_ingester ingester; - struct ndb_monitor monitor; - struct ndb_writer writer; - int version; - uint32_t flags; // setting flags - // lmdb environ handles, etc -}; - -/// -/// Query Plans -/// -/// There are general strategies for performing certain types of query -/// depending on the filter. For example, for large contact list queries -/// with many authors, we simply do a descending scan on created_at -/// instead of doing 1000s of pubkey scans. -/// -/// Query plans are calculated from filters via `ndb_filter_plan` -/// -enum ndb_query_plan { - NDB_PLAN_KINDS, - NDB_PLAN_IDS, - NDB_PLAN_AUTHORS, - NDB_PLAN_AUTHOR_KINDS, - NDB_PLAN_CREATED, - NDB_PLAN_TAGS, - NDB_PLAN_SEARCH, - NDB_PLAN_RELAY_KINDS, - NDB_PLAN_PROFILE_SEARCH, -}; - -// A id + u64 + timestamp -struct ndb_id_u64_ts { - unsigned char id[32]; // pubkey, id, etc - uint64_t u64; // kind, etc - uint64_t timestamp; -}; - -// A clustered key with an id and a timestamp -struct ndb_tsid { - unsigned char id[32]; - uint64_t timestamp; -}; - -// A u64 + timestamp id. Just using this for kinds at the moment. -struct ndb_u64_ts { - uint64_t u64; // kind, etc - uint64_t timestamp; -}; - -struct ndb_word -{ - const char *word; - int word_len; -}; - -struct ndb_search_words -{ - struct ndb_word words[MAX_TEXT_SEARCH_WORDS]; - int num_words; -}; - - -static inline int is_replaceable_kind(uint64_t kind) -{ - return kind == 0 || kind == 3 - || (10000 <= kind && kind < 20000) - || (30000 <= kind && kind < 40000); -} - - -// ndb_text_search_key -// -// This is compressed when in lmdb: -// -// note_id: varint -// strlen: varint -// str: cstr -// timestamp: varint -// word_index: varint -// -static int ndb_make_text_search_key(unsigned char *buf, int bufsize, - int word_index, int word_len, const char *str, - uint64_t timestamp, uint64_t note_id, - int *keysize) -{ - struct cursor cur; - make_cursor(buf, buf + bufsize, &cur); - - // TODO: need update this to uint64_t - // we push this first because our query function can pull this off - // quickly to check matches - if (!cursor_push_varint(&cur, (int32_t)note_id)) - return 0; - - // string length - if (!cursor_push_varint(&cur, word_len)) - return 0; - - // non-null terminated, lowercase string - if (!cursor_push_lowercase(&cur, str, word_len)) - return 0; - - // TODO: need update this to uint64_t - if (!cursor_push_varint(&cur, (int)timestamp)) - return 0; - - // the index of the word in the content so that we can do more accurate - // phrase searches - if (!cursor_push_varint(&cur, word_index)) - return 0; - - // pad to 8-byte alignment - if (!cursor_align(&cur, 8)) - return 0; - - *keysize = cur.p - cur.start; - assert((*keysize % 8) == 0); - - return 1; -} - -static int ndb_make_noted_text_search_key(unsigned char *buf, int bufsize, - int wordlen, const char *word, - uint64_t timestamp, uint64_t note_id, - int *keysize) -{ - return ndb_make_text_search_key(buf, bufsize, 0, wordlen, word, - timestamp, note_id, keysize); -} - -static int ndb_make_text_search_key_low(unsigned char *buf, int bufsize, - int wordlen, const char *word, - uint64_t since, - int *keysize) -{ - uint64_t note_id; - note_id = 0; - return ndb_make_text_search_key(buf, bufsize, 0, wordlen, word, - since, note_id, keysize); -} - -static int ndb_make_text_search_key_high(unsigned char *buf, int bufsize, - int wordlen, const char *word, - uint64_t until, - int *keysize) -{ - uint64_t note_id; - note_id = INT32_MAX; - return ndb_make_text_search_key(buf, bufsize, 0, wordlen, word, - until, note_id, keysize); -} - -typedef int (*ndb_text_search_key_order_fn)(unsigned char *buf, int bufsize, int wordlen, const char *word, uint64_t timestamp, int *keysize); - -/** From LMDB: Compare two items lexically */ -static int mdb_cmp_memn(const MDB_val *a, const MDB_val *b) { - int diff; - ssize_t len_diff; - unsigned int len; - - len = a->mv_size; - len_diff = (ssize_t) a->mv_size - (ssize_t) b->mv_size; - if (len_diff > 0) { - len = b->mv_size; - len_diff = 1; - } - - diff = memcmp(a->mv_data, b->mv_data, len); - return diff ? diff : len_diff<0 ? -1 : len_diff; -} - -static int ndb_tag_key_compare(const MDB_val *a, const MDB_val *b) -{ - MDB_val va, vb; - uint64_t ts_a, ts_b; - int cmp; - - va.mv_data = a->mv_data; - va.mv_size = a->mv_size - 8; - - vb.mv_data = b->mv_data; - vb.mv_size = b->mv_size - 8; - - if ((cmp = mdb_cmp_memn(&va, &vb))) - return cmp; - - ts_a = *(uint64_t*)((unsigned char *)va.mv_data + va.mv_size); - ts_b = *(uint64_t*)((unsigned char *)vb.mv_data + vb.mv_size); - - if (ts_a < ts_b) - return -1; - else if (ts_a > ts_b) - return 1; - - return 0; -} - -static int ndb_text_search_key_compare(const MDB_val *a, const MDB_val *b) -{ - struct cursor ca, cb; - uint64_t sa, sb, nid_a, nid_b; - MDB_val a2, b2; - - make_cursor(a->mv_data, (unsigned char *)a->mv_data + a->mv_size, &ca); - make_cursor(b->mv_data, (unsigned char *)b->mv_data + b->mv_size, &cb); - - // note_id - if (unlikely(!cursor_pull_varint(&ca, &nid_a) || !cursor_pull_varint(&cb, &nid_b))) - return 0; - - // string size - if (unlikely(!cursor_pull_varint(&ca, &sa) || !cursor_pull_varint(&cb, &sb))) - return 0; - - a2.mv_data = ca.p; - a2.mv_size = sa; - - b2.mv_data = cb.p; - b2.mv_size = sb; - - int cmp = mdb_cmp_memn(&a2, &b2); - if (cmp) return cmp; - - // skip over string - ca.p += sa; - cb.p += sb; - - // timestamp - if (unlikely(!cursor_pull_varint(&ca, &sa) || !cursor_pull_varint(&cb, &sb))) - return 0; - - if (sa < sb) return -1; - else if (sa > sb) return 1; - - // note_id - if (nid_a < nid_b) return -1; - else if (nid_a > nid_b) return 1; - - // word index - if (unlikely(!cursor_pull_varint(&ca, &sa) || !cursor_pull_varint(&cb, &sb))) - return 0; - - if (sa < sb) return -1; - else if (sa > sb) return 1; - - return 0; -} - -static inline int ndb_unpack_text_search_key_noteid( - struct cursor *cur, uint64_t *note_id) -{ - if (!cursor_pull_varint(cur, note_id)) - return 0; - - return 1; -} - -// faster peek of just the string instead of unpacking everything -// this is used to quickly discard range query matches if there is no -// common prefix -static inline int ndb_unpack_text_search_key_string(struct cursor *cur, - const char **str, - int *str_len) -{ - uint64_t len; - - if (!cursor_pull_varint(cur, &len)) - return 0; - - *str_len = len; - - *str = (const char *)cur->p; - - if (!cursor_skip(cur, *str_len)) - return 0; - - return 1; -} - -// should be called after ndb_unpack_text_search_key_string. It continues -// the unpacking of a text search key if we've already started it. -static inline int -ndb_unpack_remaining_text_search_key(struct cursor *cur, - struct ndb_text_search_key *key) -{ - if (!cursor_pull_varint(cur, &key->timestamp)) - return 0; - - if (!cursor_pull_varint(cur, &key->word_index)) - return 0; - - return 1; -} - -// unpack a fulltext search key -// -// full version of string + unpack remaining. This is split up because text -// searching only requires to pull the string for prefix searching, and the -// remaining is optional -static inline int ndb_unpack_text_search_key(unsigned char *p, int len, - struct ndb_text_search_key *key) -{ - struct cursor c; - make_cursor(p, p + len, &c); - - if (!ndb_unpack_text_search_key_noteid(&c, &key->note_id)) - return 0; - - if (!ndb_unpack_text_search_key_string(&c, &key->str, &key->str_len)) - return 0; - - return ndb_unpack_remaining_text_search_key(&c, key); -} - -// Copies only lowercase characters to the destination string and fills the rest with null bytes. -// `dst` and `src` are pointers to the destination and source strings, respectively. -// `n` is the maximum number of characters to copy. -static void lowercase_strncpy(char *dst, const char *src, int n) { - int j = 0, i = 0; - - if (!dst || !src || n == 0) { - return; - } - - while (src[i] != '\0' && j < n) { - dst[j++] = tolower(src[i++]); - } - - // Null-terminate and fill the destination string - while (j < n) { - dst[j++] = '\0'; - } -} - -static inline int ndb_filter_elem_is_ptr(struct ndb_filter_field *field) { - return field->elem_type == NDB_ELEMENT_STRING || field->elem_type == NDB_ELEMENT_ID; -} - -// Copy the filter -int ndb_filter_clone(struct ndb_filter *dst, struct ndb_filter *src) -{ - size_t src_size, elem_size, data_size; - - memcpy(dst, src, sizeof(*src)); - - elem_size = src->elem_buf.end - src->elem_buf.start; - data_size = src->data_buf.end - src->data_buf.start; - src_size = data_size + elem_size; - - // let's only allow finalized filters to be cloned - if (!src || !src->finalized) - return 0; - - dst->elem_buf.start = malloc(src_size); - dst->elem_buf.end = dst->elem_buf.start + elem_size; - dst->elem_buf.p = dst->elem_buf.end; - - dst->data_buf.start = dst->elem_buf.start + elem_size; - dst->data_buf.end = dst->data_buf.start + data_size; - dst->data_buf.p = dst->data_buf.end; - - if (dst->elem_buf.start == NULL) - return 0; - - memcpy(dst->elem_buf.start, src->elem_buf.start, src_size); - - return 1; -} - -// "Finalize" the filter. This resizes the allocated heap buffers so that they -// are as small as possible. This also prevents new fields from being added -int ndb_filter_end(struct ndb_filter *filter) -{ -#ifdef NDB_LOG - size_t orig_size; -#endif - size_t data_len, elem_len; - unsigned char *rel; - - assert(filter); - assert(filter->elem_buf.start); - - if (filter->finalized == 1) - return 0; - - // move the data buffer to the end of the element buffer and update - // all of the element pointers accordingly - data_len = filter->data_buf.p - filter->data_buf.start; - elem_len = filter->elem_buf.p - filter->elem_buf.start; -#ifdef NDB_LOG - orig_size = filter->data_buf.end - filter->elem_buf.start; -#endif - - // cap the elem buff - filter->elem_buf.end = filter->elem_buf.p; - - // move the data buffer to the end of the element buffer - memmove(filter->elem_buf.p, filter->data_buf.start, data_len); - - // realloc the whole thing - size_t new_size = elem_len + data_len; - if (new_size == 0) { - // Avoid calling realloc with size 0 (implementation-defined behavior) - // Explicitly free and set to NULL - free(filter->elem_buf.start); - filter->elem_buf.start = NULL; - } else { - rel = realloc(filter->elem_buf.start, new_size); - if (rel) { - filter->elem_buf.start = rel; - } - // Assert allocation succeeded for non-zero size - assert(filter->elem_buf.start); - } - filter->elem_buf.end = filter->elem_buf.start + elem_len; - filter->elem_buf.p = filter->elem_buf.end; - - filter->data_buf.start = filter->elem_buf.end; - filter->data_buf.end = filter->data_buf.start + data_len; - filter->data_buf.p = filter->data_buf.end; - - filter->finalized = 1; - - ndb_debug("ndb_filter_end: %ld -> %ld\n", orig_size, elem_len + data_len); - - return 1; -} - -static inline struct ndb_filter_elements * -ndb_filter_get_elements_by_offset(const struct ndb_filter *filter, int offset) -{ - struct ndb_filter_elements *els; - - if (offset < 0) - return NULL; - - els = (struct ndb_filter_elements *)(filter->elem_buf.start + offset); - - if ((unsigned char *)els > filter->elem_buf.p) - return NULL; - - return els; -} - -struct ndb_filter_elements * -ndb_filter_current_element(const struct ndb_filter *filter) -{ - return ndb_filter_get_elements_by_offset(filter, filter->current); -} - -struct ndb_filter_elements * -ndb_filter_get_elements(const struct ndb_filter *filter, int index) -{ - if (filter->num_elements <= 0) - return NULL; - - if (index > filter->num_elements-1) - return NULL; - - return ndb_filter_get_elements_by_offset(filter, filter->elements[index]); -} - -static inline unsigned char * -ndb_filter_elements_data(const struct ndb_filter *filter, int offset) -{ - unsigned char *data; - - if (offset < 0) - return NULL; - - data = filter->data_buf.start + offset; - if (data > filter->data_buf.p) - return NULL; - - return data; -} - -struct ndb_filter_custom * -ndb_filter_get_custom_element(const struct ndb_filter *filter, const struct ndb_filter_elements *els) -{ - return (struct ndb_filter_custom *)ndb_filter_elements_data(filter, els->elements[0]); -} - -unsigned char * -ndb_filter_get_id_element(const struct ndb_filter *filter, const struct ndb_filter_elements *els, int index) -{ - return ndb_filter_elements_data(filter, els->elements[index]); -} - -const char * -ndb_filter_get_string_element(const struct ndb_filter *filter, const struct ndb_filter_elements *els, int index) -{ - return (const char *)ndb_filter_elements_data(filter, els->elements[index]); -} - -uint64_t * -ndb_filter_get_int_element_ptr(struct ndb_filter_elements *els, int index) -{ - return &els->elements[index]; -} - -uint64_t -ndb_filter_get_int_element(const struct ndb_filter_elements *els, int index) -{ - return els->elements[index]; -} - -int ndb_filter_init_with(struct ndb_filter *filter, int pages) -{ - struct cursor cur; - int page_size, elem_size, data_size, buf_size; - - page_size = 4096; // assuming this, not a big deal if we're wrong - - buf_size = page_size * pages; - elem_size = buf_size / 4; - data_size = buf_size - elem_size; - - unsigned char *buf = malloc(buf_size); - if (!buf) - return 0; - - // init memory arena for the cursor - make_cursor(buf, buf + buf_size, &cur); - - cursor_slice(&cur, &filter->elem_buf, elem_size); - cursor_slice(&cur, &filter->data_buf, data_size); - - // make sure we are fully allocated - assert(cur.p == cur.end); - - // make sure elem_buf is the start of the buffer - assert(filter->elem_buf.start == cur.start); - - filter->num_elements = 0; - filter->elements[0] = 0; - filter->current = -1; - filter->finalized = 0; - - return 1; -} - -int ndb_filter_init(struct ndb_filter *filter) { - return ndb_filter_init_with(filter, NDB_FILTER_PAGES); -} - -void ndb_filter_destroy(struct ndb_filter *filter) -{ - if (filter->elem_buf.start) - free(filter->elem_buf.start); - - memset(filter, 0, sizeof(*filter)); -} - -static const char *ndb_filter_field_name(enum ndb_filter_fieldtype field) -{ - switch (field) { - case NDB_FILTER_IDS: return "ids"; - case NDB_FILTER_AUTHORS: return "authors"; - case NDB_FILTER_KINDS: return "kinds"; - case NDB_FILTER_TAGS: return "tags"; - case NDB_FILTER_SINCE: return "since"; - case NDB_FILTER_UNTIL: return "until"; - case NDB_FILTER_LIMIT: return "limit"; - case NDB_FILTER_SEARCH: return "search"; - case NDB_FILTER_RELAYS: return "relays"; - case NDB_FILTER_CUSTOM: return "custom"; - } - - return "unknown"; -} - -static int ndb_filter_start_field_impl(struct ndb_filter *filter, enum ndb_filter_fieldtype field, char tag) -{ - int i; - struct ndb_filter_elements *els, *el; - - if (ndb_filter_current_element(filter)) { - fprintf(stderr, "ndb_filter_start_field: filter field already in progress, did you forget to call ndb_filter_end_field?\n"); - return 0; - } - - // you can only start and end fields once - for (i = 0; i < filter->num_elements; i++) { - el = ndb_filter_get_elements(filter, i); - assert(el); - // TODO: fix this tags check to try to find matching tags - if (el->field.type == field && field != NDB_FILTER_TAGS) { - fprintf(stderr, "ndb_filter_start_field: field '%s' already exists\n", - ndb_filter_field_name(field)); - return 0; - } - } - - filter->current = filter->elem_buf.p - filter->elem_buf.start; - els = ndb_filter_current_element(filter); - assert(els); - - // advance elem buffer to the variable data section - if (!cursor_skip(&filter->elem_buf, sizeof(struct ndb_filter_elements))) { - fprintf(stderr, "ndb_filter_start_field: '%s' oom (todo: realloc?)\n", - ndb_filter_field_name(field)); - return 0; - } - - els->field.type = field; - els->field.tag = tag; - els->field.elem_type = 0; - els->count = 0; - - return 1; -} - -int ndb_filter_start_field(struct ndb_filter *filter, enum ndb_filter_fieldtype field) -{ - return ndb_filter_start_field_impl(filter, field, 0); -} - -int ndb_filter_start_tag_field(struct ndb_filter *filter, char tag) -{ - return ndb_filter_start_field_impl(filter, NDB_FILTER_TAGS, tag); -} - -static int ndb_filter_add_element(struct ndb_filter *filter, union ndb_filter_element el) -{ - struct ndb_filter_elements *current; - uint64_t offset; - - if (!(current = ndb_filter_current_element(filter))) - return 0; - - offset = filter->data_buf.p - filter->data_buf.start; - - switch (current->field.type) { - case NDB_FILTER_CUSTOM: - if (!cursor_push(&filter->data_buf, (unsigned char *)&el, sizeof(el))) - return 0; - break; - case NDB_FILTER_IDS: - case NDB_FILTER_AUTHORS: - if (!cursor_push(&filter->data_buf, (unsigned char *)el.id, 32)) - return 0; - break; - case NDB_FILTER_KINDS: - offset = el.integer; - break; - case NDB_FILTER_SINCE: - case NDB_FILTER_UNTIL: - case NDB_FILTER_LIMIT: - // only one allowed for since/until - if (current->count != 0) - return 0; - offset = el.integer; - break; - case NDB_FILTER_SEARCH: - if (current->field.elem_type != NDB_ELEMENT_STRING) { - return 0; - } - if (!cursor_push(&filter->data_buf, (unsigned char *)el.string.string, el.string.len)) - return 0; - if (!cursor_push_byte(&filter->data_buf, 0)) - return 0; - break; - case NDB_FILTER_TAGS: - switch (current->field.elem_type) { - case NDB_ELEMENT_ID: - if (!cursor_push(&filter->data_buf, (unsigned char *)el.id, 32)) - return 0; - break; - case NDB_ELEMENT_STRING: - if (!cursor_push(&filter->data_buf, (unsigned char *)el.string.string, el.string.len)) - return 0; - if (!cursor_push_byte(&filter->data_buf, 0)) - return 0; - break; - case NDB_ELEMENT_INT: - // ints are not allowed in tag filters - case NDB_ELEMENT_UNKNOWN: - case NDB_ELEMENT_CUSTOM: - return 0; - } - // push a pointer of the string in the databuf as an element - break; - case NDB_FILTER_RELAYS: - if (current->field.elem_type != NDB_ELEMENT_STRING) { - return 0; - } - if (!cursor_push(&filter->data_buf, (unsigned char *)el.string.string, el.string.len)) - return 0; - if (!cursor_push_byte(&filter->data_buf, 0)) - return 0; - break; - } - - if (!cursor_push(&filter->elem_buf, (unsigned char *)&offset, - sizeof(offset))) { - return 0; - } - - current->count++; - - return 1; -} - -static int ndb_filter_set_elem_type(struct ndb_filter *filter, - enum ndb_generic_element_type elem_type) -{ - enum ndb_generic_element_type current_elem_type; - struct ndb_filter_elements *current; - - if (!(current = ndb_filter_current_element(filter))) - return 0; - - current_elem_type = current->field.elem_type; - - // element types must be uniform - if (current_elem_type != elem_type && current_elem_type != NDB_ELEMENT_UNKNOWN) { - fprintf(stderr, "ndb_filter_set_elem_type: element types must be uniform\n"); - return 0; - } - - current->field.elem_type = elem_type; - - return 1; -} - - -int ndb_filter_add_str_element_len(struct ndb_filter *filter, const char *str, int len) -{ - union ndb_filter_element el; - struct ndb_filter_elements *current; - - if (!(current = ndb_filter_current_element(filter))) - return 0; - - // only generic tags and search queries are allowed to have strings - switch (current->field.type) { - case NDB_FILTER_SINCE: - case NDB_FILTER_UNTIL: - case NDB_FILTER_LIMIT: - case NDB_FILTER_IDS: - case NDB_FILTER_AUTHORS: - case NDB_FILTER_KINDS: - case NDB_FILTER_CUSTOM: - return 0; - case NDB_FILTER_SEARCH: - if (current->count == 1) { - // you can't add more than one string to a search - return 0; - } - break; - case NDB_FILTER_RELAYS: - case NDB_FILTER_TAGS: - break; - } - - if (!ndb_filter_set_elem_type(filter, NDB_ELEMENT_STRING)) - return 0; - - el.string.string = str; - el.string.len = len; - - return ndb_filter_add_element(filter, el); -} - -int ndb_filter_add_str_element(struct ndb_filter *filter, const char *str) -{ - return ndb_filter_add_str_element_len(filter, str, strlen(str)); -} - -int ndb_filter_add_custom_filter_element(struct ndb_filter *filter, ndb_filter_callback_fn *cb, void *ctx) -{ - union ndb_filter_element el; - struct ndb_filter_elements *current; - struct ndb_filter_custom custom; - - custom.cb = cb; - custom.ctx = ctx; - - if (!(current = ndb_filter_current_element(filter))) - return 0; - - switch (current->field.type) { - case NDB_FILTER_CUSTOM: - break; - case NDB_FILTER_IDS: - case NDB_FILTER_AUTHORS: - case NDB_FILTER_TAGS: - case NDB_FILTER_SEARCH: - case NDB_FILTER_RELAYS: - case NDB_FILTER_KINDS: - case NDB_FILTER_SINCE: - case NDB_FILTER_UNTIL: - case NDB_FILTER_LIMIT: - return 0; - } - - if (!ndb_filter_set_elem_type(filter, NDB_ELEMENT_CUSTOM)) - return 0; - - el.custom_filter = custom; - - return ndb_filter_add_element(filter, el); -} - -int ndb_filter_add_int_element(struct ndb_filter *filter, uint64_t integer) -{ - union ndb_filter_element el; - struct ndb_filter_elements *current; - if (!(current = ndb_filter_current_element(filter))) - return 0; - - switch (current->field.type) { - case NDB_FILTER_IDS: - case NDB_FILTER_AUTHORS: - case NDB_FILTER_TAGS: - case NDB_FILTER_SEARCH: - case NDB_FILTER_RELAYS: - case NDB_FILTER_CUSTOM: - return 0; - case NDB_FILTER_KINDS: - case NDB_FILTER_SINCE: - case NDB_FILTER_UNTIL: - case NDB_FILTER_LIMIT: - break; - } - - if (!ndb_filter_set_elem_type(filter, NDB_ELEMENT_INT)) - return 0; - - el.integer = integer; - - return ndb_filter_add_element(filter, el); -} - -int ndb_filter_add_id_element(struct ndb_filter *filter, const unsigned char *id) -{ - union ndb_filter_element el; - struct ndb_filter_elements *current; - - if (!(current = ndb_filter_current_element(filter))) - return 0; - - // only certain filter types allow pushing id elements - switch (current->field.type) { - case NDB_FILTER_SINCE: - case NDB_FILTER_UNTIL: - case NDB_FILTER_LIMIT: - case NDB_FILTER_KINDS: - case NDB_FILTER_SEARCH: - case NDB_FILTER_RELAYS: - case NDB_FILTER_CUSTOM: - return 0; - case NDB_FILTER_IDS: - case NDB_FILTER_AUTHORS: - case NDB_FILTER_TAGS: - break; - } - - if (!ndb_filter_set_elem_type(filter, NDB_ELEMENT_ID)) - return 0; - - // this is needed so that generic filters know its an id - el.id = id; - - return ndb_filter_add_element(filter, el); -} - -static int ndb_tag_filter_matches(struct ndb_filter *filter, - struct ndb_filter_elements *els, - struct ndb_note *note) -{ - int i; - const unsigned char *id; - const char *el_str; - struct ndb_iterator iter, *it = &iter; - struct ndb_str str; - - ndb_tags_iterate_start(note, it); - - while (ndb_tags_iterate_next(it)) { - // we're looking for tags with 2 or more entries: ["p", id], etc - if (it->tag->count < 2) - continue; - - str = ndb_tag_str(note, it->tag, 0); - - // we only care about packed strings (single char, etc) - if (str.flag != NDB_PACKED_STR) - continue; - - // do we have #e matching e (or p, etc) - if (str.str[0] != els->field.tag || str.str[1] != 0) - continue; - - str = ndb_tag_str(note, it->tag, 1); - - switch (els->field.elem_type) { - case NDB_ELEMENT_ID: - // if our filter element type is an id, then we - // expect a packed id in the tag, otherwise skip - if (str.flag != NDB_PACKED_ID) - continue; - break; - case NDB_ELEMENT_STRING: - // if our filter element type is a string, then - // we should not expect an id - if (str.flag == NDB_PACKED_ID) - continue; - - break; - case NDB_ELEMENT_UNKNOWN: - default: - // For some reason the element type is not set. It's - // possible nothing was added to the generic filter? - // Let's just fail here and log a note for debugging - fprintf(stderr, "UNUSUAL ndb_tag_filter_matches: have unknown element type %d\n", els->field.elem_type); - return 0; - } - - for (i = 0; i < els->count; i++) { - switch (els->field.elem_type) { - case NDB_ELEMENT_ID: - id = ndb_filter_get_id_element(filter, els, i); - if (!memcmp(id, str.id, 32)) - return 1; - break; - case NDB_ELEMENT_STRING: - el_str = ndb_filter_get_string_element(filter, els, i); - if (!strcmp(el_str, str.str)) - return 1; - break; - case NDB_ELEMENT_INT: - // int elements int tag queries are not supported - case NDB_ELEMENT_UNKNOWN: - case NDB_ELEMENT_CUSTOM: - return 0; - } - } - } - - return 0; -} - -struct search_id_state { - struct ndb_filter *filter; - struct ndb_filter_elements *els; - unsigned char *key; -}; - -static int compare_ids(const void *pa, const void *pb) -{ - unsigned char *a = *(unsigned char **)pa; - unsigned char *b = *(unsigned char **)pb; - - return memcmp(a, b, 32); -} - -static int compare_strs(const void *pa, const void *pb) -{ - const char *a = *(const char **)pa; - const char *b = *(const char **)pb; - - return strcmp(a, b); -} - -static int search_strs(const void *ctx, const void *mstr_ptr) -{ - // we reuse search_id_state here and just cast to (const char *) when - // needed - struct search_id_state *state; - const char *mstr_str; - uint32_t mstr; - - state = (struct search_id_state *)ctx; - mstr = *(uint32_t *)mstr_ptr; - - mstr_str = (const char *)ndb_filter_elements_data(state->filter, mstr); - assert(mstr_str); - - return strcmp((const char *)state->key, mstr_str); -} - -static int search_ids(const void *ctx, const void *mid_ptr) -{ - struct search_id_state *state; - unsigned char *mid_id; - uint32_t mid; - - state = (struct search_id_state *)ctx; - mid = *(uint32_t *)mid_ptr; - - mid_id = ndb_filter_elements_data(state->filter, mid); - assert(mid_id); - - return memcmp(state->key, mid_id, 32); -} - -static int compare_kinds(const void *pa, const void *pb) -{ - - // NOTE: this should match type in `union ndb_filter_element` - uint64_t a = *(uint64_t *)pa; - uint64_t b = *(uint64_t *)pb; - - if (a < b) { - return -1; - } else if (a > b) { - return 1; - } else { - return 0; - } -} - -// -// returns 1 if a filter matches a note -static int ndb_filter_matches_with(struct ndb_filter *filter, - struct ndb_note *note, int already_matched, - struct ndb_note_relay_iterator *relay_iter) -{ - int i, j; - struct ndb_filter_elements *els; - struct search_id_state state; - struct ndb_filter_custom *custom; - - state.filter = filter; - - for (i = 0; i < filter->num_elements; i++) { - els = ndb_filter_get_elements(filter, i); - state.els = els; - assert(els); - - // if we know we already match from a query scan result, - // we can skip this check - if ((1 << els->field.type) & already_matched) - continue; - - switch (els->field.type) { - case NDB_FILTER_KINDS: - for (j = 0; j < els->count; j++) { - if ((unsigned int)els->elements[j] == note->kind) - goto cont; - } - break; - case NDB_FILTER_RELAYS: - // for each relay the note was seen on, see if any match - if (!relay_iter) { - assert(!"expected relay iterator..."); - break; - } - while ((state.key = (unsigned char *)ndb_note_relay_iterate_next(relay_iter))) { - // relays in filters are always sorted - if (bsearch(&state, &els->elements[0], els->count, - sizeof(els->elements[0]), search_strs)) { - ndb_note_relay_iterate_close(relay_iter); - goto cont; - } - } - ndb_note_relay_iterate_close(relay_iter); - break; - case NDB_FILTER_IDS: - state.key = ndb_note_id(note); - if (bsearch(&state, &els->elements[0], els->count, - sizeof(els->elements[0]), search_ids)) { - continue; - } - break; - case NDB_FILTER_AUTHORS: - state.key = ndb_note_pubkey(note); - if (bsearch(&state, &els->elements[0], els->count, - sizeof(els->elements[0]), search_ids)) { - continue; - } - break; - case NDB_FILTER_TAGS: - if (ndb_tag_filter_matches(filter, els, note)) - continue; - break; - case NDB_FILTER_SINCE: - assert(els->count == 1); - if (note->created_at >= els->elements[0]) - continue; - break; - case NDB_FILTER_UNTIL: - assert(els->count == 1); - if (note->created_at < els->elements[0]) - continue; - break; - case NDB_FILTER_SEARCH: - // TODO: matching search filters will need an accelerated - // data structure, like our minimal perfect hashmap - // idea for mutewords. - // - // We'll also want to store tokenized words in the filter - // itself, so that we can walk over each word and check - // the hashmap to see if the note contains at least - // one word. - // - // For now we always return true, since we assume - // the search index will be walked for these kinds - // of queries. - continue; - case NDB_FILTER_CUSTOM: - custom = ndb_filter_get_custom_element(filter, els); - if (custom->cb(custom->ctx, note)) - continue; - break; - - case NDB_FILTER_LIMIT: -cont: - continue; - } - - // all need to match - return 0; - } - - return 1; -} - -int ndb_filter_matches(struct ndb_filter *filter, struct ndb_note *note) -{ - return ndb_filter_matches_with(filter, note, 0, NULL); -} - -int ndb_filter_matches_with_relay(struct ndb_filter *filter, - struct ndb_note *note, - struct ndb_note_relay_iterator *note_relay_iter) -{ - return ndb_filter_matches_with(filter, note, 0, note_relay_iter); -} - -// because elements are stored as offsets and qsort doesn't support context, -// we do a dumb thing where we convert elements to pointers and back if we -// are doing an id or string sort -static void sort_filter_elements(struct ndb_filter *filter, - struct ndb_filter_elements *els, - int (*cmp)(const void *, const void *)) -{ - int i; - - assert(ndb_filter_elem_is_ptr(&els->field)); - - for (i = 0; i < els->count; i++) - els->elements[i] += (uint64_t)filter->data_buf.start; - - qsort(&els->elements[0], els->count, sizeof(els->elements[0]), cmp); - - for (i = 0; i < els->count; i++) - els->elements[i] -= (uint64_t)filter->data_buf.start; -} - -static int ndb_filter_field_eq(struct ndb_filter *a_filt, - struct ndb_filter_elements *a_field, - struct ndb_filter *b_filt, - struct ndb_filter_elements *b_field) -{ - int i; - const char *a_str, *b_str; - unsigned char *a_id, *b_id; - uint64_t a_int, b_int; - struct ndb_filter_custom *a_custom, *b_custom; - - if (a_field->count != b_field->count) - return 0; - - if (a_field->field.type != b_field->field.type) { - ndb_debug("UNUSUAL: field types do not match in ndb_filter_field_eq\n"); - return 0; - } - - if (a_field->field.elem_type != b_field->field.elem_type) { - ndb_debug("UNUSUAL: field element types do not match in ndb_filter_field_eq\n"); - return 0; - } - - if (a_field->field.elem_type == NDB_ELEMENT_UNKNOWN) { - ndb_debug("UNUSUAL: field element types are unknown\n"); - return 0; - } - - for (i = 0; i < a_field->count; i++) { - switch (a_field->field.elem_type) { - case NDB_ELEMENT_CUSTOM: - a_custom = ndb_filter_get_custom_element(a_filt, a_field); - b_custom = ndb_filter_get_custom_element(b_filt, b_field); - if (memcmp(a_custom, b_custom, sizeof(*a_custom))) - return 0; - break; - case NDB_ELEMENT_UNKNOWN: - return 0; - case NDB_ELEMENT_STRING: - a_str = ndb_filter_get_string_element(a_filt, a_field, i); - b_str = ndb_filter_get_string_element(b_filt, b_field, i); - if (strcmp(a_str, b_str)) - return 0; - break; - case NDB_ELEMENT_ID: - a_id = ndb_filter_get_id_element(a_filt, a_field, i); - b_id = ndb_filter_get_id_element(b_filt, b_field, i); - if (memcmp(a_id, b_id, 32)) - return 0; - break; - case NDB_ELEMENT_INT: - a_int = ndb_filter_get_int_element(a_field, i); - b_int = ndb_filter_get_int_element(b_field, i); - if (a_int != b_int) - return 0; - break; - } - } - - return 1; -} - -void ndb_filter_end_field(struct ndb_filter *filter) -{ - int cur_offset; - struct ndb_filter_elements *cur; - - cur_offset = filter->current; - - if (!(cur = ndb_filter_current_element(filter))) - return; - - filter->elements[filter->num_elements++] = cur_offset; - - // sort elements for binary search - switch (cur->field.type) { - case NDB_FILTER_IDS: - case NDB_FILTER_AUTHORS: - sort_filter_elements(filter, cur, compare_ids); - break; - case NDB_FILTER_RELAYS: - sort_filter_elements(filter, cur, compare_strs); - break; - case NDB_FILTER_KINDS: - qsort(&cur->elements[0], cur->count, - sizeof(cur->elements[0]), compare_kinds); - break; - case NDB_FILTER_TAGS: - // TODO: generic tag search sorting - break; - case NDB_FILTER_SINCE: - case NDB_FILTER_CUSTOM: - case NDB_FILTER_UNTIL: - case NDB_FILTER_LIMIT: - case NDB_FILTER_SEARCH: - // don't need to sort these - break; - } - - filter->current = -1; - -} - -static void ndb_filter_group_init(struct ndb_filter_group *group) -{ - group->num_filters = 0; -} - -static int ndb_filter_group_add(struct ndb_filter_group *group, - struct ndb_filter *filter) -{ - if (group->num_filters + 1 > MAX_FILTERS) - return 0; - - return ndb_filter_clone(&group->filters[group->num_filters++], filter); -} - -static int ndb_filter_group_matches(struct ndb_filter_group *group, - struct ndb_note *note) -{ - int i; - struct ndb_filter *filter; - - if (group->num_filters == 0) - return 1; - - for (i = 0; i < group->num_filters; i++) { - filter = &group->filters[i]; - - if (ndb_filter_matches(filter, note)) - return 1; - } - - return 0; -} - -static void ndb_make_search_key(struct ndb_search_key *key, unsigned char *id, - uint64_t timestamp, const char *search) -{ - memcpy(key->id, id, 32); - key->timestamp = timestamp; - lowercase_strncpy(key->search, search, sizeof(key->search) - 1); - key->search[sizeof(key->search) - 1] = '\0'; -} - -static int ndb_write_profile_search_index(struct ndb_txn *txn, - struct ndb_search_key *index_key, - uint64_t profile_key) -{ - int rc; - MDB_val key, val; - - key.mv_data = index_key; - key.mv_size = sizeof(*index_key); - val.mv_data = &profile_key; - val.mv_size = sizeof(profile_key); - - if ((rc = mdb_put(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_PROFILE_SEARCH], - &key, &val, 0))) - { - ndb_debug("ndb_write_profile_search_index failed: %s\n", - mdb_strerror(rc)); - return 0; - } - - return 1; -} - - -// map usernames and display names to profile keys for user searching -static int ndb_write_profile_search_indices(struct ndb_txn *txn, - struct ndb_note *note, - uint64_t profile_key, - void *profile_root) -{ - struct ndb_search_key index; - NdbProfileRecord_table_t profile_record; - NdbProfile_table_t profile; - - profile_record = NdbProfileRecord_as_root(profile_root); - profile = NdbProfileRecord_profile_get(profile_record); - - const char *name = NdbProfile_name_get(profile); - const char *display_name = NdbProfile_display_name_get(profile); - - // words + pubkey + created - if (name) { - ndb_make_search_key(&index, note->pubkey, note->created_at, - name); - if (!ndb_write_profile_search_index(txn, &index, profile_key)) - return 0; - } - - if (display_name) { - // don't write the same name/display_name twice - if (name && !strcmp(display_name, name)) { - return 1; - } - ndb_make_search_key(&index, note->pubkey, note->created_at, - display_name); - if (!ndb_write_profile_search_index(txn, &index, profile_key)) - return 0; - } - - return 1; -} - -static inline void ndb_tsid_init(struct ndb_tsid *key, unsigned char *id, - uint64_t timestamp) -{ - memcpy(key->id, id, 32); - key->timestamp = timestamp; -} - -static inline void ndb_tsid_low(struct ndb_tsid *key, unsigned char *id) -{ - memcpy(key->id, id, 32); - key->timestamp = 0; -} - -static inline void ndb_u64_ts_init(struct ndb_u64_ts *key, uint64_t integer, - uint64_t timestamp) -{ - key->u64 = integer; - key->timestamp = timestamp; -} - -// useful for range-searching for the latest key with a clustered created_at timen -static inline void ndb_tsid_high(struct ndb_tsid *key, const unsigned char *id) -{ - memcpy(key->id, id, 32); - key->timestamp = UINT64_MAX; -} - -static int _ndb_begin_query(struct ndb *ndb, struct ndb_txn *txn, int flags) -{ - txn->lmdb = &ndb->lmdb; - MDB_txn **mdb_txn = (MDB_txn **)&txn->mdb_txn; - if (!txn->lmdb->env) - return 0; - return mdb_txn_begin(txn->lmdb->env, NULL, flags, mdb_txn) == 0; -} - -int ndb_begin_query(struct ndb *ndb, struct ndb_txn *txn) -{ - return _ndb_begin_query(ndb, txn, MDB_RDONLY); -} - -// this should only be used in migrations, etc -static int ndb_begin_rw_query(struct ndb *ndb, struct ndb_txn *txn) -{ - return _ndb_begin_query(ndb, txn, 0); -} - -static int ndb_db_is_index(enum ndb_dbs index) -{ - switch (index) { - case NDB_DB_NOTE: - case NDB_DB_META: - case NDB_DB_PROFILE: - case NDB_DB_NOTE_ID: - case NDB_DB_NDB_META: - case NDB_DB_PROFILE_SEARCH: - case NDB_DB_PROFILE_LAST_FETCH: - case NDB_DB_NOTE_RELAYS: - case NDB_DBS: - return 0; - case NDB_DB_PROFILE_PK: - case NDB_DB_NOTE_KIND: - case NDB_DB_NOTE_TEXT: - case NDB_DB_NOTE_BLOCKS: - case NDB_DB_NOTE_TAGS: - case NDB_DB_NOTE_PUBKEY: - case NDB_DB_NOTE_PUBKEY_KIND: - case NDB_DB_NOTE_RELAY_KIND: - return 1; - } - - return 0; -} - -static inline void ndb_id_u64_ts_init(struct ndb_id_u64_ts *key, - unsigned char *id, uint64_t iu64, - uint64_t timestamp) -{ - memcpy(key->id, id, 32); - key->u64 = iu64; - key->timestamp = timestamp; -} - -// formats the relay url buffer for the NDB_DB_NOTE_RELAYS value. It's a -// null terminated string padded to 8 bytes (we must keep the entire database -// aligned to 8 bytes at all times) -static int prepare_relay_buf(char *relay_buf, int bufsize, const char *relay, - int relay_len) -{ - struct cursor cur; - - // make sure the size of the buffer is aligned - assert((bufsize % 8) == 0); - - make_cursor((unsigned char *)relay_buf, (unsigned char *)relay_buf + bufsize, &cur); - - // push the relay string - if (!cursor_push(&cur, (unsigned char *)relay, relay_len)) - return 0; - - // relay urls are null terminated for convenience - if (!cursor_push_byte(&cur, 0)) - return 0; - - // align the buffer - if (!cursor_align(&cur, 8)) - return 0; - - return cur.p - cur.start; -} - -// Write to the note_id -> relay_url database. This records where notes -// have been seen -static int ndb_write_note_relay(struct ndb_txn *txn, uint64_t note_key, - const char *relay, uint8_t relay_len) -{ - char relay_buf[256]; - int rc, len; - MDB_val k, v; - - if (relay == NULL || relay_len == 0) { - ndb_debug("relay is NULL in ndb_write_note_relay? '%s' %d\n", relay, relay_len); - return 0; - } - - ndb_debug("writing note_relay '%s' for notekey:%" PRIu64 "\n", relay, note_key); - - if (!(len = prepare_relay_buf(relay_buf, sizeof(relay_buf), relay, relay_len))) { - fprintf(stderr, "relay url '%s' too large when writing note relay index\n", relay); - return 0; - } - - assert((len % 8) == 0); - - k.mv_data = ¬e_key; - k.mv_size = sizeof(note_key); - - v.mv_data = relay_buf; - v.mv_size = len; - - // NODUPDATA is specified so that we don't accidently add duplicate - // key/value pairs - if ((rc = mdb_put(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_RELAYS], - &k, &v, MDB_NODUPDATA))) - { - ndb_debug("ndb_write_note_relay failed: %s\n", mdb_strerror(rc)); - return 0; - } - - ndb_debug("wrote %d bytes to note relay: '%s'\n", len, relay_buf); - - return 1; -} - -struct ndb_relay_kind_key { - uint64_t note_key; - uint64_t kind; - uint64_t created_at; - uint8_t relay_len; - const char *relay; -}; - -static int ndb_relay_kind_key_init( - struct ndb_relay_kind_key *key, - uint64_t note_key, - uint64_t kind, - uint64_t created_at, - const char *relay) -{ - if (relay == NULL) - return 0; - - key->relay = relay; - key->relay_len = strlen(relay); - if (key->relay_len > 248) - return 0; - - key->note_key = note_key; - key->kind = kind; - key->created_at = created_at; - return 1; -} - - -// create a range key for a relay kind query -static int ndb_relay_kind_key_init_high( - struct ndb_relay_kind_key *key, - const char *relay, - uint64_t kind, - uint64_t until) -{ - return ndb_relay_kind_key_init(key, UINT64_MAX, kind, UINT64_MAX, relay); -} - -static void ndb_parse_relay_kind_key(struct ndb_relay_kind_key *key, unsigned char *buf) -{ - // WE ARE ASSUMING WE ARE PARSING FROM AN ALIGNED BUFFER HERE - assert((uint64_t)buf % 8 == 0); - // - note_id: 00 + 8 bytes - // - kind: 08 + 8 bytes - // - created_at: 16 + 8 bytes - // - relay_url_size: 24 + 1 byte - // - relay_url: 25 + n byte null-terminated string - // - pad to 8 byte alignment - key->note_key = *(uint64_t*) (buf + 0); - key->kind = *(uint64_t*) (buf + 8); - key->created_at = *(uint64_t*) (buf + 16); - key->relay_len = *(uint8_t*) (buf + 24); - key->relay = (const char*) (buf + 25); -} - -static void ndb_debug_relay_kind_key(struct ndb_relay_kind_key *key) -{ - ndb_debug("note_key:%" PRIu64 " kind:%" PRIu64 " created_at:%" PRIu64 " '%s'\n", - key->note_key, key->kind, key->created_at, key->relay); -} - -static int ndb_build_relay_kind_key(unsigned char *buf, int bufsize, struct ndb_relay_kind_key *key) -{ - struct cursor cur; - make_cursor(buf, buf + bufsize, &cur); - - if (!cursor_push(&cur, (unsigned char *)&key->note_key, 8)) return 0; - if (!cursor_push(&cur, (unsigned char *)&key->kind, 8)) return 0; - if (!cursor_push(&cur, (unsigned char *)&key->created_at, 8)) return 0; - if (!cursor_push_byte(&cur, key->relay_len)) return 0; - if (!cursor_push(&cur, (unsigned char *)key->relay, key->relay_len)) return 0; - if (!cursor_push_byte(&cur, 0)) return 0; - if (!cursor_align(&cur, 8)) return 0; - - assert(((cur.p-cur.start)%8) == 0); - - return cur.p - cur.start; -} - -static int ndb_write_note_relay_kind_index( - struct ndb_txn *txn, - struct ndb_relay_kind_key *key) -{ - // The relay kind key has a layout like so - // - // - note_key: 00 + 8 bytes - // - kind: 08 + 8 bytes - // - created_at: 16 + 8 bytes - // - relay_url_size: 24 + 1 byte - // - relay_url: 25 + n byte null-terminated string - // - pad to 8 byte alignment - - unsigned char buf[256]; - int rc, len; - MDB_val k, v; - - // come on bro - if (key->relay_len > 248 || key->relay == NULL || key->relay_len == 0) - return 0; - - ndb_debug("writing note_relay_kind_index '%s' for notekey:%" PRIu64 "\n", key->relay, key->note_key); - - if (!(len = ndb_build_relay_kind_key(buf, sizeof(buf), key))) - return 0; - - k.mv_data = buf; - k.mv_size = len; - - v.mv_data = NULL; - v.mv_size = 0; - - if ((rc = mdb_put(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_RELAY_KIND], &k, &v, 0))) { - fprintf(stderr, "write note relay kind index failed: %s\n", - mdb_strerror(rc)); - return 0; - } - - return 1; -} - -// writes the relay note kind index and the note_id -> relay db -static int ndb_write_note_relay_indexes(struct ndb_txn *txn, struct ndb_relay_kind_key *key) -{ - ndb_write_note_relay_kind_index(txn, key); - ndb_write_note_relay(txn, key->note_key, key->relay, key->relay_len); - return 1; -} - -static int ndb_write_note_pubkey_index(struct ndb_txn *txn, struct ndb_note *note, - uint64_t note_key) -{ - int rc; - struct ndb_tsid key; - MDB_val k, v; - - ndb_tsid_init(&key, ndb_note_pubkey(note), ndb_note_created_at(note)); - - k.mv_data = &key; - k.mv_size = sizeof(key); - - v.mv_data = ¬e_key; - v.mv_size = sizeof(note_key); - - if ((rc = mdb_put(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_PUBKEY], &k, &v, 0))) { - fprintf(stderr, "write note pubkey index failed: %s\n", - mdb_strerror(rc)); - return 0; - } - - return 1; -} - -static int ndb_write_note_pubkey_kind_index(struct ndb_txn *txn, - struct ndb_note *note, - uint64_t note_key) -{ - int rc; - struct ndb_id_u64_ts key; - MDB_val k, v; - - ndb_id_u64_ts_init(&key, ndb_note_pubkey(note), ndb_note_kind(note), - ndb_note_created_at(note)); - - k.mv_data = &key; - k.mv_size = sizeof(key); - - v.mv_data = ¬e_key; - v.mv_size = sizeof(note_key); - - if ((rc = mdb_put(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_PUBKEY_KIND], &k, &v, 0))) { - fprintf(stderr, "write note pubkey_kind index failed: %s\n", - mdb_strerror(rc)); - return 0; - } - - return 1; -} - - -static int ndb_rebuild_note_indices(struct ndb_txn *txn, enum ndb_dbs *indices, int num_indices) -{ - MDB_val k, v; - MDB_cursor *cur; - int i, drop_dbi, count, rc; - uint64_t note_key; - struct ndb_note *note; - enum ndb_dbs index; - - // 0 means empty, not delete the dbi - drop_dbi = 0; - - // ensure they are all index dbs - for (i = 0; i < num_indices; i++) { - if (!ndb_db_is_index(indices[i])) { - fprintf(stderr, "ndb_rebuild_note_index: %s is not an index db\n", ndb_db_name(indices[i])); - return -1; - } - } - - // empty the index dbs before we rebuild - for (i = 0; i < num_indices; i++) { - index = indices[i]; - if (mdb_drop(txn->mdb_txn, index, drop_dbi)) { - fprintf(stderr, "ndb_rebuild_pubkey_index: mdb_drop failed for %s\n", ndb_db_name(index)); - return -1; - } - } - - if ((rc = mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE], &cur))) { - fprintf(stderr, "ndb_migrate_user_search_indices: mdb_cursor_open failed, error %d\n", rc); - return -1; - } - - count = 0; - - // loop through all notes and write search indices - while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { - note = v.mv_data; - note_key = *((uint64_t*)k.mv_data); - - for (i = 0; i < num_indices; i++) { - index = indices[i]; - switch (index) { - case NDB_DB_NOTE: - case NDB_DB_META: - case NDB_DB_PROFILE: - case NDB_DB_NOTE_ID: - case NDB_DB_NDB_META: - case NDB_DB_PROFILE_SEARCH: - case NDB_DB_PROFILE_LAST_FETCH: - case NDB_DB_NOTE_RELAYS: - case NDB_DBS: - // this should never happen since we check at - // the start - count = -1; - goto cleanup; - case NDB_DB_PROFILE_PK: - case NDB_DB_NOTE_KIND: - case NDB_DB_NOTE_TEXT: - case NDB_DB_NOTE_BLOCKS: - case NDB_DB_NOTE_TAGS: - fprintf(stderr, "%s index rebuild not supported yet. sorry.\n", ndb_db_name(index)); - count = -1; - goto cleanup; - case NDB_DB_NOTE_PUBKEY: - if (!ndb_write_note_pubkey_index(txn, note, note_key)) { - count = -1; - goto cleanup; - } - break; - case NDB_DB_NOTE_RELAY_KIND: - fprintf(stderr, "it doesn't make sense to rebuild note relay kind index\n"); - return 0; - case NDB_DB_NOTE_PUBKEY_KIND: - if (!ndb_write_note_pubkey_kind_index(txn, note, note_key)) { - count = -1; - goto cleanup; - } - break; - } - } - - count++; - } - -cleanup: - mdb_cursor_close(cur); - - return count; -} - - -// Migrations -// - -// This was before we had note_profile_pubkey{,_kind} indices. Let's create them. -static int ndb_migrate_profile_indices(struct ndb_txn *txn) -{ - int count; - - enum ndb_dbs indices[] = {NDB_DB_NOTE_PUBKEY, NDB_DB_NOTE_PUBKEY_KIND}; - if ((count = ndb_rebuild_note_indices(txn, indices, 2)) != -1) { - fprintf(stderr, "migrated %d notes to have pubkey and pubkey_kind indices\n", count); - return 1; - } else { - fprintf(stderr, "error migrating notes to have pubkey and pubkey_kind indices, aborting.\n"); - return 0; - } -} - -static int ndb_migrate_user_search_indices(struct ndb_txn *txn) -{ - int rc; - MDB_cursor *cur; - MDB_val k, v; - void *profile_root; - NdbProfileRecord_table_t record; - struct ndb_note *note; - uint64_t note_key, profile_key; - size_t len; - int count; - - if ((rc = mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_PROFILE], &cur))) { - fprintf(stderr, "ndb_migrate_user_search_indices: mdb_cursor_open failed, error %d\n", rc); - return 0; - } - - count = 0; - - // loop through all profiles and write search indices - while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { - profile_root = v.mv_data; - profile_key = *((uint64_t*)k.mv_data); - record = NdbProfileRecord_as_root(profile_root); - note_key = NdbProfileRecord_note_key(record); - note = ndb_get_note_by_key(txn, note_key, &len); - - if (note == NULL) { - continue; - } - - if (!ndb_write_profile_search_indices(txn, note, profile_key, - profile_root)) { - fprintf(stderr, "ndb_migrate_user_search_indices: ndb_write_profile_search_indices failed\n"); - continue; - } - - count++; - } - - fprintf(stderr, "migrated %d profiles to include search indices\n", count); - - mdb_cursor_close(cur); - - return 1; -} - -static int ndb_migrate_lower_user_search_indices(struct ndb_txn *txn) -{ - // just drop the search db so we can rebuild it - if (mdb_drop(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_PROFILE_SEARCH], 0)) { - fprintf(stderr, "ndb_migrate_lower_user_search_indices: mdb_drop failed\n"); - return 0; - } - - return ndb_migrate_user_search_indices(txn); -} - -int ndb_process_profile_note(struct ndb_note *note, struct ndb_profile_record_builder *profile); - - -int ndb_db_version(struct ndb_txn *txn) -{ - uint64_t version, version_key; - MDB_val k, v; - - version_key = NDB_META_KEY_VERSION; - k.mv_data = &version_key; - k.mv_size = sizeof(version_key); - - if (mdb_get(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NDB_META], &k, &v)) { - version = -1; - } else { - if (v.mv_size != 8) { - fprintf(stderr, "run_migrations: invalid version size?"); - return 0; - } - version = *((uint64_t*)v.mv_data); - } - - return version; -} - -// custom pubkey+kind+timestamp comparison function. This is used by lmdb to -// perform b+ tree searches over the pubkey+kind+timestamp index -static int ndb_id_u64_ts_compare(const MDB_val *a, const MDB_val *b) -{ - struct ndb_id_u64_ts *tsa, *tsb; - MDB_val a2 = *a, b2 = *b; - - a2.mv_size = sizeof(tsa->id); - b2.mv_size = sizeof(tsb->id); - - int cmp = mdb_cmp_memn(&a2, &b2); - if (cmp) return cmp; - - tsa = a->mv_data; - tsb = b->mv_data; - - if (tsa->u64 < tsb->u64) - return -1; - else if (tsa->u64 > tsb->u64) - return 1; - - if (tsa->timestamp < tsb->timestamp) - return -1; - else if (tsa->timestamp > tsb->timestamp) - return 1; - - return 0; -} - -// custom kind+timestamp comparison function. This is used by lmdb to perform -// b+ tree searches over the kind+timestamp index -static int ndb_u64_ts_compare(const MDB_val *a, const MDB_val *b) -{ - struct ndb_u64_ts *tsa, *tsb; - tsa = a->mv_data; - tsb = b->mv_data; - - if (tsa->u64 < tsb->u64) - return -1; - else if (tsa->u64 > tsb->u64) - return 1; - - if (tsa->timestamp < tsb->timestamp) - return -1; - else if (tsa->timestamp > tsb->timestamp) - return 1; - - return 0; -} - -static int ndb_tsid_compare(const MDB_val *a, const MDB_val *b) -{ - struct ndb_tsid *tsa, *tsb; - MDB_val a2 = *a, b2 = *b; - - a2.mv_size = sizeof(tsa->id); - b2.mv_size = sizeof(tsb->id); - - int cmp = mdb_cmp_memn(&a2, &b2); - if (cmp) return cmp; - - tsa = a->mv_data; - tsb = b->mv_data; - - if (tsa->timestamp < tsb->timestamp) - return -1; - else if (tsa->timestamp > tsb->timestamp) - return 1; - return 0; -} - -enum ndb_ingester_msgtype { - NDB_INGEST_EVENT, // write json to the ingester queue for processing - NDB_INGEST_QUIT, // kill ingester thread immediately -}; - -struct ndb_ingester_event { - const char *relay; - char *json; - unsigned client : 1; // ["EVENT", {...}] messages - unsigned len : 31; -}; - -struct ndb_writer_note_relay { - const char *relay; - uint64_t note_key; - uint64_t kind; - uint64_t created_at; -}; - -struct ndb_writer_note { - struct ndb_note *note; - size_t note_len; - const char *relay; -}; - -static void ndb_writer_note_init(struct ndb_writer_note *writer_note, struct ndb_note *note, size_t note_len, const char *relay) -{ - writer_note->note = note; - writer_note->note_len = note_len; - writer_note->relay = relay; -} - -struct ndb_writer_profile { - struct ndb_writer_note note; - struct ndb_profile_record_builder record; -}; - -struct ndb_ingester_msg { - enum ndb_ingester_msgtype type; - union { - struct ndb_ingester_event event; - }; -}; - -struct ndb_writer_ndb_meta { - // these are 64 bit because I'm paranoid of db-wide alignment issues - uint64_t version; -}; - -// Used in the writer thread when writing ndb_profile_fetch_record's -// kv = pubkey: recor -struct ndb_writer_last_fetch { - unsigned char pubkey[32]; - uint64_t fetched_at; -}; - -// write note blocks -struct ndb_writer_blocks { - struct ndb_blocks *blocks; - uint64_t note_key; -}; - -// The different types of messages that the writer thread can write to the -// database -struct ndb_writer_msg { - enum ndb_writer_msgtype type; - union { - struct ndb_writer_note_relay note_relay; - struct ndb_writer_note note; - struct ndb_writer_profile profile; - struct ndb_writer_ndb_meta ndb_meta; - struct ndb_writer_last_fetch last_fetch; - struct ndb_writer_blocks blocks; - }; -}; - -static inline int ndb_writer_queue_msg(struct ndb_writer *writer, - struct ndb_writer_msg *msg) -{ - return prot_queue_push(&writer->inbox, msg); -} - -static uint64_t ndb_write_note_and_profile(struct ndb_txn *txn, struct ndb_writer_profile *profile, unsigned char *scratch, size_t scratch_size, uint32_t ndb_flags); -static int ndb_migrate_utf8_profile_names(struct ndb_txn *txn) -{ - int rc; - MDB_cursor *cur; - MDB_val k, v; - void *profile_root; - NdbProfileRecord_table_t record; - struct ndb_note *note, *copied_note; - uint64_t note_key; - size_t len; - int count, failed, ret; - struct ndb_writer_profile profile; - - if ((rc = mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_PROFILE], &cur))) { - fprintf(stderr, "ndb_migrate_utf8_profile_names: mdb_cursor_open failed, error %d\n", rc); - return 0; - } - - size_t scratch_size = 8 * 1024 * 1024; - unsigned char *scratch = malloc(scratch_size); - - ret = 1; - count = 0; - failed = 0; - - // loop through all profiles and write search indices - while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { - profile_root = v.mv_data; - record = NdbProfileRecord_as_root(profile_root); - note_key = NdbProfileRecord_note_key(record); - note = ndb_get_note_by_key(txn, note_key, &len); - - if (note == NULL) { - failed++; - continue; - } - - struct ndb_profile_record_builder *b = &profile.record; - - // reprocess profile - if (!ndb_process_profile_note(note, b)) { - failed++; - continue; - } - - // the writer needs to own this note, and its expected to free it - copied_note = malloc(len); - memcpy(copied_note, note, len); - - ndb_writer_note_init(&profile.note, copied_note, len, NULL); - - // we don't pass in flags when migrating... a bit sketchy but - // whatever. noone is using this to customize nostrdb atm - if (ndb_write_note_and_profile(txn, &profile, scratch, scratch_size, 0)) { - count++; - } - } - - fprintf(stderr, "migrated %d profiles to fix utf8 profile names\n", count); - - if (failed != 0) { - fprintf(stderr, "failed to migrate %d profiles to fix utf8 profile names\n", failed); - } - - free(scratch); - mdb_cursor_close(cur); - - return ret; -} - -static struct ndb_migration MIGRATIONS[] = { - { .fn = ndb_migrate_user_search_indices }, - { .fn = ndb_migrate_lower_user_search_indices }, - { .fn = ndb_migrate_utf8_profile_names }, - { .fn = ndb_migrate_profile_indices }, -}; - - -int ndb_end_query(struct ndb_txn *txn) -{ - // this works on read or write queries. - return mdb_txn_commit(txn->mdb_txn) == 0; -} - -int ndb_note_verify(void *ctx, unsigned char *scratch, size_t scratch_size, - struct ndb_note *note) -{ - unsigned char id[32]; - secp256k1_xonly_pubkey xonly_pubkey; - int ok; - - // first, we ensure the id is valid by calculating the id independently - // from what is given to us - if (!ndb_calculate_id(note, scratch, scratch_size, id)) { - ndb_debug("ndb_note_verify: scratch buffer size too small"); - return 0; - } - - if (memcmp(id, note->id, 32)) { - ndb_debug("ndb_note_verify: note id does not match!"); - return 0; - } - - // id is ok, let's check signature - - ok = secp256k1_xonly_pubkey_parse((secp256k1_context*)ctx, - &xonly_pubkey, - ndb_note_pubkey(note)) != 0; - if (!ok) return 0; - - ok = secp256k1_schnorrsig_verify((secp256k1_context*)ctx, - ndb_note_sig(note), id, 32, - &xonly_pubkey) > 0; - if (!ok) return 0; - - return 1; -} - -static void ndb_writer_last_profile_fetch(struct ndb_txn *txn, - const unsigned char *pubkey, - uint64_t fetched_at) -{ - int rc; - MDB_val key, val; - - key.mv_data = (unsigned char*)pubkey; - key.mv_size = 32; - val.mv_data = &fetched_at; - val.mv_size = sizeof(fetched_at); - - if ((rc = mdb_put(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_PROFILE_LAST_FETCH], - &key, &val, 0))) - { - ndb_debug("write version to ndb_meta failed: %s\n", - mdb_strerror(rc)); - return; - } - - //fprintf(stderr, "writing version %" PRIu64 "\n", version); -} - - -// We just received a profile that we haven't processed yet, but it could -// be an older one! Make sure we only write last fetched profile if it's a new -// one -// -// To do this, we first check the latest profile in the database. If the -// created_date for this profile note is newer, then we write a -// last_profile_fetch record, otherwise we do not. -// -// WARNING: This function is only valid when called from the writer thread -static int ndb_maybe_write_last_profile_fetch(struct ndb_txn *txn, - struct ndb_note *note) -{ - size_t len; - uint64_t profile_key, note_key; - void *root; - struct ndb_note *last_profile; - NdbProfileRecord_table_t record; - - if ((root = ndb_get_profile_by_pubkey(txn, note->pubkey, &len, &profile_key))) { - record = NdbProfileRecord_as_root(root); - note_key = NdbProfileRecord_note_key(record); - last_profile = ndb_get_note_by_key(txn, note_key, &len); - if (last_profile == NULL) { - return 0; - } - - // found profile, let's see if it's newer than ours - if (note->created_at > last_profile->created_at) { - // this is a new profile note, record last fetched time - ndb_writer_last_profile_fetch(txn, note->pubkey, time(NULL)); - } - } else { - // couldn't fetch profile. record last fetched time - ndb_writer_last_profile_fetch(txn, note->pubkey, time(NULL)); - } - - return 1; -} - -int ndb_write_last_profile_fetch(struct ndb *ndb, const unsigned char *pubkey, - uint64_t fetched_at) -{ - struct ndb_writer_msg msg; - msg.type = NDB_WRITER_PROFILE_LAST_FETCH; - memcpy(&msg.last_fetch.pubkey[0], pubkey, 32); - msg.last_fetch.fetched_at = fetched_at; - - return ndb_writer_queue_msg(&ndb->writer, &msg); -} - - -// When doing cursor scans from greatest to lowest, this function positions the -// cursor at the first element before descending. MDB_SET_RANGE puts us right -// after the first element, so we have to go back one. -static int ndb_cursor_start(MDB_cursor *cur, MDB_val *k, MDB_val *v) -{ - int rc; - // Position cursor at the next key greater than or equal to the - // specified key - - if ((rc = mdb_cursor_get(cur, k, v, MDB_SET_RANGE))) { - ndb_debug("MDB_SET_RANGE failed: '%s'\n", mdb_strerror(rc)); - // Failed :(. It could be the last element? - if ((rc = mdb_cursor_get(cur, k, v, MDB_LAST))) { - ndb_debug("MDB_LAST failed: '%s'\n", mdb_strerror(rc)); - return 0; - } - } else { - // if set range worked and our key exists, it should be - // the one right before this one - if ((rc = mdb_cursor_get(cur, k, v, MDB_PREV))) { - ndb_debug("moving back failed: '%s'\n", mdb_strerror(rc)); - return 0; - } - } - - return 1; -} - - -// get some value based on a clustered id key -int ndb_get_tsid(struct ndb_txn *txn, enum ndb_dbs db, const unsigned char *id, - MDB_val *val) -{ - MDB_val k, v; - MDB_cursor *cur; - int success = 0, rc; - struct ndb_tsid tsid; - - // position at the most recent - ndb_tsid_high(&tsid, id); - - k.mv_data = &tsid; - k.mv_size = sizeof(tsid); - - if ((rc = mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[db], &cur))) { - ndb_debug("ndb_get_tsid: failed to open cursor: '%s'\n", mdb_strerror(rc)); - return 0; - } - - if (!ndb_cursor_start(cur, &k, &v)) - goto cleanup; - - if (memcmp(k.mv_data, id, 32) == 0) { - *val = v; - success = 1; - } - -cleanup: - mdb_cursor_close(cur); - return success; -} - -static void *ndb_lookup_by_key(struct ndb_txn *txn, uint64_t key, - enum ndb_dbs store, size_t *len) -{ - MDB_val k, v; - - k.mv_data = &key; - k.mv_size = sizeof(key); - - if (mdb_get(txn->mdb_txn, txn->lmdb->dbs[store], &k, &v)) { - ndb_debug("ndb_lookup_by_key: mdb_get note failed\n"); - return NULL; - } - - if (len) - *len = v.mv_size; - - return v.mv_data; -} - -static void *ndb_lookup_tsid(struct ndb_txn *txn, enum ndb_dbs ind, - enum ndb_dbs store, const unsigned char *pk, - size_t *len, uint64_t *primkey) -{ - MDB_val k, v; - void *res = NULL; - if (len) - *len = 0; - - if (!ndb_get_tsid(txn, ind, pk, &k)) { - //ndb_debug("ndb_get_profile_by_pubkey: ndb_get_tsid failed\n"); - return 0; - } - - if (primkey) - *primkey = *(uint64_t*)k.mv_data; - - if (mdb_get(txn->mdb_txn, txn->lmdb->dbs[store], &k, &v)) { - ndb_debug("ndb_get_profile_by_pubkey: mdb_get note failed\n"); - return 0; - } - - res = v.mv_data; - assert(((uint64_t)res % 4) == 0); - if (len) - *len = v.mv_size; - return res; -} - -void *ndb_get_profile_by_pubkey(struct ndb_txn *txn, const unsigned char *pk, size_t *len, uint64_t *key) -{ - return ndb_lookup_tsid(txn, NDB_DB_PROFILE_PK, NDB_DB_PROFILE, pk, len, key); -} - -struct ndb_note *ndb_get_note_by_id(struct ndb_txn *txn, const unsigned char *id, size_t *len, uint64_t *key) -{ - return ndb_lookup_tsid(txn, NDB_DB_NOTE_ID, NDB_DB_NOTE, id, len, key); -} - -static inline uint64_t ndb_get_indexkey_by_id(struct ndb_txn *txn, - enum ndb_dbs db, - const unsigned char *id) -{ - MDB_val k; - - if (!ndb_get_tsid(txn, db, id, &k)) - return 0; - - return *(uint32_t*)k.mv_data; -} - -uint64_t ndb_get_notekey_by_id(struct ndb_txn *txn, const unsigned char *id) -{ - return ndb_get_indexkey_by_id(txn, NDB_DB_NOTE_ID, id); -} - -uint64_t ndb_get_profilekey_by_pubkey(struct ndb_txn *txn, const unsigned char *id) -{ - return ndb_get_indexkey_by_id(txn, NDB_DB_PROFILE_PK, id); -} - -struct ndb_note *ndb_get_note_by_key(struct ndb_txn *txn, uint64_t key, size_t *len) -{ - return ndb_lookup_by_key(txn, key, NDB_DB_NOTE, len); -} - -void *ndb_get_profile_by_key(struct ndb_txn *txn, uint64_t key, size_t *len) -{ - return ndb_lookup_by_key(txn, key, NDB_DB_PROFILE, len); -} - -uint64_t -ndb_read_last_profile_fetch(struct ndb_txn *txn, const unsigned char *pubkey) -{ - MDB_val k, v; - - k.mv_data = (unsigned char*)pubkey; - k.mv_size = 32; - - if (mdb_get(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_PROFILE_LAST_FETCH], &k, &v)) { - //ndb_debug("ndb_read_last_profile_fetch: mdb_get note failed\n"); - return 0; - } - - return *((uint64_t*)v.mv_data); -} - - -static int ndb_has_note(struct ndb_txn *txn, const unsigned char *id) -{ - MDB_val val; - - if (!ndb_get_tsid(txn, NDB_DB_NOTE_ID, id, &val)) - return 0; - - return 1; -} - -static void ndb_txn_from_mdb(struct ndb_txn *txn, struct ndb_lmdb *lmdb, - MDB_txn *mdb_txn) -{ - txn->lmdb = lmdb; - txn->mdb_txn = mdb_txn; -} - -static enum ndb_idres ndb_ingester_json_controller(void *data, const char *hexid) -{ - unsigned char id[32]; - struct ndb_ingest_controller *c = data; - struct ndb_txn txn; - - hex_decode(hexid, 64, id, sizeof(id)); - - // let's see if we already have it - ndb_txn_from_mdb(&txn, c->lmdb, c->read_txn); - c->note = ndb_get_note_by_id(&txn, id, NULL, &c->note_key); - - if (c->note == NULL) - return NDB_IDRES_CONT; - - return NDB_IDRES_STOP; -} - -static int ndbprofile_parse_json(flatcc_builder_t *B, - const char *buf, size_t bufsiz, int flags, NdbProfile_ref_t *profile) -{ - flatcc_json_parser_t parser, *ctx = &parser; - flatcc_json_parser_init(ctx, B, buf, buf + bufsiz, flags); - - if (flatcc_builder_start_buffer(B, 0, 0, 0)) - return 0; - - NdbProfile_parse_json_table(ctx, buf, buf + bufsiz, profile); - if (ctx->error) - return 0; - - if (!flatcc_builder_end_buffer(B, *profile)) - return 0; - - ctx->end_loc = buf; - - - return 1; -} - -void ndb_profile_record_builder_init(struct ndb_profile_record_builder *b) -{ - b->builder = malloc(sizeof(*b->builder)); - b->flatbuf = NULL; -} - -void ndb_profile_record_builder_free(struct ndb_profile_record_builder *b) -{ - if (b->flatbuf) - flatcc_builder_aligned_free(b->flatbuf); - if (b->builder) { - flatcc_builder_clear(b->builder); - free(b->builder); - } - - b->builder = NULL; - b->flatbuf = NULL; - -} - -int ndb_process_profile_note(struct ndb_note *note, - struct ndb_profile_record_builder *profile) -{ - int res; - - NdbProfile_ref_t profile_table; - flatcc_builder_t *builder; - - ndb_profile_record_builder_init(profile); - builder = profile->builder; - flatcc_builder_init(builder); - - NdbProfileRecord_start_as_root(builder); - - //printf("parsing profile '%.*s'\n", note->content_length, ndb_note_content(note)); - if (!(res = ndbprofile_parse_json(builder, ndb_note_content(note), - note->content_length, - flatcc_json_parser_f_skip_unknown, - &profile_table))) - { - ndb_debug("profile_parse_json failed %d '%.*s'\n", res, - note->content_length, ndb_note_content(note)); - ndb_profile_record_builder_free(profile); - return 0; - } - - uint64_t received_at = time(NULL); - const char *lnurl = "fixme"; - - NdbProfileRecord_profile_add(builder, profile_table); - NdbProfileRecord_received_at_add(builder, received_at); - - flatcc_builder_ref_t lnurl_off; - lnurl_off = flatcc_builder_create_string_str(builder, lnurl); - - NdbProfileRecord_lnurl_add(builder, lnurl_off); - - //*profile = flatcc_builder_finalize_aligned_buffer(builder, profile_len); - return 1; -} - -static int ndb_ingester_queue_event(struct ndb_ingester *ingester, - char *json, unsigned len, - unsigned client, const char *relay) -{ - struct ndb_ingester_msg msg; - msg.type = NDB_INGEST_EVENT; - - msg.event.json = json; - msg.event.len = len; - msg.event.client = client; - msg.event.relay = relay; - - return threadpool_dispatch(&ingester->tp, &msg); -} - -void ndb_ingest_meta_init(struct ndb_ingest_meta *meta, unsigned client, const char *relay) -{ - meta->client = client; - meta->relay = relay; -} - -static int ndb_ingest_event(struct ndb_ingester *ingester, const char *json, - int len, struct ndb_ingest_meta *meta) -{ - const char *relay = meta->relay; - - // Without this, we get bus errors in the json parser inside when - // trying to ingest empty kind 6 reposts... we should probably do fuzz - // testing on inputs to the json parser - if (len == 0) - return 0; - - // Since we need to return as soon as possible, and we're not - // making any assumptions about the lifetime of the string, we - // definitely need to copy the json here. In the future once we - // have our thread that manages a websocket connection, we can - // avoid the copy and just use the buffer we get from that - // thread. - char *json_copy = strdupn(json, len); - if (json_copy == NULL) - return 0; - - if (relay != NULL) { - relay = strdup(meta->relay); - if (relay == NULL) - return 0; - } - - return ndb_ingester_queue_event(ingester, json_copy, len, meta->client, relay); -} - - -static int ndb_ingester_process_note(secp256k1_context *ctx, - struct ndb_note *note, - size_t note_size, - struct ndb_writer_msg *out, - struct ndb_ingester *ingester, - unsigned char *scratch, - const char *relay) -{ - enum ndb_ingest_filter_action action; - struct ndb_ingest_meta meta; - - action = NDB_INGEST_ACCEPT; - - if (ingester->filter) - action = ingester->filter(ingester->filter_context, note); - - if (action == NDB_INGEST_REJECT) - return 0; - - // some special situations we might want to skip sig validation, - // like during large imports - if (action == NDB_INGEST_SKIP_VALIDATION || (ingester->flags & NDB_FLAG_SKIP_NOTE_VERIFY)) { - // if we're skipping validation we don't need to verify - } else { - // verify! If it's an invalid note we don't need to - // bother writing it to the database - if (!ndb_note_verify(ctx, scratch, ingester->scratch_size, note)) { - ndb_debug("note verification failed\n"); - return 0; - } - } - - // we didn't find anything. let's send it - // to the writer thread - note = realloc(note, note_size); - assert(((uint64_t)note % 4) == 0); - - if (note->kind == 0) { - struct ndb_profile_record_builder *b = - &out->profile.record; - - ndb_process_profile_note(note, b); - - out->type = NDB_WRITER_PROFILE; - ndb_writer_note_init(&out->profile.note, note, note_size, relay); - return 1; - } else if (note->kind == 6) { - // process the repost if we have a repost event - ndb_debug("processing kind 6 repost\n"); - // dup the relay string - ndb_ingest_meta_init(&meta, 0, relay); - ndb_ingest_event(ingester, ndb_note_content(note), - ndb_note_content_length(note), - &meta); - } - - out->type = NDB_WRITER_NOTE; - ndb_writer_note_init(&out->note, note, note_size, relay); - - return 1; -} - -int ndb_note_seen_on_relay(struct ndb_txn *txn, uint64_t note_key, const char *relay) -{ - MDB_val k, v; - MDB_cursor *cur; - int rc, len; - char relay_buf[256]; - - if (relay == NULL) - return 0; - - len = strlen(relay); - - if (!(len = prepare_relay_buf(relay_buf, sizeof(relay_buf), relay, len))) - return 0; - - assert((len % 8) == 0); - - k.mv_data = ¬e_key; - k.mv_size = sizeof(note_key); - - v.mv_data = relay_buf; - v.mv_size = len; - - if ((rc = mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_RELAYS], &cur)) != MDB_SUCCESS) - return 0; - - rc = mdb_cursor_get(cur, &k, &v, MDB_GET_BOTH); - ndb_debug("seen_on_relay result: %s\n", mdb_strerror(rc)); - mdb_cursor_close(cur); - - return rc == MDB_SUCCESS; -} - -// process the relay for the note. this is called when we already have the -// note in the database but still need to check if the relay needs to be -// written to the relay indexes for corresponding note -static int ndb_process_note_relay(struct ndb_txn *txn, struct ndb_writer_msg *out, - uint64_t note_key, struct ndb_note *note, - const char *relay) -{ - // query to see if we already have the relay on this note - if (ndb_note_seen_on_relay(txn, note_key, relay)) { - return 0; - } - - // if not, tell the writer thread to emit a NOTE_RELAY event - out->type = NDB_WRITER_NOTE_RELAY; - - ndb_debug("pushing NDB_WRITER_NOTE_RELAY with note_key %" PRIu64 "\n", note_key); - out->note_relay.relay = relay; - out->note_relay.note_key = note_key; - out->note_relay.kind = ndb_note_kind(note); - out->note_relay.created_at = ndb_note_created_at(note); - - return 1; -} - -static int ndb_ingester_process_event(secp256k1_context *ctx, - struct ndb_ingester *ingester, - struct ndb_ingester_event *ev, - struct ndb_writer_msg *out, - unsigned char *scratch, - MDB_txn *read_txn) -{ - struct ndb_tce tce; - struct ndb_fce fce; - struct ndb_note *note; - struct ndb_ingest_controller controller; - struct ndb_id_cb cb; - void *buf; - int ok; - size_t bufsize, note_size; - - ok = 0; - - // we will use this to check if we already have it in the DB during - // ID parsing - controller.read_txn = read_txn; - controller.lmdb = ingester->lmdb; - cb.fn = ndb_ingester_json_controller; - cb.data = &controller; - - // since we're going to be passing this allocated note to a different - // thread, we can't use thread-local buffers. just allocate a block - bufsize = max(ev->len * 8.0, 4096); - buf = malloc(bufsize); - if (!buf) { - ndb_debug("couldn't malloc buf\n"); - return 0; - } - - note_size = - ev->client ? - ndb_client_event_from_json(ev->json, ev->len, &fce, buf, bufsize, &cb) : - ndb_ws_event_from_json(ev->json, ev->len, &tce, buf, bufsize, &cb); - - // This is a result from our special json parser. It parsed the id - // and found that we already have it in the database - if ((int)note_size == -42) { - assert(controller.note != NULL); - assert(controller.note_key != 0); - struct ndb_txn txn; - ndb_txn_from_mdb(&txn, ingester->lmdb, read_txn); - - // we still need to process the relays on the note even - // if we already have it - if (ev->relay && ndb_process_note_relay(&txn, out, - controller.note_key, - controller.note, - ev->relay)) - { - // free note buf here since we don't pass the note to the writer thread - free(buf); - goto success; - } else { - // we already have the note and there are no new - // relays to process. nothing to write. - goto cleanup; - } - } else if (note_size == 0) { - ndb_debug("failed to parse '%.*s'\n", ev->len, ev->json); - goto cleanup; - } - - //ndb_debug("parsed evtype:%d '%.*s'\n", tce.evtype, ev->len, ev->json); - - if (ev->client) { - switch (fce.evtype) { - case NDB_FCE_EVENT: - note = fce.event.note; - if (note != buf) { - ndb_debug("note buffer not equal to malloc'd buffer\n"); - goto cleanup; - } - - if (!ndb_ingester_process_note(ctx, note, note_size, - out, ingester, scratch, - ev->relay)) { - ndb_debug("failed to process note\n"); - goto cleanup; - } else { - goto success; - } - } - } else { - switch (tce.evtype) { - case NDB_TCE_AUTH: goto cleanup; - case NDB_TCE_NOTICE: goto cleanup; - case NDB_TCE_EOSE: goto cleanup; - case NDB_TCE_OK: goto cleanup; - case NDB_TCE_EVENT: - note = tce.event.note; - if (note != buf) { - ndb_debug("note buffer not equal to malloc'd buffer\n"); - goto cleanup; - } - - if (!ndb_ingester_process_note(ctx, note, note_size, - out, ingester, scratch, - ev->relay)) { - ndb_debug("failed to process note\n"); - goto cleanup; - } else { - goto success; - } - } - } - - -success: - free(ev->json); - // we don't free relay or buf since those are passed to the writer thread - return 1; - -cleanup: - free(ev->json); - if (ev->relay) - free((void*)ev->relay); - free(buf); - - return ok; -} - -static uint64_t ndb_get_last_key(MDB_txn *txn, MDB_dbi db) -{ - MDB_cursor *mc; - MDB_val key, val; - - if (mdb_cursor_open(txn, db, &mc)) - return 0; - - if (mdb_cursor_get(mc, &key, &val, MDB_LAST)) { - mdb_cursor_close(mc); - return 0; - } - - mdb_cursor_close(mc); - - assert(key.mv_size == 8); - return *((uint64_t*)key.mv_data); -} - -// -// make a search key meant for user queries without any other note info -static void ndb_make_search_key_low(struct ndb_search_key *key, const char *search) -{ - memset(key->id, 0, sizeof(key->id)); - key->timestamp = 0; - lowercase_strncpy(key->search, search, sizeof(key->search) - 1); - key->search[sizeof(key->search) - 1] = '\0'; -} - -int ndb_search_profile(struct ndb_txn *txn, struct ndb_search *search, const char *query) -{ - int rc; - struct ndb_search_key s; - MDB_val k, v; - search->cursor = NULL; - - MDB_cursor **cursor = (MDB_cursor **)&search->cursor; - - ndb_make_search_key_low(&s, query); - - k.mv_data = &s; - k.mv_size = sizeof(s); - - if ((rc = mdb_cursor_open(txn->mdb_txn, - txn->lmdb->dbs[NDB_DB_PROFILE_SEARCH], - cursor))) { - printf("search_profile: cursor opened failed: %s\n", - mdb_strerror(rc)); - return 0; - } - - // Position cursor at the next key greater than or equal to the specified key - if (mdb_cursor_get(search->cursor, &k, &v, MDB_SET_RANGE)) { - printf("search_profile: cursor get failed\n"); - goto cleanup; - } else { - search->key = k.mv_data; - assert(v.mv_size == 8); - search->profile_key = *((uint64_t*)v.mv_data); - return 1; - } - -cleanup: - mdb_cursor_close(search->cursor); - search->cursor = NULL; - return 0; -} - -void ndb_search_profile_end(struct ndb_search *search) -{ - if (search->cursor) - mdb_cursor_close(search->cursor); -} - -int ndb_search_profile_next(struct ndb_search *search) -{ - int rc; - MDB_val k, v; - unsigned char *init_id; - - init_id = search->key->id; - k.mv_data = search->key; - k.mv_size = sizeof(*search->key); - -retry: - if ((rc = mdb_cursor_get(search->cursor, &k, &v, MDB_NEXT))) { - ndb_debug("ndb_search_profile_next: %s\n", - mdb_strerror(rc)); - return 0; - } else { - search->key = k.mv_data; - assert(v.mv_size == 8); - search->profile_key = *((uint64_t*)v.mv_data); - - // skip duplicate pubkeys - if (!memcmp(init_id, search->key->id, 32)) - goto retry; - } - - return 1; -} - -// -// The relay kind index has a layout like so (so we don't need dupsort) -// -// - note_id: 00 + 8 bytes -// - kind: 08 + 8 bytes -// - created_at: 16 + 8 bytes -// - relay_url_size: 24 + 1 byte -// - relay_url: 25 + n byte null-terminated string -// - pad to 8 byte alignment -// -// The key sort order is: -// -// relay_url, kind, created_at -// -static int ndb_relay_kind_cmp(const MDB_val *a, const MDB_val *b) -{ - int cmp; - MDB_val va, vb; - uint64_t iva, ivb; - unsigned char *ad = (unsigned char *)a->mv_data; - unsigned char *bd = (unsigned char *)b->mv_data; - assert(((uint64_t)a->mv_data % 8) == 0); - - va.mv_size = *(ad + 24); - va.mv_data = ad + 25; - - vb.mv_size = *(bd + 24); - vb.mv_data = bd + 25; - - cmp = mdb_cmp_memn(&va, &vb); - if (cmp) return cmp; - - // kind - iva = *(uint64_t*)(ad + 8); - ivb = *(uint64_t*)(bd + 8); - - if (iva < ivb) - return -1; - else if (iva > ivb) - return 1; - - // created_at - iva = *(uint64_t*)(ad + 16); - ivb = *(uint64_t*)(bd + 16); - - if (iva < ivb) - return -1; - else if (iva > ivb) - return 1; - - // note_id (so we don't need dupsort logic) - iva = *(uint64_t*)ad; - ivb = *(uint64_t*)bd; - - if (iva < ivb) - return -1; - else if (iva > ivb) - return 1; - - return 0; -} - -static int ndb_search_key_cmp(const MDB_val *a, const MDB_val *b) -{ - int cmp; - struct ndb_search_key *ska, *skb; - - ska = a->mv_data; - skb = b->mv_data; - - MDB_val a2 = *a; - MDB_val b2 = *b; - - a2.mv_data = ska->search; - a2.mv_size = sizeof(ska->search) + sizeof(ska->id); - - cmp = mdb_cmp_memn(&a2, &b2); - if (cmp) return cmp; - - if (ska->timestamp < skb->timestamp) - return -1; - else if (ska->timestamp > skb->timestamp) - return 1; - - return 0; -} - -static int ndb_write_profile_pk_index(struct ndb_txn *txn, struct ndb_note *note, uint64_t profile_key) - -{ - MDB_val key, val; - int rc; - struct ndb_tsid tsid; - MDB_dbi pk_db; - - pk_db = txn->lmdb->dbs[NDB_DB_PROFILE_PK]; - - // write profile_pk + created_at index - ndb_tsid_init(&tsid, note->pubkey, note->created_at); - - key.mv_data = &tsid; - key.mv_size = sizeof(tsid); - val.mv_data = &profile_key; - val.mv_size = sizeof(profile_key); - - if ((rc = mdb_put(txn->mdb_txn, pk_db, &key, &val, 0))) { - ndb_debug("write profile_pk(%" PRIu64 ") to db failed: %s\n", - profile_key, mdb_strerror(rc)); - return 0; - } - - return 1; -} - -static int ndb_write_profile(struct ndb_txn *txn, - struct ndb_writer_profile *profile, - uint64_t note_key) -{ - uint64_t profile_key; - struct ndb_note *note; - void *flatbuf; - size_t flatbuf_len; - int rc; - - MDB_val key, val; - MDB_dbi profile_db; - - note = profile->note.note; - - // add note_key to profile record - NdbProfileRecord_note_key_add(profile->record.builder, note_key); - NdbProfileRecord_end_as_root(profile->record.builder); - - flatbuf = profile->record.flatbuf = - flatcc_builder_finalize_aligned_buffer(profile->record.builder, &flatbuf_len); - - assert(((uint64_t)flatbuf % 8) == 0); - - // TODO: this may not be safe!? - flatbuf_len = (flatbuf_len + 7) & ~7; - - //assert(NdbProfileRecord_verify_as_root(flatbuf, flatbuf_len) == 0); - - // get dbs - profile_db = txn->lmdb->dbs[NDB_DB_PROFILE]; - - // get new key - profile_key = ndb_get_last_key(txn->mdb_txn, profile_db) + 1; - - // write profile to profile store - key.mv_data = &profile_key; - key.mv_size = sizeof(profile_key); - val.mv_data = flatbuf; - val.mv_size = flatbuf_len; - - if ((rc = mdb_put(txn->mdb_txn, profile_db, &key, &val, 0))) { - ndb_debug("write profile to db failed: %s\n", mdb_strerror(rc)); - return 0; - } - - // write last fetched record - if (!ndb_maybe_write_last_profile_fetch(txn, note)) { - ndb_debug("failed to write last profile fetched record\n"); - } - - // write profile pubkey index - if (!ndb_write_profile_pk_index(txn, note, profile_key)) { - ndb_debug("failed to write profile pubkey index\n"); - return 0; - } - - // write name, display_name profile search indices - if (!ndb_write_profile_search_indices(txn, note, profile_key, - flatbuf)) { - ndb_debug("failed to write profile search indices\n"); - return 0; - } - - return 1; -} - -// find the last id tag in a note (e, p, etc) -static unsigned char *ndb_note_last_id_tag(struct ndb_note *note, char type) -{ - unsigned char *last = NULL; - struct ndb_iterator iter; - struct ndb_str str; - - // get the liked event id (last id) - ndb_tags_iterate_start(note, &iter); - - while (ndb_tags_iterate_next(&iter)) { - if (iter.tag->count < 2) - continue; - - str = ndb_tag_str(note, iter.tag, 0); - - // assign liked to the last e tag - if (str.flag == NDB_PACKED_STR && str.str[0] == type) { - str = ndb_tag_str(note, iter.tag, 1); - if (str.flag == NDB_PACKED_ID) - last = str.id; - } - } - - return last; -} - -void *ndb_get_note_meta(struct ndb_txn *txn, const unsigned char *id, size_t *len) -{ - MDB_val k, v; - - k.mv_data = (unsigned char*)id; - k.mv_size = 32; - - if (mdb_get(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_META], &k, &v)) { - //ndb_debug("ndb_get_note_meta: mdb_get note failed\n"); - return NULL; - } - - if (len) - *len = v.mv_size; - - return v.mv_data; -} - -// When receiving a reaction note, look for the liked id and increase the -// reaction counter in the note metadata database -static int ndb_write_reaction_stats(struct ndb_txn *txn, struct ndb_note *note) -{ - size_t len; - void *root; - int reactions, rc; - MDB_val key, val; - NdbEventMeta_table_t meta; - unsigned char *liked = ndb_note_last_id_tag(note, 'e'); - - if (liked == NULL) - return 0; - - root = ndb_get_note_meta(txn, liked, &len); - - flatcc_builder_t builder; - flatcc_builder_init(&builder); - NdbEventMeta_start_as_root(&builder); - - // no meta record, let's make one - if (root == NULL) { - NdbEventMeta_reactions_add(&builder, 1); - } else { - // clone existing and add to it - meta = NdbEventMeta_as_root(root); - - reactions = NdbEventMeta_reactions_get(meta); - NdbEventMeta_clone(&builder, meta); - NdbEventMeta_reactions_add(&builder, reactions + 1); - } - - NdbProfileRecord_end_as_root(&builder); - root = flatcc_builder_finalize_aligned_buffer(&builder, &len); - assert(((uint64_t)root % 8) == 0); - - if (root == NULL) { - ndb_debug("failed to create note metadata record\n"); - goto fail; - } - - // metadata is keyed on id because we want to collect stats regardless - // if we have the note yet or not - key.mv_data = liked; - key.mv_size = 32; - - val.mv_data = root; - val.mv_size = len; - - // write the new meta record - //ndb_debug("writing stats record for "); - //print_hex(liked, 32); - //ndb_debug("\n"); - - if ((rc = mdb_put(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_META], &key, &val, 0))) { - ndb_debug("write reaction stats to db failed: %s\n", mdb_strerror(rc)); - goto fail; - } - - free(root); - flatcc_builder_clear(&builder); - - return 1; - -fail: - free(root); - flatcc_builder_clear(&builder); - return 0; -} - - -static int ndb_write_note_id_index(struct ndb_txn *txn, struct ndb_note *note, - uint64_t note_key) - -{ - struct ndb_tsid tsid; - int rc; - MDB_val key, val; - MDB_dbi id_db; - - ndb_tsid_init(&tsid, note->id, note->created_at); - - key.mv_data = &tsid; - key.mv_size = sizeof(tsid); - val.mv_data = ¬e_key; - val.mv_size = sizeof(note_key); - - id_db = txn->lmdb->dbs[NDB_DB_NOTE_ID]; - - if ((rc = mdb_put(txn->mdb_txn, id_db, &key, &val, 0))) { - ndb_debug("write note id index to db failed: %s\n", - mdb_strerror(rc)); - return 0; - } - - return 1; -} - -static int ndb_filter_group_add_filters(struct ndb_filter_group *group, - struct ndb_filter *filters, - int num_filters) -{ - int i; - - for (i = 0; i < num_filters; i++) { - if (!ndb_filter_group_add(group, &filters[i])) - return 0; - } - - return 1; -} - - -static struct ndb_filter_elements * -ndb_filter_find_elements(struct ndb_filter *filter, enum ndb_filter_fieldtype typ) -{ - int i; - struct ndb_filter_elements *els; - - for (i = 0; i < filter->num_elements; i++) { - els = ndb_filter_get_elements(filter, i); - assert(els); - if (els->field.type == typ) { - return els; - } - } - - return NULL; -} - -static const char *ndb_filter_find_search(struct ndb_filter *filter) -{ - struct ndb_filter_elements *els; - - if (!(els = ndb_filter_find_elements(filter, NDB_FILTER_SEARCH))) - return NULL; - - return ndb_filter_get_string_element(filter, els, 0); -} - -int ndb_filter_is_subset_of(const struct ndb_filter *a, const struct ndb_filter *b) -{ - int i; - struct ndb_filter_elements *b_field, *a_field; - - // Everything is always a subset of {} - if (b->num_elements == 0) - return 1; - - // We can't be a subset if the number of elements in the other - // filter is larger then the number of elements we have. - if (b->num_elements > a->num_elements) - return 0; - - // If our filter count matches, we can only be a subset if we are - // equal - if (b->num_elements == a->num_elements) - return ndb_filter_eq(a, b); - - // If our element count is larger than the other filter, then we - // must see if every element in the other filter exists in ours. If - // so, then we are a subset of the other. - // - // eg: B={k:1, a:b} <- A={t:x, k:1, a:b} - // - // A is a subset of B because `k:1` and `a:b` both exist in A - - for (i = 0; i < b->num_elements; i++) { - b_field = ndb_filter_get_elements((struct ndb_filter*)b, i); - a_field = ndb_filter_find_elements((struct ndb_filter*)a, - b_field->field.type); - - if (a_field == NULL) - return 0; - - if (!ndb_filter_field_eq((struct ndb_filter*)a, a_field, - (struct ndb_filter*)b, b_field)) - return 0; - } - - return 1; -} - -int ndb_filter_eq(const struct ndb_filter *a, const struct ndb_filter *b) -{ - int i; - struct ndb_filter_elements *a_els, *b_els; - - if (a->num_elements != b->num_elements) - return 0; - - for (i = 0; i < a->num_elements; i++) { - a_els = ndb_filter_get_elements((struct ndb_filter*)a, i); - b_els = ndb_filter_find_elements((struct ndb_filter *)b, - a_els->field.type); - - if (b_els == NULL) - return 0; - - if (!ndb_filter_field_eq((struct ndb_filter*)a, a_els, - (struct ndb_filter*)b, b_els)) - return 0; - } - - return 1; -} - - -static uint64_t * -ndb_filter_get_elem(struct ndb_filter *filter, enum ndb_filter_fieldtype typ) -{ - struct ndb_filter_elements *els; - if ((els = ndb_filter_find_elements(filter, typ))) - return &els->elements[0]; - return NULL; -} - -static uint64_t *ndb_filter_get_int(struct ndb_filter *filter, - enum ndb_filter_fieldtype typ) -{ - uint64_t *el; - if (NULL == (el = ndb_filter_get_elem(filter, typ))) - return NULL; - return el; -} - -static inline int push_query_result(struct ndb_query_results *results, - struct ndb_query_result *result) -{ - return cursor_push(&results->cur, (unsigned char*)result, sizeof(*result)); -} - -static int compare_query_results(const void *pa, const void *pb) -{ - struct ndb_query_result *a, *b; - - a = (struct ndb_query_result *)pa; - b = (struct ndb_query_result *)pb; - - if (a->note->created_at == b->note->created_at) { - return 0; - } else if (a->note->created_at > b->note->created_at) { - return -1; - } else { - return 1; - } -} - -static void ndb_query_result_init(struct ndb_query_result *res, - struct ndb_note *note, - uint64_t note_size, - uint64_t note_id) -{ - *res = (struct ndb_query_result){ - .note_id = note_id, - .note_size = note_size, - .note = note, - }; -} - -static int query_is_full(struct ndb_query_results *results, int limit) -{ - if (results->cur.p >= results->cur.end) - return 1; - - return cursor_count(&results->cur, sizeof(struct ndb_query_result)) >= limit; -} - -static int ndb_query_plan_execute_search(struct ndb_txn *txn, - struct ndb_filter *filter, - struct ndb_query_results *results, - int limit) -{ - const char *search; - int i; - struct ndb_text_search_results text_results; - struct ndb_text_search_result *text_result; - struct ndb_text_search_config config; - struct ndb_query_result result; - - ndb_default_text_search_config(&config); - - if (!(search = ndb_filter_find_search(filter))) - return 0; - - if (!ndb_text_search_with(txn, search, &text_results, &config, filter)) - return 0; - - for (i = 0; i < text_results.num_results; i++) { - if (query_is_full(results, limit)) - break; - - text_result = &text_results.results[i]; - - result.note = text_result->note; - result.note_size = text_result->note_size; - result.note_id = text_result->key.note_id; - - if (!push_query_result(results, &result)) - break; - } - - return 1; -} - -static int ndb_query_plan_execute_ids(struct ndb_txn *txn, - struct ndb_filter *filter, - struct ndb_query_results *results, - int limit) -{ - MDB_cursor *cur; - MDB_dbi db; - MDB_val k, v; - int rc, i, need_relays = 0; - struct ndb_filter_elements *ids; - struct ndb_note *note; - struct ndb_query_result res; - struct ndb_tsid tsid, *ptsid; - uint64_t note_id, until, *pint; - size_t note_size; - unsigned char *id; - struct ndb_note_relay_iterator note_relay_iter = {0}; - struct ndb_note_relay_iterator *relay_iter = NULL; - - until = UINT64_MAX; - - if (!(ids = ndb_filter_find_elements(filter, NDB_FILTER_IDS))) - return 0; - - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_UNTIL))) - until = *pint; - - if (ndb_filter_find_elements(filter, NDB_FILTER_RELAYS)) - need_relays = 1; - - db = txn->lmdb->dbs[NDB_DB_NOTE_ID]; - if ((rc = mdb_cursor_open(txn->mdb_txn, db, &cur))) - return 0; - - // for each id in our ids filter, find in the db - for (i = 0; i < ids->count; i++) { - if (query_is_full(results, limit)) - break; - - id = ndb_filter_get_id_element(filter, ids, i); - ndb_tsid_init(&tsid, (unsigned char *)id, until); - - k.mv_data = &tsid; - k.mv_size = sizeof(tsid); - - if (!ndb_cursor_start(cur, &k, &v)) - continue; - - ptsid = (struct ndb_tsid *)k.mv_data; - note_id = *(uint64_t*)v.mv_data; - - if (memcmp(id, ptsid->id, 32)) - continue; - - // get the note because we need it to match against the filter - if (!(note = ndb_get_note_by_key(txn, note_id, ¬e_size))) - continue; - - relay_iter = need_relays ? ¬e_relay_iter : NULL; - if (relay_iter) - ndb_note_relay_iterate_start(txn, relay_iter, note_id); - - // Sure this particular lookup matched the index query, but - // does it match the entire filter? Check! We also pass in - // things we've already matched via the filter so we don't have - // to check again. This can be pretty important for filters - // with a large number of entries. - if (!ndb_filter_matches_with(filter, note, 1 << NDB_FILTER_IDS, relay_iter)) { - ndb_note_relay_iterate_close(relay_iter); - continue; - } - ndb_note_relay_iterate_close(relay_iter); - - ndb_query_result_init(&res, note, note_size, note_id); - if (!push_query_result(results, &res)) - break; - } - - mdb_cursor_close(cur); - return 1; -} - -// -// encode a tag index key -// -// consists of: -// -// u8 tag -// u8 tag_val_len -// [u8] tag_val_bytes -// u64 created_at -// -static int ndb_encode_tag_key(unsigned char *buf, int buf_size, - char tag, const unsigned char *val, - unsigned char val_len, - uint64_t timestamp) -{ - struct cursor writer; - int ok; - - // quick exit for obvious case where it will be too big. There can be - // values of val_len that still fail, but we just let the writer handle - // those failure cases - if (val_len >= buf_size) - return 0; - - make_cursor(buf, buf + buf_size, &writer); - - ok = - cursor_push_byte(&writer, tag) && - cursor_push(&writer, (unsigned char*)val, val_len) && - cursor_push(&writer, (unsigned char*)×tamp, sizeof(timestamp)); - - if (!ok) - return 0; - - return writer.p - writer.start; -} - -static int ndb_query_plan_execute_authors(struct ndb_txn *txn, - struct ndb_filter *filter, - struct ndb_query_results *results, - int limit) -{ - MDB_val k, v; - MDB_cursor *cur; - int rc, i, need_relays = 0; - uint64_t *pint, until, since, note_key; - unsigned char *author; - struct ndb_note *note; - size_t note_size; - struct ndb_filter_elements *authors; - struct ndb_query_result res; - struct ndb_tsid tsid, *ptsid; - struct ndb_note_relay_iterator note_relay_iter; - enum ndb_dbs db; - - db = txn->lmdb->dbs[NDB_DB_NOTE_PUBKEY]; - - if (!(authors = ndb_filter_find_elements(filter, NDB_FILTER_AUTHORS))) - return 0; - - until = UINT64_MAX; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_UNTIL))) - until = *pint; - - since = 0; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_SINCE))) - since = *pint; - - if (ndb_filter_find_elements(filter, NDB_FILTER_RELAYS)) - need_relays = 1; - - if ((rc = mdb_cursor_open(txn->mdb_txn, db, &cur))) - return 0; - - for (i = 0; i < authors->count; i++) { - author = ndb_filter_get_id_element(filter, authors, i); - - ndb_tsid_init(&tsid, author, until); - - k.mv_data = &tsid; - k.mv_size = sizeof(tsid); - - if (!ndb_cursor_start(cur, &k, &v)) - continue; - - // for each id in our ids filter, find in the db - while (!query_is_full(results, limit)) { - ptsid = (struct ndb_tsid *)k.mv_data; - note_key = *(uint64_t*)v.mv_data; - - // don't continue the scan if we're below `since` - if (ptsid->timestamp < since) - break; - - // our author should match, if not bail - if (memcmp(author, ptsid->id, 32)) - break; - - // fetch the note, we need it for our query results - // and to match further against the filter - if (!(note = ndb_get_note_by_key(txn, note_key, ¬e_size))) - goto next; - - if (need_relays) - ndb_note_relay_iterate_start(txn, ¬e_relay_iter, note_key); - - if (!ndb_filter_matches_with(filter, note, - 1 << NDB_FILTER_AUTHORS, - need_relays ? ¬e_relay_iter : NULL)) - { - goto next; - } - - ndb_query_result_init(&res, note, note_size, note_key); - if (!push_query_result(results, &res)) - break; - -next: - if (mdb_cursor_get(cur, &k, &v, MDB_PREV)) - break; - } - } - - mdb_cursor_close(cur); - return 1; -} - -static int ndb_query_plan_execute_created_at(struct ndb_txn *txn, - struct ndb_filter *filter, - struct ndb_query_results *results, - int limit) -{ - MDB_dbi db; - MDB_val k, v; - MDB_cursor *cur; - int rc, need_relays = 0; - struct ndb_note *note; - struct ndb_tsid key, *pkey; - uint64_t *pint, until, since, note_id; - size_t note_size; - struct ndb_query_result res; - struct ndb_note_relay_iterator note_relay_iter; - unsigned char high_key[32] = {0xFF}; - - db = txn->lmdb->dbs[NDB_DB_NOTE_ID]; - - until = UINT64_MAX; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_UNTIL))) - until = *pint; - - since = 0; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_SINCE))) - since = *pint; - - if (ndb_filter_find_elements(filter, NDB_FILTER_RELAYS)) - need_relays = 1; - - if ((rc = mdb_cursor_open(txn->mdb_txn, db, &cur))) - return 0; - - // if we have until, start there, otherwise just use max - ndb_tsid_init(&key, high_key, until); - k.mv_data = &key; - k.mv_size = sizeof(key); - - if (!ndb_cursor_start(cur, &k, &v)) - return 1; - - while (!query_is_full(results, limit)) { - pkey = (struct ndb_tsid *)k.mv_data; - note_id = *(uint64_t*)v.mv_data; - assert(v.mv_size == 8); - - // don't continue the scan if we're below `since` - if (pkey->timestamp < since) - break; - - if (!(note = ndb_get_note_by_key(txn, note_id, ¬e_size))) - goto next; - - if (need_relays) - ndb_note_relay_iterate_start(txn, ¬e_relay_iter, note_id); - - // does this entry match our filter? - if (!ndb_filter_matches_with(filter, note, 0, need_relays ? ¬e_relay_iter : NULL)) - goto next; - - ndb_query_result_init(&res, note, (uint64_t)note_size, note_id); - if (!push_query_result(results, &res)) - break; -next: - if (mdb_cursor_get(cur, &k, &v, MDB_PREV)) - break; - } - - mdb_cursor_close(cur); - return 1; -} - -static int ndb_query_plan_execute_tags(struct ndb_txn *txn, - struct ndb_filter *filter, - struct ndb_query_results *results, - int limit) -{ - MDB_cursor *cur; - MDB_dbi db; - MDB_val k, v; - int len, taglen, rc, i, need_relays = 0; - uint64_t *pint, until, note_id; - size_t note_size; - unsigned char key_buffer[255]; - struct ndb_note *note; - struct ndb_filter_elements *tags; - unsigned char *tag; - struct ndb_query_result res; - struct ndb_note_relay_iterator note_relay_iter; - - db = txn->lmdb->dbs[NDB_DB_NOTE_TAGS]; - - if (!(tags = ndb_filter_find_elements(filter, NDB_FILTER_TAGS))) - return 0; - - if (ndb_filter_find_elements(filter, NDB_FILTER_RELAYS)) - need_relays = 1; - - until = UINT64_MAX; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_UNTIL))) - until = *pint; - - if ((rc = mdb_cursor_open(txn->mdb_txn, db, &cur))) - return 0; - - for (i = 0; i < tags->count; i++) { - tag = ndb_filter_get_id_element(filter, tags, i); - - taglen = tags->field.elem_type == NDB_ELEMENT_ID - ? 32 : strlen((const char*)tag); - - if (!(len = ndb_encode_tag_key(key_buffer, sizeof(key_buffer), - tags->field.tag, tag, taglen, - until))) { - goto fail; - } - - k.mv_data = key_buffer; - k.mv_size = len; - - if (!ndb_cursor_start(cur, &k, &v)) - continue; - - // for each id in our ids filter, find in the db - while (!query_is_full(results, limit)) { - // check if tag value matches, bail if not - if (((unsigned char *)k.mv_data)[0] != tags->field.tag) - break; - - // check if tag value matches, bail if not - if (taglen != k.mv_size - 9) - break; - - if (memcmp((unsigned char *)k.mv_data+1, tag, k.mv_size-9)) - break; - - note_id = *(uint64_t*)v.mv_data; - - if (!(note = ndb_get_note_by_key(txn, note_id, ¬e_size))) - goto next; - - if (need_relays) - ndb_note_relay_iterate_start(txn, ¬e_relay_iter, note_id); - - if (!ndb_filter_matches_with(filter, note, - 1 << NDB_FILTER_TAGS, - need_relays ? ¬e_relay_iter : NULL)) - goto next; - - ndb_query_result_init(&res, note, note_size, note_id); - if (!push_query_result(results, &res)) - break; - -next: - if (mdb_cursor_get(cur, &k, &v, MDB_PREV)) - break; - } - } - - mdb_cursor_close(cur); - return 1; -fail: - mdb_cursor_close(cur); - return 0; -} - -static int ndb_query_plan_execute_author_kinds( - struct ndb_txn *txn, - struct ndb_filter *filter, - struct ndb_query_results *results, - int limit) -{ - MDB_cursor *cur; - MDB_dbi db; - MDB_val k, v; - struct ndb_note *note; - struct ndb_filter_elements *kinds, *relays, *authors; - struct ndb_query_result res; - uint64_t kind, note_id, until, since, *pint; - size_t note_size; - unsigned char *author; - int i, j, rc; - struct ndb_id_u64_ts key, *pkey; - struct ndb_note_relay_iterator note_relay_iter; - - // we should have kinds in a kinds filter! - if (!(kinds = ndb_filter_find_elements(filter, NDB_FILTER_KINDS))) - return 0; - // - // we should have kinds in a kinds filter! - if (!(authors = ndb_filter_find_elements(filter, NDB_FILTER_AUTHORS))) - return 0; - - relays = ndb_filter_find_elements(filter, NDB_FILTER_RELAYS); - - until = UINT64_MAX; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_UNTIL))) - until = *pint; - - since = 0; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_SINCE))) - since = *pint; - - db = txn->lmdb->dbs[NDB_DB_NOTE_PUBKEY_KIND]; - - if ((rc = mdb_cursor_open(txn->mdb_txn, db, &cur))) - return 0; - - for (j = 0; j < authors->count; j++) { - if (query_is_full(results, limit)) - break; - - if (!(author = ndb_filter_get_id_element(filter, authors, j))) - continue; - - for (i = 0; i < kinds->count; i++) { - if (query_is_full(results, limit)) - break; - - kind = kinds->elements[i]; - - ndb_debug("finding kind %"PRIu64"\n", kind); - - ndb_id_u64_ts_init(&key, author, kind, until); - - k.mv_data = &key; - k.mv_size = sizeof(key); - - if (!ndb_cursor_start(cur, &k, &v)) - continue; - - // scan the kind subindex - while (!query_is_full(results, limit)) { - pkey = (struct ndb_id_u64_ts*)k.mv_data; - - ndb_debug("scanning subindex kind:%"PRIu64" created_at:%"PRIu64" pubkey:", - pkey->u64, - pkey->timestamp); - - if (pkey->u64 != kind) - break; - - // don't continue the scan if we're below `since` - if (pkey->timestamp < since) - break; - - if (memcmp(pkey->id, author, 32)) - break; - - note_id = *(uint64_t*)v.mv_data; - if (!(note = ndb_get_note_by_key(txn, note_id, ¬e_size))) - goto next; - - if (relays) - ndb_note_relay_iterate_start(txn, ¬e_relay_iter, note_id); - - if (!ndb_filter_matches_with(filter, note, - (1 << NDB_FILTER_KINDS) | (1 << NDB_FILTER_AUTHORS), - relays? ¬e_relay_iter : NULL)) - goto next; - - ndb_query_result_init(&res, note, note_size, note_id); - if (!push_query_result(results, &res)) - break; - -next: - if (mdb_cursor_get(cur, &k, &v, MDB_PREV)) - break; - } - } - } - - mdb_cursor_close(cur); - return 1; -} - -static int ndb_query_plan_execute_profile_search( - struct ndb_txn *txn, - struct ndb_filter *filter, - struct ndb_query_results *results, - int limit) -{ - const char *search; - int i; - - // The filter pubkey is updated inplace for each note search - unsigned char *filter_pubkey; - unsigned char pubkey[32] = {0}; - struct ndb_filter_elements *els; - struct ndb_search profile_search; - struct ndb_filter note_filter, *f = ¬e_filter; - - if (!(search = ndb_filter_find_search(filter))) - return 0; - - if (!ndb_filter_init_with(f, 1)) - return 0; - - ndb_filter_start_field(f, NDB_FILTER_KINDS); - ndb_filter_add_int_element(f, 0); - ndb_filter_end_field(f); - - ndb_filter_start_field(f, NDB_FILTER_AUTHORS); - ndb_filter_add_id_element(f, pubkey); - ndb_filter_end_field(f); - ndb_filter_end(f); - - // get the authors element after we finalize the filter, since - // the data could have moved - if (!(els = ndb_filter_find_elements(f, NDB_FILTER_AUTHORS))) - goto fail; - - // grab pointer to pubkey in the filter so that we can - // update the filter as we go - if (!(filter_pubkey = ndb_filter_get_id_element(f, els, 0))) - goto fail; - - for (i = 0; !query_is_full(results, limit); i++) { - if (i == 0) { - if (!ndb_search_profile(txn, &profile_search, search)) - break; - } else { - if (!ndb_search_profile_next(&profile_search)) - break; - } - - // Copy pubkey into filter - memcpy(filter_pubkey, profile_search.key->id, 32); - - // Look up the corresponding note associated with that pubkey - if (!ndb_query_plan_execute_author_kinds(txn, f, results, limit)) - goto fail; - } - - ndb_search_profile_end(&profile_search); - ndb_filter_destroy(f); - return 1; - -fail: - ndb_filter_destroy(f); - return 0; -} - -static int ndb_query_plan_execute_relay_kinds( - struct ndb_txn *txn, - struct ndb_filter *filter, - struct ndb_query_results *results, - int limit) -{ - MDB_cursor *cur; - MDB_dbi db; - MDB_val k, v; - struct ndb_note *note; - struct ndb_filter_elements *kinds, *relays; - struct ndb_query_result res; - uint64_t kind, note_id, until, since, *pint; - size_t note_size; - const char *relay; - int i, j, rc, len; - struct ndb_relay_kind_key relay_key; - unsigned char keybuf[256]; - - // we should have kinds in a kinds filter! - if (!(kinds = ndb_filter_find_elements(filter, NDB_FILTER_KINDS))) - return 0; - - if (!(relays = ndb_filter_find_elements(filter, NDB_FILTER_RELAYS))) - return 0; - - until = UINT64_MAX; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_UNTIL))) - until = *pint; - - since = 0; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_SINCE))) - since = *pint; - - db = txn->lmdb->dbs[NDB_DB_NOTE_RELAY_KIND]; - - if ((rc = mdb_cursor_open(txn->mdb_txn, db, &cur))) - return 0; - - for (j = 0; j < relays->count; j++) { - if (query_is_full(results, limit)) - break; - - if (!(relay = ndb_filter_get_string_element(filter, relays, j))) - continue; - - for (i = 0; i < kinds->count; i++) { - if (query_is_full(results, limit)) - break; - - kind = kinds->elements[i]; - ndb_debug("kind %" PRIu64 "\n", kind); - - if (!ndb_relay_kind_key_init_high(&relay_key, relay, kind, until)) { - ndb_debug("ndb_relay_kind_key_init_high failed in relay query\n"); - continue; - } - - if (!(len = ndb_build_relay_kind_key(keybuf, sizeof(keybuf), &relay_key))) { - ndb_debug("ndb_build_relay_kind_key failed in relay query\n"); - ndb_debug_relay_kind_key(&relay_key); - continue; - } - - k.mv_data = keybuf; - k.mv_size = len; - - ndb_debug("starting with key "); - ndb_debug_relay_kind_key(&relay_key); - - if (!ndb_cursor_start(cur, &k, &v)) - continue; - - // scan the kind subindex - while (!query_is_full(results, limit)) { - ndb_parse_relay_kind_key(&relay_key, k.mv_data); - - ndb_debug("inside kind subindex "); - ndb_debug_relay_kind_key(&relay_key); - - if (relay_key.kind != kind) - break; - - if (strcmp(relay_key.relay, relay)) - break; - - // don't continue the scan if we're below `since` - if (relay_key.created_at < since) - break; - - note_id = relay_key.note_key; - if (!(note = ndb_get_note_by_key(txn, note_id, ¬e_size))) - goto next; - - if (!ndb_filter_matches_with(filter, note, - (1 << NDB_FILTER_KINDS) | (1 << NDB_FILTER_RELAYS), - NULL)) - goto next; - - ndb_query_result_init(&res, note, note_size, note_id); - if (!push_query_result(results, &res)) - break; - -next: - if (mdb_cursor_get(cur, &k, &v, MDB_PREV)) - break; - } - } - } - - mdb_cursor_close(cur); - return 1; -} - -static int ndb_query_plan_execute_kinds(struct ndb_txn *txn, - struct ndb_filter *filter, - struct ndb_query_results *results, - int limit) -{ - MDB_cursor *cur; - MDB_dbi db; - MDB_val k, v; - struct ndb_note *note; - struct ndb_u64_ts tsid, *ptsid; - struct ndb_filter_elements *kinds; - struct ndb_query_result res; - uint64_t kind, note_id, until, since, *pint; - size_t note_size; - int i, rc, need_relays = 0; - struct ndb_note_relay_iterator note_relay_iter; - - // we should have kinds in a kinds filter! - if (!(kinds = ndb_filter_find_elements(filter, NDB_FILTER_KINDS))) - return 0; - - if (ndb_filter_find_elements(filter, NDB_FILTER_RELAYS)) - need_relays = 1; - - until = UINT64_MAX; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_UNTIL))) - until = *pint; - - since = 0; - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_SINCE))) - since = *pint; - - db = txn->lmdb->dbs[NDB_DB_NOTE_KIND]; - - if ((rc = mdb_cursor_open(txn->mdb_txn, db, &cur))) - return 0; - - for (i = 0; i < kinds->count; i++) { - if (query_is_full(results, limit)) - break; - - kind = kinds->elements[i]; - ndb_debug("kind %" PRIu64 "\n", kind); - ndb_u64_ts_init(&tsid, kind, until); - - k.mv_data = &tsid; - k.mv_size = sizeof(tsid); - - if (!ndb_cursor_start(cur, &k, &v)) - continue; - - // for each id in our ids filter, find in the db - while (!query_is_full(results, limit)) { - ptsid = (struct ndb_u64_ts *)k.mv_data; - if (ptsid->u64 != kind) - break; - - // don't continue the scan if we're below `since` - if (ptsid->timestamp < since) - break; - - note_id = *(uint64_t*)v.mv_data; - if (!(note = ndb_get_note_by_key(txn, note_id, ¬e_size))) - goto next; - - if (need_relays) - ndb_note_relay_iterate_start(txn, ¬e_relay_iter, note_id); - - if (!ndb_filter_matches_with(filter, note, - 1 << NDB_FILTER_KINDS, - need_relays ? ¬e_relay_iter : NULL)) - goto next; - - ndb_query_result_init(&res, note, note_size, note_id); - if (!push_query_result(results, &res)) - break; - -next: - if (mdb_cursor_get(cur, &k, &v, MDB_PREV)) - break; - } - } - - mdb_cursor_close(cur); - return 1; -} - -static enum ndb_query_plan ndb_filter_plan(struct ndb_filter *filter) -{ - struct ndb_filter_elements *ids, *kinds, *authors, *tags, *search, *relays; - - ids = ndb_filter_find_elements(filter, NDB_FILTER_IDS); - search = ndb_filter_find_elements(filter, NDB_FILTER_SEARCH); - kinds = ndb_filter_find_elements(filter, NDB_FILTER_KINDS); - authors = ndb_filter_find_elements(filter, NDB_FILTER_AUTHORS); - tags = ndb_filter_find_elements(filter, NDB_FILTER_TAGS); - relays = ndb_filter_find_elements(filter, NDB_FILTER_RELAYS); - - // profile search - if (kinds && kinds->count == 1 && kinds->elements[0] == 0 && search) { - return NDB_PLAN_PROFILE_SEARCH; - } - - // TODO: fix multi-author queries - if (search) { - return NDB_PLAN_SEARCH; - } else if (ids) { - return NDB_PLAN_IDS; - } else if (relays && kinds && !authors) { - return NDB_PLAN_RELAY_KINDS; - } else if (kinds && authors && authors->count == 1) { - return NDB_PLAN_AUTHOR_KINDS; - } else if (authors && authors->count == 1) { - return NDB_PLAN_AUTHORS; - } else if (tags && tags->count == 1) { - return NDB_PLAN_TAGS; - } else if (kinds) { - return NDB_PLAN_KINDS; - } - - return NDB_PLAN_CREATED; -} - -static const char *ndb_query_plan_name(enum ndb_query_plan plan_id) -{ - switch (plan_id) { - case NDB_PLAN_IDS: return "ids"; - case NDB_PLAN_SEARCH: return "search"; - case NDB_PLAN_KINDS: return "kinds"; - case NDB_PLAN_TAGS: return "tags"; - case NDB_PLAN_CREATED: return "created"; - case NDB_PLAN_AUTHORS: return "authors"; - case NDB_PLAN_RELAY_KINDS: return "relay_kinds"; - case NDB_PLAN_AUTHOR_KINDS: return "author_kinds"; - case NDB_PLAN_PROFILE_SEARCH: return "profile_search"; - } - - return "unknown"; -} - -static int ndb_query_filter(struct ndb_txn *txn, struct ndb_filter *filter, - struct ndb_query_result *res, int capacity, - int *results_out) -{ - struct ndb_query_results results; - uint64_t limit, *pint; - enum ndb_query_plan plan; - limit = capacity; - - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_LIMIT))) - limit = *pint; - - limit = min(capacity, limit); - make_cursor((unsigned char *)res, - ((unsigned char *)res) + limit * sizeof(*res), - &results.cur); - - plan = ndb_filter_plan(filter); - ndb_debug("using query plan '%s'\n", ndb_query_plan_name(plan)); - switch (plan) { - // We have a list of ids, just open a cursor and jump to each once - case NDB_PLAN_IDS: - if (!ndb_query_plan_execute_ids(txn, filter, &results, limit)) - return 0; - break; - case NDB_PLAN_RELAY_KINDS: - if (!ndb_query_plan_execute_relay_kinds(txn, filter, &results, limit)) - return 0; - break; - case NDB_PLAN_SEARCH: - if (!ndb_query_plan_execute_search(txn, filter, &results, limit)) - return 0; - break; - - case NDB_PLAN_PROFILE_SEARCH: - if (!ndb_query_plan_execute_profile_search(txn, filter, &results, limit)) - return 0; - break; - - // We have just kinds, just scan the kind index - case NDB_PLAN_KINDS: - if (!ndb_query_plan_execute_kinds(txn, filter, &results, limit)) - return 0; - break; - case NDB_PLAN_TAGS: - if (!ndb_query_plan_execute_tags(txn, filter, &results, limit)) - return 0; - break; - case NDB_PLAN_CREATED: - if (!ndb_query_plan_execute_created_at(txn, filter, &results, limit)) - return 0; - break; - case NDB_PLAN_AUTHORS: - if (!ndb_query_plan_execute_authors(txn, filter, &results, limit)) - return 0; - break; - case NDB_PLAN_AUTHOR_KINDS: - if (!ndb_query_plan_execute_author_kinds(txn, filter, &results, limit)) - return 0; - break; - } - - *results_out = cursor_count(&results.cur, sizeof(*res)); - return 1; -} - -int ndb_query(struct ndb_txn *txn, struct ndb_filter *filters, int num_filters, - struct ndb_query_result *results, int result_capacity, int *count) -{ - int i, out; - struct ndb_query_result *p = results; - - out = 0; - *count = 0; - - for (i = 0; i < num_filters; i++) { - if (!ndb_query_filter(txn, &filters[i], p, - result_capacity, &out)) { - return 0; - } - - *count += out; - p += out; - result_capacity -= out; - if (result_capacity <= 0) - break; - } - - // sort results - qsort(results, *count, sizeof(*results), compare_query_results); - return 1; -} - -static int ndb_write_note_tag_index(struct ndb_txn *txn, struct ndb_note *note, - uint64_t note_key) -{ - unsigned char key_buffer[255]; - struct ndb_iterator iter; - struct ndb_str tkey, tval; - char tchar; - int len, rc; - MDB_val key, val; - MDB_dbi tags_db; - - tags_db = txn->lmdb->dbs[NDB_DB_NOTE_TAGS]; - - ndb_tags_iterate_start(note, &iter); - - while (ndb_tags_iterate_next(&iter)) { - if (iter.tag->count < 2) - continue; - - tkey = ndb_tag_str(note, iter.tag, 0); - - // we only write indices for 1-char tags. - tchar = tkey.str[0]; - if (tchar == 0 || tkey.str[1] != 0) - continue; - - tval = ndb_tag_str(note, iter.tag, 1); - len = ndb_str_len(&tval); - - if (!(len = ndb_encode_tag_key(key_buffer, sizeof(key_buffer), - tchar, tval.id, (unsigned char)len, - ndb_note_created_at(note)))) { - // this will fail when we try to encode a key that is - // too big - continue; - } - - //ndb_debug("writing tag '%c':'data:%d' to index\n", tchar, len); - - key.mv_data = key_buffer; - key.mv_size = len; - - val.mv_data = ¬e_key; - val.mv_size = sizeof(note_key); - - if ((rc = mdb_put(txn->mdb_txn, tags_db, &key, &val, 0))) { - ndb_debug("write note tag index to db failed: %s\n", - mdb_strerror(rc)); - return 0; - } - } - - return 1; -} - -static int ndb_write_note_kind_index(struct ndb_txn *txn, struct ndb_note *note, - uint64_t note_key) -{ - struct ndb_u64_ts tsid; - int rc; - MDB_val key, val; - MDB_dbi kind_db; - - ndb_u64_ts_init(&tsid, note->kind, note->created_at); - - key.mv_data = &tsid; - key.mv_size = sizeof(tsid); - val.mv_data = ¬e_key; - val.mv_size = sizeof(note_key); - - kind_db = txn->lmdb->dbs[NDB_DB_NOTE_KIND]; - - if ((rc = mdb_put(txn->mdb_txn, kind_db, &key, &val, 0))) { - ndb_debug("write note kind index to db failed: %s\n", - mdb_strerror(rc)); - return 0; - } - - return 1; -} - -static int ndb_write_word_to_index(struct ndb_txn *txn, const char *word, - int word_len, int word_index, - uint64_t timestamp, uint64_t note_id) -{ - // cap to some reasonable key size - unsigned char buffer[1024]; - int keysize, rc; - MDB_val k, v; - MDB_dbi text_db; - - // build our compressed text index key - if (!ndb_make_text_search_key(buffer, sizeof(buffer), word_index, - word_len, word, timestamp, note_id, - &keysize)) { - // probably too big - - return 0; - } - - k.mv_data = buffer; - k.mv_size = keysize; - - v.mv_data = NULL; - v.mv_size = 0; - - text_db = txn->lmdb->dbs[NDB_DB_NOTE_TEXT]; - - if ((rc = mdb_put(txn->mdb_txn, text_db, &k, &v, 0))) { - ndb_debug("write note text index to db failed: %s\n", - mdb_strerror(rc)); - return 0; - } - - return 1; -} - - - -// break a string into individual words for querying or for building the -// fulltext search index. This is callback based so we don't need to -// build up an intermediate structure -static int ndb_parse_words(struct cursor *cur, void *ctx, ndb_word_parser_fn fn) -{ - int word_len, words; - const char *word; - - words = 0; - - while (cur->p < cur->end) { - consume_whitespace_or_punctuation(cur); - if (cur->p >= cur->end) - break; - word = (const char *)cur->p; - - if (!consume_until_boundary(cur)) - break; - - // start of word or end - word_len = cur->p - (unsigned char *)word; - if (word_len == 0 && cur->p >= cur->end) - break; - - if (word_len == 0) { - if (!cursor_skip(cur, 1)) - break; - continue; - } - - //ndb_debug("writing word index '%.*s'\n", word_len, word); - - if (!fn(ctx, word, word_len, words)) - continue; - - words++; - } - - return 1; -} - -struct ndb_word_writer_ctx -{ - struct ndb_txn *txn; - struct ndb_note *note; - uint64_t note_id; -}; - -static int ndb_fulltext_word_writer(void *ctx, - const char *word, int word_len, int words) -{ - struct ndb_word_writer_ctx *wctx = ctx; - - if (!ndb_write_word_to_index(wctx->txn, word, word_len, words, - wctx->note->created_at, wctx->note_id)) { - // too big to write this one, just skip it - ndb_debug("failed to write word '%.*s' to index\n", word_len, word); - - return 0; - } - - //fprintf(stderr, "wrote '%.*s' to note text index\n", word_len, word); - return 1; -} - -static int ndb_write_note_fulltext_index(struct ndb_txn *txn, - struct ndb_note *note, - uint64_t note_id) -{ - struct cursor cur; - unsigned char *content; - struct ndb_str str; - struct ndb_word_writer_ctx ctx; - - str = ndb_note_str(note, ¬e->content); - // I don't think this should happen? - if (unlikely(str.flag == NDB_PACKED_ID)) - return 0; - - content = (unsigned char *)str.str; - - make_cursor(content, content + note->content_length, &cur); - - ctx.txn = txn; - ctx.note = note; - ctx.note_id = note_id; - - ndb_parse_words(&cur, &ctx, ndb_fulltext_word_writer); - - return 1; -} - -static int ndb_parse_search_words(void *ctx, const char *word_str, int word_len, int word_index) -{ - (void)word_index; - struct ndb_search_words *words = ctx; - struct ndb_word *word; - - if (words->num_words + 1 > MAX_TEXT_SEARCH_WORDS) - return 0; - - word = &words->words[words->num_words++]; - word->word = word_str; - word->word_len = word_len; - - return 1; -} - -static void ndb_search_words_init(struct ndb_search_words *words) -{ - words->num_words = 0; -} - -static int prefix_count(const char *str1, int len1, const char *str2, int len2) { - int i, count = 0; - int min_len = len1 < len2 ? len1 : len2; - - for (i = 0; i < min_len; i++) { - // case insensitive - if (tolower(str1[i]) == tolower(str2[i])) - count++; - else - break; - } - - return count; -} - -static int ndb_prefix_matches(struct ndb_text_search_result *result, - struct ndb_word *search_word) -{ - // Empty strings shouldn't happen but let's - if (result->key.str_len < 2 || search_word->word_len < 2) - return 0; - - // make sure we at least have two matching prefix characters. exact - // matches are nice but range searches allow us to match prefixes as - // well. A double-char prefix is suffient, but maybe we could up this - // in the future. - // - // TODO: How are we handling utf-8 prefix matches like - // japanese? - // - if ( result->key.str[0] != tolower(search_word->word[0]) - && result->key.str[1] != tolower(search_word->word[1]) - ) - return 0; - - // count the number of prefix-matched characters. This will be used - // for ranking search results - result->prefix_chars = prefix_count(result->key.str, - result->key.str_len, - search_word->word, - search_word->word_len); - - if (result->prefix_chars <= (int)((double)search_word->word_len / 1.5)) - return 0; - - return 1; -} - -// This is called when scanning the full text search index. Scanning stops -// when we no longer have a prefix match for the word -static int ndb_text_search_next_word(MDB_cursor *cursor, MDB_cursor_op op, - MDB_val *k, struct ndb_word *search_word, - struct ndb_text_search_result *last_result, - struct ndb_text_search_result *result, - MDB_cursor_op order_op) -{ - struct cursor key_cursor; - //struct ndb_text_search_key search_key; - MDB_val v; - int retries; - retries = -1; - - make_cursor(k->mv_data, (unsigned char *)k->mv_data + k->mv_size, &key_cursor); - - // When op is MDB_SET_RANGE, this initializes the search. Position - // the cursor at the next key greater than or equal to the specified - // key. - // - // Subsequent searches should use MDB_NEXT - if (mdb_cursor_get(cursor, k, &v, op)) { - // we should only do this if we're going in reverse - if (op == MDB_SET_RANGE && order_op == MDB_PREV) { - // if set range worked and our key exists, it should be - // the one right before this one - if (mdb_cursor_get(cursor, k, &v, MDB_PREV)) - return 0; - } else { - return 0; - } - } - -retry: - retries++; - /* - printf("continuing from "); - if (ndb_unpack_text_search_key(k->mv_data, k->mv_size, &search_key)) { - ndb_print_text_search_key(&search_key); - } else { printf("??"); } - printf("\n"); - */ - - make_cursor(k->mv_data, (unsigned char *)k->mv_data + k->mv_size, &key_cursor); - - if (unlikely(!ndb_unpack_text_search_key_noteid(&key_cursor, &result->key.note_id))) { - fprintf(stderr, "UNUSUAL: failed to unpack text search key note_id\n"); - return 0; - } - - // if the note id doesn't match the last result, then we stop trying - // each search word - if (last_result && last_result->key.note_id != result->key.note_id) { - return 0; - } - - // On success, this could still be not related at all. - // It could just be adjacent to the word. Let's check - // if we have a matching prefix at least. - - // Before we unpack the entire key, let's quickly - // unpack just the string to check the prefix. We don't - // need to unpack the entire key if the prefix doesn't - // match - if (!ndb_unpack_text_search_key_string(&key_cursor, - &result->key.str, - &result->key.str_len)) { - // this should never happen - fprintf(stderr, "UNUSUAL: failed to unpack text search key string\n"); - return 0; - } - - if (!ndb_prefix_matches(result, search_word)) { - /* - printf("result prefix '%.*s' didn't match search word '%.*s'\n", - result->key.str_len, result->key.str, - search_word->word_len, search_word->word); - */ - // we should only do this if we're going in reverse - if (retries == 0 && op == MDB_SET_RANGE && order_op == MDB_PREV) { - // if set range worked and our key exists, it should be - // the one right before this one - mdb_cursor_get(cursor, k, &v, MDB_PREV); - goto retry; - } else { - return 0; - } - } - - // Unpack the remaining text search key, we will need this information - // when building up our search results. - if (!ndb_unpack_remaining_text_search_key(&key_cursor, &result->key)) { - // This should never happen - fprintf(stderr, "UNUSUAL: failed to unpack text search key\n"); - return 0; - } - - /* - if (last_result) { - if (result->key.word_index < last_result->key.word_index) { - fprintf(stderr, "skipping '%.*s' because it is before last result '%.*s'\n", - result->key.str_len, result->key.str, - last_result->key.str_len, last_result->key.str); - return 0; - } - } - */ - - return 1; -} - -static void ndb_text_search_results_init( - struct ndb_text_search_results *results) { - results->num_results = 0; -} - -void ndb_default_text_search_config(struct ndb_text_search_config *cfg) -{ - cfg->order = NDB_ORDER_DESCENDING; - cfg->limit = MAX_TEXT_SEARCH_RESULTS; -} - -void ndb_text_search_config_set_order(struct ndb_text_search_config *cfg, - enum ndb_search_order order) -{ - cfg->order = order; -} - -void ndb_text_search_config_set_limit(struct ndb_text_search_config *cfg, int limit) -{ - cfg->limit = limit; -} - -static int compare_search_words(const void *pa, const void *pb) -{ - struct ndb_word *a, *b; - - a = (struct ndb_word *)pa; - b = (struct ndb_word *)pb; - - if (a->word_len == b->word_len) { - return 0; - } else if (a->word_len > b->word_len) { - // biggest words should be at the front of the list, - // so we say it's "smaller" here - return -1; - } else { - return 1; - } -} - -// Sort search words from largest to smallest. Larger words are less likely -// in the index, allowing our scan to walk fewer words at the root when -// recursively matching. -void sort_largest_to_smallest(struct ndb_search_words *words) -{ - qsort(words->words, words->num_words, sizeof(words->words[0]), compare_search_words); -} - - -int ndb_text_search_with(struct ndb_txn *txn, const char *query, - struct ndb_text_search_results *results, - struct ndb_text_search_config *config, - struct ndb_filter *filter) -{ - unsigned char buffer[1024], *buf; - unsigned char saved_buf[1024], *saved; - struct ndb_text_search_result *result, *last_result; - struct ndb_text_search_result candidate, last_candidate; - struct ndb_search_words search_words; - //struct ndb_text_search_key search_key; - struct ndb_word *search_word; - struct ndb_note *note; - struct cursor cur; - uint64_t since, until, timestamp_op, *pint; - size_t note_size; - ndb_text_search_key_order_fn key_order_fn; - MDB_dbi text_db; - MDB_cursor *cursor; - MDB_val k, v; - int i, j, keysize, saved_size, limit; - MDB_cursor_op op, order_op; - - note_size = 0; - note = 0; - saved = NULL; - ndb_text_search_results_init(results); - ndb_search_words_init(&search_words); - - until = UINT64_MAX; - since = 0; - limit = MAX_TEXT_SEARCH_RESULTS; - - // until, since from filter - if (filter != NULL) { - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_UNTIL))) - until = *pint; - - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_SINCE))) - since = *pint; - - if ((pint = ndb_filter_get_int(filter, NDB_FILTER_LIMIT))) - limit = *pint; - } - - order_op = MDB_PREV; - key_order_fn = ndb_make_text_search_key_high; - timestamp_op = until; - if (config) { - if (config->order == NDB_ORDER_ASCENDING) { - order_op = MDB_NEXT; - // set the min timestamp value to since when ascending - timestamp_op = since; - key_order_fn = ndb_make_text_search_key_low; - } - limit = min(limit, config->limit); - } - // end search config - - text_db = txn->lmdb->dbs[NDB_DB_NOTE_TEXT]; - make_cursor((unsigned char *)query, (unsigned char *)query + strlen(query), &cur); - - ndb_parse_words(&cur, &search_words, ndb_parse_search_words); - if (search_words.num_words == 0) - return 0; - - if ((i = mdb_cursor_open(txn->mdb_txn, text_db, &cursor))) { - fprintf(stderr, "nd_text_search: mdb_cursor_open failed, error %d\n", i); - return 0; - } - - // This should complete the query quicker because the larger words are - // likely to have fewer entries in the search index. This is not always - // true. Words with higher frequency (like bitcoin on nostr in 2024) - // may be slower. TODO: Skip word recursion by leveraging a minimal - // perfect hashmap of parsed words on a note - sort_largest_to_smallest(&search_words); - - // for each word, we recursively find all of the submatches - while (results->num_results < limit) { - last_result = NULL; - result = &results->results[results->num_results]; - - // if we have saved, then we continue from the last root search - // sequence - if (saved) { - buf = saved_buf; - saved = NULL; - keysize = saved_size; - - k.mv_data = buf; - k.mv_size = saved_size; - - // reposition the cursor so we can continue - if (mdb_cursor_get(cursor, &k, &v, MDB_SET_RANGE)) - break; - - op = order_op; - } else { - // construct a packed fulltext search key using this - // word. This key doesn't contain any timestamp or index - // info, so it should range match instead of exact - // match - if (!key_order_fn(buffer, sizeof(buffer), - search_words.words[0].word_len, - search_words.words[0].word, - timestamp_op, - &keysize)) - { - // word is too big to fit in 1024-sized key - continue; - } - - buf = buffer; - op = MDB_SET_RANGE; - } - - for (j = 0; j < search_words.num_words; j++) { - search_word = &search_words.words[j]; - - // shouldn't happen but let's be defensive a bit - if (search_word->word_len == 0) - continue; - - // if we already matched a note in this phrase, make - // sure we're including the note id in the query - if (last_result) { - // we are narrowing down a search. - // if we already have this note id, just continue - for (i = 0; i < results->num_results; i++) { - if (results->results[i].key.note_id == last_result->key.note_id) - // we can't break here to - // leave the word loop so - // have to use a goto - goto cont; - } - - if (!ndb_make_noted_text_search_key( - buffer, sizeof(buffer), - search_word->word_len, - search_word->word, - last_result->key.timestamp, - last_result->key.note_id, - &keysize)) - { - continue; - } - - buf = buffer; - } - - k.mv_data = buf; - k.mv_size = keysize; - - // TODO: we can speed this up with the minimal perfect - // hashmap by quickly rejecting the remaining words - // by looking in the word hashmap on the note. This - // would allow us to skip the recursive word lookup - // thing - if (!ndb_text_search_next_word(cursor, op, &k, - search_word, - last_result, - &candidate, - order_op)) { - // we didn't find a match for this note_id - if (j == 0) - // if we're at one of the root words, - // this means that there are no further - // root word matches for any note, so - // we know we're done - goto done; - else - break; - } - - *result = candidate; - op = MDB_SET_RANGE; - - // save the first key match, since we will continue from - // this on the next root word result - if (j == 0) { - if (!saved) { - memcpy(saved_buf, k.mv_data, k.mv_size); - saved = saved_buf; - saved_size = k.mv_size; - } - - // since we will be trying to match the same - // note_id on all subsequent word matches, - // let's lookup this note and make sure it - // matches the filter if we have one. If it - // doesn't match, we can quickly skip the - // remaining word queries - if (filter) { - if ((note = ndb_get_note_by_key(txn, - result->key.note_id, - ¬e_size))) - { - if (!ndb_filter_matches(filter, note)) { - break; - } - result->note = note; - result->note_size = note_size; - } - } - } - - result->note = note; - result->note_size = note_size; - last_candidate = *result; - last_result = &last_candidate; - } - - // we matched all of the queries! - if (j == search_words.num_words) { - results->num_results++; - } - -cont: - ; - } - -done: - mdb_cursor_close(cursor); - - return 1; -} - -int ndb_text_search(struct ndb_txn *txn, const char *query, - struct ndb_text_search_results *results, - struct ndb_text_search_config *config) -{ - return ndb_text_search_with(txn, query, results, config, NULL); -} - -static void ndb_write_blocks(struct ndb_txn *txn, uint64_t note_key, - struct ndb_blocks *blocks) -{ - int rc; - MDB_val key, val; - - // make sure we're not writing the owned flag to the db - blocks->flags &= ~NDB_BLOCK_FLAG_OWNED; - - key.mv_data = ¬e_key; - key.mv_size = sizeof(note_key); - val.mv_data = blocks; - val.mv_size = ndb_blocks_total_size(blocks); - assert((val.mv_size % 8) == 0); - - if ((rc = mdb_put(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_BLOCKS], &key, &val, 0))) { - ndb_debug("write version to note_blocks failed: %s\n", - mdb_strerror(rc)); - return; - } -} - -static int ndb_write_new_blocks(struct ndb_txn *txn, struct ndb_note *note, - uint64_t note_key, unsigned char *scratch, - size_t scratch_size) -{ - size_t content_len; - const char *content; - struct ndb_blocks *blocks; - - content_len = ndb_note_content_length(note); - content = ndb_note_content(note); - - if (!ndb_parse_content(scratch, scratch_size, content, content_len, &blocks)) { - //ndb_debug("failed to parse content '%.*s'\n", content_len, content); - return 0; - } - - ndb_write_blocks(txn, note_key, blocks); - return 1; -} - -static uint64_t ndb_write_note(struct ndb_txn *txn, - struct ndb_writer_note *note, - unsigned char *scratch, size_t scratch_size, - uint32_t ndb_flags) -{ - int rc; - uint64_t note_key, kind; - struct ndb_relay_kind_key relay_key; - MDB_dbi note_db; - MDB_val key, val; - - kind = note->note->kind; - - // let's quickly sanity check if we already have this note - if ((note_key = ndb_get_notekey_by_id(txn, note->note->id))) { - if (ndb_relay_kind_key_init(&relay_key, note_key, kind, ndb_note_created_at(note->note), note->relay)) - ndb_write_note_relay_indexes(txn, &relay_key); - return 0; - } - - // get dbs - note_db = txn->lmdb->dbs[NDB_DB_NOTE]; - - // get new key - note_key = ndb_get_last_key(txn->mdb_txn, note_db) + 1; - - // write note to event store - key.mv_data = ¬e_key; - key.mv_size = sizeof(note_key); - val.mv_data = note->note; - val.mv_size = note->note_len; - - if ((rc = mdb_put(txn->mdb_txn, note_db, &key, &val, 0))) { - ndb_debug("write note to db failed: %s\n", mdb_strerror(rc)); - return 0; - } - - ndb_write_note_id_index(txn, note->note, note_key); - ndb_write_note_kind_index(txn, note->note, note_key); - ndb_write_note_tag_index(txn, note->note, note_key); - ndb_write_note_pubkey_index(txn, note->note, note_key); - ndb_write_note_pubkey_kind_index(txn, note->note, note_key); - - if (ndb_relay_kind_key_init(&relay_key, note_key, kind, ndb_note_created_at(note->note), note->relay)) - ndb_write_note_relay_indexes(txn, &relay_key); - - // only parse content and do fulltext index on text and longform notes - if (kind == 1 || kind == 30023) { - if (!ndb_flag_set(ndb_flags, NDB_FLAG_NO_FULLTEXT)) { - if (!ndb_write_note_fulltext_index(txn, note->note, note_key)) - return 0; - } - - // write note blocks - if (!ndb_flag_set(ndb_flags, NDB_FLAG_NO_NOTE_BLOCKS)) { - ndb_write_new_blocks(txn, note->note, note_key, scratch, scratch_size); - } - } else if (kind == 7 && !ndb_flag_set(ndb_flags, NDB_FLAG_NO_STATS)) { - ndb_write_reaction_stats(txn, note->note); - } - - return note_key; -} - -static void ndb_monitor_lock(struct ndb_monitor *mon) { - pthread_mutex_lock(&mon->mutex); -} - -static void ndb_monitor_unlock(struct ndb_monitor *mon) { - pthread_mutex_unlock(&mon->mutex); -} - -struct written_note { - uint64_t note_id; - struct ndb_writer_note *note; -}; - -// When the data has been committed to the database, take all of the written -// notes, check them against subscriptions, and then write to the subscription -// inbox for all matching notes -static void ndb_notify_subscriptions(struct ndb_monitor *monitor, - struct written_note *wrote, int num_notes) -{ - int i, k; - int pushed; - struct written_note *written; - struct ndb_note *note; - struct ndb_subscription *sub; - - ndb_monitor_lock(monitor); - - for (i = 0; i < monitor->num_subscriptions; i++) { - sub = &monitor->subscriptions[i]; - ndb_debug("checking subscription %d, %d notes\n", i, num_notes); - - pushed = 0; - for (k = 0; k < num_notes; k++) { - written = &wrote[k]; - note = written->note->note; - - if (ndb_filter_group_matches(&sub->group, note)) { - ndb_debug("pushing note\n"); - - if (!prot_queue_push(&sub->inbox, &written->note_id)) { - ndb_debug("couldn't push note to subscriber"); - } else { - pushed++; - } - } else { - ndb_debug("not pushing note\n"); - } - } - - // After pushing all of the matching notes, check to see if we - // have a registered subscription callback. If so, we call it. - // The callback needs to call ndb_poll_for_notes to pull data - // that was just pushed to the queue in the for loop above. - if (monitor->sub_cb != NULL && pushed > 0) { - monitor->sub_cb(monitor->sub_cb_ctx, sub->subid); - } - } - - ndb_monitor_unlock(monitor); -} - -uint64_t ndb_write_note_and_profile( - struct ndb_txn *txn, - struct ndb_writer_profile *profile, - unsigned char *scratch, - size_t scratch_size, - uint32_t ndb_flags) -{ - uint64_t note_nkey; - - note_nkey = ndb_write_note(txn, &profile->note, scratch, scratch_size, ndb_flags); - - if (profile->record.builder) { - // only write if parsing didn't fail - ndb_write_profile(txn, profile, note_nkey); - } - - return note_nkey; -} - -// only to be called from the writer thread -static int ndb_write_version(struct ndb_txn *txn, uint64_t version) -{ - int rc; - MDB_val key, val; - uint64_t version_key; - - version_key = NDB_META_KEY_VERSION; - - key.mv_data = &version_key; - key.mv_size = sizeof(version_key); - val.mv_data = &version; - val.mv_size = sizeof(version); - - if ((rc = mdb_put(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NDB_META], &key, &val, 0))) { - ndb_debug("write version to ndb_meta failed: %s\n", - mdb_strerror(rc)); - return 0; - } - - //fprintf(stderr, "writing version %" PRIu64 "\n", version); - return 1; -} - - -static int ndb_run_migrations(struct ndb_txn *txn) -{ - int64_t version, latest_version, i; - - latest_version = sizeof(MIGRATIONS) / sizeof(MIGRATIONS[0]); - - if ((version = ndb_db_version(txn)) == -1) { - ndb_debug("run_migrations: no version found, assuming new db\n"); - version = latest_version; - - // no version found. fresh db? - if (!ndb_write_version(txn, version)) { - fprintf(stderr, "run_migrations: failed writing db version"); - return 0; - } - - return 1; - } else { - ndb_debug("ndb: version %" PRIu64 " found\n", version); - } - - if (version < latest_version) - fprintf(stderr, "nostrdb: migrating v%d -> v%d\n", - (int)version, (int)latest_version); - - for (i = version; i < latest_version; i++) { - if (!MIGRATIONS[i].fn(txn)) { - fprintf(stderr, "run_migrations: migration v%d -> v%d failed\n", (int)i, (int)(i+1)); - return 0; - } - - if (!ndb_write_version(txn, i+1)) { - fprintf(stderr, "run_migrations: failed writing db version"); - return 0; - } - - version = i+1; - } - - return 1; -} - - -static void *ndb_writer_thread(void *data) -{ - ndb_debug("started writer thread\n"); - struct ndb_writer *writer = data; - struct ndb_writer_msg msgs[THREAD_QUEUE_BATCH], *msg; - struct written_note written_notes[THREAD_QUEUE_BATCH]; - int i, popped, done, needs_commit, num_notes; - uint64_t note_nkey; - struct ndb_txn txn; - unsigned char *scratch; - struct ndb_relay_kind_key relay_key; - - // 2MB scratch buffer for parsing note content - scratch = malloc(writer->scratch_size); - MDB_txn *mdb_txn = NULL; - ndb_txn_from_mdb(&txn, writer->lmdb, mdb_txn); - - done = 0; - while (!done) { - txn.mdb_txn = NULL; - num_notes = 0; - ndb_debug("writer waiting for items\n"); - popped = prot_queue_pop_all(&writer->inbox, msgs, THREAD_QUEUE_BATCH); - ndb_debug("writer popped %d items\n", popped); - - needs_commit = 0; - for (i = 0 ; i < popped; i++) { - msg = &msgs[i]; - switch (msg->type) { - case NDB_WRITER_NOTE: needs_commit = 1; break; - case NDB_WRITER_PROFILE: needs_commit = 1; break; - case NDB_WRITER_DBMETA: needs_commit = 1; break; - case NDB_WRITER_PROFILE_LAST_FETCH: needs_commit = 1; break; - case NDB_WRITER_BLOCKS: needs_commit = 1; break; - case NDB_WRITER_MIGRATE: needs_commit = 1; break; - case NDB_WRITER_NOTE_RELAY: needs_commit = 1; break; - case NDB_WRITER_QUIT: break; - } - } - - if (needs_commit && mdb_txn_begin(txn.lmdb->env, NULL, 0, (MDB_txn **)&txn.mdb_txn)) - { - fprintf(stderr, "writer thread txn_begin failed"); - // should definitely not happen unless DB is full - // or something ? - continue; - } - - for (i = 0; i < popped; i++) { - msg = &msgs[i]; - - switch (msg->type) { - case NDB_WRITER_QUIT: - // quits are handled before this - ndb_debug("writer thread got quit message\n"); - done = 1; - continue; - case NDB_WRITER_PROFILE: - note_nkey = - ndb_write_note_and_profile( - &txn, - &msg->profile, - scratch, - writer->scratch_size, - writer->ndb_flags); - - if (note_nkey > 0) { - written_notes[num_notes++] = - (struct written_note){ - .note_id = note_nkey, - .note = &msg->profile.note, - }; - } else { - ndb_debug("failed to write note\n"); - } - break; - case NDB_WRITER_NOTE: - note_nkey = ndb_write_note(&txn, &msg->note, - scratch, - writer->scratch_size, - writer->ndb_flags); - - if (note_nkey > 0) { - written_notes[num_notes++] = (struct written_note){ - .note_id = note_nkey, - .note = &msg->note, - }; - } - break; - case NDB_WRITER_NOTE_RELAY: - if (ndb_relay_kind_key_init(&relay_key, - msg->note_relay.note_key, - msg->note_relay.kind, - msg->note_relay.created_at, - msg->note_relay.relay)) - { - ndb_write_note_relay_indexes(&txn, &relay_key); - } - break; - case NDB_WRITER_DBMETA: - ndb_write_version(&txn, msg->ndb_meta.version); - break; - case NDB_WRITER_BLOCKS: - ndb_write_blocks(&txn, msg->blocks.note_key, - msg->blocks.blocks); - break; - case NDB_WRITER_MIGRATE: - if (!ndb_run_migrations(&txn)) { - mdb_txn_abort(txn.mdb_txn); - goto bail; - } - break; - case NDB_WRITER_PROFILE_LAST_FETCH: - ndb_writer_last_profile_fetch(&txn, - msg->last_fetch.pubkey, - msg->last_fetch.fetched_at - ); - break; - } - } - - // commit writes - if (needs_commit) { - if (!ndb_end_query(&txn)) { - ndb_debug("writer thread txn commit failed\n"); - } else { - ndb_debug("notifying subscriptions, %d notes\n", num_notes); - ndb_notify_subscriptions(writer->monitor, - written_notes, - num_notes); - // update subscriptions - } - } - - // free notes - for (i = 0; i < popped; i++) { - msg = &msgs[i]; - if (msg->type == NDB_WRITER_NOTE) { - free(msg->note.note); - if (msg->note.relay) - free((void*)msg->note.relay); - } else if (msg->type == NDB_WRITER_PROFILE) { - free(msg->profile.note.note); - ndb_profile_record_builder_free(&msg->profile.record); - } else if (msg->type == NDB_WRITER_BLOCKS) { - ndb_blocks_free(msg->blocks.blocks); - } else if (msg->type == NDB_WRITER_NOTE_RELAY) { - free((void*)msg->note_relay.relay); - } - } - } - -bail: - free(scratch); - ndb_debug("quitting writer thread\n"); - return NULL; -} - -static void *ndb_ingester_thread(void *data) -{ - secp256k1_context *ctx; - struct thread *thread = data; - struct ndb_ingester *ingester = (struct ndb_ingester *)thread->ctx; - struct ndb_lmdb *lmdb = ingester->lmdb; - struct ndb_ingester_msg msgs[THREAD_QUEUE_BATCH], *msg; - struct ndb_writer_msg outs[THREAD_QUEUE_BATCH], *out; - int i, to_write, popped, done, any_event; - MDB_txn *read_txn = NULL; - unsigned char *scratch; - int rc; - - // this is used in note verification and anything else that - // needs a temporary buffer - scratch = malloc(ingester->scratch_size); - - ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY); - //ndb_debug("started ingester thread\n"); - - done = 0; - while (!done) { - to_write = 0; - any_event = 0; - - popped = prot_queue_pop_all(&thread->inbox, msgs, THREAD_QUEUE_BATCH); - ndb_debug("ingester popped %d items\n", popped); - - for (i = 0; i < popped; i++) { - msg = &msgs[i]; - if (msg->type == NDB_INGEST_EVENT) { - any_event = 1; - break; - } - } - - if (any_event && (rc = mdb_txn_begin(lmdb->env, NULL, MDB_RDONLY, &read_txn))) { - // this is bad - fprintf(stderr, "UNUSUAL ndb_ingester: mdb_txn_begin failed: '%s'\n", - mdb_strerror(rc)); - continue; - } - - for (i = 0; i < popped; i++) { - msg = &msgs[i]; - switch (msg->type) { - case NDB_INGEST_QUIT: - done = 1; - break; - - case NDB_INGEST_EVENT: - out = &outs[to_write]; - if (ndb_ingester_process_event(ctx, ingester, - &msg->event, out, - scratch, - read_txn)) { - to_write++; - } - } - } - - if (any_event) - mdb_txn_abort(read_txn); - - if (to_write > 0) { - ndb_debug("pushing %d events to write queue\n", to_write); - if (!prot_queue_push_all(ingester->writer_inbox, outs, to_write)) { - ndb_debug("failed pushing %d events to write queue\n", to_write); - } - } - } - - ndb_debug("quitting ingester thread\n"); - secp256k1_context_destroy(ctx); - free(scratch); - return NULL; -} - - -static int ndb_writer_init(struct ndb_writer *writer, struct ndb_lmdb *lmdb, - struct ndb_monitor *monitor, uint32_t ndb_flags, - int scratch_size) -{ - writer->lmdb = lmdb; - writer->monitor = monitor; - writer->ndb_flags = ndb_flags; - writer->scratch_size = scratch_size; - writer->queue_buflen = sizeof(struct ndb_writer_msg) * DEFAULT_QUEUE_SIZE; - writer->queue_buf = malloc(writer->queue_buflen); - if (writer->queue_buf == NULL) { - fprintf(stderr, "ndb: failed to allocate space for writer queue"); - return 0; - } - - // init the writer queue. - prot_queue_init(&writer->inbox, writer->queue_buf, - writer->queue_buflen, sizeof(struct ndb_writer_msg)); - - // spin up the writer thread - if (THREAD_CREATE(writer->thread_id, ndb_writer_thread, writer)) - { - fprintf(stderr, "ndb writer thread failed to create\n"); - return 0; - } - - return 1; -} - -// initialize the ingester queue and then spawn the thread -static int ndb_ingester_init(struct ndb_ingester *ingester, - struct ndb_lmdb *lmdb, - struct prot_queue *writer_inbox, - int scratch_size, - const struct ndb_config *config) -{ - int elem_size, num_elems; - static struct ndb_ingester_msg quit_msg = { .type = NDB_INGEST_QUIT }; - - // TODO: configurable queue sizes - elem_size = sizeof(struct ndb_ingester_msg); - num_elems = DEFAULT_QUEUE_SIZE; - - ingester->scratch_size = scratch_size; - ingester->writer_inbox = writer_inbox; - ingester->lmdb = lmdb; - ingester->flags = config->flags; - ingester->filter = config->ingest_filter; - ingester->filter_context = config->filter_context; - - if (!threadpool_init(&ingester->tp, config->ingester_threads, - elem_size, num_elems, &quit_msg, ingester, - ndb_ingester_thread)) - { - fprintf(stderr, "ndb ingester threadpool failed to init\n"); - return 0; - } - - return 1; -} - -static int ndb_writer_destroy(struct ndb_writer *writer) -{ - struct ndb_writer_msg msg; - - // kill thread - msg.type = NDB_WRITER_QUIT; - ndb_debug("writer: pushing quit message\n"); - if (!prot_queue_push(&writer->inbox, &msg)) { - // queue is too full to push quit message. just kill it. - ndb_debug("writer: terminating thread\n"); - THREAD_TERMINATE(writer->thread_id); - } else { - ndb_debug("writer: joining thread\n"); - THREAD_FINISH(writer->thread_id); - } - - // cleanup - ndb_debug("writer: cleaning up protected queue\n"); - prot_queue_destroy(&writer->inbox); - - free(writer->queue_buf); - - return 1; -} - -static int ndb_ingester_destroy(struct ndb_ingester *ingester) -{ - threadpool_destroy(&ingester->tp); - return 1; -} - -static int ndb_init_lmdb(const char *filename, struct ndb_lmdb *lmdb, size_t mapsize) -{ - int rc; - MDB_txn *txn; - - if ((rc = mdb_env_create(&lmdb->env))) { - fprintf(stderr, "mdb_env_create failed, error %d\n", rc); - return 0; - } - - if ((rc = mdb_env_set_mapsize(lmdb->env, mapsize))) { - fprintf(stderr, "mdb_env_set_mapsize failed, error %d\n", rc); - return 0; - } - - if ((rc = mdb_env_set_maxdbs(lmdb->env, NDB_DBS))) { - fprintf(stderr, "mdb_env_set_maxdbs failed, error %d\n", rc); - return 0; - } - - if ((rc = mdb_env_open(lmdb->env, filename, 0, 0664))) { - fprintf(stderr, "mdb_env_open failed, error %d\n", rc); - return 0; - } - - // Initialize DBs - if ((rc = mdb_txn_begin(lmdb->env, NULL, 0, &txn))) { - fprintf(stderr, "mdb_txn_begin failed, error %d\n", rc); - return 0; - } - - // note flatbuffer db - if ((rc = mdb_dbi_open(txn, "note", MDB_CREATE | MDB_INTEGERKEY, &lmdb->dbs[NDB_DB_NOTE]))) { - fprintf(stderr, "mdb_dbi_open event failed, error %d\n", rc); - return 0; - } - - // note metadata db - if ((rc = mdb_dbi_open(txn, "meta", MDB_CREATE, &lmdb->dbs[NDB_DB_META]))) { - fprintf(stderr, "mdb_dbi_open meta failed, error %d\n", rc); - return 0; - } - - // profile flatbuffer db - if ((rc = mdb_dbi_open(txn, "profile", MDB_CREATE | MDB_INTEGERKEY, &lmdb->dbs[NDB_DB_PROFILE]))) { - fprintf(stderr, "mdb_dbi_open profile failed, error %d\n", rc); - return 0; - } - - // profile search db - if ((rc = mdb_dbi_open(txn, "profile_search", MDB_CREATE, &lmdb->dbs[NDB_DB_PROFILE_SEARCH]))) { - fprintf(stderr, "mdb_dbi_open profile_search failed, error %d\n", rc); - return 0; - } - mdb_set_compare(txn, lmdb->dbs[NDB_DB_PROFILE_SEARCH], ndb_search_key_cmp); - - // ndb metadata (db version, etc) - if ((rc = mdb_dbi_open(txn, "ndb_meta", MDB_CREATE | MDB_INTEGERKEY, &lmdb->dbs[NDB_DB_NDB_META]))) { - fprintf(stderr, "mdb_dbi_open ndb_meta failed, error %d\n", rc); - return 0; - } - - // profile last fetches - if ((rc = mdb_dbi_open(txn, "profile_last_fetch", MDB_CREATE, &lmdb->dbs[NDB_DB_PROFILE_LAST_FETCH]))) { - fprintf(stderr, "mdb_dbi_open profile last fetch, error %d\n", rc); - return 0; - } - - // relay kind index. maps primary keys to relay records - // see ndb_relay_kind_cmp function for more details on the key format - if ((rc = mdb_dbi_open(txn, "relay_kind", MDB_CREATE, &lmdb->dbs[NDB_DB_NOTE_RELAY_KIND]))) { - fprintf(stderr, "mdb_dbi_open profile last fetch, error %d\n", rc); - return 0; - } - mdb_set_compare(txn, lmdb->dbs[NDB_DB_NOTE_RELAY_KIND], ndb_relay_kind_cmp); - - // note_id -> relay index - if ((rc = mdb_dbi_open(txn, "note_relays", MDB_CREATE | MDB_DUPSORT, &lmdb->dbs[NDB_DB_NOTE_RELAYS]))) { - fprintf(stderr, "mdb_dbi_open profile last fetch, error %d\n", rc); - return 0; - } - - // id+ts index flags - unsigned int tsid_flags = MDB_CREATE | MDB_DUPSORT | MDB_DUPFIXED; - - // index dbs - if ((rc = mdb_dbi_open(txn, "note_id", tsid_flags, &lmdb->dbs[NDB_DB_NOTE_ID]))) { - fprintf(stderr, "mdb_dbi_open id failed: %s\n", mdb_strerror(rc)); - return 0; - } - mdb_set_compare(txn, lmdb->dbs[NDB_DB_NOTE_ID], ndb_tsid_compare); - - if ((rc = mdb_dbi_open(txn, "profile_pk", tsid_flags, &lmdb->dbs[NDB_DB_PROFILE_PK]))) { - fprintf(stderr, "mdb_dbi_open profile_pk failed: %s\n", mdb_strerror(rc)); - return 0; - } - mdb_set_compare(txn, lmdb->dbs[NDB_DB_PROFILE_PK], ndb_tsid_compare); - - if ((rc = mdb_dbi_open(txn, "note_kind", - MDB_CREATE | MDB_DUPSORT | MDB_INTEGERDUP | MDB_DUPFIXED, - &lmdb->dbs[NDB_DB_NOTE_KIND]))) { - fprintf(stderr, "mdb_dbi_open note_kind failed: %s\n", mdb_strerror(rc)); - return 0; - } - mdb_set_compare(txn, lmdb->dbs[NDB_DB_NOTE_KIND], ndb_u64_ts_compare); - - if ((rc = mdb_dbi_open(txn, "note_pubkey", - MDB_CREATE | MDB_DUPSORT | MDB_INTEGERDUP | MDB_DUPFIXED, - &lmdb->dbs[NDB_DB_NOTE_PUBKEY]))) { - fprintf(stderr, "mdb_dbi_open note_pubkey failed: %s\n", mdb_strerror(rc)); - return 0; - } - mdb_set_compare(txn, lmdb->dbs[NDB_DB_NOTE_PUBKEY], ndb_tsid_compare); - - if ((rc = mdb_dbi_open(txn, "note_pubkey_kind", - MDB_CREATE | MDB_DUPSORT | MDB_INTEGERDUP | MDB_DUPFIXED, - &lmdb->dbs[NDB_DB_NOTE_PUBKEY_KIND]))) { - fprintf(stderr, "mdb_dbi_open note_pubkey_kind failed: %s\n", mdb_strerror(rc)); - return 0; - } - mdb_set_compare(txn, lmdb->dbs[NDB_DB_NOTE_PUBKEY_KIND], ndb_id_u64_ts_compare); - - if ((rc = mdb_dbi_open(txn, "note_text", MDB_CREATE | MDB_DUPSORT, - &lmdb->dbs[NDB_DB_NOTE_TEXT]))) { - fprintf(stderr, "mdb_dbi_open note_text failed: %s\n", mdb_strerror(rc)); - return 0; - } - mdb_set_compare(txn, lmdb->dbs[NDB_DB_NOTE_TEXT], ndb_text_search_key_compare); - - if ((rc = mdb_dbi_open(txn, "note_blocks", MDB_CREATE | MDB_INTEGERKEY, - &lmdb->dbs[NDB_DB_NOTE_BLOCKS]))) { - fprintf(stderr, "mdb_dbi_open note_blocks failed: %s\n", mdb_strerror(rc)); - return 0; - } - - if ((rc = mdb_dbi_open(txn, "note_tags", MDB_CREATE | MDB_DUPSORT | MDB_DUPFIXED, - &lmdb->dbs[NDB_DB_NOTE_TAGS]))) { - fprintf(stderr, "mdb_dbi_open note_tags failed: %s\n", mdb_strerror(rc)); - return 0; - } - mdb_set_compare(txn, lmdb->dbs[NDB_DB_NOTE_TAGS], ndb_tag_key_compare); - - // Commit the transaction - if ((rc = mdb_txn_commit(txn))) { - fprintf(stderr, "mdb_txn_commit failed, error %d\n", rc); - return 0; - } - - return 1; -} - -static int ndb_queue_write_version(struct ndb *ndb, uint64_t version) -{ - struct ndb_writer_msg msg; - msg.type = NDB_WRITER_DBMETA; - msg.ndb_meta.version = version; - return ndb_writer_queue_msg(&ndb->writer, &msg); -} - -static void ndb_monitor_init(struct ndb_monitor *monitor, ndb_sub_fn cb, - void *sub_cb_ctx) -{ - monitor->num_subscriptions = 0; - monitor->sub_cb = cb; - monitor->sub_cb_ctx = sub_cb_ctx; - pthread_mutex_init(&monitor->mutex, NULL); -} - -void ndb_filter_group_destroy(struct ndb_filter_group *group) -{ - struct ndb_filter *filter; - int i; - for (i = 0; i < group->num_filters; i++) { - filter = &group->filters[i]; - ndb_filter_destroy(filter); - } -} - -static void ndb_subscription_destroy(struct ndb_subscription *sub) -{ - ndb_filter_group_destroy(&sub->group); - // this was malloc'd inside ndb_subscribe - free(sub->inbox.buf); - prot_queue_destroy(&sub->inbox); - sub->subid = 0; -} - -static void ndb_monitor_destroy(struct ndb_monitor *monitor) -{ - int i; - - ndb_monitor_lock(monitor); - - for (i = 0; i < monitor->num_subscriptions; i++) { - ndb_subscription_destroy(&monitor->subscriptions[i]); - } - - monitor->num_subscriptions = 0; - - ndb_monitor_unlock(monitor); - - pthread_mutex_destroy(&monitor->mutex); -} - -int ndb_init(struct ndb **pndb, const char *filename, const struct ndb_config *config) -{ - struct ndb *ndb; - //MDB_dbi ind_id; // TODO: ind_pk, etc - - ndb = *pndb = calloc(1, sizeof(struct ndb)); - ndb->flags = config->flags; - - if (ndb == NULL) { - fprintf(stderr, "ndb_init: malloc failed\n"); - return 0; - } - - if (!ndb_init_lmdb(filename, &ndb->lmdb, config->mapsize)) - return 0; - - ndb_monitor_init(&ndb->monitor, config->sub_cb, config->sub_cb_ctx); - - if (!ndb_writer_init(&ndb->writer, &ndb->lmdb, &ndb->monitor, ndb->flags, - config->writer_scratch_buffer_size)) { - fprintf(stderr, "ndb_writer_init failed\n"); - return 0; - } - - if (!ndb_ingester_init(&ndb->ingester, &ndb->lmdb, &ndb->writer.inbox, - config->writer_scratch_buffer_size, config)) { - fprintf(stderr, "failed to initialize %d ingester thread(s)\n", - config->ingester_threads); - return 0; - } - - if (!ndb_flag_set(config->flags, NDB_FLAG_NOMIGRATE)) { - struct ndb_writer_msg msg = { .type = NDB_WRITER_MIGRATE }; - ndb_writer_queue_msg(&ndb->writer, &msg); - } - - // Initialize LMDB environment and spin up threads - return 1; -} - -int ndb_snapshot(struct ndb *ndb, const char *path, unsigned int flags) { - return mdb_env_copy2(ndb->lmdb.env, path, flags); -} - -void ndb_destroy(struct ndb *ndb) -{ - if (ndb == NULL) - return; - - // ingester depends on writer and must be destroyed first - ndb_debug("destroying ingester\n"); - ndb_ingester_destroy(&ndb->ingester); - ndb_debug("destroying writer\n"); - ndb_writer_destroy(&ndb->writer); - ndb_debug("destroying monitor\n"); - ndb_monitor_destroy(&ndb->monitor); - - ndb_debug("closing env\n"); - mdb_env_close(ndb->lmdb.env); - - ndb_debug("ndb destroyed\n"); - free(ndb); -} - - -// Process a nostr event from a client -// -// ie: ["EVENT", {"content":"..."} ...] -// -// The client-sent variation of ndb_process_event -int ndb_process_client_event(struct ndb *ndb, const char *json, int len) -{ - struct ndb_ingest_meta meta; - ndb_ingest_meta_init(&meta, 1, NULL); - - return ndb_ingest_event(&ndb->ingester, json, len, &meta); -} - -// Process anostr event from a relay, -// -// ie: ["EVENT", "subid", {"content":"..."}...] -// -// This function returns as soon as possible, first copying the passed -// json and then queueing it up for processing. Worker threads then take -// the json and process it. -// -// Processing: -// -// 1. The event is parsed into ndb_notes and the signature is validated -// 2. A quick lookup is made on the database to see if we already have -// the note id, if we do we don't need to waste time on json parsing -// or note validation. -// 3. Once validation is done we pass it to the writer queue for writing -// to LMDB. -// -int ndb_process_event(struct ndb *ndb, const char *json, int json_len) -{ - struct ndb_ingest_meta meta; - ndb_ingest_meta_init(&meta, 0, NULL); - - return ndb_ingest_event(&ndb->ingester, json, json_len, &meta); -} - -int ndb_process_event_with(struct ndb *ndb, const char *json, int json_len, - struct ndb_ingest_meta *meta) -{ - return ndb_ingest_event(&ndb->ingester, json, json_len, meta); -} - -int _ndb_process_events(struct ndb *ndb, const char *ldjson, size_t json_len, - struct ndb_ingest_meta *meta) -{ - const char *start, *end, *very_end; - start = ldjson; - end = start + json_len; - very_end = ldjson + json_len; -#if DEBUG - int processed = 0; -#endif - - while ((end = fast_strchr(start, '\n', very_end - start))) { - //printf("processing '%.*s'\n", (int)(end-start), start); - if (!ndb_process_event_with(ndb, start, end - start, meta)) { - ndb_debug("ndb_process_client_event failed\n"); - return 0; - } - start = end + 1; -#if DEBUG - processed++; -#endif - } - -#if DEBUG - ndb_debug("ndb_process_events: processed %d events\n", processed); -#endif - - return 1; -} - -#ifndef _WIN32 -// TODO: windows -int ndb_process_events_stream(struct ndb *ndb, FILE* fp) -{ - char *line = NULL; - size_t len = 0; - ssize_t nread; - - while ((nread = getline(&line, &len, fp)) != -1) { - if (line == NULL) - break; - ndb_process_event(ndb, line, len); - } - - if (line) - free(line); - - return 1; -} -#endif - -int ndb_process_events_with(struct ndb *ndb, const char *ldjson, size_t json_len, - struct ndb_ingest_meta *meta) -{ - return _ndb_process_events(ndb, ldjson, json_len, meta); -} - -int ndb_process_client_events(struct ndb *ndb, const char *ldjson, size_t json_len) -{ - struct ndb_ingest_meta meta; - ndb_ingest_meta_init(&meta, 1, NULL); - - return _ndb_process_events(ndb, ldjson, json_len, &meta); -} - -int ndb_process_events(struct ndb *ndb, const char *ldjson, size_t json_len) -{ - struct ndb_ingest_meta meta; - ndb_ingest_meta_init(&meta, 0, NULL); - - return _ndb_process_events(ndb, ldjson, json_len, &meta); -} - -static inline int cursor_push_tag(struct cursor *cur, struct ndb_tag *tag) -{ - return cursor_push_u16(cur, tag->count); -} - -int ndb_builder_init(struct ndb_builder *builder, unsigned char *buf, - size_t bufsize) -{ - struct ndb_note *note; - int half, size, str_indices_size; - - // come on bruh - if (bufsize < sizeof(struct ndb_note) * 2) - return 0; - - str_indices_size = bufsize / 32; - size = bufsize - str_indices_size; - half = size / 2; - - //debug("size %d half %d str_indices %d\n", size, half, str_indices_size); - - // make a safe cursor of our available memory - make_cursor(buf, buf + bufsize, &builder->mem); - - note = builder->note = (struct ndb_note *)buf; - - // take slices of the memory into subcursors - if (!(cursor_slice(&builder->mem, &builder->note_cur, half) && - cursor_slice(&builder->mem, &builder->strings, half) && - cursor_slice(&builder->mem, &builder->str_indices, str_indices_size))) { - return 0; - } - - memset(note, 0, sizeof(*note)); - builder->note_cur.p += sizeof(*note); - - note->strings = builder->strings.start - buf; - note->version = 1; - - return 1; -} - - - -static inline int ndb_json_parser_init(struct ndb_json_parser *p, - const char *json, int json_len, - unsigned char *buf, int bufsize) -{ - int half = bufsize / 2; - - unsigned char *tok_start = buf + half; - unsigned char *tok_end = buf + bufsize; - - p->toks = (jsmntok_t*)tok_start; - p->toks_end = (jsmntok_t*)tok_end; - p->num_tokens = 0; - p->json = json; - p->json_len = json_len; - - // ndb_builder gets the first half of the buffer, and jsmn gets the - // second half. I like this way of alloating memory (without actually - // dynamically allocating memory). You get one big chunk upfront and - // then submodules can recursively subdivide it. Maybe you could do - // something even more clever like golden-ratio style subdivision where - // the more important stuff gets a larger chunk and then it spirals - // downward into smaller chunks. Thanks for coming to my TED talk. - - if (!ndb_builder_init(&p->builder, buf, half)) - return 0; - - jsmn_init(&p->json_parser); - - return 1; -} - -static inline int ndb_json_parser_parse(struct ndb_json_parser *p, - struct ndb_id_cb *cb) -{ - jsmntok_t *tok; - int cap = ((unsigned char *)p->toks_end - (unsigned char*)p->toks)/sizeof(*p->toks); - int res = - jsmn_parse(&p->json_parser, p->json, p->json_len, p->toks, cap, cb != NULL); - - // got an ID! - if (res == -42) { - tok = &p->toks[p->json_parser.toknext-1]; - - switch (cb->fn(cb->data, p->json + tok->start)) { - case NDB_IDRES_CONT: - res = jsmn_parse(&p->json_parser, p->json, p->json_len, - p->toks, cap, 0); - break; - case NDB_IDRES_STOP: - return -42; - } - } else if (res == 0) { - return 0; - } - - p->num_tokens = res; - p->i = 0; - - return 1; -} - -static inline int toksize(jsmntok_t *tok) -{ - return tok->end - tok->start; -} - - - -static int cursor_push_unescaped_char(struct cursor *cur, char c1, char c2) -{ - switch (c2) { - case 't': return cursor_push_byte(cur, '\t'); - case 'n': return cursor_push_byte(cur, '\n'); - case 'r': return cursor_push_byte(cur, '\r'); - case 'b': return cursor_push_byte(cur, '\b'); - case 'f': return cursor_push_byte(cur, '\f'); - case '\\': return cursor_push_byte(cur, '\\'); - case '/': return cursor_push_byte(cur, '/'); - case '"': return cursor_push_byte(cur, '"'); - case 'u': - // these aren't handled yet - return 0; - default: - return cursor_push_byte(cur, c1) && cursor_push_byte(cur, c2); - } -} - -static int cursor_push_escaped_char(struct cursor *cur, char c) -{ - switch (c) { - case '"': return cursor_push_str(cur, "\\\""); - case '\\': return cursor_push_str(cur, "\\\\"); - case '\b': return cursor_push_str(cur, "\\b"); - case '\f': return cursor_push_str(cur, "\\f"); - case '\n': return cursor_push_str(cur, "\\n"); - case '\r': return cursor_push_str(cur, "\\r"); - case '\t': return cursor_push_str(cur, "\\t"); - // TODO: \u hex hex hex hex - } - return cursor_push_byte(cur, c); -} - -static int cursor_push_hex_str(struct cursor *cur, unsigned char *buf, int len) -{ - int i; - - if (len % 2 != 0) - return 0; - - if (!cursor_push_byte(cur, '"')) - return 0; - - for (i = 0; i < len; i++) { - unsigned int c = ((const unsigned char *)buf)[i]; - if (!cursor_push_byte(cur, hexchar(c >> 4))) - return 0; - if (!cursor_push_byte(cur, hexchar(c & 0xF))) - return 0; - } - - if (!cursor_push_byte(cur, '"')) - return 0; - - return 1; -} - -static int cursor_push_jsonstr(struct cursor *cur, const char *str) -{ - int i; - int len; - - len = strlen(str); - - if (!cursor_push_byte(cur, '"')) - return 0; - - for (i = 0; i < len; i++) { - if (!cursor_push_escaped_char(cur, str[i])) - return 0; - } - - if (!cursor_push_byte(cur, '"')) - return 0; - - return 1; -} - - -static inline int cursor_push_json_tag_str(struct cursor *cur, struct ndb_str str) -{ - if (str.flag == NDB_PACKED_ID) - return cursor_push_hex_str(cur, str.id, 32); - - return cursor_push_jsonstr(cur, str.str); -} - -static int cursor_push_json_tag(struct cursor *cur, struct ndb_note *note, - struct ndb_tag *tag) -{ - int i; - - if (!cursor_push_byte(cur, '[')) - return 0; - - for (i = 0; i < tag->count; i++) { - if (!cursor_push_json_tag_str(cur, ndb_tag_str(note, tag, i))) - return 0; - if (i != tag->count-1 && !cursor_push_byte(cur, ',')) - return 0; - } - - return cursor_push_byte(cur, ']'); -} - -static int cursor_push_json_tags(struct cursor *cur, struct ndb_note *note) -{ - int i; - struct ndb_iterator iter, *it = &iter; - ndb_tags_iterate_start(note, it); - - if (!cursor_push_byte(cur, '[')) - return 0; - - i = 0; - while (ndb_tags_iterate_next(it)) { - if (!cursor_push_json_tag(cur, note, it->tag)) - return 0; - if (i != note->tags.count-1 && !cursor_push_str(cur, ",")) - return 0; - i++; - } - - if (!cursor_push_byte(cur, ']')) - return 0; - - return 1; -} - -static int ndb_event_commitment(struct ndb_note *ev, unsigned char *buf, int buflen) -{ - char timebuf[16] = {0}; - char kindbuf[16] = {0}; - char pubkey[65]; - struct cursor cur; - int ok; - - if (!hex_encode(ev->pubkey, sizeof(ev->pubkey), pubkey)) - return 0; - - make_cursor(buf, buf + buflen, &cur); - - // TODO: update in 2106 ... - snprintf(timebuf, sizeof(timebuf), "%d", (uint32_t)ev->created_at); - snprintf(kindbuf, sizeof(kindbuf), "%d", ev->kind); - - ok = - cursor_push_str(&cur, "[0,\"") && - cursor_push_str(&cur, pubkey) && - cursor_push_str(&cur, "\",") && - cursor_push_str(&cur, timebuf) && - cursor_push_str(&cur, ",") && - cursor_push_str(&cur, kindbuf) && - cursor_push_str(&cur, ",") && - cursor_push_json_tags(&cur, ev) && - cursor_push_str(&cur, ",") && - cursor_push_jsonstr(&cur, ndb_note_str(ev, &ev->content).str) && - cursor_push_str(&cur, "]"); - - if (!ok) - return 0; - - return cur.p - cur.start; -} - -static int cursor_push_hex(struct cursor *c, unsigned char *bytes, int len) -{ - int i; - unsigned char chr; - if (c->p + (len * 2) >= c->end) - return 0; - - for (i = 0; i < len; i++) { - chr = bytes[i]; - - *(c->p++) = hexchar(chr >> 4); - *(c->p++) = hexchar(chr & 0xF); - } - - return 1; -} - -static int cursor_push_int_str(struct cursor *c, uint64_t num) -{ - char timebuf[16] = {0}; - snprintf(timebuf, sizeof(timebuf), "%" PRIu64, num); - return cursor_push_str(c, timebuf); -} - -int ndb_note_json(struct ndb_note *note, char *buf, int buflen) -{ - struct cursor cur, *c = &cur; - - make_cursor((unsigned char *)buf, (unsigned char*)buf + buflen, &cur); - - int ok = cursor_push_str(c, "{\"id\":\"") && - cursor_push_hex(c, ndb_note_id(note), 32) && - cursor_push_str(c, "\",\"pubkey\":\"") && - cursor_push_hex(c, ndb_note_pubkey(note), 32) && - cursor_push_str(c, "\",\"created_at\":") && - cursor_push_int_str(c, ndb_note_created_at(note)) && - cursor_push_str(c, ",\"kind\":") && - cursor_push_int_str(c, ndb_note_kind(note)) && - cursor_push_str(c, ",\"tags\":") && - cursor_push_json_tags(c, note) && - cursor_push_str(c, ",\"content\":") && - cursor_push_jsonstr(c, ndb_note_content(note)) && - cursor_push_str(c, ",\"sig\":\"") && - cursor_push_hex(c, ndb_note_sig(note), 64) && - cursor_push_c_str(c, "\"}"); - - if (!ok) { - return 0; - } - - return cur.p - cur.start; -} - -static int cursor_push_json_elem_array(struct cursor *cur, - const struct ndb_filter *filter, - struct ndb_filter_elements *elems) -{ - int i; - unsigned char *id; - const char *str; - uint64_t val; - - if (!cursor_push_byte(cur, '[')) - return 0; - - for (i = 0; i < elems->count; i++) { - - switch (elems->field.elem_type) { - case NDB_ELEMENT_CUSTOM: - // can't serialize custom functions - break; - case NDB_ELEMENT_STRING: - str = ndb_filter_get_string_element(filter, elems, i); - if (!cursor_push_jsonstr(cur, str)) - return 0; - break; - case NDB_ELEMENT_ID: - id = ndb_filter_get_id_element(filter, elems, i); - if (!cursor_push_hex_str(cur, id, 32)) - return 0; - break; - case NDB_ELEMENT_INT: - val = ndb_filter_get_int_element(elems, i); - if (!cursor_push_int_str(cur, val)) - return 0; - break; - case NDB_ELEMENT_UNKNOWN: - ndb_debug("unknown element in cursor_push_json_elem_array"); - return 0; - } - - if (i != elems->count-1) { - if (!cursor_push_byte(cur, ',')) - return 0; - } - } - - if (!cursor_push_str(cur, "]")) - return 0; - - return 1; -} - -int ndb_filter_json(const struct ndb_filter *filter, char *buf, int buflen) -{ - const char *str; - struct cursor cur, *c = &cur; - struct ndb_filter_elements *elems; - int i; - - if (!filter->finalized) { - ndb_debug("filter not finalized in ndb_filter_json\n"); - return 0; - } - - make_cursor((unsigned char *)buf, (unsigned char*)buf + buflen, c); - - if (!cursor_push_str(c, "{")) - return 0; - - for (i = 0; i < filter->num_elements; i++) { - elems = ndb_filter_get_elements(filter, i); - switch (elems->field.type) { - case NDB_FILTER_CUSTOM: - // nothing to encode these as - break; - case NDB_FILTER_IDS: - if (!cursor_push_str(c, "\"ids\":")) - return 0; - if (!cursor_push_json_elem_array(c, filter, elems)) - return 0; - break; - case NDB_FILTER_SEARCH: - if (!cursor_push_str(c, "\"search\":")) - return 0; - if (!(str = ndb_filter_get_string_element(filter, elems, 0))) - return 0; - if (!cursor_push_jsonstr(c, str)) - return 0; - break; - case NDB_FILTER_AUTHORS: - if (!cursor_push_str(c, "\"authors\":")) - return 0; - if (!cursor_push_json_elem_array(c, filter, elems)) - return 0; - break; - case NDB_FILTER_KINDS: - if (!cursor_push_str(c, "\"kinds\":")) - return 0; - if (!cursor_push_json_elem_array(c, filter, elems)) - return 0; - break; - case NDB_FILTER_TAGS: - if (!cursor_push_str(c, "\"#")) - return 0; - if (!cursor_push_byte(c, elems->field.tag)) - return 0; - if (!cursor_push_str(c, "\":")) - return 0; - if (!cursor_push_json_elem_array(c, filter, elems)) - return 0; - break; - case NDB_FILTER_SINCE: - if (!cursor_push_str(c, "\"since\":")) - return 0; - if (!cursor_push_int_str(c, ndb_filter_get_int_element(elems, 0))) - return 0; - break; - case NDB_FILTER_UNTIL: - if (!cursor_push_str(c, "\"until\":")) - return 0; - if (!cursor_push_int_str(c, ndb_filter_get_int_element(elems, 0))) - return 0; - break; - case NDB_FILTER_LIMIT: - if (!cursor_push_str(c, "\"limit\":")) - return 0; - if (!cursor_push_int_str(c, ndb_filter_get_int_element(elems, 0))) - return 0; - break; - case NDB_FILTER_RELAYS: - if (!cursor_push_str(c, "\"relays\":")) - return 0; - if (!cursor_push_json_elem_array(c, filter, elems)) - return 0; - break; - } - - if (i != filter->num_elements-1) { - if (!cursor_push_byte(c, ',')) { - return 0; - } - } - - } - - if (!cursor_push_c_str(c, "}")) - return 0; - - return cur.p - cur.start; -} - -int ndb_calculate_id(struct ndb_note *note, unsigned char *buf, int buflen, unsigned char *id) { - int len; - - if (!(len = ndb_event_commitment(note, buf, buflen))) - return 0; - - //fprintf(stderr, "%.*s\n", len, buf); - - sha256((struct sha256*)id, buf, len); - - return 1; -} - -int ndb_sign_id(struct ndb_keypair *keypair, unsigned char id[32], - unsigned char sig[64]) -{ - unsigned char aux[32]; - secp256k1_keypair *pair = (secp256k1_keypair*) keypair->pair; - - if (!fill_random(aux, sizeof(aux))) - return 0; - - secp256k1_context *ctx = - secp256k1_context_create(SECP256K1_CONTEXT_NONE); - - return secp256k1_schnorrsig_sign32(ctx, sig, id, pair, aux); -} - -int ndb_create_keypair(struct ndb_keypair *kp) -{ - secp256k1_keypair *keypair = (secp256k1_keypair*)kp->pair; - secp256k1_xonly_pubkey pubkey; - - secp256k1_context *ctx = - secp256k1_context_create(SECP256K1_CONTEXT_NONE);; - - /* Try to create a keypair with a valid context, it should only - * fail if the secret key is zero or out of range. */ - if (!secp256k1_keypair_create(ctx, keypair, kp->secret)) - return 0; - - if (!secp256k1_keypair_xonly_pub(ctx, &pubkey, NULL, keypair)) - return 0; - - /* Serialize the public key. Should always return 1 for a valid public key. */ - return secp256k1_xonly_pubkey_serialize(ctx, kp->pubkey, &pubkey); -} - -int ndb_decode_key(const char *secstr, struct ndb_keypair *keypair) -{ - if (!hex_decode(secstr, strlen(secstr), keypair->secret, 32)) { - fprintf(stderr, "could not hex decode secret key\n"); - return 0; - } - - return ndb_create_keypair(keypair); -} - -int ndb_builder_finalize(struct ndb_builder *builder, struct ndb_note **note, - struct ndb_keypair *keypair) -{ - int strings_len = builder->strings.p - builder->strings.start; - unsigned char *note_end = builder->note_cur.p + strings_len; - int total_size = note_end - builder->note_cur.start; - - // move the strings buffer next to the end of our ndb_note - memmove(builder->note_cur.p, builder->strings.start, strings_len); - - // set the strings location - builder->note->strings = builder->note_cur.p - builder->note_cur.start; - - // record the total size - //builder->note->size = total_size; - - *note = builder->note; - - // generate id and sign if we're building this manually - if (keypair) { - // use the remaining memory for building our id buffer - unsigned char *end = builder->mem.end; - unsigned char *start = (unsigned char*)(*note) + total_size; - - ndb_builder_set_pubkey(builder, keypair->pubkey); - - if (!ndb_calculate_id(builder->note, start, end - start, - builder->note->id)) - return 0; - - if (!ndb_sign_id(keypair, (*note)->id, (*note)->sig)) - return 0; - } - - // make sure we're aligned as a whole - total_size = (total_size + 7) & ~7; - assert((total_size % 8) == 0); - return total_size; -} - -struct ndb_note * ndb_builder_note(struct ndb_builder *builder) -{ - return builder->note; -} - -static union ndb_packed_str ndb_offset_str(uint32_t offset) -{ - // ensure accidents like -1 don't corrupt our packed_str - union ndb_packed_str str; - // most significant byte is reserved for ndb_packtype - str.offset = offset & 0xFFFFFF; - return str; -} - - -/// find an existing string via str_indices. these indices only exist in the -/// builder phase just for this purpose. -static inline int ndb_builder_find_str(struct ndb_builder *builder, - const char *str, int len, - union ndb_packed_str *pstr) -{ - // find existing matching string to avoid duplicate strings - int indices = cursor_count(&builder->str_indices, sizeof(uint32_t)); - for (int i = 0; i < indices; i++) { - uint32_t index = ((uint32_t*)builder->str_indices.start)[i]; - const char *some_str = (const char*)builder->strings.start + index; - - if (!memcmp(some_str, str, len) && some_str[len] == '\0') { - // found an existing matching str, use that index - *pstr = ndb_offset_str(index); - return 1; - } - } - - return 0; -} - -static int ndb_builder_push_str(struct ndb_builder *builder, const char *str, - int len, union ndb_packed_str *pstr) -{ - uint32_t loc; - - // no string found, push a new one - loc = builder->strings.p - builder->strings.start; - if (!(cursor_push(&builder->strings, (unsigned char*)str, len) && - cursor_push_byte(&builder->strings, '\0'))) { - return 0; - } - - *pstr = ndb_offset_str(loc); - - // record in builder indices. ignore return value, if we can't cache it - // then whatever - cursor_push_u32(&builder->str_indices, loc); - - return 1; -} - -static int ndb_builder_push_packed_id(struct ndb_builder *builder, - unsigned char *id, - union ndb_packed_str *pstr) -{ - // Don't both find id duplicates. very rarely are they duplicated - // and it slows things down quite a bit. If we really care about this - // We can switch to a hash table. - //if (ndb_builder_find_str(builder, (const char*)id, 32, pstr)) { - // pstr->packed.flag = NDB_PACKED_ID; - // return 1; - //} - - if (ndb_builder_push_str(builder, (const char*)id, 32, pstr)) { - pstr->packed.flag = NDB_PACKED_ID; - return 1; - } - - return 0; -} - -union ndb_packed_str ndb_chars_to_packed_str(char c1, char c2) -{ - union ndb_packed_str str; - str.packed.flag = NDB_PACKED_STR; - str.packed.str[0] = c1; - str.packed.str[1] = c2; - str.packed.str[2] = '\0'; - return str; -} - -static union ndb_packed_str ndb_char_to_packed_str(char c) -{ - union ndb_packed_str str; - str.packed.flag = NDB_PACKED_STR; - str.packed.str[0] = c; - str.packed.str[1] = '\0'; - return str; -} - - -/// Check for small strings to pack -static inline int ndb_builder_try_compact_str(struct ndb_builder *builder, - const char *str, int len, - union ndb_packed_str *pstr, - int pack_ids) -{ - unsigned char id_buf[32]; - - if (len == 0) { - *pstr = ndb_char_to_packed_str(0); - return 1; - } else if (len == 1) { - *pstr = ndb_char_to_packed_str(str[0]); - return 1; - } else if (len == 2) { - *pstr = ndb_chars_to_packed_str(str[0], str[1]); - return 1; - } else if (pack_ids && len == 64 && hex_decode(str, 64, id_buf, 32)) { - return ndb_builder_push_packed_id(builder, id_buf, pstr); - } - - return 0; -} - - -static int ndb_builder_push_unpacked_str(struct ndb_builder *builder, - const char *str, int len, - union ndb_packed_str *pstr) -{ - if (ndb_builder_find_str(builder, str, len, pstr)) - return 1; - - return ndb_builder_push_str(builder, str, len, pstr); -} - -int ndb_builder_make_str(struct ndb_builder *builder, const char *str, int len, - union ndb_packed_str *pstr, int pack_ids) -{ - if (ndb_builder_try_compact_str(builder, str, len, pstr, pack_ids)) - return 1; - - return ndb_builder_push_unpacked_str(builder, str, len, pstr); -} - -int ndb_builder_set_content(struct ndb_builder *builder, const char *content, - int len) -{ - int pack_ids = 0; - builder->note->content_length = len; - return ndb_builder_make_str(builder, content, len, - &builder->note->content, pack_ids); -} - - -static inline int jsoneq(const char *json, jsmntok_t *tok, int tok_len, - const char *s) -{ - if (tok->type == JSMN_STRING && (int)strlen(s) == tok_len && - memcmp(json + tok->start, s, tok_len) == 0) { - return 1; - } - return 0; -} - -static int ndb_builder_finalize_tag(struct ndb_builder *builder, - union ndb_packed_str offset) -{ - if (!cursor_push_u32(&builder->note_cur, offset.offset)) - return 0; - builder->current_tag->count++; - return 1; -} - -/// Unescape and push json strings -static int ndb_builder_make_json_str(struct ndb_builder *builder, - const char *str, int len, - union ndb_packed_str *pstr, - int *written, int pack_ids) -{ - // let's not care about de-duping these. we should just unescape - // in-place directly into the strings table. - if (written) - *written = len; - - const char *p, *end, *start; - unsigned char *builder_start; - - // always try compact strings first - if (ndb_builder_try_compact_str(builder, str, len, pstr, pack_ids)) - return 1; - - end = str + len; - start = str; // Initialize start to the beginning of the string - - *pstr = ndb_offset_str(builder->strings.p - builder->strings.start); - builder_start = builder->strings.p; - - for (p = str; p < end; p++) { - if (*p == '\\' && p+1 < end) { - // Push the chunk of unescaped characters before this escape sequence - if (start < p && !cursor_push(&builder->strings, - (unsigned char *)start, - p - start)) { - return 0; - } - - if (!cursor_push_unescaped_char(&builder->strings, *p, *(p+1))) - return 0; - - p++; // Skip the character following the backslash - start = p + 1; // Update the start pointer to the next character - } - } - - // Handle the last chunk after the last escape sequence (or if there are no escape sequences at all) - if (start < p && !cursor_push(&builder->strings, (unsigned char *)start, - p - start)) { - return 0; - } - - if (written) - *written = builder->strings.p - builder_start; - - // TODO: dedupe these!? - return cursor_push_byte(&builder->strings, '\0'); -} - -static int ndb_builder_push_json_tag(struct ndb_builder *builder, - const char *str, int len) -{ - union ndb_packed_str pstr; - int pack_ids = 1; - if (!ndb_builder_make_json_str(builder, str, len, &pstr, NULL, pack_ids)) - return 0; - return ndb_builder_finalize_tag(builder, pstr); -} - -// Push a json array into an ndb tag ["p", "abcd..."] -> struct ndb_tag -static int ndb_builder_tag_from_json_array(struct ndb_json_parser *p, - jsmntok_t *array) -{ - jsmntok_t *str_tok; - const char *str; - - if (array->size == 0) - return 0; - - if (!ndb_builder_new_tag(&p->builder)) - return 0; - - for (int i = 0; i < array->size; i++) { - str_tok = &array[i+1]; - str = p->json + str_tok->start; - - if (!ndb_builder_push_json_tag(&p->builder, str, - toksize(str_tok))) { - return 0; - } - } - - return 1; -} - -// Push json tags into ndb data -// [["t", "hashtag"], ["p", "abcde..."]] -> struct ndb_tags -static inline int ndb_builder_process_json_tags(struct ndb_json_parser *p, - jsmntok_t *array) -{ - jsmntok_t *tag = array; - - if (array->size == 0) - return 1; - - for (int i = 0; i < array->size; i++) { - if (!ndb_builder_tag_from_json_array(p, &tag[i+1])) - return 0; - tag += tag[i+1].size; - } - - return 1; -} - -static int parse_unsigned_int(const char *start, int len, unsigned int *num) -{ - unsigned int number = 0; - const char *p = start, *end = start + len; - int digits = 0; - - while (p < end) { - char c = *p; - - if (c < '0' || c > '9') - break; - - // Check for overflow - char digit = c - '0'; - if (number > (UINT_MAX - digit) / 10) - return 0; // Overflow detected - - number = number * 10 + digit; - - p++; - digits++; - } - - if (digits == 0) - return 0; - - *num = number; - return 1; -} - -int ndb_client_event_from_json(const char *json, int len, struct ndb_fce *fce, - unsigned char *buf, int bufsize, struct ndb_id_cb *cb) -{ - jsmntok_t *tok = NULL; - int tok_len, res; - struct ndb_json_parser parser; - struct ndb_event *ev = &fce->event; - - ndb_json_parser_init(&parser, json, len, buf, bufsize); - - if ((res = ndb_json_parser_parse(&parser, cb)) < 0) - return res; - - if (parser.toks[0].type == JSMN_OBJECT) { - ndb_debug("got raw json in client_event_from_json\n"); - fce->evtype = NDB_FCE_EVENT; - return ndb_parse_json_note(&parser, &ev->note); - } - - if (parser.num_tokens <= 3 || parser.toks[0].type != JSMN_ARRAY) - return 0; - - parser.i = 1; - tok = &parser.toks[parser.i++]; - tok_len = toksize(tok); - if (tok->type != JSMN_STRING) - return 0; - - if (tok_len == 5 && !memcmp("EVENT", json + tok->start, 5)) { - fce->evtype = NDB_FCE_EVENT; - return ndb_parse_json_note(&parser, &ev->note); - } - - return 0; -} - - -int ndb_ws_event_from_json(const char *json, int len, struct ndb_tce *tce, - unsigned char *buf, int bufsize, - struct ndb_id_cb *cb) -{ - jsmntok_t *tok = NULL; - int tok_len, res; - struct ndb_json_parser parser; - struct ndb_event *ev = &tce->event; - - tce->subid_len = 0; - tce->subid = ""; - - ndb_json_parser_init(&parser, json, len, buf, bufsize); - - if ((res = ndb_json_parser_parse(&parser, cb)) < 0) - return res; - - if (parser.toks[0].type == JSMN_OBJECT) { - ndb_debug("got raw json in ws_event_from_json\n"); - tce->evtype = NDB_TCE_EVENT; - return ndb_parse_json_note(&parser, &ev->note); - } - - if (parser.num_tokens < 3 || parser.toks[0].type != JSMN_ARRAY) - return 0; - - parser.i = 1; - tok = &parser.toks[parser.i++]; - tok_len = toksize(tok); - if (tok->type != JSMN_STRING) - return 0; - - if (tok_len == 5 && !memcmp("EVENT", json + tok->start, 5)) { - tce->evtype = NDB_TCE_EVENT; - - tok = &parser.toks[parser.i++]; - if (tok->type != JSMN_STRING) - return 0; - - tce->subid = json + tok->start; - tce->subid_len = toksize(tok); - - return ndb_parse_json_note(&parser, &ev->note); - } else if (tok_len == 4 && !memcmp("EOSE", json + tok->start, 4)) { - tce->evtype = NDB_TCE_EOSE; - - tok = &parser.toks[parser.i++]; - if (tok->type != JSMN_STRING) - return 0; - - tce->subid = json + tok->start; - tce->subid_len = toksize(tok); - return 1; - } else if (tok_len == 2 && !memcmp("OK", json + tok->start, 2)) { - if (parser.num_tokens != 5) - return 0; - - struct ndb_command_result *cr = &tce->command_result; - - tce->evtype = NDB_TCE_OK; - - tok = &parser.toks[parser.i++]; - if (tok->type != JSMN_STRING) - return 0; - - tce->subid = json + tok->start; - tce->subid_len = toksize(tok); - - tok = &parser.toks[parser.i++]; - if (tok->type != JSMN_PRIMITIVE || toksize(tok) == 0) - return 0; - - cr->ok = (json + tok->start)[0] == 't'; - - tok = &parser.toks[parser.i++]; - if (tok->type != JSMN_STRING) - return 0; - - tce->command_result.msg = json + tok->start; - tce->command_result.msglen = toksize(tok); - - return 1; - } else if (tok_len == 4 && !memcmp("AUTH", json + tok->start, 4)) { - tce->evtype = NDB_TCE_AUTH; - - tok = &parser.toks[parser.i++]; - if (tok->type != JSMN_STRING) - return 0; - - tce->subid = json + tok->start; - tce->subid_len = toksize(tok); - - return 1; - } - - return 0; -} - -static enum ndb_filter_fieldtype -ndb_filter_parse_field(const char *tok, int len, char *tagchar) -{ - *tagchar = 0; - - if (len == 0) - return 0; - - if (len == 7 && !strncmp(tok, "authors", 7)) { - return NDB_FILTER_AUTHORS; - } else if (len == 3 && !strncmp(tok, "ids", 3)) { - return NDB_FILTER_IDS; - } else if (len == 5 && !strncmp(tok, "kinds", 5)) { - return NDB_FILTER_KINDS; - } else if (len == 2 && tok[0] == '#') { - *tagchar = tok[1]; - return NDB_FILTER_TAGS; - } else if (len == 5 && !strncmp(tok, "since", 5)) { - return NDB_FILTER_SINCE; - } else if (len == 5 && !strncmp(tok, "until", 5)) { - return NDB_FILTER_UNTIL; - } else if (len == 5 && !strncmp(tok, "limit", 5)) { - return NDB_FILTER_LIMIT; - } else if (len == 6 && !strncmp(tok, "search", 6)) { - return NDB_FILTER_SEARCH; - } - - return 0; -} - -static int ndb_filter_parse_json_ids(struct ndb_json_parser *parser, - struct ndb_filter *filter) -{ - jsmntok_t *tok; - const char *start; - unsigned char hexbuf[32]; - int tok_len, i, size; - - tok = &parser->toks[parser->i++]; - - if (tok->type != JSMN_ARRAY) { - ndb_debug("parse_json_ids: not an array\n"); - return 0; - } - - size = tok->size; - - for (i = 0; i < size; parser->i++, i++) { - tok = &parser->toks[parser->i]; - start = parser->json + tok->start; - tok_len = toksize(tok); - - if (tok->type != JSMN_STRING) { - ndb_debug("parse_json_ids: not a string '%d'\n", tok->type); - return 0; - } - - if (tok_len != 64) { - ndb_debug("parse_json_ids: not len 64: '%.*s'\n", tok_len, start); - return 0; - } - - // id - if (!hex_decode(start, tok_len, hexbuf, sizeof(hexbuf))) { - ndb_debug("parse_json_ids: hex decode failed\n"); - return 0; - } - - ndb_debug("adding id elem\n"); - if (!ndb_filter_add_id_element(filter, hexbuf)) { - ndb_debug("parse_json_ids: failed to add id element\n"); - return 0; - } - } - - parser->i--; - return 1; -} - -static int ndb_filter_parse_json_elems(struct ndb_json_parser *parser, - struct ndb_filter *filter) -{ - jsmntok_t *tok; - const char *start; - int tok_len; - unsigned char hexbuf[32]; - enum ndb_generic_element_type typ; - tok = NULL; - int i, size; - - tok = &parser->toks[parser->i++]; - - if (tok->type != JSMN_ARRAY) - return 0; - - size = tok->size; - - for (i = 0; i < size; i++, parser->i++) { - tok = &parser->toks[parser->i]; - start = parser->json + tok->start; - tok_len = toksize(tok); - - if (tok->type != JSMN_STRING) - return 0; - - if (i == 0) { - if (tok_len == 64 && hex_decode(start, 64, hexbuf, sizeof(hexbuf))) { - typ = NDB_ELEMENT_ID; - if (!ndb_filter_add_id_element(filter, hexbuf)) { - ndb_debug("failed to push id elem\n"); - return 0; - } - } else { - typ = NDB_ELEMENT_STRING; - if (!ndb_filter_add_str_element_len(filter, start, tok_len)) - return 0; - } - } else if (typ == NDB_ELEMENT_ID) { - if (!hex_decode(start, 64, hexbuf, sizeof(hexbuf))) - return 0; - if (!ndb_filter_add_id_element(filter, hexbuf)) - return 0; - } else if (typ == NDB_ELEMENT_STRING) { - if (!ndb_filter_add_str_element_len(filter, start, tok_len)) - return 0; - } else { - // ??? - return 0; - } - } - - parser->i--; - return 1; -} - -static int ndb_filter_parse_json_str(struct ndb_json_parser *parser, - struct ndb_filter *filter) -{ - jsmntok_t *tok; - const char *start; - int tok_len; - - tok = &parser->toks[parser->i]; - start = parser->json + tok->start; - tok_len = toksize(tok); - - if (tok->type != JSMN_STRING) - return 0; - - if (!ndb_filter_add_str_element_len(filter, start, tok_len)) - return 0; - - ndb_debug("added str elem '%.*s'\n", tok_len, start); - - return 1; -} - -static int ndb_filter_parse_json_int(struct ndb_json_parser *parser, - struct ndb_filter *filter) -{ - jsmntok_t *tok; - const char *start; - int tok_len; - unsigned int value; - - tok = &parser->toks[parser->i]; - start = parser->json + tok->start; - tok_len = toksize(tok); - - if (tok->type != JSMN_PRIMITIVE) - return 0; - - if (!parse_unsigned_int(start, tok_len, &value)) - return 0; - - if (!ndb_filter_add_int_element(filter, (uint64_t)value)) - return 0; - - ndb_debug("added int elem %d\n", value); - - return 1; -} - - -static int ndb_filter_parse_json_ints(struct ndb_json_parser *parser, - struct ndb_filter *filter) -{ - jsmntok_t *tok; - int size, i; - - tok = &parser->toks[parser->i++]; - - if (tok->type != JSMN_ARRAY) - return 0; - - size = tok->size; - - for (i = 0; i < size; parser->i++, i++) { - if (!ndb_filter_parse_json_int(parser, filter)) - return 0; - } - - parser->i--; - return 1; -} - - -static int ndb_filter_parse_json(struct ndb_json_parser *parser, - struct ndb_filter *filter) -{ - jsmntok_t *tok = NULL; - const char *json = parser->json; - const char *start; - char tag; - int tok_len; - enum ndb_filter_fieldtype field; - - if (parser->toks[parser->i++].type != JSMN_OBJECT) - return 0; - - for (; parser->i < parser->num_tokens; parser->i++) { - tok = &parser->toks[parser->i++]; - start = json + tok->start; - tok_len = toksize(tok); - - if (!(field = ndb_filter_parse_field(start, tok_len, &tag))) { - ndb_debug("failed field '%.*s'\n", tok_len, start); - continue; - } - - if (tag) { - ndb_debug("starting tag field '%c'\n", tag); - if (!ndb_filter_start_tag_field(filter, tag)) { - ndb_debug("failed to start tag field '%c'\n", tag); - return 0; - } - } else if (!ndb_filter_start_field(filter, field)) { - ndb_debug("field already started\n"); - return 0; - } - - // we parsed a top-level field - switch(field) { - case NDB_FILTER_CUSTOM: - // can't really parse these yet - break; - case NDB_FILTER_AUTHORS: - case NDB_FILTER_IDS: - if (!ndb_filter_parse_json_ids(parser, filter)) { - ndb_debug("failed to parse filter ids/authors\n"); - return 0; - } - break; - case NDB_FILTER_SEARCH: - if (!ndb_filter_parse_json_str(parser, filter)) { - ndb_debug("failed to parse filter search str\n"); - return 0; - } - break; - case NDB_FILTER_SINCE: - case NDB_FILTER_UNTIL: - case NDB_FILTER_LIMIT: - if (!ndb_filter_parse_json_int(parser, filter)) { - ndb_debug("failed to parse filter since/until/limit\n"); - return 0; - } - break; - case NDB_FILTER_KINDS: - if (!ndb_filter_parse_json_ints(parser, filter)) { - ndb_debug("failed to parse filter kinds\n"); - return 0; - } - break; - case NDB_FILTER_RELAYS: - case NDB_FILTER_TAGS: - if (!ndb_filter_parse_json_elems(parser, filter)) { - ndb_debug("failed to parse filter tags\n"); - return 0; - } - break; - } - - ndb_filter_end_field(filter); - } - - return ndb_filter_end(filter); -} - -int ndb_parse_json_note(struct ndb_json_parser *parser, struct ndb_note **note) -{ - jsmntok_t *tok = NULL; - unsigned char hexbuf[64]; - const char *json = parser->json; - const char *start; - int i, tok_len, parsed; - - parsed = 0; - - if (parser->toks[parser->i].type != JSMN_OBJECT) - return 0; - - // TODO: build id buffer and verify at end - - for (i = parser->i + 1; i < parser->num_tokens; i++) { - tok = &parser->toks[i]; - start = json + tok->start; - tok_len = toksize(tok); - - //printf("toplevel %.*s %d\n", tok_len, json + tok->start, tok->type); - if (tok_len == 0 || i + 1 >= parser->num_tokens) - continue; - - if (start[0] == 'p' && jsoneq(json, tok, tok_len, "pubkey")) { - // pubkey - tok = &parser->toks[i+1]; - hex_decode(json + tok->start, toksize(tok), hexbuf, sizeof(hexbuf)); - parsed |= NDB_PARSED_PUBKEY; - ndb_builder_set_pubkey(&parser->builder, hexbuf); - } else if (tok_len == 2 && start[0] == 'i' && start[1] == 'd') { - // id - tok = &parser->toks[i+1]; - hex_decode(json + tok->start, toksize(tok), hexbuf, sizeof(hexbuf)); - parsed |= NDB_PARSED_ID; - ndb_builder_set_id(&parser->builder, hexbuf); - } else if (tok_len == 3 && start[0] == 's' && start[1] == 'i' && start[2] == 'g') { - // sig - tok = &parser->toks[i+1]; - hex_decode(json + tok->start, toksize(tok), hexbuf, sizeof(hexbuf)); - parsed |= NDB_PARSED_SIG; - ndb_builder_set_sig(&parser->builder, hexbuf); - } else if (start[0] == 'k' && jsoneq(json, tok, tok_len, "kind")) { - // kind - tok = &parser->toks[i+1]; - start = json + tok->start; - if (tok->type != JSMN_PRIMITIVE || tok_len <= 0) - return 0; - if (!parse_unsigned_int(start, toksize(tok), - &parser->builder.note->kind)) - return 0; - parsed |= NDB_PARSED_KIND; - } else if (start[0] == 'c') { - if (jsoneq(json, tok, tok_len, "created_at")) { - // created_at - tok = &parser->toks[i+1]; - start = json + tok->start; - if (tok->type != JSMN_PRIMITIVE || tok_len <= 0) - return 0; - // TODO: update to int64 in 2106 ... xD - unsigned int bigi; - if (!parse_unsigned_int(start, toksize(tok), &bigi)) - return 0; - parser->builder.note->created_at = bigi; - parsed |= NDB_PARSED_CREATED_AT; - } else if (jsoneq(json, tok, tok_len, "content")) { - // content - tok = &parser->toks[i+1]; - union ndb_packed_str pstr; - tok_len = toksize(tok); - int written, pack_ids = 0; - if (!ndb_builder_make_json_str(&parser->builder, - json + tok->start, - tok_len, &pstr, - &written, pack_ids)) { - ndb_debug("ndb_builder_make_json_str failed\n"); - return 0; - } - parser->builder.note->content_length = written; - parser->builder.note->content = pstr; - parsed |= NDB_PARSED_CONTENT; - } - } else if (start[0] == 't' && jsoneq(json, tok, tok_len, "tags")) { - tok = &parser->toks[i+1]; - ndb_builder_process_json_tags(parser, tok); - i += tok->size; - parsed |= NDB_PARSED_TAGS; - } - } - - //ndb_debug("parsed %d = %d, &->%d", parsed, NDB_PARSED_ALL, parsed & NDB_PARSED_ALL); - if (parsed != NDB_PARSED_ALL) - return 0; - - return ndb_builder_finalize(&parser->builder, note, NULL); -} - -int ndb_filter_from_json(const char *json, int len, struct ndb_filter *filter, - unsigned char *buf, int bufsize) -{ - struct ndb_json_parser parser; - int res; - - if (filter->finalized) - return 0; - - ndb_json_parser_init(&parser, json, len, buf, bufsize); - if ((res = ndb_json_parser_parse(&parser, NULL)) < 0) - return res; - - if (parser.num_tokens < 1) - return 0; - - return ndb_filter_parse_json(&parser, filter); -} - -int ndb_note_from_json(const char *json, int len, struct ndb_note **note, - unsigned char *buf, int bufsize) -{ - struct ndb_json_parser parser; - int res; - - ndb_json_parser_init(&parser, json, len, buf, bufsize); - if ((res = ndb_json_parser_parse(&parser, NULL)) < 0) - return res; - - if (parser.num_tokens < 1) - return 0; - - return ndb_parse_json_note(&parser, note); -} - -void ndb_builder_set_pubkey(struct ndb_builder *builder, unsigned char *pubkey) -{ - memcpy(builder->note->pubkey, pubkey, 32); -} - -void ndb_builder_set_id(struct ndb_builder *builder, unsigned char *id) -{ - memcpy(builder->note->id, id, 32); -} - -void ndb_builder_set_sig(struct ndb_builder *builder, unsigned char *sig) -{ - memcpy(builder->note->sig, sig, 64); -} - -void ndb_builder_set_kind(struct ndb_builder *builder, uint32_t kind) -{ - builder->note->kind = kind; -} - -void ndb_builder_set_created_at(struct ndb_builder *builder, uint64_t created_at) -{ - builder->note->created_at = created_at; -} - -int ndb_builder_new_tag(struct ndb_builder *builder) -{ - builder->note->tags.count++; - struct ndb_tag tag = {0}; - builder->current_tag = (struct ndb_tag *)builder->note_cur.p; - return cursor_push_tag(&builder->note_cur, &tag); -} - -void ndb_stat_counts_init(struct ndb_stat_counts *counts) -{ - counts->count = 0; - counts->key_size = 0; - counts->value_size = 0; -} - -static void ndb_stat_init(struct ndb_stat *stat) -{ - // init stats - int i; - - for (i = 0; i < NDB_CKIND_COUNT; i++) { - ndb_stat_counts_init(&stat->common_kinds[i]); - } - - for (i = 0; i < NDB_DBS; i++) { - ndb_stat_counts_init(&stat->dbs[i]); - } - - ndb_stat_counts_init(&stat->other_kinds); -} - -int ndb_stat(struct ndb *ndb, struct ndb_stat *stat) -{ - int rc; - MDB_cursor *cur; - MDB_val k, v; - MDB_dbi db; - struct ndb_txn txn; - struct ndb_note *note; - int i; - enum ndb_common_kind common_kind; - - // initialize to 0 - ndb_stat_init(stat); - - if (!ndb_begin_query(ndb, &txn)) { - fprintf(stderr, "ndb_stat failed at ndb_begin_query\n"); - return 0; - } - - // stat each dbi in the database - for (i = 0; i < NDB_DBS; i++) - { - db = ndb->lmdb.dbs[i]; - - if ((rc = mdb_cursor_open(txn.mdb_txn, db, &cur))) { - fprintf(stderr, "ndb_stat: mdb_cursor_open failed, error '%s'\n", - mdb_strerror(rc)); - return 0; - } - - // loop over every entry and count kv sizes - while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { - // we gather more detailed per-kind stats if we're in - // the notes db - if (i == NDB_DB_NOTE) { - note = v.mv_data; - common_kind = ndb_kind_to_common_kind(note->kind); - - // uncommon kind? just count them in bulk - if ((int)common_kind == -1) { - stat->other_kinds.count++; - stat->other_kinds.key_size += k.mv_size; - stat->other_kinds.value_size += v.mv_size; - } else { - stat->common_kinds[common_kind].count++; - stat->common_kinds[common_kind].key_size += k.mv_size; - stat->common_kinds[common_kind].value_size += v.mv_size; - } - } - - stat->dbs[i].count++; - stat->dbs[i].key_size += k.mv_size; - stat->dbs[i].value_size += v.mv_size; - } - - // close the cursor, they are per-dbi - mdb_cursor_close(cur); - } - - ndb_end_query(&txn); - - return 1; -} - -/// Push an element to the current tag -/// -/// Basic idea is to call ndb_builder_new_tag -int ndb_builder_push_tag_str(struct ndb_builder *builder, - const char *str, int len) -{ - union ndb_packed_str pstr; - int pack_ids = 1; - if (!ndb_builder_make_str(builder, str, len, &pstr, pack_ids)) - return 0; - return ndb_builder_finalize_tag(builder, pstr); -} - -/// Push an id element to the current tag. Needs to be 32 bytes -int ndb_builder_push_tag_id(struct ndb_builder *builder, - unsigned char *id) -{ - union ndb_packed_str pstr; - if (!ndb_builder_push_packed_id(builder, id, &pstr)) - return 0; - return ndb_builder_finalize_tag(builder, pstr); -} - -// -// CONFIG -// -void ndb_default_config(struct ndb_config *config) -{ - int cores = get_cpu_cores(); - config->mapsize = 1024UL * 1024UL * 1024UL * 32UL; // 32 GiB - config->ingester_threads = cores == -1 ? 4 : cores; - config->flags = 0; - config->ingest_filter = NULL; - config->filter_context = NULL; - config->sub_cb_ctx = NULL; - config->sub_cb = NULL; - config->writer_scratch_buffer_size = DEFAULT_WRITER_SCRATCH_SIZE; -} - -void ndb_config_set_subscription_callback(struct ndb_config *config, ndb_sub_fn fn, void *context) -{ - config->sub_cb_ctx = context; - config->sub_cb = fn; -} - -void ndb_config_set_writer_scratch_buffer_size(struct ndb_config *config, int scratch_size) -{ - config->writer_scratch_buffer_size = scratch_size; -} - -void ndb_config_set_ingest_threads(struct ndb_config *config, int threads) -{ - config->ingester_threads = threads; -} - -void ndb_config_set_flags(struct ndb_config *config, int flags) -{ - config->flags = flags; -} - -void ndb_config_set_mapsize(struct ndb_config *config, size_t mapsize) -{ - config->mapsize = mapsize; -} - -void ndb_config_set_ingest_filter(struct ndb_config *config, - ndb_ingest_filter_fn fn, void *filter_ctx) -{ - config->ingest_filter = fn; - config->filter_context = filter_ctx; -} - -int ndb_print_author_kind_index(struct ndb_txn *txn) -{ - MDB_cursor *cur; - struct ndb_id_u64_ts *key; - MDB_val k, v; - int i; - - if (mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_PUBKEY_KIND], &cur)) - return 0; - - i = 1; - printf("author\tkind\tcreated_at\tnote_id\n"); - while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { - key = (struct ndb_id_u64_ts *)k.mv_data; - print_hex(key->id, 32); - printf("\t%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\n", - key->u64, key->timestamp, *(uint64_t*)v.mv_data); - i++; - } - - mdb_cursor_close(cur); - - return i; -} - -int ndb_print_relay_kind_index(struct ndb_txn *txn) -{ - MDB_cursor *cur; - unsigned char *d; - MDB_val k, v; - int i; - - if (mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_RELAY_KIND], &cur)) - return 0; - - i = 1; - printf("relay\tkind\tcreated_at\tnote_id\n"); - while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { - d = (unsigned char *)k.mv_data; - printf("%s\t", (const char *)(d + 25)); - printf("%" PRIu64 "\t", *(uint64_t*)(d + 8)); - printf("%" PRIu64 "\t", *(uint64_t*)(d + 16)); - printf("%" PRIu64 "\n", *(uint64_t*)(d + 0)); - i++; - } - - mdb_cursor_close(cur); - - return i; -} - -int ndb_print_tag_index(struct ndb_txn *txn) -{ - MDB_cursor *cur; - MDB_val k, v; - int i; - - if (mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_TAGS], &cur)) - return 0; - - i = 1; - while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { - printf("%d ", i); - print_tag_kv(txn, &k, &v); - i++; - } - - mdb_cursor_close(cur); - - return 1; -} - -int ndb_print_kind_keys(struct ndb_txn *txn) -{ - MDB_cursor *cur; - MDB_val k, v; - int i; - struct ndb_u64_ts *tsid; - - if (mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_KIND], &cur)) - return 0; - - i = 1; - while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { - tsid = k.mv_data; - printf("%d note_kind %" PRIu64 " %" PRIu64 "\n", - i, tsid->u64, tsid->timestamp); - - i++; - } - - mdb_cursor_close(cur); - - return 1; -} - -// used by ndb.c -int ndb_print_search_keys(struct ndb_txn *txn) -{ - MDB_cursor *cur; - MDB_val k, v; - int i; - struct ndb_text_search_key search_key; - - if (mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_TEXT], &cur)) - return 0; - - i = 1; - while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { - if (!ndb_unpack_text_search_key(k.mv_data, k.mv_size, &search_key)) { - fprintf(stderr, "error decoding key %d\n", i); - continue; - } - - ndb_print_text_search_key(k.mv_size, &search_key); - printf("\n"); - - i++; - } - - mdb_cursor_close(cur); - - return 1; -} - -struct ndb_tags *ndb_note_tags(struct ndb_note *note) -{ - return ¬e->tags; -} - -struct ndb_str ndb_note_str(struct ndb_note *note, union ndb_packed_str *pstr) -{ - struct ndb_str str; - str.flag = pstr->packed.flag; - - if (str.flag == NDB_PACKED_STR) { - str.str = pstr->packed.str; - return str; - } - - str.str = ((const char *)note) + note->strings + (pstr->offset & 0xFFFFFF); - return str; -} - -struct ndb_str ndb_tag_str(struct ndb_note *note, struct ndb_tag *tag, int ind) -{ - return ndb_note_str(note, &tag->strs[ind]); -} - -int ndb_str_len(struct ndb_str *str) -{ - if (str->flag == NDB_PACKED_ID) - return 32; - return strlen(str->str); -} - -struct ndb_str ndb_iter_tag_str(struct ndb_iterator *iter, int ind) -{ - return ndb_tag_str(iter->note, iter->tag, ind); -} - -unsigned char * ndb_note_id(struct ndb_note *note) -{ - return note->id; -} - -unsigned char * ndb_note_pubkey(struct ndb_note *note) -{ - return note->pubkey; -} - -unsigned char * ndb_note_sig(struct ndb_note *note) -{ - return note->sig; -} - -uint32_t ndb_note_created_at(struct ndb_note *note) -{ - return note->created_at; -} - -uint32_t ndb_note_kind(struct ndb_note *note) -{ - return note->kind; -} - -void _ndb_note_set_kind(struct ndb_note *note, uint32_t kind) -{ - note->kind = kind; -} - -const char *ndb_note_content(struct ndb_note *note) -{ - return ndb_note_str(note, ¬e->content).str; -} - -uint32_t ndb_note_content_length(struct ndb_note *note) -{ - return note->content_length; -} - -struct ndb_note * ndb_note_from_bytes(unsigned char *bytes) -{ - struct ndb_note *note = (struct ndb_note *)bytes; - if (note->version != 1) - return 0; - return note; -} - -int ndb_note_relay_iterate_start(struct ndb_txn *txn, - struct ndb_note_relay_iterator *iter, - uint64_t note_key) -{ - if (mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_RELAYS], - (MDB_cursor**)&iter->mdb_cur)) { - return 0; - } - - iter->txn = txn; - iter->cursor_op = MDB_SET_KEY; - iter->note_key = note_key; - - return 1; -} - -const char *ndb_note_relay_iterate_next(struct ndb_note_relay_iterator *iter) -{ - int rc; - MDB_val k, v; - - if (iter->mdb_cur == NULL) - return NULL; - - k.mv_data = &iter->note_key; - k.mv_size = sizeof(iter->note_key); - - if ((rc = mdb_cursor_get((MDB_cursor *)iter->mdb_cur, &k, &v, - (MDB_cursor_op)iter->cursor_op))) - { - //fprintf(stderr, "autoclosing %d '%s'\n", iter->cursor_op, mdb_strerror(rc)); - // autoclose - ndb_note_relay_iterate_close(iter); - return NULL; - } - - iter->cursor_op = MDB_NEXT_DUP; - - return (const char*)v.mv_data; -} - -void ndb_note_relay_iterate_close(struct ndb_note_relay_iterator *iter) -{ - if (!iter || iter->mdb_cur == NULL) - return; - - mdb_cursor_close((MDB_cursor*)iter->mdb_cur); - - iter->mdb_cur = NULL; -} - -void ndb_tags_iterate_start(struct ndb_note *note, struct ndb_iterator *iter) -{ - iter->note = note; - iter->tag = NULL; - iter->index = -1; -} - -// Helper function to get a pointer to the nth tag -static struct ndb_tag *ndb_tags_tag(struct ndb_tags *tags, size_t index) { - return (struct ndb_tag *)((uint8_t *)tags + sizeof(struct ndb_tags) + index * sizeof(struct ndb_tag)); -} - -int ndb_tags_iterate_next(struct ndb_iterator *iter) -{ - struct ndb_tags *tags; - - if (iter->tag == NULL || iter->index == -1) { - iter->tag = ndb_tags_tag(&iter->note->tags, 0); - iter->index = 0; - return iter->note->tags.count != 0; - } - - tags = &iter->note->tags; - - if (++iter->index < tags->count) { - uint32_t tag_data_size = iter->tag->count * sizeof(iter->tag->strs[0]); - iter->tag = (struct ndb_tag *)(iter->tag->strs[0].bytes + tag_data_size); - return 1; - } - - return 0; -} - -uint16_t ndb_tags_count(struct ndb_tags *tags) -{ - return tags->count; -} - -uint16_t ndb_tag_count(struct ndb_tag *tags) -{ - return tags->count; -} - -enum ndb_common_kind ndb_kind_to_common_kind(int kind) -{ - switch (kind) - { - case 0: return NDB_CKIND_PROFILE; - case 1: return NDB_CKIND_TEXT; - case 3: return NDB_CKIND_CONTACTS; - case 4: return NDB_CKIND_DM; - case 5: return NDB_CKIND_DELETE; - case 6: return NDB_CKIND_REPOST; - case 7: return NDB_CKIND_REACTION; - case 9735: return NDB_CKIND_ZAP; - case 9734: return NDB_CKIND_ZAP_REQUEST; - case 23194: return NDB_CKIND_NWC_REQUEST; - case 23195: return NDB_CKIND_NWC_RESPONSE; - case 27235: return NDB_CKIND_HTTP_AUTH; - case 30000: return NDB_CKIND_LIST; - case 30023: return NDB_CKIND_LONGFORM; - case 30315: return NDB_CKIND_STATUS; - } - - return -1; -} - -const char *ndb_kind_name(enum ndb_common_kind ck) -{ - switch (ck) { - case NDB_CKIND_PROFILE: return "profile"; - case NDB_CKIND_TEXT: return "text"; - case NDB_CKIND_CONTACTS: return "contacts"; - case NDB_CKIND_DM: return "dm"; - case NDB_CKIND_DELETE: return "delete"; - case NDB_CKIND_REPOST: return "repost"; - case NDB_CKIND_REACTION: return "reaction"; - case NDB_CKIND_ZAP: return "zap"; - case NDB_CKIND_ZAP_REQUEST: return "zap_request"; - case NDB_CKIND_NWC_REQUEST: return "nwc_request"; - case NDB_CKIND_NWC_RESPONSE: return "nwc_response"; - case NDB_CKIND_HTTP_AUTH: return "http_auth"; - case NDB_CKIND_LIST: return "list"; - case NDB_CKIND_LONGFORM: return "longform"; - case NDB_CKIND_STATUS: return "status"; - case NDB_CKIND_COUNT: return "unknown"; - } - - return "unknown"; -} - -const char *ndb_db_name(enum ndb_dbs db) -{ - switch (db) { - case NDB_DB_NOTE: - return "note"; - case NDB_DB_META: - return "note_metadata"; - case NDB_DB_PROFILE: - return "profile"; - case NDB_DB_NOTE_ID: - return "note_index"; - case NDB_DB_PROFILE_PK: - return "profile_pubkey_index"; - case NDB_DB_NDB_META: - return "nostrdb_metadata"; - case NDB_DB_PROFILE_SEARCH: - return "profile_search"; - case NDB_DB_PROFILE_LAST_FETCH: - return "profile_last_fetch"; - case NDB_DB_NOTE_KIND: - return "note_kind_index"; - case NDB_DB_NOTE_TEXT: - return "note_fulltext"; - case NDB_DB_NOTE_BLOCKS: - return "note_blocks"; - case NDB_DB_NOTE_TAGS: - return "note_tags"; - case NDB_DB_NOTE_PUBKEY: - return "note_pubkey_index"; - case NDB_DB_NOTE_PUBKEY_KIND: - return "note_pubkey_kind_index"; - case NDB_DB_NOTE_RELAY_KIND: - return "note_relay_kind_index"; - case NDB_DB_NOTE_RELAYS: - return "note_relays"; - case NDB_DBS: - return "count"; - } - - return "unknown"; -} - -static struct ndb_blocks *ndb_note_to_blocks(struct ndb_note *note) -{ - const char *content; - size_t content_len; - struct ndb_blocks *blocks; - unsigned char *buffer; - - content = ndb_note_content(note); - content_len = ndb_note_content_length(note); - - // something weird is going on - if (content_len >= INT32_MAX) - return NULL; - - uint32_t buf_size = 2<<18; - - buffer = malloc(buf_size); // Not carefully calculated, but ok because we will not need this once we switch to the local relay model - if (!buffer) - return NULL; - - if (!ndb_parse_content(buffer, buf_size, content, content_len, &blocks)) { - free(buffer); - return NULL; - } - - //blocks = realloc(blocks, ndb_blocks_total_size(blocks)); - //if (blocks == NULL) - //return NULL; - - blocks->flags |= NDB_BLOCK_FLAG_OWNED; - - return blocks; -} - -struct ndb_blocks *ndb_get_blocks_by_key(struct ndb *ndb, struct ndb_txn *txn, uint64_t note_key) -{ - struct ndb_blocks *blocks, *blocks_to_writer; - size_t blocks_size; - struct ndb_note *note; - size_t note_len; - - if ((blocks = ndb_lookup_by_key(txn, note_key, NDB_DB_NOTE_BLOCKS, ¬e_len))) { - return blocks; - } - - // If we don't have note blocks, let's lazily generate them. This is - // migration-friendly instead of doing them all at once - if (!(note = ndb_get_note_by_key(txn, note_key, ¬e_len))) { - // no note found, can't return note blocks - return NULL; - } - - if (!(blocks = ndb_note_to_blocks(note))) - return NULL; - - // send a copy to the writer - blocks_size = ndb_blocks_total_size(blocks); - blocks_to_writer = malloc(blocks_size); - memcpy(blocks_to_writer, blocks, blocks_size); - assert(blocks->flags & NDB_BLOCK_FLAG_OWNED); - - // we generated new blocks, let's store them in the DB - struct ndb_writer_blocks write_blocks = { - .blocks = blocks_to_writer, - .note_key = note_key - }; - - assert(write_blocks.blocks != blocks); - - struct ndb_writer_msg msg = { .type = NDB_WRITER_BLOCKS }; - msg.blocks = write_blocks; - - ndb_writer_queue_msg(&ndb->writer, &msg); - - return blocks; -} - -// please call ndb_monitor_lock before calling this -static struct ndb_subscription * -ndb_monitor_find_subscription(struct ndb_monitor *monitor, uint64_t subid, int *index) -{ - struct ndb_subscription *sub, *tsub; - int i; - - for (i = 0, sub = NULL; i < monitor->num_subscriptions; i++) { - tsub = &monitor->subscriptions[i]; - if (tsub->subid == subid) { - sub = tsub; - if (index) - *index = i; - break; - } - } - - return sub; -} - -int ndb_poll_for_notes(struct ndb *ndb, uint64_t subid, uint64_t *note_ids, - int note_id_capacity) -{ - struct ndb_subscription *sub; - int res; - - if (subid == 0) - return 0; - - ndb_monitor_lock(&ndb->monitor); - - if (!(sub = ndb_monitor_find_subscription(&ndb->monitor, subid, NULL))) - res = 0; - else - res = prot_queue_try_pop_all(&sub->inbox, note_ids, note_id_capacity); - - ndb_monitor_unlock(&ndb->monitor); - - return res; -} - -int ndb_wait_for_notes(struct ndb *ndb, uint64_t subid, uint64_t *note_ids, - int note_id_capacity) -{ - struct ndb_subscription *sub; - struct prot_queue *queue_inbox; - - // this is not a valid subscription id - if (subid == 0) - return 0; - - ndb_monitor_lock(&ndb->monitor); - - if (!(sub = ndb_monitor_find_subscription(&ndb->monitor, subid, NULL))) { - ndb_monitor_unlock(&ndb->monitor); - return 0; - } - - queue_inbox = &sub->inbox; - - ndb_monitor_unlock(&ndb->monitor); - - // there is technically a race condition if the thread yeilds at this - // comment and a subscription is added/removed. A deadlock in the - // writer queue would be much worse though. This function is dubious - // anyways. - - return prot_queue_pop_all(queue_inbox, note_ids, note_id_capacity); -} - -int ndb_unsubscribe(struct ndb *ndb, uint64_t subid) -{ - struct ndb_subscription *sub; - int index, res, elems_to_move; - - ndb_monitor_lock(&ndb->monitor); - - if (!(sub = ndb_monitor_find_subscription(&ndb->monitor, subid, &index))) { - res = 0; - goto done; - } - - ndb_subscription_destroy(sub); - - elems_to_move = (--ndb->monitor.num_subscriptions) - index; - - memmove(&ndb->monitor.subscriptions[index], - &ndb->monitor.subscriptions[index+1], - elems_to_move * sizeof(*sub)); - - res = 1; - -done: - ndb_monitor_unlock(&ndb->monitor); - - return res; -} - -int ndb_num_subscriptions(struct ndb *ndb) -{ - return ndb->monitor.num_subscriptions; -} - -uint64_t ndb_subscribe(struct ndb *ndb, struct ndb_filter *filters, int num_filters) -{ - static uint64_t subids = 0; - struct ndb_subscription *sub; - size_t buflen; - uint64_t subid; - char *buf; - - ndb_monitor_lock(&ndb->monitor); - - if (ndb->monitor.num_subscriptions + 1 >= MAX_SUBSCRIPTIONS) { - fprintf(stderr, "too many subscriptions\n"); - subid = 0; - goto done; - } - - sub = &ndb->monitor.subscriptions[ndb->monitor.num_subscriptions]; - subid = ++subids; - sub->subid = subid; - - ndb_filter_group_init(&sub->group); - if (!ndb_filter_group_add_filters(&sub->group, filters, num_filters)) { - subid = 0; - goto done; - } - - // 500k ought to be enough for anyone - buflen = sizeof(uint64_t) * DEFAULT_QUEUE_SIZE; - buf = malloc(buflen); - - if (!prot_queue_init(&sub->inbox, buf, buflen, sizeof(uint64_t))) { - fprintf(stderr, "failed to push prot queue\n"); - subid = 0; - goto done; - } - - ndb->monitor.num_subscriptions++; -done: - ndb_monitor_unlock(&ndb->monitor); - - return subid; -} diff --git a/nostrdb/src/nostrdb.h b/nostrdb/src/nostrdb.h deleted file mode 100644 index 50c2741c9b..0000000000 --- a/nostrdb/src/nostrdb.h +++ /dev/null @@ -1,683 +0,0 @@ -#ifndef NOSTRDB_H -#define NOSTRDB_H - -#include -#include -#include "win.h" -#include "cursor.h" - -// maximum number of filters allowed in a filter group -#define NDB_PACKED_STR 0x1 -#define NDB_PACKED_ID 0x2 - -#define NDB_FLAG_NOMIGRATE (1 << 0) -#define NDB_FLAG_SKIP_NOTE_VERIFY (1 << 1) -#define NDB_FLAG_NO_FULLTEXT (1 << 2) -#define NDB_FLAG_NO_NOTE_BLOCKS (1 << 3) -#define NDB_FLAG_NO_STATS (1 << 4) - -//#define DEBUG 1 - -#ifdef NDB_LOG -#define ndb_debug(...) printf(__VA_ARGS__) -#else -#define ndb_debug(...) (void)0 -#endif - -#include "str_block.h" - -struct ndb_json_parser; -struct ndb; -struct ndb_blocks; -struct ndb_block; -struct ndb_note; -struct ndb_tag; -struct ndb_tags; -struct ndb_lmdb; -union ndb_packed_str; -struct bolt11; - -// some bindings like swift needs help with forward declared pointers -struct ndb_tag_ptr { struct ndb_tag *ptr; }; -struct ndb_tags_ptr { struct ndb_tags *ptr; }; -struct ndb_block_ptr { struct ndb_block *ptr; }; -struct ndb_blocks_ptr { struct ndb_blocks *ptr; }; -struct ndb_note_ptr { struct ndb_note *ptr; }; - -struct ndb_t { - struct ndb *ndb; -}; - -struct ndb_str { - // NDB_PACKED_STR, NDB_PACKED_ID - unsigned char flag; - union { - const char *str; - unsigned char *id; - }; -}; - -struct ndb_ingest_meta { - unsigned client; - const char *relay; -}; - -struct ndb_keypair { - unsigned char pubkey[32]; - unsigned char secret[32]; - - // this corresponds to secp256k1's keypair type. it's guaranteed to - // be 96 bytes according to their docs. I don't want to depend on - // the secp256k1 header here so we just use raw bytes. - unsigned char pair[96]; -}; - -// function pointer for controlling what to do after we parse an id -typedef enum ndb_idres (*ndb_id_fn)(void *, const char *); - -// callback function for when we receive new subscription results -typedef void (*ndb_sub_fn)(void *, uint64_t subid); - -// id callback + closure data -struct ndb_id_cb { - ndb_id_fn fn; - void *data; -}; - -// required to keep a read -struct ndb_txn { - struct ndb_lmdb *lmdb; - void *mdb_txn; -}; - -struct ndb_event { - struct ndb_note *note; -}; - -struct ndb_command_result { - int ok; - const char *msg; - int msglen; -}; - -// From-client event types -enum fce_type { - NDB_FCE_EVENT = 0x1 -}; - -// To-client event types -enum tce_type { - NDB_TCE_EVENT = 0x1, - NDB_TCE_OK = 0x2, - NDB_TCE_NOTICE = 0x3, - NDB_TCE_EOSE = 0x4, - NDB_TCE_AUTH = 0x5, -}; - -enum ndb_ingest_filter_action { - NDB_INGEST_REJECT, - NDB_INGEST_ACCEPT, - NDB_INGEST_SKIP_VALIDATION -}; - -struct ndb_search_key -{ - char search[24]; - unsigned char id[32]; - uint64_t timestamp; -}; - -struct ndb_search { - struct ndb_search_key *key; - uint64_t profile_key; - void *cursor; // MDB_cursor * -}; - -// From-client event -struct ndb_fce { - enum fce_type evtype; - union { - struct ndb_event event; - }; -}; - -// To-client event -struct ndb_tce { - enum tce_type evtype; - const char *subid; - int subid_len; - - union { - struct ndb_event event; - struct ndb_command_result command_result; - }; -}; - -typedef enum ndb_ingest_filter_action (*ndb_ingest_filter_fn)(void *, struct ndb_note *); - -enum ndb_filter_fieldtype { - NDB_FILTER_IDS = 1, - NDB_FILTER_AUTHORS = 2, - NDB_FILTER_KINDS = 3, - NDB_FILTER_TAGS = 4, - NDB_FILTER_SINCE = 5, - NDB_FILTER_UNTIL = 6, - NDB_FILTER_LIMIT = 7, - NDB_FILTER_SEARCH = 8, - NDB_FILTER_RELAYS = 9, - NDB_FILTER_CUSTOM = 10, -}; -#define NDB_NUM_FILTERS 10 - -// when matching generic tags, we need to know if we're dealing with -// a pointer to a 32-byte ID or a null terminated string -enum ndb_generic_element_type { - NDB_ELEMENT_UNKNOWN = 0, - NDB_ELEMENT_STRING = 1, - NDB_ELEMENT_ID = 2, - NDB_ELEMENT_INT = 3, - NDB_ELEMENT_CUSTOM = 4, -}; - -enum ndb_search_order { - NDB_ORDER_DESCENDING, - NDB_ORDER_ASCENDING, -}; - -enum ndb_dbs { - NDB_DB_NOTE, - NDB_DB_META, - NDB_DB_PROFILE, - NDB_DB_NOTE_ID, - NDB_DB_PROFILE_PK, // profile pk index - NDB_DB_NDB_META, - NDB_DB_PROFILE_SEARCH, - NDB_DB_PROFILE_LAST_FETCH, - NDB_DB_NOTE_KIND, // note kind index - NDB_DB_NOTE_TEXT, // note fulltext index - NDB_DB_NOTE_BLOCKS, // parsed note blocks for rendering - NDB_DB_NOTE_TAGS, // note tags index - NDB_DB_NOTE_PUBKEY, // note pubkey index - NDB_DB_NOTE_PUBKEY_KIND, // note pubkey kind index - NDB_DB_NOTE_RELAY_KIND, // relay+kind+created -> note_id - NDB_DB_NOTE_RELAYS, // note_id -> relays - NDB_DBS, -}; - -// common kinds. we collect stats on these in ndb_stat. mainly because I don't -// want to deal with including a hashtable to the project. -enum ndb_common_kind { - NDB_CKIND_PROFILE, - NDB_CKIND_TEXT, - NDB_CKIND_CONTACTS, - NDB_CKIND_DM, - NDB_CKIND_DELETE, - NDB_CKIND_REPOST, - NDB_CKIND_REACTION, - NDB_CKIND_ZAP, - NDB_CKIND_ZAP_REQUEST, - NDB_CKIND_NWC_REQUEST, - NDB_CKIND_NWC_RESPONSE, - NDB_CKIND_HTTP_AUTH, - NDB_CKIND_LIST, - NDB_CKIND_LONGFORM, - NDB_CKIND_STATUS, - NDB_CKIND_COUNT, // should always be last -}; - -struct ndb_builder { - struct cursor mem; - struct cursor note_cur; - struct cursor strings; - struct cursor str_indices; - struct ndb_note *note; - struct ndb_tag *current_tag; -}; - -struct ndb_note_relay_iterator { - struct ndb_txn *txn; - uint64_t note_key; - int cursor_op; - void *mdb_cur; -}; - -struct ndb_iterator { - struct ndb_note *note; - struct ndb_tag *tag; - - // current outer index - int index; -}; - -struct ndb_filter_string { - const char *string; - int len; -}; - -typedef bool ndb_filter_callback_fn(void *, struct ndb_note *); - -struct ndb_filter_custom { - void *ctx; - ndb_filter_callback_fn *cb; -}; - -union ndb_filter_element { - struct ndb_filter_string string; - const unsigned char *id; - uint64_t integer; - struct ndb_filter_custom custom_filter; -}; - -struct ndb_filter_field { - enum ndb_filter_fieldtype type; - enum ndb_generic_element_type elem_type; - char tag; // for generic queries like #t -}; - -struct ndb_filter_elements { - struct ndb_filter_field field; - int count; - - // this needs to be pointer size for reasons - // FIXME: what about on 32bit systems?? - uint64_t elements[0]; -}; - -struct ndb_filter { - struct cursor elem_buf; - struct cursor data_buf; - int num_elements; - int finalized; - int current; - - // struct ndb_filter_elements offsets into elem_buf - // - // TODO(jb55): this should probably be called fields. elements are - // the things within fields - int elements[NDB_NUM_FILTERS]; -}; - -struct ndb_config { - int flags; - int ingester_threads; - int writer_scratch_buffer_size; - size_t mapsize; - void *filter_context; - ndb_ingest_filter_fn ingest_filter; - void *sub_cb_ctx; - ndb_sub_fn sub_cb; -}; - -struct ndb_text_search_config { - enum ndb_search_order order; - int limit; -}; - -struct ndb_stat_counts { - size_t key_size; - size_t value_size; - size_t count; -}; - -struct ndb_stat { - struct ndb_stat_counts dbs[NDB_DBS]; - struct ndb_stat_counts common_kinds[NDB_CKIND_COUNT]; - struct ndb_stat_counts other_kinds; -}; - -#define MAX_TEXT_SEARCH_RESULTS 128 -#define MAX_TEXT_SEARCH_WORDS 8 - -// unpacked form of the actual lmdb fulltext search key -// see `ndb_make_text_search_key` for how the packed version is constructed -struct ndb_text_search_key -{ - int str_len; - const char *str; - uint64_t timestamp; - uint64_t note_id; - uint64_t word_index; -}; - -struct ndb_text_search_result { - struct ndb_text_search_key key; - int prefix_chars; - - // This is only set if we passed a filter for nip50 searches - struct ndb_note *note; - uint64_t note_size; -}; - -struct ndb_text_search_results { - struct ndb_text_search_result results[MAX_TEXT_SEARCH_RESULTS]; - int num_results; -}; - -enum ndb_block_type { - BLOCK_HASHTAG = 1, - BLOCK_TEXT = 2, - BLOCK_MENTION_INDEX = 3, - BLOCK_MENTION_BECH32 = 4, - BLOCK_URL = 5, - BLOCK_INVOICE = 6, -}; -#define NDB_NUM_BLOCK_TYPES 6 -#define NDB_MAX_RELAYS 24 - -struct ndb_relays { - struct ndb_str_block relays[NDB_MAX_RELAYS]; - int num_relays; -}; - -enum nostr_bech32_type { - NOSTR_BECH32_NOTE = 1, - NOSTR_BECH32_NPUB = 2, - NOSTR_BECH32_NPROFILE = 3, - NOSTR_BECH32_NEVENT = 4, - NOSTR_BECH32_NRELAY = 5, - NOSTR_BECH32_NADDR = 6, - NOSTR_BECH32_NSEC = 7, -}; -#define NOSTR_BECH32_KNOWN_TYPES 7 - -struct bech32_note { - const unsigned char *event_id; -}; - -struct bech32_npub { - const unsigned char *pubkey; -}; - -struct bech32_nsec { - const unsigned char *nsec; -}; - -struct bech32_nevent { - struct ndb_relays relays; - const unsigned char *event_id; - const unsigned char *pubkey; // optional - uint32_t kind; - bool has_kind; -}; - -struct bech32_nprofile { - struct ndb_relays relays; - const unsigned char *pubkey; - uint32_t kind; - bool has_kind; -}; - -struct bech32_naddr { - struct ndb_relays relays; - struct ndb_str_block identifier; - const unsigned char *pubkey; - uint32_t kind; -}; - -struct bech32_nrelay { - struct ndb_str_block relay; -}; - -typedef struct nostr_bech32 { - enum nostr_bech32_type type; - - union { - struct bech32_note note; - struct bech32_npub npub; - struct bech32_nsec nsec; - struct bech32_nevent nevent; - struct bech32_nprofile nprofile; - struct bech32_naddr naddr; - struct bech32_nrelay nrelay; - }; -} nostr_bech32_t; - - -struct ndb_mention_bech32_block { - struct ndb_str_block str; - struct nostr_bech32 bech32; -}; - -struct ndb_invoice { - unsigned char version; - uint64_t amount; - uint64_t timestamp; - uint64_t expiry; - char *description; - unsigned char *description_hash; -}; - -struct ndb_invoice_block { - struct ndb_str_block invstr; - struct ndb_invoice invoice; -}; - -struct ndb_block { - enum ndb_block_type type; - union { - struct ndb_str_block str; - struct ndb_invoice_block invoice; - struct ndb_mention_bech32_block mention_bech32; - uint32_t mention_index; - } block; -}; - -struct ndb_block_iterator { - const char *content; - struct ndb_blocks *blocks; - struct ndb_block block; - unsigned char *p; -}; - -struct ndb_query_result { - struct ndb_note *note; - uint64_t note_size; - uint64_t note_id; -}; - -struct ndb_query_results { - struct cursor cur; -}; - -// CONFIG -void ndb_default_config(struct ndb_config *); -void ndb_config_set_ingest_threads(struct ndb_config *config, int threads); -void ndb_config_set_flags(struct ndb_config *config, int flags); -void ndb_config_set_mapsize(struct ndb_config *config, size_t mapsize); -void ndb_config_set_ingest_filter(struct ndb_config *config, ndb_ingest_filter_fn fn, void *); -void ndb_config_set_subscription_callback(struct ndb_config *config, ndb_sub_fn fn, void *ctx); - -/// Configurable scratch buffer size for the writer thread. Default is 2MB. If you have smaller notes -/// you can decrease this to reduce memory usage. If you have bigger notes you should increase this so -/// that the writer thread can properly parse larger notes. -void ndb_config_set_writer_scratch_buffer_size(struct ndb_config *config, int scratch_size); - -// HELPERS -int ndb_calculate_id(struct ndb_note *note, unsigned char *buf, int buflen, unsigned char *id); -int ndb_sign_id(struct ndb_keypair *keypair, unsigned char id[32], unsigned char sig[64]); -int ndb_create_keypair(struct ndb_keypair *key); -int ndb_decode_key(const char *secstr, struct ndb_keypair *keypair); -int ndb_note_verify(void *secp_ctx, unsigned char *scratch, size_t scratch_size, struct ndb_note *note); - -// NDB -int ndb_init(struct ndb **ndb, const char *dbdir, const struct ndb_config *); -int ndb_db_version(struct ndb_txn *txn); -/// Takes a snapshot of the NostrDB contents to a separate path -/// See `mdb_env_copy2` header for documentation on `path` and `flags` -int ndb_snapshot(struct ndb *ndb, const char *path, unsigned int flags); - -// NOTE PROCESSING -int ndb_process_event(struct ndb *, const char *json, int len); -void ndb_ingest_meta_init(struct ndb_ingest_meta *meta, unsigned client, const char *relay); -// Process an event, recording the relay where it came from. -int ndb_process_event_with(struct ndb *, const char *json, int len, struct ndb_ingest_meta *meta); -int ndb_process_events(struct ndb *, const char *ldjson, size_t len); -int ndb_process_events_with(struct ndb *ndb, const char *ldjson, size_t json_len, struct ndb_ingest_meta *meta); -#ifndef _WIN32 -// TODO: fix on windows -int ndb_process_events_stream(struct ndb *, FILE* fp); -#endif -// deprecated: use ndb_ingest_event_with -int ndb_process_client_event(struct ndb *, const char *json, int len); -// deprecated: use ndb_ingest_events_with -int ndb_process_client_events(struct ndb *, const char *json, size_t len); - -int ndb_begin_query(struct ndb *, struct ndb_txn *); -int ndb_search_profile(struct ndb_txn *txn, struct ndb_search *search, const char *query); -int ndb_search_profile_next(struct ndb_search *search); -void ndb_search_profile_end(struct ndb_search *search); -int ndb_end_query(struct ndb_txn *); -int ndb_write_last_profile_fetch(struct ndb *ndb, const unsigned char *pubkey, uint64_t fetched_at); -uint64_t ndb_read_last_profile_fetch(struct ndb_txn *txn, const unsigned char *pubkey); -void *ndb_get_profile_by_pubkey(struct ndb_txn *txn, const unsigned char *pubkey, size_t *len, uint64_t *primkey); -void *ndb_get_profile_by_key(struct ndb_txn *txn, uint64_t key, size_t *len); -uint64_t ndb_get_notekey_by_id(struct ndb_txn *txn, const unsigned char *id); -uint64_t ndb_get_profilekey_by_pubkey(struct ndb_txn *txn, const unsigned char *id); -struct ndb_note *ndb_get_note_by_id(struct ndb_txn *txn, const unsigned char *id, size_t *len, uint64_t *primkey); -struct ndb_note *ndb_get_note_by_key(struct ndb_txn *txn, uint64_t key, size_t *len); -void *ndb_get_note_meta(struct ndb_txn *txn, const unsigned char *id, size_t *len); -int ndb_note_seen_on_relay(struct ndb_txn *txn, uint64_t note_key, const char *relay); -void ndb_destroy(struct ndb *); - -// BUILDER -int ndb_parse_json_note(struct ndb_json_parser *, struct ndb_note **); -int ndb_client_event_from_json(const char *json, int len, struct ndb_fce *fce, unsigned char *buf, int bufsize, struct ndb_id_cb *cb); -int ndb_ws_event_from_json(const char *json, int len, struct ndb_tce *tce, unsigned char *buf, int bufsize, struct ndb_id_cb *); -int ndb_note_from_json(const char *json, int len, struct ndb_note **, unsigned char *buf, int buflen); -int ndb_builder_init(struct ndb_builder *builder, unsigned char *buf, size_t bufsize); -int ndb_builder_finalize(struct ndb_builder *builder, struct ndb_note **note, struct ndb_keypair *privkey); -int ndb_builder_set_content(struct ndb_builder *builder, const char *content, int len); -void ndb_builder_set_created_at(struct ndb_builder *builder, uint64_t created_at); -void ndb_builder_set_sig(struct ndb_builder *builder, unsigned char *sig); -void ndb_builder_set_pubkey(struct ndb_builder *builder, unsigned char *pubkey); -void ndb_builder_set_id(struct ndb_builder *builder, unsigned char *id); -void ndb_builder_set_kind(struct ndb_builder *builder, uint32_t kind); -int ndb_builder_new_tag(struct ndb_builder *builder); -int ndb_builder_push_tag_str(struct ndb_builder *builder, const char *str, int len); -int ndb_builder_push_tag_id(struct ndb_builder *builder, unsigned char *id); - -// FILTERS -int ndb_filter_init(struct ndb_filter *); - -/// Allocate a filter with a fixed sized buffer (where pages is number of 4096-byte sized blocks) -/// You can set pages to 1 if you know you are constructing small filters -// TODO: replace this with passed-in buffers -int ndb_filter_init_with(struct ndb_filter *filter, int pages); - -int ndb_filter_add_id_element(struct ndb_filter *, const unsigned char *id); -int ndb_filter_add_int_element(struct ndb_filter *, uint64_t integer); -int ndb_filter_add_str_element(struct ndb_filter *, const char *str); -int ndb_filter_add_custom_filter_element(struct ndb_filter *filter, ndb_filter_callback_fn *cb, void *ctx); -int ndb_filter_eq(const struct ndb_filter *, const struct ndb_filter *); - -/// is `a` a subset of `b` -int ndb_filter_is_subset_of(const struct ndb_filter *a, const struct ndb_filter *b); - -// filters from json -int ndb_filter_from_json(const char *, int len, struct ndb_filter *filter, unsigned char *buf, int bufsize); - -// getting field elements -unsigned char *ndb_filter_get_id_element(const struct ndb_filter *, const struct ndb_filter_elements *, int index); -const char *ndb_filter_get_string_element(const struct ndb_filter *, const struct ndb_filter_elements *, int index); -uint64_t ndb_filter_get_int_element(const struct ndb_filter_elements *, int index); -uint64_t *ndb_filter_get_int_element_ptr(struct ndb_filter_elements *, int index); - -struct ndb_filter_elements *ndb_filter_current_element(const struct ndb_filter *); -struct ndb_filter_elements *ndb_filter_get_elements(const struct ndb_filter *, int); -int ndb_filter_start_field(struct ndb_filter *, enum ndb_filter_fieldtype); -int ndb_filter_start_tag_field(struct ndb_filter *, char tag); -int ndb_filter_matches(struct ndb_filter *, struct ndb_note *); -int ndb_filter_matches_with_relay(struct ndb_filter *, struct ndb_note *, struct ndb_note_relay_iterator *iter); -int ndb_filter_clone(struct ndb_filter *dst, struct ndb_filter *src); -int ndb_filter_end(struct ndb_filter *); -void ndb_filter_end_field(struct ndb_filter *); -void ndb_filter_destroy(struct ndb_filter *); -int ndb_filter_json(const struct ndb_filter *, char *buf, int buflen); - -// SUBSCRIPTIONS -uint64_t ndb_subscribe(struct ndb *, struct ndb_filter *, int num_filters); -int ndb_wait_for_notes(struct ndb *, uint64_t subid, uint64_t *note_ids, int note_id_capacity); -int ndb_poll_for_notes(struct ndb *, uint64_t subid, uint64_t *note_ids, int note_id_capacity); -int ndb_unsubscribe(struct ndb *, uint64_t subid); -int ndb_num_subscriptions(struct ndb *); - -// FULLTEXT SEARCH -int ndb_text_search(struct ndb_txn *txn, const char *query, struct ndb_text_search_results *, struct ndb_text_search_config *); -int ndb_text_search_with(struct ndb_txn *txn, const char *query, struct ndb_text_search_results *, struct ndb_text_search_config *, struct ndb_filter *filter); -void ndb_default_text_search_config(struct ndb_text_search_config *); -void ndb_text_search_config_set_order(struct ndb_text_search_config *, enum ndb_search_order); -void ndb_text_search_config_set_limit(struct ndb_text_search_config *, int limit); - -// QUERY -int ndb_query(struct ndb_txn *txn, struct ndb_filter *filters, int num_filters, struct ndb_query_result *results, int result_capacity, int *count); - -// STATS -int ndb_stat(struct ndb *ndb, struct ndb_stat *stat); -void ndb_stat_counts_init(struct ndb_stat_counts *counts); - -// NOTE -const char *ndb_note_content(struct ndb_note *note); -struct ndb_str ndb_note_str(struct ndb_note *note, union ndb_packed_str *pstr); -uint32_t ndb_note_content_length(struct ndb_note *note); -uint32_t ndb_note_created_at(struct ndb_note *note); -uint32_t ndb_note_kind(struct ndb_note *note); -unsigned char *ndb_note_id(struct ndb_note *note); -unsigned char *ndb_note_pubkey(struct ndb_note *note); -unsigned char *ndb_note_sig(struct ndb_note *note); -void _ndb_note_set_kind(struct ndb_note *note, uint32_t kind); -struct ndb_tags *ndb_note_tags(struct ndb_note *note); -int ndb_str_len(struct ndb_str *str); - -/// write the note as json to a buffer -int ndb_note_json(struct ndb_note *, char *buf, int buflen); - -// TAGS -void ndb_tags_iterate_start(struct ndb_note *note, struct ndb_iterator *iter); -uint16_t ndb_tags_count(struct ndb_tags *); -uint16_t ndb_tag_count(struct ndb_tag *); - -// ITER -int ndb_tags_iterate_next(struct ndb_iterator *iter); -struct ndb_str ndb_iter_tag_str(struct ndb_iterator *iter, int ind); -struct ndb_str ndb_tag_str(struct ndb_note *note, struct ndb_tag *tag, int ind); - -// RELAY ITER -int ndb_note_relay_iterate_start(struct ndb_txn *txn, struct ndb_note_relay_iterator *iter, uint64_t note_key); -const char *ndb_note_relay_iterate_next(struct ndb_note_relay_iterator *iter); -void ndb_note_relay_iterate_close(struct ndb_note_relay_iterator *iter); - -// NAMES -const char *ndb_db_name(enum ndb_dbs db); -const char *ndb_kind_name(enum ndb_common_kind ck); -enum ndb_common_kind ndb_kind_to_common_kind(int kind); - -// CONTENT PARSER -int ndb_parse_content(unsigned char *buf, int buf_size, - const char *content, int content_len, - struct ndb_blocks **blocks_p); - -// BLOCKS -enum ndb_block_type ndb_get_block_type(struct ndb_block *block); -int ndb_blocks_flags(struct ndb_blocks *block); -size_t ndb_blocks_total_size(struct ndb_blocks *blocks); -int ndb_blocks_word_count(struct ndb_blocks *blocks); - -/// Free blocks if they are owned, safe to call on unowned blocks as well. -void ndb_blocks_free(struct ndb_blocks *blocks); - -// BLOCK DB -struct ndb_blocks *ndb_get_blocks_by_key(struct ndb *ndb, struct ndb_txn *txn, uint64_t note_key); - -// BLOCK ITERATORS -void ndb_blocks_iterate_start(const char *, struct ndb_blocks *, struct ndb_block_iterator *); -struct ndb_block *ndb_blocks_iterate_next(struct ndb_block_iterator *); - -// STR BLOCKS -struct ndb_str_block *ndb_block_str(struct ndb_block *); -const char *ndb_str_block_ptr(struct ndb_str_block *); -uint32_t ndb_str_block_len(struct ndb_str_block *); - -// BECH32 BLOCKS -struct nostr_bech32 *ndb_bech32_block(struct ndb_block *block); - -#endif diff --git a/nostrdb/src/print_util.h b/nostrdb/src/print_util.h deleted file mode 100644 index 3007c0cd6c..0000000000 --- a/nostrdb/src/print_util.h +++ /dev/null @@ -1,55 +0,0 @@ -#include "hex.h" -#include "lmdb.h" - -static void print_hex(unsigned char* data, size_t size) { - size_t i; - for (i = 0; i < size; i++) { - printf("%02x", data[i]); - } -} - -static void ndb_print_text_search_key(int bytes_size, struct ndb_text_search_key *key) -{ - printf("K<'%.*s' %" PRIu64 " %" PRIu64 " note_id:%" PRIu64 " bytes:%d>", (int)key->str_len, key->str, - key->word_index, - key->timestamp, - key->note_id, - bytes_size - ); - -} - -static void print_tag_kv(struct ndb_txn *txn, MDB_val *k, MDB_val *v) -{ - char hex_id[65]; - struct ndb_note *note; - uint64_t ts; - - ts = *(uint64_t*)((uint8_t*)k->mv_data+(k->mv_size-8)); - - // TODO: p tags, etc - if (((const char*)k->mv_data)[0] == 'e' && k->mv_size == (1 + 32 + 8)) { - printf("note_tags 'e"); - print_hex((uint8_t*)k->mv_data+1, 32); - printf("' %" PRIu64, ts); - } else { - printf("note_tags '%.*s' %" PRIu64, (int)k->mv_size-8, - (const char *)k->mv_data, ts); - } - - ts = *(uint64_t*)v->mv_data; - - note = ndb_get_note_by_key(txn, ts, NULL); - assert(note); - hex_encode(ndb_note_id(note), 32, hex_id); - printf(" note_key:%" PRIu64 " id:%s\n", ts, hex_id); -} - -static void print_hex_stream(FILE *stream, unsigned char* data, size_t size) { - size_t i; - for (i = 0; i < size; i++) { - fprintf(stream, "%02x", data[i]); - } -} - - diff --git a/nostrdb/src/protected_queue.h b/nostrdb/src/protected_queue.h deleted file mode 100644 index 25af909e05..0000000000 --- a/nostrdb/src/protected_queue.h +++ /dev/null @@ -1,242 +0,0 @@ -/* - * This header file provides a thread-safe queue implementation for generic - * data elements. It uses POSIX threads (pthreads) to ensure thread safety. - * The queue allows for pushing and popping elements, with the ability to - * block or non-block on pop operations. Users are responsible for providing - * memory for the queue buffer and ensuring its correct lifespan. - * - * Author: William Casarin - * Inspired-by: https://github.com/hoytech/hoytech-cpp/blob/master/hoytech/protected_queue.h - */ - -#ifndef PROT_QUEUE_H -#define PROT_QUEUE_H - -#include -#include -#include -#include "cursor.h" -#include "util.h" -#include "thread.h" - -#define max(a,b) ((a) > (b) ? (a) : (b)) -#define min(a,b) ((a) < (b) ? (a) : (b)) - -/* - * The prot_queue structure represents a thread-safe queue that can hold - * generic data elements. - */ -struct prot_queue { - unsigned char *buf; - size_t buflen; - - int head; - int tail; - int count; - int elem_size; - - pthread_mutex_t mutex; - pthread_cond_t cond; -}; - - -/* - * Initialize the queue. - * Params: - * q - Pointer to the queue. - * buf - Buffer for holding data elements. - * buflen - Length of the buffer. - * elem_size - Size of each data element. - * Returns 1 if successful, 0 otherwise. - */ -static inline int prot_queue_init(struct prot_queue* q, void* buf, - size_t buflen, int elem_size) -{ - // buffer elements must fit nicely in the buffer - if (buflen == 0 || buflen % elem_size != 0) - assert(!"queue elements don't fit nicely"); - - q->head = 0; - q->tail = 0; - q->count = 0; - q->buf = buf; - q->buflen = buflen; - q->elem_size = elem_size; - - pthread_mutex_init(&q->mutex, NULL); - pthread_cond_init(&q->cond, NULL); - - return 1; -} - -/* - * Return the capacity of the queue. - * q - Pointer to the queue. - */ -static inline size_t prot_queue_capacity(struct prot_queue *q) { - return q->buflen / q->elem_size; -} - -/* - * Push an element onto the queue. - * Params: - * q - Pointer to the queue. - * data - Pointer to the data element to be pushed. - * - * Returns 1 if successful, 0 if the queue is full. - */ -static int prot_queue_push(struct prot_queue* q, void *data) -{ - int cap; - - pthread_mutex_lock(&q->mutex); - - cap = prot_queue_capacity(q); - if (q->count == cap) { - // only signal if the push was sucessful - pthread_mutex_unlock(&q->mutex); - return 0; - } - - memcpy(&q->buf[q->tail * q->elem_size], data, q->elem_size); - q->tail = (q->tail + 1) % cap; - q->count++; - - pthread_cond_signal(&q->cond); - pthread_mutex_unlock(&q->mutex); - - return 1; -} - -/* - * Push multiple elements onto the queue. - * Params: - * q - Pointer to the queue. - * data - Pointer to the data elements to be pushed. - * count - Number of elements to push. - * - * Returns the number of elements successfully pushed, 0 if the queue is full or if there is not enough contiguous space. - */ -static int prot_queue_push_all(struct prot_queue* q, void *data, int count) -{ - int cap; - int first_copy_count, second_copy_count; - - pthread_mutex_lock(&q->mutex); - - cap = prot_queue_capacity(q); - if (q->count + count > cap) { - pthread_mutex_unlock(&q->mutex); - return 0; // Return failure if the queue is full - } - - first_copy_count = min(count, cap - q->tail); // Elements until the end of the buffer - second_copy_count = count - first_copy_count; // Remaining elements if wrap around - - memcpy(&q->buf[q->tail * q->elem_size], data, first_copy_count * q->elem_size); - q->tail = (q->tail + first_copy_count) % cap; - - if (second_copy_count > 0) { - // If there is a wrap around, copy the remaining elements - memcpy(&q->buf[q->tail * q->elem_size], (char *)data + first_copy_count * q->elem_size, second_copy_count * q->elem_size); - q->tail = (q->tail + second_copy_count) % cap; - } - - q->count += count; - - pthread_cond_signal(&q->cond); // Signal a waiting thread - pthread_mutex_unlock(&q->mutex); - - return count; -} - -/* - * Try to pop an element from the queue without blocking. - * Params: - * q - Pointer to the queue. - * data - Pointer to where the popped data will be stored. - * Returns 1 if successful, 0 if the queue is empty. - */ -static inline int prot_queue_try_pop_all(struct prot_queue *q, void *data, int max_items) { - int items_to_pop, items_until_end; - - pthread_mutex_lock(&q->mutex); - - if (q->count == 0) { - pthread_mutex_unlock(&q->mutex); - return 0; - } - - items_until_end = (q->buflen - q->head * q->elem_size) / q->elem_size; - items_to_pop = min(q->count, max_items); - items_to_pop = min(items_to_pop, items_until_end); - - memcpy(data, &q->buf[q->head * q->elem_size], items_to_pop * q->elem_size); - q->head = (q->head + items_to_pop) % prot_queue_capacity(q); - q->count -= items_to_pop; - - pthread_mutex_unlock(&q->mutex); - return items_to_pop; -} - -/* - * Wait until we have elements, and then pop multiple elements from the queue - * up to the specified maximum. - * - * Params: - * q - Pointer to the queue. - * buffer - Pointer to the buffer where popped data will be stored. - * max_items - Maximum number of items to pop from the queue. - * Returns the actual number of items popped. - */ -static int prot_queue_pop_all(struct prot_queue *q, void *dest, int max_items) { - pthread_mutex_lock(&q->mutex); - - // Wait until there's at least one item to pop - while (q->count == 0) { - pthread_cond_wait(&q->cond, &q->mutex); - } - - int items_until_end = (q->buflen - q->head * q->elem_size) / q->elem_size; - int items_to_pop = min(q->count, max_items); - items_to_pop = min(items_to_pop, items_until_end); - - memcpy(dest, &q->buf[q->head * q->elem_size], items_to_pop * q->elem_size); - q->head = (q->head + items_to_pop) % prot_queue_capacity(q); - q->count -= items_to_pop; - - pthread_mutex_unlock(&q->mutex); - - return items_to_pop; -} - -/* - * Pop an element from the queue. Blocks if the queue is empty. - * Params: - * q - Pointer to the queue. - * data - Pointer to where the popped data will be stored. - */ -static inline void prot_queue_pop(struct prot_queue *q, void *data) { - pthread_mutex_lock(&q->mutex); - - while (q->count == 0) - pthread_cond_wait(&q->cond, &q->mutex); - - memcpy(data, &q->buf[q->head * q->elem_size], q->elem_size); - q->head = (q->head + 1) % prot_queue_capacity(q); - q->count--; - - pthread_mutex_unlock(&q->mutex); -} - -/* - * Destroy the queue. Releases resources associated with the queue. - * Params: - * q - Pointer to the queue. - */ -static inline void prot_queue_destroy(struct prot_queue* q) { - pthread_mutex_destroy(&q->mutex); - pthread_cond_destroy(&q->cond); -} - -#endif // PROT_QUEUE_H diff --git a/nostrdb/src/random.h b/nostrdb/src/random.h deleted file mode 100644 index 736ed88b2b..0000000000 --- a/nostrdb/src/random.h +++ /dev/null @@ -1,91 +0,0 @@ -/************************************************************************* - * Copyright (c) 2020-2021 Elichai Turkel * - * Distributed under the CC0 software license, see the accompanying file * - * EXAMPLES_COPYING or https://creativecommons.org/publicdomain/zero/1.0 * - *************************************************************************/ - -/* - * This file is an attempt at collecting best practice methods for obtaining randomness with different operating systems. - * It may be out-of-date. Consult the documentation of the operating system before considering to use the methods below. - * - * Platform randomness sources: - * Linux -> `getrandom(2)`(`sys/random.h`), if not available `/dev/urandom` should be used. http://man7.org/linux/man-pages/man2/getrandom.2.html, https://linux.die.net/man/4/urandom - * macOS -> `getentropy(2)`(`sys/random.h`), if not available `/dev/urandom` should be used. https://www.unix.com/man-page/mojave/2/getentropy, https://opensource.apple.com/source/xnu/xnu-517.12.7/bsd/man/man4/random.4.auto.html - * FreeBSD -> `getrandom(2)`(`sys/random.h`), if not available `kern.arandom` should be used. https://www.freebsd.org/cgi/man.cgi?query=getrandom, https://www.freebsd.org/cgi/man.cgi?query=random&sektion=4 - * OpenBSD -> `getentropy(2)`(`unistd.h`), if not available `/dev/urandom` should be used. https://man.openbsd.org/getentropy, https://man.openbsd.org/urandom - * Windows -> `BCryptGenRandom`(`bcrypt.h`). https://docs.microsoft.com/en-us/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom - */ - -#if defined(_WIN32) -#include -#include -#include -#elif defined(__ANDROID__) -#include -#include -#include -#elif defined(__linux__) || defined(__FreeBSD__) -#include -#elif defined(__OpenBSD__) -#include -#elif defined(__APPLE__) -#include -#else -#error "Couldn't identify the OS" -#endif - -#include -#include -#include - - -/* Returns 1 on success, and 0 on failure. */ -static int fill_random(unsigned char* data, size_t size) { -#if defined(_WIN32) - NTSTATUS res = BCryptGenRandom(NULL, data, size, BCRYPT_USE_SYSTEM_PREFERRED_RNG); - if (res != STATUS_SUCCESS || size > ULONG_MAX) { - return 0; - } else { - return 1; - } -#elif defined(__ANDROID__) - int fd = open("/dev/urandom", O_RDONLY); - if (fd < 0) { - return 0; // Failed to open /dev/urandom - } - ssize_t read_bytes = 0; - while (size > 0) { - read_bytes = read(fd, data, size); - if (read_bytes <= 0) { - if (errno == EINTR) { - continue; // If interrupted by signal, try again - } - close(fd); - return 0; // Failed to read - } - data += read_bytes; - size -= read_bytes; - } - close(fd); - return 1; -#elif defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) - /* If `getrandom(2)` is not available you should fallback to /dev/urandom */ - ssize_t res = getrandom(data, size, 0); - if (res < 0 || (size_t)res != size ) { - return 0; - } else { - return 1; - } -#elif defined(__APPLE__) - /* If `getentropy(2)` is not available you should fallback to either - * `SecRandomCopyBytes` or /dev/urandom */ - int res = SecRandomCopyBytes(kSecRandomDefault, size, data); - if (res == 0) { - return 1; - } else { - return 0; - } -#endif - return 0; -} - diff --git a/nostrdb/src/str_block.h b/nostrdb/src/str_block.h deleted file mode 100644 index 1eb4e2a979..0000000000 --- a/nostrdb/src/str_block.h +++ /dev/null @@ -1,12 +0,0 @@ - -#ifndef NDB_STR_BLOCK_H -#define NDB_STR_BLOCK_H - -#include - -typedef struct ndb_str_block { - const char *str; - uint32_t len; -} str_block_t; - -#endif diff --git a/nostrdb/src/thread.h b/nostrdb/src/thread.h deleted file mode 100644 index c3f976a752..0000000000 --- a/nostrdb/src/thread.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef NDB_THREAD_H -#define NDB_THREAD_H - -#ifdef _WIN32 - #include - - #define ErrCode() GetLastError() -// Define POSIX-like thread types -typedef HANDLE pthread_t; -typedef CRITICAL_SECTION pthread_mutex_t; -typedef CONDITION_VARIABLE pthread_cond_t; - -#define ErrCode() GetLastError() - -// Mutex functions -#define pthread_mutex_init(mutex, attr) \ - (InitializeCriticalSection(mutex), 0) - -#define pthread_mutex_destroy(mutex) \ - (DeleteCriticalSection(mutex), 0) - -#define pthread_mutex_lock(mutex) \ - (EnterCriticalSection(mutex), 0) - -#define pthread_mutex_unlock(mutex) \ - (LeaveCriticalSection(mutex), 0) - -// Condition variable functions -#define pthread_cond_init(cond, attr) \ - (InitializeConditionVariable(cond), 0) - -#define pthread_cond_destroy(cond) - -#define pthread_cond_signal(cond) \ - (WakeConditionVariable(cond), 0) - -#define pthread_cond_wait(cond, mutex) \ - (SleepConditionVariableCS(cond, mutex, INFINITE) ? 0 : ErrCode()) - -// Thread functions -#define THREAD_CREATE(thr, start, arg) \ - (((thr = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)start, arg, 0, NULL)) != NULL) ? 0 : ErrCode()) - -#define THREAD_FINISH(thr) \ - (WaitForSingleObject(thr, INFINITE), CloseHandle(thr), 0) - -#define THREAD_TERMINATE(thr) \ - (TerminateThread(thr, 0) ? ErrCode() : 0) - -#else // _WIN32 - #include - - //#define ErrCode() errno - #define THREAD_CREATE(thr,start,arg) pthread_create(&thr,NULL,start,arg) - #define THREAD_FINISH(thr) pthread_join(thr,NULL) - #define THREAD_TERMINATE(thr) pthread_exit(&thr) - - #define LOCK_MUTEX(mutex) pthread_mutex_lock(mutex) - #define UNLOCK_MUTEX(mutex) pthread_mutex_unlock(mutex) - -#endif - -#endif // NDB_THREAD_H diff --git a/nostrdb/src/threadpool.h b/nostrdb/src/threadpool.h deleted file mode 100644 index 21e61cc8af..0000000000 --- a/nostrdb/src/threadpool.h +++ /dev/null @@ -1,103 +0,0 @@ - -#ifndef THREADPOOL_H -#define THREADPOOL_H - -#include "protected_queue.h" - -struct thread -{ - pthread_t thread_id; - struct prot_queue inbox; - void *qmem; - void *ctx; -}; - -struct threadpool -{ - int num_threads; - struct thread *pool; - int next_thread; - void *quit_msg; -}; - -static int threadpool_init(struct threadpool *tp, int num_threads, - int q_elem_size, int q_num_elems, - void *quit_msg, void *ctx, void* (*thread_fn)(void*)) -{ - int i; - struct thread *t; - - if (num_threads <= 0) - return 0; - - tp->num_threads = num_threads; - tp->pool = malloc(sizeof(*tp->pool) * num_threads); - tp->quit_msg = quit_msg; - tp->next_thread = -1; - - if (tp->pool == NULL) { - fprintf(stderr, "threadpool_init: couldn't allocate memory for pool"); - return 0; - } - - for (i = 0; i < num_threads; i++) { - t = &tp->pool[i]; - t->qmem = malloc(q_elem_size * q_num_elems); - t->ctx = ctx; - - if (t->qmem == NULL) { - fprintf(stderr, "threadpool_init: couldn't allocate memory for queue"); - return 0; - } - - if (!prot_queue_init(&t->inbox, t->qmem, q_elem_size * q_num_elems, q_elem_size)) { - fprintf(stderr, "threadpool_init: couldn't init queue. buffer alignment is wrong."); - return 0; - } - - if (THREAD_CREATE(t->thread_id, thread_fn, t) != 0) { - fprintf(stderr, "threadpool_init: failed to create thread\n"); - return 0; - } - } - - return 1; -} - -static inline struct thread *threadpool_next_thread(struct threadpool *tp) -{ - tp->next_thread = (tp->next_thread + 1) % tp->num_threads; - return &tp->pool[tp->next_thread]; -} - -static inline int threadpool_dispatch(struct threadpool *tp, void *msg) -{ - struct thread *t = threadpool_next_thread(tp); - return prot_queue_push(&t->inbox, msg); -} - -static inline int threadpool_dispatch_all(struct threadpool *tp, void *msgs, - int num_msgs) -{ - struct thread *t = threadpool_next_thread(tp); - return prot_queue_push_all(&t->inbox, msgs, num_msgs); -} - -static inline void threadpool_destroy(struct threadpool *tp) -{ - struct thread *t; - - for (int i = 0; i < tp->num_threads; i++) { - t = &tp->pool[i]; - if (!prot_queue_push(&t->inbox, tp->quit_msg)) { - THREAD_TERMINATE(t->thread_id); - } else { - THREAD_FINISH(t->thread_id); - } - prot_queue_destroy(&t->inbox); - free(t->qmem); - } - free(tp->pool); -} - -#endif // THREADPOOL_H diff --git a/nostrdb/src/typedefs.h b/nostrdb/src/typedefs.h deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/nostrdb/src/util.h b/nostrdb/src/util.h deleted file mode 100644 index 7a2b2723e3..0000000000 --- a/nostrdb/src/util.h +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef NDB_UTIL_H -#define NDB_UTIL_H - -static inline void* memdup(const void* src, size_t size) { - void* dest = malloc(size); - if (dest == NULL) { - return NULL; // Memory allocation failed - } - memcpy(dest, src, size); - return dest; -} - -static inline char *strdupn(const char *src, size_t size) { - char* dest = malloc(size+1); - if (dest == NULL) { - return NULL; // Memory allocation failed - } - memcpy(dest, src, size); - dest[size] = '\0'; - return dest; -} -#endif // NDB_UTIL_H - diff --git a/nostrdb/src/win.h b/nostrdb/src/win.h deleted file mode 100644 index d4cf82e29b..0000000000 --- a/nostrdb/src/win.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NOSTRDB_WIN_H -#define NOSTRDB_WIN_H -#ifdef _WIN32 - -typedef ptrdiff_t ssize_t; // ssize_t is typically a signed version of size_t - -#endif -#endif // NOSTRDB_WIN_H - diff --git a/nostrdb/str.h b/nostrdb/str.h deleted file mode 100644 index 937010e1b1..0000000000 --- a/nostrdb/str.h +++ /dev/null @@ -1,228 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_STR_H -#define CCAN_STR_H -#include "config.h" -#include -#include -#include -#include - -/** - * streq - Are two strings equal? - * @a: first string - * @b: first string - * - * This macro is arguably more readable than "!strcmp(a, b)". - * - * Example: - * if (streq(somestring, "")) - * printf("String is empty!\n"); - */ -#define streq(a,b) (strcmp((a),(b)) == 0) - -/** - * strstarts - Does this string start with this prefix? - * @str: string to test - * @prefix: prefix to look for at start of str - * - * Example: - * if (strstarts(somestring, "foo")) - * printf("String %s begins with 'foo'!\n", somestring); - */ -#define strstarts(str,prefix) (strncmp((str),(prefix),strlen(prefix)) == 0) - -/** - * strends - Does this string end with this postfix? - * @str: string to test - * @postfix: postfix to look for at end of str - * - * Example: - * if (strends(somestring, "foo")) - * printf("String %s end with 'foo'!\n", somestring); - */ -static inline bool strends(const char *str, const char *postfix) -{ - if (strlen(str) < strlen(postfix)) - return false; - - return streq(str + strlen(str) - strlen(postfix), postfix); -} - -/** - * stringify - Turn expression into a string literal - * @expr: any C expression - * - * Example: - * #define PRINT_COND_IF_FALSE(cond) \ - * ((cond) || printf("%s is false!", stringify(cond))) - */ -#define stringify(expr) stringify_1(expr) -/* Double-indirection required to stringify expansions */ -#define stringify_1(expr) #expr - -/** - * strcount - Count number of (non-overlapping) occurrences of a substring. - * @haystack: a C string - * @needle: a substring - * - * Example: - * assert(strcount("aaa aaa", "a") == 6); - * assert(strcount("aaa aaa", "ab") == 0); - * assert(strcount("aaa aaa", "aa") == 2); - */ -size_t strcount(const char *haystack, const char *needle); - -/** - * STR_MAX_CHARS - Maximum possible size of numeric string for this type. - * @type_or_expr: a pointer or integer type or expression. - * - * This provides enough space for a nul-terminated string which represents the - * largest possible value for the type or expression. - * - * Note: The implementation adds extra space so hex values or negative - * values will fit (eg. sprintf(... "%p"). ) - * - * Example: - * char str[STR_MAX_CHARS(int)]; - * - * sprintf(str, "%i", 7); - */ -#define STR_MAX_CHARS(type_or_expr) \ - ((sizeof(type_or_expr) * CHAR_BIT + 8) / 9 * 3 + 2 \ - + STR_MAX_CHARS_TCHECK_(type_or_expr)) - -#if HAVE_TYPEOF -/* Only a simple type can have 0 assigned, so test that. */ -#define STR_MAX_CHARS_TCHECK_(type_or_expr) \ - (sizeof(({ typeof(type_or_expr) x = 0; x; }))*0) -#else -#define STR_MAX_CHARS_TCHECK_(type_or_expr) 0 -#endif - -/** - * cisalnum - isalnum() which takes a char (and doesn't accept EOF) - * @c: a character - * - * Surprisingly, the standard ctype.h isalnum() takes an int, which - * must have the value of EOF (-1) or an unsigned char. This variant - * takes a real char, and doesn't accept EOF. - */ -static inline bool cisalnum(char c) -{ - return isalnum((unsigned char)c); -} -static inline bool cisalpha(char c) -{ - return isalpha((unsigned char)c); -} -static inline bool cisascii(char c) -{ - return isascii((unsigned char)c); -} -#if HAVE_ISBLANK -static inline bool cisblank(char c) -{ - return isblank((unsigned char)c); -} -#endif -static inline bool ciscntrl(char c) -{ - return iscntrl((unsigned char)c); -} -static inline bool cisdigit(char c) -{ - return isdigit((unsigned char)c); -} -static inline bool cisgraph(char c) -{ - return isgraph((unsigned char)c); -} -static inline bool cislower(char c) -{ - return islower((unsigned char)c); -} -static inline bool cisprint(char c) -{ - return isprint((unsigned char)c); -} -static inline bool cispunct(char c) -{ - return ispunct((unsigned char)c); -} -static inline bool cisspace(char c) -{ - return isspace((unsigned char)c); -} -static inline bool cisupper(char c) -{ - return isupper((unsigned char)c); -} -static inline bool cisxdigit(char c) -{ - return isxdigit((unsigned char)c); -} - -#include "str_debug.h" - -/* These checks force things out of line, hence they are under DEBUG. */ -#ifdef CCAN_STR_DEBUG -#include - -/* These are commonly misused: they take -1 or an *unsigned* char value. */ -#undef isalnum -#undef isalpha -#undef isascii -#undef isblank -#undef iscntrl -#undef isdigit -#undef isgraph -#undef islower -#undef isprint -#undef ispunct -#undef isspace -#undef isupper -#undef isxdigit - -/* You can use a char if char is unsigned. */ -#if HAVE_BUILTIN_TYPES_COMPATIBLE_P && HAVE_TYPEOF -#define str_check_arg_(i) \ - ((i) + BUILD_ASSERT_OR_ZERO(!__builtin_types_compatible_p(typeof(i), \ - char) \ - || (char)255 > 0)) -#else -#define str_check_arg_(i) (i) -#endif - -#define isalnum(i) str_isalnum(str_check_arg_(i)) -#define isalpha(i) str_isalpha(str_check_arg_(i)) -#define isascii(i) str_isascii(str_check_arg_(i)) -#if HAVE_ISBLANK -#define isblank(i) str_isblank(str_check_arg_(i)) -#endif -#define iscntrl(i) str_iscntrl(str_check_arg_(i)) -#define isdigit(i) str_isdigit(str_check_arg_(i)) -#define isgraph(i) str_isgraph(str_check_arg_(i)) -#define islower(i) str_islower(str_check_arg_(i)) -#define isprint(i) str_isprint(str_check_arg_(i)) -#define ispunct(i) str_ispunct(str_check_arg_(i)) -#define isspace(i) str_isspace(str_check_arg_(i)) -#define isupper(i) str_isupper(str_check_arg_(i)) -#define isxdigit(i) str_isxdigit(str_check_arg_(i)) - -#if HAVE_TYPEOF -/* With GNU magic, we can make const-respecting standard string functions. */ -#undef strstr -#undef strchr -#undef strrchr - -/* + 0 is needed to decay array into pointer. */ -#define strstr(haystack, needle) \ - ((typeof((haystack) + 0))str_strstr((haystack), (needle))) -#define strchr(haystack, c) \ - ((typeof((haystack) + 0))str_strchr((haystack), (c))) -#define strrchr(haystack, c) \ - ((typeof((haystack) + 0))str_strrchr((haystack), (c))) -#endif -#endif /* CCAN_STR_DEBUG */ - -#endif /* CCAN_STR_H */ diff --git a/nostrdb/str_block.h b/nostrdb/str_block.h deleted file mode 100644 index 682b094af0..0000000000 --- a/nostrdb/str_block.h +++ /dev/null @@ -1,11 +0,0 @@ -// -// str_block.h -// damus -// -// Created by William Casarin on 2023-04-09. -// - -#ifndef str_block_h -#define str_block_h - -#endif /* str_block_h */ diff --git a/nostrdb/str_debug.h b/nostrdb/str_debug.h deleted file mode 100644 index 92c10c41cc..0000000000 --- a/nostrdb/str_debug.h +++ /dev/null @@ -1,30 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_STR_DEBUG_H -#define CCAN_STR_DEBUG_H - -/* #define CCAN_STR_DEBUG 1 */ - -#ifdef CCAN_STR_DEBUG -/* Because we mug the real ones with macros, we need our own wrappers. */ -int str_isalnum(int i); -int str_isalpha(int i); -int str_isascii(int i); -#if HAVE_ISBLANK -int str_isblank(int i); -#endif -int str_iscntrl(int i); -int str_isdigit(int i); -int str_isgraph(int i); -int str_islower(int i); -int str_isprint(int i); -int str_ispunct(int i); -int str_isspace(int i); -int str_isupper(int i); -int str_isxdigit(int i); - -char *str_strstr(const char *haystack, const char *needle); -char *str_strchr(const char *s, int c); -char *str_strrchr(const char *s, int c); -#endif /* CCAN_STR_DEBUG */ - -#endif /* CCAN_STR_DEBUG_H */ diff --git a/nostrdb/structeq.h b/nostrdb/structeq.h deleted file mode 100644 index bb7014651e..0000000000 --- a/nostrdb/structeq.h +++ /dev/null @@ -1,46 +0,0 @@ -/* MIT (BSD) license - see LICENSE file for details */ -#ifndef CCAN_STRUCTEQ_H -#define CCAN_STRUCTEQ_H -#include "build_assert.h" -#include "cppmagic.h" -#include -#include - -/** - * STRUCTEQ_DEF - define an ..._eq function to compare two structures. - * @sname: name of the structure, and function (_eq) to define. - * @padbytes: number of bytes of expected padding, or negative "max". - * @...: name of every member of the structure. - * - * This generates a single memcmp() call in the common case where the - * structure contains no padding. Since it can't tell the difference between - * padding and a missing member, @padbytes can be used to assert that - * there isn't any, or how many we expect. A negative number means - * "up to or equal to that amount of padding", as padding can be - * platform dependent. - */ -#define STRUCTEQ_DEF(sname, padbytes, ...) \ -static inline bool CPPMAGIC_GLUE2(sname, _eq)(const struct sname *_a, \ - const struct sname *_b) \ -{ \ - BUILD_ASSERT(((padbytes) < 0 && \ - CPPMAGIC_JOIN(+, CPPMAGIC_MAP(STRUCTEQ_MEMBER_SIZE_, \ - __VA_ARGS__)) \ - - (padbytes) >= sizeof(*_a)) \ - || CPPMAGIC_JOIN(+, CPPMAGIC_MAP(STRUCTEQ_MEMBER_SIZE_, \ - __VA_ARGS__)) \ - + (padbytes) == sizeof(*_a)); \ - if (CPPMAGIC_JOIN(+, CPPMAGIC_MAP(STRUCTEQ_MEMBER_SIZE_, __VA_ARGS__)) \ - == sizeof(*_a)) \ - return memcmp(_a, _b, sizeof(*_a)) == 0; \ - else \ - return CPPMAGIC_JOIN(&&, \ - CPPMAGIC_MAP(STRUCTEQ_MEMBER_CMP_, \ - __VA_ARGS__)); \ -} - -/* Helpers */ -#define STRUCTEQ_MEMBER_SIZE_(m) sizeof((_a)->m) -#define STRUCTEQ_MEMBER_CMP_(m) memcmp(&_a->m, &_b->m, sizeof(_a->m)) == 0 - -#endif /* CCAN_STRUCTEQ_H */ diff --git a/nostrdb/take.c b/nostrdb/take.c deleted file mode 100644 index 3b59db0815..0000000000 --- a/nostrdb/take.c +++ /dev/null @@ -1,126 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#include "take.h" -#include "likely.h" -#include -#include -#include - -static const void **takenarr; -static const char **labelarr; -static size_t max_taken, num_taken; -static size_t allocfail; -static void (*allocfailfn)(const void *p); - -void *take_(const void *p, const char *label) -{ - /* Overallocate: it's better than risking calloc returning NULL! */ - if (unlikely(label && !labelarr)) - labelarr = calloc(max_taken+1, sizeof(*labelarr)); - - if (unlikely(num_taken == max_taken)) { - const void **new; - - new = realloc(takenarr, sizeof(*takenarr) * (max_taken+1)); - if (unlikely(!new)) { - if (allocfailfn) { - allocfail++; - allocfailfn(p); - return NULL; - } - /* Otherwise we leak p. */ - return (void *)p; - } - takenarr = new; - /* Once labelarr is set, we maintain it. */ - if (labelarr) { - const char **labelarr_new; - labelarr_new = realloc(labelarr, - sizeof(*labelarr) * (max_taken+1)); - if (labelarr_new) { - labelarr = labelarr_new; - } else { - /* num_taken will be out of sync with the size of - * labelarr after realloc failure. - * Just pretend that we never had labelarr allocated. */ - free(labelarr); - labelarr = NULL; - } - } - max_taken++; - } - if (unlikely(labelarr)) - labelarr[num_taken] = label; - takenarr[num_taken++] = p; - - return (void *)p; -} - -static size_t find_taken(const void *p) -{ - size_t i; - - for (i = 0; i < num_taken; i++) { - if (takenarr[i] == p) - return i+1; - } - return 0; -} - -bool taken(const void *p) -{ - size_t i; - - if (!p && unlikely(allocfail)) { - allocfail--; - return true; - } - - i = find_taken(p); - if (!i) - return false; - - memmove(&takenarr[i-1], &takenarr[i], - (--num_taken - (i - 1))*sizeof(takenarr[0])); - return true; -} - -bool is_taken(const void *p) -{ - if (!p && unlikely(allocfail)) - return true; - - return find_taken(p) > 0; -} - -const char *taken_any(void) -{ - static char pointer_buf[32]; - - if (num_taken == 0) - return NULL; - - /* We're *allowed* to have some with labels, some without. */ - if (labelarr) { - size_t i; - for (i = 0; i < num_taken; i++) - if (labelarr[i]) - return labelarr[i]; - } - - sprintf(pointer_buf, "%p", takenarr[0]); - return pointer_buf; -} - -void take_cleanup(void) -{ - max_taken = num_taken = 0; - free(takenarr); - takenarr = NULL; - free(labelarr); - labelarr = NULL; -} - -void take_allocfail(void (*fn)(const void *p)) -{ - allocfailfn = fn; -} diff --git a/nostrdb/take.h b/nostrdb/take.h deleted file mode 100644 index c3ee142b58..0000000000 --- a/nostrdb/take.h +++ /dev/null @@ -1,136 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_TAKE_H -#define CCAN_TAKE_H -#include "config.h" -#include -#include "str.h" - -#ifdef CCAN_TAKE_DEBUG -#define TAKE_LABEL(p) __FILE__ ":" stringify(__LINE__) ":" stringify(p) -#else -#define TAKE_LABEL(p) NULL -#endif - -/** - * TAKES - annotate a formal parameter as being take()-able - * - * This doesn't do anything, but useful for documentation. - * - * Example: - * void print_string(const char *str TAKES); - * - */ -#define TAKES - -/** - * take - record a pointer to be consumed by the function its handed to. - * @p: the pointer to mark, or NULL. - * - * This marks a pointer object to be freed by the called function, - * which is extremely useful for chaining functions. It works on - * NULL, for pass-through error handling. - */ -#define take(p) (take_typeof(p) take_((p), TAKE_LABEL(p))) - -/** - * taken - check (and un-take) a pointer was passed with take() - * @p: the pointer to check. - * - * A function which accepts take() arguments uses this to see if it - * should own the pointer; it will be removed from the take list, so - * this only returns true once. - * - * Example: - * // Silly routine to add 1 - * static int *add_one(const int *num TAKES) - * { - * int *ret; - * if (taken(num)) - * ret = (int *)num; - * else - * ret = malloc(sizeof(int)); - * if (ret) - * *ret = (*num) + 1; - * return ret; - * } - */ -bool taken(const void *p); - -/** - * is_taken - check if a pointer was passed with take() - * @p: the pointer to check. - * - * This is like the above, but doesn't remove it from the taken list. - * - * Example: - * // Silly routine to add 1: doesn't handle taken args! - * static int *add_one_notake(const int *num) - * { - * int *ret = malloc(sizeof(int)); - * assert(!is_taken(num)); - * if (ret) - * *ret = (*num) + 1; - * return ret; - * } - */ -bool is_taken(const void *p); - -/** - * taken_any - are there any taken pointers? - * - * Mainly useful for debugging take() leaks. With CCAN_TAKE_DEBUG, returns - * the label where the pointer was passed to take(), otherwise returns - * a static char buffer with the pointer value in it. NULL if none are taken. - * - * Example: - * static void cleanup(void) - * { - * assert(!taken_any()); - * } - */ -const char *taken_any(void); - -/** - * take_cleanup - remove all taken pointers from list. - * - * This is useful in atexit() handlers for valgrind-style leak detection. - * - * Example: - * static void cleanup2(void) - * { - * take_cleanup(); - * } - */ -void take_cleanup(void); - -/** - * take_allocfail - set function to call if we can't reallocated taken array. - * @fn: the function. - * - * If this is not set, then if the array reallocation fails, the - * pointer won't be marked taken(). If @fn returns, it is expected to - * free the pointer; we return NULL from take() and the function handles - * it like any allocation failure. - * - * Example: - * static void free_on_fail(const void *p) - * { - * free((void *)p); - * } - * - * static void init(void) - * { - * take_allocfail(free_on_fail); - * } - */ -void take_allocfail(void (*fn)(const void *p)); - -/* Private functions */ -#if HAVE_TYPEOF -#define take_typeof(ptr) (__typeof__(ptr)) -#else -#define take_typeof(ptr) -#endif - -void *take_(const void *p, const char *label); -#endif /* CCAN_TAKE_H */ diff --git a/nostrdb/tal.c b/nostrdb/tal.c deleted file mode 100644 index 532e37bfcc..0000000000 --- a/nostrdb/tal.c +++ /dev/null @@ -1,972 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#include "tal.h" -#include "compiler.h" -#include "list.h" -#include "alignof.h" - -#include -#include -#include -#include -#include -#include -#include - -//#define TAL_DEBUG 1 - -#define NOTIFY_IS_DESTRUCTOR 512 -#define NOTIFY_EXTRA_ARG 1024 - -/* This makes our parent_child ptr stand out for to_tal_hdr checks */ -#define TAL_PTR_OBFUSTICATOR ((intptr_t)0x1984200820142016ULL) - -/* 32-bit type field, first byte 0 in either endianness. */ -enum prop_type { - CHILDREN = 0x00c1d500, - NAME = 0x00111100, - NOTIFIER = 0x00071f00, -}; - -struct tal_hdr { - struct list_node list; - struct prop_hdr *prop; - /* XOR with TAL_PTR_OBFUSTICATOR */ - intptr_t parent_child; - size_t bytelen; -}; - -struct prop_hdr { - enum prop_type type; - struct prop_hdr *next; -}; - -struct children { - struct prop_hdr hdr; /* CHILDREN */ - struct tal_hdr *parent; - struct list_head children; /* Head of siblings. */ -}; - -struct name { - struct prop_hdr hdr; /* NAME */ - char name[]; -}; - -struct notifier { - struct prop_hdr hdr; /* NOTIFIER */ - enum tal_notify_type types; - union notifier_cb { - void (*notifyfn)(tal_t *, enum tal_notify_type, void *); - void (*destroy)(tal_t *); /* If NOTIFY_IS_DESTRUCTOR set */ - void (*destroy2)(tal_t *, void *); /* If NOTIFY_EXTRA_ARG */ - } u; -}; - -/* Extra arg */ -struct notifier_extra_arg { - struct notifier n; - void *arg; -}; - -#define EXTRA_ARG(n) (((struct notifier_extra_arg *)(n))->arg) - -static struct { - struct tal_hdr hdr; - struct children c; -} null_parent = { { { &null_parent.hdr.list, &null_parent.hdr.list }, - &null_parent.c.hdr, TAL_PTR_OBFUSTICATOR, 0 }, - { { CHILDREN, NULL }, - &null_parent.hdr, - { { &null_parent.c.children.n, - &null_parent.c.children.n } } - } -}; - - -static void *(*allocfn)(size_t size) = malloc; -static void *(*resizefn)(void *, size_t size) = realloc; -static void (*freefn)(void *) = free; -static void (*errorfn)(const char *msg) = (void *)abort; -/* Count on non-destrutor notifiers; often stays zero. */ -static size_t notifiers = 0; - -static inline void COLD call_error(const char *msg) -{ - errorfn(msg); -} - -static bool get_destroying_bit(intptr_t parent_child) -{ - return parent_child & 1; -} - -static void set_destroying_bit(intptr_t *parent_child) -{ - *parent_child |= 1; -} - -static struct children *ignore_destroying_bit(intptr_t parent_child) -{ - return (void *)((parent_child ^ TAL_PTR_OBFUSTICATOR) & ~(intptr_t)1); -} - -/* This means valgrind can see leaks. */ -void tal_cleanup(void) -{ - struct tal_hdr *i; - - while ((i = list_top(&null_parent.c.children, struct tal_hdr, list))) { - list_del(&i->list); - memset(i, 0, sizeof(*i)); - } - - /* Cleanup any taken pointers. */ - take_cleanup(); -} - -/* We carefully start all real properties with a zero byte. */ -static bool is_literal(const struct prop_hdr *prop) -{ - return ((char *)prop)[0] != 0; -} - -#ifndef NDEBUG -static const void *bounds_start, *bounds_end; - -static void update_bounds(const void *new, size_t size) -{ - if (unlikely(!bounds_start)) { - bounds_start = new; - bounds_end = (char *)new + size; - } else if (new < bounds_start) - bounds_start = new; - else if ((char *)new + size > (char *)bounds_end) - bounds_end = (char *)new + size; -} - -static bool in_bounds(const void *p) -{ - return !p - || (p >= (void *)&null_parent && p <= (void *)(&null_parent + 1)) - || (p >= bounds_start && p <= bounds_end); -} -#else -static void update_bounds(const void *new, size_t size) -{ -} - -static bool in_bounds(const void *p) -{ - return true; -} -#endif - -static void check_bounds(const void *p) -{ - if (!in_bounds(p)) - call_error("Not a valid header"); -} - -static struct tal_hdr *to_tal_hdr(const void *ctx) -{ - struct tal_hdr *t; - - t = (struct tal_hdr *)((char *)ctx - sizeof(struct tal_hdr)); - check_bounds(t); - check_bounds(ignore_destroying_bit(t->parent_child)); - check_bounds(t->list.next); - check_bounds(t->list.prev); - if (t->prop && !is_literal(t->prop)) - check_bounds(t->prop); - return t; -} - -static struct tal_hdr *to_tal_hdr_or_null(const void *ctx) -{ - if (!ctx) - return &null_parent.hdr; - return to_tal_hdr(ctx); -} - -static void *from_tal_hdr(const struct tal_hdr *hdr) -{ - return (void *)(hdr + 1); -} - -static void *from_tal_hdr_or_null(const struct tal_hdr *hdr) -{ - if (hdr == &null_parent.hdr) - return NULL; - return from_tal_hdr(hdr); -} - -#ifdef TAL_DEBUG -static struct tal_hdr *debug_tal(struct tal_hdr *tal) -{ - tal_check(from_tal_hdr_or_null(tal), "TAL_DEBUG "); - return tal; -} -#else -static struct tal_hdr *debug_tal(struct tal_hdr *tal) -{ - return tal; -} -#endif - -static void notify(const struct tal_hdr *ctx, - enum tal_notify_type type, const void *info, - int saved_errno) -{ - const struct prop_hdr *p; - - for (p = ctx->prop; p; p = p->next) { - struct notifier *n; - - if (is_literal(p)) - break; - if (p->type != NOTIFIER) - continue; - n = (struct notifier *)p; - if (n->types & type) { - errno = saved_errno; - if (n->types & NOTIFY_IS_DESTRUCTOR) { - /* Blatt this notifier in case it tries to - * tal_del_destructor() from inside */ - union notifier_cb cb = n->u; - /* It's a union, so this NULLs destroy2 too! */ - n->u.destroy = NULL; - if (n->types & NOTIFY_EXTRA_ARG) - cb.destroy2(from_tal_hdr(ctx), - EXTRA_ARG(n)); - else - cb.destroy(from_tal_hdr(ctx)); - } else - n->u.notifyfn(from_tal_hdr_or_null(ctx), type, - (void *)info); - } - } -} - -static void *allocate(size_t size) -{ - void *ret = allocfn(size); - if (!ret) - call_error("allocation failed"); - else - update_bounds(ret, size); - return ret; -} - -static struct prop_hdr **find_property_ptr(const struct tal_hdr *t, - enum prop_type type) -{ - struct prop_hdr **p; - - for (p = (struct prop_hdr **)&t->prop; *p; p = &(*p)->next) { - if (is_literal(*p)) { - if (type == NAME) - return p; - break; - } - if ((*p)->type == type) - return p; - } - return NULL; -} - -static void *find_property(const struct tal_hdr *parent, enum prop_type type) -{ - struct prop_hdr **p = find_property_ptr(parent, type); - - if (p) - return *p; - return NULL; -} - -static void init_property(struct prop_hdr *hdr, - struct tal_hdr *parent, - enum prop_type type) -{ - hdr->type = type; - hdr->next = parent->prop; - parent->prop = hdr; -} - -static struct notifier *add_notifier_property(struct tal_hdr *t, - enum tal_notify_type types, - void (*fn)(void *, - enum tal_notify_type, - void *), - void *extra_arg) -{ - struct notifier *prop; - - if (types & NOTIFY_EXTRA_ARG) - prop = allocate(sizeof(struct notifier_extra_arg)); - else - prop = allocate(sizeof(struct notifier)); - - if (prop) { - init_property(&prop->hdr, t, NOTIFIER); - prop->types = types; - prop->u.notifyfn = fn; - if (types & NOTIFY_EXTRA_ARG) - EXTRA_ARG(prop) = extra_arg; - } - return prop; -} - -static enum tal_notify_type del_notifier_property(struct tal_hdr *t, - void (*fn)(tal_t *, - enum tal_notify_type, - void *), - bool match_extra_arg, - void *extra_arg) -{ - struct prop_hdr **p; - - for (p = (struct prop_hdr **)&t->prop; *p; p = &(*p)->next) { - struct notifier *n; - enum tal_notify_type types; - - if (is_literal(*p)) - break; - if ((*p)->type != NOTIFIER) - continue; - n = (struct notifier *)*p; - if (n->u.notifyfn != fn) - continue; - - types = n->types; - if ((types & NOTIFY_EXTRA_ARG) - && match_extra_arg - && extra_arg != EXTRA_ARG(n)) - continue; - - *p = (*p)->next; - freefn(n); - return types & ~(NOTIFY_IS_DESTRUCTOR|NOTIFY_EXTRA_ARG); - } - return 0; -} - -static struct name *add_name_property(struct tal_hdr *t, const char *name) -{ - struct name *prop; - - prop = allocate(sizeof(*prop) + strlen(name) + 1); - if (prop) { - init_property(&prop->hdr, t, NAME); - strcpy(prop->name, name); - } - return prop; -} - -static struct children *add_child_property(struct tal_hdr *parent, - struct tal_hdr *child UNNEEDED) -{ - struct children *prop = allocate(sizeof(*prop)); - if (prop) { - init_property(&prop->hdr, parent, CHILDREN); - prop->parent = parent; - list_head_init(&prop->children); - } - return prop; -} - -static bool add_child(struct tal_hdr *parent, struct tal_hdr *child) -{ - struct children *children = find_property(parent, CHILDREN); - - if (!children) { - children = add_child_property(parent, child); - if (!children) - return false; - } - list_add(&children->children, &child->list); - child->parent_child = (intptr_t)children ^ TAL_PTR_OBFUSTICATOR; - return true; -} - -static void del_tree(struct tal_hdr *t, const tal_t *orig, int saved_errno) -{ - struct prop_hdr **prop, *p, *next; - - assert(!taken(from_tal_hdr(t))); - - /* Already being destroyed? Don't loop. */ - if (unlikely(get_destroying_bit(t->parent_child))) - return; - - set_destroying_bit(&t->parent_child); - - /* Call free notifiers. */ - notify(t, TAL_NOTIFY_FREE, (tal_t *)orig, saved_errno); - - /* Now free children and groups. */ - prop = find_property_ptr(t, CHILDREN); - if (prop) { - struct tal_hdr *i; - struct children *c = (struct children *)*prop; - - while ((i = list_top(&c->children, struct tal_hdr, list))) { - list_del(&i->list); - del_tree(i, orig, saved_errno); - } - } - - /* Finally free our properties. */ - for (p = t->prop; p && !is_literal(p); p = next) { - next = p->next; - freefn(p); - } - freefn(t); -} - -void *tal_alloc_(const tal_t *ctx, size_t size, bool clear, const char *label) -{ - struct tal_hdr *child, *parent = debug_tal(to_tal_hdr_or_null(ctx)); - - child = allocate(sizeof(struct tal_hdr) + size); - if (!child) - return NULL; - if (clear) - memset(from_tal_hdr(child), 0, size); - child->prop = (void *)label; - child->bytelen = size; - - if (!add_child(parent, child)) { - freefn(child); - return NULL; - } - debug_tal(parent); - if (notifiers) - notify(parent, TAL_NOTIFY_ADD_CHILD, from_tal_hdr(child), 0); - return from_tal_hdr(debug_tal(child)); -} - -static bool adjust_size(size_t *size, size_t count) -{ - const size_t extra = sizeof(struct tal_hdr); - - /* Multiplication wrap */ - if (count && unlikely(*size * count / *size != count)) - goto overflow; - - *size *= count; - - /* Make sure we don't wrap adding header. */ - if (*size + extra < extra) - goto overflow; - return true; -overflow: - call_error("allocation size overflow"); - return false; -} - -void *tal_alloc_arr_(const tal_t *ctx, size_t size, size_t count, bool clear, - const char *label) -{ - if (!adjust_size(&size, count)) - return NULL; - - return tal_alloc_(ctx, size, clear, label); -} - -void *tal_free(const tal_t *ctx) -{ - if (ctx) { - struct tal_hdr *t; - int saved_errno = errno; - t = debug_tal(to_tal_hdr(ctx)); - if (unlikely(get_destroying_bit(t->parent_child))) - return NULL; - if (notifiers) - notify(ignore_destroying_bit(t->parent_child)->parent, - TAL_NOTIFY_DEL_CHILD, ctx, saved_errno); - list_del(&t->list); - del_tree(t, ctx, saved_errno); - errno = saved_errno; - } - return NULL; -} - -void *tal_steal_(const tal_t *new_parent, const tal_t *ctx) -{ - if (ctx) { - struct tal_hdr *newpar, *t, *old_parent; - - newpar = debug_tal(to_tal_hdr_or_null(new_parent)); - t = debug_tal(to_tal_hdr(ctx)); - - /* Unlink it from old parent. */ - list_del(&t->list); - old_parent = ignore_destroying_bit(t->parent_child)->parent; - - if (unlikely(!add_child(newpar, t))) { - /* We can always add to old parent, because it has a - * children property already. */ - if (!add_child(old_parent, t)) - abort(); - return NULL; - } - debug_tal(newpar); - if (notifiers) - notify(t, TAL_NOTIFY_STEAL, new_parent, 0); - } - return (void *)ctx; -} - -bool tal_add_destructor_(const tal_t *ctx, void (*destroy)(void *me)) -{ - tal_t *t = debug_tal(to_tal_hdr(ctx)); - return add_notifier_property(t, TAL_NOTIFY_FREE|NOTIFY_IS_DESTRUCTOR, - (void *)destroy, NULL); -} - -bool tal_add_destructor2_(const tal_t *ctx, void (*destroy)(void *me, void *arg), - void *arg) -{ - tal_t *t = debug_tal(to_tal_hdr(ctx)); - return add_notifier_property(t, TAL_NOTIFY_FREE|NOTIFY_IS_DESTRUCTOR - |NOTIFY_EXTRA_ARG, - (void *)destroy, arg); -} - -/* We could support notifiers with an extra arg, but we didn't add to API */ -bool tal_add_notifier_(const tal_t *ctx, enum tal_notify_type types, - void (*callback)(tal_t *, enum tal_notify_type, void *)) -{ - struct tal_hdr *t = debug_tal(to_tal_hdr_or_null(ctx)); - struct notifier *n; - - assert(types); - assert((types & ~(TAL_NOTIFY_FREE | TAL_NOTIFY_STEAL | TAL_NOTIFY_MOVE - | TAL_NOTIFY_RESIZE | TAL_NOTIFY_RENAME - | TAL_NOTIFY_ADD_CHILD | TAL_NOTIFY_DEL_CHILD - | TAL_NOTIFY_ADD_NOTIFIER - | TAL_NOTIFY_DEL_NOTIFIER)) == 0); - - /* Don't call notifier about itself: set types after! */ - n = add_notifier_property(t, 0, callback, NULL); - if (unlikely(!n)) - return false; - - if (notifiers) - notify(t, TAL_NOTIFY_ADD_NOTIFIER, callback, 0); - - n->types = types; - if (types != TAL_NOTIFY_FREE) - notifiers++; - return true; -} - -bool tal_del_notifier_(const tal_t *ctx, - void (*callback)(tal_t *, enum tal_notify_type, void *), - bool match_extra_arg, void *extra_arg) -{ - struct tal_hdr *t = debug_tal(to_tal_hdr_or_null(ctx)); - enum tal_notify_type types; - - types = del_notifier_property(t, callback, match_extra_arg, extra_arg); - if (types) { - notify(t, TAL_NOTIFY_DEL_NOTIFIER, callback, 0); - if (types != TAL_NOTIFY_FREE) - notifiers--; - return true; - } - return false; -} - -bool tal_del_destructor_(const tal_t *ctx, void (*destroy)(void *me)) -{ - return tal_del_notifier_(ctx, (void *)destroy, false, NULL); -} - -bool tal_del_destructor2_(const tal_t *ctx, void (*destroy)(void *me, void *arg), - void *arg) -{ - return tal_del_notifier_(ctx, (void *)destroy, true, arg); -} - -bool tal_set_name_(tal_t *ctx, const char *name, bool literal) -{ - struct tal_hdr *t = debug_tal(to_tal_hdr(ctx)); - struct prop_hdr **prop = find_property_ptr(t, NAME); - - /* Get rid of any old name */ - if (prop) { - struct name *name = (struct name *)*prop; - if (is_literal(&name->hdr)) - *prop = NULL; - else { - *prop = name->hdr.next; - freefn(name); - } - } - - if (literal && name[0]) { - struct prop_hdr **p; - - /* Append literal. */ - for (p = &t->prop; *p && !is_literal(*p); p = &(*p)->next); - *p = (struct prop_hdr *)name; - } else if (!add_name_property(t, name)) - return false; - - debug_tal(t); - if (notifiers) - notify(t, TAL_NOTIFY_RENAME, name, 0); - return true; -} - -const char *tal_name(const tal_t *t) -{ - struct name *n; - - n = find_property(debug_tal(to_tal_hdr(t)), NAME); - if (!n) - return NULL; - - if (is_literal(&n->hdr)) - return (const char *)n; - return n->name; -} - -size_t tal_bytelen(const tal_t *ptr) -{ - /* NULL -> null_parent which has bytelen 0 */ - struct tal_hdr *t = debug_tal(to_tal_hdr_or_null(ptr)); - - return t->bytelen; -} - -/* Start one past first child: make stopping natural in circ. list. */ -static struct tal_hdr *first_child(struct tal_hdr *parent) -{ - struct children *child; - - child = find_property(parent, CHILDREN); - if (!child) - return NULL; - - return list_top(&child->children, struct tal_hdr, list); -} - -tal_t *tal_first(const tal_t *root) -{ - struct tal_hdr *c, *t = debug_tal(to_tal_hdr_or_null(root)); - - c = first_child(t); - if (!c) - return NULL; - return from_tal_hdr(c); -} - -tal_t *tal_next(const tal_t *prev) -{ - struct tal_hdr *next, *prevhdr = debug_tal(to_tal_hdr(prev)); - struct list_head *head; - - head = &ignore_destroying_bit(prevhdr->parent_child)->children; - next = list_next(head, prevhdr, list); - if (!next) - return NULL; - return from_tal_hdr(next); -} - -tal_t *tal_parent(const tal_t *ctx) -{ - struct tal_hdr *t; - - if (!ctx) - return NULL; - - t = debug_tal(to_tal_hdr(ctx)); - if (ignore_destroying_bit(t->parent_child)->parent == &null_parent.hdr) - return NULL; - return from_tal_hdr(ignore_destroying_bit(t->parent_child)->parent); -} - -bool tal_resize_(tal_t **ctxp, size_t size, size_t count, bool clear) -{ - struct tal_hdr *old_t, *t; - struct children *child; - - old_t = debug_tal(to_tal_hdr(*ctxp)); - - if (!adjust_size(&size, count)) - return false; - - t = resizefn(old_t, sizeof(struct tal_hdr) + size); - if (!t) { - call_error("Reallocation failure"); - return false; - } - - /* Clear between old end and new end. */ - if (clear && size > t->bytelen) { - char *old_end = (char *)(t + 1) + t->bytelen; - memset(old_end, 0, size - t->bytelen); - } - - /* Update length. */ - t->bytelen = size; - update_bounds(t, sizeof(struct tal_hdr) + size); - - /* If it didn't move, we're done! */ - if (t != old_t) { - /* Fix up linked list pointers. */ - t->list.next->prev = t->list.prev->next = &t->list; - - /* Copy take() property. */ - if (taken(from_tal_hdr(old_t))) - take(from_tal_hdr(t)); - - /* Fix up child property's parent pointer. */ - child = find_property(t, CHILDREN); - if (child) { - assert(child->parent == old_t); - child->parent = t; - } - *ctxp = from_tal_hdr(debug_tal(t)); - if (notifiers) - notify(t, TAL_NOTIFY_MOVE, from_tal_hdr(old_t), 0); - } - if (notifiers) - notify(t, TAL_NOTIFY_RESIZE, (void *)size, 0); - - return true; -} - -bool tal_expand_(tal_t **ctxp, const void *src, size_t size, size_t count) -{ - size_t old_len; - bool ret = false; - - old_len = debug_tal(to_tal_hdr(*ctxp))->bytelen; - - /* Check for additive overflow */ - if (old_len + count * size < old_len) { - call_error("dup size overflow"); - goto out; - } - - /* Don't point src inside thing we're expanding! */ - assert(src < *ctxp - || (char *)src >= (char *)(*ctxp) + old_len); - - if (!tal_resize_(ctxp, size, old_len/size + count, false)) - goto out; - - memcpy((char *)*ctxp + old_len, src, count * size); - ret = true; - -out: - if (taken(src)) - tal_free(src); - return ret; -} - -void *tal_dup_(const tal_t *ctx, const void *p, size_t size, - size_t n, size_t extra, bool nullok, const char *label) -{ - void *ret; - size_t nbytes = size; - - if (nullok && p == NULL) { - /* take(NULL) works. */ - (void)taken(p); - return NULL; - } - - if (!adjust_size(&nbytes, n)) { - if (taken(p)) - tal_free(p); - return NULL; - } - - /* Beware addition overflow! */ - if (n + extra < n) { - call_error("dup size overflow"); - if (taken(p)) - tal_free(p); - return NULL; - } - - if (taken(p)) { - if (unlikely(!p)) - return NULL; - if (unlikely(!tal_resize_((void **)&p, size, n + extra, false))) - return tal_free(p); - if (unlikely(!tal_steal(ctx, p))) - return tal_free(p); - return (void *)p; - } - - ret = tal_alloc_arr_(ctx, size, n + extra, false, label); - if (ret) - memcpy(ret, p, nbytes); - return ret; -} - -void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src TAKES, const char *label) -{ - return tal_dup_(ctx, src, 1, tal_bytelen(src), 0, true, label); -} - -void tal_set_backend(void *(*alloc_fn)(size_t size), - void *(*resize_fn)(void *, size_t size), - void (*free_fn)(void *), - void (*error_fn)(const char *msg)) -{ - if (alloc_fn) - allocfn = alloc_fn; - if (resize_fn) - resizefn = resize_fn; - if (free_fn) - freefn = free_fn; - if (error_fn) - errorfn = error_fn; -} - -#ifdef CCAN_TAL_DEBUG -static void dump_node(unsigned int indent, const struct tal_hdr *t) -{ - unsigned int i; - const struct prop_hdr *p; - - for (i = 0; i < indent; i++) - fprintf(stderr, " "); - fprintf(stderr, "%p len=%zu", t, t->bytelen); - for (p = t->prop; p; p = p->next) { - struct children *c; - struct name *n; - struct notifier *no; - if (is_literal(p)) { - fprintf(stderr, " \"%s\"", (const char *)p); - break; - } - switch (p->type) { - case CHILDREN: - c = (struct children *)p; - fprintf(stderr, " CHILDREN(%p):parent=%p,children={%p,%p}", - p, c->parent, - c->children.n.prev, c->children.n.next); - break; - case NAME: - n = (struct name *)p; - fprintf(stderr, " NAME(%p):%s", p, n->name); - break; - case NOTIFIER: - no = (struct notifier *)p; - fprintf(stderr, " NOTIFIER(%p):fn=%p", p, no->u.notifyfn); - break; - default: - fprintf(stderr, " **UNKNOWN(%p):%i**", p, p->type); - } - } - fprintf(stderr, "\n"); -} - -static void tal_dump_(unsigned int level, const struct tal_hdr *t) -{ - struct children *children; - - dump_node(level, t); - - children = find_property(t, CHILDREN); - if (children) { - struct tal_hdr *i; - - list_for_each(&children->children, i, list) - tal_dump_(level + 1, i); - } -} - -void tal_dump(void) -{ - tal_dump_(0, &null_parent.hdr); -} -#endif /* CCAN_TAL_DEBUG */ - -#ifndef NDEBUG -static bool check_err(struct tal_hdr *t, const char *errorstr, - const char *errmsg) -{ - if (errorstr) { - /* Try not to malloc: it may be corrupted. */ - char msg[strlen(errorstr) + 20 + strlen(errmsg) + 1]; - sprintf(msg, "%s:%p %s", errorstr, from_tal_hdr(t), errmsg); - call_error(msg); - } - return false; -} - -static bool check_node(struct children *parent_child, - struct tal_hdr *t, const char *errorstr) -{ - struct prop_hdr *p; - struct name *name = NULL; - struct children *children = NULL; - - if (!in_bounds(t)) - return check_err(t, errorstr, "invalid pointer"); - - if (ignore_destroying_bit(t->parent_child) != parent_child) - return check_err(t, errorstr, "incorrect parent"); - - for (p = t->prop; p; p = p->next) { - if (is_literal(p)) { - if (name) - return check_err(t, errorstr, - "has extra literal"); - break; - } - if (!in_bounds(p)) - return check_err(t, errorstr, - "has bad property pointer"); - - switch (p->type) { - case CHILDREN: - if (children) - return check_err(t, errorstr, - "has two child nodes"); - children = (struct children *)p; - break; - case NOTIFIER: - break; - case NAME: - if (name) - return check_err(t, errorstr, - "has two names"); - name = (struct name *)p; - break; - default: - return check_err(t, errorstr, "has unknown property"); - } - } - if (children) { - struct tal_hdr *i; - - if (!list_check(&children->children, errorstr)) - return false; - list_for_each(&children->children, i, list) { - if (!check_node(children, i, errorstr)) - return false; - } - } - return true; -} - -bool tal_check(const tal_t *ctx, const char *errorstr) -{ - struct tal_hdr *t = to_tal_hdr_or_null(ctx); - - return check_node(ignore_destroying_bit(t->parent_child), t, errorstr); -} -#else /* NDEBUG */ -bool tal_check(const tal_t *ctx, const char *errorstr) -{ - return true; -} -#endif diff --git a/nostrdb/tal.h b/nostrdb/tal.h deleted file mode 100644 index 838588b874..0000000000 --- a/nostrdb/tal.h +++ /dev/null @@ -1,553 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#ifndef CCAN_TAL_H -#define CCAN_TAL_H -#include "config.h" -#include "compiler.h" -#include "likely.h" -#include "typesafe_cb.h" -#include "str.h" -#include "take.h" - -#include -#include -#include - -/** - * tal_t - convenient alias for void to mark tal pointers. - * - * Since any pointer can be a tal-allocated pointer, it's often - * useful to use this typedef to mark them explicitly. - */ -typedef void tal_t; - -/** - * tal - basic allocator function - * @ctx: NULL, or tal allocated object to be parent. - * @type: the type to allocate. - * - * Allocates a specific type, with a given parent context. The name - * of the object is a string of the type, but if CCAN_TAL_DEBUG is - * defined it also contains the file and line which allocated it. - * - * tal_count() of the return will be 1. - * - * Example: - * int *p = tal(NULL, int); - * *p = 1; - */ -#define tal(ctx, type) \ - tal_label(ctx, type, TAL_LABEL(type, "")) - -/** - * talz - zeroing allocator function - * @ctx: NULL, or tal allocated object to be parent. - * @type: the type to allocate. - * - * Equivalent to tal() followed by memset() to zero. - * - * Example: - * p = talz(NULL, int); - * assert(*p == 0); - */ -#define talz(ctx, type) \ - talz_label(ctx, type, TAL_LABEL(type, "")) - -/** - * tal_free - free a tal-allocated pointer. - * @p: NULL, or tal allocated object to free. - * - * This calls the destructors for p (if any), then does the same for all its - * children (recursively) before finally freeing the memory. It returns - * NULL, for convenience. - * - * Note: errno is preserved by this call, and also saved and restored - * for any destructors or notifiers. - * - * Example: - * p = tal_free(p); - */ -void *tal_free(const tal_t *p); - -/** - * tal_arr - allocate an array of objects. - * @ctx: NULL, or tal allocated object to be parent. - * @type: the type to allocate. - * @count: the number to allocate. - * - * tal_count() of the returned pointer will be @count. - * - * Example: - * p = tal_arr(NULL, int, 2); - * p[0] = 0; - * p[1] = 1; - */ -#define tal_arr(ctx, type, count) \ - tal_arr_label(ctx, type, count, TAL_LABEL(type, "[]")) - -/** - * tal_arrz - allocate an array of zeroed objects. - * @ctx: NULL, or tal allocated object to be parent. - * @type: the type to allocate. - * @count: the number to allocate. - * - * Equivalent to tal_arr() followed by memset() to zero. - * - * Example: - * p = tal_arrz(NULL, int, 2); - * assert(p[0] == 0 && p[1] == 0); - */ -#define tal_arrz(ctx, type, count) \ - tal_arrz_label(ctx, type, count, TAL_LABEL(type, "[]")) - -/** - * tal_resize - enlarge or reduce a tal object. - * @p: A pointer to the tal allocated array to resize. - * @count: the number to allocate. - * - * This returns true on success (and may move *@p), or false on failure. - * On success, tal_count() of *@p will be @count. - * - * Note: if *p is take(), it will still be take() upon return, even if it - * has been moved. - * - * Example: - * tal_resize(&p, 100); - */ -#define tal_resize(p, count) \ - tal_resize_((void **)(p), sizeof**(p), (count), false) - -/** - * tal_resizez - enlarge or reduce a tal object; zero out extra. - * @p: A pointer to the tal allocated array to resize. - * @count: the number to allocate. - * - * This returns true on success (and may move *@p), or false on failure. - * - * Example: - * tal_resizez(&p, 200); - */ -#define tal_resizez(p, count) \ - tal_resize_((void **)(p), sizeof**(p), (count), true) - -/** - * tal_steal - change the parent of a tal-allocated pointer. - * @ctx: The new parent. - * @ptr: The tal allocated object to move, or NULL. - * - * This may need to perform an allocation, in which case it may fail; thus - * it can return NULL, otherwise returns @ptr. If @ptr is NULL, this function does - * nothing. - */ -#if HAVE_STATEMENT_EXPR -/* Weird macro avoids gcc's 'warning: value computed is not used'. */ -#define tal_steal(ctx, ptr) \ - ({ (tal_typeof(ptr) tal_steal_((ctx),(ptr))); }) -#else -#define tal_steal(ctx, ptr) \ - (tal_typeof(ptr) tal_steal_((ctx),(ptr))) -#endif - -/** - * tal_add_destructor - add a callback function when this context is destroyed. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * - * This is a more convenient form of tal_add_notifier(@ptr, - * TAL_NOTIFY_FREE, ...), in that the function prototype takes only @ptr. - * - * Note that this can only fail if your allocfn fails and your errorfn returns. - */ -#define tal_add_destructor(ptr, function) \ - tal_add_destructor_((ptr), typesafe_cb(void, void *, (function), (ptr))) - -/** - * tal_del_destructor - remove a destructor callback function. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * - * If @function has not been successfully added as a destructor, this returns - * false. Note that if we're inside the destructor call itself, this will - * return false. - */ -#define tal_del_destructor(ptr, function) \ - tal_del_destructor_((ptr), typesafe_cb(void, void *, (function), (ptr))) - -/** - * tal_add_destructor2 - add a 2-arg callback function when context is destroyed. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * @arg: the extra argument to the function. - * - * Sometimes an extra argument is required for a destructor; this - * saves the extra argument internally to avoid the caller having to - * do an extra allocation. - * - * Note that this can only fail if your allocfn fails and your errorfn returns. - */ -#define tal_add_destructor2(ptr, function, arg) \ - tal_add_destructor2_((ptr), \ - typesafe_cb_cast(void (*)(tal_t *, void *), \ - void (*)(__typeof__(ptr), \ - __typeof__(arg)), \ - (function)), \ - (arg)) - -/** - * tal_del_destructor - remove a destructor callback function. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * - * If @function has not been successfully added as a destructor, this returns - * false. Note that if we're inside the destructor call itself, this will - * return false. - */ -#define tal_del_destructor(ptr, function) \ - tal_del_destructor_((ptr), typesafe_cb(void, void *, (function), (ptr))) - -/** - * tal_del_destructor2 - remove 2-arg callback function. - * @ptr: The tal allocated object. - * @function: the function to call before it's freed. - * @arg: the extra argument to the function. - * - * If @function has not been successfully added as a destructor with - * @arg, this returns false. - */ -#define tal_del_destructor2(ptr, function, arg) \ - tal_del_destructor2_((ptr), \ - typesafe_cb_cast(void (*)(tal_t *, void *), \ - void (*)(__typeof__(ptr), \ - __typeof__(arg)), \ - (function)), \ - (arg)) -enum tal_notify_type { - TAL_NOTIFY_FREE = 1, - TAL_NOTIFY_STEAL = 2, - TAL_NOTIFY_MOVE = 4, - TAL_NOTIFY_RESIZE = 8, - TAL_NOTIFY_RENAME = 16, - TAL_NOTIFY_ADD_CHILD = 32, - TAL_NOTIFY_DEL_CHILD = 64, - TAL_NOTIFY_ADD_NOTIFIER = 128, - TAL_NOTIFY_DEL_NOTIFIER = 256 -}; - -/** - * tal_add_notifier - add a callback function when this context changes. - * @ptr: The tal allocated object, or NULL. - * @types: Bitwise OR of the types the callback is interested in. - * @callback: the function to call. - * - * Note that this can only fail if your allocfn fails and your errorfn - * returns. Also note that notifiers are not reliable in the case - * where an allocation fails, as they may be called before any - * allocation is actually done. - * - * TAL_NOTIFY_FREE is called when @ptr is freed, either directly or - * because an ancestor is freed: @info is the argument to tal_free(). - * It is exactly equivalent to a destructor, with more information. - * errno is set to the value it was at the call of tal_free(). - * - * TAL_NOTIFY_STEAL is called when @ptr's parent changes: @info is the - * new parent. - * - * TAL_NOTIFY_MOVE is called when @ptr is realloced (via tal_resize) - * and moved. In this case, @ptr arg here is the new memory, and - * @info is the old pointer. - * - * TAL_NOTIFY_RESIZE is called when @ptr is realloced via tal_resize: - * @info is the new size, in bytes. If the pointer has moved, - * TAL_NOTIFY_MOVE callbacks are called first. - * - * TAL_NOTIFY_ADD_CHILD/TAL_NOTIFY_DEL_CHILD are called when @ptr is - * the context for a tal() allocating call, or a direct child is - * tal_free()d: @info is the child. Note that TAL_NOTIFY_DEL_CHILD is - * not called when this context is tal_free()d: TAL_NOTIFY_FREE is - * considered sufficient for that case. - * - * TAL_NOTIFY_ADD_NOTIFIER/TAL_NOTIFIER_DEL_NOTIFIER are called when a - * notifier is added or removed (not for this notifier): @info is the - * callback. This is also called for tal_add_destructor and - * tal_del_destructor. - */ -#define tal_add_notifier(ptr, types, callback) \ - tal_add_notifier_((ptr), (types), \ - typesafe_cb_postargs(void, tal_t *, (callback), \ - (ptr), \ - enum tal_notify_type, void *)) - -/** - * tal_del_notifier - remove a notifier callback function. - * @ptr: The tal allocated object. - * @callback: the function to call. - */ -#define tal_del_notifier(ptr, callback) \ - tal_del_notifier_((ptr), \ - typesafe_cb_postargs(void, void *, (callback), \ - (ptr), \ - enum tal_notify_type, void *), \ - false, NULL) - -/** - * tal_set_name - attach a name to a tal pointer. - * @ptr: The tal allocated object. - * @name: The name to use. - * - * The name is copied, unless we're certain it's a string literal. - */ -#define tal_set_name(ptr, name) \ - tal_set_name_((ptr), (name), TAL_IS_LITERAL(name)) - -/** - * tal_name - get the name for a tal pointer. - * @ptr: The tal allocated object. - * - * Returns NULL if no name has been set. - */ -const char *tal_name(const tal_t *ptr); - -/** - * tal_count - get the count of objects in a tal object. - * @ptr: The tal allocated object (or NULL) - * - * Returns 0 if @ptr is NULL. Note that if the allocation was done as a - * different type to @ptr, the result may not match the @count argument - * (or implied 1) of that allocation! - */ -#define tal_count(p) (tal_bytelen(p) / sizeof(*p)) - -/** - * tal_bytelen - get the count of bytes in a tal object. - * @ptr: The tal allocated object (or NULL) - * - * Returns 0 if @ptr is NULL. - */ -size_t tal_bytelen(const tal_t *ptr); - -/** - * tal_first - get the first immediate tal object child. - * @root: The tal allocated object to start with, or NULL. - * - * Returns NULL if there are no children. - */ -tal_t *tal_first(const tal_t *root); - -/** - * tal_next - get the next immediate tal object child. - * @prev: The return value from tal_first or tal_next. - * - * Returns NULL if there are no more immediate children. This should be safe to - * call on an altering tree unless @prev is no longer valid. - */ -tal_t *tal_next(const tal_t *prev); - -/** - * tal_parent - get the parent of a tal object. - * @ctx: The tal allocated object. - * - * Returns the parent, which may be NULL. Returns NULL if @ctx is NULL. - */ -tal_t *tal_parent(const tal_t *ctx); - -/** - * tal_dup - duplicate an object. - * @ctx: The tal allocated object to be parent of the result (may be NULL). - * @type: the type (should match type of @p!) - * @p: the object to copy (or reparented if take()). Must not be NULL. - */ -#define tal_dup(ctx, type, p) \ - tal_dup_label(ctx, type, p, TAL_LABEL(type, ""), false) - -/** - * tal_dup_or_null - duplicate an object, or just pass NULL. - * @ctx: The tal allocated object to be parent of the result (may be NULL). - * @type: the type (should match type of @p!) - * @p: the object to copy (or reparented if take()) - * - * if @p is NULL, just return NULL, otherwise to tal_dup(). - */ -#define tal_dup_or_null(ctx, type, p) \ - tal_dup_label(ctx, type, p, TAL_LABEL(type, ""), true) - -/** - * tal_dup_arr - duplicate an array. - * @ctx: The tal allocated object to be parent of the result (may be NULL). - * @type: the type (should match type of @p!) - * @p: the array to copy (or resized & reparented if take()) - * @n: the number of sizeof(type) entries to copy. - * @extra: the number of extra sizeof(type) entries to allocate. - */ -#define tal_dup_arr(ctx, type, p, n, extra) \ - tal_dup_arr_label(ctx, type, p, n, extra, TAL_LABEL(type, "[]")) - - -/** - * tal_dup_arr - duplicate a tal array. - * @ctx: The tal allocated object to be parent of the result (may be NULL). - * @type: the type (should match type of @p!) - * @p: the tal array to copy (or resized & reparented if take()) - * - * The comon case of duplicating an entire tal array. - */ -#define tal_dup_talarr(ctx, type, p) \ - ((type *)tal_dup_talarr_((ctx), tal_typechk_(p, type *), \ - TAL_LABEL(type, "[]"))) -/* Lower-level interfaces, where you want to supply your own label string. */ -#define tal_label(ctx, type, label) \ - ((type *)tal_alloc_((ctx), sizeof(type), false, label)) -#define talz_label(ctx, type, label) \ - ((type *)tal_alloc_((ctx), sizeof(type), true, label)) -#define tal_arr_label(ctx, type, count, label) \ - ((type *)tal_alloc_arr_((ctx), sizeof(type), (count), false, label)) -#define tal_arrz_label(ctx, type, count, label) \ - ((type *)tal_alloc_arr_((ctx), sizeof(type), (count), true, label)) -#define tal_dup_label(ctx, type, p, label, nullok) \ - ((type *)tal_dup_((ctx), tal_typechk_(p, type *), \ - sizeof(type), 1, 0, nullok, \ - label)) -#define tal_dup_arr_label(ctx, type, p, n, extra, label) \ - ((type *)tal_dup_((ctx), tal_typechk_(p, type *), \ - sizeof(type), (n), (extra), false, \ - label)) - -/** - * tal_set_backend - set the allocation or error functions to use - * @alloc_fn: allocator or NULL (default is malloc) - * @resize_fn: re-allocator or NULL (default is realloc) - * @free_fn: free function or NULL (default is free) - * @error_fn: called on errors or NULL (default is abort) - * - * The defaults are set up so tal functions never return NULL, but you - * can override erorr_fn to change that. error_fn can return, and is - * called if alloc_fn or resize_fn fail. - * - * If any parameter is NULL, that function is unchanged. - */ -void tal_set_backend(void *(*alloc_fn)(size_t size), - void *(*resize_fn)(void *, size_t size), - void (*free_fn)(void *), - void (*error_fn)(const char *msg)); - -/** - * tal_expand - expand a tal array with contents. - * @a1p: a pointer to the tal array to expand. - * @a2: the second array (can be take()). - * @num2: the number of elements in the second array. - * - * Note that *@a1 and @a2 should be the same type. tal_count(@a1) will - * be increased by @num2. - * - * Example: - * int *arr1 = tal_arrz(NULL, int, 2); - * int arr2[2] = { 1, 3 }; - * - * tal_expand(&arr1, arr2, 2); - * assert(tal_count(arr1) == 4); - * assert(arr1[2] == 1); - * assert(arr1[3] == 3); - */ -#define tal_expand(a1p, a2, num2) \ - tal_expand_((void **)(a1p), (a2), sizeof**(a1p), \ - (num2) + 0*sizeof(*(a1p) == (a2))) - -/** - * tal_cleanup - remove pointers from NULL node - * - * Internally, tal keeps a list of nodes allocated from @ctx NULL; this - * prevents valgrind from noticing memory leaks. This re-initializes - * that list to empty. - * - * It also calls take_cleanup() for you. - */ -void tal_cleanup(void); - - -/** - * tal_check - sanity check a tal context and its children. - * @ctx: a tal context, or NULL. - * @errorstr: a string to prepend calls to error_fn, or NULL. - * - * This sanity-checks a tal tree (unless NDEBUG is defined, in which case - * it simply returns true). If errorstr is not null, error_fn is called - * when a problem is found, otherwise it is not. - * - * See also: - * tal_set_backend() - */ -bool tal_check(const tal_t *ctx, const char *errorstr); - -#ifdef CCAN_TAL_DEBUG -/** - * tal_dump - dump entire tal tree to stderr. - * - * This is a helper for debugging tal itself, which dumps all the tal internal - * state. - */ -void tal_dump(void); -#endif - -/* Internal support functions */ -#ifndef TAL_LABEL -#ifdef CCAN_TAL_NO_LABELS -#define TAL_LABEL(type, arr) NULL -#else -#ifdef CCAN_TAL_DEBUG -#define TAL_LABEL(type, arr) \ - __FILE__ ":" stringify(__LINE__) ":" stringify(type) arr -#else -#define TAL_LABEL(type, arr) stringify(type) arr -#endif /* CCAN_TAL_DEBUG */ -#endif -#endif - -#if HAVE_BUILTIN_CONSTANT_P -#define TAL_IS_LITERAL(str) __builtin_constant_p(str) -#else -#define TAL_IS_LITERAL(str) (sizeof(&*(str)) != sizeof(char *)) -#endif - -bool tal_set_name_(tal_t *ctx, const char *name, bool literal); - -#if HAVE_TYPEOF -#define tal_typeof(ptr) (__typeof__(ptr)) -#if HAVE_STATEMENT_EXPR -/* Careful: ptr can be const foo *, ptype is foo *. Also, ptr could - * be an array, eg "hello". */ -#define tal_typechk_(ptr, ptype) ({ __typeof__((ptr)+0) _p = (ptype)(ptr); _p; }) -#else -#define tal_typechk_(ptr, ptype) (ptr) -#endif -#else /* !HAVE_TYPEOF */ -#define tal_typeof(ptr) -#define tal_typechk_(ptr, ptype) (ptr) -#endif - -void *tal_alloc_(const tal_t *ctx, size_t bytes, bool clear, const char *label); -void *tal_alloc_arr_(const tal_t *ctx, size_t bytes, size_t count, bool clear, - const char *label); - -void *tal_dup_(const tal_t *ctx, const void *p TAKES, size_t size, - size_t n, size_t extra, bool nullok, const char *label); -void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src TAKES, - const char *label); - -tal_t *tal_steal_(const tal_t *new_parent, const tal_t *t); - -bool tal_resize_(tal_t **ctxp, size_t size, size_t count, bool clear); -bool tal_expand_(tal_t **ctxp, const void *src TAKES, size_t size, size_t count); - -bool tal_add_destructor_(const tal_t *ctx, void (*destroy)(void *me)); -bool tal_add_destructor2_(const tal_t *ctx, void (*destroy)(void *me, void *arg), - void *arg); -bool tal_del_destructor_(const tal_t *ctx, void (*destroy)(void *me)); -bool tal_del_destructor2_(const tal_t *ctx, void (*destroy)(void *me, void *arg), - void *arg); - -bool tal_add_notifier_(const tal_t *ctx, enum tal_notify_type types, - void (*notify)(tal_t *ctx, enum tal_notify_type, - void *info)); -bool tal_del_notifier_(const tal_t *ctx, - void (*notify)(tal_t *ctx, enum tal_notify_type, - void *info), - bool match_extra_arg, void *arg); -#endif /* CCAN_TAL_H */ diff --git a/nostrdb/talstr.c b/nostrdb/talstr.c deleted file mode 100644 index 1fb66858e4..0000000000 --- a/nostrdb/talstr.c +++ /dev/null @@ -1,315 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#include -#include -#include -#include -#include -#include "talstr.h" -#include -#include -#include -#include -#include -#include "str.h" - -char *tal_strdup_(const tal_t *ctx, const char *p, const char *label) -{ - /* We have to let through NULL for take(). */ - return tal_dup_arr_label(ctx, char, p, p ? strlen(p) + 1: 1, 0, label); -} - -char *tal_strndup_(const tal_t *ctx, const char *p, size_t n, const char *label) -{ - size_t len; - char *ret; - - /* We have to let through NULL for take(). */ - if (likely(p)) - len = strnlen(p, n); - else - len = n; - - ret = tal_dup_arr_label(ctx, char, p, len, 1, label); - if (ret) - ret[len] = '\0'; - return ret; -} - -char *tal_fmt_(const tal_t *ctx, const char *label, const char *fmt, ...) -{ - va_list ap; - char *ret; - - va_start(ap, fmt); - ret = tal_vfmt_(ctx, fmt, ap, label); - va_end(ap); - - return ret; -} - -static bool do_vfmt(char **buf, size_t off, const char *fmt, va_list ap) -{ - /* A decent guess to start. */ - size_t max = strlen(fmt) * 2 + 1; - bool ok; - - for (;;) { - va_list ap2; - int ret; - - if (!tal_resize(buf, off + max)) { - ok = false; - break; - } - - va_copy(ap2, ap); - ret = vsnprintf(*buf + off, max, fmt, ap2); - va_end(ap2); - - if (ret < max) { - ok = true; - /* Make sure tal_count() is correct! */ - tal_resize(buf, off + ret + 1); - break; - } - max *= 2; - } - - if (taken(fmt)) - tal_free(fmt); - return ok; -} - -char *tal_vfmt_(const tal_t *ctx, const char *fmt, va_list ap, const char *label) -{ - char *buf; - - if (!fmt && taken(fmt)) - return NULL; - - /* A decent guess to start. */ - buf = tal_arr_label(ctx, char, strlen(fmt) * 2, label); - if (!do_vfmt(&buf, 0, fmt, ap)) - buf = tal_free(buf); - return buf; -} - -bool tal_append_vfmt(char **baseptr, const char *fmt, va_list ap) -{ - if (!fmt && taken(fmt)) - return false; - - return do_vfmt(baseptr, strlen(*baseptr), fmt, ap); -} - -bool tal_append_fmt(char **baseptr, const char *fmt, ...) -{ - va_list ap; - bool ret; - - va_start(ap, fmt); - ret = tal_append_vfmt(baseptr, fmt, ap); - va_end(ap); - - return ret; -} - -char *tal_strcat_(const tal_t *ctx, const char *s1, const char *s2, - const char *label) -{ - size_t len1, len2; - char *ret; - - if (unlikely(!s2) && taken(s2)) { - if (taken(s1)) - tal_free(s1); - return NULL; - } - /* We have to let through NULL for take(). */ - len1 = s1 ? strlen(s1) : 0; - len2 = strlen(s2); - - ret = tal_dup_arr_label(ctx, char, s1, len1, len2 + 1, label); - if (likely(ret)) - memcpy(ret + len1, s2, len2 + 1); - - if (taken(s2)) - tal_free(s2); - return ret; -} - -char **tal_strsplit_(const tal_t *ctx, - const char *string, const char *delims, enum strsplit flags, - const char *label) -{ - char **parts, *str; - size_t max = 64, num = 0; - - parts = tal_arr(ctx, char *, max + 1); - if (unlikely(!parts)) { - if (taken(string)) - tal_free(string); - if (taken(delims)) - tal_free(delims); - return NULL; - } - str = tal_strdup(parts, string); - if (unlikely(!str)) - goto fail; - if (unlikely(!delims) && is_taken(delims)) - goto fail; - - if (flags == STR_NO_EMPTY) - str += strspn(str, delims); - - while (*str != '\0') { - size_t len = strcspn(str, delims), dlen; - - parts[num] = str; - dlen = strspn(str + len, delims); - parts[num][len] = '\0'; - if (flags == STR_EMPTY_OK && dlen) - dlen = 1; - str += len + dlen; - if (++num == max && !tal_resize(&parts, max*=2 + 1)) - goto fail; - } - parts[num] = NULL; - - /* Ensure that tal_count() is correct. */ - if (unlikely(!tal_resize(&parts, num+1))) - goto fail; - - if (taken(delims)) - tal_free(delims); - return parts; - -fail: - tal_free(parts); - if (taken(delims)) - tal_free(delims); - return NULL; -} - -char *tal_strjoin_(const tal_t *ctx, - char *strings[], const char *delim, enum strjoin flags, - const char *label) -{ - unsigned int i; - char *ret = NULL; - size_t totlen = 0, dlen; - - if (unlikely(!strings) && is_taken(strings)) - goto fail; - - if (unlikely(!delim) && is_taken(delim)) - goto fail; - - dlen = strlen(delim); - ret = tal_arr_label(ctx, char, dlen*2+1, label); - if (!ret) - goto fail; - - ret[0] = '\0'; - for (i = 0; strings[i]; i++) { - size_t len = strlen(strings[i]); - - if (flags == STR_NO_TRAIL && !strings[i+1]) - dlen = 0; - if (!tal_resize(&ret, totlen + len + dlen + 1)) - goto fail; - memcpy(ret + totlen, strings[i], len); - totlen += len; - memcpy(ret + totlen, delim, dlen); - totlen += dlen; - } - ret[totlen] = '\0'; - /* Make sure tal_count() is correct! */ - tal_resize(&ret, totlen+1); -out: - if (taken(strings)) - tal_free(strings); - if (taken(delim)) - tal_free(delim); - return ret; -fail: - ret = tal_free(ret); - goto out; -} - -static size_t count_open_braces(const char *string) -{ -#if 1 - size_t num = 0, esc = 0; - - while (*string) { - if (*string == '\\') - esc++; - else { - /* An odd number of \ means it's escaped. */ - if (*string == '(' && (esc & 1) == 0) - num++; - esc = 0; - } - string++; - } - return num; -#else - return strcount(string, "("); -#endif -} - -bool tal_strreg_(const tal_t *ctx, const char *string, const char *label, - const char *regex, ...) -{ - size_t nmatch = 1 + count_open_braces(regex); - regmatch_t matches[nmatch]; - regex_t r; - bool ret = false; - unsigned int i; - va_list ap; - - if (unlikely(!regex) && is_taken(regex)) - goto fail_no_re; - - if (regcomp(&r, regex, REG_EXTENDED) != 0) - goto fail_no_re; - - if (unlikely(!string) && is_taken(string)) - goto fail; - - if (regexec(&r, string, nmatch, matches, 0) != 0) - goto fail; - - ret = true; - va_start(ap, regex); - for (i = 1; i < nmatch; i++) { - char **arg = va_arg(ap, char **); - if (arg) { - /* eg. ([a-z])? can give "no match". */ - if (matches[i].rm_so == -1) - *arg = NULL; - else { - *arg = tal_strndup_(ctx, - string + matches[i].rm_so, - matches[i].rm_eo - - matches[i].rm_so, - label); - /* FIXME: If we fail, we set some and leak! */ - if (!*arg) { - ret = false; - break; - } - } - } - } - va_end(ap); -fail: - regfree(&r); -fail_no_re: - if (taken(regex)) - tal_free(regex); - if (taken(string)) - tal_free(string); - return ret; -} diff --git a/nostrdb/talstr.h b/nostrdb/talstr.h deleted file mode 100644 index fbf53a86c3..0000000000 --- a/nostrdb/talstr.h +++ /dev/null @@ -1,225 +0,0 @@ -/* Licensed under BSD-MIT - see LICENSE file for details */ -#ifndef CCAN_STR_TAL_H -#define CCAN_STR_TAL_H -#ifdef TAL_USE_TALLOC -#include -#else -#include "tal.h" -#endif -#include -#include - -/** - * tal_strdup - duplicate a string - * @ctx: NULL, or tal allocated object to be parent. - * @p: the string to copy (can be take()). - * - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_strdup(ctx, p) tal_strdup_(ctx, p, TAL_LABEL(char, "[]")) -char *tal_strdup_(const tal_t *ctx, const char *p TAKES, const char *label); - -/** - * tal_strndup - duplicate a limited amount of a string. - * @ctx: NULL, or tal allocated object to be parent. - * @p: the string to copy (can be take()). - * @n: the maximum length to copy. - * - * Always gives a nul-terminated string, with strlen() <= @n. - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_strndup(ctx, p, n) tal_strndup_(ctx, p, n, TAL_LABEL(char, "[]")) -char *tal_strndup_(const tal_t *ctx, const char *p TAKES, size_t n, - const char *label); - -/** - * tal_fmt - allocate a formatted string - * @ctx: NULL, or tal allocated object to be parent. - * @fmt: the printf-style format (can be take()). - * - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_fmt(ctx, ...) \ - tal_fmt_(ctx, TAL_LABEL(char, "[]"), __VA_ARGS__) -char *tal_fmt_(const tal_t *ctx, const char *label, const char *fmt TAKES, - ...) PRINTF_FMT(3,4); - -/** - * tal_vfmt - allocate a formatted string (va_list version) - * @ctx: NULL, or tal allocated object to be parent. - * @fmt: the printf-style format (can be take()). - * @va: the va_list containing the format args. - * - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_vfmt(ctx, fmt, va) \ - tal_vfmt_(ctx, fmt, va, TAL_LABEL(char, "[]")) -char *tal_vfmt_(const tal_t *ctx, const char *fmt TAKES, va_list ap, - const char *label) - PRINTF_FMT(2,0); - -/** - * tal_append_fmt - append a formatted string to a talloc string. - * @baseptr: a pointer to the tal string to be appended to. - * @fmt: the printf-style format (can be take()). - * - * Returns false on allocation failure. - * Otherwise tal_count(*@baseptr) == strlen(*@baseptr) + 1. - */ -bool tal_append_fmt(char **baseptr, const char *fmt TAKES, ...) PRINTF_FMT(2,3); - -/** - * tal_append_vfmt - append a formatted string to a talloc string (va_list) - * @baseptr: a pointer to the tal string to be appended to. - * @fmt: the printf-style format (can be take()). - * @va: the va_list containing the format args. - * - * Returns false on allocation failure. - * Otherwise tal_count(*@baseptr) == strlen(*@baseptr) + 1. - */ -bool tal_append_vfmt(char **baseptr, const char *fmt TAKES, va_list ap); - -/** - * tal_strcat - join two strings together - * @ctx: NULL, or tal allocated object to be parent. - * @s1: the first string (can be take()). - * @s2: the second string (can be take()). - * - * The returned string will have tal_count() == strlen() + 1. - */ -#define tal_strcat(ctx, s1, s2) tal_strcat_(ctx, s1, s2, TAL_LABEL(char, "[]")) -char *tal_strcat_(const tal_t *ctx, const char *s1 TAKES, const char *s2 TAKES, - const char *label); - -enum strsplit { - STR_EMPTY_OK, - STR_NO_EMPTY -}; - -/** - * tal_strsplit - Split string into an array of substrings - * @ctx: the context to tal from (often NULL). - * @string: the string to split (can be take()). - * @delims: delimiters where lines should be split (can be take()). - * @flags: whether to include empty substrings. - * - * This function splits a single string into multiple strings. - * - * If @string is take(), the returned array will point into the - * mangled @string. - * - * Multiple delimiters result in empty substrings. By definition, no - * delimiters will appear in the substrings. - * - * The final char * in the array will be NULL, and tal_count() will - * return the number of elements plus 1 (for that NULL). - * - * Example: - * #include - * ... - * static unsigned int count_long_lines(const char *string) - * { - * char **lines; - * unsigned int i, long_lines = 0; - * - * // Can only fail on out-of-memory. - * lines = tal_strsplit(NULL, string, "\n", STR_NO_EMPTY); - * for (i = 0; lines[i] != NULL; i++) - * if (strlen(lines[i]) > 80) - * long_lines++; - * tal_free(lines); - * return long_lines; - * } - */ -#define tal_strsplit(ctx, string, delims, flag) \ - tal_strsplit_(ctx, string, delims, flag, TAL_LABEL(char *, "[]")) -char **tal_strsplit_(const tal_t *ctx, - const char *string TAKES, - const char *delims TAKES, - enum strsplit flag, - const char *label); - -enum strjoin { - STR_TRAIL, - STR_NO_TRAIL -}; - -/** - * tal_strjoin - Join an array of substrings into one long string - * @ctx: the context to tal from (often NULL). - * @strings: the NULL-terminated array of strings to join (can be take()) - * @delim: the delimiter to insert between the strings (can be take()) - * @flags: whether to add a delimieter to the end - * - * This function joins an array of strings into a single string. The - * return value is allocated using tal. Each string in @strings is - * followed by a copy of @delim. - * - * The returned string will have tal_count() == strlen() + 1. - * - * Example: - * // Append the string "--EOL" to each line. - * static char *append_to_all_lines(const char *string) - * { - * char **lines, *ret; - * - * lines = tal_strsplit(NULL, string, "\n", STR_EMPTY_OK); - * ret = tal_strjoin(NULL, lines, "-- EOL\n", STR_TRAIL); - * tal_free(lines); - * return ret; - * } - */ -#define tal_strjoin(ctx, strings, delim, flags) \ - tal_strjoin_(ctx, strings, delim, flags, TAL_LABEL(char, "[]")) -char *tal_strjoin_(const void *ctx, - char *strings[] TAKES, - const char *delim TAKES, - enum strjoin flags, - const char *label); - -/** - * tal_strreg - match/extract from a string via (extended) regular expressions. - * @ctx: the context to tal from (often NULL) - * @string: the string to try to match (can be take()) - * @regex: the regular expression to match (can be take()) - * ...: pointers to strings to allocate for subexpressions. - * - * Returns true if we matched, in which case any parenthesized - * expressions in @regex are allocated and placed in the char ** - * arguments following @regex. NULL arguments mean the match is not - * saved. The order of the strings is the order - * of opening braces in the expression: in the case of repeated - * expressions (eg "([a-z])*") the last one is saved, in the case of - * non-existent matches (eg "([a-z]*)?") the pointer is set to NULL. - * - * Allocation failures or malformed regular expressions return false. - * The allocated strings will have tal_count() == strlen() + 1. - * - * See Also: - * regcomp(3), regex(3). - * - * Example: - * // Given "My name is Rusty" outputs "Hello Rusty!\n" - * // Given "my first name is Rusty Russell" outputs "Hello Rusty Russell!\n" - * // Given "My name isnt Rusty Russell" outputs "Hello there!\n" - * int main(int argc, char *argv[]) - * { - * char *person, *input; - * - * (void)argc; - * // Join args and trim trailing space. - * input = tal_strjoin(NULL, argv+1, " ", STR_NO_TRAIL); - * if (tal_strreg(NULL, input, - * "[Mm]y (first )?name is ([A-Za-z ]+)", - * NULL, &person)) - * printf("Hello %s!\n", person); - * else - * printf("Hello there!\n"); - * return 0; - * } - */ -#define tal_strreg(ctx, string, ...) \ - tal_strreg_(ctx, string, TAL_LABEL(char, "[]"), __VA_ARGS__) -bool tal_strreg_(const void *ctx, const char *string TAKES, - const char *label, const char *regex, ...); -#endif /* CCAN_STR_TAL_H */ diff --git a/nostrdb/test.c b/nostrdb/test.c deleted file mode 100644 index 2a09f9afb7..0000000000 --- a/nostrdb/test.c +++ /dev/null @@ -1,1009 +0,0 @@ - -#include "nostrdb.h" -#include "hex.h" -#include "io.h" -#include "bolt11/bolt11.h" -#include "bolt11/amount.h" -#include "protected_queue.h" -#include "memchr.h" -#include "print_util.h" -#include "bindings/c/profile_reader.h" -#include "bindings/c/profile_verifier.h" -#include "bindings/c/meta_reader.h" -#include "bindings/c/meta_verifier.h" - -#include -#include -#include - -#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) - -static const char *test_dir = "./testdata/db"; - -static NdbProfile_table_t lookup_profile(struct ndb_txn *txn, uint64_t pk) -{ - void *root; - size_t len; - assert((root = ndb_get_profile_by_key(txn, pk, &len))); - assert(root); - - NdbProfileRecord_table_t profile_record = NdbProfileRecord_as_root(root); - NdbProfile_table_t profile = NdbProfileRecord_profile_get(profile_record); - return profile; -} - -static void print_search(struct ndb_txn *txn, struct ndb_search *search) -{ - NdbProfile_table_t profile = lookup_profile(txn, search->profile_key); - const char *name = NdbProfile_name_get(profile); - const char *display_name = NdbProfile_display_name_get(profile); - printf("searched_name name:'%s' display_name:'%s' pk:%" PRIu64 " ts:%" PRIu64 " id:", name, display_name, search->profile_key, search->key->timestamp); - print_hex(search->key->id, 32); - printf("\n"); -} - - -static void test_filters() -{ - struct ndb_filter filter, *f; - struct ndb_note *note; - unsigned char buffer[4096]; - - const char *test_note = "{\"id\": \"160e76ca67405d7ce9ef7d2dd72f3f36401c8661a73d45498af842d40b01b736\",\"pubkey\": \"67c67870aebc327eb2a2e765e6dbb42f0f120d2c4e4e28dc16b824cf72a5acc1\",\"created_at\": 1700688516,\"kind\": 1337,\"tags\": [[\"t\",\"hashtag\"],[\"t\",\"grownostr\"],[\"p\",\"4d2e7a6a8e08007ace5a03391d21735f45caf1bf3d67b492adc28967ab46525e\"]],\"content\": \"\",\"sig\": \"20c2d070261ed269559ada40ca5ac395c389681ee3b5f7d50de19dd9b328dd70cf27d9d13875e87c968d9b49fa05f66e90f18037be4529b9e582c7e2afac3f06\"}"; - - f = &filter; - assert(ndb_note_from_json(test_note, strlen(test_note), ¬e, buffer, sizeof(buffer))); - - assert(ndb_filter_init(f)); - assert(ndb_filter_start_field(f, NDB_FILTER_KINDS)); - assert(ndb_filter_add_int_element(f, 1337)); - assert(ndb_filter_add_int_element(f, 2)); - - assert(f->current->count == 2); - assert(f->current->field.type == NDB_FILTER_KINDS); - - // can't start if we've already started - assert(ndb_filter_start_field(f, NDB_FILTER_KINDS) == 0); - assert(ndb_filter_start_field(f, NDB_FILTER_GENERIC) == 0); - ndb_filter_end_field(f); - - // try matching the filter - assert(ndb_filter_matches(f, note)); - - _ndb_note_set_kind(note, 1); - - // inverse match - assert(!ndb_filter_matches(f, note)); - - // should also match 2 - _ndb_note_set_kind(note, 2); - assert(ndb_filter_matches(f, note)); - - // don't free, just reset data pointers - ndb_filter_reset(f); - - // now try generic matches - assert(ndb_filter_start_generic_field(f, 't')); - assert(ndb_filter_add_str_element(f, "grownostr")); - ndb_filter_end_field(f); - assert(ndb_filter_start_field(f, NDB_FILTER_KINDS)); - assert(ndb_filter_add_int_element(f, 3)); - ndb_filter_end_field(f); - - // shouldn't match the kind filter - assert(!ndb_filter_matches(f, note)); - - _ndb_note_set_kind(note, 3); - - // now it should - assert(ndb_filter_matches(f, note)); - - ndb_filter_reset(f); - assert(ndb_filter_start_field(f, NDB_FILTER_AUTHORS)); - assert(ndb_filter_add_id_element(f, ndb_note_pubkey(note))); - ndb_filter_end_field(f); - assert(f->current == NULL); - assert(ndb_filter_matches(f, note)); - - ndb_filter_free(f); -} - -// Test fetched_at profile records. These are saved when new profiles are -// processed, or the last time we've fetched the profile. -static void test_fetched_at() -{ - struct ndb *ndb; - struct ndb_txn txn; - uint64_t fetched_at, t1, t2; - struct ndb_config config; - ndb_default_config(&config); - - assert(ndb_init(&ndb, test_dir, &config)); - - const unsigned char pubkey[] = { 0x87, 0xfb, 0xc6, 0xd5, 0x98, 0x31, 0xa8, 0x23, 0xa4, 0x5d, 0x10, 0x1f, - 0x86, 0x94, 0x2c, 0x41, 0xcd, 0xe2, 0x90, 0x23, 0xf4, 0x09, 0x20, 0x24, - 0xa2, 0x7c, 0x50, 0x10, 0x3c, 0x15, 0x40, 0x01 }; - - const char profile_1[] = "[\"EVENT\",{\"id\": \"a44eb8fb6931d6155b04038bef0624407e46c85c61e5758392cbb615f00184ca\",\"pubkey\": \"87fbc6d59831a823a45d101f86942c41cde29023f4092024a27c50103c154001\",\"created_at\": 1695593354,\"kind\": 0,\"tags\": [],\"content\": \"{\\\"name\\\":\\\"b\\\"}\",\"sig\": \"7540bbde4b4479275e20d95acaa64027359a73989927f878825093cba2f468bd8e195919a77b4c230acecddf92e6b4bee26918b0c0842f84ec7c1fae82453906\"}]"; - - t1 = time(NULL); - - // process the first event, this should set the fetched_at - assert(ndb_process_client_event(ndb, profile_1, sizeof(profile_1))); - - // we sleep for a second because we want to make sure the fetched_at is not - // updated for the next record, which is an older profile. - sleep(1); - - assert(ndb_begin_query(ndb, &txn)); - - // this should be set to t1 - fetched_at = ndb_read_last_profile_fetch(&txn, pubkey); - - assert(fetched_at == t1); - - t2 = time(NULL); - assert(t1 != t2); // sanity - - const char profile_2[] = "[\"EVENT\",{\"id\": \"9b2861dda8fc602ec2753f92f1a443c9565de606e0c8f4fd2db4f2506a3b13ca\",\"pubkey\": \"87fbc6d59831a823a45d101f86942c41cde29023f4092024a27c50103c154001\",\"created_at\": 1695593347,\"kind\": 0,\"tags\": [],\"content\": \"{\\\"name\\\":\\\"a\\\"}\",\"sig\": \"f48da228f8967d33c3caf0a78f853b5144631eb86c7777fd25949123a5272a92765a0963d4686dd0efe05b7a9b986bfac8d43070b234153acbae5006d5a90f31\"}]"; - - t2 = time(NULL); - - // process the second event, since this is older it should not change - // fetched_at - assert(ndb_process_client_event(ndb, profile_2, sizeof(profile_2))); - - // we sleep for a second because we want to make sure the fetched_at is not - // updated for the next record, which is an older profile. - sleep(1); - - fetched_at = ndb_read_last_profile_fetch(&txn, pubkey); - assert(fetched_at == t1); -} - -static void test_reaction_counter() -{ - static const int alloc_size = 1024 * 1024; - char *json = malloc(alloc_size); - struct ndb *ndb; - size_t len; - void *root; - int written, reactions; - NdbEventMeta_table_t meta; - struct ndb_txn txn; - struct ndb_config config; - ndb_default_config(&config); - - assert(ndb_init(&ndb, test_dir, &config)); - - read_file("testdata/reactions.json", (unsigned char*)json, alloc_size, &written); - assert(ndb_process_client_events(ndb, json, written)); - ndb_destroy(ndb); - - assert(ndb_init(&ndb, test_dir, &config)); - - assert(ndb_begin_query(ndb, &txn)); - - const unsigned char id[32] = { - 0x1a, 0x41, 0x56, 0x30, 0x31, 0x09, 0xbb, 0x4a, 0x66, 0x0a, 0x6a, 0x90, - 0x04, 0xb0, 0xcd, 0xce, 0x8d, 0x83, 0xc3, 0x99, 0x1d, 0xe7, 0x86, 0x4f, - 0x18, 0x76, 0xeb, 0x0f, 0x62, 0x2c, 0x68, 0xe8 - }; - - assert((root = ndb_get_note_meta(&txn, id, &len))); - assert(0 == NdbEventMeta_verify_as_root(root, len)); - assert((meta = NdbEventMeta_as_root(root))); - - reactions = NdbEventMeta_reactions_get(meta); - //printf("counted reactions: %d\n", reactions); - assert(reactions == 2); - ndb_end_query(&txn); - ndb_destroy(ndb); -} - -static void test_profile_search(struct ndb *ndb) -{ - struct ndb_txn txn; - struct ndb_search search; - int i; - const char *name; - NdbProfile_table_t profile; - - assert(ndb_begin_query(ndb, &txn)); - assert(ndb_search_profile(&txn, &search, "jean")); - //print_search(&txn, &search); - profile = lookup_profile(&txn, search.profile_key); - name = NdbProfile_name_get(profile); - assert(!strncmp(name, "jean", 4)); - - assert(ndb_search_profile_next(&search)); - //print_search(&txn, &search); - profile = lookup_profile(&txn, search.profile_key); - name = NdbProfile_name_get(profile); - //assert(strncmp(name, "jean", 4)); - - for (i = 0; i < 3; i++) { - ndb_search_profile_next(&search); - //print_search(&txn, &search); - } - - //assert(!strcmp(name, "jb55")); - - ndb_search_profile_end(&search); - ndb_end_query(&txn); -} - -static void test_profile_updates() -{ - static const int alloc_size = 1024 * 1024; - char *json = malloc(alloc_size); - struct ndb *ndb; - size_t len; - void *record; - int written; - struct ndb_txn txn; - uint64_t key; - struct ndb_config config; - ndb_default_config(&config); - - assert(ndb_init(&ndb, test_dir, &config)); - - read_file("testdata/profile-updates.json", (unsigned char*)json, alloc_size, &written); - - assert(ndb_process_client_events(ndb, json, written)); - - ndb_destroy(ndb); - - assert(ndb_init(&ndb, test_dir, &config)); - - assert(ndb_begin_query(ndb, &txn)); - const unsigned char pk[32] = { - 0x87, 0xfb, 0xc6, 0xd5, 0x98, 0x31, 0xa8, 0x23, 0xa4, 0x5d, - 0x10, 0x1f, 0x86, 0x94, 0x2c, 0x41, 0xcd, 0xe2, 0x90, 0x23, - 0xf4, 0x09, 0x20, 0x24, 0xa2, 0x7c, 0x50, 0x10, 0x3c, 0x15, - 0x40, 0x01 - }; - record = ndb_get_profile_by_pubkey(&txn, pk, &len, &key); - - assert(record); - int res = NdbProfileRecord_verify_as_root(record, len); - assert(res == 0); - - NdbProfileRecord_table_t profile_record = NdbProfileRecord_as_root(record); - NdbProfile_table_t profile = NdbProfileRecord_profile_get(profile_record); - const char *name = NdbProfile_name_get(profile); - - assert(!strcmp(name, "c")); - - ndb_destroy(ndb); -} - -static void test_load_profiles() -{ - static const int alloc_size = 1024 * 1024; - char *json = malloc(alloc_size); - struct ndb *ndb; - int written; - struct ndb_config config; - ndb_default_config(&config); - - assert(ndb_init(&ndb, test_dir, &config)); - - read_file("testdata/profiles.json", (unsigned char*)json, alloc_size, &written); - - assert(ndb_process_events(ndb, json, written)); - - ndb_destroy(ndb); - - assert(ndb_init(&ndb, test_dir, &config)); - unsigned char id[32] = { - 0x22, 0x05, 0x0b, 0x6d, 0x97, 0xbb, 0x9d, 0xa0, 0x9e, 0x90, 0xed, 0x0c, - 0x6d, 0xd9, 0x5e, 0xed, 0x1d, 0x42, 0x3e, 0x27, 0xd5, 0xcb, 0xa5, 0x94, - 0xd2, 0xb4, 0xd1, 0x3a, 0x55, 0x43, 0x09, 0x07 }; - const char *expected_content = "{\"website\":\"selenejin.com\",\"lud06\":\"\",\"nip05\":\"selenejin@BitcoinNostr.com\",\"picture\":\"https://nostr.build/i/3549697beda0fe1f4ae621f359c639373d92b7c8d5c62582b656c5843138c9ed.jpg\",\"display_name\":\"Selene Jin\",\"about\":\"INTJ | Founding Designer @Blockstream\",\"name\":\"SeleneJin\"}"; - - struct ndb_txn txn; - assert(ndb_begin_query(ndb, &txn)); - struct ndb_note *note = ndb_get_note_by_id(&txn, id, NULL, NULL); - assert(note != NULL); - assert(!strcmp(ndb_note_content(note), expected_content)); - ndb_end_query(&txn); - - test_profile_search(ndb); - - ndb_destroy(ndb); - - free(json); -} - -static void test_fuzz_events() { - struct ndb *ndb; - const char *str = "[\"EVENT\"\"\"{\"content\"\"created_at\":0 \"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153 ea93cf5\"\"tags\"[[][\"\"]]}]"; - struct ndb_config config; - ndb_default_config(&config); - - ndb_init(&ndb, test_dir, &config); - ndb_process_event(ndb, str, strlen(str)); - ndb_destroy(ndb); -} - -static void test_migrate() { - static const char *v0_dir = "testdata/db/v0"; - struct ndb *ndb; - struct ndb_config config; - ndb_default_config(&config); - ndb_config_set_flags(&config, NDB_FLAG_NOMIGRATE); - - fprintf(stderr, "testing migrate on v0\n"); - assert(ndb_init(&ndb, v0_dir, &config)); - assert(ndb_db_version(ndb) == 0); - ndb_destroy(ndb); - - ndb_config_set_flags(&config, 0); - - assert(ndb_init(&ndb, v0_dir, &config)); - ndb_destroy(ndb); - assert(ndb_init(&ndb, v0_dir, &config)); - assert(ndb_db_version(ndb) == 3); - - test_profile_search(ndb); - ndb_destroy(ndb); -} - -static void test_basic_event() { - unsigned char buf[512]; - struct ndb_builder builder, *b = &builder; - struct ndb_note *note; - int ok; - - unsigned char id[32]; - memset(id, 1, 32); - - unsigned char pubkey[32]; - memset(pubkey, 2, 32); - - unsigned char sig[64]; - memset(sig, 3, 64); - - const char *hex_pk = "5d9b81b2d4d5609c5565286fc3b511dc6b9a1b3d7d1174310c624d61d1f82bb9"; - - ok = ndb_builder_init(b, buf, sizeof(buf)); - assert(ok); - note = builder.note; - - //memset(note->padding, 3, sizeof(note->padding)); - - ok = ndb_builder_set_content(b, hex_pk, strlen(hex_pk)); assert(ok); - ndb_builder_set_id(b, id); assert(ok); - ndb_builder_set_pubkey(b, pubkey); assert(ok); - ndb_builder_set_sig(b, sig); assert(ok); - - ok = ndb_builder_new_tag(b); assert(ok); - ok = ndb_builder_push_tag_str(b, "p", 1); assert(ok); - ok = ndb_builder_push_tag_str(b, hex_pk, 64); assert(ok); - - ok = ndb_builder_new_tag(b); assert(ok); - ok = ndb_builder_push_tag_str(b, "word", 4); assert(ok); - ok = ndb_builder_push_tag_str(b, "words", 5); assert(ok); - ok = ndb_builder_push_tag_str(b, "w", 1); assert(ok); - - ok = ndb_builder_finalize(b, ¬e, NULL); - assert(ok); - - // content should never be packed id - // TODO: figure out how to test this now that we don't expose it - // assert(note->content.packed.flag != NDB_PACKED_ID); - assert(ndb_tags_count(ndb_note_tags(note)) == 2); - - // test iterator - struct ndb_iterator iter, *it = &iter; - - ndb_tags_iterate_start(note, it); - ok = ndb_tags_iterate_next(it); - assert(ok); - - assert(ndb_tag_count(it->tag) == 2); - const char *p = ndb_iter_tag_str(it, 0).str; - struct ndb_str hpk = ndb_iter_tag_str(it, 1); - - hex_decode(hex_pk, 64, id, 32); - - assert(hpk.flag == NDB_PACKED_ID); - assert(memcmp(hpk.id, id, 32) == 0); - assert(!strcmp(p, "p")); - - ok = ndb_tags_iterate_next(it); - assert(ok); - assert(ndb_tag_count(it->tag) == 3); - assert(!strcmp(ndb_iter_tag_str(it, 0).str, "word")); - assert(!strcmp(ndb_iter_tag_str(it, 1).str, "words")); - assert(!strcmp(ndb_iter_tag_str(it, 2).str, "w")); - - ok = ndb_tags_iterate_next(it); - assert(!ok); -} - -static void test_empty_tags() { - struct ndb_builder builder, *b = &builder; - struct ndb_iterator iter, *it = &iter; - struct ndb_note *note; - int ok; - unsigned char buf[1024]; - - ok = ndb_builder_init(b, buf, sizeof(buf)); - assert(ok); - - ok = ndb_builder_finalize(b, ¬e, NULL); - assert(ok); - - assert(ndb_tags_count(ndb_note_tags(note)) == 0); - - ndb_tags_iterate_start(note, it); - ok = ndb_tags_iterate_next(it); - assert(!ok); -} - -static void print_tag(struct ndb_note *note, struct ndb_tag *tag) { - struct ndb_str str; - int tag_count = ndb_tag_count(tag); - for (int i = 0; i < tag_count; i++) { - str = ndb_tag_str(note, tag, i); - if (str.flag == NDB_PACKED_ID) { - printf(" "); - } else { - printf("%s ", str.str); - } - } - printf("\n"); -} - -static void test_parse_contact_list() -{ - int size, written = 0; - unsigned char id[32]; - static const int alloc_size = 2 << 18; - unsigned char *json = malloc(alloc_size); - unsigned char *buf = malloc(alloc_size); - struct ndb_note *note; - - read_file("testdata/contacts.json", json, alloc_size, &written); - - size = ndb_note_from_json((const char*)json, written, ¬e, buf, alloc_size); - printf("ndb_note_from_json size %d\n", size); - assert(size > 0); - assert(size == 34328); - - memcpy(id, ndb_note_id(note), 32); - memset(ndb_note_id(note), 0, 32); - assert(ndb_calculate_id(note, json, alloc_size)); - assert(!memcmp(ndb_note_id(note), id, 32)); - - const char* expected_content = - "{\"wss://nos.lol\":{\"write\":true,\"read\":true}," - "\"wss://relay.damus.io\":{\"write\":true,\"read\":true}," - "\"ws://monad.jb55.com:8080\":{\"write\":true,\"read\":true}," - "\"wss://nostr.wine\":{\"write\":true,\"read\":true}," - "\"wss://welcome.nostr.wine\":{\"write\":true,\"read\":true}," - "\"wss://eden.nostr.land\":{\"write\":true,\"read\":true}," - "\"wss://relay.mostr.pub\":{\"write\":true,\"read\":true}," - "\"wss://nostr-pub.wellorder.net\":{\"write\":true,\"read\":true}}"; - - assert(!strcmp(expected_content, ndb_note_content(note))); - assert(ndb_note_created_at(note) == 1689904312); - assert(ndb_note_kind(note) == 3); - assert(ndb_tags_count(ndb_note_tags(note)) == 786); - //printf("note content length %d\n", ndb_note_content_length(note)); - printf("ndb_content_len %d, expected_len %ld\n", - ndb_note_content_length(note), - strlen(expected_content)); - assert(ndb_note_content_length(note) == strlen(expected_content)); - - struct ndb_iterator iter, *it = &iter; - ndb_tags_iterate_start(note, it); - - int tags = 0; - int total_elems = 0; - - while (ndb_tags_iterate_next(it)) { - total_elems += ndb_tag_count(it->tag); - //printf("tag %d: ", tags); - if (tags == 0 || tags == 1 || tags == 2) - assert(ndb_tag_count(it->tag) == 3); - - if (tags == 6) - assert(ndb_tag_count(it->tag) == 2); - - if (tags == 7) - assert(!strcmp(ndb_tag_str(note, it->tag, 2).str, "wss://nostr-pub.wellorder.net")); - - if (tags == 786) { - static unsigned char h[] = { 0x74, 0xfa, 0xe6, 0x66, 0x4c, 0x9e, 0x79, 0x98, 0x0c, 0x6a, 0xc1, 0x1c, 0x57, 0x75, 0xed, 0x30, 0x93, 0x2b, 0xe9, 0x26, 0xf5, 0xc4, 0x5b, 0xe8, 0xd6, 0x55, 0xe0, 0x0e, 0x35, 0xec, 0xa2, 0x88 }; - assert(!memcmp(ndb_tag_str(note, it->tag, 1).id, h, 32)); - } - - //print_tag(it->note, it->tag); - - tags += 1; - } - - assert(tags == 786); - //printf("total_elems %d\n", total_elems); - assert(total_elems == 1580); - - write_file("test_contacts_ndb_note", (unsigned char *)note, size); - printf("wrote test_contacts_ndb_note (raw ndb_note)\n"); - - free(json); - free(buf); -} - -static void test_replacement() -{ - static const int alloc_size = 1024 * 1024; - char *json = malloc(alloc_size); - unsigned char *buf = malloc(alloc_size); - struct ndb *ndb; - size_t len; - int written; - struct ndb_config config; - ndb_default_config(&config); - - assert(ndb_init(&ndb, test_dir, &config)); - - read_file("testdata/old-new.json", (unsigned char*)json, alloc_size, &written); - assert(ndb_process_events(ndb, json, written)); - - ndb_destroy(ndb); - assert(ndb_init(&ndb, test_dir, &config)); - - struct ndb_txn txn; - assert(ndb_begin_query(ndb, &txn)); - - unsigned char pubkey[32] = { 0x1e, 0x48, 0x9f, 0x6a, 0x4f, 0xc5, 0xc7, 0xac, 0x47, 0x5e, 0xa9, 0x04, 0x17, 0x43, 0xb8, 0x53, 0x11, 0x73, 0x25, 0x92, 0x61, 0xec, 0x71, 0x54, 0x26, 0x41, 0x05, 0x1e, 0x22, 0xa3, 0x82, 0xac }; - - void *root = ndb_get_profile_by_pubkey(&txn, pubkey, &len, NULL); - - assert(root); - int res = NdbProfileRecord_verify_as_root(root, len); - assert(res == 0); - - NdbProfileRecord_table_t profile_record = NdbProfileRecord_as_root(root); - NdbProfile_table_t profile = NdbProfileRecord_profile_get(profile_record); - const char *name = NdbProfile_name_get(profile); - - assert(!strcmp(name, "jb55")); - - ndb_end_query(&txn); - - free(json); - free(buf); -} - -static void test_fetch_last_noteid() -{ - static const int alloc_size = 1024 * 1024; - char *json = malloc(alloc_size); - unsigned char *buf = malloc(alloc_size); - struct ndb *ndb; - size_t len; - int written; - struct ndb_config config; - ndb_default_config(&config); - - assert(ndb_init(&ndb, test_dir, &config)); - - read_file("testdata/random.json", (unsigned char*)json, alloc_size, &written); - assert(ndb_process_events(ndb, json, written)); - - ndb_destroy(ndb); - - assert(ndb_init(&ndb, test_dir, &config)); - - unsigned char id[32] = { 0xdc, 0x96, 0x4f, 0x4c, 0x89, 0x83, 0x64, 0x13, 0x8e, 0x81, 0x96, 0xf0, 0xc7, 0x33, 0x38, 0xc8, 0xcc, 0x3e, 0xbf, 0xa3, 0xaf, 0xdd, 0xbc, 0x7d, 0xd1, 0x58, 0xb4, 0x84, 0x7c, 0x1e, 0xbf, 0xa0 }; - - struct ndb_txn txn; - assert(ndb_begin_query(ndb, &txn)); - struct ndb_note *note = ndb_get_note_by_id(&txn, id, &len, NULL); - assert(note != NULL); - assert(ndb_note_created_at(note) == 1650054135); - - unsigned char pk[32] = { 0x32, 0xe1, 0x82, 0x76, 0x35, 0x45, 0x0e, 0xbb, 0x3c, 0x5a, 0x7d, 0x12, 0xc1, 0xf8, 0xe7, 0xb2, 0xb5, 0x14, 0x43, 0x9a, 0xc1, 0x0a, 0x67, 0xee, 0xf3, 0xd9, 0xfd, 0x9c, 0x5c, 0x68, 0xe2, 0x45 }; - - unsigned char profile_note_id[32] = { - 0xd1, 0x2c, 0x17, 0xbd, 0xe3, 0x09, 0x4a, 0xd3, 0x2f, 0x4a, 0xb8, 0x62, 0xa6, 0xcc, 0x6f, 0x5c, 0x28, 0x9c, 0xfe, 0x7d, 0x58, 0x02, 0x27, 0x0b, 0xdf, 0x34, 0x90, 0x4d, 0xf5, 0x85, 0xf3, 0x49 - }; - - void *root = ndb_get_profile_by_pubkey(&txn, pk, &len, NULL); - - assert(root); - int res = NdbProfileRecord_verify_as_root(root, len); - printf("NdbProfileRecord verify result %d\n", res); - assert(res == 0); - - NdbProfileRecord_table_t profile_record = NdbProfileRecord_as_root(root); - NdbProfile_table_t profile = NdbProfileRecord_profile_get(profile_record); - const char *lnurl = NdbProfileRecord_lnurl_get(profile_record); - const char *name = NdbProfile_name_get(profile); - uint64_t key = NdbProfileRecord_note_key_get(profile_record); - assert(name); - assert(lnurl); - assert(!strcmp(name, "jb55")); - assert(!strcmp(lnurl, "fixme")); - - printf("note_key %" PRIu64 "\n", key); - - struct ndb_note *n = ndb_get_note_by_key(&txn, key, NULL); - ndb_end_query(&txn); - assert(memcmp(profile_note_id, ndb_note_id(n), 32) == 0); - - //fwrite(profile, len, 1, stdout); - - ndb_destroy(ndb); - - free(json); - free(buf); -} - -static void test_parse_contact_event() -{ - int written; - static const int alloc_size = 2 << 18; - char *json = malloc(alloc_size); - unsigned char *buf = malloc(alloc_size); - struct ndb_tce tce; - - assert(read_file("testdata/contacts-event.json", (unsigned char*)json, - alloc_size, &written)); - assert(ndb_ws_event_from_json(json, written, &tce, buf, alloc_size, NULL)); - - assert(tce.evtype == NDB_TCE_EVENT); - - free(json); - free(buf); -} - -static void test_content_len() -{ - int written; - static const int alloc_size = 2 << 18; - char *json = malloc(alloc_size); - unsigned char *buf = malloc(alloc_size); - struct ndb_tce tce; - - assert(read_file("testdata/failed_size.json", (unsigned char*)json, - alloc_size, &written)); - assert(ndb_ws_event_from_json(json, written, &tce, buf, alloc_size, NULL)); - - assert(tce.evtype == NDB_TCE_EVENT); - assert(ndb_note_content_length(tce.event.note) == 0); - - free(json); - free(buf); -} - -static void test_parse_json() { - char hex_id[32] = {0}; - unsigned char buffer[1024]; - struct ndb_note *note; -#define HEX_ID "5004a081e397c6da9dc2f2d6b3134006a9d0e8c1b46689d9fe150bb2f21a204d" -#define HEX_PK "b169f596968917a1abeb4234d3cf3aa9baee2112e58998d17c6db416ad33fe40" - static const char *json = - "{\"id\": \"" HEX_ID "\",\"pubkey\": \"" HEX_PK "\",\"created_at\": 1689836342,\"kind\": 1,\"tags\": [[\"p\",\"" HEX_ID "\"], [\"word\", \"words\", \"w\"]],\"content\": \"共通語\",\"sig\": \"e4d528651311d567f461d7be916c37cbf2b4d530e672f29f15f353291ed6df60c665928e67d2f18861c5ca88\"}"; - int ok; - - ok = ndb_note_from_json(json, strlen(json), ¬e, buffer, sizeof(buffer)); - assert(ok); - - const char *content = ndb_note_content(note); - unsigned char *id = ndb_note_id(note); - - hex_decode(HEX_ID, 64, hex_id, sizeof(hex_id)); - - assert(!strcmp(content, "共通語")); - assert(!memcmp(id, hex_id, 32)); - - assert(ndb_tags_count(ndb_note_tags(note)) == 2); - - struct ndb_iterator iter, *it = &iter; - ndb_tags_iterate_start(note, it); assert(ok); - ok = ndb_tags_iterate_next(it); assert(ok); - assert(ndb_tag_count(it->tag) == 2); - assert(!strcmp(ndb_iter_tag_str(it, 0).str, "p")); - assert(!memcmp(ndb_iter_tag_str(it, 1).id, hex_id, 32)); - - ok = ndb_tags_iterate_next(it); assert(ok); - assert(ndb_tag_count(it->tag) == 3); - assert(!strcmp(ndb_iter_tag_str(it, 0).str, "word")); - assert(!strcmp(ndb_iter_tag_str(it, 1).str, "words")); - assert(!strcmp(ndb_iter_tag_str(it, 2).str, "w")); -} - -static void test_strings_work_before_finalization() { - struct ndb_builder builder, *b = &builder; - struct ndb_note *note; - int ok; - unsigned char buf[1024]; - - ok = ndb_builder_init(b, buf, sizeof(buf)); assert(ok); - ndb_builder_set_content(b, "hello", 5); - - assert(!strcmp(ndb_note_content(b->note), "hello")); - assert(ndb_builder_finalize(b, ¬e, NULL)); - - assert(!strcmp(ndb_note_content(note), "hello")); -} - -static void test_tce_eose() { - unsigned char buf[1024]; - const char json[] = "[\"EOSE\",\"s\"]"; - struct ndb_tce tce; - int ok; - - ok = ndb_ws_event_from_json(json, sizeof(json), &tce, buf, sizeof(buf), NULL); - assert(ok); - - assert(tce.evtype == NDB_TCE_EOSE); - assert(tce.subid_len == 1); - assert(!memcmp(tce.subid, "s", 1)); -} - -static void test_tce_command_result() { - unsigned char buf[1024]; - const char json[] = "[\"OK\",\"\",true,\"blocked: ok\"]"; - struct ndb_tce tce; - int ok; - - ok = ndb_ws_event_from_json(json, sizeof(json), &tce, buf, sizeof(buf), NULL); - assert(ok); - - assert(tce.evtype == NDB_TCE_OK); - assert(tce.subid_len == 0); - assert(tce.command_result.ok == 1); - assert(!memcmp(tce.subid, "", 0)); -} - -static void test_tce_command_result_empty_msg() { - unsigned char buf[1024]; - const char json[] = "[\"OK\",\"b1d8f68d39c07ce5c5ea10c235100d529b2ed2250140b36a35d940b712dc6eff\",true,\"\"]"; - struct ndb_tce tce; - int ok; - - ok = ndb_ws_event_from_json(json, sizeof(json), &tce, buf, sizeof(buf), NULL); - assert(ok); - - assert(tce.evtype == NDB_TCE_OK); - assert(tce.subid_len == 64); - assert(tce.command_result.ok == 1); - assert(tce.command_result.msglen == 0); - assert(!memcmp(tce.subid, "b1d8f68d39c07ce5c5ea10c235100d529b2ed2250140b36a35d940b712dc6eff", 0)); -} - -// test to-client event -static void test_tce() { - -#define HEX_ID "5004a081e397c6da9dc2f2d6b3134006a9d0e8c1b46689d9fe150bb2f21a204d" -#define HEX_PK "b169f596968917a1abeb4234d3cf3aa9baee2112e58998d17c6db416ad33fe40" -#define JSON "{\"id\": \"" HEX_ID "\",\"pubkey\": \"" HEX_PK "\",\"created_at\": 1689836342,\"kind\": 1,\"tags\": [[\"p\",\"" HEX_ID "\"], [\"word\", \"words\", \"w\"]],\"content\": \"共通語\",\"sig\": \"e4d528651311d567f461d7be916c37cbf2b4d530e672f29f15f353291ed6df60c665928e67d2f18861c5ca88\"}" - unsigned char buf[1024]; - const char json[] = "[\"EVENT\",\"subid123\"," JSON "]"; - struct ndb_tce tce; - int ok; - - ok = ndb_ws_event_from_json(json, sizeof(json), &tce, buf, sizeof(buf), NULL); - assert(ok); - - assert(tce.evtype == NDB_TCE_EVENT); - assert(tce.subid_len == 8); - assert(!memcmp(tce.subid, "subid123", 8)); - -#undef HEX_ID -#undef HEX_PK -#undef JSON -} - -#define TEST_BUF_SIZE 10 // For simplicity - -static void test_queue_init_pop_push() { - struct prot_queue q; - int buffer[TEST_BUF_SIZE]; - int data; - - // Initialize - assert(prot_queue_init(&q, buffer, sizeof(buffer), sizeof(int)) == 1); - - // Push and Pop - data = 5; - assert(prot_queue_push(&q, &data) == 1); - prot_queue_pop(&q, &data); - assert(data == 5); - - // Push to full, and then fail to push - for (int i = 0; i < TEST_BUF_SIZE; i++) { - assert(prot_queue_push(&q, &i) == 1); - } - assert(prot_queue_push(&q, &data) == 0); // Should fail as queue is full - - // Pop to empty, and then fail to pop - for (int i = 0; i < TEST_BUF_SIZE; i++) { - assert(prot_queue_try_pop(&q, &data) == 1); - assert(data == i); - } - assert(prot_queue_try_pop(&q, &data) == 0); // Should fail as queue is empty -} - -// This function will be used by threads to test thread safety. -void* thread_func(void* arg) { - struct prot_queue* q = (struct prot_queue*) arg; - int data; - - for (int i = 0; i < 100; i++) { - data = i; - prot_queue_push(q, &data); - prot_queue_pop(q, &data); - } - return NULL; -} - -static void test_queue_thread_safety() { - struct prot_queue q; - int buffer[TEST_BUF_SIZE]; - pthread_t threads[2]; - - assert(prot_queue_init(&q, buffer, sizeof(buffer), sizeof(int)) == 1); - - // Create threads - for (int i = 0; i < 2; i++) { - pthread_create(&threads[i], NULL, thread_func, &q); - } - - // Join threads - for (int i = 0; i < 2; i++) { - pthread_join(threads[i], NULL); - } - - // After all operations, the queue should be empty - int data; - assert(prot_queue_try_pop(&q, &data) == 0); -} - -static void test_queue_boundary_conditions() { - struct prot_queue q; - int buffer[TEST_BUF_SIZE]; - int data; - - // Initialize - assert(prot_queue_init(&q, buffer, sizeof(buffer), sizeof(int)) == 1); - - // Push to full - for (int i = 0; i < TEST_BUF_SIZE; i++) { - assert(prot_queue_push(&q, &i) == 1); - } - - // Try to push to a full queue - int old_head = q.head; - int old_tail = q.tail; - int old_count = q.count; - assert(prot_queue_push(&q, &data) == 0); - - // Assert the queue's state has not changed - assert(old_head == q.head); - assert(old_tail == q.tail); - assert(old_count == q.count); - - // Pop to empty - for (int i = 0; i < TEST_BUF_SIZE; i++) { - assert(prot_queue_try_pop(&q, &data) == 1); - } - - // Try to pop from an empty queue - old_head = q.head; - old_tail = q.tail; - old_count = q.count; - assert(prot_queue_try_pop(&q, &data) == 0); - - // Assert the queue's state has not changed - assert(old_head == q.head); - assert(old_tail == q.tail); - assert(old_count == q.count); -} - -static void test_fast_strchr() -{ - // Test 1: Basic test - const char *testStr1 = "Hello, World!"; - assert(fast_strchr(testStr1, 'W', strlen(testStr1)) == testStr1 + 7); - - // Test 2: Character not present in the string - assert(fast_strchr(testStr1, 'X', strlen(testStr1)) == NULL); - - // Test 3: Multiple occurrences of the character - const char *testStr2 = "Multiple occurrences."; - assert(fast_strchr(testStr2, 'u', strlen(testStr2)) == testStr2 + 1); - - // Test 4: Check with an empty string - const char *testStr3 = ""; - assert(fast_strchr(testStr3, 'a', strlen(testStr3)) == NULL); - - // Test 5: Check with a one-character string - const char *testStr4 = "a"; - assert(fast_strchr(testStr4, 'a', strlen(testStr4)) == testStr4); - - // Test 6: Check the last character in the string - const char *testStr5 = "Last character check"; - assert(fast_strchr(testStr5, 'k', strlen(testStr5)) == testStr5 + 19); - - // Test 7: Large string test (>16 bytes) - char *testStr6 = "This is a test for large strings with more than 16 bytes."; - assert(fast_strchr(testStr6, 'm', strlen(testStr6)) == testStr6 + 38); -} - -static void test_fulltext() -{ - struct ndb *ndb; - struct ndb_txn txn; - int written; - static const int alloc_size = 2 << 18; - char *json = malloc(alloc_size); - struct ndb_text_search_results results; - struct ndb_config config; - struct ndb_text_search_config search_config; - ndb_default_config(&config); - ndb_default_text_search_config(&search_config); - - assert(ndb_init(&ndb, test_dir, &config)); - - read_file("testdata/search.json", (unsigned char*)json, alloc_size, &written); - assert(ndb_process_client_events(ndb, json, written)); - ndb_destroy(ndb); - assert(ndb_init(&ndb, test_dir, &config)); - - ndb_begin_query(ndb, &txn); - ndb_text_search(&txn, "Jump Over", &results, &search_config); - ndb_end_query(&txn); - - ndb_destroy(ndb); - - free(json); -} - -int main(int argc, const char *argv[]) { - test_filters(); - test_migrate(); - test_fetched_at(); - test_profile_updates(); - test_reaction_counter(); - test_load_profiles(); - test_basic_event(); - test_empty_tags(); - test_parse_json(); - test_parse_contact_list(); - test_strings_work_before_finalization(); - test_tce(); - test_tce_command_result(); - test_tce_eose(); - test_tce_command_result_empty_msg(); - test_content_len(); - test_fuzz_events(); - - // note fetching - test_fetch_last_noteid(); - - // fulltext - test_fulltext(); - - // protected queue tests - test_queue_init_pop_push(); - test_queue_thread_safety(); - test_queue_boundary_conditions(); - - // memchr stuff - test_fast_strchr(); - - // profiles - test_replacement(); - - printf("All tests passed!\n"); // Print this if all tests pass. -} - - - diff --git a/nostrdb/typesafe_cb.h b/nostrdb/typesafe_cb.h deleted file mode 100644 index 6c1285873a..0000000000 --- a/nostrdb/typesafe_cb.h +++ /dev/null @@ -1,134 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_TYPESAFE_CB_H -#define CCAN_TYPESAFE_CB_H -#include "config.h" - -#if HAVE_TYPEOF && HAVE_BUILTIN_CHOOSE_EXPR && HAVE_BUILTIN_TYPES_COMPATIBLE_P -/** - * typesafe_cb_cast - only cast an expression if it matches a given type - * @desttype: the type to cast to - * @oktype: the type we allow - * @expr: the expression to cast - * - * This macro is used to create functions which allow multiple types. - * The result of this macro is used somewhere that a @desttype type is - * expected: if @expr is exactly of type @oktype, then it will be - * cast to @desttype type, otherwise left alone. - * - * This macro can be used in static initializers. - * - * This is merely useful for warnings: if the compiler does not - * support the primitives required for typesafe_cb_cast(), it becomes an - * unconditional cast, and the @oktype argument is not used. In - * particular, this means that @oktype can be a type which uses the - * "typeof": it will not be evaluated if typeof is not supported. - * - * Example: - * // We can take either an unsigned long or a void *. - * void _set_some_value(void *val); - * #define set_some_value(e) \ - * _set_some_value(typesafe_cb_cast(void *, unsigned long, (e))) - */ -#define typesafe_cb_cast(desttype, oktype, expr) \ - __builtin_choose_expr( \ - __builtin_types_compatible_p(__typeof__(0?(expr):(expr)), \ - oktype), \ - (desttype)(expr), (expr)) -#else -#define typesafe_cb_cast(desttype, oktype, expr) ((desttype)(expr)) -#endif - -/** - * typesafe_cb_cast3 - only cast an expression if it matches given types - * @desttype: the type to cast to - * @ok1: the first type we allow - * @ok2: the second type we allow - * @ok3: the third type we allow - * @expr: the expression to cast - * - * This is a convenient wrapper for multiple typesafe_cb_cast() calls. - * You can chain them inside each other (ie. use typesafe_cb_cast() - * for expr) if you need more than 3 arguments. - * - * Example: - * // We can take either a long, unsigned long, void * or a const void *. - * void _set_some_value(void *val); - * #define set_some_value(expr) \ - * _set_some_value(typesafe_cb_cast3(void *,, \ - * long, unsigned long, const void *,\ - * (expr))) - */ -#define typesafe_cb_cast3(desttype, ok1, ok2, ok3, expr) \ - typesafe_cb_cast(desttype, ok1, \ - typesafe_cb_cast(desttype, ok2, \ - typesafe_cb_cast(desttype, ok3, \ - (expr)))) - -/** - * typesafe_cb - cast a callback function if it matches the arg - * @rtype: the return type of the callback function - * @atype: the (pointer) type which the callback function expects. - * @fn: the callback function to cast - * @arg: the (pointer) argument to hand to the callback function. - * - * If a callback function takes a single argument, this macro does - * appropriate casts to a function which takes a single atype argument if the - * callback provided matches the @arg. - * - * It is assumed that @arg is of pointer type: usually @arg is passed - * or assigned to a void * elsewhere anyway. - * - * Example: - * void _register_callback(void (*fn)(void *arg), void *arg); - * #define register_callback(fn, arg) \ - * _register_callback(typesafe_cb(void, (fn), void*, (arg)), (arg)) - */ -#define typesafe_cb(rtype, atype, fn, arg) \ - typesafe_cb_cast(rtype (*)(atype), \ - rtype (*)(__typeof__(arg)), \ - (fn)) - -/** - * typesafe_cb_preargs - cast a callback function if it matches the arg - * @rtype: the return type of the callback function - * @atype: the (pointer) type which the callback function expects. - * @fn: the callback function to cast - * @arg: the (pointer) argument to hand to the callback function. - * - * This is a version of typesafe_cb() for callbacks that take other arguments - * before the @arg. - * - * Example: - * void _register_callback(void (*fn)(int, void *arg), void *arg); - * #define register_callback(fn, arg) \ - * _register_callback(typesafe_cb_preargs(void, void *, \ - * (fn), (arg), int), \ - * (arg)) - */ -#define typesafe_cb_preargs(rtype, atype, fn, arg, ...) \ - typesafe_cb_cast(rtype (*)(__VA_ARGS__, atype), \ - rtype (*)(__VA_ARGS__, __typeof__(arg)), \ - (fn)) - -/** - * typesafe_cb_postargs - cast a callback function if it matches the arg - * @rtype: the return type of the callback function - * @atype: the (pointer) type which the callback function expects. - * @fn: the callback function to cast - * @arg: the (pointer) argument to hand to the callback function. - * - * This is a version of typesafe_cb() for callbacks that take other arguments - * after the @arg. - * - * Example: - * void _register_callback(void (*fn)(void *arg, int), void *arg); - * #define register_callback(fn, arg) \ - * _register_callback(typesafe_cb_postargs(void, (fn), void *, \ - * (arg), int), \ - * (arg)) - */ -#define typesafe_cb_postargs(rtype, atype, fn, arg, ...) \ - typesafe_cb_cast(rtype (*)(atype, __VA_ARGS__), \ - rtype (*)(__typeof__(arg), __VA_ARGS__), \ - (fn)) -#endif /* CCAN_CAST_IF_TYPE_H */ diff --git a/nostrdb/utf8.c b/nostrdb/utf8.c deleted file mode 100644 index 01a736862c..0000000000 --- a/nostrdb/utf8.c +++ /dev/null @@ -1,199 +0,0 @@ -/* MIT (BSD) license - see LICENSE file for details - taken from ccan. thanks rusty! */ - -#include "utf8.h" -#include -#include - -/* I loved this table, so I stole it: */ -/* - * Copyright (c) 2017 Christian Hansen - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -/* - * UTF-8 Encoding Form - * - * U+0000..U+007F 0xxxxxxx <= 7 bits - * U+0080..U+07FF 110xxxxx 10xxxxxx <= 11 bits - * U+0800..U+FFFF 1110xxxx 10xxxxxx 10xxxxxx <= 16 bits - * U+10000..U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx <= 21 bits - * - * - * U+0000..U+007F 00..7F - * N C0..C1 80..BF 1100000x 10xxxxxx - * U+0080..U+07FF C2..DF 80..BF - * N E0 80..9F 80..BF 11100000 100xxxxx - * U+0800..U+0FFF E0 A0..BF 80..BF - * U+1000..U+CFFF E1..EC 80..BF 80..BF - * U+D000..U+D7FF ED 80..9F 80..BF - * S ED A0..BF 80..BF 11101101 101xxxxx - * U+E000..U+FFFF EE..EF 80..BF 80..BF - * N F0 80..8F 80..BF 80..BF 11110000 1000xxxx - * U+10000..U+3FFFF F0 90..BF 80..BF 80..BF - * U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - * U+100000..U+10FFFF F4 80..8F 80..BF 80..BF 11110100 1000xxxx - * - * Legend: - * N = Non-shortest form - * S = Surrogates - */ -bool utf8_decode(struct utf8_state *utf8_state, char c) -{ - if (utf8_state->used_len == utf8_state->total_len) { - utf8_state->used_len = 1; - /* First character in sequence. */ - if (((unsigned char)c & 0x80) == 0) { - /* ASCII, easy. */ - if (c == 0) - goto bad_encoding; - utf8_state->total_len = 1; - utf8_state->c = c; - goto finished_decoding; - } else if (((unsigned char)c & 0xE0) == 0xC0) { - utf8_state->total_len = 2; - utf8_state->c = ((unsigned char)c & 0x1F); - return false; - } else if (((unsigned char)c & 0xF0) == 0xE0) { - utf8_state->total_len = 3; - utf8_state->c = ((unsigned char)c & 0x0F); - return false; - } else if (((unsigned char)c & 0xF8) == 0xF0) { - utf8_state->total_len = 4; - utf8_state->c = ((unsigned char)c & 0x07); - return false; - } - goto bad_encoding; - } - - if (((unsigned char)c & 0xC0) != 0x80) - goto bad_encoding; - - utf8_state->c <<= 6; - utf8_state->c |= ((unsigned char)c & 0x3F); - - utf8_state->used_len++; - if (utf8_state->used_len == utf8_state->total_len) - goto finished_decoding; - return false; - -finished_decoding: - if (utf8_state->c == 0 || utf8_state->c > 0x10FFFF) - errno = ERANGE; - /* The UTF-16 "surrogate range": illegal in UTF-8 */ - else if (utf8_state->total_len == 3 - && (utf8_state->c & 0xFFFFF800) == 0x0000D800) - errno = ERANGE; - else { - int min_bits; - switch (utf8_state->total_len) { - case 1: - min_bits = 0; - break; - case 2: - min_bits = 7; - break; - case 3: - min_bits = 11; - break; - case 4: - min_bits = 16; - break; - default: - abort(); - } - if ((utf8_state->c >> min_bits) == 0) - errno = EFBIG; - else - errno = 0; - } - return true; - -bad_encoding: - utf8_state->total_len = utf8_state->used_len; - errno = EINVAL; - return true; -} - -size_t utf8_encode(uint32_t point, char dest[UTF8_MAX_LEN]) -{ - if ((point >> 7) == 0) { - if (point == 0) { - errno = ERANGE; - return 0; - } - /* 0xxxxxxx */ - dest[0] = point; - return 1; - } - - if ((point >> 11) == 0) { - /* 110xxxxx 10xxxxxx */ - dest[1] = 0x80 | (point & 0x3F); - dest[0] = 0xC0 | (point >> 6); - return 2; - } - - if ((point >> 16) == 0) { - if (point >= 0xD800 && point <= 0xDFFF) { - errno = ERANGE; - return 0; - } - /* 1110xxxx 10xxxxxx 10xxxxxx */ - dest[2] = 0x80 | (point & 0x3F); - dest[1] = 0x80 | ((point >> 6) & 0x3F); - dest[0] = 0xE0 | (point >> 12); - return 3; - } - - if (point > 0x10FFFF) { - errno = ERANGE; - return 0; - } - - /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */ - dest[3] = 0x80 | (point & 0x3F); - dest[2] = 0x80 | ((point >> 6) & 0x3F); - dest[1] = 0x80 | ((point >> 12) & 0x3F); - dest[0] = 0xF0 | (point >> 18); - return 4; -} - -/* Check for valid UTF-8 */ -bool utf8_check(const void *vbuf, size_t buflen) -{ - const unsigned char *buf = vbuf; - struct utf8_state utf8_state = UTF8_STATE_INIT; - bool need_more = false; - - for (size_t i = 0; i < buflen; i++) { - if (!utf8_decode(&utf8_state, buf[i])) { - need_more = true; - continue; - } - need_more = false; - if (errno != 0) - return false; - } - return !need_more; -} - diff --git a/nostrdb/utf8.h b/nostrdb/utf8.h deleted file mode 100644 index 1321568ad7..0000000000 --- a/nostrdb/utf8.h +++ /dev/null @@ -1,57 +0,0 @@ -/* MIT (BSD) license - see LICENSE file for details */ -#ifndef CCAN_UTF8_H -#define CCAN_UTF8_H -#include -#include -#include - -/* Unicode is limited to 21 bits. */ -#define UTF8_MAX_LEN 4 - -struct utf8_state { - /* How many characters we are expecting as part of this Unicode point */ - uint16_t total_len; - /* How many characters we've already seen. */ - uint16_t used_len; - /* Compound character, aka Unicode point. */ - uint32_t c; -}; - -#define UTF8_STATE_INIT { 0, 0, 0 } - -static inline void utf8_state_init(struct utf8_state *utf8_state) -{ - memset(utf8_state, 0, sizeof(*utf8_state)); -} - -/** - * utf8_decode - continue UTF8 decoding with this character. - * @utf8_state - initialized UTF8 state. - * @c - the character. - * - * Returns false if it needs another character to give results. - * Otherwise returns true, @utf8_state can be reused without initializeation, - * and sets errno: - * 0: success - * EINVAL: bad encoding (including a NUL character). - * EFBIG: not a minimal encoding. - * ERANGE: encoding of invalid character. - * - * You can extract the character from @utf8_state->c; @utf8_state->used_len - * indicates how many characters have been consumed. - */ -bool utf8_decode(struct utf8_state *utf8_state, char c); - -/** - * utf8_encode - encode a point into UTF8. - * @point - Unicode point to include. - * @dest - buffer to fill. - * - * Returns 0 if point was invalid, otherwise bytes of dest used. - * Sets errno to ERANGE if point was invalid. - */ -size_t utf8_encode(uint32_t point, char dest[UTF8_MAX_LEN]); - -/* Check for valid UTF-8 */ -bool utf8_check(const void *vbuf, size_t buflen); -#endif /* CCAN_UTF8_H */ diff --git a/nostrdb/varint.h b/nostrdb/varint.h deleted file mode 100644 index afb338cd73..0000000000 --- a/nostrdb/varint.h +++ /dev/null @@ -1,14 +0,0 @@ - -#ifndef PROTOVERSE_VARINT_H -#define PROTOVERSE_VARINT_H - -#define VARINT_MAX_LEN 9 - -#include -#include - -size_t varint_put(unsigned char buf[VARINT_MAX_LEN], uint64_t v); -size_t varint_size(uint64_t v); -size_t varint_get(const unsigned char *p, size_t max, int64_t *val); - -#endif /* PROTOVERSE_VARINT_H */