{"id":16416123,"url":"https://github.com/phax/ddd","last_synced_at":"2026-05-18T07:02:55.387Z","repository":{"id":189129330,"uuid":"680071199","full_name":"phax/ddd","owner":"phax","description":"Document Details Determinator - determine VESIDs from payload to use with phive and phive-rules","archived":false,"fork":false,"pushed_at":"2026-05-08T08:41:47.000Z","size":465,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-05-08T10:37:22.734Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-08-18T09:16:58.000Z","updated_at":"2026-05-08T08:41:51.000Z","dependencies_parsed_at":"2023-11-13T19:58:43.382Z","dependency_job_id":"d9ae1401-4b64-4e07-b2eb-e937b82a33fa","html_url":"https://github.com/phax/ddd","commit_stats":null,"previous_names":["phax/ddd"],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/phax/ddd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fddd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fddd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fddd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fddd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phax","download_url":"https://codeload.github.com/phax/ddd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fddd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33168910,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T07:08:29.323Z","updated_at":"2026-05-18T07:02:55.381Z","avatar_url":"https://github.com/phax.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DDD\n\n\u003c!-- ph-badge-start --\u003e\n[![Sonatype Central](https://maven-badges.sml.io/sonatype-central/com.helger/ddd/badge.svg)](https://maven-badges.sml.io/sonatype-central/com.helger/ddd/)\n[![javadoc](https://javadoc.io/badge2/com.helger/ddd/javadoc.svg)](https://javadoc.io/doc/com.helger/ddd)\n\u003c!-- ph-badge-end --\u003e\n\nDocument Details Determinator - determine [VESID](https://github.com/phax/ph-diver)s from payload to use with https://github.com/phax/phive and https://github.com/phax/phive-rules\n\nThis project helps to determine the VESID from arbitrary payloads.\nCurrently only XML payloads are supported.\n\nYou can test DDD via a web frontend at https://peppol.helger.com/public/locale-en_US/menuitem-tools-ddd\n\nThis project is part of my Peppol solution stack. See https://github.com/phax/peppol for other components and libraries in that area.\n\n# Concept\n\nA set of relevant fields for business documents is defined. Currently these are (see enum `EDDDSourceField`):\n* Customization ID\n* Process ID\n* Business Document ID\n* Sender ID (comprised of scheme and value)\n* Sender Name\n* Sender Country Code - added in v0.1.4\n* Receiver ID (comprised of scheme and value)\n* Receiver Name\n* Receiver Country Code - added in v0.1.4\n\nThese fields are to be determined differently depending on a specific syntax (see class `DDDSyntax`).\nEach syntax is uniquely determined by the combination of the XML root element namespace URI and local name.\n\nDDD offers a mapping of the above mentioned fields on a set of predefined syntaxes (in alphabetical order):\n* CII D16B (ID `cii-d16b`)\n* ebInterface 3.0 (ID `ebinterface-3p0`) - added in v0.8.6\n* ebInterface 3.0.2 (ID `ebinterface-3p02`) - added in v0.8.6\n* ebInterface 4.0 (ID `ebinterface-4p0`) - added in v0.8.6\n* ebInterface 4.1 (ID `ebinterface-4p1`) - added in v0.8.6\n* ebInterface 4.2 (ID `ebinterface-4p2`) - added in v0.8.6\n* ebInterface 4.3 (ID `ebinterface-4p3`) - added in v0.8.6\n* ebInterface 5.0 (ID `ebinterface-5p0`) - added in v0.8.6\n* ebInterface 6.0 (ID `ebinterface-6p0`) - added in v0.8.6\n* ebInterface 6.1 (ID `ebinterface-6p1`) - added in v0.8.6\n* fatturaPA 1.2 (ID `fatturapa-12`) - added in v0.3.2\n* KSeF FA(1) (ID `ksef-fa1`) - added in v0.8.6\n* KSeF FA(2) (ID `ksef-fa2`) - added in v0.8.6\n* KSeF FA(3) (ID `ksef-fa3`) - added in v0.8.6\n* OSA InvoiceAnnulment 2.0 (ID `osa-invoice-annulment-2`) - added in v0.8.7\n* OSA InvoiceAnnulment 3.0 (ID `osa-invoice-annulment-3`) - added in v0.8.7\n* OSA InvoiceData 2.0 (ID `osa-invoice-data-2`) - added in v0.8.7\n* OSA InvoiceData 3.0 (ID `osa-invoice-data-3`) - added in v0.8.7\n* Peppol End User Statistics Report (ID `peppol-eusr`) - added in v0.2.0\n* Peppol Tax Data Document (ID `peppol-tdd`) - added in v0.8.1\n* Peppol OM Tax Data Document (ID `peppol-om-tdd`) - added in v0.8.6\n* Peppol SK Tax Data Document (ID `peppol-sk-tdd`) - added in v0.8.3\n* Peppol ViDA Pilot Tax Data Document (ID `peppol-vida-tdd`) - added in v0.8.3\n* Peppol Transaction Statistics Report (ID `peppol-tsr`) - added in v0.2.0\n* UBL 2.x Application Response (ID `ubl2-applicationresponse`) - added in v0.1.4\n* UBL 2.x Catalogue (ID `ubl2-catalogue`) - added in v0.3.0\n* UBL 2.x Catalogue Deletion (ID `ubl2-cataloguedeletion`) - added in v0.3.0\n* UBL 2.x Catalogue Item Specification Update (ID `ubl2-catalogueitemspecificationupdate`) - added in v0.3.0\n* UBL 2.x Catalogue Pricing Update (ID `ubl2-cataloguepricingupdate`) - added in v0.3.0\n* UBL 2.x Catalogue Request (ID `ubl2-cataloguerequest`) - added in v0.3.0\n* UBL 2.x Credit Note (ID `ubl2-creditnote`)\n* UBL 2.x Despatch Advice (ID `ubl2-despatchadvice`) - added in v0.1.1\n* UBL 2.x Invoice (ID `ubl2-invoice`)\n* UBL 2.x Order (ID `ubl2-order`) - added in v0.1.1\n* UBL 2.x Order Cancellation (ID `ubl2-ordercancellation`) - added in v0.3.0\n* UBL 2.x Order Change (ID `ubl2-orderchange`) - added in v0.3.0\n* UBL 2.x Order Response (ID `ubl2-orderresponse`) - added in v0.1.1\n* UBL 2.x Order Response Simple (ID `ubl2-orderresponsesimple`) - added in v0.3.0\n* UBL 2.x Reminder (ID `ubl2-reminder`) - added in v0.3.0\n* UBL 2.x Statement (ID `ubl2-statement`) - added in v0.3.0\n* UBL 2.x Utility Statement (ID `ubl2-utilitystatement`) - added in v0.3.0\n* ZUGFeRD 1.0 (ID `zugferd1`) - added in v0.4.3\n\nThe goal is to deduce certain (missing) values based on other values (class `DDDValueProviderPerSyntax`).\nThe deducible values are currently (in enum `EDDDDeterminedField`):\n* Process ID (especially for CII based syntaxes)\n* VESID (for selecting the correct validation rules) - see https://github.com/phax/ph-diver for details\n* Syntax Version (especially for UBL, where the same namespace URI and local element name is shared)\n* Profile Name (mainly to indicate what was found - should be globally unique; added in v0.1.2)\n\n# How to use it\n\nThe entry point is the class `DocumentDetailsDeterminator` which requires an instance of `DDDSyntaxList` and an instance of `DDDValueProviderList`.\nDDD ships with a predefined list of syntax mappings. The default syntax mapping is created via `DDDSyntaxList.getDefaultSyntaxList ()`.\nDDD also ships with a predefined list of value providers. The default value provider is created via `DDDValueProviderList.getDefaultValueProviderList ()`.\nBoth syntax mapping and value providers are read-only objects and may only be created once.\n\nSo the simplest way to create a new `DocumentDetailsDeterminator` is like this:\n\n```java\nfinal DocumentDetailsDeterminator aDDD = \n   new DocumentDetailsDeterminator (DDDSyntaxList.getDefaultSyntaxList (),\n                                    DDDValueProviderList.getDefaultValueProviderList ());\n```\n\nThis object can be used to determine multiple document details via the following API:\n\n```java\nfinal Element aRootElement = ...;\nfinal DocumentDetails aDD = aDDD.findDocumentDetails (aRootElement);\n// aDD may be null\n```\n\nThe variable `aRootElement` indicates a `org.w3c.dom.Element` node representing the document to be determined.\nThe resulting details are in the object `aDD` of type `DocumentDetails`.\n\n# Syntaxes\n\nDDD is about determining XML document types, so the determination of the overall syntax is based on the\n  root element namespace URI and local element name.\n  \nSo e.g. for the following file snippet\n```xml\n\u003cInvoice xmlns:cac=\"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2\"\n    xmlns:cbc=\"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2\"\n    xmlns=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2\"\u003e\n  \u003ccbc:CustomizationID\u003eurn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0\u003c/cbc:CustomizationID\u003e\n  ...    \n\u003c/Invoice\u003e\n```\n\nThe root element namespace URI is `urn:oasis:names:specification:ubl:schema:xsd:Invoice-2` and the local element name is `Invoice`.\n\nEach syntax has the following properties:\n* an internal identifier (e.g. `ubl2-invoice` for the UBL 2.1 Invoice)\n* a display name for the syntax (e.g. `UBL 2.x Invoice`)  \n* a set of XPath expressions to determine the generic document details fields. Not each syntax of course needs to support all the fields. Supported fields are:\n\n| Field                 | ID                    |\n| --------------------- | --------------------- |\n| Customization ID      | `CustomizationID`     |\n| Process ID            | `ProcessID`           |\n| Business Document ID  | `BusinessDocumentID`  |\n| Sender ID Scheme      | `SenderIDScheme`      |\n| Sender ID Value       | `SenderIDValue`       |\n| Sender Name           | `SenderName`          |\n| Sender Country Code   | `SenderCountryCode`   |\n| Receiver ID Scheme    | `ReceiverIDScheme`    |\n| Receiver ID Value     | `ReceiverIDValue`     |\n| Receiver Name         | `ReceiverName`        |\n| Receiver Country Code | `ReceiverCountryCode` |\n\nThe XML Schema for syntax list can be found at https://github.com/phax/ddd/tree/main/src/main/resources/schemas\n\n## Adding custom syntaxes\n\nThe default syntax list is included inside DDD.\nIt can be accessed via `DDDSyntaxList.getDefaultSyntaxList ()`.\n\nTo add new syntaxes, you need to provide your own rule file, and read it via `DDDSyntaxList.readFromXML`.\nAfterwards, the default list and the newly read syntax list can be merged via `DDDSyntaxList.createMergedSyntaxList`.\n\nPlease note that when merging syntax lists, each syntax must be unique. There is no overwriting, just adding of syntaxes.\n\n# Value Providers\n\nThe DDD Value Providers determines the specific \"profile\" or \"subsets\" of a syntax, based on one or more specific values.\n\nE.g. for the syntax \"UBL 2.x Invoice\", if the `CustomizationID` has the value `urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0` than\n  it is an \"XRechnung UBL Invoice 3.0\" which uses syntax version (UBL) `2.1` and the VESID for validation is `de.xrechnung:ubl-invoice:3.0.2`.\n\nThe XML Schema for value provider list can be found at https://github.com/phax/ddd/tree/main/src/main/resources/schemas\n\n## Flags\n\nSome determined details have so called `flags` as indicator to generic use cases. \nEach details can have 0 to unbounded entries.\nThey were introduced in DDD v0.5.0.\n\nExample for actually used flags:\n* **`IsEN16931-2017CIUS`** - indicates that a document type is a CIUS to EN 16931:2017\n\n## Adding custom value providers\n\nThe default syntax list is included inside DDD.\nIt can be accessed via `DDDValueProviderList.getDefaultValueProviderList ()`.\n\nTo add new value providers, you need to provide your own rule file, and read it via `DDDValueProviderList.readFromXML`.\nAfterwards, the default list and the newly read value provider list can be merged via `DDDValueProviderList.createMergedValueProviderList`.\n\nPlease note that when merging value provider lists, the lists are woven into each other. \n  However, specific profiles existing in one list cannot be overwritten by the other list.\n  The lists can only extend each other.\n\n# Maven usage\n\nAdd the following to your `pom.xml` to use this artifact, replacing `x.y.z` with the latest version:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.helger\u003c/groupId\u003e\n  \u003cartifactId\u003eddd\u003c/artifactId\u003e\n  \u003cversion\u003ex.y.z\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n# News and noteworthy\n\nv0.8.7 - 2026-05-13\n* Added support for the Hungarian NAV Online Számla (OSA) syntaxes for InvoiceData and InvoiceAnnulment, versions 2.0 and 3.0 (`osa-invoice-data-2`, `osa-invoice-annulment-2`, `osa-invoice-data-3`, `osa-invoice-annulment-3`). Each version is detected via its unique target namespace and mapped to the corresponding `hu.gov.nav.osa:*` VESID\n\nv0.8.6 - 2026-05-09\n* Removed OSGI bundling\n* Added support for the Polish KSeF FA(1), FA(2) and FA(3) syntaxes (`ksef-fa1`, `ksef-fa2`, `ksef-fa3`). Each KSeF schema version is detected via its unique target namespace and mapped to the corresponding `pl.ksef:ksef:*` VESID. See [#9](https://github.com/phax/ddd/issues/9) - thx @JDTm\n* Added support for Peppol OM (Oman): new syntax `peppol-om-tdd` for the OM Tax Data Document, plus PINT OM Invoice/Credit Note (and Self-Billing variants) detection in the UBL Invoice and UBL Credit Note value providers\n* Added support for Austrian ebInterface (versions 3.0, 3.0.2, 4.0, 4.1, 4.2, 4.3, 5.0, 6.0, 6.1). Each version is detected purely by its unique target namespace and mapped to the corresponding `at.ebinterface:invoice:*` VESID\n* `DDDGetterXPath` now also evaluates literal-string XPath expressions (returning a constant value) as a fallback when the expression does not yield a node set\n\nv0.8.5 - 2026-04-09\n* Added new overload `DocumentDetailsDeterminator.findDocumentDetails(Element, Consumer\u003cElement\u003e)` that provides access to the effective (unwrapped) inner element via a consumer callback\n\nv0.8.4 - 2026-04-09\n* Added new interface `IDDDDocumentUnwrapper` for detecting and extracting payloads from envelope/wrapper formats\n* Added built-in DOM-based unwrapper implementations `DDDDocumentUnwrapperSBDH` (for SBDH) and `DDDDocumentUnwrapperXHE` (for XHE) in package `com.helger.ddd.unwrap`\n* Added `addUnwrapper` and `addDefaultUnwrappers` methods to `DocumentDetailsDeterminator` for registering unwrappers\n* Unwrapping is recursive, so nested envelopes (e.g. SBDH wrapping XHE wrapping a business document) are supported\n* Added new `wrappers` field to `DocumentDetails` (with JSON key `wrappers` and XML element `Wrapper`) to report which envelope types were detected\n\nv0.8.3 - 2026-04-02\n* Added support for Peppol ViDA Pilot TDD 1.0.0 syntax\n* Added support for Peppol SK TDD 1.0.0 syntax\n\nv0.8.2 - 2026-02-22\n* Determined sender and receiver Participant ID are now `null`, if neither scheme nor value are present\n\nv0.8.1 - 2025-12-13\n* Added support for HR eRacun UBL Invoice and UBL Credit Note\n* Added new syntax ID `peppol-tdd` for Peppol Tax Data Documents\n\nv0.8.0 - 2025-11-16\n* Updated to ph-commons 12.1.0\n* Using JSpecify annotations\n\nv0.7.2 - 2025-10-16\n* Self Billing Invoice and Credit Note have now swapped sender and receiver. See [#6](https://github.com/phax/ddd/issues/6) - thx @thijsdeconinck\n\nv0.7.1 - 2025-10-02\n* Added support for Peppol SG BIS Order Balance V1\n* Added support for Peppol SG BIS Billing Invoice and Credit Note. See [#3](https://github.com/phax/ddd/issues/3) - thx @3ehrtaufiqul\n* Added support for Peppol PINT EU\n\nv0.7.0 - 2025-09-02\n* Fixed a problem with `DocumentDetailsDeterminator` and Peppol PINT document types. The API `(get|set)(DocType|Process)IDScheme` was replaced with `(get|set)(DocType|Process)IDSchemeDeterminator`. Backwards incompatible change. \n\nv0.6.0 - 2025-08-26\n* Requires Java 17 as the minimum version\n* Updated to ph-commons 12.0.0\n* Removed all deprecated methods marked for removal\n\nv0.5.3 - 2025-06-24\n* Updated to `ddd-syntaxes-1.1.xsd` allowing multiple `xpath` elements per `get` element (the first match wins)\n* Added support for Peppol MLS\n* Prefering the Party Legal Name for UBL Invoice and UBL Credit Note\n\nv0.5.2 - 2025-03-31\n* Added support for Peppol PINT AE\n\nv0.5.1 - 2025-03-24\n* Added support for Peppol BIS Self-Billing\n\nv0.5.0 - 2025-01-28\n* Added the mapping of the \"ProcessID\" field for the `ciid16b` syntax\n* Added a new element `flag` into the Value Provider list to be able to classify document types\n* Updated Value Provider XSD from 1.0 to 1.1\n* Extracted classes `DocumentDetailsXMLHelper` and `DocumentDetailsJsonHelper`\n* Moved the public XML element names from `DocumentDetails` to `DocumentDetailsXMLHelper`\n* Added a reverse conversion from JSON and XML back to `DocumentDetails`\n* Implemented `DocumentDetails.equals` and `hashCode`\n\nv0.4.5 - 2025-01-08\n* XRechnung Extension VESIDs were updated to match phive-rules 3.2.4\n* XRechnung UBL CreditNote has no Extension document types\n\nv0.4.4 - 2025-01-03\n* Added support for Customization IDs of Factur-X 1.0.x and ZUGFeRD 2.x (requires phive-rules 3.2.3)\n\nv0.4.3 - 2025-01-02\n* Added support for the custom ZUGFeRD 1.0 syntax\n\nv0.4.2 - 2024-12-10\n* Fixed the process identifier for \"EN 16931 CII\"\n\nv0.4.1 - 2024-12-05\n* Fixed XRechnung 3.x CII VESID to use `3.0.2` instead of `3.0.1`\n* Added support for plain EN 16931 CII detection\n* Switched the pseudo version of all Peppol VESIDs from `latest` to `latest-active`\n* Added the possibility to convert the `DocumentDetails` to a standard XML\n\nv0.4.0 - 2024-09-13\n* Added support for Peppol PINT A-NZ BIS (billing and self-billing)\n* Fixed typo in VESID of \"Peppol PINT Japan Credit Note\"\n* Added XML Schemas for syntax list and value providers - therefore requiring JAXB as a dependency\n\nv0.3.2 - 2024-07-29\n* Added \"syntax ID\" to `DocumentDetails`\n* Added fatturaPA support. See [#1](https://github.com/phax/ddd/issues/1) - thx @jstaerk\n* Added support for Peppol PINT A-NZ (billing and self-billing)\n* Added support for Peppol PINT Japan\n* Added support for Peppol PINT Malaysia\n* Added support for Peppol PINT Singapore\n\nv0.3.1 - 2024-07-04\n* Added support to merge `DDDValueProviderList` objects via `createMergedValueProviderList`\n\nv0.3.0 - 2024-04-06\n* Extended syntax list\n* Added Customization ID and Syntax Version into `DocumentDetails`\n* Added detection of formats based on multiple conditions\n\nv0.2.1 - 2024-02-06\n* Fixed a typo in the Customization of the Peppol BIS Despatch Advice\n\nv0.2.0 - 2024-01-18\n* Split enum `EDDDField` into `EDDDSourceField` and `EDDDDeterminedField`\n* Fixed error in XRechnung 2.2 VESIDs\n* Made all `EDDDSourceField` items optional, except for CustomizationID\n* Added support for Peppol EUSR and Peppol TSR\n* Added the missing VESID for UBL Orders\n\nv0.1.4 - 2024-01-08\n* Extended syntax list - added UBL 2.x Application Response\n* Added support for Peppol MLR\n* Added support for Sender Country Code and Receiver Country Code fields \n\nv0.1.3 - 2023-12-06\n* Fixed XRechnung 3.0 detection \n* Added support for XRechnung 1.2\n* Added support for all XRechnung Extension versions\n\nv0.1.2 - 2023-11-13\n* Added new element `ProfileName`\n* Extended value provider mapping for \"UBL 2.x Order Response\"\n* Added builder to `DocumentDetails` class\n\nv0.1.1 - 2023-11-13\n* Extended syntax list - added \"UBL 2.x Despatch Advice\", \"UBL 2.x Order\" and \"UBL 2.x Order Response\"\n* Improved customizability of `DocumentDetailsDeterminator`\n\nv0.1.0 - 2023-09-19\n* Initial version supporting the following syntaxes: \"UBL 2.x Invoice\", \"UBL 2.x Credit Note\" and \"CII D16B\"\n\n---\n\nMy personal [Coding Styleguide](https://github.com/phax/meta/blob/master/CodingStyleguide.md) |\nIt is appreciated if you star the GitHub project if you like it.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphax%2Fddd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphax%2Fddd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphax%2Fddd/lists"}