@prefix fhir: <http://hl7.org/fhir/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# - resource -------------------------------------------------------------------

<http://smart.who.int/immunizations/Library/IMMZD2DTBCGLogic> a fhir:Library ;
  fhir:nodeRole fhir:treeRoot ;
  fhir:id [ fhir:v "IMMZD2DTBCGLogic"] ; # 
  fhir:meta [
     fhir:profile ( [
       fhir:v "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"^^xsd:anyURI ;
       fhir:l <http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary>
     ] [
       fhir:v "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"^^xsd:anyURI ;
       fhir:l <http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary>
     ] [
       fhir:v "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"^^xsd:anyURI ;
       fhir:l <http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library>
     ] [
       fhir:v "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"^^xsd:anyURI ;
       fhir:l <http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module>
     ] )
  ] ; # 
  fhir:text [
     fhir:status [ fhir:v "extensions" ] ;
     fhir:div [ fhir:v "<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;\">IMMZD2DTBCGLogic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">IMMZD2DTBCGLogic</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-IMMZD2DTBCGLogic.html\">IMMZD2DTBCGLogic</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.D2.DT.BCG 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-IMMZD2DTBCGEncounterElements.html\">IMMZD2DTBCGEncounterElements</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>Client is due for BCG vaccination Case 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is due for BCG vaccination Case 2</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is due for BCG vaccination Case 3</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is due for BCG vaccination Case 4</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is due for BCG vaccination Case 5</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is due for BCG vaccination Case 6</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is due for BCG vaccination</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is due for BCG vaccination Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 2</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 3</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 4</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 5</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 6</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 7</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 8</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 9</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 10</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 11</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 12</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 13</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 14</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 15</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Case 16</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Client is not due for BCG vaccination Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Clinical judgement is required. Create clinical note. Case 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Clinical judgement is required. Create clinical note. Case 2</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Clinical judgement is required. Create 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 clinical note. Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>BCG immunization schedule is complete</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>BCG immunization schedule is complete 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: IMMZD2DTBCGLogic (IMMZ.D2.DT.BCG)\n * Rule: Determine if the client is due for a bacille Calmette–Guérin (BCG) vaccination according to the national immunization schedule\n * Decision Table: IMMZ.D2.DT.BCG\n * Trigger: IMMZ.D2 Determine required vaccination(s) if any\n */\nlibrary IMMZD2DTBCGLogic\n\nusing FHIR version '4.0.1'\ninclude FHIRHelpers version '4.0.1'\n\ninclude IMMZD2DTBCGEncounterElements called Encounter\n\nparameter Today Date default Today()\n\ncontext Patient\n\n\n/*\n@dynamicValue: Guidance\n*/\ndefine \"Guidance\":\n  case \n    when \"Client is due for BCG vaccination\" then \"Client is due for BCG vaccination Guidance\"\n    when \"Client is not due for BCG vaccination\" then \"Client is not due for BCG vaccination Guidance\"\n    when \"Clinical judgement is required. Create clinical note.\" then \"Clinical judgement is required. Create clinical note. Guidance\"\n    when \"BCG immunization schedule is complete\" then \"BCG immunization schedule is complete Guidance\" \n    else ''\n  end\n  \ndefine \"Has Guidance\":\n  \"Guidance\" is not null and \"Guidance\" != ''\n\n/*\n@output: Client is due for BCG vaccination Case 1\n@pseudocode: \"Immunization recommendation status\" = \"Due\"\n*/\ndefine \"Client is due for BCG vaccination Case 1\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is less than or equal to 28 days\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"No live vaccine was administered\"\n\n/*\n@output: Client is due for BCG vaccination Case 2\n@pseudocode: \"Immunization recommendation status\" = \"Due\"\n*/\ndefine \"Client is due for BCG vaccination Case 2\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is less than or equal to 28 days\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is immunologically stable\"\n    and Encounter.\"No live vaccine was administered\"\n\n/*\n@output: Client is due for BCG vaccination Case 3\n@pseudocode: \"Immunization recommendation status\" = \"Due\"\n*/\ndefine \"Client is due for BCG vaccination Case 3\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is between 28 days and 5 years\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"Client's TB infection test result is negative\"\n    and Encounter.\"No live vaccine was administered in the last four weeks\"\n\n/*\n@output: Client is due for BCG vaccination Case 4\n@pseudocode: \"Immunization recommendation status\" = \"Due\"\n*/\ndefine \"Client is due for BCG vaccination Case 4\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is between 28 days and 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is immunologically stable\"\n    and Encounter.\"No live vaccine was administered in the last four weeks\"\n    and Encounter.\"Client is clinically well\"\n\n/*\n@output: Client is due for BCG vaccination Case 5\n@pseudocode: \"Immunization recommendation status\" = \"Due\"\n*/\ndefine \"Client is due for BCG vaccination Case 5\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is more than 5 years\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"Client's TB infection test result is negative\"\n    and Encounter.\"No live vaccine was administered in the last four weeks\"\n\n/*\n@output: Client is due for BCG vaccination Case 6\n@pseudocode: \"Immunization recommendation status\" = \"Due\"\n*/\ndefine \"Client is due for BCG vaccination Case 6\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is more than 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is immunologically stable\"\n    and Encounter.\"No live vaccine was administered in the last four weeks\"\n    and Encounter.\"Client is clinically well\"\n\n/*\n@output: Client is due for BCG vaccination\n@pseudocode: \"Immunization recommendation status\" = \"Due\"\n*/\ndefine \"Client is due for BCG vaccination\":\n  \"Client is due for BCG vaccination Case 1\"\n    or \"Client is due for BCG vaccination Case 2\"\n    or \"Client is due for BCG vaccination Case 3\"\n    or \"Client is due for BCG vaccination Case 4\"\n    or \"Client is due for BCG vaccination Case 5\"\n    or \"Client is due for BCG vaccination Case 6\"\n\n/*\n@output: Client is due for BCG vaccination Guidance\n@guidance = Should vaccinate client with first BCG dose as no BCG dose was administered, client is within age range, HIV status is not positive and no live vaccine was administered.\nCheck for contraindications.\n@guidance = Should vaccinate client with first BCG dose as no BCG dose was administered, client is immunologically stable and no live vaccine was administered.\nCheck for contraindications.\n@guidance = Should vaccinate client with first BCG dose as no BCG dose was administered, client's TB test result is negative and no live vaccine was administered in the past 4 weeks.\nCheck for contraindications.\n@guidance = Should vaccinate client with first BCG dose as no BCG dose was administered, client is receiving ART, clinically well and immunologically stable. No live vaccine was administered in the last 4 weeks.\nCheck for contraindications.\n@guidance = Should vaccinate client with first BCG dose as no BCG dose was administered, client's TB test result is negative and no live vaccine was administered in the past 4 weeks.\nCheck for contraindications.\n@guidance = Should vaccinate client with first BCG dose as no BCG dose was administered, client is receiving ART, clinically well and immunologically stable. No live vaccine was administered in the past 4 weeks.\nCheck for contraindications\n*/\ndefine \"Client is due for BCG vaccination Guidance\":\n  case\n    when \"Client is due for BCG vaccination Case 1\" then 'Should vaccinate client with first BCG dose as no BCG dose was administered, client is within age range, HIV status is not positive and no live vaccine was administered.\nCheck for contraindications.'\n    when \"Client is due for BCG vaccination Case 2\" then 'Should vaccinate client with first BCG dose as no BCG dose was administered, client is immunologically stable and no live vaccine was administered.\nCheck for contraindications.'\n    when \"Client is due for BCG vaccination Case 3\" then 'Should vaccinate client with first BCG dose as no BCG dose was administered, client\\'s TB test result is negative and no live vaccine was administered in the past 4 weeks.\nCheck for contraindications.'\n    when \"Client is due for BCG vaccination Case 4\" then 'Should vaccinate client with first BCG dose as no BCG dose was administered, client is receiving ART, clinically well and immunologically stable. No live vaccine was administered in the last 4 weeks.\nCheck for contraindications.'\n    when \"Client is due for BCG vaccination Case 5\" then 'Should vaccinate client with first BCG dose as no BCG dose was administered, client\\'s TB test result is negative and no live vaccine was administered in the past 4 weeks.\nCheck for contraindications.'\n    when \"Client is due for BCG vaccination Case 6\" then 'Should vaccinate client with first BCG dose as no BCG dose was administered, client is receiving ART, clinically well and immunologically stable. No live vaccine was administered in the past 4 weeks.\nCheck for contraindications'\n    else ''\n  end\n\n/*\n@output: Client is not due for BCG vaccination Case 1\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 1\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is less than or equal to 28 days\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"Live vaccine was administered in the last four weeks\"\n\n/*\n@output: Client is not due for BCG vaccination Case 2\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 2\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is less than or equal to 28 days\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is immunologically stable\"\n    and Encounter.\"Live vaccine was administered in the last four weeks\"\n\n/*\n@output: Client is not due for BCG vaccination Case 3\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 3\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is less than or equal to 28 days\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is not immunologically stable\"\n\n/*\n@output: Client is not due for BCG vaccination Case 4\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 4\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is less than or equal to 28 days\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently not receiving antiretroviral therapy\"\n\n/*\n@output: Client is not due for BCG vaccination Case 5\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 5\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is between 28 days and 5 years\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"Client's TB infection test result is negative\"\n    and Encounter.\"Live vaccine was administered in the last four weeks\"\n\n/*\n@output: Client is not due for BCG vaccination Case 6\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 6\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is between 28 days and 5 years\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"Client's TB infection test result is positive\"\n\n/*\n@output: Client is not due for BCG vaccination Case 7\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 7\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is between 28 days and 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is not immunologically stable\"\n\n/*\n@output: Client is not due for BCG vaccination Case 8\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 8\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is between 28 days and 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is not clinically well\"\n\n/*\n@output: Client is not due for BCG vaccination Case 9\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 9\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is between 28 days and 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is immunologically stable\"\n    and Encounter.\"Live vaccine was administered in the last four weeks\"\n    and Encounter.\"Client is clinically well\"\n\n/*\n@output: Client is not due for BCG vaccination Case 10\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 10\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is between 28 days and 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently not receiving antiretroviral therapy\"\n\n/*\n@output: Client is not due for BCG vaccination Case 11\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 11\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is more than 5 years\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"Client's TB infection test result is negative\"\n    and Encounter.\"Live vaccine was administered in the last four weeks\"\n\n/*\n@output: Client is not due for BCG vaccination Case 12\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 12\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is more than 5 years\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"Client's TB infection test result is positive\"\n\n/*\n@output: Client is not due for BCG vaccination Case 13\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 13\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is more than 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is not immunologically stable\"\n\n/*\n@output: Client is not due for BCG vaccination Case 14\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 14\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is more than 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is not clinically well\"\n\n/*\n@output: Client is not due for BCG vaccination Case 15\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 15\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is more than 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently receiving antiretroviral therapy\"\n    and Encounter.\"Client is immunologically stable\"\n    and Encounter.\"Live vaccine was administered in the last four weeks\"\n    and Encounter.\"Client is clinically well\"\n\n/*\n@output: Client is not due for BCG vaccination Case 16\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination Case 16\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is more than 5 years\"\n    and Encounter.\"Client's HIV status is positive\"\n    and Encounter.\"Client is currently not receiving antiretroviral therapy\"\n\n/*\n@output: Client is not due for BCG vaccination\n@pseudocode: \"Immunization recommendation status\" = \"Not due\"\n*/\ndefine \"Client is not due for BCG vaccination\":\n  \"Client is not due for BCG vaccination Case 1\"\n    or \"Client is not due for BCG vaccination Case 2\"\n    or \"Client is not due for BCG vaccination Case 3\"\n    or \"Client is not due for BCG vaccination Case 4\"\n    or \"Client is not due for BCG vaccination Case 5\"\n    or \"Client is not due for BCG vaccination Case 6\"\n    or \"Client is not due for BCG vaccination Case 7\"\n    or \"Client is not due for BCG vaccination Case 8\"\n    or \"Client is not due for BCG vaccination Case 9\"\n    or \"Client is not due for BCG vaccination Case 10\"\n    or \"Client is not due for BCG vaccination Case 11\"\n    or \"Client is not due for BCG vaccination Case 12\"\n    or \"Client is not due for BCG vaccination Case 13\"\n    or \"Client is not due for BCG vaccination Case 14\"\n    or \"Client is not due for BCG vaccination Case 15\"\n    or \"Client is not due for BCG vaccination Case 16\"\n\n/*\n@output: Client is not due for BCG vaccination Guidance\n@guidance = Should not vaccinate client with first BCG dose as live vaccine was administered in the last 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as live vaccine was administered in the last 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as client is not immunologically stable.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as ART has not been started.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as live vaccine was administered in the past 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first dose.\n@guidance = Should not vaccinate client with first BCG dose as client's TB infection test result is positive. Consider evaluating for TB disease or for TB preventive treatment (TPT) eligibility (once TB disease is ruled out).\n@guidance = Should not vaccinate client with first BCG dose as client is not immunologically stable.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as client is not clinically well.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as live vaccine was administered in the past 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as client is not currently receiving ART.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as live vaccine was administered in the last 4 weeks.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as client's TB infection test result is positive. Consider evaluating for TB disease or for TB preventive treatment (TPT) eligibility (once TB disease is ruled out).\n@guidance = Should not vaccinate client with first BCG dose as client is not immnologically stable.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as client is not clinically well.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as live vaccine was administered in the past 4 weeks.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.\n@guidance = Should not vaccinate client with first BCG dose as client is not currently receiving ART.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.\n*/\ndefine \"Client is not due for BCG vaccination Guidance\":\n  case\n    when \"Client is not due for BCG vaccination Case 1\" then 'Should not vaccinate client with first BCG dose as live vaccine was administered in the last 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 2\" then 'Should not vaccinate client with first BCG dose as live vaccine was administered in the last 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 3\" then 'Should not vaccinate client with first BCG dose as client is not immunologically stable.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 4\" then 'Should not vaccinate client with first BCG dose as ART has not been started.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 5\" then 'Should not vaccinate client with first BCG dose as live vaccine was administered in the past 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first dose.'\n    when \"Client is not due for BCG vaccination Case 6\" then 'Should not vaccinate client with first BCG dose as client\\'s TB infection test result is positive. Consider evaluating for TB disease or for TB preventive treatment (TPT) eligibility (once TB disease is ruled out).'\n    when \"Client is not due for BCG vaccination Case 7\" then 'Should not vaccinate client with first BCG dose as client is not immunologically stable.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 8\" then 'Should not vaccinate client with first BCG dose as client is not clinically well.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 9\" then 'Should not vaccinate client with first BCG dose as live vaccine was administered in the past 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 10\" then 'Should not vaccinate client with first BCG dose as client is not currently receiving ART.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 11\" then 'Should not vaccinate client with first BCG dose as live vaccine was administered in the last 4 weeks.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 12\" then 'Should not vaccinate client with first BCG dose as client\\'s TB infection test result is positive. Consider evaluating for TB disease or for TB preventive treatment (TPT) eligibility (once TB disease is ruled out).'\n    when \"Client is not due for BCG vaccination Case 13\" then 'Should not vaccinate client with first BCG dose as client is not immnologically stable.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 14\" then 'Should not vaccinate client with first BCG dose as client is not clinically well.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 15\" then 'Should not vaccinate client with first BCG dose as live vaccine was administered in the past 4 weeks.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when \"Client is not due for BCG vaccination Case 16\" then 'Should not vaccinate client with first BCG dose as client is not currently receiving ART.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    else ''\n  end\n\n/*\n@output: Clinical judgement is required. Create clinical note. Case 1\n@pseudocode: \"Immunization recommendation status\" = \"Further evaluation needed\"\n*/\ndefine \"Clinical judgement is required. Create clinical note. Case 1\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is between 28 days and 5 years\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"Client's TB infection test result is unknown (test not done or no result yet)\"\n\n/*\n@output: Clinical judgement is required. Create clinical note. Case 2\n@pseudocode: '\"Immunization recommendation status\" = \"Further evaluation needed\"\n*/\ndefine \"Clinical judgement is required. Create clinical note. Case 2\":\n  Encounter.\"No BCG primary series dose was administered\"\n    and Encounter.\"Client's age is more than 5 years\"\n    and Encounter.\"Client's HIV status is negative or unknown\"\n    and Encounter.\"Client's TB infection test result is unknown (test not done or no result yet)\"\n\n/*\n@output: Clinical judgement is required. Create clinical note.\n@pseudocode: \"Immunization recommendation status\" = \"Further evaluation needed\"\n*/\ndefine \"Clinical judgement is required. Create clinical note.\":\n  \"Clinical judgement is required. Create clinical note. Case 1\"\n    or \"Clinical judgement is required. Create clinical note. Case 2\"\n\n/*\n@output: Clinical judgement is required. Create clinical note. Guidance\n@guidance = Recommend the client to perform TB infection testing.\nRe-evaluate client once the test result is available.\n@guidance = Recommend the client to perform TB infection testing.\nRe-evaluate client once the test result is available.\n*/\ndefine \"Clinical judgement is required. Create clinical note. Guidance\":\n  case\n    when \"Clinical judgement is required. Create clinical note. Case 1\" then 'Recommend the client to perform TB infection testing.\nRe-evaluate client once the test result is available.'\n    when \"Clinical judgement is required. Create clinical note. Case 2\" then 'Recommend the client to perform TB infection testing.\nRe-evaluate client once the test result is available.'\n    else ''\n  end\n\n/*\n@output: BCG immunization schedule is complete\n@pseudocode: '\"Immunization recommendation status\" = \"Complete\"\n\"Completed the primary vaccination series\" = TRUE (where \"Vaccine type\" = \"BCG vaccines\")\n*/\ndefine \"BCG immunization schedule is complete\":\n  Encounter.\"One BCG primary series dose was administered\"\n\n/*\n@output: BCG immunization schedule is complete Guidance\n@guidance: BCG immunization schedule is complete. One BCG primary series dose was administered.\nCheck for any vaccines due.\n*/\ndefine \"BCG immunization schedule is complete Guidance\":\n  'BCG immunization schedule is complete. One BCG primary series dose was administered.\nCheck for any vaccines due.'\n\n\n/*\n@test: Test expected results based on example patients\n*/\ndefine \"Test Validation\":\n  case\n    when Patient.id = 'BCG07.4' then \"Client is due for BCG vaccination Case 1\" and \"Guidance\" = 'Should vaccinate client with first BCG dose as no BCG dose was administered, client is within age range, HIV status is not positive and no live vaccine was administered.\nCheck for contraindications.'\n    when Patient.id = 'BCG08.4' then \"Client is not due for BCG vaccination Case 1\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as live vaccine was administered in the last 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG09.6' then \"Client is due for BCG vaccination Case 2\" and \"Guidance\" = 'Should vaccinate client with first BCG dose as no BCG dose was administered, client is immunologically stable and no live vaccine was administered.\nCheck for contraindications.'\n    when Patient.id = 'BCG10.6' then \"Client is not due for BCG vaccination Case 2\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as live vaccine was administered in the last 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG11.5' then \"Client is not due for BCG vaccination Case 3\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as client is not immunologically stable.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG12.4' then \"Client is not due for BCG vaccination Case 4\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as ART has not been started.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG13.5' then \"Client is due for BCG vaccination Case 3\" and \"Guidance\" = 'Should vaccinate client with first BCG dose as no BCG dose was administered, client\\'s TB test result is negative and no live vaccine was administered in the past 4 weeks.\nCheck for contraindications.'\n    when Patient.id = 'BCG14.5' then \"Client is not due for BCG vaccination Case 5\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as live vaccine was administered in the past 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first dose.'\n    when Patient.id = 'BCG15.4' then \"Clinical judgement is required. Create clinical note. Case 1\" and \"Guidance\" = 'Recommend the client to perform TB infection testing.\nRe-evaluate client once the test result is available.'\n    when Patient.id = 'BCG16.4' then \"Client is not due for BCG vaccination Case 6\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as client\\'s TB infection test result is positive. Consider evaluating for TB disease or for TB preventive treatment (TPT) eligibility (once TB disease is ruled out).'\n    when Patient.id = 'BCG17.5' then \"Client is not due for BCG vaccination Case 7\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as client is not immunologically stable.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG18.5' then \"Client is not due for BCG vaccination Case 8\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as client is not clinically well.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG19.7' then \"Client is due for BCG vaccination Case 4\" and \"Guidance\" = 'Should vaccinate client with first BCG dose as no BCG dose was administered, client is receiving ART, clinically well and immunologically stable. No live vaccine was administered in the last 4 weeks.\nCheck for contraindications.'\n    when Patient.id = 'BCG20.7' then \"Client is not due for BCG vaccination Case 9\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as live vaccine was administered in the past 4 weeks.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG21.4' then \"Client is not due for BCG vaccination Case 10\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as client is not currently receiving ART.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG22.5' then \"Client is due for BCG vaccination Case 5\" and \"Guidance\" = 'Should vaccinate client with first BCG dose as no BCG dose was administered, client\\'s TB test result is negative and no live vaccine was administered in the past 4 weeks.\nCheck for contraindications.'\n    when Patient.id = 'BCG23.5' then \"Client is not due for BCG vaccination Case 11\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as live vaccine was administered in the last 4 weeks.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG24.4' then \"Clinical judgement is required. Create clinical note. Case 2\" and \"Guidance\" = 'Recommend the client to perform TB infection testing.\nRe-evaluate client once the test result is available.'\n    when Patient.id = 'BCG25.4' then \"Client is not due for BCG vaccination Case 12\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as client\\'s TB infection test result is positive. Consider evaluating for TB disease or for TB preventive treatment (TPT) eligibility (once TB disease is ruled out).'\n    when Patient.id = 'BCG26.5' then \"Client is not due for BCG vaccination Case 13\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as client is not immnologically stable.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG27.5' then \"Client is not due for BCG vaccination Case 14\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as client is not clinically well.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG28.7' then \"Client is due for BCG vaccination Case 6\" and \"Guidance\" = 'Should vaccinate client with first BCG dose as no BCG dose was administered, client is receiving ART, clinically well and immunologically stable. No live vaccine was administered in the past 4 weeks.\nCheck for contraindications'\n    when Patient.id = 'BCG29.7' then \"Client is not due for BCG vaccination Case 15\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as live vaccine was administered in the past 4 weeks.\nCheck for any vaccines due, and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG30.4' then \"Client is not due for BCG vaccination Case 16\" and \"Guidance\" = 'Should not vaccinate client with first BCG dose as client is not currently receiving ART.\nCheck for any vaccines due and inform the caregiver of when to come back for the first BCG dose.'\n    when Patient.id = 'BCG31.1' then \"BCG immunization schedule is complete\" and \"Guidance\" = 'BCG immunization schedule is complete. One BCG primary series dose was administered.\nCheck for any vaccines due.'\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>"^^rdf:XMLLiteral ]
  ] ; # 
  fhir:extension ( [
     fhir:url [
       fhir:v "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability"^^xsd:anyURI ;
       fhir:l <http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability>
     ] ;
     fhir:value [
       a fhir:Code ;
       fhir:v "computable"
     ]
  ] ) ; # 
  fhir:url [
     fhir:v "http://smart.who.int/immunizations/Library/IMMZD2DTBCGLogic"^^xsd:anyURI ;
     fhir:l <http://smart.who.int/immunizations/Library/IMMZD2DTBCGLogic>
  ] ; # 
  fhir:version [ fhir:v "1.0.0"] ; # 
  fhir:name [ fhir:v "IMMZD2DTBCGLogic"] ; # 
  fhir:title [ fhir:v "IMMZD2DTBCGLogic"] ; # 
  fhir:status [ fhir:v "draft"] ; # 
  fhir:experimental [ fhir:v false] ; # 
  fhir:type [
     fhir:coding ( [
       fhir:system [
         fhir:v "http://terminology.hl7.org/CodeSystem/library-type"^^xsd:anyURI ;
         fhir:l <http://terminology.hl7.org/CodeSystem/library-type>
       ] ;
       fhir:code [ fhir:v "logic-library" ]
     ] )
  ] ; # 
  fhir:date [ fhir:v "2026-03-31T13:54:17+00:00"^^xsd:dateTime] ; # 
  fhir:publisher [ fhir:v "WHO"] ; # 
  fhir:contact ( [
     fhir:name [ fhir:v "WHO" ] ;
     fhir:telecom ( [
       fhir:system [ fhir:v "url" ] ;
       fhir:value [ fhir:v "http://who.int" ]
     ] )
  ] ) ; # 
  fhir:description [ fhir:v "This library defines decision support logic for the IMMZ.D2.DT.BCG decision table in the Immunization CPG"] ; # 
  fhir:relatedArtifact ( [
     fhir:type [ fhir:v "depends-on" ] ;
     fhir:display [ fhir:v "Library Encounter" ] ;
     fhir:resource [
       fhir:v "http://smart.who.int/immunizations/Library/IMMZD2DTBCGEncounterElements"^^xsd:anyURI ;
       fhir:l <http://smart.who.int/immunizations/Library/IMMZD2DTBCGEncounterElements>
     ]
  ] ) ; # 
  fhir:parameter ( [
     fhir:name [ fhir:v "Today" ] ;
     fhir:use [ fhir:v "in" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "date" ]
  ] [
     fhir:name [ fhir:v "Patient" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "Patient" ]
  ] [
     fhir:name [ fhir:v "Client is due for BCG vaccination Case 1" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is due for BCG vaccination Case 2" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is due for BCG vaccination Case 3" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is due for BCG vaccination Case 4" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is due for BCG vaccination Case 5" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is due for BCG vaccination Case 6" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is due for BCG vaccination" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is due for BCG vaccination Guidance" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "string" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 1" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 2" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 3" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 4" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 5" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 6" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 7" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 8" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 9" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 10" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 11" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 12" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 13" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 14" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 15" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Case 16" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Client is not due for BCG vaccination Guidance" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "string" ]
  ] [
     fhir:name [ fhir:v "Clinical judgement is required. Create clinical note. Case 1" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Clinical judgement is required. Create clinical note. Case 2" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Clinical judgement is required. Create clinical note." ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Clinical judgement is required. Create clinical note. Guidance" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "string" ]
  ] [
     fhir:name [ fhir:v "BCG immunization schedule is complete" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "BCG immunization schedule is complete Guidance" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "string" ]
  ] [
     fhir:name [ fhir:v "Guidance" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "string" ]
  ] [
     fhir:name [ fhir:v "Has Guidance" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "boolean" ]
  ] [
     fhir:name [ fhir:v "Test Validation" ] ;
     fhir:use [ fhir:v "out" ] ;
     fhir:min [ fhir:v 0 ] ;
     fhir:max [ fhir:v "1" ] ;
     fhir:type [ fhir:v "Resource" ]
  ] ) ; # 
  fhir:content ( [
     fhir:contentType [ fhir:v "text/cql" ] ;
     fhir:data [ fhir:v "LyoKICogTGlicmFyeTogSU1NWkQyRFRCQ0dMb2dpYyAoSU1NWi5EMi5EVC5CQ0cpCiAqIFJ1bGU6IERldGVybWluZSBpZiB0aGUgY2xpZW50IGlzIGR1ZSBmb3IgYSBiYWNpbGxlIENhbG1ldHRl4oCTR3XDqXJpbiAoQkNHKSB2YWNjaW5hdGlvbiBhY2NvcmRpbmcgdG8gdGhlIG5hdGlvbmFsIGltbXVuaXphdGlvbiBzY2hlZHVsZQogKiBEZWNpc2lvbiBUYWJsZTogSU1NWi5EMi5EVC5CQ0cKICogVHJpZ2dlcjogSU1NWi5EMiBEZXRlcm1pbmUgcmVxdWlyZWQgdmFjY2luYXRpb24ocykgaWYgYW55CiAqLwpsaWJyYXJ5IElNTVpEMkRUQkNHTG9naWMKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIElNTVpEMkRUQkNHRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIEVuY291bnRlcgoKcGFyYW1ldGVyIFRvZGF5IERhdGUgZGVmYXVsdCBUb2RheSgpCgpjb250ZXh0IFBhdGllbnQKCgovKgpAZHluYW1pY1ZhbHVlOiBHdWlkYW5jZQoqLwpkZWZpbmUgIkd1aWRhbmNlIjoKICBjYXNlIAogICAgd2hlbiAiQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIiB0aGVuICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gR3VpZGFuY2UiCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIiB0aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIEd1aWRhbmNlIgogICAgd2hlbiAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgY2xpbmljYWwgbm90ZS4iIHRoZW4gIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGNsaW5pY2FsIG5vdGUuIEd1aWRhbmNlIgogICAgd2hlbiAiQkNHIGltbXVuaXphdGlvbiBzY2hlZHVsZSBpcyBjb21wbGV0ZSIgdGhlbiAiQkNHIGltbXVuaXphdGlvbiBzY2hlZHVsZSBpcyBjb21wbGV0ZSBHdWlkYW5jZSIgCiAgICBlbHNlICcnCiAgZW5kCiAgCmRlZmluZSAiSGFzIEd1aWRhbmNlIjoKICAiR3VpZGFuY2UiIGlzIG5vdCBudWxsIGFuZCAiR3VpZGFuY2UiICE9ICcnCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiRHVlIgoqLwpkZWZpbmUgIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEiOgogIEVuY291bnRlci4iTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjggZGF5cyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgbmVnYXRpdmUgb3IgdW5rbm93biIKICAgIGFuZCBFbmNvdW50ZXIuIk5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIgoKLyoKQG91dHB1dDogQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMgpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAyIjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDI4IGRheXMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGN1cnJlbnRseSByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBpbW11bm9sb2dpY2FsbHkgc3RhYmxlIgogICAgYW5kIEVuY291bnRlci4iTm8gbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQiCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAzCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiRHVlIgoqLwpkZWZpbmUgIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDMiOgogIEVuY291bnRlci4iTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBiZXR3ZWVuIDI4IGRheXMgYW5kIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIG5lZ2F0aXZlIG9yIHVua25vd24iCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgbmVnYXRpdmUiCiAgICBhbmQgRW5jb3VudGVyLiJObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzIgoKLyoKQG91dHB1dDogQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNApAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA0IjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgYmV0d2VlbiAyOCBkYXlzIGFuZCA1IHllYXJzIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50J3MgSElWIHN0YXR1cyBpcyBwb3NpdGl2ZSIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBjdXJyZW50bHkgcmVjZWl2aW5nIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQgaXMgaW1tdW5vbG9naWNhbGx5IHN0YWJsZSIKICAgIGFuZCBFbmNvdW50ZXIuIk5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBsYXN0IGZvdXIgd2Vla3MiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQgaXMgY2xpbmljYWxseSB3ZWxsIgoKLyoKQG91dHB1dDogQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNQpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA1IjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIG5lZ2F0aXZlIG9yIHVua25vd24iCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgbmVnYXRpdmUiCiAgICBhbmQgRW5jb3VudGVyLiJObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzIgoKLyoKQG91dHB1dDogQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNgpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA2IjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGN1cnJlbnRseSByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBpbW11bm9sb2dpY2FsbHkgc3RhYmxlIgogICAgYW5kIEVuY291bnRlci4iTm8gbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgZm91ciB3ZWVrcyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBjbGluaWNhbGx5IHdlbGwiCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24KQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJEdWUiCiovCmRlZmluZSAiQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIjoKICAiQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMSIKICAgIG9yICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAyIgogICAgb3IgIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDMiCiAgICBvciAiQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNCIKICAgIG9yICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA1IgogICAgb3IgIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDYiCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gR3VpZGFuY2UKQGd1aWRhbmNlID0gU2hvdWxkIHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBubyBCQ0cgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLCBjbGllbnQgaXMgd2l0aGluIGFnZSByYW5nZSwgSElWIHN0YXR1cyBpcyBub3QgcG9zaXRpdmUgYW5kIG5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkLgpDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMuCkBndWlkYW5jZSA9IFNob3VsZCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbm8gQkNHIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCwgY2xpZW50IGlzIGltbXVub2xvZ2ljYWxseSBzdGFibGUgYW5kIG5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkLgpDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMuCkBndWlkYW5jZSA9IFNob3VsZCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbm8gQkNHIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCwgY2xpZW50J3MgVEIgdGVzdCByZXN1bHQgaXMgbmVnYXRpdmUgYW5kIG5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBwYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBjb250cmFpbmRpY2F0aW9ucy4KQGd1aWRhbmNlID0gU2hvdWxkIHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBubyBCQ0cgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLCBjbGllbnQgaXMgcmVjZWl2aW5nIEFSVCwgY2xpbmljYWxseSB3ZWxsIGFuZCBpbW11bm9sb2dpY2FsbHkgc3RhYmxlLiBObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMuCkBndWlkYW5jZSA9IFNob3VsZCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbm8gQkNHIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCwgY2xpZW50J3MgVEIgdGVzdCByZXN1bHQgaXMgbmVnYXRpdmUgYW5kIG5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBwYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBjb250cmFpbmRpY2F0aW9ucy4KQGd1aWRhbmNlID0gU2hvdWxkIHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBubyBCQ0cgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLCBjbGllbnQgaXMgcmVjZWl2aW5nIEFSVCwgY2xpbmljYWxseSB3ZWxsIGFuZCBpbW11bm9sb2dpY2FsbHkgc3RhYmxlLiBObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgcGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMKKi8KZGVmaW5lICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gR3VpZGFuY2UiOgogIGNhc2UKICAgIHdoZW4gIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEiIHRoZW4gJ1Nob3VsZCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbm8gQkNHIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCwgY2xpZW50IGlzIHdpdGhpbiBhZ2UgcmFuZ2UsIEhJViBzdGF0dXMgaXMgbm90IHBvc2l0aXZlIGFuZCBubyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZC4KQ2hlY2sgZm9yIGNvbnRyYWluZGljYXRpb25zLicKICAgIHdoZW4gIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDIiIHRoZW4gJ1Nob3VsZCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbm8gQkNHIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCwgY2xpZW50IGlzIGltbXVub2xvZ2ljYWxseSBzdGFibGUgYW5kIG5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkLgpDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMuJwogICAgd2hlbiAiQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMyIgdGhlbiAnU2hvdWxkIHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBubyBCQ0cgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLCBjbGllbnRcJ3MgVEIgdGVzdCByZXN1bHQgaXMgbmVnYXRpdmUgYW5kIG5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBwYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBjb250cmFpbmRpY2F0aW9ucy4nCiAgICB3aGVuICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA0IiB0aGVuICdTaG91bGQgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIG5vIEJDRyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQsIGNsaWVudCBpcyByZWNlaXZpbmcgQVJULCBjbGluaWNhbGx5IHdlbGwgYW5kIGltbXVub2xvZ2ljYWxseSBzdGFibGUuIE5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBsYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBjb250cmFpbmRpY2F0aW9ucy4nCiAgICB3aGVuICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA1IiB0aGVuICdTaG91bGQgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIG5vIEJDRyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQsIGNsaWVudFwncyBUQiB0ZXN0IHJlc3VsdCBpcyBuZWdhdGl2ZSBhbmQgbm8gbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIHBhc3QgNCB3ZWVrcy4KQ2hlY2sgZm9yIGNvbnRyYWluZGljYXRpb25zLicKICAgIHdoZW4gIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDYiIHRoZW4gJ1Nob3VsZCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbm8gQkNHIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCwgY2xpZW50IGlzIHJlY2VpdmluZyBBUlQsIGNsaW5pY2FsbHkgd2VsbCBhbmQgaW1tdW5vbG9naWNhbGx5IHN0YWJsZS4gTm8gbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIHBhc3QgNCB3ZWVrcy4KQ2hlY2sgZm9yIGNvbnRyYWluZGljYXRpb25zJwogICAgZWxzZSAnJwogIGVuZAoKLyoKQG91dHB1dDogQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJOb3QgZHVlIgoqLwpkZWZpbmUgIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxIjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDI4IGRheXMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIG5lZ2F0aXZlIG9yIHVua25vd24iCiAgICBhbmQgRW5jb3VudGVyLiJMaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzIgoKLyoKQG91dHB1dDogQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDIKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJOb3QgZHVlIgoqLwpkZWZpbmUgIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAyIjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDI4IGRheXMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGN1cnJlbnRseSByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBpbW11bm9sb2dpY2FsbHkgc3RhYmxlIgogICAgYW5kIEVuY291bnRlci4iTGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgZm91ciB3ZWVrcyIKCi8qCkBvdXRwdXQ6IENsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAzCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiTm90IGR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMyI6CiAgRW5jb3VudGVyLiJObyBCQ0cgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50J3MgYWdlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyOCBkYXlzIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50J3MgSElWIHN0YXR1cyBpcyBwb3NpdGl2ZSIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBjdXJyZW50bHkgcmVjZWl2aW5nIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQgaXMgbm90IGltbXVub2xvZ2ljYWxseSBzdGFibGUiCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNApAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIk5vdCBkdWUiCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDQiOgogIEVuY291bnRlci4iTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjggZGF5cyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgcG9zaXRpdmUiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQgaXMgY3VycmVudGx5IG5vdCByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKCi8qCkBvdXRwdXQ6IENsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA1CkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiTm90IGR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNSI6CiAgRW5jb3VudGVyLiJObyBCQ0cgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50J3MgYWdlIGlzIGJldHdlZW4gMjggZGF5cyBhbmQgNSB5ZWFycyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgbmVnYXRpdmUgb3IgdW5rbm93biIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyBuZWdhdGl2ZSIKICAgIGFuZCBFbmNvdW50ZXIuIkxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBsYXN0IGZvdXIgd2Vla3MiCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNgpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIk5vdCBkdWUiCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDYiOgogIEVuY291bnRlci4iTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBiZXR3ZWVuIDI4IGRheXMgYW5kIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIG5lZ2F0aXZlIG9yIHVua25vd24iCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgcG9zaXRpdmUiCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNwpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIk5vdCBkdWUiCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDciOgogIEVuY291bnRlci4iTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBiZXR3ZWVuIDI4IGRheXMgYW5kIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGN1cnJlbnRseSByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBub3QgaW1tdW5vbG9naWNhbGx5IHN0YWJsZSIKCi8qCkBvdXRwdXQ6IENsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA4CkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiTm90IGR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgOCI6CiAgRW5jb3VudGVyLiJObyBCQ0cgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50J3MgYWdlIGlzIGJldHdlZW4gMjggZGF5cyBhbmQgNSB5ZWFycyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgcG9zaXRpdmUiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQgaXMgY3VycmVudGx5IHJlY2VpdmluZyBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIG5vdCBjbGluaWNhbGx5IHdlbGwiCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgOQpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIk5vdCBkdWUiCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDkiOgogIEVuY291bnRlci4iTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBiZXR3ZWVuIDI4IGRheXMgYW5kIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGN1cnJlbnRseSByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBpbW11bm9sb2dpY2FsbHkgc3RhYmxlIgogICAgYW5kIEVuY291bnRlci4iTGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgZm91ciB3ZWVrcyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBjbGluaWNhbGx5IHdlbGwiCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTAKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJOb3QgZHVlIgoqLwpkZWZpbmUgIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxMCI6CiAgRW5jb3VudGVyLiJObyBCQ0cgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50J3MgYWdlIGlzIGJldHdlZW4gMjggZGF5cyBhbmQgNSB5ZWFycyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgcG9zaXRpdmUiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQgaXMgY3VycmVudGx5IG5vdCByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKCi8qCkBvdXRwdXQ6IENsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxMQpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIk5vdCBkdWUiCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDExIjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIG5lZ2F0aXZlIG9yIHVua25vd24iCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgbmVnYXRpdmUiCiAgICBhbmQgRW5jb3VudGVyLiJMaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzIgoKLyoKQG91dHB1dDogQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEyCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiTm90IGR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTIiOgogIEVuY291bnRlci4iTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBtb3JlIHRoYW4gNSB5ZWFycyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgbmVnYXRpdmUgb3IgdW5rbm93biIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyBwb3NpdGl2ZSIKCi8qCkBvdXRwdXQ6IENsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxMwpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIk5vdCBkdWUiCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEzIjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGN1cnJlbnRseSByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBub3QgaW1tdW5vbG9naWNhbGx5IHN0YWJsZSIKCi8qCkBvdXRwdXQ6IENsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxNApAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIk5vdCBkdWUiCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDE0IjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGN1cnJlbnRseSByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCBpcyBub3QgY2xpbmljYWxseSB3ZWxsIgoKLyoKQG91dHB1dDogQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDE1CkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiTm90IGR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTUiOgogIEVuY291bnRlci4iTm8gQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBtb3JlIHRoYW4gNSB5ZWFycyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgcG9zaXRpdmUiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQgaXMgY3VycmVudGx5IHJlY2VpdmluZyBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGltbXVub2xvZ2ljYWxseSBzdGFibGUiCiAgICBhbmQgRW5jb3VudGVyLiJMaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCBmb3VyIHdlZWtzIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGNsaW5pY2FsbHkgd2VsbCIKCi8qCkBvdXRwdXQ6IENsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxNgpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIk5vdCBkdWUiCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDE2IjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50IGlzIGN1cnJlbnRseSBub3QgcmVjZWl2aW5nIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkiCgovKgpAb3V0cHV0OiBDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiTm90IGR1ZSIKKi8KZGVmaW5lICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIjoKICAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDIiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDMiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDQiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDUiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDYiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDciCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDgiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDkiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEwIgogICAgb3IgIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxMSIKICAgIG9yICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTIiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEzIgogICAgb3IgIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxNCIKICAgIG9yICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTUiCiAgICBvciAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDE2IgoKLyoKQG91dHB1dDogQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBHdWlkYW5jZQpAZ3VpZGFuY2UgPSBTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4KQGd1aWRhbmNlID0gU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgNCB3ZWVrcy4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuCkBndWlkYW5jZSA9IFNob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGNsaWVudCBpcyBub3QgaW1tdW5vbG9naWNhbGx5IHN0YWJsZS4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuCkBndWlkYW5jZSA9IFNob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIEFSVCBoYXMgbm90IGJlZW4gc3RhcnRlZC4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuCkBndWlkYW5jZSA9IFNob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBwYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlIGFuZCBpbmZvcm0gdGhlIGNhcmVnaXZlciBvZiB3aGVuIHRvIGNvbWUgYmFjayBmb3IgdGhlIGZpcnN0IGRvc2UuCkBndWlkYW5jZSA9IFNob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGNsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyBwb3NpdGl2ZS4gQ29uc2lkZXIgZXZhbHVhdGluZyBmb3IgVEIgZGlzZWFzZSBvciBmb3IgVEIgcHJldmVudGl2ZSB0cmVhdG1lbnQgKFRQVCkgZWxpZ2liaWxpdHkgKG9uY2UgVEIgZGlzZWFzZSBpcyBydWxlZCBvdXQpLgpAZ3VpZGFuY2UgPSBTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnQgaXMgbm90IGltbXVub2xvZ2ljYWxseSBzdGFibGUuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlLCBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4KQGd1aWRhbmNlID0gU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgY2xpZW50IGlzIG5vdCBjbGluaWNhbGx5IHdlbGwuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlLCBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4KQGd1aWRhbmNlID0gU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIHBhc3QgNCB3ZWVrcy4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuCkBndWlkYW5jZSA9IFNob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGNsaWVudCBpcyBub3QgY3VycmVudGx5IHJlY2VpdmluZyBBUlQuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlIGFuZCBpbmZvcm0gdGhlIGNhcmVnaXZlciBvZiB3aGVuIHRvIGNvbWUgYmFjayBmb3IgdGhlIGZpcnN0IEJDRyBkb3NlLgpAZ3VpZGFuY2UgPSBTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSwgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuCkBndWlkYW5jZSA9IFNob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGNsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyBwb3NpdGl2ZS4gQ29uc2lkZXIgZXZhbHVhdGluZyBmb3IgVEIgZGlzZWFzZSBvciBmb3IgVEIgcHJldmVudGl2ZSB0cmVhdG1lbnQgKFRQVCkgZWxpZ2liaWxpdHkgKG9uY2UgVEIgZGlzZWFzZSBpcyBydWxlZCBvdXQpLgpAZ3VpZGFuY2UgPSBTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnQgaXMgbm90IGltbW5vbG9naWNhbGx5IHN0YWJsZS4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUsIGFuZCBpbmZvcm0gdGhlIGNhcmVnaXZlciBvZiB3aGVuIHRvIGNvbWUgYmFjayBmb3IgdGhlIGZpcnN0IEJDRyBkb3NlLgpAZ3VpZGFuY2UgPSBTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnQgaXMgbm90IGNsaW5pY2FsbHkgd2VsbC4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuCkBndWlkYW5jZSA9IFNob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBwYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlLCBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4KQGd1aWRhbmNlID0gU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgY2xpZW50IGlzIG5vdCBjdXJyZW50bHkgcmVjZWl2aW5nIEFSVC4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBHdWlkYW5jZSI6CiAgY2FzZQogICAgd2hlbiAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEiIHRoZW4gJ1Nob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBsYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlIGFuZCBpbmZvcm0gdGhlIGNhcmVnaXZlciBvZiB3aGVuIHRvIGNvbWUgYmFjayBmb3IgdGhlIGZpcnN0IEJDRyBkb3NlLicKICAgIHdoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAyIiB0aGVuICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMyIgdGhlbiAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgY2xpZW50IGlzIG5vdCBpbW11bm9sb2dpY2FsbHkgc3RhYmxlLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNCIgdGhlbiAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgQVJUIGhhcyBub3QgYmVlbiBzdGFydGVkLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNSIgdGhlbiAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIHBhc3QgNCB3ZWVrcy4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgZG9zZS4nCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgNiIgdGhlbiAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgY2xpZW50XCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyBwb3NpdGl2ZS4gQ29uc2lkZXIgZXZhbHVhdGluZyBmb3IgVEIgZGlzZWFzZSBvciBmb3IgVEIgcHJldmVudGl2ZSB0cmVhdG1lbnQgKFRQVCkgZWxpZ2liaWxpdHkgKG9uY2UgVEIgZGlzZWFzZSBpcyBydWxlZCBvdXQpLicKICAgIHdoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA3IiB0aGVuICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnQgaXMgbm90IGltbXVub2xvZ2ljYWxseSBzdGFibGUuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlLCBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgOCIgdGhlbiAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgY2xpZW50IGlzIG5vdCBjbGluaWNhbGx5IHdlbGwuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlLCBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgOSIgdGhlbiAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIHBhc3QgNCB3ZWVrcy4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuJwogICAgd2hlbiAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDEwIiB0aGVuICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnQgaXMgbm90IGN1cnJlbnRseSByZWNlaXZpbmcgQVJULgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTEiIHRoZW4gJ1Nob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBsYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlLCBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTIiIHRoZW4gJ1Nob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGNsaWVudFwncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgcG9zaXRpdmUuIENvbnNpZGVyIGV2YWx1YXRpbmcgZm9yIFRCIGRpc2Vhc2Ugb3IgZm9yIFRCIHByZXZlbnRpdmUgdHJlYXRtZW50IChUUFQpIGVsaWdpYmlsaXR5IChvbmNlIFRCIGRpc2Vhc2UgaXMgcnVsZWQgb3V0KS4nCiAgICB3aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTMiIHRoZW4gJ1Nob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGNsaWVudCBpcyBub3QgaW1tbm9sb2dpY2FsbHkgc3RhYmxlLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSwgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuJwogICAgd2hlbiAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDE0IiB0aGVuICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnQgaXMgbm90IGNsaW5pY2FsbHkgd2VsbC4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuJwogICAgd2hlbiAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDE1IiB0aGVuICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgcGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSwgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuJwogICAgd2hlbiAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDE2IiB0aGVuICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnQgaXMgbm90IGN1cnJlbnRseSByZWNlaXZpbmcgQVJULgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICBlbHNlICcnCiAgZW5kCgovKgpAb3V0cHV0OiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBjbGluaWNhbCBub3RlLiBDYXNlIDEKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkIgoqLwpkZWZpbmUgIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGNsaW5pY2FsIG5vdGUuIENhc2UgMSI6CiAgRW5jb3VudGVyLiJObyBCQ0cgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIgogICAgYW5kIEVuY291bnRlci4iQ2xpZW50J3MgYWdlIGlzIGJldHdlZW4gMjggZGF5cyBhbmQgNSB5ZWFycyIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgbmVnYXRpdmUgb3IgdW5rbm93biIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyB1bmtub3duICh0ZXN0IG5vdCBkb25lIG9yIG5vIHJlc3VsdCB5ZXQpIgoKLyoKQG91dHB1dDogQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgY2xpbmljYWwgbm90ZS4gQ2FzZSAyCkBwc2V1ZG9jb2RlOiAnIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkZ1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQiCiovCmRlZmluZSAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgY2xpbmljYWwgbm90ZS4gQ2FzZSAyIjoKICBFbmNvdW50ZXIuIk5vIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIDUgeWVhcnMiCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIG5lZ2F0aXZlIG9yIHVua25vd24iCiAgICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgdW5rbm93biAodGVzdCBub3QgZG9uZSBvciBubyByZXN1bHQgeWV0KSIKCi8qCkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGNsaW5pY2FsIG5vdGUuCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiRnVydGhlciBldmFsdWF0aW9uIG5lZWRlZCIKKi8KZGVmaW5lICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBjbGluaWNhbCBub3RlLiI6CiAgIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGNsaW5pY2FsIG5vdGUuIENhc2UgMSIKICAgIG9yICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBjbGluaWNhbCBub3RlLiBDYXNlIDIiCgovKgpAb3V0cHV0OiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBjbGluaWNhbCBub3RlLiBHdWlkYW5jZQpAZ3VpZGFuY2UgPSBSZWNvbW1lbmQgdGhlIGNsaWVudCB0byBwZXJmb3JtIFRCIGluZmVjdGlvbiB0ZXN0aW5nLgpSZS1ldmFsdWF0ZSBjbGllbnQgb25jZSB0aGUgdGVzdCByZXN1bHQgaXMgYXZhaWxhYmxlLgpAZ3VpZGFuY2UgPSBSZWNvbW1lbmQgdGhlIGNsaWVudCB0byBwZXJmb3JtIFRCIGluZmVjdGlvbiB0ZXN0aW5nLgpSZS1ldmFsdWF0ZSBjbGllbnQgb25jZSB0aGUgdGVzdCByZXN1bHQgaXMgYXZhaWxhYmxlLgoqLwpkZWZpbmUgIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGNsaW5pY2FsIG5vdGUuIEd1aWRhbmNlIjoKICBjYXNlCiAgICB3aGVuICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBjbGluaWNhbCBub3RlLiBDYXNlIDEiIHRoZW4gJ1JlY29tbWVuZCB0aGUgY2xpZW50IHRvIHBlcmZvcm0gVEIgaW5mZWN0aW9uIHRlc3RpbmcuClJlLWV2YWx1YXRlIGNsaWVudCBvbmNlIHRoZSB0ZXN0IHJlc3VsdCBpcyBhdmFpbGFibGUuJwogICAgd2hlbiAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgY2xpbmljYWwgbm90ZS4gQ2FzZSAyIiB0aGVuICdSZWNvbW1lbmQgdGhlIGNsaWVudCB0byBwZXJmb3JtIFRCIGluZmVjdGlvbiB0ZXN0aW5nLgpSZS1ldmFsdWF0ZSBjbGllbnQgb25jZSB0aGUgdGVzdCByZXN1bHQgaXMgYXZhaWxhYmxlLicKICAgIGVsc2UgJycKICBlbmQKCi8qCkBvdXRwdXQ6IEJDRyBpbW11bml6YXRpb24gc2NoZWR1bGUgaXMgY29tcGxldGUKQHBzZXVkb2NvZGU6ICciSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiQ29tcGxldGUiCiJDb21wbGV0ZWQgdGhlIHByaW1hcnkgdmFjY2luYXRpb24gc2VyaWVzIiA9IFRSVUUgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkJDRyB2YWNjaW5lcyIpCiovCmRlZmluZSAiQkNHIGltbXVuaXphdGlvbiBzY2hlZHVsZSBpcyBjb21wbGV0ZSI6CiAgRW5jb3VudGVyLiJPbmUgQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKCi8qCkBvdXRwdXQ6IEJDRyBpbW11bml6YXRpb24gc2NoZWR1bGUgaXMgY29tcGxldGUgR3VpZGFuY2UKQGd1aWRhbmNlOiBCQ0cgaW1tdW5pemF0aW9uIHNjaGVkdWxlIGlzIGNvbXBsZXRlLiBPbmUgQkNHIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZC4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUuCiovCmRlZmluZSAiQkNHIGltbXVuaXphdGlvbiBzY2hlZHVsZSBpcyBjb21wbGV0ZSBHdWlkYW5jZSI6CiAgJ0JDRyBpbW11bml6YXRpb24gc2NoZWR1bGUgaXMgY29tcGxldGUuIE9uZSBCQ0cgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZS4nCgoKLyoKQHRlc3Q6IFRlc3QgZXhwZWN0ZWQgcmVzdWx0cyBiYXNlZCBvbiBleGFtcGxlIHBhdGllbnRzCiovCmRlZmluZSAiVGVzdCBWYWxpZGF0aW9uIjoKICBjYXNlCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnQkNHMDcuNCcgdGhlbiAiQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMSIgYW5kICJHdWlkYW5jZSIgPSAnU2hvdWxkIHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBubyBCQ0cgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLCBjbGllbnQgaXMgd2l0aGluIGFnZSByYW5nZSwgSElWIHN0YXR1cyBpcyBub3QgcG9zaXRpdmUgYW5kIG5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkLgpDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzA4LjQnIHRoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxIiBhbmQgIkd1aWRhbmNlIiA9ICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnQkNHMDkuNicgdGhlbiAiQ2xpZW50IGlzIGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMiIgYW5kICJHdWlkYW5jZSIgPSAnU2hvdWxkIHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBubyBCQ0cgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLCBjbGllbnQgaXMgaW1tdW5vbG9naWNhbGx5IHN0YWJsZSBhbmQgbm8gbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQuCkNoZWNrIGZvciBjb250cmFpbmRpY2F0aW9ucy4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnQkNHMTAuNicgdGhlbiAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDIiIGFuZCAiR3VpZGFuY2UiID0gJ1Nob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBsYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlIGFuZCBpbmZvcm0gdGhlIGNhcmVnaXZlciBvZiB3aGVuIHRvIGNvbWUgYmFjayBmb3IgdGhlIGZpcnN0IEJDRyBkb3NlLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdCQ0cxMS41JyB0aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMyIgYW5kICJHdWlkYW5jZSIgPSAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgY2xpZW50IGlzIG5vdCBpbW11bm9sb2dpY2FsbHkgc3RhYmxlLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnQkNHMTIuNCcgdGhlbiAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDQiIGFuZCAiR3VpZGFuY2UiID0gJ1Nob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIEFSVCBoYXMgbm90IGJlZW4gc3RhcnRlZC4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzEzLjUnIHRoZW4gIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDMiIGFuZCAiR3VpZGFuY2UiID0gJ1Nob3VsZCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbm8gQkNHIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCwgY2xpZW50XCdzIFRCIHRlc3QgcmVzdWx0IGlzIG5lZ2F0aXZlIGFuZCBubyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgcGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzE0LjUnIHRoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA1IiBhbmQgIkd1aWRhbmNlIiA9ICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgcGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBkb3NlLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdCQ0cxNS40JyB0aGVuICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBjbGluaWNhbCBub3RlLiBDYXNlIDEiIGFuZCAiR3VpZGFuY2UiID0gJ1JlY29tbWVuZCB0aGUgY2xpZW50IHRvIHBlcmZvcm0gVEIgaW5mZWN0aW9uIHRlc3RpbmcuClJlLWV2YWx1YXRlIGNsaWVudCBvbmNlIHRoZSB0ZXN0IHJlc3VsdCBpcyBhdmFpbGFibGUuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzE2LjQnIHRoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA2IiBhbmQgIkd1aWRhbmNlIiA9ICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnRcJ3MgVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IGlzIHBvc2l0aXZlLiBDb25zaWRlciBldmFsdWF0aW5nIGZvciBUQiBkaXNlYXNlIG9yIGZvciBUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCAoVFBUKSBlbGlnaWJpbGl0eSAob25jZSBUQiBkaXNlYXNlIGlzIHJ1bGVkIG91dCkuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzE3LjUnIHRoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA3IiBhbmQgIkd1aWRhbmNlIiA9ICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnQgaXMgbm90IGltbXVub2xvZ2ljYWxseSBzdGFibGUuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlLCBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnQkNHMTguNScgdGhlbiAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDgiIGFuZCAiR3VpZGFuY2UiID0gJ1Nob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGNsaWVudCBpcyBub3QgY2xpbmljYWxseSB3ZWxsLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSwgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzE5LjcnIHRoZW4gIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDQiIGFuZCAiR3VpZGFuY2UiID0gJ1Nob3VsZCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbm8gQkNHIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCwgY2xpZW50IGlzIHJlY2VpdmluZyBBUlQsIGNsaW5pY2FsbHkgd2VsbCBhbmQgaW1tdW5vbG9naWNhbGx5IHN0YWJsZS4gTm8gbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgNCB3ZWVrcy4KQ2hlY2sgZm9yIGNvbnRyYWluZGljYXRpb25zLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdCQ0cyMC43JyB0aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgOSIgYW5kICJHdWlkYW5jZSIgPSAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIHBhc3QgNCB3ZWVrcy4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzIxLjQnIHRoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxMCIgYW5kICJHdWlkYW5jZSIgPSAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgY2xpZW50IGlzIG5vdCBjdXJyZW50bHkgcmVjZWl2aW5nIEFSVC4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzIyLjUnIHRoZW4gIkNsaWVudCBpcyBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDUiIGFuZCAiR3VpZGFuY2UiID0gJ1Nob3VsZCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbm8gQkNHIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCwgY2xpZW50XCdzIFRCIHRlc3QgcmVzdWx0IGlzIG5lZ2F0aXZlIGFuZCBubyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgcGFzdCA0IHdlZWtzLgpDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzIzLjUnIHRoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxMSIgYW5kICJHdWlkYW5jZSIgPSAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgbGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgNCB3ZWVrcy4KQ2hlY2sgZm9yIGFueSB2YWNjaW5lcyBkdWUsIGFuZCBpbmZvcm0gdGhlIGNhcmVnaXZlciBvZiB3aGVuIHRvIGNvbWUgYmFjayBmb3IgdGhlIGZpcnN0IEJDRyBkb3NlLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdCQ0cyNC40JyB0aGVuICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBjbGluaWNhbCBub3RlLiBDYXNlIDIiIGFuZCAiR3VpZGFuY2UiID0gJ1JlY29tbWVuZCB0aGUgY2xpZW50IHRvIHBlcmZvcm0gVEIgaW5mZWN0aW9uIHRlc3RpbmcuClJlLWV2YWx1YXRlIGNsaWVudCBvbmNlIHRoZSB0ZXN0IHJlc3VsdCBpcyBhdmFpbGFibGUuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzI1LjQnIHRoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxMiIgYW5kICJHdWlkYW5jZSIgPSAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgY2xpZW50XCdzIFRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBpcyBwb3NpdGl2ZS4gQ29uc2lkZXIgZXZhbHVhdGluZyBmb3IgVEIgZGlzZWFzZSBvciBmb3IgVEIgcHJldmVudGl2ZSB0cmVhdG1lbnQgKFRQVCkgZWxpZ2liaWxpdHkgKG9uY2UgVEIgZGlzZWFzZSBpcyBydWxlZCBvdXQpLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdCQ0cyNi41JyB0aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTMiIGFuZCAiR3VpZGFuY2UiID0gJ1Nob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGNsaWVudCBpcyBub3QgaW1tbm9sb2dpY2FsbHkgc3RhYmxlLgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSwgYW5kIGluZm9ybSB0aGUgY2FyZWdpdmVyIG9mIHdoZW4gdG8gY29tZSBiYWNrIGZvciB0aGUgZmlyc3QgQkNHIGRvc2UuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ0JDRzI3LjUnIHRoZW4gIkNsaWVudCBpcyBub3QgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSAxNCIgYW5kICJHdWlkYW5jZSIgPSAnU2hvdWxkIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggZmlyc3QgQkNHIGRvc2UgYXMgY2xpZW50IGlzIG5vdCBjbGluaWNhbGx5IHdlbGwuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlIGFuZCBpbmZvcm0gdGhlIGNhcmVnaXZlciBvZiB3aGVuIHRvIGNvbWUgYmFjayBmb3IgdGhlIGZpcnN0IEJDRyBkb3NlLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdCQ0cyOC43JyB0aGVuICJDbGllbnQgaXMgZHVlIGZvciBCQ0cgdmFjY2luYXRpb24gQ2FzZSA2IiBhbmQgIkd1aWRhbmNlIiA9ICdTaG91bGQgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIG5vIEJDRyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQsIGNsaWVudCBpcyByZWNlaXZpbmcgQVJULCBjbGluaWNhbGx5IHdlbGwgYW5kIGltbXVub2xvZ2ljYWxseSBzdGFibGUuIE5vIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBwYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBjb250cmFpbmRpY2F0aW9ucycKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdCQ0cyOS43JyB0aGVuICJDbGllbnQgaXMgbm90IGR1ZSBmb3IgQkNHIHZhY2NpbmF0aW9uIENhc2UgMTUiIGFuZCAiR3VpZGFuY2UiID0gJ1Nob3VsZCBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIGZpcnN0IEJDRyBkb3NlIGFzIGxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBwYXN0IDQgd2Vla3MuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlLCBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnQkNHMzAuNCcgdGhlbiAiQ2xpZW50IGlzIG5vdCBkdWUgZm9yIEJDRyB2YWNjaW5hdGlvbiBDYXNlIDE2IiBhbmQgIkd1aWRhbmNlIiA9ICdTaG91bGQgbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCBmaXJzdCBCQ0cgZG9zZSBhcyBjbGllbnQgaXMgbm90IGN1cnJlbnRseSByZWNlaXZpbmcgQVJULgpDaGVjayBmb3IgYW55IHZhY2NpbmVzIGR1ZSBhbmQgaW5mb3JtIHRoZSBjYXJlZ2l2ZXIgb2Ygd2hlbiB0byBjb21lIGJhY2sgZm9yIHRoZSBmaXJzdCBCQ0cgZG9zZS4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnQkNHMzEuMScgdGhlbiAiQkNHIGltbXVuaXphdGlvbiBzY2hlZHVsZSBpcyBjb21wbGV0ZSIgYW5kICJHdWlkYW5jZSIgPSAnQkNHIGltbXVuaXphdGlvbiBzY2hlZHVsZSBpcyBjb21wbGV0ZS4gT25lIEJDRyBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQuCkNoZWNrIGZvciBhbnkgdmFjY2luZXMgZHVlLicKICAgIGVsc2UgJ05vIHRlc3QgY2FzZSBzZXQnCiAgZW5kCg=="^^xsd:base64Binary ]
  ] ) . # 

# -------------------------------------------------------------------------------------

