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" : "IMMZD2DTBCGElements",
"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;\">IMMZD2DTBCGElements</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Id: </b></th>\n <td style=\"padding-left: 4px;\">IMMZD2DTBCGElements</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-IMMZD2DTBCGElements.html\">IMMZD2DTBCGElements</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 context-independent elements for BCG used throughout 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-WHOConcepts.html\">WHOConcepts</a></li>\n \n <li><a href=\"Library-WHOCommon.html\">WHOCommon</a></li>\n \n <li><a href=\"Library-WHOElements.html\">WHOElements</a></li>\n \n <li><a href=\"Library-IMMZCommon.html\">IMMZCommon</a></li>\n \n <li><a href=\"Library-IMMZConcepts.html\">IMMZConcepts</a></li>\n \n <li><a href=\"Library-IMMZElements.html\">IMMZElements</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>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>BCG Doses Administered to Patient</th><th>Immunization</th><th>0</th><th>*</th><th>Out</th></tr>\n \n <tr><th>BCG Primary Series Doses Administered to Patient</th><th>Immunization</th><th>0</th><th>*</th><th>Out</th></tr>\n \n <tr><th>Number of BCG Primary Series Doses Administered</th><th>integer</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>No BCG primary series dose was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client's age is less than or equal to 28 days</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client's HIV status is negative or unknown</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>No live vaccine was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Live vaccine was administered in the last four weeks</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client's HIV status is positive</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is currently receiving antiretroviral therapy</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is immunologically stable</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is not immunologically stable</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is currently not receiving antiretroviral therapy</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client's age is between 28 days and 5 years</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client's TB infection test result is negative</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>No live vaccine was administered in the last four weeks</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client's TB infection test result is unknown (test not done or no result yet)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client's TB infection test result is positive</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is not clinically well</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is clinically well</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client's age is more than 5 years</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>One BCG primary series dose was administered</th><th>boolean</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/*\n * Library: IMMZD2DTBCGElements\n */\nlibrary IMMZD2DTBCGElements\n\nusing FHIR version '4.0.1'\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOConcepts\ninclude WHOCommon called WC\ninclude WHOElements called WE\n\ninclude IMMZCommon called Common\ninclude IMMZConcepts called Concepts\ninclude IMMZElements called Elements\n\ncontext Patient\n\n/*\n@internal: BCG containing Doses Administered to Patient\n*/\ndefine "BCG Doses Administered to Patient":\n Elements."Doses Administered to Patient" I\n where\n I.vaccineCode in Concepts."BCG vaccines"\n\n/*\n@internal: BCG containing Doses Administered to Patient that are in the Primary series\n*/\ndefine "BCG Primary Series Doses Administered to Patient":\n "BCG Doses Administered to Patient".seriesPrimary()\n\n/*\n@internal: Number of BCG Primary Series doses\n*/\ndefine "Number of BCG Primary Series Doses Administered":\n Count("BCG Primary Series Doses Administered to Patient")\n\n/*\n@input: No BCG primary series dose was administered\n@pseudocode: Count of vaccines administered (where "Vaccine type" = "BCG vaccines" and "Type of dose" = "Primary series") = 0\n@code: No BCG primary series dose was administered-112\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "No BCG primary series dose was administered":\n "Number of BCG Primary Series Doses Administered" = 0\n\n/*\n@input: Client's age is less than or equal to 28 days\n@pseudocode: Today's date − "Date of birth" ≤ 28 days\n@code: Client's age is less than or equal to 28 days-40\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client's age is less than or equal to 28 days":\n Elements."Current Patient Age In Days" <= 28\n\n/*\n@input: Client's HIV status is negative or unknown\n@pseudocode: "HIV status" ≠ "HIV-positive"\n@code: Client's HIV status is negative or unknown-29\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client's HIV status is negative or unknown":\n Elements."Client's HIV status is negative or unknown"\n\n/*\n@input: No live vaccine was administered\n@pseudocode: Today's date − latest "Date and time of vaccination" (where "Live vaccine" = TRUE) IS NULL\n@code: No live vaccine was administered-90\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "No live vaccine was administered":\n Elements."No live vaccine was administered"\n\n/*\n@input: Live vaccine was administered in the last four weeks\n@pseudocode: Today's date − latest "Date and time of vaccination" (where "Live vaccine" = TRUE) < 4 weeks\n@code: Live vaccine was administered in the last four weeks-92\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Live vaccine was administered in the last four weeks":\n Elements."Live vaccine was administered in the last 4 weeks"\n\n/*\n@input: Client's HIV status is positive\n@pseudocode: "HIV status" = "HIV-positive"\n@code: Client's HIV status is positive-29\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client's HIV status is positive":\n Elements."Client's HIV status is positive"\n\n/*\n@input: Client is currently receiving antiretroviral therapy\n@pseudocode: "Currently on ART" = TRUE\n@code: Client is currently receiving antiretroviral therapy-25\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client is currently receiving antiretroviral therapy":\n Elements."Client is currently receiving antiretroviral therapy"\n\n/*\n@input: Client is immunologically stable\n@pseudocode: "Immunologically stable" = TRUE\n@code: Client is immunologically stable-31\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client is immunologically stable":\n Elements."Client is immunologically stable"\n\n/*\n@input: Client is not immunologically stable\n@pseudocode: "Immunologically stable" = FALSE\n@code: Client is not immunologically stable-32\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client is not immunologically stable":\n Elements."Client is not immunologically stable"\n\n/*\n@input: Client is currently not receiving antiretroviral therapy\n@pseudocode: "Currently on ART" = FALSE\n@code: Client is currently not receiving antiretroviral therapy-26\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client is currently not receiving antiretroviral therapy":\n Elements."Client is currently not receiving antiretroviral therapy"\n\n/*\n@input: Client's age is between 28 days and 5 years\n@pseudocode: 28 days < Today's date − "Date of birth" < 5 years\n@code: Client's age is between 28 days and 5 years-50\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client's age is between 28 days and 5 years":\n 28 < Elements."Current Patient Age In Days"\n and Elements."Current Patient Age In Years" < 5\n\n/*\n@input: Client's TB infection test result is negative\n@pseudocode: "TB infection test result" = "Negative"\n@code: Client's TB infection test result is negative-39\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client's TB infection test result is negative":\n Elements."Client's TB infection test result is negative"\n\n/*\n@input: No live vaccine was administered in the last four weeks\n@pseudocode: Today's date − latest "Date and time of vaccination" (where "Live vaccine" = TRUE) ≥ 4 weeks\n@code: No live vaccine was administered in the last four weeks-92\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "No live vaccine was administered in the last four weeks":\n Elements."No live vaccine was administered in the last 4 weeks"\n\n/*\n@input: Client's TB infection test result is unknown (test not done or no result yet)\n@pseudocode: "TB infection test result" IS NULL\n@code: Client's TB infection test result is unknown (test not done or no result yet)-34\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client's TB infection test result is unknown (test not done or no result yet)":\n Elements."Client's TB infection test result is unknown (test not done or no result yet)"\n\n/*\n@input: Client's TB infection test result is positive\n@pseudocode: "TB infection test result" = "Positive"\n@code: Client's TB infection test result is positive-39\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client's TB infection test result is positive":\n Elements."Client's TB infection test result is positive"\n\n/*\n@input: Client is not clinically well\n@pseudocode: "Clinically well" = FALSE\n@code: Client is not clinically well-25\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client is not clinically well":\n Elements."Client is not clinically well"\n\n/*\n@input: Client is clinically well\n@pseudocode: "Clinically well" = TRUE\n@code: Client is clinically well-24\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client is clinically well":\n Elements."Client is clinically well"\n\n/*\n@input: Client's age is more than 5 years\n@pseudocode: Today's date − "Date of birth" ≥ 5 years\n@code: Client's age is more than 5 years-40\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "Client's age is more than 5 years":\n Elements."Current Patient Age In Years" >= 5\n\n/*\n@input: One BCG primary series dose was administered\n@pseudocode: Count of vaccines administered (where "Vaccine type" = "BCG vaccines" and "Type of dose" = "Primary series") = 1\n@code: One BCG primary series dose was administered-112\n@decision: IMMZ.D2.DT.BCG\n*/\ndefine "One BCG primary series dose was administered":\n "Number of BCG Primary Series Doses Administered" = 1\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/IMMZD2DTBCGElements",
"version" : "1.0.0",
"name" : "IMMZD2DTBCGElements",
"title" : "IMMZD2DTBCGElements",
"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 context-independent elements for BCG used throughout the Immunization CPG",
"relatedArtifact" : [
{
"type" : "depends-on",
"display" : "Library WHOConcepts",
"resource" : "http://smart.who.int/immunizations/Library/WHOConcepts"
},
{
"type" : "depends-on",
"display" : "Library WC",
"resource" : "http://smart.who.int/immunizations/Library/WHOCommon"
},
{
"type" : "depends-on",
"display" : "Library WE",
"resource" : "http://smart.who.int/immunizations/Library/WHOElements"
},
{
"type" : "depends-on",
"display" : "Library Common",
"resource" : "http://smart.who.int/immunizations/Library/IMMZCommon"
},
{
"type" : "depends-on",
"display" : "Library Concepts",
"resource" : "http://smart.who.int/immunizations/Library/IMMZConcepts"
},
{
"type" : "depends-on",
"display" : "Library Elements",
"resource" : "http://smart.who.int/immunizations/Library/IMMZElements"
}
],
"parameter" : [
{
"name" : "Patient",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Patient"
},
{
"name" : "BCG Doses Administered to Patient",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Immunization"
},
{
"name" : "BCG Primary Series Doses Administered to Patient",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Immunization"
},
{
"name" : "Number of BCG Primary Series Doses Administered",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "integer"
},
{
"name" : "No BCG primary series dose was administered",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client's age is less than or equal to 28 days",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client's HIV status is negative or unknown",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "No live vaccine was administered",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Live vaccine was administered in the last four weeks",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client's HIV status is positive",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client is currently receiving antiretroviral therapy",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client is immunologically stable",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client is not immunologically stable",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client is currently not receiving antiretroviral therapy",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client's age is between 28 days and 5 years",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client's TB infection test result is negative",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "No live vaccine was administered in the last four weeks",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client's TB infection test result is unknown (test not done or no result yet)",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client's TB infection test result is positive",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client is not clinically well",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client is clinically well",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Client's age is more than 5 years",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "One BCG primary series dose was administered",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
}
],
"content" : [
{
"contentType" : "text/cql",
"data" : "Ci8qCiAgKiBMaWJyYXJ5OiBJTU1aRDJEVEJDR0VsZW1lbnRzCiAgKi8KbGlicmFyeSBJTU1aRDJEVEJDR0VsZW1lbnRzCgp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBXSE9Db25jZXB0cwppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0MKaW5jbHVkZSBXSE9FbGVtZW50cyBjYWxsZWQgV0UKCmluY2x1ZGUgSU1NWkNvbW1vbiBjYWxsZWQgQ29tbW9uCmluY2x1ZGUgSU1NWkNvbmNlcHRzIGNhbGxlZCBDb25jZXB0cwppbmNsdWRlIElNTVpFbGVtZW50cyBjYWxsZWQgRWxlbWVudHMKCmNvbnRleHQgUGF0aWVudAoKLyoKQGludGVybmFsOiBCQ0cgY29udGFpbmluZyBEb3NlcyBBZG1pbmlzdGVyZWQgdG8gUGF0aWVudAoqLwpkZWZpbmUgIkJDRyBEb3NlcyBBZG1pbmlzdGVyZWQgdG8gUGF0aWVudCI6CiAgRWxlbWVudHMuIkRvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IiBJCiAgd2hlcmUKICAgIEkudmFjY2luZUNvZGUgaW4gQ29uY2VwdHMuIkJDRyB2YWNjaW5lcyIKCi8qCkBpbnRlcm5hbDogQkNHIGNvbnRhaW5pbmcgRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQgdGhhdCBhcmUgaW4gdGhlIFByaW1hcnkgc2VyaWVzCiovCmRlZmluZSAiQkNHIFByaW1hcnkgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IjoKICAiQkNHIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50Ii5zZXJpZXNQcmltYXJ5KCkKCi8qCkBpbnRlcm5hbDogTnVtYmVyIG9mIEJDRyBQcmltYXJ5IFNlcmllcyBkb3NlcwoqLwpkZWZpbmUgIk51bWJlciBvZiBCQ0cgUHJpbWFyeSBTZXJpZXMgRG9zZXMgQWRtaW5pc3RlcmVkIjoKICBDb3VudCgiQkNHIFByaW1hcnkgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IikKCi8qCkBpbnB1dDogTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZApAcHNldWRvY29kZTogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJCQ0cgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJQcmltYXJ5IHNlcmllcyIpID0gMApAY29kZTogTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZC0xMTIKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkJDRwoqLwpkZWZpbmUgIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiOgogICJOdW1iZXIgb2YgQkNHIFByaW1hcnkgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCIgPSAwCgovKgpAaW5wdXQ6IENsaWVudCdzIGFnZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjggZGF5cwpAcHNldWRvY29kZTogVG9kYXkncyBkYXRlIOKIkiAiRGF0ZSBvZiBiaXJ0aCIg4omkIDI4IGRheXMKQGNvZGU6IENsaWVudCdzIGFnZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjggZGF5cy00MApAZGVjaXNpb246IElNTVouRDIuRFQuQkNHCiovCmRlZmluZSAiQ2xpZW50J3MgYWdlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyOCBkYXlzIjoKICBFbGVtZW50cy4iQ3VycmVudCBQYXRpZW50IEFnZSBJbiBEYXlzIiA8PSAyOAoKLyoKQGlucHV0OiBDbGllbnQncyBISVYgc3RhdHVzIGlzIG5lZ2F0aXZlIG9yIHVua25vd24KQHBzZXVkb2NvZGU6ICJISVYgc3RhdHVzIiDiiaAgIkhJVi1wb3NpdGl2ZSIKQGNvZGU6IENsaWVudCdzIEhJViBzdGF0dXMgaXMgbmVnYXRpdmUgb3IgdW5rbm93bi0yOQpAZGVjaXNpb246IElNTVouRDIuRFQuQkNHCiovCmRlZmluZSAiQ2xpZW50J3MgSElWIHN0YXR1cyBpcyBuZWdhdGl2ZSBvciB1bmtub3duIjoKICBFbGVtZW50cy4iQ2xpZW50J3MgSElWIHN0YXR1cyBpcyBuZWdhdGl2ZSBvciB1bmtub3duIgoKLyoKQGlucHV0OiBObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZApAcHNldWRvY29kZTogVG9kYXkncyBkYXRlIOKIkiBsYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiTGl2ZSB2YWNjaW5lIiA9IFRSVUUpIElTIE5VTEwKQGNvZGU6IE5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkLTkwCkBkZWNpc2lvbjogSU1NWi5EMi5EVC5CQ0cKKi8KZGVmaW5lICJObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCI6CiAgRWxlbWVudHMuIk5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIgoKLyoKQGlucHV0OiBMaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzCkBwc2V1ZG9jb2RlOiBUb2RheSdzIGRhdGUg4oiSIGxhdGVzdCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJMaXZlIHZhY2NpbmUiID0gVFJVRSkgPCA0IHdlZWtzCkBjb2RlOiBMaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzLTkyCkBkZWNpc2lvbjogSU1NWi5EMi5EVC5CQ0cKKi8KZGVmaW5lICJMaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzIjoKICBFbGVtZW50cy4iTGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgNCB3ZWVrcyIKCi8qCkBpbnB1dDogQ2xpZW50J3MgSElWIHN0YXR1cyBpcyBwb3NpdGl2ZQpAcHNldWRvY29kZTogIkhJViBzdGF0dXMiID0gIkhJVi1wb3NpdGl2ZSIKQGNvZGU6IENsaWVudCdzIEhJViBzdGF0dXMgaXMgcG9zaXRpdmUtMjkKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkJDRwoqLwpkZWZpbmUgIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgcG9zaXRpdmUiOgogIEVsZW1lbnRzLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgoKLyoKQGlucHV0OiBDbGllbnQgaXMgY3VycmVudGx5IHJlY2VpdmluZyBhbnRpcmV0cm92aXJhbCB0aGVyYXB5CkBwc2V1ZG9jb2RlOiAiQ3VycmVudGx5IG9uIEFSVCIgPSBUUlVFCkBjb2RlOiBDbGllbnQgaXMgY3VycmVudGx5IHJlY2VpdmluZyBhbnRpcmV0cm92aXJhbCB0aGVyYXB5LTI1CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5CQ0cKKi8KZGVmaW5lICJDbGllbnQgaXMgY3VycmVudGx5IHJlY2VpdmluZyBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IjoKICBFbGVtZW50cy4iQ2xpZW50IGlzIGN1cnJlbnRseSByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKCi8qCkBpbnB1dDogQ2xpZW50IGlzIGltbXVub2xvZ2ljYWxseSBzdGFibGUKQHBzZXVkb2NvZGU6ICJJbW11bm9sb2dpY2FsbHkgc3RhYmxlIiA9IFRSVUUKQGNvZGU6IENsaWVudCBpcyBpbW11bm9sb2dpY2FsbHkgc3RhYmxlLTMxCkBkZWNpc2lvbjogSU1NWi5EMi5EVC5CQ0cKKi8KZGVmaW5lICJDbGllbnQgaXMgaW1tdW5vbG9naWNhbGx5IHN0YWJsZSI6CiAgRWxlbWVudHMuIkNsaWVudCBpcyBpbW11bm9sb2dpY2FsbHkgc3RhYmxlIgoKLyoKQGlucHV0OiBDbGllbnQgaXMgbm90IGltbXVub2xvZ2ljYWxseSBzdGFibGUKQHBzZXVkb2NvZGU6ICJJbW11bm9sb2dpY2FsbHkgc3RhYmxlIiA9IEZBTFNFCkBjb2RlOiBDbGllbnQgaXMgbm90IGltbXVub2xvZ2ljYWxseSBzdGFibGUtMzIKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkJDRwoqLwpkZWZpbmUgIkNsaWVudCBpcyBub3QgaW1tdW5vbG9naWNhbGx5IHN0YWJsZSI6CiAgRWxlbWVudHMuIkNsaWVudCBpcyBub3QgaW1tdW5vbG9naWNhbGx5IHN0YWJsZSIKCi8qCkBpbnB1dDogQ2xpZW50IGlzIGN1cnJlbnRseSBub3QgcmVjZWl2aW5nIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkKQHBzZXVkb2NvZGU6ICJDdXJyZW50bHkgb24gQVJUIiA9IEZBTFNFCkBjb2RlOiBDbGllbnQgaXMgY3VycmVudGx5IG5vdCByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweS0yNgpAZGVjaXNpb246IElNTVouRDIuRFQuQkNHCiovCmRlZmluZSAiQ2xpZW50IGlzIGN1cnJlbnRseSBub3QgcmVjZWl2aW5nIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkiOgogIEVsZW1lbnRzLiJDbGllbnQgaXMgY3VycmVudGx5IG5vdCByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKCi8qCkBpbnB1dDogQ2xpZW50J3MgYWdlIGlzIGJldHdlZW4gMjggZGF5cyBhbmQgNSB5ZWFycwpAcHNldWRvY29kZTogMjggZGF5cyA8IFRvZGF5J3MgZGF0ZSDiiJIgIkRhdGUgb2YgYmlydGgiIDwgNSB5ZWFycwpAY29kZTogQ2xpZW50J3MgYWdlIGlzIGJldHdlZW4gMjggZGF5cyBhbmQgNSB5ZWFycy01MApAZGVjaXNpb246IElNTVouRDIuRFQuQkNHCiovCmRlZmluZSAiQ2xpZW50J3MgYWdlIGlzIGJldHdlZW4gMjggZGF5cyBhbmQgNSB5ZWFycyI6CiAgMjggPCBFbGVtZW50cy4iQ3VycmVudCBQYXRpZW50IEFnZSBJbiBEYXlzIgogIGFuZCBFbGVtZW50cy4iQ3VycmVudCBQYXRpZW50IEFnZSBJbiBZZWFycyIgPCA1CgovKgpAaW5wdXQ6IENsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyBuZWdhdGl2ZQpAcHNldWRvY29kZTogIlRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCIgPSAiTmVnYXRpdmUiCkBjb2RlOiBDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgbmVnYXRpdmUtMzkKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkJDRwoqLwpkZWZpbmUgIkNsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyBuZWdhdGl2ZSI6CiAgRWxlbWVudHMuIkNsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyBuZWdhdGl2ZSIKCi8qCkBpbnB1dDogTm8gbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgZm91ciB3ZWVrcwpAcHNldWRvY29kZTogVG9kYXkncyBkYXRlIOKIkiBsYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiTGl2ZSB2YWNjaW5lIiA9IFRSVUUpIOKJpSA0IHdlZWtzCkBjb2RlOiBObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzLTkyCkBkZWNpc2lvbjogSU1NWi5EMi5EVC5CQ0cKKi8KZGVmaW5lICJObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzIjoKICBFbGVtZW50cy4iTm8gbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgNCB3ZWVrcyIKCi8qCkBpbnB1dDogQ2xpZW50J3MgVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IGlzIHVua25vd24gKHRlc3Qgbm90IGRvbmUgb3Igbm8gcmVzdWx0IHlldCkKQHBzZXVkb2NvZGU6ICJUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQiIElTIE5VTEwKQGNvZGU6IENsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyB1bmtub3duICh0ZXN0IG5vdCBkb25lIG9yIG5vIHJlc3VsdCB5ZXQpLTM0CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5CQ0cKKi8KZGVmaW5lICJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgdW5rbm93biAodGVzdCBub3QgZG9uZSBvciBubyByZXN1bHQgeWV0KSI6CiAgRWxlbWVudHMuIkNsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyB1bmtub3duICh0ZXN0IG5vdCBkb25lIG9yIG5vIHJlc3VsdCB5ZXQpIgoKLyoKQGlucHV0OiBDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgcG9zaXRpdmUKQHBzZXVkb2NvZGU6ICJUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQiID0gIlBvc2l0aXZlIgpAY29kZTogQ2xpZW50J3MgVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IGlzIHBvc2l0aXZlLTM5CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5CQ0cKKi8KZGVmaW5lICJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgcG9zaXRpdmUiOgogIEVsZW1lbnRzLiJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgcG9zaXRpdmUiCgovKgpAaW5wdXQ6IENsaWVudCBpcyBub3QgY2xpbmljYWxseSB3ZWxsCkBwc2V1ZG9jb2RlOiAiQ2xpbmljYWxseSB3ZWxsIiA9IEZBTFNFCkBjb2RlOiBDbGllbnQgaXMgbm90IGNsaW5pY2FsbHkgd2VsbC0yNQpAZGVjaXNpb246IElNTVouRDIuRFQuQkNHCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBjbGluaWNhbGx5IHdlbGwiOgogIEVsZW1lbnRzLiJDbGllbnQgaXMgbm90IGNsaW5pY2FsbHkgd2VsbCIKCi8qCkBpbnB1dDogQ2xpZW50IGlzIGNsaW5pY2FsbHkgd2VsbApAcHNldWRvY29kZTogIkNsaW5pY2FsbHkgd2VsbCIgPSBUUlVFCkBjb2RlOiBDbGllbnQgaXMgY2xpbmljYWxseSB3ZWxsLTI0CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5CQ0cKKi8KZGVmaW5lICJDbGllbnQgaXMgY2xpbmljYWxseSB3ZWxsIjoKICBFbGVtZW50cy4iQ2xpZW50IGlzIGNsaW5pY2FsbHkgd2VsbCIKCi8qCkBpbnB1dDogQ2xpZW50J3MgYWdlIGlzIG1vcmUgdGhhbiA1IHllYXJzCkBwc2V1ZG9jb2RlOiBUb2RheSdzIGRhdGUg4oiSICJEYXRlIG9mIGJpcnRoIiDiiaUgNSB5ZWFycwpAY29kZTogQ2xpZW50J3MgYWdlIGlzIG1vcmUgdGhhbiA1IHllYXJzLTQwCkBkZWNpc2lvbjogSU1NWi5EMi5EVC5CQ0cKKi8KZGVmaW5lICJDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIDUgeWVhcnMiOgogIEVsZW1lbnRzLiJDdXJyZW50IFBhdGllbnQgQWdlIEluIFllYXJzIiA+PSA1CgovKgpAaW5wdXQ6IE9uZSBCQ0cgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkJDRyB2YWNjaW5lcyIgYW5kICJUeXBlIG9mIGRvc2UiID0gIlByaW1hcnkgc2VyaWVzIikgPSAxCkBjb2RlOiBPbmUgQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZC0xMTIKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkJDRwoqLwpkZWZpbmUgIk9uZSBCQ0cgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIjoKICAiTnVtYmVyIG9mIEJDRyBQcmltYXJ5IFNlcmllcyBEb3NlcyBBZG1pbmlzdGVyZWQiID0gMQo="
}
]
}