WHO Immunization Implementation Guide
1.0.0 - release
WHO Immunization Implementation Guide, published by WHO. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-immunizations/tree/132/merge and changes regularly. See the Directory of published versions
| Draft as of 2026-03-31 |
{
"resourceType" : "Library",
"id" : "IMMZD5DTRubellaContraindicationsLogic",
"meta" : {
"profile" : [
🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
"http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
"http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"🔗 ,
"http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"
]
},
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n<div>\n <table class=\"grid dict\">\n \n \n <tr>\n <th scope=\"row\"><b>Title: </b></th>\n <td style=\"padding-left: 4px;\">IMMZD5DTRubellaContraindicationsLogic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Id: </b></th>\n <td style=\"padding-left: 4px;\">IMMZD5DTRubellaContraindicationsLogic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Version: </b></th>\n <td style=\"padding-left: 4px;\">1.0.0</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Url: </b></th>\n <td style=\"padding-left: 4px;\"><a href=\"Library-IMMZD5DTRubellaContraindicationsLogic.html\">IMMZD5DTRubellaContraindicationsLogic</a></td>\n </tr>\n \n\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Status: </b></th>\n <td style=\"padding-left: 4px;\">draft</td>\n </tr>\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Type: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n \n <p style=\"margin-bottom: 5px;\">\n <b>system: </b> <span><a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a></span>\n </p>\n \n \n <p style=\"margin-bottom: 5px;\">\n <b>code: </b> <span>logic-library</span>\n </p>\n \n \n \n \n \n </td>\n </tr>\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Date: </b></th>\n <td style=\"padding-left: 4px;\">2026-03-31 13:54:17+0000</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Publisher: </b></th>\n <td style=\"padding-left: 4px;\">WHO</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Description: </b></th>\n <td style=\"padding-left: 4px;\"><div><p>This library defines decision support logic for the IMMZ.D5.DT.Rubella contraindications decision table in the Immunization CPG</p>\n</div></td>\n </tr>\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Related Artifacts: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n \n <p><b>Dependencies</b></p>\n <ul>\n \n <li><a href=\"Library-IMMZD5DTRubellaEncounterElements.html\">IMMZD5DTRubellaEncounterElements</a></li>\n \n </ul>\n \n \n \n \n \n </td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Parameters: </b></th>\n <td style=\"padding-left: 4px;\">\n <table class=\"grid-dict\">\n <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>\n \n <tr><th>Today</th><th>date</th><th>0</th><th>1</th><th>In</th></tr>\n \n <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Draft Medication Request ID for Rubella dose</th><th>id</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination is contraindicated Case 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination is contraindicated Case 2</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination is contraindicated Case 3</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination is contraindicated Case 4</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination is contraindicated Case 5</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination is contraindicated Case 6</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination is contraindicated</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination is contraindicated Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Clinical judgement is required. Create a clinical note</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Clinical judgement is required. Create a clinical note Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Has Guidance</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Test Validation</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>\n \n </table>\n </td>\n </tr>\n \n\n \n\n \n \n <tr>\n <td colspan=\"2\">\n <table>\n <tr><th><a id=\"cql-content\"><b>Content: </b></a> text/cql</th></tr>\n <tr><td><pre><code class=\"language-cql\">/*\n * Library: IMMZD5DTRubellaContraindicationsLogic (IMMZ.D5.DT.Rubella contraindications)\n * Rule: Check for contraindications before administering the vaccine(s) due\n * Decision Table: IMMZ.D5.DT.Rubella contraindications\n * Trigger: IMMZ.D5 Determine vaccine(s) to be administered based on contraindications\n */\nlibrary IMMZD5DTRubellaContraindicationsLogic\n\nusing FHIR version '4.0.1'\ninclude FHIRHelpers version '4.0.1'\n\ninclude IMMZD5DTRubellaEncounterElements called Encounter\n\nparameter Today Date default Today()\n\ncontext Patient\n\n/*\n @dynamicValue: Draft Medication Request ID for Rubella dose\n */\n define "Draft Medication Request ID for Rubella dose":\n First(Encounter."Draft Medication Request for Rubella dose").id\n\n\n/*\n@dynamicValue: Guidance\n*/\ndefine "Guidance":\n case \n when "Rubella vaccination is contraindicated" then "Rubella vaccination is contraindicated Guidance"\n when "Clinical judgement is required. Create a clinical note" then "Clinical judgement is required. Create a clinical note Guidance"\n when "Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note" then "Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance" \n else ''\n end\n \ndefine "Has Guidance":\n "Guidance" is not null and "Guidance" != ''\n\n/*\n@output: Rubella vaccination is contraindicated Case 1\n@pseudocode: "Immunization recommendation status" = "Contraindicated"\n*/\ndefine "Rubella vaccination is contraindicated Case 1":\n Encounter."The client is currently pregnant"\n\n/*\n@output: Rubella vaccination is contraindicated Case 2\n@pseudocode: "Immunization recommendation status" = "Contraindicated"\n*/\ndefine "Rubella vaccination is contraindicated Case 2":\n Encounter."The client is receiving blood products"\n\n/*\n@output: Rubella vaccination is contraindicated Case 3\n@pseudocode: "Immunization recommendation status" = "Contraindicated"\n*/\ndefine "Rubella vaccination is contraindicated Case 3":\n Encounter."The client has symptomatic HIV infection"\n\n/*\n@output: Rubella vaccination is contraindicated Case 4\n@pseudocode: "Immunization recommendation status" = "Contraindicated"\n*/\ndefine "Rubella vaccination is contraindicated Case 4":\n Encounter."The client has TB disease"\n\n/*\n@output: Rubella vaccination is contraindicated Case 5\n@pseudocode: "Immunization recommendation status" = "Contraindicated"\n*/\ndefine "Rubella vaccination is contraindicated Case 5":\n Encounter."The client has immunodeficiency syndromes"\n\n/*\n@output: Rubella vaccination is contraindicated Case 6\n@pseudocode: "Immunization recommendation status" = "Contraindicated"\n*/\ndefine "Rubella vaccination is contraindicated Case 6":\n Encounter."The client is exposed to immunosuppressive treatment"\n\n/*\n@output: Rubella vaccination is contraindicated\n@pseudocode: "Immunization recommendation status" = "Contraindicated"\n*/\ndefine "Rubella vaccination is contraindicated":\n "Rubella vaccination is contraindicated Case 1"\n or "Rubella vaccination is contraindicated Case 2"\n or "Rubella vaccination is contraindicated Case 3"\n or "Rubella vaccination is contraindicated Case 4"\n or "Rubella vaccination is contraindicated Case 5"\n or "Rubella vaccination is contraindicated Case 6"\n\n/*\n@output: Rubella vaccination is contraindicated Guidance\n@guidance = Do not vaccinate client with rubella as rubella vaccination is contraindicated for pregnant client.\n@guidance = Do not vaccinate client with rubella as rubella vaccination is contraindicated until at least 3 months after stopping receiving blood products.\n@guidance = Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients with symptomatic HIV infection.\n@guidance = Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients with active TB.\n@guidance = Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients with severe immunodeficiency.\n@guidance = Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients receiving or exposed to immunosuppressive therapy.\n*/\ndefine "Rubella vaccination is contraindicated Guidance":\n case\n when "Rubella vaccination is contraindicated Case 1" then 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for pregnant client.'\n when "Rubella vaccination is contraindicated Case 2" then 'Do not vaccinate client with rubella as rubella vaccination is contraindicated until at least 3 months after stopping receiving blood products.'\n when "Rubella vaccination is contraindicated Case 3" then 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients with symptomatic HIV infection.'\n when "Rubella vaccination is contraindicated Case 4" then 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients with active TB.'\n when "Rubella vaccination is contraindicated Case 5" then 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients with severe immunodeficiency.'\n when "Rubella vaccination is contraindicated Case 6" then 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients receiving or exposed to immunosuppressive therapy.'\n else ''\n end\n\n/*\n@output: Clinical judgement is required. Create a clinical note\n@pseudocode: "Immunization recommendation status" = "Further evaluation needed"\n*/\ndefine "Clinical judgement is required. Create a clinical note":\n Encounter."The client is planning to get pregnant in next month"\n\n/*\n@output: Clinical judgement is required. Create a clinical note Guidance\n@guidance: Discuss pregnancy intentions with client, consider risks of vaccination and make a clinical judgement. Clients planning a pregnancy are advised to avoid pregnancy for 1 month after rubella vaccination.\n*/\ndefine "Clinical judgement is required. Create a clinical note Guidance":\n 'Discuss pregnancy intentions with client, consider risks of vaccination and make a clinical judgement. Clients planning a pregnancy are advised to avoid pregnancy for 1 month after rubella vaccination.'\n\n/*\n@output: Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note\n@pseudocode: "Immunization recommendation status" = "Further evaluation needed"\n*/\ndefine "Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note":\n Encounter."The client has history of severe allergic reactions"\n\n/*\n@output: Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance\n@guidance: Do not vaccinate client with rubella if client has experienced a severe allergic reaction after a previous vaccine dose or vaccine component.\n*/\ndefine "Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance":\n 'Do not vaccinate client with rubella if client has experienced a severe allergic reaction after a previous vaccine dose or vaccine component.'\n\n\n/*\n@test: Test expected results based on example patients\n*/\ndefine "Test Validation":\n case\n when Patient.id = 'Rubella28.1' then "Rubella vaccination is contraindicated Case 1" and "Guidance" = 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for pregnant client.'\n when Patient.id = 'Rubella29.1' then "Clinical judgement is required. Create a clinical note" and "Guidance" = 'Discuss pregnancy intentions with client, consider risks of vaccination and make a clinical judgement. Clients planning a pregnancy are advised to avoid pregnancy for 1 month after rubella vaccination.'\n when Patient.id = 'Rubella30.1' then "Rubella vaccination is contraindicated Case 2" and "Guidance" = 'Do not vaccinate client with rubella as rubella vaccination is contraindicated until at least 3 months after stopping receiving blood products.'\n when Patient.id = 'Rubella31.1' then "Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note" and "Guidance" = 'Do not vaccinate client with rubella if client has experienced a severe allergic reaction after a previous vaccine dose or vaccine component.'\n when Patient.id = 'Rubella32.1' then "Rubella vaccination is contraindicated Case 3" and "Guidance" = 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients with symptomatic HIV infection.'\n when Patient.id = 'Rubella33.1' then "Rubella vaccination is contraindicated Case 4" and "Guidance" = 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients with active TB.'\n when Patient.id = 'Rubella34.1' then "Rubella vaccination is contraindicated Case 5" and "Guidance" = 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients with severe immunodeficiency.'\n when Patient.id = 'Rubella35.1' then "Rubella vaccination is contraindicated Case 6" and "Guidance" = 'Do not vaccinate client with rubella as rubella vaccination is contraindicated for clients receiving or exposed to immunosuppressive therapy.'\n else 'No test case set'\n end\n</code></pre></td></tr>\n </table>\n </td>\n </tr>\n \n \n \n </table>\n</div>\n</div>"
},
"extension" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
"valueCode" : "computable"
}
],
"url" : "http://smart.who.int/immunizations/Library/IMMZD5DTRubellaContraindicationsLogic",
"version" : "1.0.0",
"name" : "IMMZD5DTRubellaContraindicationsLogic",
"title" : "IMMZD5DTRubellaContraindicationsLogic",
"status" : "draft",
"experimental" : false,
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2026-03-31T13:54:17+00:00",
"publisher" : "WHO",
"contact" : [
{
"name" : "WHO",
"telecom" : [
{
"system" : "url",
"value" : "http://who.int"
}
]
}
],
"description" : "This library defines decision support logic for the IMMZ.D5.DT.Rubella contraindications decision table in the Immunization CPG",
"relatedArtifact" : [
{
"type" : "depends-on",
"display" : "Library Encounter",
"resource" : "http://smart.who.int/immunizations/Library/IMMZD5DTRubellaEncounterElements"
}
],
"parameter" : [
{
"name" : "Today",
"use" : "in",
"min" : 0,
"max" : "1",
"type" : "date"
},
{
"name" : "Patient",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Patient"
},
{
"name" : "Draft Medication Request ID for Rubella dose",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "id"
},
{
"name" : "Rubella vaccination is contraindicated Case 1",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Rubella vaccination is contraindicated Case 2",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Rubella vaccination is contraindicated Case 3",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Rubella vaccination is contraindicated Case 4",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Rubella vaccination is contraindicated Case 5",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Rubella vaccination is contraindicated Case 6",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Rubella vaccination is contraindicated",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Rubella vaccination is contraindicated Guidance",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "string"
},
{
"name" : "Clinical judgement is required. Create a clinical note",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Clinical judgement is required. Create a clinical note Guidance",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "string"
},
{
"name" : "Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Rubella vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "string"
},
{
"name" : "Guidance",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "string"
},
{
"name" : "Has Guidance",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Test Validation",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Resource"
}
],
"content" : [
{
"contentType" : "text/cql",
"data" : "LyoKICogTGlicmFyeTogSU1NWkQ1RFRSdWJlbGxhQ29udHJhaW5kaWNhdGlvbnNMb2dpYyAoSU1NWi5ENS5EVC5SdWJlbGxhIGNvbnRyYWluZGljYXRpb25zKQogKiBSdWxlOiBDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMgYmVmb3JlIGFkbWluaXN0ZXJpbmcgdGhlIHZhY2NpbmUocykgZHVlCiAqIERlY2lzaW9uIFRhYmxlOiBJTU1aLkQ1LkRULlJ1YmVsbGEgY29udHJhaW5kaWNhdGlvbnMKICogVHJpZ2dlcjogSU1NWi5ENSBEZXRlcm1pbmUgdmFjY2luZShzKSB0byBiZSBhZG1pbmlzdGVyZWQgYmFzZWQgb24gY29udHJhaW5kaWNhdGlvbnMKICovCmxpYnJhcnkgSU1NWkQ1RFRSdWJlbGxhQ29udHJhaW5kaWNhdGlvbnNMb2dpYwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSU1NWkQ1RFRSdWJlbGxhRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIEVuY291bnRlcgoKcGFyYW1ldGVyIFRvZGF5IERhdGUgZGVmYXVsdCBUb2RheSgpCgpjb250ZXh0IFBhdGllbnQKCi8qCiAgQGR5bmFtaWNWYWx1ZTogRHJhZnQgTWVkaWNhdGlvbiBSZXF1ZXN0IElEIGZvciBSdWJlbGxhIGRvc2UKICAqLwogIGRlZmluZSAiRHJhZnQgTWVkaWNhdGlvbiBSZXF1ZXN0IElEIGZvciBSdWJlbGxhIGRvc2UiOgogICAgRmlyc3QoRW5jb3VudGVyLiJEcmFmdCBNZWRpY2F0aW9uIFJlcXVlc3QgZm9yIFJ1YmVsbGEgZG9zZSIpLmlkCgoKLyoKQGR5bmFtaWNWYWx1ZTogR3VpZGFuY2UKKi8KZGVmaW5lICJHdWlkYW5jZSI6CiAgY2FzZSAKICAgIHdoZW4gIlJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIiB0aGVuICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBHdWlkYW5jZSIKICAgIHdoZW4gIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSIgdGhlbiAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIEd1aWRhbmNlIgogICAgd2hlbiAiUnViZWxsYSB2YWNjaW5hdGlvbiBjb3VsZCBiZSBjb250cmFpbmRpY2F0ZWQuIENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSIgdGhlbiAiUnViZWxsYSB2YWNjaW5hdGlvbiBjb3VsZCBiZSBjb250cmFpbmRpY2F0ZWQuIENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBHdWlkYW5jZSIgCiAgICBlbHNlICcnCiAgZW5kCiAgCmRlZmluZSAiSGFzIEd1aWRhbmNlIjoKICAiR3VpZGFuY2UiIGlzIG5vdCBudWxsIGFuZCAiR3VpZGFuY2UiICE9ICcnCgovKgpAb3V0cHV0OiBSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDEKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJDb250cmFpbmRpY2F0ZWQiCiovCmRlZmluZSAiUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxIjoKICBFbmNvdW50ZXIuIlRoZSBjbGllbnQgaXMgY3VycmVudGx5IHByZWduYW50IgoKLyoKQG91dHB1dDogUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiQ29udHJhaW5kaWNhdGVkIgoqLwpkZWZpbmUgIlJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgMiI6CiAgRW5jb3VudGVyLiJUaGUgY2xpZW50IGlzIHJlY2VpdmluZyBibG9vZCBwcm9kdWN0cyIKCi8qCkBvdXRwdXQ6IFJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgMwpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkNvbnRyYWluZGljYXRlZCIKKi8KZGVmaW5lICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDMiOgogIEVuY291bnRlci4iVGhlIGNsaWVudCBoYXMgc3ltcHRvbWF0aWMgSElWIGluZmVjdGlvbiIKCi8qCkBvdXRwdXQ6IFJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgNApAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkNvbnRyYWluZGljYXRlZCIKKi8KZGVmaW5lICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDQiOgogIEVuY291bnRlci4iVGhlIGNsaWVudCBoYXMgVEIgZGlzZWFzZSIKCi8qCkBvdXRwdXQ6IFJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgNQpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkNvbnRyYWluZGljYXRlZCIKKi8KZGVmaW5lICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDUiOgogIEVuY291bnRlci4iVGhlIGNsaWVudCBoYXMgaW1tdW5vZGVmaWNpZW5jeSBzeW5kcm9tZXMiCgovKgpAb3V0cHV0OiBSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDYKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJDb250cmFpbmRpY2F0ZWQiCiovCmRlZmluZSAiUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSA2IjoKICBFbmNvdW50ZXIuIlRoZSBjbGllbnQgaXMgZXhwb3NlZCB0byBpbW11bm9zdXBwcmVzc2l2ZSB0cmVhdG1lbnQiCgovKgpAb3V0cHV0OiBSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZApAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkNvbnRyYWluZGljYXRlZCIKKi8KZGVmaW5lICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCI6CiAgIlJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgMSIKICAgIG9yICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDIiCiAgICBvciAiUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSAzIgogICAgb3IgIlJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgNCIKICAgIG9yICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDUiCiAgICBvciAiUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSA2IgoKLyoKQG91dHB1dDogUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgR3VpZGFuY2UKQGd1aWRhbmNlID0gRG8gbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBydWJlbGxhIGFzIHJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIGZvciBwcmVnbmFudCBjbGllbnQuCkBndWlkYW5jZSA9IERvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBhcyBydWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCB1bnRpbCBhdCBsZWFzdCAzIG1vbnRocyBhZnRlciBzdG9wcGluZyByZWNlaXZpbmcgYmxvb2QgcHJvZHVjdHMuCkBndWlkYW5jZSA9IERvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBhcyBydWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBmb3IgY2xpZW50cyB3aXRoIHN5bXB0b21hdGljIEhJViBpbmZlY3Rpb24uCkBndWlkYW5jZSA9IERvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBhcyBydWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBmb3IgY2xpZW50cyB3aXRoIGFjdGl2ZSBUQi4KQGd1aWRhbmNlID0gRG8gbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBydWJlbGxhIGFzIHJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIGZvciBjbGllbnRzIHdpdGggc2V2ZXJlIGltbXVub2RlZmljaWVuY3kuCkBndWlkYW5jZSA9IERvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBhcyBydWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBmb3IgY2xpZW50cyByZWNlaXZpbmcgb3IgZXhwb3NlZCB0byBpbW11bm9zdXBwcmVzc2l2ZSB0aGVyYXB5LgoqLwpkZWZpbmUgIlJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIEd1aWRhbmNlIjoKICBjYXNlCiAgICB3aGVuICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDEiIHRoZW4gJ0RvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBhcyBydWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBmb3IgcHJlZ25hbnQgY2xpZW50LicKICAgIHdoZW4gIlJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgMiIgdGhlbiAnRG8gbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBydWJlbGxhIGFzIHJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIHVudGlsIGF0IGxlYXN0IDMgbW9udGhzIGFmdGVyIHN0b3BwaW5nIHJlY2VpdmluZyBibG9vZCBwcm9kdWN0cy4nCiAgICB3aGVuICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDMiIHRoZW4gJ0RvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBhcyBydWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBmb3IgY2xpZW50cyB3aXRoIHN5bXB0b21hdGljIEhJViBpbmZlY3Rpb24uJwogICAgd2hlbiAiUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSA0IiB0aGVuICdEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJ1YmVsbGEgYXMgcnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgZm9yIGNsaWVudHMgd2l0aCBhY3RpdmUgVEIuJwogICAgd2hlbiAiUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSA1IiB0aGVuICdEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJ1YmVsbGEgYXMgcnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgZm9yIGNsaWVudHMgd2l0aCBzZXZlcmUgaW1tdW5vZGVmaWNpZW5jeS4nCiAgICB3aGVuICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDYiIHRoZW4gJ0RvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBhcyBydWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBmb3IgY2xpZW50cyByZWNlaXZpbmcgb3IgZXhwb3NlZCB0byBpbW11bm9zdXBwcmVzc2l2ZSB0aGVyYXB5LicKICAgIGVsc2UgJycKICBlbmQKCi8qCkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZQpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkZ1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQiCiovCmRlZmluZSAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIjoKICBFbmNvdW50ZXIuIlRoZSBjbGllbnQgaXMgcGxhbm5pbmcgdG8gZ2V0IHByZWduYW50IGluIG5leHQgbW9udGgiCgovKgpAb3V0cHV0OiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgR3VpZGFuY2UKQGd1aWRhbmNlOiBEaXNjdXNzIHByZWduYW5jeSBpbnRlbnRpb25zIHdpdGggY2xpZW50LCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGNsaW5pY2FsIGp1ZGdlbWVudC4gQ2xpZW50cyBwbGFubmluZyBhIHByZWduYW5jeSBhcmUgYWR2aXNlZCB0byBhdm9pZCBwcmVnbmFuY3kgZm9yIDEgbW9udGggYWZ0ZXIgcnViZWxsYSB2YWNjaW5hdGlvbi4KKi8KZGVmaW5lICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgR3VpZGFuY2UiOgogICdEaXNjdXNzIHByZWduYW5jeSBpbnRlbnRpb25zIHdpdGggY2xpZW50LCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGNsaW5pY2FsIGp1ZGdlbWVudC4gQ2xpZW50cyBwbGFubmluZyBhIHByZWduYW5jeSBhcmUgYWR2aXNlZCB0byBhdm9pZCBwcmVnbmFuY3kgZm9yIDEgbW9udGggYWZ0ZXIgcnViZWxsYSB2YWNjaW5hdGlvbi4nCgovKgpAb3V0cHV0OiBSdWJlbGxhIHZhY2NpbmF0aW9uIGNvdWxkIGJlIGNvbnRyYWluZGljYXRlZC4gQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiRnVydGhlciBldmFsdWF0aW9uIG5lZWRlZCIKKi8KZGVmaW5lICJSdWJlbGxhIHZhY2NpbmF0aW9uIGNvdWxkIGJlIGNvbnRyYWluZGljYXRlZC4gQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIjoKICBFbmNvdW50ZXIuIlRoZSBjbGllbnQgaGFzIGhpc3Rvcnkgb2Ygc2V2ZXJlIGFsbGVyZ2ljIHJlYWN0aW9ucyIKCi8qCkBvdXRwdXQ6IFJ1YmVsbGEgdmFjY2luYXRpb24gY291bGQgYmUgY29udHJhaW5kaWNhdGVkLiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgR3VpZGFuY2UKQGd1aWRhbmNlOiBEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJ1YmVsbGEgaWYgY2xpZW50IGhhcyBleHBlcmllbmNlZCBhIHNldmVyZSBhbGxlcmdpYyByZWFjdGlvbiBhZnRlciBhIHByZXZpb3VzIHZhY2NpbmUgZG9zZSBvciB2YWNjaW5lIGNvbXBvbmVudC4KKi8KZGVmaW5lICJSdWJlbGxhIHZhY2NpbmF0aW9uIGNvdWxkIGJlIGNvbnRyYWluZGljYXRlZC4gQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIEd1aWRhbmNlIjoKICAnRG8gbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBydWJlbGxhIGlmIGNsaWVudCBoYXMgZXhwZXJpZW5jZWQgYSBzZXZlcmUgYWxsZXJnaWMgcmVhY3Rpb24gYWZ0ZXIgYSBwcmV2aW91cyB2YWNjaW5lIGRvc2Ugb3IgdmFjY2luZSBjb21wb25lbnQuJwoKCi8qCkB0ZXN0OiBUZXN0IGV4cGVjdGVkIHJlc3VsdHMgYmFzZWQgb24gZXhhbXBsZSBwYXRpZW50cwoqLwpkZWZpbmUgIlRlc3QgVmFsaWRhdGlvbiI6CiAgY2FzZQogICAgd2hlbiBQYXRpZW50LmlkID0gJ1J1YmVsbGEyOC4xJyB0aGVuICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDEiIGFuZCAiR3VpZGFuY2UiID0gJ0RvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBhcyBydWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBmb3IgcHJlZ25hbnQgY2xpZW50LicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSdWJlbGxhMjkuMScgdGhlbiAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIiBhbmQgIkd1aWRhbmNlIiA9ICdEaXNjdXNzIHByZWduYW5jeSBpbnRlbnRpb25zIHdpdGggY2xpZW50LCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGNsaW5pY2FsIGp1ZGdlbWVudC4gQ2xpZW50cyBwbGFubmluZyBhIHByZWduYW5jeSBhcmUgYWR2aXNlZCB0byBhdm9pZCBwcmVnbmFuY3kgZm9yIDEgbW9udGggYWZ0ZXIgcnViZWxsYSB2YWNjaW5hdGlvbi4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnUnViZWxsYTMwLjEnIHRoZW4gIlJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgMiIgYW5kICJHdWlkYW5jZSIgPSAnRG8gbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBydWJlbGxhIGFzIHJ1YmVsbGEgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIHVudGlsIGF0IGxlYXN0IDMgbW9udGhzIGFmdGVyIHN0b3BwaW5nIHJlY2VpdmluZyBibG9vZCBwcm9kdWN0cy4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnUnViZWxsYTMxLjEnIHRoZW4gIlJ1YmVsbGEgdmFjY2luYXRpb24gY291bGQgYmUgY29udHJhaW5kaWNhdGVkLiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUiIGFuZCAiR3VpZGFuY2UiID0gJ0RvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBpZiBjbGllbnQgaGFzIGV4cGVyaWVuY2VkIGEgc2V2ZXJlIGFsbGVyZ2ljIHJlYWN0aW9uIGFmdGVyIGEgcHJldmlvdXMgdmFjY2luZSBkb3NlIG9yIHZhY2NpbmUgY29tcG9uZW50LicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSdWJlbGxhMzIuMScgdGhlbiAiUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSAzIiBhbmQgIkd1aWRhbmNlIiA9ICdEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJ1YmVsbGEgYXMgcnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgZm9yIGNsaWVudHMgd2l0aCBzeW1wdG9tYXRpYyBISVYgaW5mZWN0aW9uLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSdWJlbGxhMzMuMScgdGhlbiAiUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSA0IiBhbmQgIkd1aWRhbmNlIiA9ICdEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJ1YmVsbGEgYXMgcnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgZm9yIGNsaWVudHMgd2l0aCBhY3RpdmUgVEIuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ1J1YmVsbGEzNC4xJyB0aGVuICJSdWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDUiIGFuZCAiR3VpZGFuY2UiID0gJ0RvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcnViZWxsYSBhcyBydWJlbGxhIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBmb3IgY2xpZW50cyB3aXRoIHNldmVyZSBpbW11bm9kZWZpY2llbmN5LicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSdWJlbGxhMzUuMScgdGhlbiAiUnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSA2IiBhbmQgIkd1aWRhbmNlIiA9ICdEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJ1YmVsbGEgYXMgcnViZWxsYSB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgZm9yIGNsaWVudHMgcmVjZWl2aW5nIG9yIGV4cG9zZWQgdG8gaW1tdW5vc3VwcHJlc3NpdmUgdGhlcmFweS4nCiAgICBlbHNlICdObyB0ZXN0IGNhc2Ugc2V0JwogIGVuZAo="
}
]
}