{ "Identifier":       {"ImplementerID": "IIDRA-assigned", "ImplementationID": "/* String from Implementer */", "AIMName": "MMC-TTT-V2.5"},
  "Header":            "MMC-TTT-V2.5",

  "APIProfile":       "Basic",
  "Description":      "This AIM receives an input Text and produces a Text in a different language.",

  "InternalTypes":   [ ],

  "ExternalPorts":   [{"Name": "LanguageSelector", "Direction": "Input",  "DataType": "OSD-SEL-V1.5", "PortNumber": 1,                                       "Technology": "", "Protocol": "", "IsRemote": ""},
                     {"Name": "TextObject",       "Direction": "Input",  "DataType": ["OSD-BTO-V1.5", "OSD-TXO-V1.5"], "PortNumber": 1,                     "Technology": "", "Protocol": "", "IsRemote": ""},
                     {"Name": "TextDescriptors",   "Direction": "Input",  "DataType": "MMC-TDO-V2.5",                   "IsOptional": true, "Technology": "", "Protocol": "", "IsRemote": ""},
                     {"Name": "TranslatedText",   "Direction": "Output", "DataType": ["OSD-BTO-V1.5", "OSD-TXO-V1.5"],                     "Technology": "", "Protocol": "", "IsRemote": ""},
                     {"Name": "RecognisedText",   "Direction": "Input",  "DataType": "OSD-BTO-V1.5", "PortNumber": 2,                                       "Technology": "", "Protocol": "", "IsRemote": ""},
                     {"Name": "MediaSelector",    "Direction": "Input",  "DataType": "OSD-SEL-V1.5", "PortNumber": 2,                                       "Technology": "", "Protocol": "", "IsRemote": ""}],

  "SubAIMs":         [ ],

  "Topology":        [ ],

  "AIMLicence":          "/* AIM Licence offered by the Implementer (AIF-LIC-V3.0): Grant, Term, Updates, Payment, TermsURI - or omit it if the AIM needs no AIM Licence */",

  "AccessSources":   [{"Name": "ttt-encoder", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "TttEncoderModel", "AsFile": "encoder_model.onnx", "Description": "The encoder of the translation model (M2M100, 418 million parameters)."},
                      {"Name": "ttt-decoder-first", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "TttDecoderFirstModel", "AsFile": "decoder_model.onnx", "Description": "The decoder of the first step of the translation."},
                      {"Name": "ttt-decoder-past", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "TttDecoderPastModel", "AsFile": "decoder_with_past_model.onnx", "Description": "The decoder of the following steps of the translation."},
                      {"Name": "ttt-spm", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "TttSpmModel", "AsFile": "sentencepiece.bpe.model", "Description": "The SentencePiece model of the translation model."},
                      {"Name": "ttt-vocab", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "TttVocab", "AsFile": "vocab.json", "Description": "The vocabulary of the translation model."},
                      {"Name": "ttt-special-tokens", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "TttSpecialTokens", "AsFile": "special_tokens_map.json", "Description": "The special tokens of the translation model, which give the order of its languages."}],

  "Implementations": [{ "ImplementationURI":"/* absolute URI locating the Implementation */",
                        "BinaryName":       "/* provided by implementer */",
                        "Architecture":     "/* x86-64 | ARM64 */",
                        "MASPort":          443,
                        "Firewall":         [{ "Protocol": "TCP | UDP", "Version": "IPV4 | IPV6", "Direction": "Ingress | Egress | Both", "Range": "9990[-9999]", "Source": "0.0.0.0/0" }],
                        "OperatingSystem":  "/* Windows | Linux | MacOS */",
                        "Version":          "/* implementer version */",
                        "Source":           "/* AIMStorage | MPAIStore */",
                        "Destination":      "/* provided by implementer */" }],

  "ResourcePolicies":[{ "Name": "Memory",               "Minimum": "/* GB */",             "Maximum": "/* GB */",             "Request": "/* GB */" },
                      { "Name": "CPU:Number",           "Minimum": "/* integer, 0=all */", "Maximum": "/* integer, 0=all */", "Request": "/* integer */" },
                      { "Name": "CPU:Class",            "Minimum": "/* string */",         "Maximum": "/* string */",         "Request": "/* string */" },
                      { "Name": "GPU:Number",           "Minimum": "/* integer, 0=all */", "Maximum": "/* integer, 0=all */", "Request": "/* integer */" },
                      { "Name": "GPU:CUDA:Class",       "Minimum": "/* string */",         "Maximum": "/* string */",         "Request": "/* string */" },
                      { "Name": "GPU:CUDA:FrameBuffer", "Minimum": "/* GB */",             "Maximum": "/* GB */",             "Request": "/* GB */" },
                      { "Name": "GPU:CUDA:MemorySpeed", "Minimum": "/* GB/s */",           "Maximum": "/* GB/s */",           "Request": "/* GB/s */" } ],

  "DataXMData":         { },

  "Documentation":     [{"Type": "Tutorial", "URI": "https://mpai.community/standards/mpai-mmc/v2-5/"}]}