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

: HIV.IND.12 Logic - XML Representation

Draft as of 2025-02-07

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="HIVIND12Logic"/>
  <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.12 Logic</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">HIVIND12Logic</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-HIVIND12Logic.html">HIV.IND.12 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 person-years of follow-up (PYFU) on OAMT among opioid dependent people</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.12 Logic
 * Ref No: PRV.12
 * Short Name: Total person-years on OAMT
 *
 * Definition: % of person-years of follow-up (PYFU) on OAMT among opioid dependent people
 *
 * Numerator: Total PYFU on OAMT during defined reporting period. | Calculated from the sum of the time on OAMT of each OAMT recipient during the reporting period.
 * Numerator Calculation: SUM of [DIFFERENCE in MIN(&quot;Date OAMT initiated&quot;, &quot;Reporting period start date&quot;) and MAX(&quot;Date of loss to follow-up or OAMT stopped&quot;, &quot;Reporting period end date&quot;)] for all clients with &quot;Medications prescribed&quot; IN 'Methadone', 'Buprenorphine'
 * Numerator Exclusions: 
 *
 * Denominator: a) Programme/service provider level: estimated PYFU for all opioid dependent people accessing service during defined reporting period | b) Population level: estimated PYFU for total population of opioid dependent people in relevant geographic area during defined reporting period
 * Denominator Calculation: Service level: Not calculated in DAK |  | Population denominator:  | *Estimated PYFU for all opioid-dependent people accessing service during defined reporting period |  | Note: Can be reported only as numerator; by population or service level if these denominator estimates available.
 * Denominator Exclusions: 
 *
 * Disaggregations:
 * • Gender (female, male, other*) 
 *  • Age (15–19, 20–24, 25–49, 50+ years) 
 *  • Provider type (key population-led or community-led organization, public sector provider, other entities such as private for-profit and not-for-profit organizations, including faith-based, international, nongovernmental) 
 *  • Setting: facility-based service (including hospitals, health clinics, general practice offices, etc.) or community-based service (including drop-in centres, community service delivery points, mobile clinics or vans, outreach teams, community support groups, etc.) 
 *  • Cities and other administrative regions of epidemiologic importance
 *
 * Disaggregation Elements: Gender | Age
 *
 * Numerator and Denominator Elements:
 * Date OAMT initiated 
 *  Date of loss to follow-up or OAMT stopped 
 *  Medications prescribed 
 *  Reporting period end date 
 *  Reporting period start date
 *
 * 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.C.DE75: Medications prescribed | Medications the client was prescribed
 * HIV.C.DE76: PrEP for HIV prevention | Client was prescribed pre-exposure prophylaxis (PrEP) for HIV prevention
 * HIV.C.DE77: PEP for HIV prevention | Client was prescribed post-exposure prophylaxis (PEP) for HIV prevention
 * HIV.C.DE78: Other | Client was prescribed other medications
 * HIV.D.DE457: Medications prescribed | Name or regimen code of all other medications prescribed during the visit
 * HIV.PRV.DE17: Date OAMT initiated | Date client initiated opioid agonist maintenance treatment (OAMT)
 * HIV.PRV.DE25: Date of loss to follow-up or OAMT stopped | Date of loss to follow-up or opioid agonist maintenance treatment (OAMT) stopped
 * HIV.Config.DE20: Reporting period end date | End date of the reporting period
 * HIV.Config.DE21: Reporting period start date | Start date of the reporting period
 *
 * Additional Context
 * - what it measures: Measure of the proportion of person time in which individuals who are opioid dependent are covered by OAMT.
 * - rationale: Evidence demonstrates that HIV risk is reduced among individuals who are opioid dependent during periods when receiving OAMT.
 * - method: Individual-level data obtained from programme records.
 * 
 * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
 */

library HIVIND12Logic

// 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

// Indicator Definition
parameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt; default Interval[@2023-01-01, @2023-01-30]

context Patient
/* Populations */

/*
 *Initial Population
 */

define &quot;Initial Population&quot;:
  true

/**
 * Numerator
 * 
 * Definition: Total PYFU on OAMT during defined reporting period. | Calculated from the sum of the time on OAMT of each OAMT recipient during the reporting period.
 * Calculation: SUM of [DIFFERENCE in MIN(&quot;Date OAMT initiated&quot;, &quot;Reporting period start date&quot;) and MAX(&quot;Date of loss to follow-up or OAMT stopped&quot;, &quot;Reporting period end date&quot;)] for all clients with &quot;Medications prescribed&quot; IN 'Methadone', 'Buprenorphine'
 */

define &quot;Measure Population&quot;:
  exists(HIE.&quot;buprenorphine_prescribed at date&quot;) or exists(HIE.&quot;methadone_prescribed at date&quot;)


define &quot;Measure Observation&quot;:
  (
    difference in days between
    Min(
      {
        ToDate(First(HIE.&quot;OAMT start&quot;)), 
        ToDate(start of &quot;Measurement Period&quot;)
      }
    )

    and ToDate(start of &quot;Measurement Period&quot;)
  )
  +
  (
    difference in days between end of &quot;Measurement Period&quot;
    and Coalesce(
        ToDate(First(HIE.&quot;OAMT end&quot;)), 
        end of &quot;Measurement Period&quot;
      )
  )
  
/**
 * Denominator
 *
 * Definition: a) Programme/service provider level: estimated PYFU for all opioid dependent people accessing service during defined reporting period | b) Population level: estimated PYFU for total population of opioid dependent people in relevant geographic area during defined reporting period
 * Calculation: Service level: Not calculated in DAK |  | Population denominator:  | *Estimated PYFU for all opioid-dependent people accessing service during defined reporting period |  | Note: Can be reported only as numerator; by population or service level if these denominator estimates available.
 */

/* end Populations */

</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/HIVIND12Logic"/>
  <version value="0.4.3"/>
  <name value="HIVIND12Logic"/>
  <title value="HIV.IND.12 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 person-years of follow-up (PYFU) on OAMT among opioid dependent people"/>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMTIgTG9naWMKICogUmVmIE5vOiBQUlYuMTIKICogU2hvcnQgTmFtZTogVG90YWwgcGVyc29uLXllYXJzIG9uIE9BTVQKICoKICogRGVmaW5pdGlvbjogJSBvZiBwZXJzb24teWVhcnMgb2YgZm9sbG93LXVwIChQWUZVKSBvbiBPQU1UIGFtb25nIG9waW9pZCBkZXBlbmRlbnQgcGVvcGxlCiAqCiAqIE51bWVyYXRvcjogVG90YWwgUFlGVSBvbiBPQU1UIGR1cmluZyBkZWZpbmVkIHJlcG9ydGluZyBwZXJpb2QuIHwgQ2FsY3VsYXRlZCBmcm9tIHRoZSBzdW0gb2YgdGhlIHRpbWUgb24gT0FNVCBvZiBlYWNoIE9BTVQgcmVjaXBpZW50IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZC4KICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBTVU0gb2YgW0RJRkZFUkVOQ0UgaW4gTUlOKCJEYXRlIE9BTVQgaW5pdGlhdGVkIiwgIlJlcG9ydGluZyBwZXJpb2Qgc3RhcnQgZGF0ZSIpIGFuZCBNQVgoIkRhdGUgb2YgbG9zcyB0byBmb2xsb3ctdXAgb3IgT0FNVCBzdG9wcGVkIiwgIlJlcG9ydGluZyBwZXJpb2QgZW5kIGRhdGUiKV0gZm9yIGFsbCBjbGllbnRzIHdpdGggIk1lZGljYXRpb25zIHByZXNjcmliZWQiIElOICdNZXRoYWRvbmUnLCAnQnVwcmVub3JwaGluZScKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogYSkgUHJvZ3JhbW1lL3NlcnZpY2UgcHJvdmlkZXIgbGV2ZWw6IGVzdGltYXRlZCBQWUZVIGZvciBhbGwgb3Bpb2lkIGRlcGVuZGVudCBwZW9wbGUgYWNjZXNzaW5nIHNlcnZpY2UgZHVyaW5nIGRlZmluZWQgcmVwb3J0aW5nIHBlcmlvZCB8IGIpIFBvcHVsYXRpb24gbGV2ZWw6IGVzdGltYXRlZCBQWUZVIGZvciB0b3RhbCBwb3B1bGF0aW9uIG9mIG9waW9pZCBkZXBlbmRlbnQgcGVvcGxlIGluIHJlbGV2YW50IGdlb2dyYXBoaWMgYXJlYSBkdXJpbmcgZGVmaW5lZCByZXBvcnRpbmcgcGVyaW9kCiAqIERlbm9taW5hdG9yIENhbGN1bGF0aW9uOiBTZXJ2aWNlIGxldmVsOiBOb3QgY2FsY3VsYXRlZCBpbiBEQUsgfCAgfCBQb3B1bGF0aW9uIGRlbm9taW5hdG9yOiAgfCAqRXN0aW1hdGVkIFBZRlUgZm9yIGFsbCBvcGlvaWQtZGVwZW5kZW50IHBlb3BsZSBhY2Nlc3Npbmcgc2VydmljZSBkdXJpbmcgZGVmaW5lZCByZXBvcnRpbmcgcGVyaW9kIHwgIHwgTm90ZTogQ2FuIGJlIHJlcG9ydGVkIG9ubHkgYXMgbnVtZXJhdG9yOyBieSBwb3B1bGF0aW9uIG9yIHNlcnZpY2UgbGV2ZWwgaWYgdGhlc2UgZGVub21pbmF0b3IgZXN0aW1hdGVzIGF2YWlsYWJsZS4KICogRGVub21pbmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERpc2FnZ3JlZ2F0aW9uczoKICog4oCiIEdlbmRlciAoZmVtYWxlLCBtYWxlLCBvdGhlciopIAogKiAg4oCiIEFnZSAoMTXigJMxOSwgMjDigJMyNCwgMjXigJM0OSwgNTArIHllYXJzKSAKICogIOKAoiBQcm92aWRlciB0eXBlIChrZXkgcG9wdWxhdGlvbi1sZWQgb3IgY29tbXVuaXR5LWxlZCBvcmdhbml6YXRpb24sIHB1YmxpYyBzZWN0b3IgcHJvdmlkZXIsIG90aGVyIGVudGl0aWVzIHN1Y2ggYXMgcHJpdmF0ZSBmb3ItcHJvZml0IGFuZCBub3QtZm9yLXByb2ZpdCBvcmdhbml6YXRpb25zLCBpbmNsdWRpbmcgZmFpdGgtYmFzZWQsIGludGVybmF0aW9uYWwsIG5vbmdvdmVybm1lbnRhbCkgCiAqICDigKIgU2V0dGluZzogZmFjaWxpdHktYmFzZWQgc2VydmljZSAoaW5jbHVkaW5nIGhvc3BpdGFscywgaGVhbHRoIGNsaW5pY3MsIGdlbmVyYWwgcHJhY3RpY2Ugb2ZmaWNlcywgZXRjLikgb3IgY29tbXVuaXR5LWJhc2VkIHNlcnZpY2UgKGluY2x1ZGluZyBkcm9wLWluIGNlbnRyZXMsIGNvbW11bml0eSBzZXJ2aWNlIGRlbGl2ZXJ5IHBvaW50cywgbW9iaWxlIGNsaW5pY3Mgb3IgdmFucywgb3V0cmVhY2ggdGVhbXMsIGNvbW11bml0eSBzdXBwb3J0IGdyb3VwcywgZXRjLikgCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6IEdlbmRlciB8IEFnZQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBEYXRlIE9BTVQgaW5pdGlhdGVkIAogKiAgRGF0ZSBvZiBsb3NzIHRvIGZvbGxvdy11cCBvciBPQU1UIHN0b3BwZWQgCiAqICBNZWRpY2F0aW9ucyBwcmVzY3JpYmVkIAogKiAgUmVwb3J0aW5nIHBlcmlvZCBlbmQgZGF0ZSAKICogIFJlcG9ydGluZyBwZXJpb2Qgc3RhcnQgZGF0ZQogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkEuREUxNzogQWdlIHwgQ2FsY3VsYXRlZCBhZ2UgKG51bWJlciBvZiB5ZWFycykgb2YgdGhlIGNsaWVudCBiYXNlZCBvbiBkYXRlIG9mIGJpcnRoCiAqIEhJVi5BLkRFMTg6IEdlbmRlciogfCBHZW5kZXIgb2YgdGhlIGNsaWVudCoKICogSElWLkEuREUxOTogRmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgZmVtYWxlCiAqIEhJVi5BLkRFMjA6IE1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBtYWxlCiAqIEhJVi5BLkRFMjE6IFRyYW5zZ2VuZGVyIG1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBtYWxlCiAqIEhJVi5BLkRFMjI6IFRyYW5zZ2VuZGVyIGZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIGZlbWFsZQogKiBISVYuQS5ERTIzOiBPdGhlciB8IEFkZGl0aW9uYWwgY2F0ZWdvcnkKICogSElWLkMuREU3NTogTWVkaWNhdGlvbnMgcHJlc2NyaWJlZCB8IE1lZGljYXRpb25zIHRoZSBjbGllbnQgd2FzIHByZXNjcmliZWQKICogSElWLkMuREU3NjogUHJFUCBmb3IgSElWIHByZXZlbnRpb24gfCBDbGllbnQgd2FzIHByZXNjcmliZWQgcHJlLWV4cG9zdXJlIHByb3BoeWxheGlzIChQckVQKSBmb3IgSElWIHByZXZlbnRpb24KICogSElWLkMuREU3NzogUEVQIGZvciBISVYgcHJldmVudGlvbiB8IENsaWVudCB3YXMgcHJlc2NyaWJlZCBwb3N0LWV4cG9zdXJlIHByb3BoeWxheGlzIChQRVApIGZvciBISVYgcHJldmVudGlvbgogKiBISVYuQy5ERTc4OiBPdGhlciB8IENsaWVudCB3YXMgcHJlc2NyaWJlZCBvdGhlciBtZWRpY2F0aW9ucwogKiBISVYuRC5ERTQ1NzogTWVkaWNhdGlvbnMgcHJlc2NyaWJlZCB8IE5hbWUgb3IgcmVnaW1lbiBjb2RlIG9mIGFsbCBvdGhlciBtZWRpY2F0aW9ucyBwcmVzY3JpYmVkIGR1cmluZyB0aGUgdmlzaXQKICogSElWLlBSVi5ERTE3OiBEYXRlIE9BTVQgaW5pdGlhdGVkIHwgRGF0ZSBjbGllbnQgaW5pdGlhdGVkIG9waW9pZCBhZ29uaXN0IG1haW50ZW5hbmNlIHRyZWF0bWVudCAoT0FNVCkKICogSElWLlBSVi5ERTI1OiBEYXRlIG9mIGxvc3MgdG8gZm9sbG93LXVwIG9yIE9BTVQgc3RvcHBlZCB8IERhdGUgb2YgbG9zcyB0byBmb2xsb3ctdXAgb3Igb3Bpb2lkIGFnb25pc3QgbWFpbnRlbmFuY2UgdHJlYXRtZW50IChPQU1UKSBzdG9wcGVkCiAqIEhJVi5Db25maWcuREUyMDogUmVwb3J0aW5nIHBlcmlvZCBlbmQgZGF0ZSB8IEVuZCBkYXRlIG9mIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIEhJVi5Db25maWcuREUyMTogUmVwb3J0aW5nIHBlcmlvZCBzdGFydCBkYXRlIHwgU3RhcnQgZGF0ZSBvZiB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBNZWFzdXJlIG9mIHRoZSBwcm9wb3J0aW9uIG9mIHBlcnNvbiB0aW1lIGluIHdoaWNoIGluZGl2aWR1YWxzIHdobyBhcmUgb3Bpb2lkIGRlcGVuZGVudCBhcmUgY292ZXJlZCBieSBPQU1ULgogKiAtIHJhdGlvbmFsZTogRXZpZGVuY2UgZGVtb25zdHJhdGVzIHRoYXQgSElWIHJpc2sgaXMgcmVkdWNlZCBhbW9uZyBpbmRpdmlkdWFscyB3aG8gYXJlIG9waW9pZCBkZXBlbmRlbnQgZHVyaW5nIHBlcmlvZHMgd2hlbiByZWNlaXZpbmcgT0FNVC4KICogLSBtZXRob2Q6IEluZGl2aWR1YWwtbGV2ZWwgZGF0YSBvYnRhaW5lZCBmcm9tIHByb2dyYW1tZSByZWNvcmRzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQxMkxvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQoKaW5jbHVkZSBISVZFbGVtZW50cyBjYWxsZWQgSEUKaW5jbHVkZSBISVZJbmRpY2F0b3JFbGVtZW50cyBjYWxsZWQgSElFCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+IGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjMtMDEtMDEsIEAyMDIzLTAxLTMwXQoKY29udGV4dCBQYXRpZW50Ci8qIFBvcHVsYXRpb25zICovCgovKgogKkluaXRpYWwgUG9wdWxhdGlvbgogKi8KCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICB0cnVlCgovKioKICogTnVtZXJhdG9yCiAqIAogKiBEZWZpbml0aW9uOiBUb3RhbCBQWUZVIG9uIE9BTVQgZHVyaW5nIGRlZmluZWQgcmVwb3J0aW5nIHBlcmlvZC4gfCBDYWxjdWxhdGVkIGZyb20gdGhlIHN1bSBvZiB0aGUgdGltZSBvbiBPQU1UIG9mIGVhY2ggT0FNVCByZWNpcGllbnQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kLgogKiBDYWxjdWxhdGlvbjogU1VNIG9mIFtESUZGRVJFTkNFIGluIE1JTigiRGF0ZSBPQU1UIGluaXRpYXRlZCIsICJSZXBvcnRpbmcgcGVyaW9kIHN0YXJ0IGRhdGUiKSBhbmQgTUFYKCJEYXRlIG9mIGxvc3MgdG8gZm9sbG93LXVwIG9yIE9BTVQgc3RvcHBlZCIsICJSZXBvcnRpbmcgcGVyaW9kIGVuZCBkYXRlIildIGZvciBhbGwgY2xpZW50cyB3aXRoICJNZWRpY2F0aW9ucyBwcmVzY3JpYmVkIiBJTiAnTWV0aGFkb25lJywgJ0J1cHJlbm9ycGhpbmUnCiAqLwoKZGVmaW5lICJNZWFzdXJlIFBvcHVsYXRpb24iOgogIGV4aXN0cyhISUUuImJ1cHJlbm9ycGhpbmVfcHJlc2NyaWJlZCBhdCBkYXRlIikgb3IgZXhpc3RzKEhJRS4ibWV0aGFkb25lX3ByZXNjcmliZWQgYXQgZGF0ZSIpCgoKZGVmaW5lICJNZWFzdXJlIE9ic2VydmF0aW9uIjoKICAoCiAgICBkaWZmZXJlbmNlIGluIGRheXMgYmV0d2VlbgogICAgTWluKAogICAgICB7CiAgICAgICAgVG9EYXRlKEZpcnN0KEhJRS4iT0FNVCBzdGFydCIpKSwgCiAgICAgICAgVG9EYXRlKHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKQogICAgICB9CiAgICApCgogICAgYW5kIFRvRGF0ZShzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIikKICApCiAgKwogICgKICAgIGRpZmZlcmVuY2UgaW4gZGF5cyBiZXR3ZWVuIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgYW5kIENvYWxlc2NlKAogICAgICAgIFRvRGF0ZShGaXJzdChISUUuIk9BTVQgZW5kIikpLCAKICAgICAgICBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgKQogICkKICAKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IGEpIFByb2dyYW1tZS9zZXJ2aWNlIHByb3ZpZGVyIGxldmVsOiBlc3RpbWF0ZWQgUFlGVSBmb3IgYWxsIG9waW9pZCBkZXBlbmRlbnQgcGVvcGxlIGFjY2Vzc2luZyBzZXJ2aWNlIGR1cmluZyBkZWZpbmVkIHJlcG9ydGluZyBwZXJpb2QgfCBiKSBQb3B1bGF0aW9uIGxldmVsOiBlc3RpbWF0ZWQgUFlGVSBmb3IgdG90YWwgcG9wdWxhdGlvbiBvZiBvcGlvaWQgZGVwZW5kZW50IHBlb3BsZSBpbiByZWxldmFudCBnZW9ncmFwaGljIGFyZWEgZHVyaW5nIGRlZmluZWQgcmVwb3J0aW5nIHBlcmlvZAogKiBDYWxjdWxhdGlvbjogU2VydmljZSBsZXZlbDogTm90IGNhbGN1bGF0ZWQgaW4gREFLIHwgIHwgUG9wdWxhdGlvbiBkZW5vbWluYXRvcjogIHwgKkVzdGltYXRlZCBQWUZVIGZvciBhbGwgb3Bpb2lkLWRlcGVuZGVudCBwZW9wbGUgYWNjZXNzaW5nIHNlcnZpY2UgZHVyaW5nIGRlZmluZWQgcmVwb3J0aW5nIHBlcmlvZCB8ICB8IE5vdGU6IENhbiBiZSByZXBvcnRlZCBvbmx5IGFzIG51bWVyYXRvcjsgYnkgcG9wdWxhdGlvbiBvciBzZXJ2aWNlIGxldmVsIGlmIHRoZXNlIGRlbm9taW5hdG9yIGVzdGltYXRlcyBhdmFpbGFibGUuCiAqLwoKLyogZW5kIFBvcHVsYXRpb25zICovCgo="/>
  </content>
</Library>