WHO SMART Guidelines - HIV
0.3.0 - ci-build
WHO SMART Guidelines - HIV - Local Development build (v0.3.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Draft as of 2024-12-06 |
<Library xmlns="http://hl7.org/fhir">
<id value="HIVIND72Logic"/>
<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.72 Logic</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">HIVIND72Logic</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.3.0</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-HIVIND72Logic.html">HIV.IND.72 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://hl7.org/fhir/R4/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;">2024-12-06 22:28:12+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 people who tested positive for gonorrhoea during the reporting period</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.72 Logic
* Ref No: STI.5A
* Short Name: Gonorrhoea test positivity, HIV prevention services
*
* Definition: % of people who tested positive for gonorrhoea during the reporting period
*
* Numerator: Number of people attending HIV prevention services who tested positive for gonorrhoea during the reporting period
* Numerator Calculation: COUNT of clients with "Gonorrhoea test date" in the reporting period AND "Gonorrhoea test result"='Positive'
* Numerator Exclusions:
*
* Denominator: Number of people attending HIV prevention services tested for gonorrhoea (using a molecular test, culture or POC test) during the reporting period
* Denominator Calculation: COUNT of clients with "Gonorrhoea test date" on "Date accessed HIV prevention intervention" in the reporting period
* Denominator Exclusions:
*
* Disaggregations:
* • Gender (male, female, other*)
* • Age (15–19, 20–24, 25–29, 30–49, 50+ years)
* • Key populations (men who have sex with men, people living in prisons and other closed settings, people who inject drugs, sex workers, trans and gender diverse people)**
* • HIV status (HIV-positive, HIV-negative, unknown status)
* • HIV prevention intervention (for example, PrEP)
* • Diagnostic test used and anatomic site sampled
* • Cities and other administrative regions of epidemiologic importance
*
* Disaggregation Elements: Gender | Age | Key population member type | HIV status | HIV prevention intervention | Type of specimen | Neisseria gonorrhoeae test type
*
* Numerator and Denominator Elements:
* Date accessed HIV prevention intervention
* Gonorrhoea test date
* Gonorrhoea 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.A.DE18: Gender* | Gender of the client*
* HIV.A.DE19: Female | Client identifies as female
* HIV.A.DE20: Male | Client identifies as male
* HIV.A.DE21: Transgender male | Client identifies as transgender male
* HIV.A.DE22: Transgender female | Client identifies as transgender female
* HIV.A.DE23: Other | Additional category
* HIV.B.DE50: Key population member type* | The type of key population that the client is included in
* HIV.B.DE51: Sex worker | Client is a sex worker
* HIV.B.DE52: Men who have sex with men | Client is a man who has sex with men
* HIV.B.DE53: Trans and gender-diverse people | Client identifies as trans and gender-diverse
* HIV.B.DE54: People who inject drugs | Client is a person who injects drugs
* HIV.B.DE55: People living in prisons and other closed settings | Client lives in a prison or another closed setting
* 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.B.DE255: Gonorrhoea test date | Date of Gonorrhoea test
* HIV.B.DE256: Gonorrhoea test result | Result from Gonorrhoea test
* HIV.B.DE257: Positive | Test result is positive for Neisseria gonorrhoeae
* HIV.B.DE258: Negative | Test result is negative for Neisseria gonorrhoeae
* HIV.B.DE259: Inconclusive | Test result is inconclusive
* HIV.B.DE261: Type of specimen | Type of specimen to be collected
* HIV.B.DE262: Blood | Blood specimen to be collected
* HIV.B.DE263: Urine | Urine specimen to be collected
* HIV.B.DE264: Cervical or vaginal swab | Cervical or vaginal swab to be collected
* HIV.B.DE265: Urethral or penile swab | Urethral or penile swab to be collected
* HIV.B.DE266: Rectal swab | Rectal swab to be collected
* HIV.B.DE267: Other | Other specimen type to be collected
* HIV.B.DE276: Neisseria gonorrhoeae test type | Type of diagnostic test used for Neisseria gonorrhoeae
* HIV.B.DE277: NAAT | Nucleic Acid Amplification Test (NAAT) used
* HIV.B.DE278: POC Test | Point-of-care (POC) test used
* HIV.B.DE279: Culture | Culture test used
* HIV.B.DE280: Microscopy | Microscopy test used
* HIV.B.DE281: Other | Other type of test used
* HIV.D.DE807: Gonorrhoea test date | Date of Gonorrhoea test
* HIV.D.DE808: Gonorrhoea test result | Result from Gonorrhoea test
* HIV.D.DE809: Positive | Test result is positive for Neisseria gonorrhoeae
* HIV.D.DE810: Negative | Test result is negative for Neisseria gonorrhoeae
* HIV.D.DE811: Inconclusive | Test result is inconclusive
* HIV.D.DE813: Type of specimen | Type of specimen to be collected
* HIV.D.DE814: Blood | Blood specimen to be collected
* HIV.D.DE815: Urine | Urine specimen to be collected
* HIV.D.DE816: Cervical or vaginal swab | Cervical or vaginal swab to be collected
* HIV.D.DE817: Urethral or penile swab | Urethral or penile swab to be collected
* HIV.D.DE818: Rectal swab | Rectal swab to be collected
* HIV.D.DE819: Other | Other specimen type to be collected
* HIV.D.DE828: Neisseria gonorrhoeae test type | Type of diagnostic test used for Neisseria gonorrhoeae
* HIV.D.DE829: NAAT | Nucleic Acid Amplification Test (NAAT) used
* HIV.D.DE830: POC Test | Point-of-care (POC) test used
* HIV.D.DE831: Culture | Culture test used
* HIV.D.DE832: Microscopy | Microscopy test used
* HIV.D.DE833: Other | Other type of test used
* HIV.E.DE114: Key population member type* | The type of key population that the infant's mother is included in
* HIV.E.DE115: Sex worker | Infant's mother is a sex worker
* HIV.E.DE116: People who inject drugs | Infant's mother is a person who injects drugs
* HIV.E.DE117: Trans and gender-diverse people | Infant's mother identifies as trans and gender-diverse
* HIV.E.DE118: People living in prisons and other closed setting | Infant's mother is in a prison or closed setting
* HIV.PRV.DE2: HIV prevention intervention | HIV prevention intervention that client accessed
* HIV.PRV.DE3: PrEP service | Client accessed PrEP services
* HIV.PRV.DE4: OAMT | Client accessed opioid agonist maintenance treatment (OAMT) services
* HIV.PRV.DE5: NSP | Client accessed needle-syringe programme (NSP) services
* HIV.PRV.DE6: STI services | Client accessed sexually transmitted infection (STI) services
* HIV.PRV.DE7: VMMC | Client accessed voluntary medical male circumcision (VMMC) services
* HIV.PRV.DE8: Other | Client accessed other HIV prevention services
* HIV.PRV.DE10: Date accessed HIV prevention intervention | Date the client accessed HIV prevention intervention
*
* Additional Context
* - what it measures: A: % of people attending HIV prevention services who were tested for gonorrhoea and | had a positive test result during the reporting period | B: % of people living with HIV who were tested for gonorrhoea and had a positive test result during the reporting period
* - rationale: • Gonorrhoea test positivity can be used to highlight areas within a country that require additional support and provide early warning of potential changes in HIV and sexually transmitted infection transmission in the general population. | • Gonorrhoea test positivity is important information for generating national, regional and global incidence and prevalence estimates for gonorrhoea. | • Data on gonorrhoea test positivity are important for understanding the challenges imposed by increasing resistance to currently recommended treatment options.
* - method: Individual-level data obtained from programme records. | | If individual-level data are not available, the indicator can be reported using aggregate programme data.
*
* Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
*/
/*
* Profiles:
* - HivGonorrhoeaTest
* - HivStatusObservation
* - HivStatusCondition
* - HivPreventionServices
*/
library HIVIND72Logic
// 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 HIVElements called HE
include HIVIndicatorElements called HIE
include HIVConfig called Config
// 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 people attending HIV prevention services who tested positive for gonorrhoea during the reporting period
* Calculation: COUNT of clients with "Gonorrhoea test date" in the reporting period AND "Gonorrhoea test result"='Positive'
*/
define "Numerator":
exists(HIE."Positive B.DE257")
/**
* Denominator
*
* Definition: Number of people attending HIV prevention services tested for gonorrhoea (using a molecular test, culture or POC test) during the reporting period
* Calculation: COUNT of clients with "Gonorrhoea test date" on "Date accessed HIV prevention intervention" in the reporting period
*/
define "Denominator":
exists(HE."Gonorrhoea test date B.DE255" d
where d during "Measurement Period"
and exists (HE."Date accessed HIV prevention intervention" t where t = d))
/* end Populations */
/*
* Disaggregators
*/
define "Administrative Gender Stratifier":
HIE."By Administrative Gender Stratifier"
define "Age Stratifier":
HIE."By Age Stratifier 2"
define "Geographic Region Stratifier":
HIE."By Geographic Region Stratifier"
define "patientGroups Stratifier":
HIE."patientGroups"
define "HIV prevention intervention":
HIE."HIV prevention intervention"
define "HIV Status":
HIE."HIV Status Stratifier"
define "Stratification":
HIE."By Administrative Gender Stratifier".code
+ ':' + HIE."By Age Stratifier 2"
+ ':' + HIE."By Geographic Region Stratifier"
+ Combine(HIE.patientGroups, ':')
+ Combine(HIE."HIV prevention intervention", ':')
+ ':' + HIE."HIV Status Stratifier".code
//need to add Diagnostic test used and anatomic site sampled </code></pre></td></tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr><th><b>Content: </b> application/elm+xml</th></tr>
<tr><td><pre><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/HIVIND72Logic"/>
<version value="0.3.0"/>
<name value="HIVIND72Logic"/>
<title value="HIV.IND.72 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="2024-12-06T22:28:12+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description
value="% of people who tested positive for gonorrhoea during the reporting period"/>
<content>
<contentType value="text/cql"/>
<data
value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNzIgTG9naWMKICogUmVmIE5vOiBTVEkuNUEKICogU2hvcnQgTmFtZTogR29ub3JyaG9lYSB0ZXN0IHBvc2l0aXZpdHksIEhJViBwcmV2ZW50aW9uIHNlcnZpY2VzCiAqCiAqIERlZmluaXRpb246ICUgb2YgcGVvcGxlIHdobyB0ZXN0ZWQgcG9zaXRpdmUgZm9yIGdvbm9ycmhvZWEgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgd2hvIHRlc3RlZCBwb3NpdGl2ZSBmb3IgZ29ub3JyaG9lYSBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkdvbm9ycmhvZWEgdGVzdCBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgIkdvbm9ycmhvZWEgdGVzdCByZXN1bHQiPSdQb3NpdGl2ZScKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogTnVtYmVyIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgdGVzdGVkIGZvciBnb25vcnJob2VhICh1c2luZyBhIG1vbGVjdWxhciB0ZXN0LCBjdWx0dXJlIG9yIFBPQyB0ZXN0KSBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiR29ub3JyaG9lYSB0ZXN0IGRhdGUiIG9uICJEYXRlIGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QKICogRGVub21pbmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERpc2FnZ3JlZ2F0aW9uczoKICog4oCiwqBHZW5kZXIgKG1hbGUsIGZlbWFsZSwgb3RoZXIqKSAKICogIOKAosKgQWdlICgxNeKAkzE5LCAyMOKAkzI0LCAyNeKAkzI5LCAzMOKAkzQ5LCA1MCsgeWVhcnMpIAogKiAg4oCiwqBLZXkgcG9wdWxhdGlvbnMgKG1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4sIHBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzLCBwZW9wbGUgd2hvIGluamVjdCBkcnVncywgc2V4IHdvcmtlcnMsIHRyYW5zIGFuZCBnZW5kZXIgZGl2ZXJzZSBwZW9wbGUpKiogCiAqICDigKLCoEhJViBzdGF0dXMgKEhJVi1wb3NpdGl2ZSwgSElWLW5lZ2F0aXZlLCB1bmtub3duIHN0YXR1cykgCiAqICDigKLCoEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiAoZm9yIGV4YW1wbGUsIFByRVApIAogKiAg4oCiwqBEaWFnbm9zdGljIHRlc3QgdXNlZCBhbmQgYW5hdG9taWMgc2l0ZSBzYW1wbGVkIAogKiAg4oCiwqBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBHZW5kZXIgfCBBZ2UgfCBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSB8IEhJViBzdGF0dXMgfCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gfCBUeXBlIG9mIHNwZWNpbWVuIHwgTmVpc3NlcmlhIGdvbm9ycmhvZWFlIHRlc3QgdHlwZQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBEYXRlIGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiAKICogIEdvbm9ycmhvZWEgdGVzdCBkYXRlIAogKiAgR29ub3JyaG9lYSB0ZXN0IHJlc3VsdAogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkEuREUxNzogQWdlIHwgQ2FsY3VsYXRlZCBhZ2UgKG51bWJlciBvZiB5ZWFycykgb2YgdGhlIGNsaWVudCBiYXNlZCBvbiBkYXRlIG9mIGJpcnRoCiAqIEhJVi5BLkRFMTg6IEdlbmRlciogfCBHZW5kZXIgb2YgdGhlIGNsaWVudCoKICogSElWLkEuREUxOTogRmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgZmVtYWxlCiAqIEhJVi5BLkRFMjA6IE1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBtYWxlCiAqIEhJVi5BLkRFMjE6IFRyYW5zZ2VuZGVyIG1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBtYWxlCiAqIEhJVi5BLkRFMjI6IFRyYW5zZ2VuZGVyIGZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIGZlbWFsZQogKiBISVYuQS5ERTIzOiBPdGhlciB8IEFkZGl0aW9uYWwgY2F0ZWdvcnkKICogSElWLkIuREU1MDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgY2xpZW50IGlzIGluY2x1ZGVkIGluCiAqIEhJVi5CLkRFNTE6IFNleCB3b3JrZXIgfCBDbGllbnQgaXMgYSBzZXggd29ya2VyCiAqIEhJVi5CLkRFNTI6IE1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4gfCBDbGllbnQgaXMgYSBtYW4gd2hvIGhhcyBzZXggd2l0aCBtZW4KICogSElWLkIuREU1MzogVHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlIHBlb3BsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZQogKiBISVYuQi5ERTU0OiBQZW9wbGUgd2hvIGluamVjdCBkcnVncyB8IENsaWVudCBpcyBhIHBlcnNvbiB3aG8gaW5qZWN0cyBkcnVncwogKiBISVYuQi5ERTU1OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncyB8IENsaWVudCBsaXZlcyBpbiBhIHByaXNvbiBvciBhbm90aGVyIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5CLkRFMTE1OiBISVYgc3RhdHVzIHwgSElWIHN0YXR1cyByZXBvcnRlZCBhZnRlciBhcHBseWluZyB0aGUgbmF0aW9uYWwgSElWIHRlc3RpbmcgYWxnb3JpdGhtLiBObyBzaW5nbGUgSElWIHRlc3QgY2FuIHByb3ZpZGUgYW4gSElWLXBvc2l0aXZlIGRpYWdub3Npcy4KICogSElWLkIuREUxMTY6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTc6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCBpcyBISVYtbmVnYXRpdmUKICogSElWLkIuREUxMTg6IFVua25vd24gfCBDbGllbnQgaGFzIHVua25vd24gSElWIHN0YXR1cwogKiBISVYuQi5ERTI1NTogR29ub3JyaG9lYSB0ZXN0IGRhdGUgfCBEYXRlIG9mIEdvbm9ycmhvZWEgdGVzdAogKiBISVYuQi5ERTI1NjogR29ub3JyaG9lYSB0ZXN0IHJlc3VsdCB8IFJlc3VsdCBmcm9tIEdvbm9ycmhvZWEgdGVzdAogKiBISVYuQi5ERTI1NzogUG9zaXRpdmUgfCBUZXN0IHJlc3VsdCBpcyBwb3NpdGl2ZSBmb3IgTmVpc3NlcmlhIGdvbm9ycmhvZWFlCiAqIEhJVi5CLkRFMjU4OiBOZWdhdGl2ZSB8IFRlc3QgcmVzdWx0IGlzIG5lZ2F0aXZlIGZvciBOZWlzc2VyaWEgZ29ub3JyaG9lYWUKICogSElWLkIuREUyNTk6IEluY29uY2x1c2l2ZSB8IFRlc3QgcmVzdWx0IGlzIGluY29uY2x1c2l2ZQogKiBISVYuQi5ERTI2MTogVHlwZSBvZiBzcGVjaW1lbiB8IFR5cGUgb2Ygc3BlY2ltZW4gdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5CLkRFMjYyOiBCbG9vZCB8IEJsb29kIHNwZWNpbWVuIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuQi5ERTI2MzogVXJpbmUgfCBVcmluZSBzcGVjaW1lbiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkIuREUyNjQ6IENlcnZpY2FsIG9yIHZhZ2luYWwgc3dhYiB8IENlcnZpY2FsIG9yIHZhZ2luYWwgc3dhYiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkIuREUyNjU6IFVyZXRocmFsIG9yIHBlbmlsZSBzd2FiIHwgVXJldGhyYWwgb3IgcGVuaWxlIHN3YWIgdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5CLkRFMjY2OiBSZWN0YWwgc3dhYiB8IFJlY3RhbCBzd2FiIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuQi5ERTI2NzogT3RoZXIgfCBPdGhlciBzcGVjaW1lbiB0eXBlIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuQi5ERTI3NjogTmVpc3NlcmlhIGdvbm9ycmhvZWFlIHRlc3QgdHlwZSB8IFR5cGUgb2YgZGlhZ25vc3RpYyB0ZXN0IHVzZWQgZm9yIE5laXNzZXJpYSBnb25vcnJob2VhZQogKiBISVYuQi5ERTI3NzogTkFBVCB8IE51Y2xlaWMgQWNpZCBBbXBsaWZpY2F0aW9uIFRlc3QgKE5BQVQpIHVzZWQKICogSElWLkIuREUyNzg6IFBPQyBUZXN0IHwgUG9pbnQtb2YtY2FyZSAoUE9DKSB0ZXN0IHVzZWQKICogSElWLkIuREUyNzk6IEN1bHR1cmUgfCBDdWx0dXJlIHRlc3QgdXNlZAogKiBISVYuQi5ERTI4MDogTWljcm9zY29weSB8IE1pY3Jvc2NvcHkgdGVzdCB1c2VkCiAqIEhJVi5CLkRFMjgxOiBPdGhlciB8IE90aGVyIHR5cGUgb2YgdGVzdCB1c2VkCiAqIEhJVi5ELkRFODA3OiBHb25vcnJob2VhIHRlc3QgZGF0ZSB8IERhdGUgb2YgR29ub3JyaG9lYSB0ZXN0CiAqIEhJVi5ELkRFODA4OiBHb25vcnJob2VhIHRlc3QgcmVzdWx0IHwgUmVzdWx0IGZyb20gR29ub3JyaG9lYSB0ZXN0CiAqIEhJVi5ELkRFODA5OiBQb3NpdGl2ZSB8IFRlc3QgcmVzdWx0IGlzIHBvc2l0aXZlIGZvciBOZWlzc2VyaWEgZ29ub3JyaG9lYWUKICogSElWLkQuREU4MTA6IE5lZ2F0aXZlIHwgVGVzdCByZXN1bHQgaXMgbmVnYXRpdmUgZm9yIE5laXNzZXJpYSBnb25vcnJob2VhZQogKiBISVYuRC5ERTgxMTogSW5jb25jbHVzaXZlIHwgVGVzdCByZXN1bHQgaXMgaW5jb25jbHVzaXZlCiAqIEhJVi5ELkRFODEzOiBUeXBlIG9mIHNwZWNpbWVuIHwgVHlwZSBvZiBzcGVjaW1lbiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkQuREU4MTQ6IEJsb29kIHwgQmxvb2Qgc3BlY2ltZW4gdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5ELkRFODE1OiBVcmluZSB8IFVyaW5lIHNwZWNpbWVuIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuRC5ERTgxNjogQ2VydmljYWwgb3IgdmFnaW5hbCBzd2FiIHwgQ2VydmljYWwgb3IgdmFnaW5hbCBzd2FiIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuRC5ERTgxNzogVXJldGhyYWwgb3IgcGVuaWxlIHN3YWIgfCBVcmV0aHJhbCBvciBwZW5pbGUgc3dhYiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkQuREU4MTg6IFJlY3RhbCBzd2FiIHwgUmVjdGFsIHN3YWIgdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5ELkRFODE5OiBPdGhlciB8IE90aGVyIHNwZWNpbWVuIHR5cGUgdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5ELkRFODI4OiBOZWlzc2VyaWEgZ29ub3JyaG9lYWUgdGVzdCB0eXBlIHwgVHlwZSBvZiBkaWFnbm9zdGljIHRlc3QgdXNlZCBmb3IgTmVpc3NlcmlhIGdvbm9ycmhvZWFlCiAqIEhJVi5ELkRFODI5OiBOQUFUIHwgTnVjbGVpYyBBY2lkIEFtcGxpZmljYXRpb24gVGVzdCAoTkFBVCkgdXNlZAogKiBISVYuRC5ERTgzMDogUE9DIFRlc3QgfCBQb2ludC1vZi1jYXJlIChQT0MpIHRlc3QgdXNlZAogKiBISVYuRC5ERTgzMTogQ3VsdHVyZSB8IEN1bHR1cmUgdGVzdCB1c2VkCiAqIEhJVi5ELkRFODMyOiBNaWNyb3Njb3B5IHwgTWljcm9zY29weSB0ZXN0IHVzZWQKICogSElWLkQuREU4MzM6IE90aGVyIHwgT3RoZXIgdHlwZSBvZiB0ZXN0IHVzZWQKICogSElWLkUuREUxMTQ6IEtleSBwb3B1bGF0aW9uIG1lbWJlciB0eXBlKiB8IFRoZSB0eXBlIG9mIGtleSBwb3B1bGF0aW9uIHRoYXQgdGhlIGluZmFudCdzIG1vdGhlciBpcyBpbmNsdWRlZCBpbgogKiBISVYuRS5ERTExNTogU2V4IHdvcmtlciB8IEluZmFudCdzIG1vdGhlciBpcyBhIHNleCB3b3JrZXIKICogSElWLkUuREUxMTY6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5FLkRFMTE3OiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgSW5mYW50J3MgbW90aGVyIGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5FLkRFMTE4OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5nIHwgSW5mYW50J3MgbW90aGVyIGlzIGluIGEgcHJpc29uIG9yIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5QUlYuREUyOiBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gfCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gdGhhdCBjbGllbnQgYWNjZXNzZWQKICogSElWLlBSVi5ERTM6IFByRVAgc2VydmljZSB8IENsaWVudCBhY2Nlc3NlZCBQckVQIHNlcnZpY2VzCiAqIEhJVi5QUlYuREU0OiBPQU1UIHwgQ2xpZW50IGFjY2Vzc2VkIG9waW9pZCBhZ29uaXN0IG1haW50ZW5hbmNlIHRyZWF0bWVudCAoT0FNVCkgc2VydmljZXMKICogSElWLlBSVi5ERTU6IE5TUCB8IENsaWVudCBhY2Nlc3NlZCBuZWVkbGUtc3lyaW5nZSBwcm9ncmFtbWUgKE5TUCkgc2VydmljZXMKICogSElWLlBSVi5ERTY6IFNUSSBzZXJ2aWNlcyB8IENsaWVudCBhY2Nlc3NlZCBzZXh1YWxseSB0cmFuc21pdHRlZCBpbmZlY3Rpb24gKFNUSSkgc2VydmljZXMKICogSElWLlBSVi5ERTc6IFZNTUMgfCBDbGllbnQgYWNjZXNzZWQgdm9sdW50YXJ5IG1lZGljYWwgbWFsZSBjaXJjdW1jaXNpb24gKFZNTUMpIHNlcnZpY2VzCiAqIEhJVi5QUlYuREU4OiBPdGhlciB8IENsaWVudCBhY2Nlc3NlZCBvdGhlciBISVYgcHJldmVudGlvbiBzZXJ2aWNlcwogKiBISVYuUFJWLkRFMTA6IERhdGUgYWNjZXNzZWQgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIHwgRGF0ZSB0aGUgY2xpZW50IGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbgogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBBOiAlIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgd2hvIHdlcmUgdGVzdGVkIGZvciBnb25vcnJob2VhIGFuZCB8IGhhZCBhIHBvc2l0aXZlIHRlc3QgcmVzdWx0IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCB8IEI6ICUgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG8gd2VyZSB0ZXN0ZWQgZm9yIGdvbm9ycmhvZWEgYW5kIGhhZCBhIHBvc2l0aXZlIHRlc3QgcmVzdWx0IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiAtIHJhdGlvbmFsZTog4oCiwqBHb25vcnJob2VhIHRlc3QgcG9zaXRpdml0eSBjYW4gYmUgdXNlZCB0byBoaWdobGlnaHQgYXJlYXMgd2l0aGluIGEgY291bnRyeSB0aGF0IHJlcXVpcmUgYWRkaXRpb25hbCBzdXBwb3J0IGFuZCBwcm92aWRlIGVhcmx5IHdhcm5pbmcgb2YgcG90ZW50aWFsIGNoYW5nZXMgaW4gSElWIGFuZCBzZXh1YWxseSB0cmFuc21pdHRlZCBpbmZlY3Rpb24gdHJhbnNtaXNzaW9uIGluIHRoZSBnZW5lcmFsIHBvcHVsYXRpb24uIHwg4oCiwqBHb25vcnJob2VhIHRlc3QgcG9zaXRpdml0eSBpcyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gZm9yIGdlbmVyYXRpbmcgbmF0aW9uYWwsIHJlZ2lvbmFsIGFuZCBnbG9iYWwgaW5jaWRlbmNlIGFuZCBwcmV2YWxlbmNlIGVzdGltYXRlcyBmb3IgZ29ub3JyaG9lYS4gfCDigKIgRGF0YSBvbiBnb25vcnJob2VhIHRlc3QgcG9zaXRpdml0eSBhcmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjaGFsbGVuZ2VzIGltcG9zZWQgYnkgaW5jcmVhc2luZyByZXNpc3RhbmNlIHRvIGN1cnJlbnRseSByZWNvbW1lbmRlZCB0cmVhdG1lbnQgb3B0aW9ucy4KICogLSBtZXRob2Q6IEluZGl2aWR1YWwtbGV2ZWwgZGF0YSBvYnRhaW5lZCBmcm9tIHByb2dyYW1tZSByZWNvcmRzLiAgIHwgIHwgSWYgaW5kaXZpZHVhbC1sZXZlbCBkYXRhIGFyZSBub3QgYXZhaWxhYmxlLCB0aGUgaW5kaWNhdG9yIGNhbiBiZSByZXBvcnRlZCB1c2luZyBhZ2dyZWdhdGUgcHJvZ3JhbW1lIGRhdGEuCiAqIAogKiBTdWdnZXN0ZWQgU2NvcmluZyBNZXRob2Q6IHByb3BvcnRpb24gfCBodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NxZm1lYXN1cmVzL1N0cnVjdHVyZURlZmluaXRpb24vcHJvcG9ydGlvbi1tZWFzdXJlLWNxZm0KICovCgogLyoKICAqIFByb2ZpbGVzOgogICogLSBIaXZHb25vcnJob2VhVGVzdAogICogLSBIaXZTdGF0dXNPYnNlcnZhdGlvbgogICogLSBIaXZTdGF0dXNDb25kaXRpb24KICAqIC0gSGl2UHJldmVudGlvblNlcnZpY2VzCiAgKi8gCgpsaWJyYXJ5IEhJVklORDcyTG9naWMKCi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBISVZDb21tb24gdmVyc2lvbiAnMC4wLjEnIGNhbGxlZCBISUMKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgV0hPQ29tbW9uIGNhbGxlZCBXQ29tCmluY2x1ZGUgSElWRWxlbWVudHMgY2FsbGVkIEhFCmluY2x1ZGUgSElWSW5kaWNhdG9yRWxlbWVudHMgY2FsbGVkIEhJRQppbmNsdWRlIEhJVkNvbmZpZyBjYWxsZWQgQ29uZmlnCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZT4gZGVmYXVsdCBJbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdCgpjb250ZXh0IFBhdGllbnQKLyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIHRydWUKCi8qKgogKiBOdW1lcmF0b3IKICogCiAqIERlZmluaXRpb246IE51bWJlciBvZiBwZW9wbGUgYXR0ZW5kaW5nIEhJViBwcmV2ZW50aW9uIHNlcnZpY2VzIHdobyB0ZXN0ZWQgcG9zaXRpdmUgZm9yIGdvbm9ycmhvZWEgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkdvbm9ycmhvZWEgdGVzdCBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgIkdvbm9ycmhvZWEgdGVzdCByZXN1bHQiPSdQb3NpdGl2ZScKICovCgpkZWZpbmUgIk51bWVyYXRvciI6CiAgZXhpc3RzKEhJRS4iUG9zaXRpdmUgQi5ERTI1NyIpCgoKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IE51bWJlciBvZiBwZW9wbGUgYXR0ZW5kaW5nIEhJViBwcmV2ZW50aW9uIHNlcnZpY2VzIHRlc3RlZCBmb3IgZ29ub3JyaG9lYSAodXNpbmcgYSBtb2xlY3VsYXIgdGVzdCwgY3VsdHVyZSBvciBQT0MgdGVzdCkgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkdvbm9ycmhvZWEgdGVzdCBkYXRlIiBvbiAiRGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqLwoKZGVmaW5lICJEZW5vbWluYXRvciI6CiAgZXhpc3RzKEhFLiJHb25vcnJob2VhIHRlc3QgZGF0ZSBCLkRFMjU1IiBkCiAgd2hlcmUgZCBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICBhbmQgZXhpc3RzIChIRS4iRGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iIHQgd2hlcmUgdCA9IGQpKQogICAgCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCi8qCiAqIERpc2FnZ3JlZ2F0b3JzCiAqLwoKZGVmaW5lICJBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciI6CglISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIgoKZGVmaW5lICJBZ2UgU3RyYXRpZmllciI6CglISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIDIiCgpkZWZpbmUgIkdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgoKZGVmaW5lICJwYXRpZW50R3JvdXBzIFN0cmF0aWZpZXIiOgoJSElFLiJwYXRpZW50R3JvdXBzIgoKZGVmaW5lICJISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iOgoJSElFLiJISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iCgpkZWZpbmUgIkhJViBTdGF0dXMiOgogIEhJRS4iSElWIFN0YXR1cyBTdHJhdGlmaWVyIgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiI6CiBISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIi5jb2RlIAogICsgJzonICsgSElFLiJCeSBBZ2UgU3RyYXRpZmllciAyIgorICc6JyArIEhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKKyBDb21iaW5lKEhJRS5wYXRpZW50R3JvdXBzLCAnOicpCisgQ29tYmluZShISUUuIkhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiIsICc6JykKKyAnOicgKyBISUUuIkhJViBTdGF0dXMgU3RyYXRpZmllciIuY29kZSAKCi8vbmVlZCB0byBhZGQgRGlhZ25vc3RpYyB0ZXN0IHVzZWQgYW5kIGFuYXRvbWljIHNpdGUgc2FtcGxlZCA="/>
</content>
<content>
<contentType value="application/elm+xml"/>
</content>
</Library>