WHO SMART Guidelines - HIV
0.4.3 - ci-build
WHO SMART Guidelines - HIV - Local Development build (v0.4.3) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Draft as of 2025-02-07 |
<Library xmlns="http://hl7.org/fhir">
<id value="HIVIND37Logic"/>
<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;">HIV.IND.37 Logic</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">HIVIND37Logic</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.4.3</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-HIVIND37Logic.html">HIV.IND.37 Logic</a></td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</td>
</tr>
<tr>
<th scope="row"><b>Experimental: </b></th>
<td style="padding-left: 4px;">true</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/6.0.2/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;">2025-02-07 14:15:45+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>% of HIV-positive pregnant women who are virally suppressed at labour and delivery</p>
</div></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: HIV.IND.37 Logic
* Ref No: VER.1
* Short Name: Viral suppression at labour and delivery
*
* Definition: % of HIV-positive pregnant women who are virally suppressed at labour and delivery
*
* Numerator: Number of HIV-positive pregnant women on ART during pregnancy and delivering at a facility during the reporting period who were virally suppressed (<1000 copies/mL) at delivery
* Numerator Calculation: COUNT of clients with "HIV status"='HIV-positive' AND "Place of delivery" is a 'Health facility' AND "Delivery date" is in the reporting period AND "Date of viral load sample collection" is on "Delivery date" AND "Viral load test result" LESS THAN 1000 copies/mL
* Numerator Exclusions:
*
* Denominator: Number of HIV-positive pregnant women on ART during pregnancy who deliver at a facility during the reporting period and had a viral load test during delivery, or the estimated total number of pregnant women living with HIV
* Denominator Calculation: COUNT of clients with "HIV status"='HIV-positive' AND "Place of delivery" is a 'Health facility' AND "Delivery date" is in the reporting period AND "Date of viral load sample collection" is on "Delivery date" | | Alternatively: *Estimated total number of pregnant women living with HIV
* Denominator Exclusions:
*
* Disaggregations:
* • Age (<15, 15–19, 20–25, 25+ years)
* • Timing of ART initiation (during pregnancy, on ART at first ANC visit)
* • Cities and other administrative regions of epidemiologic importance
*
* Disaggregation Elements: Age | Timing of ART initiation
*
* Numerator and Denominator Elements:
* Date of viral load sample collection
* Delivery date
* HIV status
* Place of delivery
* Viral load test result
*
* Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022
*
* Data Concepts:
* HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth
* HIV.B.DE115: HIV status | HIV status reported after applying the national HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.
* HIV.B.DE116: HIV-positive | Client is HIV-positive
* HIV.B.DE117: HIV-negative | Client is HIV-negative
* HIV.B.DE118: Unknown | Client has unknown HIV status
* HIV.D.DE194: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
* HIV.D.DE387: Viral load test result | Result from the viral load test in number of copies/mL
* HIV.E.DE41: Timing of ART initiation | When the pregnant woman or mother initiated ART, for women living with HIV.
* HIV.E.DE42: Already on ART at first antenatal care visit | The pregnant woman was already on antiretroviral therapy (ART) at first antenatal care visit
* HIV.E.DE43: Newly on ART during pregnancy | The pregnant woman started ART during her pregnancy
* HIV.E.DE44: Newly on ART during labour and delivery | The woman started ART during labour and delivery
* HIV.E.DE46: Delivery date | Date on which the woman delivered
* HIV.E.DE67: Place of delivery | The type of place where the woman delivered
* HIV.E.DE68: Health facility | The woman delivered at a health facility
* HIV.E.DE69: Home | The woman delivered at home
* HIV.E.DE70: Other | The woman delivered at another location that is not at home or at a health facility
* HIV.G.DE8: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
* HIV.G.DE12: Viral load test result | Result from the viral load test in number of copies/mL
* HIV.SRV.DE12: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
* HIV.SRV.DE13: Viral load test result | Result from the viral load test in number of copies/mL
*
* Additional Context
* - what it measures: This indicator measures viral suppression at the time of delivery among HIV-positive pregnant women.
* - rationale: • Viral suppression at the time of delivery is a service quality measure at a critical point in the vertical transmission risk period. | • Two different denominators give indicators similar to general measures of viral suppression among people living with HIV: The programme-based/service delivery denominator, that is, those on ART, delivering in a facility and having a viral load test, measures the third "95" target. The population-based denominator, that is, viral load among all estimated pregnant women living with HIV, regardless of ART status or ANC/facility attendance, measures population viral load suppression (of pregnant women living with HIV).
* - method: For the numerator: | Patient monitoring tools/EMRs (for example, PMTCT registers, patient records) | | For the denominator: | • Population-based denominator: modelling-based estimates (for example, Spectrum AIM) | • Programme-based/service delivery denominator: programme records, labour and delivery registers/EMRs | Note: This indicator should be interpreted with consideration of the VL testing coverage of pregnant women living with HIV at delivery. | | The recommended reporting period is 12 months.
*
* Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
*/
library HIVIND37Logic
// Included Libraries
using FHIR version '4.0.1'
include HIVCommon version '0.0.1' called HIC
include FHIRHelpers version '4.0.1'
include WHOCommon called WCom
include HIVIndicatorElements called HIE
include HIVElements called HE
// Indicator Definition
parameter "Measurement Period" Interval<Date> default Interval[@2023-01-01, @2023-01-30]
context Patient
/* Populations */
/*
*Initial Population
*/
define "Initial Population":
true
/**
* Numerator
*
* Definition: Number of HIV-positive pregnant women on ART during pregnancy and delivering at a facility during the reporting period who were virally suppressed (<1000 copies/mL) at delivery
* Calculation: COUNT of clients with "HIV status"='HIV-positive' AND "Place of delivery" is a 'Health facility' AND "Delivery date" is in the reporting period AND "Date of viral load sample collection" is on "Delivery date" AND "Viral load test result" LESS THAN 1000 copies/mL
*/
//health facility birth
define "First Health facility":
(First(HE."Health facility"))
define "Numerator":
HIE."Has HIV-positive Status"
and HIE."On ART D.DE38"
and HIE."Health facility"
and exists(
HIE."Viral load test result D.DE387" VL
with HE."viral load sample collection" P
such that VL.partOf.references(P) and start of P.performed.toInterval() = start of "First Health facility".effective.toInterval()
where VL.value < 1000
)
/**
* Denominator
*
* Definition: Number of HIV-positive pregnant women on ART during pregnancy who deliver at a facility during the reporting period and had a viral load test during delivery, or the estimated total number of pregnant women living with HIV
* Calculation: COUNT of clients with "HIV status"='HIV-positive' AND "Place of delivery" is a 'Health facility' AND "Delivery date" is in the reporting period AND "Date of viral load sample collection" is on "Delivery date" | | Alternatively: *Estimated total number of pregnant women living with HIV
*/
define "Denominator":
HIE."Has HIV-positive Status"
and HIE."On ART D.DE38"
and HIE."Health facility"
and exists(
HIE."Viral load test result D.DE387" VL
with HE."viral load sample collection" P
such that VL.partOf.references(P) and start of P.performed.toInterval() = start of "First Health facility".effective.toInterval()
)
/* end Populations */
/*
* Disaggregators
*/
define "Age Stratifier":
HIE."By Age Stratifier 3"
define "Geographic Region Stratifier":
HIE."By Geographic Region Stratifier"
define "Timing of ART initiation":
HIE."Timing of ART initiation"
define "Stratification":
HIE."By Age Stratifier 3"
+ ':' + HIE."By Geographic Region Stratifier"
+ HIE."Timing of ART initiation".code
</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/hiv/Library/HIVIND37Logic"/>
<version value="0.4.3"/>
<name value="HIVIND37Logic"/>
<title value="HIV.IND.37 Logic"/>
<status value="draft"/>
<experimental value="true"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2025-02-07T14:15:45+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description
value="% of HIV-positive pregnant women who are virally suppressed at labour and delivery"/>
<content>
<contentType value="text/cql"/>
<data
value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMzcgTG9naWMKICogUmVmIE5vOiBWRVIuMQogKiBTaG9ydCBOYW1lOiBWaXJhbCBzdXBwcmVzc2lvbiBhdCBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqCiAqIERlZmluaXRpb246ICUgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBhcmUgdmlyYWxseSBzdXBwcmVzc2VkIGF0IGxhYm91ciBhbmQgZGVsaXZlcnkKICoKICogTnVtZXJhdG9yOiBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIG9uIEFSVCBkdXJpbmcgcHJlZ25hbmN5IGFuZCBkZWxpdmVyaW5nIGF0IGEgZmFjaWxpdHkgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIHdobyB3ZXJlIHZpcmFsbHkgc3VwcHJlc3NlZCAoPDEwMDAgY29waWVzL21MKSBhdCBkZWxpdmVyeQogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJQbGFjZSBvZiBkZWxpdmVyeSIgaXMgYSAnSGVhbHRoIGZhY2lsaXR5JyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGlzIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBpcyBvbiAiRGVsaXZlcnkgZGF0ZSIgQU5EICJWaXJhbCBsb2FkIHRlc3QgcmVzdWx0IiBMRVNTIFRIQU4gMTAwMCBjb3BpZXMvbUwKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiBvbiBBUlQgZHVyaW5nIHByZWduYW5jeSB3aG8gZGVsaXZlciBhdCBhIGZhY2lsaXR5IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgaGFkIGEgdmlyYWwgbG9hZCB0ZXN0IGR1cmluZyBkZWxpdmVyeSwgb3IgdGhlIGVzdGltYXRlZCB0b3RhbCBudW1iZXIgb2YgcHJlZ25hbnQgd29tZW4gbGl2aW5nIHdpdGggSElWCiAqIERlbm9taW5hdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiUGxhY2Ugb2YgZGVsaXZlcnkiIGlzIGEgJ0hlYWx0aCBmYWNpbGl0eScgQU5EICJEZWxpdmVyeSBkYXRlIiBpcyBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgIkRhdGUgb2YgdmlyYWwgbG9hZCBzYW1wbGUgY29sbGVjdGlvbiIgaXMgb24gIkRlbGl2ZXJ5IGRhdGUiIHwgIHwgQWx0ZXJuYXRpdmVseTogKkVzdGltYXRlZCB0b3RhbCBudW1iZXIgb2YgcHJlZ25hbnQgd29tZW4gbGl2aW5nIHdpdGggSElWCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAoiBBZ2UgKDwxNSwgMTXigJMxOSwgMjDigJMyNSwgMjUrIHllYXJzKSAKICogIOKAosKgVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uIChkdXJpbmcgcHJlZ25hbmN5LCBvbiBBUlQgYXQgZmlyc3QgQU5DIHZpc2l0KSAKICogIOKAoiBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBBZ2UgfCBUaW1pbmcgb2YgQVJUIGluaXRpYXRpb24KICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIAogKiAgRGVsaXZlcnkgZGF0ZSAKICogIEhJViBzdGF0dXMgCiAqICBQbGFjZSBvZiBkZWxpdmVyeSAKICogIFZpcmFsIGxvYWQgdGVzdCByZXN1bHQKICoKICogUmVmZXJlbmNlOiBDb25zb2xpZGF0ZWQgZ3VpZGVsaW5lcyBvbiBwZXJzb24tY2VudHJlZCBISVYgc3RyYXRlZ2ljIGluZm9ybWF0aW9uOiBzdHJlbmd0aGVuaW5nIHJvdXRpbmUgZGF0YSBmb3IgaW1wYWN0LiBHZW5ldmE6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb247IDIwMjIKICogCiAqIERhdGEgQ29uY2VwdHM6CiAqIEhJVi5BLkRFMTc6IEFnZSB8IENhbGN1bGF0ZWQgYWdlIChudW1iZXIgb2YgeWVhcnMpIG9mIHRoZSBjbGllbnQgYmFzZWQgb24gZGF0ZSBvZiBiaXJ0aAogKiBISVYuQi5ERTExNTogSElWIHN0YXR1cyB8IEhJViBzdGF0dXMgcmVwb3J0ZWQgYWZ0ZXIgYXBwbHlpbmcgdGhlIG5hdGlvbmFsIEhJViB0ZXN0aW5nIGFsZ29yaXRobS4gTm8gc2luZ2xlIEhJViB0ZXN0IGNhbiBwcm92aWRlIGFuIEhJVi1wb3NpdGl2ZSBkaWFnbm9zaXMuCiAqIEhJVi5CLkRFMTE2OiBISVYtcG9zaXRpdmUgfCBDbGllbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5CLkRFMTE3OiBISVYtbmVnYXRpdmUgfCBDbGllbnQgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5CLkRFMTE4OiBVbmtub3duIHwgQ2xpZW50IGhhcyB1bmtub3duIEhJViBzdGF0dXMKICogSElWLkQuREUxOTQ6IERhdGUgb2YgdmlyYWwgbG9hZCBzYW1wbGUgY29sbGVjdGlvbiB8IERhdGUgYW5kIHRpbWUgd2hlbiB0aGUgc2FtcGxlIHdhcyBjb2xsZWN0ZWQgdG8gdGVzdCB0aGUgY2xpZW50J3MgSElWIHZpcmFsIGxvYWQKICogSElWLkQuREUzODc6IFZpcmFsIGxvYWQgdGVzdCByZXN1bHQgfCBSZXN1bHQgZnJvbSB0aGUgdmlyYWwgbG9hZCB0ZXN0IGluIG51bWJlciBvZiBjb3BpZXMvbUwKICogSElWLkUuREU0MTogVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uIHwgV2hlbiB0aGUgcHJlZ25hbnQgd29tYW4gb3IgbW90aGVyIGluaXRpYXRlZCBBUlQsIGZvciB3b21lbiBsaXZpbmcgd2l0aCBISVYuCiAqIEhJVi5FLkRFNDI6IEFscmVhZHkgb24gQVJUIGF0IGZpcnN0IGFudGVuYXRhbCBjYXJlIHZpc2l0IHwgVGhlIHByZWduYW50IHdvbWFuIHdhcyBhbHJlYWR5IG9uIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkgYXQgZmlyc3QgYW50ZW5hdGFsIGNhcmUgdmlzaXQKICogSElWLkUuREU0MzogTmV3bHkgb24gQVJUIGR1cmluZyBwcmVnbmFuY3kgfCBUaGUgcHJlZ25hbnQgd29tYW4gc3RhcnRlZCBBUlQgZHVyaW5nIGhlciBwcmVnbmFuY3kKICogSElWLkUuREU0NDogTmV3bHkgb24gQVJUIGR1cmluZyBsYWJvdXIgYW5kIGRlbGl2ZXJ5IHwgVGhlIHdvbWFuIHN0YXJ0ZWQgQVJUIGR1cmluZyBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqIEhJVi5FLkRFNDY6IERlbGl2ZXJ5IGRhdGUgfCBEYXRlIG9uIHdoaWNoIHRoZSB3b21hbiBkZWxpdmVyZWQKICogSElWLkUuREU2NzogUGxhY2Ugb2YgZGVsaXZlcnkgfCBUaGUgdHlwZSBvZiBwbGFjZSB3aGVyZSB0aGUgd29tYW4gZGVsaXZlcmVkCiAqIEhJVi5FLkRFNjg6IEhlYWx0aCBmYWNpbGl0eSB8IFRoZSB3b21hbiBkZWxpdmVyZWQgYXQgYSBoZWFsdGggZmFjaWxpdHkKICogSElWLkUuREU2OTogSG9tZSB8IFRoZSB3b21hbiBkZWxpdmVyZWQgYXQgaG9tZQogKiBISVYuRS5ERTcwOiBPdGhlciB8IFRoZSB3b21hbiBkZWxpdmVyZWQgYXQgYW5vdGhlciBsb2NhdGlvbiB0aGF0IGlzIG5vdCBhdCBob21lIG9yIGF0IGEgaGVhbHRoIGZhY2lsaXR5CiAqIEhJVi5HLkRFODogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuRy5ERTEyOiBWaXJhbCBsb2FkIHRlc3QgcmVzdWx0IHwgUmVzdWx0IGZyb20gdGhlIHZpcmFsIGxvYWQgdGVzdCBpbiBudW1iZXIgb2YgY29waWVzL21MCiAqIEhJVi5TUlYuREUxMjogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuU1JWLkRFMTM6IFZpcmFsIGxvYWQgdGVzdCByZXN1bHQgfCBSZXN1bHQgZnJvbSB0aGUgdmlyYWwgbG9hZCB0ZXN0IGluIG51bWJlciBvZiBjb3BpZXMvbUwKICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgdmlyYWwgc3VwcHJlc3Npb24gYXQgdGhlIHRpbWUgb2YgZGVsaXZlcnkgYW1vbmcgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuLgogKiAtIHJhdGlvbmFsZTog4oCiIFZpcmFsIHN1cHByZXNzaW9uIGF0IHRoZSB0aW1lIG9mIGRlbGl2ZXJ5IGlzIGEgc2VydmljZSBxdWFsaXR5IG1lYXN1cmUgYXQgYSBjcml0aWNhbCBwb2ludCBpbiB0aGUgdmVydGljYWwgdHJhbnNtaXNzaW9uIHJpc2sgcGVyaW9kLiB8IOKAosKgVHdvIGRpZmZlcmVudCBkZW5vbWluYXRvcnMgZ2l2ZSBpbmRpY2F0b3JzIHNpbWlsYXIgdG8gZ2VuZXJhbCBtZWFzdXJlcyBvZiB2aXJhbCBzdXBwcmVzc2lvbiBhbW9uZyBwZW9wbGUgbGl2aW5nIHdpdGggSElWOiBUaGUgcHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3IsIHRoYXQgaXMsIHRob3NlIG9uIEFSVCwgZGVsaXZlcmluZyBpbiBhIGZhY2lsaXR5IGFuZCBoYXZpbmcgYSB2aXJhbCBsb2FkIHRlc3QsIG1lYXN1cmVzIHRoZSB0aGlyZCAiOTUiIHRhcmdldC4gVGhlIHBvcHVsYXRpb24tYmFzZWQgZGVub21pbmF0b3IsIHRoYXQgaXMsIHZpcmFsIGxvYWQgYW1vbmcgYWxsIGVzdGltYXRlZCBwcmVnbmFudCB3b21lbiBsaXZpbmcgd2l0aCBISVYsIHJlZ2FyZGxlc3Mgb2YgQVJUIHN0YXR1cyBvciBBTkMvZmFjaWxpdHkgYXR0ZW5kYW5jZSwgbWVhc3VyZXMgcG9wdWxhdGlvbiB2aXJhbCBsb2FkIHN1cHByZXNzaW9uIChvZiBwcmVnbmFudCB3b21lbiBsaXZpbmcgd2l0aCBISVYpLgogKiAtIG1ldGhvZDogRm9yIHRoZSBudW1lcmF0b3I6ICB8IFBhdGllbnQgbW9uaXRvcmluZyB0b29scy9FTVJzIChmb3IgZXhhbXBsZSwgUE1UQ1QgcmVnaXN0ZXJzLCBwYXRpZW50IHJlY29yZHMpIHwgIHwgRm9yIHRoZSBkZW5vbWluYXRvcjogfCDigKLCoFBvcHVsYXRpb24tYmFzZWQgZGVub21pbmF0b3I6IG1vZGVsbGluZy1iYXNlZCBlc3RpbWF0ZXMgKGZvciBleGFtcGxlLCBTcGVjdHJ1bSBBSU0pIHwg4oCiwqBQcm9ncmFtbWUtYmFzZWQvc2VydmljZSBkZWxpdmVyeSBkZW5vbWluYXRvcjogcHJvZ3JhbW1lIHJlY29yZHMsIGxhYm91ciBhbmQgZGVsaXZlcnkgcmVnaXN0ZXJzL0VNUnMgfCBOb3RlOiBUaGlzIGluZGljYXRvciBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgd2l0aCBjb25zaWRlcmF0aW9uIG9mIHRoZSBWTCB0ZXN0aW5nIGNvdmVyYWdlIG9mIHByZWduYW50IHdvbWVuIGxpdmluZyB3aXRoIEhJViBhdCBkZWxpdmVyeS4gfCAgfCBUaGUgcmVjb21tZW5kZWQgcmVwb3J0aW5nIHBlcmlvZCBpcyAxMiBtb250aHMuCiAqIAogKiBTdWdnZXN0ZWQgU2NvcmluZyBNZXRob2Q6IHByb3BvcnRpb24gfCBodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NxZm1lYXN1cmVzL1N0cnVjdHVyZURlZmluaXRpb24vcHJvcG9ydGlvbi1tZWFzdXJlLWNxZm0KICovCgpsaWJyYXJ5IEhJVklORDM3TG9naWMKCi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBISVZDb21tb24gdmVyc2lvbiAnMC4wLjEnIGNhbGxlZCBISUMKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgV0hPQ29tbW9uIGNhbGxlZCBXQ29tCgppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKaW5jbHVkZSBISVZFbGVtZW50cyBjYWxsZWQgSEUKCi8vIEluZGljYXRvciBEZWZpbml0aW9uCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlPiBkZWZhdWx0IEludGVydmFsW0AyMDIzLTAxLTAxLCBAMjAyMy0wMS0zMF0KCmNvbnRleHQgUGF0aWVudAovKiBQb3B1bGF0aW9ucyAqLwoKLyoKICpJbml0aWFsIFBvcHVsYXRpb24KICovCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgdHJ1ZQoKLyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiBvbiBBUlQgZHVyaW5nIHByZWduYW5jeSBhbmQgZGVsaXZlcmluZyBhdCBhIGZhY2lsaXR5IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCB3aG8gd2VyZSB2aXJhbGx5IHN1cHByZXNzZWQgKDwxMDAwIGNvcGllcy9tTCkgYXQgZGVsaXZlcnkKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJQbGFjZSBvZiBkZWxpdmVyeSIgaXMgYSAnSGVhbHRoIGZhY2lsaXR5JyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGlzIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBpcyBvbiAiRGVsaXZlcnkgZGF0ZSIgQU5EICJWaXJhbCBsb2FkIHRlc3QgcmVzdWx0IiBMRVNTIFRIQU4gMTAwMCBjb3BpZXMvbUwKICovCgovL2hlYWx0aCBmYWNpbGl0eSBiaXJ0aApkZWZpbmUgIkZpcnN0IEhlYWx0aCBmYWNpbGl0eSI6CiAgKEZpcnN0KEhFLiJIZWFsdGggZmFjaWxpdHkiKSkKCmRlZmluZSAiTnVtZXJhdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogIGFuZCBISUUuIk9uIEFSVCBELkRFMzgiCiAgYW5kIEhJRS4iSGVhbHRoIGZhY2lsaXR5IgogIGFuZCBleGlzdHMoCiAgICBISUUuIlZpcmFsIGxvYWQgdGVzdCByZXN1bHQgRC5ERTM4NyIgVkwKICAgIHdpdGggSEUuInZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24iIFAgCiAgICBzdWNoIHRoYXQgVkwucGFydE9mLnJlZmVyZW5jZXMoUCkgYW5kIHN0YXJ0IG9mIFAucGVyZm9ybWVkLnRvSW50ZXJ2YWwoKSA9IHN0YXJ0IG9mICJGaXJzdCBIZWFsdGggZmFjaWxpdHkiLmVmZmVjdGl2ZS50b0ludGVydmFsKCkKICAgIHdoZXJlIFZMLnZhbHVlIDwgMTAwMAogICAgKQoKCi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIG9uIEFSVCBkdXJpbmcgcHJlZ25hbmN5IHdobyBkZWxpdmVyIGF0IGEgZmFjaWxpdHkgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCBoYWQgYSB2aXJhbCBsb2FkIHRlc3QgZHVyaW5nIGRlbGl2ZXJ5LCBvciB0aGUgZXN0aW1hdGVkIHRvdGFsIG51bWJlciBvZiBwcmVnbmFudCB3b21lbiBsaXZpbmcgd2l0aCBISVYKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJQbGFjZSBvZiBkZWxpdmVyeSIgaXMgYSAnSGVhbHRoIGZhY2lsaXR5JyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGlzIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBpcyBvbiAiRGVsaXZlcnkgZGF0ZSIgfCAgfCBBbHRlcm5hdGl2ZWx5OiAqRXN0aW1hdGVkIHRvdGFsIG51bWJlciBvZiBwcmVnbmFudCB3b21lbiBsaXZpbmcgd2l0aCBISVYKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogIGFuZCBISUUuIk9uIEFSVCBELkRFMzgiCiAgYW5kIEhJRS4iSGVhbHRoIGZhY2lsaXR5IgogIGFuZCBleGlzdHMoCiAgICBISUUuIlZpcmFsIGxvYWQgdGVzdCByZXN1bHQgRC5ERTM4NyIgVkwKICAgIHdpdGggSEUuInZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24iIFAgCiAgICBzdWNoIHRoYXQgVkwucGFydE9mLnJlZmVyZW5jZXMoUCkgYW5kIHN0YXJ0IG9mIFAucGVyZm9ybWVkLnRvSW50ZXJ2YWwoKSA9IHN0YXJ0IG9mICJGaXJzdCBIZWFsdGggZmFjaWxpdHkiLmVmZmVjdGl2ZS50b0ludGVydmFsKCkKICAgICkKCi8qIGVuZCBQb3B1bGF0aW9ucyAqLwoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgoKZGVmaW5lICJBZ2UgU3RyYXRpZmllciI6CglISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIDMiCgpkZWZpbmUgIkdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgoKZGVmaW5lICJUaW1pbmcgb2YgQVJUIGluaXRpYXRpb24iOgogIEhJRS4iVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uIgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiI6CiBISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIDMiCisgJzonICsgSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgorIEhJRS4iVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uIi5jb2RlIAo="/>
</content>
</Library>