WHO Immunization Implementation Guide
1.0.0 - release
WHO Immunization Implementation Guide, published by WHO. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-immunizations/tree/132/merge and changes regularly. See the Directory of published versions
| Draft as of 2026-03-31 |
<Library xmlns="http://hl7.org/fhir">
<id value="IMMZD2DTCholeraElements"/>
<meta>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"/>
</meta>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<div>
<table class="grid dict">
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">IMMZD2DTCholeraElements</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">IMMZD2DTCholeraElements</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">1.0.0</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-IMMZD2DTCholeraElements.html">IMMZD2DTCholeraElements</a></td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</td>
</tr>
<tr>
<th scope="row"><b>Type: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<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>
</p>
<p style="margin-bottom: 5px;">
<b>code: </b> <span>logic-library</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Date: </b></th>
<td style="padding-left: 4px;">2026-03-31 13:54:17+0000</td>
</tr>
<tr>
<th scope="row"><b>Publisher: </b></th>
<td style="padding-left: 4px;">WHO</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;"><div><p>This library defines context-independent elements for Cholera used throughout the Immunization CPG</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Related Artifacts: </b></th>
<td style="padding-left: 4px;">
<p><b>Dependencies</b></p>
<ul>
<li><a href="Library-WHOConcepts.html">WHOConcepts</a></li>
<li><a href="Library-WHOCommon.html">WHOCommon</a></li>
<li><a href="Library-WHOElements.html">WHOElements</a></li>
<li><a href="Library-IMMZCommon.html">IMMZCommon</a></li>
<li><a href="Library-IMMZConcepts.html">IMMZConcepts</a></li>
<li><a href="Library-IMMZElements.html">IMMZElements</a></li>
</ul>
</td>
</tr>
<tr>
<th scope="row"><b>Parameters: </b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<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>
<tr><th>CholeraLowerLimitDays</th><th>integer</th><th>0</th><th>1</th><th>In</th></tr>
<tr><th>CholeraExactIntervalDays</th><th>integer</th><th>0</th><th>1</th><th>In</th></tr>
<tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Cholera Doses Administered to Patient</th><th>Immunization</th><th>0</th><th>*</th><th>Out</th></tr>
<tr><th>Cholera Primary Series Doses Administered to Patient</th><th>Immunization</th><th>0</th><th>*</th><th>Out</th></tr>
<tr><th>Number of Cholera Primary Series Doses Administered</th><th>integer</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Client's age is less than 1 year</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Client's age is more than or equal to 1 year</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>No cholera primary series dose was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>One cholera primary series dose was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Date of Latest Cholera Dose</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered less than 14 days ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered more than 14 days ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Two cholera primary series doses were administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Cholera Booster Series Doses Administered to Patient</th><th>Immunization</th><th>0</th><th>*</th><th>Out</th></tr>
<tr><th>Number of Cholera Booster Series Doses Administered</th><th>integer</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>No cholera booster series dose was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered less than 3 years ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered more than 3 years ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>At least one booster series dose was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Dose number of the latest dose is one</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered more than 14 days ago and less than 3 years ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Dose number of the latest dose is two</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Client's age is less than 2 years</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Client's age is 2–5 years</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>At least one cholera primary series dose was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Dose number of the latest primary series dose is one</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered less than 1 week ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered more than 1 week and less than 6 weeks ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Dose number of the latest primary series dose is two</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Dose number of the latest primary series dose is less than three</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered more than 6 weeks ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Dose number of the latest primary series dose is three</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered less than {Member States defined lower limit} days ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered approximately less than 6 months ago {Member States defined exact interval}</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered approximately more than 6 months ago {Member States defined exact interval}</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Client's age is more than 5 years</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Dose number of the latest primary series dose is more than or equal to two</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered approximately less than 2 years ago {Member States defined interval}</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
<tr><td><pre><code class="language-cql">
/*
* Library: IMMZD2DTCholeraElements
*/
library IMMZD2DTCholeraElements
using FHIR version '4.0.1'
include FHIRHelpers version '4.0.1'
include WHOConcepts
include WHOCommon called WC
include WHOElements called WE
include IMMZCommon called Common
include IMMZConcepts called Concepts
include IMMZElements called Elements
parameter CholeraLowerLimitDays Integer default 150
parameter CholeraExactIntervalDays Integer default 0
context Patient
/*
@internal: Cholera containing Doses Administered to Patient
*/
define "Cholera Doses Administered to Patient":
Elements."Doses Administered to Patient" I
where
I.vaccineCode in Concepts."Cholera vaccines"
/*
@internal: Cholera containing Doses Administered to Patient that are in the Primary series
*/
define "Cholera Primary Series Doses Administered to Patient":
"Cholera Doses Administered to Patient".seriesPrimary()
/*
@internal: Number of Cholera Primary Series doses
*/
define "Number of Cholera Primary Series Doses Administered":
Count("Cholera Primary Series Doses Administered to Patient")
/*
@input: Client's age is less than 1 year
@pseudocode: Today's date − "Date of birth" < 1 year
@code: Client's age is less than 1 year-39
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "Client's age is less than 1 year":
Elements."Current Patient Age In Years" < 1
/*
@input: Client's age is more than or equal to 1 year
@pseudocode: Today's date − "Date of birth" ≥ 1 year
@code: Client's age is more than or equal to 1 year-39
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "Client's age is more than or equal to 1 year":
Elements."Current Patient Age In Years" >= 1
/*
@input: No cholera primary series dose was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 0
@code: No cholera primary series dose was administered-116
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "No cholera primary series dose was administered":
"Number of Cholera Primary Series Doses Administered" = 0
/*
@input: One cholera primary series dose was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 1
@code: One cholera primary series dose was administered-116
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "One cholera primary series dose was administered":
"Number of Cholera Primary Series Doses Administered" = 1
/*
@input: The latest cholera dose was administered less than 14 days ago
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") < 14 days
@code: The latest cholera dose was administered less than 14 days ago-106
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "The latest cholera dose was administered less than 14 days ago":
"Date of Latest Cholera Dose" is not null
and duration in days between "Date of Latest Cholera Dose" and Now() < 14
/*
@input: The latest cholera dose was administered more than 14 days ago
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≥ 14 days
@code: The latest cholera dose was administered more than 14 days ago-106
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "The latest cholera dose was administered more than 14 days ago":
not "The latest cholera dose was administered less than 14 days ago"
/*
@input: Two cholera primary series doses were administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 2
@code: Two cholera primary series doses were administered-116
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "Two cholera primary series doses were administered":
"Number of Cholera Primary Series Doses Administered" = 2
/*
@input: No cholera booster series dose was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Booster dose") = 0
@code: No cholera booster series dose was administered-114
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "No cholera booster series dose was administered":
"Number of Cholera Booster Series Doses Administered" = 0
/*
@input: The latest cholera dose was administered less than 3 years ago
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") < 3 years
@code: The latest cholera dose was administered less than 3 years ago-106
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "The latest cholera dose was administered less than 3 years ago":
"Date of Latest Cholera Dose" is not null
and duration in years between "Date of Latest Cholera Dose" and Now() < 3
/*
@input: The latest cholera dose was administered more than 3 years ago
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≥ 3 years
@code: The latest cholera dose was administered more than 3 years ago-106
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "The latest cholera dose was administered more than 3 years ago":
not "The latest cholera dose was administered less than 3 years ago"
/*
@input: At least one booster series dose was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Booster dose") >= 1
@code: At least one booster series dose was administered-115
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "At least one booster series dose was administered":
"Number of Cholera Booster Series Doses Administered" >= 1
/*
@input: Dose number of the latest dose is one
@pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines") = 1
@code: Dose number of the latest dose is one-68
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "Dose number of the latest dose is one":
"Cholera Doses Administered to Patient".mostRecent().getDose('1') is not null
/*
@input: The latest cholera dose was administered more than 14 days ago and less than 3 years ago
@pseudocode: 14 days <= Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") <= 3 years
@code: The latest cholera dose was administered more than 14 days ago and less than 3 years ago-118
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "The latest cholera dose was administered more than 14 days ago and less than 3 years ago":
"The latest cholera dose was administered more than 14 days ago"
and "The latest cholera dose was administered less than 3 years ago"
/*
@input: Dose number of the latest dose is two
@pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines") = 2
@code: Dose number of the latest dose is two-68
@decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule
*/
define "Dose number of the latest dose is two":
"Cholera Doses Administered to Patient".mostRecent().getDose('2') is not null
/*
@input: Client's age is less than 2 years
@pseudocode: Today's date − "Date of birth" < 2 years
@code: Client's age is less than 2 years-40
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
*/
define "Client's age is less than 2 years":
Elements."Current Patient Age In Years" < 2
/*
@input: Client's age is 2–5 years
@pseudocode: 2 years ≤ Today's date − "Date of birth" ≤ 5 years
@code: Client's age is 2–5 years-50
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
*/
define "Client's age is 2–5 years":
Elements."Current Patient Age In Years" >= 2
and Elements."Current Patient Age In Years" <= 5
/*
@input: At least one cholera primary series dose was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") >= 1
@code: At least one cholera primary series dose was administered-117
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "At least one cholera primary series dose was administered":
"Number of Cholera Primary Series Doses Administered" >= 1
/*
@input: Dose number of the latest primary series dose is one
@pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 1
@code: Dose number of the latest primary series dose is one-106
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "Dose number of the latest primary series dose is one":
"Cholera Primary Series Doses Administered to Patient".mostRecent().getDose('1') is not null
/*
@input: The latest cholera dose was administered less than 1 week ago
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") < 1 week
@code: The latest cholera dose was administered less than 1 week ago-105
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "The latest cholera dose was administered less than 1 week ago":
"Date of Latest Cholera Dose" is not null
and duration in weeks between "Date of Latest Cholera Dose" and Now() < 1
/*
@input: The latest cholera dose was administered more than 1 week and less than 6 weeks ago
@pseudocode: 1 week ≤ Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") < 6 weeks
@code: The latest cholera dose was administered more than 1 week and less than 6 weeks ago-115
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "The latest cholera dose was administered more than 1 week and less than 6 weeks ago":
"Date of Latest Cholera Dose" is not null
and duration in weeks between "Date of Latest Cholera Dose" and Now() >= 1
and duration in weeks between "Date of Latest Cholera Dose" and Now() < 6
/*
@input: Dose number of the latest primary series dose is two
@pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 2
@code: Dose number of the latest primary series dose is two-106
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
*/
define "Dose number of the latest primary series dose is two":
"Cholera Primary Series Doses Administered to Patient".mostRecent().getDose('2') is not null
/*
@input: Dose number of the latest primary series dose is less than three
@pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") < 3
@code: Dose number of the latest primary series dose is less than three-106
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
*/
define "Dose number of the latest primary series dose is less than three":
(("Cholera Primary Series Doses Administered to Patient".mostRecent()) I
where exists( I.protocolApplied pa where ToInteger(pa.doseNumber) < 3)) is not null
/*
@input: The latest cholera dose was administered more than 6 weeks ago
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≥ 6 weeks
@code: The latest cholera dose was administered more than 6 weeks ago-106
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "The latest cholera dose was administered more than 6 weeks ago":
"Date of Latest Cholera Dose" is not null
and duration in weeks between "Date of Latest Cholera Dose" and Now() >= 6
/*
@input: Dose number of the latest primary series dose is three
@pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 3
@code: Dose number of the latest primary series dose is three-106
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
*/
define "Dose number of the latest primary series dose is three":
"Cholera Primary Series Doses Administered to Patient".mostRecent().getDose('3') is not null
/*
@input: The latest cholera dose was administered less than {Member States defined lower limit} days ago
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≤ Member States defined lower limit
@code: The latest cholera dose was administered less than {Member States defined lower limit} days ago-132
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
*/
define "The latest cholera dose was administered less than {Member States defined lower limit} days ago":
"Date of Latest Cholera Dose" is not null
and duration in days between "Date of Latest Cholera Dose" and Now() <= CholeraLowerLimitDays
/*
@input: The latest cholera dose was administered approximately less than 6 months ago {Member States defined exact interval}
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≤ 6 months
@code: The latest cholera dose was administered approximately less than 6 months ago {Member States defined exact interval}-107
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
*/
define "The latest cholera dose was administered approximately less than 6 months ago {Member States defined exact interval}":
"Date of Latest Cholera Dose" is not null
and duration in days between "Date of Latest Cholera Dose" and Now() > CholeraLowerLimitDays
and duration in days between ("Date of Latest Cholera Dose" + 6 months) and Now() <= CholeraExactIntervalDays
/*
@input: The latest cholera dose was administered approximately more than 6 months ago {Member States defined exact interval}
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") > 6 months
@code: The latest cholera dose was administered approximately more than 6 months ago {Member States defined exact interval}-107
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years
*/
define "The latest cholera dose was administered approximately more than 6 months ago {Member States defined exact interval}":
"Date of Latest Cholera Dose" is not null
and duration in days between ("Date of Latest Cholera Dose" + 6 months) and Now() > CholeraExactIntervalDays
/*
@input: Client's age is more than 5 years
@pseudocode: Today's date − "Date of birth" > 5 years
@code: Client's age is more than 5 years-40
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "Client's age is more than 5 years":
Elements."Current Patient Age In Years" > 5
/*
@input: Dose number of the latest primary series dose is more than or equal to two
@pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") >= 2
@code: Dose number of the latest primary series dose is more than or equal to two-107
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "Dose number of the latest primary series dose is more than or equal to two":
(("Cholera Primary Series Doses Administered to Patient".mostRecent()) I
where exists( I.protocolApplied pa where ToInteger(pa.doseNumber) >= 2)) is not null
/*
@input: The latest cholera dose was administered approximately less than 2 years ago {Member States defined interval}
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≤ 2 years ± Member States defined interval
@code: The latest cholera dose was administered approximately less than 2 years ago {Member States defined interval}-139
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "The latest cholera dose was administered approximately less than 2 years ago {Member States defined interval}":
"Date of Latest Cholera Dose" is not null
and duration in months between "Date of Latest Cholera Dose" and Now() > 21
and duration in days between ("Date of Latest Cholera Dose" + 2 years) and Now() <= CholeraExactIntervalDays
/*
@input: The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") > 2 years ± Member States defined interval
@code: The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}-139
@decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
*/
define "The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}":
"Date of Latest Cholera Dose" is not null
and duration in days between ("Date of Latest Cholera Dose" + 2 years) and Now() > CholeraExactIntervalDays
/*
@internal: Cholera Booster Series Doses Administered to Patient
*/
define "Cholera Booster Series Doses Administered to Patient":
"Cholera Doses Administered to Patient".seriesBooster()
/*
@internal: Number of Cholera Booster Series Doses Administered
*/
define "Number of Cholera Booster Series Doses Administered":
Count("Cholera Booster Series Doses Administered to Patient")
/*
@internal: Date of Latest Cholera Dose
*/
define "Date of Latest Cholera Dose":
date from start of "Cholera Doses Administered to Patient".mostRecent().occurrence.toInterval()
</code></pre></td></tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
<valueCode value="computable"/>
</extension>
<url
value="http://smart.who.int/immunizations/Library/IMMZD2DTCholeraElements"/>
<version value="1.0.0"/>
<name value="IMMZD2DTCholeraElements"/>
<title value="IMMZD2DTCholeraElements"/>
<status value="draft"/>
<experimental value="false"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2026-03-31T13:54:17+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description
value="This library defines context-independent elements for Cholera used throughout the Immunization CPG"/>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library WHOConcepts"/>
<resource value="http://smart.who.int/immunizations/Library/WHOConcepts"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library WC"/>
<resource value="http://smart.who.int/immunizations/Library/WHOCommon"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library WE"/>
<resource value="http://smart.who.int/immunizations/Library/WHOElements"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Common"/>
<resource value="http://smart.who.int/immunizations/Library/IMMZCommon"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Concepts"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZConcepts"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Elements"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZElements"/>
</relatedArtifact>
<parameter>
<name value="CholeraLowerLimitDays"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="integer"/>
</parameter>
<parameter>
<name value="CholeraExactIntervalDays"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="integer"/>
</parameter>
<parameter>
<name value="Patient"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Patient"/>
</parameter>
<parameter>
<name value="Cholera Doses Administered to Patient"/>
<use value="out"/>
<min value="0"/>
<max value="*"/>
<type value="Immunization"/>
</parameter>
<parameter>
<name value="Cholera Primary Series Doses Administered to Patient"/>
<use value="out"/>
<min value="0"/>
<max value="*"/>
<type value="Immunization"/>
</parameter>
<parameter>
<name value="Number of Cholera Primary Series Doses Administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="integer"/>
</parameter>
<parameter>
<name value="Client's age is less than 1 year"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Client's age is more than or equal to 1 year"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="No cholera primary series dose was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="One cholera primary series dose was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Date of Latest Cholera Dose"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered less than 14 days ago"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered more than 14 days ago"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Two cholera primary series doses were administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Cholera Booster Series Doses Administered to Patient"/>
<use value="out"/>
<min value="0"/>
<max value="*"/>
<type value="Immunization"/>
</parameter>
<parameter>
<name value="Number of Cholera Booster Series Doses Administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="integer"/>
</parameter>
<parameter>
<name value="No cholera booster series dose was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered less than 3 years ago"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered more than 3 years ago"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="At least one booster series dose was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Dose number of the latest dose is one"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered more than 14 days ago and less than 3 years ago"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Dose number of the latest dose is two"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Client's age is less than 2 years"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Client's age is 2–5 years"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="At least one cholera primary series dose was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Dose number of the latest primary series dose is one"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered less than 1 week ago"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered more than 1 week and less than 6 weeks ago"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Dose number of the latest primary series dose is two"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Dose number of the latest primary series dose is less than three"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered more than 6 weeks ago"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Dose number of the latest primary series dose is three"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered less than {Member States defined lower limit} days ago"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered approximately less than 6 months ago {Member States defined exact interval}"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered approximately more than 6 months ago {Member States defined exact interval}"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Client's age is more than 5 years"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Dose number of the latest primary series dose is more than or equal to two"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered approximately less than 2 years ago {Member States defined interval}"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<content>
<contentType value="text/cql"/>
<data
value="Ci8qCiAgKiBMaWJyYXJ5OiBJTU1aRDJEVENob2xlcmFFbGVtZW50cwogICovCmxpYnJhcnkgSU1NWkQyRFRDaG9sZXJhRWxlbWVudHMKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbmNlcHRzCmluY2x1ZGUgV0hPQ29tbW9uIGNhbGxlZCBXQwppbmNsdWRlIFdIT0VsZW1lbnRzIGNhbGxlZCBXRQoKaW5jbHVkZSBJTU1aQ29tbW9uIGNhbGxlZCBDb21tb24KaW5jbHVkZSBJTU1aQ29uY2VwdHMgY2FsbGVkIENvbmNlcHRzCmluY2x1ZGUgSU1NWkVsZW1lbnRzIGNhbGxlZCBFbGVtZW50cwoKcGFyYW1ldGVyIENob2xlcmFMb3dlckxpbWl0RGF5cyBJbnRlZ2VyIGRlZmF1bHQgMTUwCnBhcmFtZXRlciBDaG9sZXJhRXhhY3RJbnRlcnZhbERheXMgSW50ZWdlciBkZWZhdWx0IDAKCmNvbnRleHQgUGF0aWVudAoKLyoKQGludGVybmFsOiBDaG9sZXJhIGNvbnRhaW5pbmcgRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQKKi8KZGVmaW5lICJDaG9sZXJhIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IjoKICBFbGVtZW50cy4iRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQiIEkKICB3aGVyZQogICAgSS52YWNjaW5lQ29kZSBpbiBDb25jZXB0cy4iQ2hvbGVyYSB2YWNjaW5lcyIKCi8qCkBpbnRlcm5hbDogQ2hvbGVyYSBjb250YWluaW5nIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IHRoYXQgYXJlIGluIHRoZSBQcmltYXJ5IHNlcmllcwoqLwpkZWZpbmUgIkNob2xlcmEgUHJpbWFyeSBTZXJpZXMgRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQiOgogICJDaG9sZXJhIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50Ii5zZXJpZXNQcmltYXJ5KCkKCi8qCkBpbnRlcm5hbDogTnVtYmVyIG9mIENob2xlcmEgUHJpbWFyeSBTZXJpZXMgZG9zZXMKKi8KZGVmaW5lICJOdW1iZXIgb2YgQ2hvbGVyYSBQcmltYXJ5IFNlcmllcyBEb3NlcyBBZG1pbmlzdGVyZWQiOgogIENvdW50KCJDaG9sZXJhIFByaW1hcnkgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IikKCi8qCkBpbnB1dDogQ2xpZW50J3MgYWdlIGlzIGxlc3MgdGhhbiAxIHllYXIKQHBzZXVkb2NvZGU6IFRvZGF5J3MgZGF0ZSDiiJIgIkRhdGUgb2YgYmlydGgiIDwgMSB5ZWFyCkBjb2RlOiBDbGllbnQncyBhZ2UgaXMgbGVzcyB0aGFuIDEgeWVhci0zOQpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQyB2YWNjaW5lczogV2hvbGUtY2VsbCAoV0MpIHZhY2NpbmVzIHNjaGVkdWxlCiovCmRlZmluZSAiQ2xpZW50J3MgYWdlIGlzIGxlc3MgdGhhbiAxIHllYXIiOgogIEVsZW1lbnRzLiJDdXJyZW50IFBhdGllbnQgQWdlIEluIFllYXJzIiA8IDEKCi8qCkBpbnB1dDogQ2xpZW50J3MgYWdlIGlzIG1vcmUgdGhhbiBvciBlcXVhbCB0byAxIHllYXIKQHBzZXVkb2NvZGU6IFRvZGF5J3MgZGF0ZSDiiJIgIkRhdGUgb2YgYmlydGgiIOKJpSAxIHllYXIKQGNvZGU6IENsaWVudCdzIGFnZSBpcyBtb3JlIHRoYW4gb3IgZXF1YWwgdG8gMSB5ZWFyLTM5CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDIHZhY2NpbmVzOiBXaG9sZS1jZWxsIChXQykgdmFjY2luZXMgc2NoZWR1bGUKKi8KZGVmaW5lICJDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIDEgeWVhciI6CiAgRWxlbWVudHMuIkN1cnJlbnQgUGF0aWVudCBBZ2UgSW4gWWVhcnMiID49IDEKCi8qCkBpbnB1dDogTm8gY2hvbGVyYSBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQKQHBzZXVkb2NvZGU6IENvdW50IG9mIHZhY2NpbmVzIGFkbWluaXN0ZXJlZCAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiQ2hvbGVyYSB2YWNjaW5lcyIgYW5kICJUeXBlIG9mIGRvc2UiID0gIlByaW1hcnkgc2VyaWVzIikgPSAwCkBjb2RlOiBObyBjaG9sZXJhIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZC0xMTYKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MgdmFjY2luZXM6IFdob2xlLWNlbGwgKFdDKSB2YWNjaW5lcyBzY2hlZHVsZQpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAzIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAzLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCAy4oCTNSB5ZWFycwpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAyIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAyLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCBvdmVyIDUgeWVhcnMKKi8KZGVmaW5lICJObyBjaG9sZXJhIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCI6CiAgIk51bWJlciBvZiBDaG9sZXJhIFByaW1hcnkgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCIgPSAwCgovKgpAaW5wdXQ6IE9uZSBjaG9sZXJhIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZApAcHNldWRvY29kZTogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJDaG9sZXJhIHZhY2NpbmVzIiBhbmQgIlR5cGUgb2YgZG9zZSIgPSAiUHJpbWFyeSBzZXJpZXMiKSA9IDEKQGNvZGU6IE9uZSBjaG9sZXJhIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZC0xMTYKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MgdmFjY2luZXM6IFdob2xlLWNlbGwgKFdDKSB2YWNjaW5lcyBzY2hlZHVsZQoqLwpkZWZpbmUgIk9uZSBjaG9sZXJhIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCI6CiAgIk51bWJlciBvZiBDaG9sZXJhIFByaW1hcnkgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCIgPSAxCgovKgpAaW5wdXQ6IFRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbGVzcyB0aGFuIDE0IGRheXMgYWdvCkBwc2V1ZG9jb2RlOiBUb2RheSdzIGRhdGUg4oiSIGxhdGVzdCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiKSA8IDE0IGRheXMKQGNvZGU6IFRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbGVzcyB0aGFuIDE0IGRheXMgYWdvLTEwNgpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQyB2YWNjaW5lczogV2hvbGUtY2VsbCAoV0MpIHZhY2NpbmVzIHNjaGVkdWxlCiovCmRlZmluZSAiVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBsZXNzIHRoYW4gMTQgZGF5cyBhZ28iOgogICJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiIGlzIG5vdCBudWxsCiAgYW5kIGR1cmF0aW9uIGluIGRheXMgYmV0d2VlbiAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBhbmQgTm93KCkgPCAxNAoKLyoKQGlucHV0OiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIG1vcmUgdGhhbiAxNCBkYXlzIGFnbwpAcHNldWRvY29kZTogVG9kYXkncyBkYXRlIOKIkiBsYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJDaG9sZXJhIHZhY2NpbmVzIikg4omlIDE0IGRheXMKQGNvZGU6IFRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbW9yZSB0aGFuIDE0IGRheXMgYWdvLTEwNgpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQyB2YWNjaW5lczogV2hvbGUtY2VsbCAoV0MpIHZhY2NpbmVzIHNjaGVkdWxlCiovCmRlZmluZSAiVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBtb3JlIHRoYW4gMTQgZGF5cyBhZ28iOgogIG5vdCAiVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBsZXNzIHRoYW4gMTQgZGF5cyBhZ28iCgovKgpAaW5wdXQ6IFR3byBjaG9sZXJhIHByaW1hcnkgc2VyaWVzIGRvc2VzIHdlcmUgYWRtaW5pc3RlcmVkCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJQcmltYXJ5IHNlcmllcyIpID0gMgpAY29kZTogVHdvIGNob2xlcmEgcHJpbWFyeSBzZXJpZXMgZG9zZXMgd2VyZSBhZG1pbmlzdGVyZWQtMTE2CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDIHZhY2NpbmVzOiBXaG9sZS1jZWxsIChXQykgdmFjY2luZXMgc2NoZWR1bGUKKi8KZGVmaW5lICJUd28gY2hvbGVyYSBwcmltYXJ5IHNlcmllcyBkb3NlcyB3ZXJlIGFkbWluaXN0ZXJlZCI6CiAgIk51bWJlciBvZiBDaG9sZXJhIFByaW1hcnkgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCIgPSAyCgovKgpAaW5wdXQ6IE5vIGNob2xlcmEgYm9vc3RlciBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJCb29zdGVyIGRvc2UiKSA9IDAKQGNvZGU6IE5vIGNob2xlcmEgYm9vc3RlciBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLTExNApAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQyB2YWNjaW5lczogV2hvbGUtY2VsbCAoV0MpIHZhY2NpbmVzIHNjaGVkdWxlCiovCmRlZmluZSAiTm8gY2hvbGVyYSBib29zdGVyIHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiOgogICJOdW1iZXIgb2YgQ2hvbGVyYSBCb29zdGVyIFNlcmllcyBEb3NlcyBBZG1pbmlzdGVyZWQiID0gMAoKLyoKQGlucHV0OiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGxlc3MgdGhhbiAzIHllYXJzIGFnbwpAcHNldWRvY29kZTogVG9kYXkncyBkYXRlIOKIkiBsYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJDaG9sZXJhIHZhY2NpbmVzIikgPCAzIHllYXJzCkBjb2RlOiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGxlc3MgdGhhbiAzIHllYXJzIGFnby0xMDYKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MgdmFjY2luZXM6IFdob2xlLWNlbGwgKFdDKSB2YWNjaW5lcyBzY2hlZHVsZQoqLwpkZWZpbmUgIlRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbGVzcyB0aGFuIDMgeWVhcnMgYWdvIjoKICAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBpcyBub3QgbnVsbAogIGFuZCBkdXJhdGlvbiBpbiB5ZWFycyBiZXR3ZWVuICJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiIGFuZCBOb3coKSA8IDMKCi8qCkBpbnB1dDogVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBtb3JlIHRoYW4gMyB5ZWFycyBhZ28KQHBzZXVkb2NvZGU6IFRvZGF5J3MgZGF0ZSDiiJIgbGF0ZXN0ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiQ2hvbGVyYSB2YWNjaW5lcyIpIOKJpSAzIHllYXJzCkBjb2RlOiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIG1vcmUgdGhhbiAzIHllYXJzIGFnby0xMDYKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MgdmFjY2luZXM6IFdob2xlLWNlbGwgKFdDKSB2YWNjaW5lcyBzY2hlZHVsZQoqLwpkZWZpbmUgIlRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbW9yZSB0aGFuIDMgeWVhcnMgYWdvIjoKICBub3QgIlRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbGVzcyB0aGFuIDMgeWVhcnMgYWdvIgoKLyoKQGlucHV0OiBBdCBsZWFzdCBvbmUgYm9vc3RlciBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJCb29zdGVyIGRvc2UiKSA+PSAxCkBjb2RlOiBBdCBsZWFzdCBvbmUgYm9vc3RlciBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLTExNQpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQyB2YWNjaW5lczogV2hvbGUtY2VsbCAoV0MpIHZhY2NpbmVzIHNjaGVkdWxlCiovCmRlZmluZSAiQXQgbGVhc3Qgb25lIGJvb3N0ZXIgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCI6CiAgIk51bWJlciBvZiBDaG9sZXJhIEJvb3N0ZXIgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCIgPj0gMQoKLyoKQGlucHV0OiBEb3NlIG51bWJlciBvZiB0aGUgbGF0ZXN0IGRvc2UgaXMgb25lCkBwc2V1ZG9jb2RlOiBMYXRlc3QgIkRvc2UgbnVtYmVyIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiQ2hvbGVyYSB2YWNjaW5lcyIpID0gMQpAY29kZTogRG9zZSBudW1iZXIgb2YgdGhlIGxhdGVzdCBkb3NlIGlzIG9uZS02OApAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQyB2YWNjaW5lczogV2hvbGUtY2VsbCAoV0MpIHZhY2NpbmVzIHNjaGVkdWxlCiovCmRlZmluZSAiRG9zZSBudW1iZXIgb2YgdGhlIGxhdGVzdCBkb3NlIGlzIG9uZSI6CiAgIkNob2xlcmEgRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQiLm1vc3RSZWNlbnQoKS5nZXREb3NlKCcxJykgaXMgbm90IG51bGwKCi8qCkBpbnB1dDogVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBtb3JlIHRoYW4gMTQgZGF5cyBhZ28gYW5kIGxlc3MgdGhhbiAzIHllYXJzIGFnbwpAcHNldWRvY29kZTogMTQgZGF5cyA8PSBUb2RheSdzIGRhdGUg4oiSIGxhdGVzdCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiKSA8PSAzIHllYXJzCkBjb2RlOiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIG1vcmUgdGhhbiAxNCBkYXlzIGFnbyBhbmQgbGVzcyB0aGFuIDMgeWVhcnMgYWdvLTExOApAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQyB2YWNjaW5lczogV2hvbGUtY2VsbCAoV0MpIHZhY2NpbmVzIHNjaGVkdWxlCiovCmRlZmluZSAiVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBtb3JlIHRoYW4gMTQgZGF5cyBhZ28gYW5kIGxlc3MgdGhhbiAzIHllYXJzIGFnbyI6CiAgIlRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbW9yZSB0aGFuIDE0IGRheXMgYWdvIgogIGFuZCAiVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBsZXNzIHRoYW4gMyB5ZWFycyBhZ28iCgovKgpAaW5wdXQ6IERvc2UgbnVtYmVyIG9mIHRoZSBsYXRlc3QgZG9zZSBpcyB0d28KQHBzZXVkb2NvZGU6IExhdGVzdCAiRG9zZSBudW1iZXIiICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJDaG9sZXJhIHZhY2NpbmVzIikgPSAyCkBjb2RlOiBEb3NlIG51bWJlciBvZiB0aGUgbGF0ZXN0IGRvc2UgaXMgdHdvLTY4CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDIHZhY2NpbmVzOiBXaG9sZS1jZWxsIChXQykgdmFjY2luZXMgc2NoZWR1bGUKKi8KZGVmaW5lICJEb3NlIG51bWJlciBvZiB0aGUgbGF0ZXN0IGRvc2UgaXMgdHdvIjoKICAiQ2hvbGVyYSBEb3NlcyBBZG1pbmlzdGVyZWQgdG8gUGF0aWVudCIubW9zdFJlY2VudCgpLmdldERvc2UoJzInKSBpcyBub3QgbnVsbAoKLyoKQGlucHV0OiBDbGllbnQncyBhZ2UgaXMgbGVzcyB0aGFuIDIgeWVhcnMKQHBzZXVkb2NvZGU6IFRvZGF5J3MgZGF0ZSDiiJIgIkRhdGUgb2YgYmlydGgiIDwgMiB5ZWFycwpAY29kZTogQ2xpZW50J3MgYWdlIGlzIGxlc3MgdGhhbiAyIHllYXJzLTQwCkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDLXJCUyB2YWNjaW5lIDMgZG9zZXM6IFdob2xlIGNlbGwtcmVjb21iaW5hbnQgQiBzdWJ1bml0IChXQy1yQlMpIHZhY2NpbmUsIDMtZG9zZSBzY2hlZHVsZSBmb3IgY2xpZW50cyBhZ2VkIDLigJM1IHllYXJzCiovCmRlZmluZSAiQ2xpZW50J3MgYWdlIGlzIGxlc3MgdGhhbiAyIHllYXJzIjoKICBFbGVtZW50cy4iQ3VycmVudCBQYXRpZW50IEFnZSBJbiBZZWFycyIgPCAyCgovKgpAaW5wdXQ6IENsaWVudCdzIGFnZSBpcyAy4oCTNSB5ZWFycwpAcHNldWRvY29kZTogMiB5ZWFycyDiiaQgVG9kYXkncyBkYXRlIOKIkiAiRGF0ZSBvZiBiaXJ0aCIg4omkIDUgeWVhcnMKQGNvZGU6IENsaWVudCdzIGFnZSBpcyAy4oCTNSB5ZWFycy01MApAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAzIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAzLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCAy4oCTNSB5ZWFycwoqLwpkZWZpbmUgIkNsaWVudCdzIGFnZSBpcyAy4oCTNSB5ZWFycyI6CiAgRWxlbWVudHMuIkN1cnJlbnQgUGF0aWVudCBBZ2UgSW4gWWVhcnMiID49IDIKICBhbmQgRWxlbWVudHMuIkN1cnJlbnQgUGF0aWVudCBBZ2UgSW4gWWVhcnMiIDw9IDUKCi8qCkBpbnB1dDogQXQgbGVhc3Qgb25lIGNob2xlcmEgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJQcmltYXJ5IHNlcmllcyIpID49IDEKQGNvZGU6IEF0IGxlYXN0IG9uZSBjaG9sZXJhIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZC0xMTcKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MtckJTIHZhY2NpbmUgMyBkb3NlczogV2hvbGUgY2VsbC1yZWNvbWJpbmFudCBCIHN1YnVuaXQgKFdDLXJCUykgdmFjY2luZSwgMy1kb3NlIHNjaGVkdWxlIGZvciBjbGllbnRzIGFnZWQgMuKAkzUgeWVhcnMKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MtckJTIHZhY2NpbmUgMiBkb3NlczogV2hvbGUgY2VsbC1yZWNvbWJpbmFudCBCIHN1YnVuaXQgKFdDLXJCUykgdmFjY2luZSwgMi1kb3NlIHNjaGVkdWxlIGZvciBjbGllbnRzIGFnZWQgb3ZlciA1IHllYXJzCiovCmRlZmluZSAiQXQgbGVhc3Qgb25lIGNob2xlcmEgcHJpbWFyeSBzZXJpZXMgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIjoKICAiTnVtYmVyIG9mIENob2xlcmEgUHJpbWFyeSBTZXJpZXMgRG9zZXMgQWRtaW5pc3RlcmVkIiA+PSAxCgovKgpAaW5wdXQ6IERvc2UgbnVtYmVyIG9mIHRoZSBsYXRlc3QgcHJpbWFyeSBzZXJpZXMgZG9zZSBpcyBvbmUKQHBzZXVkb2NvZGU6IExhdGVzdCAiRG9zZSBudW1iZXIiICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJDaG9sZXJhIHZhY2NpbmVzIiBhbmQgIlR5cGUgb2YgZG9zZSIgPSAiUHJpbWFyeSBzZXJpZXMiKSA9IDEKQGNvZGU6IERvc2UgbnVtYmVyIG9mIHRoZSBsYXRlc3QgcHJpbWFyeSBzZXJpZXMgZG9zZSBpcyBvbmUtMTA2CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDLXJCUyB2YWNjaW5lIDMgZG9zZXM6IFdob2xlIGNlbGwtcmVjb21iaW5hbnQgQiBzdWJ1bml0IChXQy1yQlMpIHZhY2NpbmUsIDMtZG9zZSBzY2hlZHVsZSBmb3IgY2xpZW50cyBhZ2VkIDLigJM1IHllYXJzCkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDLXJCUyB2YWNjaW5lIDIgZG9zZXM6IFdob2xlIGNlbGwtcmVjb21iaW5hbnQgQiBzdWJ1bml0IChXQy1yQlMpIHZhY2NpbmUsIDItZG9zZSBzY2hlZHVsZSBmb3IgY2xpZW50cyBhZ2VkIG92ZXIgNSB5ZWFycwoqLwpkZWZpbmUgIkRvc2UgbnVtYmVyIG9mIHRoZSBsYXRlc3QgcHJpbWFyeSBzZXJpZXMgZG9zZSBpcyBvbmUiOgogICJDaG9sZXJhIFByaW1hcnkgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50Ii5tb3N0UmVjZW50KCkuZ2V0RG9zZSgnMScpIGlzIG5vdCBudWxsCgovKgpAaW5wdXQ6IFRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbGVzcyB0aGFuIDEgd2VlayBhZ28KQHBzZXVkb2NvZGU6IFRvZGF5J3MgZGF0ZSDiiJIgbGF0ZXN0ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiQ2hvbGVyYSB2YWNjaW5lcyIpIDwgMSB3ZWVrCkBjb2RlOiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGxlc3MgdGhhbiAxIHdlZWsgYWdvLTEwNQpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAzIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAzLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCAy4oCTNSB5ZWFycwpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAyIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAyLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCBvdmVyIDUgeWVhcnMKKi8KZGVmaW5lICJUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGxlc3MgdGhhbiAxIHdlZWsgYWdvIjoKICAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBpcyBub3QgbnVsbAogIGFuZCBkdXJhdGlvbiBpbiB3ZWVrcyBiZXR3ZWVuICJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiIGFuZCBOb3coKSA8IDEKCi8qCkBpbnB1dDogVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBtb3JlIHRoYW4gMSB3ZWVrIGFuZCBsZXNzIHRoYW4gNiB3ZWVrcyBhZ28KQHBzZXVkb2NvZGU6IDEgd2VlayDiiaQgVG9kYXkncyBkYXRlIOKIkiBsYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJDaG9sZXJhIHZhY2NpbmVzIikgPCA2IHdlZWtzCkBjb2RlOiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIG1vcmUgdGhhbiAxIHdlZWsgYW5kIGxlc3MgdGhhbiA2IHdlZWtzIGFnby0xMTUKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MtckJTIHZhY2NpbmUgMyBkb3NlczogV2hvbGUgY2VsbC1yZWNvbWJpbmFudCBCIHN1YnVuaXQgKFdDLXJCUykgdmFjY2luZSwgMy1kb3NlIHNjaGVkdWxlIGZvciBjbGllbnRzIGFnZWQgMuKAkzUgeWVhcnMKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MtckJTIHZhY2NpbmUgMiBkb3NlczogV2hvbGUgY2VsbC1yZWNvbWJpbmFudCBCIHN1YnVuaXQgKFdDLXJCUykgdmFjY2luZSwgMi1kb3NlIHNjaGVkdWxlIGZvciBjbGllbnRzIGFnZWQgb3ZlciA1IHllYXJzCiovCmRlZmluZSAiVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBtb3JlIHRoYW4gMSB3ZWVrIGFuZCBsZXNzIHRoYW4gNiB3ZWVrcyBhZ28iOgogICJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiIGlzIG5vdCBudWxsCiAgYW5kIGR1cmF0aW9uIGluIHdlZWtzIGJldHdlZW4gIkRhdGUgb2YgTGF0ZXN0IENob2xlcmEgRG9zZSIgYW5kIE5vdygpID49IDEKICBhbmQgZHVyYXRpb24gaW4gd2Vla3MgYmV0d2VlbiAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBhbmQgTm93KCkgPCA2CgovKgpAaW5wdXQ6IERvc2UgbnVtYmVyIG9mIHRoZSBsYXRlc3QgcHJpbWFyeSBzZXJpZXMgZG9zZSBpcyB0d28KQHBzZXVkb2NvZGU6IExhdGVzdCAiRG9zZSBudW1iZXIiICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJDaG9sZXJhIHZhY2NpbmVzIiBhbmQgIlR5cGUgb2YgZG9zZSIgPSAiUHJpbWFyeSBzZXJpZXMiKSA9IDIKQGNvZGU6IERvc2UgbnVtYmVyIG9mIHRoZSBsYXRlc3QgcHJpbWFyeSBzZXJpZXMgZG9zZSBpcyB0d28tMTA2CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDLXJCUyB2YWNjaW5lIDMgZG9zZXM6IFdob2xlIGNlbGwtcmVjb21iaW5hbnQgQiBzdWJ1bml0IChXQy1yQlMpIHZhY2NpbmUsIDMtZG9zZSBzY2hlZHVsZSBmb3IgY2xpZW50cyBhZ2VkIDLigJM1IHllYXJzCiovCmRlZmluZSAiRG9zZSBudW1iZXIgb2YgdGhlIGxhdGVzdCBwcmltYXJ5IHNlcmllcyBkb3NlIGlzIHR3byI6CiAgIkNob2xlcmEgUHJpbWFyeSBTZXJpZXMgRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQiLm1vc3RSZWNlbnQoKS5nZXREb3NlKCcyJykgaXMgbm90IG51bGwKCi8qCkBpbnB1dDogRG9zZSBudW1iZXIgb2YgdGhlIGxhdGVzdCBwcmltYXJ5IHNlcmllcyBkb3NlIGlzIGxlc3MgdGhhbiB0aHJlZQpAcHNldWRvY29kZTogTGF0ZXN0ICJEb3NlIG51bWJlciIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJQcmltYXJ5IHNlcmllcyIpIDwgMwpAY29kZTogRG9zZSBudW1iZXIgb2YgdGhlIGxhdGVzdCBwcmltYXJ5IHNlcmllcyBkb3NlIGlzIGxlc3MgdGhhbiB0aHJlZS0xMDYKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MtckJTIHZhY2NpbmUgMyBkb3NlczogV2hvbGUgY2VsbC1yZWNvbWJpbmFudCBCIHN1YnVuaXQgKFdDLXJCUykgdmFjY2luZSwgMy1kb3NlIHNjaGVkdWxlIGZvciBjbGllbnRzIGFnZWQgMuKAkzUgeWVhcnMKKi8KZGVmaW5lICJEb3NlIG51bWJlciBvZiB0aGUgbGF0ZXN0IHByaW1hcnkgc2VyaWVzIGRvc2UgaXMgbGVzcyB0aGFuIHRocmVlIjoKICAoKCJDaG9sZXJhIFByaW1hcnkgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50Ii5tb3N0UmVjZW50KCkpIEkKICAgIHdoZXJlIGV4aXN0cyggSS5wcm90b2NvbEFwcGxpZWQgcGEgd2hlcmUgVG9JbnRlZ2VyKHBhLmRvc2VOdW1iZXIpIDwgMykpIGlzIG5vdCBudWxsCgovKgpAaW5wdXQ6IFRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbW9yZSB0aGFuIDYgd2Vla3MgYWdvCkBwc2V1ZG9jb2RlOiBUb2RheSdzIGRhdGUg4oiSIGxhdGVzdCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiKSDiiaUgNiB3ZWVrcwpAY29kZTogVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBtb3JlIHRoYW4gNiB3ZWVrcyBhZ28tMTA2CkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDLXJCUyB2YWNjaW5lIDMgZG9zZXM6IFdob2xlIGNlbGwtcmVjb21iaW5hbnQgQiBzdWJ1bml0IChXQy1yQlMpIHZhY2NpbmUsIDMtZG9zZSBzY2hlZHVsZSBmb3IgY2xpZW50cyBhZ2VkIDLigJM1IHllYXJzCkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDLXJCUyB2YWNjaW5lIDIgZG9zZXM6IFdob2xlIGNlbGwtcmVjb21iaW5hbnQgQiBzdWJ1bml0IChXQy1yQlMpIHZhY2NpbmUsIDItZG9zZSBzY2hlZHVsZSBmb3IgY2xpZW50cyBhZ2VkIG92ZXIgNSB5ZWFycwoqLwpkZWZpbmUgIlRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbW9yZSB0aGFuIDYgd2Vla3MgYWdvIjoKICAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBpcyBub3QgbnVsbAogIGFuZCBkdXJhdGlvbiBpbiB3ZWVrcyBiZXR3ZWVuICJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiIGFuZCBOb3coKSA+PSA2CgovKgpAaW5wdXQ6IERvc2UgbnVtYmVyIG9mIHRoZSBsYXRlc3QgcHJpbWFyeSBzZXJpZXMgZG9zZSBpcyB0aHJlZQpAcHNldWRvY29kZTogTGF0ZXN0ICJEb3NlIG51bWJlciIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJQcmltYXJ5IHNlcmllcyIpID0gMwpAY29kZTogRG9zZSBudW1iZXIgb2YgdGhlIGxhdGVzdCBwcmltYXJ5IHNlcmllcyBkb3NlIGlzIHRocmVlLTEwNgpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAzIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAzLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCAy4oCTNSB5ZWFycwoqLwpkZWZpbmUgIkRvc2UgbnVtYmVyIG9mIHRoZSBsYXRlc3QgcHJpbWFyeSBzZXJpZXMgZG9zZSBpcyB0aHJlZSI6CiAgIkNob2xlcmEgUHJpbWFyeSBTZXJpZXMgRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQiLm1vc3RSZWNlbnQoKS5nZXREb3NlKCczJykgaXMgbm90IG51bGwKCi8qCkBpbnB1dDogVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBsZXNzIHRoYW4ge01lbWJlciBTdGF0ZXMgZGVmaW5lZCBsb3dlciBsaW1pdH0gZGF5cyBhZ28KQHBzZXVkb2NvZGU6IFRvZGF5J3MgZGF0ZSDiiJIgbGF0ZXN0ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiQ2hvbGVyYSB2YWNjaW5lcyIpIOKJpCBNZW1iZXIgU3RhdGVzIGRlZmluZWQgbG93ZXIgbGltaXQKQGNvZGU6IFRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbGVzcyB0aGFuIHtNZW1iZXIgU3RhdGVzIGRlZmluZWQgbG93ZXIgbGltaXR9IGRheXMgYWdvLTEzMgpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAzIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAzLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCAy4oCTNSB5ZWFycwoqLwpkZWZpbmUgIlRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgbGVzcyB0aGFuIHtNZW1iZXIgU3RhdGVzIGRlZmluZWQgbG93ZXIgbGltaXR9IGRheXMgYWdvIjoKICAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBpcyBub3QgbnVsbAogIGFuZCBkdXJhdGlvbiBpbiBkYXlzIGJldHdlZW4gIkRhdGUgb2YgTGF0ZXN0IENob2xlcmEgRG9zZSIgYW5kIE5vdygpIDw9IENob2xlcmFMb3dlckxpbWl0RGF5cwoKLyoKQGlucHV0OiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGFwcHJveGltYXRlbHkgbGVzcyB0aGFuIDYgbW9udGhzIGFnbyB7TWVtYmVyIFN0YXRlcyBkZWZpbmVkIGV4YWN0IGludGVydmFsfQpAcHNldWRvY29kZTogVG9kYXkncyBkYXRlIOKIkiBsYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJDaG9sZXJhIHZhY2NpbmVzIikg4omkIDYgbW9udGhzCkBjb2RlOiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGFwcHJveGltYXRlbHkgbGVzcyB0aGFuIDYgbW9udGhzIGFnbyB7TWVtYmVyIFN0YXRlcyBkZWZpbmVkIGV4YWN0IGludGVydmFsfS0xMDcKQGRlY2lzaW9uOiBJTU1aLkQyLkRULkNob2xlcmEuV0MtckJTIHZhY2NpbmUgMyBkb3NlczogV2hvbGUgY2VsbC1yZWNvbWJpbmFudCBCIHN1YnVuaXQgKFdDLXJCUykgdmFjY2luZSwgMy1kb3NlIHNjaGVkdWxlIGZvciBjbGllbnRzIGFnZWQgMuKAkzUgeWVhcnMKKi8KZGVmaW5lICJUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGFwcHJveGltYXRlbHkgbGVzcyB0aGFuIDYgbW9udGhzIGFnbyB7TWVtYmVyIFN0YXRlcyBkZWZpbmVkIGV4YWN0IGludGVydmFsfSI6CiAgIkRhdGUgb2YgTGF0ZXN0IENob2xlcmEgRG9zZSIgaXMgbm90IG51bGwKICBhbmQgZHVyYXRpb24gaW4gZGF5cyBiZXR3ZWVuICJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiIGFuZCBOb3coKSA+IENob2xlcmFMb3dlckxpbWl0RGF5cwogIGFuZCBkdXJhdGlvbiBpbiBkYXlzIGJldHdlZW4gKCJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiICsgNiBtb250aHMpIGFuZCBOb3coKSA8PSBDaG9sZXJhRXhhY3RJbnRlcnZhbERheXMKCi8qCkBpbnB1dDogVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBhcHByb3hpbWF0ZWx5IG1vcmUgdGhhbiA2IG1vbnRocyBhZ28ge01lbWJlciBTdGF0ZXMgZGVmaW5lZCBleGFjdCBpbnRlcnZhbH0KQHBzZXVkb2NvZGU6IFRvZGF5J3MgZGF0ZSDiiJIgbGF0ZXN0ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiQ2hvbGVyYSB2YWNjaW5lcyIpID4gNiBtb250aHMKQGNvZGU6IFRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgYXBwcm94aW1hdGVseSBtb3JlIHRoYW4gNiBtb250aHMgYWdvIHtNZW1iZXIgU3RhdGVzIGRlZmluZWQgZXhhY3QgaW50ZXJ2YWx9LTEwNwpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAzIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAzLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCAy4oCTNSB5ZWFycwoqLwpkZWZpbmUgIlRoZSBsYXRlc3QgY2hvbGVyYSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgYXBwcm94aW1hdGVseSBtb3JlIHRoYW4gNiBtb250aHMgYWdvIHtNZW1iZXIgU3RhdGVzIGRlZmluZWQgZXhhY3QgaW50ZXJ2YWx9IjoKICAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBpcyBub3QgbnVsbAogIGFuZCBkdXJhdGlvbiBpbiBkYXlzIGJldHdlZW4gKCJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiICsgNiBtb250aHMpIGFuZCBOb3coKSA+IENob2xlcmFFeGFjdEludGVydmFsRGF5cwoKLyoKQGlucHV0OiBDbGllbnQncyBhZ2UgaXMgbW9yZSB0aGFuIDUgeWVhcnMKQHBzZXVkb2NvZGU6IFRvZGF5J3MgZGF0ZSDiiJIgIkRhdGUgb2YgYmlydGgiID4gNSB5ZWFycwpAY29kZTogQ2xpZW50J3MgYWdlIGlzIG1vcmUgdGhhbiA1IHllYXJzLTQwCkBkZWNpc2lvbjogSU1NWi5EMi5EVC5DaG9sZXJhLldDLXJCUyB2YWNjaW5lIDIgZG9zZXM6IFdob2xlIGNlbGwtcmVjb21iaW5hbnQgQiBzdWJ1bml0IChXQy1yQlMpIHZhY2NpbmUsIDItZG9zZSBzY2hlZHVsZSBmb3IgY2xpZW50cyBhZ2VkIG92ZXIgNSB5ZWFycwoqLwpkZWZpbmUgIkNsaWVudCdzIGFnZSBpcyBtb3JlIHRoYW4gNSB5ZWFycyI6CiAgRWxlbWVudHMuIkN1cnJlbnQgUGF0aWVudCBBZ2UgSW4gWWVhcnMiID4gNQoKLyoKQGlucHV0OiBEb3NlIG51bWJlciBvZiB0aGUgbGF0ZXN0IHByaW1hcnkgc2VyaWVzIGRvc2UgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIHR3bwpAcHNldWRvY29kZTogTGF0ZXN0ICJEb3NlIG51bWJlciIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJQcmltYXJ5IHNlcmllcyIpID49IDIKQGNvZGU6IERvc2UgbnVtYmVyIG9mIHRoZSBsYXRlc3QgcHJpbWFyeSBzZXJpZXMgZG9zZSBpcyBtb3JlIHRoYW4gb3IgZXF1YWwgdG8gdHdvLTEwNwpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAyIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAyLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCBvdmVyIDUgeWVhcnMKKi8KZGVmaW5lICJEb3NlIG51bWJlciBvZiB0aGUgbGF0ZXN0IHByaW1hcnkgc2VyaWVzIGRvc2UgaXMgbW9yZSB0aGFuIG9yIGVxdWFsIHRvIHR3byI6CiAgKCgiQ2hvbGVyYSBQcmltYXJ5IFNlcmllcyBEb3NlcyBBZG1pbmlzdGVyZWQgdG8gUGF0aWVudCIubW9zdFJlY2VudCgpKSBJCiAgICB3aGVyZSBleGlzdHMoIEkucHJvdG9jb2xBcHBsaWVkIHBhIHdoZXJlIFRvSW50ZWdlcihwYS5kb3NlTnVtYmVyKSA+PSAyKSkgaXMgbm90IG51bGwKCi8qCkBpbnB1dDogVGhlIGxhdGVzdCBjaG9sZXJhIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBhcHByb3hpbWF0ZWx5IGxlc3MgdGhhbiAyIHllYXJzIGFnbyB7TWVtYmVyIFN0YXRlcyBkZWZpbmVkIGludGVydmFsfQpAcHNldWRvY29kZTogVG9kYXkncyBkYXRlIOKIkiBsYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJDaG9sZXJhIHZhY2NpbmVzIikg4omkIDIgeWVhcnMgwrEgTWVtYmVyIFN0YXRlcyBkZWZpbmVkIGludGVydmFsCkBjb2RlOiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGFwcHJveGltYXRlbHkgbGVzcyB0aGFuIDIgeWVhcnMgYWdvIHtNZW1iZXIgU3RhdGVzIGRlZmluZWQgaW50ZXJ2YWx9LTEzOQpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAyIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAyLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCBvdmVyIDUgeWVhcnMKKi8KZGVmaW5lICJUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGFwcHJveGltYXRlbHkgbGVzcyB0aGFuIDIgeWVhcnMgYWdvIHtNZW1iZXIgU3RhdGVzIGRlZmluZWQgaW50ZXJ2YWx9IjoKICAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBpcyBub3QgbnVsbAogIGFuZCBkdXJhdGlvbiBpbiBtb250aHMgYmV0d2VlbiAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBhbmQgTm93KCkgPiAyMQogIGFuZCBkdXJhdGlvbiBpbiBkYXlzIGJldHdlZW4gKCJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiICsgMiB5ZWFycykgYW5kIE5vdygpIDw9IENob2xlcmFFeGFjdEludGVydmFsRGF5cwoKLyoKQGlucHV0OiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGFwcHJveGltYXRlbHkgbW9yZSB0aGFuIDIgeWVhcnMgYWdvIHtNZW1iZXIgU3RhdGVzIGRlZmluZWQgaW50ZXJ2YWx9CkBwc2V1ZG9jb2RlOiBUb2RheSdzIGRhdGUg4oiSIGxhdGVzdCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkNob2xlcmEgdmFjY2luZXMiKSA+IDIgeWVhcnMgwrEgTWVtYmVyIFN0YXRlcyBkZWZpbmVkIGludGVydmFsCkBjb2RlOiBUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGFwcHJveGltYXRlbHkgbW9yZSB0aGFuIDIgeWVhcnMgYWdvIHtNZW1iZXIgU3RhdGVzIGRlZmluZWQgaW50ZXJ2YWx9LTEzOQpAZGVjaXNpb246IElNTVouRDIuRFQuQ2hvbGVyYS5XQy1yQlMgdmFjY2luZSAyIGRvc2VzOiBXaG9sZSBjZWxsLXJlY29tYmluYW50IEIgc3VidW5pdCAoV0MtckJTKSB2YWNjaW5lLCAyLWRvc2Ugc2NoZWR1bGUgZm9yIGNsaWVudHMgYWdlZCBvdmVyIDUgeWVhcnMKKi8KZGVmaW5lICJUaGUgbGF0ZXN0IGNob2xlcmEgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGFwcHJveGltYXRlbHkgbW9yZSB0aGFuIDIgeWVhcnMgYWdvIHtNZW1iZXIgU3RhdGVzIGRlZmluZWQgaW50ZXJ2YWx9IjoKICAiRGF0ZSBvZiBMYXRlc3QgQ2hvbGVyYSBEb3NlIiBpcyBub3QgbnVsbAogIGFuZCBkdXJhdGlvbiBpbiBkYXlzIGJldHdlZW4gKCJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiICsgMiB5ZWFycykgYW5kIE5vdygpID4gQ2hvbGVyYUV4YWN0SW50ZXJ2YWxEYXlzCgovKgpAaW50ZXJuYWw6IENob2xlcmEgQm9vc3RlciBTZXJpZXMgRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQKKi8KZGVmaW5lICJDaG9sZXJhIEJvb3N0ZXIgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IjoKICAiQ2hvbGVyYSBEb3NlcyBBZG1pbmlzdGVyZWQgdG8gUGF0aWVudCIuc2VyaWVzQm9vc3RlcigpCgovKgpAaW50ZXJuYWw6IE51bWJlciBvZiBDaG9sZXJhIEJvb3N0ZXIgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZAoqLwpkZWZpbmUgIk51bWJlciBvZiBDaG9sZXJhIEJvb3N0ZXIgU2VyaWVzIERvc2VzIEFkbWluaXN0ZXJlZCI6CiAgQ291bnQoIkNob2xlcmEgQm9vc3RlciBTZXJpZXMgRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQiKQoKLyoKQGludGVybmFsOiBEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UKKi8KZGVmaW5lICJEYXRlIG9mIExhdGVzdCBDaG9sZXJhIERvc2UiOgogIGRhdGUgZnJvbSBzdGFydCBvZiAiQ2hvbGVyYSBEb3NlcyBBZG1pbmlzdGVyZWQgdG8gUGF0aWVudCIubW9zdFJlY2VudCgpLm9jY3VycmVuY2UudG9JbnRlcnZhbCgpCg=="/>
</content>
</Library>