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 - JSON Representation

Draft as of 2025-02-07

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "HIVIND12Logic",
  "meta" : {
    "profile" : [
      🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"
    ]
  },
  "text" : {
    "status" : "extensions",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n<div>\n    <table class=\"grid dict\">\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Title: </b></th>\n            <td style=\"padding-left: 4px;\">HIV.IND.12 Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">HIVIND12Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Version: </b></th>\n            <td style=\"padding-left: 4px;\">0.4.3</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Url: </b></th>\n            <td style=\"padding-left: 4px;\"><a href=\"Library-HIVIND12Logic.html\">HIV.IND.12 Logic</a></td>\n        </tr>\n        \n\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Status: </b></th>\n            <td style=\"padding-left: 4px;\">draft</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Experimental: </b></th>\n            <td style=\"padding-left: 4px;\">true</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Type: </b></th>\n            <td style=\"padding-left: 4px;\">\n                \n                    \n                        \n                        <p style=\"margin-bottom: 5px;\">\n                            <b>system: </b> <span><a href=\"http://terminology.hl7.org/6.0.2/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a></span>\n                        </p>\n                        \n                        \n                        <p style=\"margin-bottom: 5px;\">\n                            <b>code: </b> <span>logic-library</span>\n                        </p>\n                        \n                        \n                    \n                \n                \n            </td>\n        </tr>\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Date: </b></th>\n            <td style=\"padding-left: 4px;\">2025-02-07 14:15:45+0000</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Publisher: </b></th>\n            <td style=\"padding-left: 4px;\">WHO</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Description: </b></th>\n            <td style=\"padding-left: 4px;\"><div><p>% of person-years of follow-up (PYFU) on OAMT among opioid dependent people</p>\n</div></td>\n        </tr>\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n        \n        <tr>\n          <td colspan=\"2\">\n            <table>\n              <tr><th><a id=\"cql-content\"><b>Content: </b></a> text/cql</th></tr>\n              <tr><td><pre><code class=\"language-cql\">/**\n * Library: HIV.IND.12 Logic\n * Ref No: PRV.12\n * Short Name: Total person-years on OAMT\n *\n * Definition: % of person-years of follow-up (PYFU) on OAMT among opioid dependent people\n *\n * 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.\n * 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'\n * Numerator Exclusions: \n *\n * 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\n * 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.\n * Denominator Exclusions: \n *\n * Disaggregations:\n * • Gender (female, male, other*) \n *  • Age (15–19, 20–24, 25–49, 50+ years) \n *  • 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) \n *  • 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.) \n *  •\u00a0Cities and other administrative regions of epidemiologic importance\n *\n * Disaggregation Elements: Gender | Age\n *\n * Numerator and Denominator Elements:\n * Date OAMT initiated \n *  Date of loss to follow-up or OAMT stopped \n *  Medications prescribed \n *  Reporting period end date \n *  Reporting period start date\n *\n * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022\n * \n * Data Concepts:\n * HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth\n * HIV.A.DE18: Gender* | Gender of the client*\n * HIV.A.DE19: Female | Client identifies as female\n * HIV.A.DE20: Male | Client identifies as male\n * HIV.A.DE21: Transgender male | Client identifies as transgender male\n * HIV.A.DE22: Transgender female | Client identifies as transgender female\n * HIV.A.DE23: Other | Additional category\n * HIV.C.DE75: Medications prescribed | Medications the client was prescribed\n * HIV.C.DE76: PrEP for HIV prevention | Client was prescribed pre-exposure prophylaxis (PrEP) for HIV prevention\n * HIV.C.DE77: PEP for HIV prevention | Client was prescribed post-exposure prophylaxis (PEP) for HIV prevention\n * HIV.C.DE78: Other | Client was prescribed other medications\n * HIV.D.DE457: Medications prescribed | Name or regimen code of all other medications prescribed during the visit\n * HIV.PRV.DE17: Date OAMT initiated | Date client initiated opioid agonist maintenance treatment (OAMT)\n * 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\n * HIV.Config.DE20: Reporting period end date | End date of the reporting period\n * HIV.Config.DE21: Reporting period start date | Start date of the reporting period\n *\n * Additional Context\n * - what it measures: Measure of the proportion of person time in which individuals who are opioid dependent are covered by OAMT.\n * - rationale: Evidence demonstrates that HIV risk is reduced among individuals who are opioid dependent during periods when receiving OAMT.\n * - method: Individual-level data obtained from programme records.\n * \n * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm\n */\n\nlibrary HIVIND12Logic\n\n// Included Libraries\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called HIC\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WCom\n\ninclude HIVElements called HE\ninclude HIVIndicatorElements called HIE\n\n// Indicator Definition\nparameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt; default Interval[@2023-01-01, @2023-01-30]\n\ncontext Patient\n/* Populations */\n\n/*\n *Initial Population\n */\n\ndefine &quot;Initial Population&quot;:\n  true\n\n/**\n * Numerator\n * \n * 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.\n * 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'\n */\n\ndefine &quot;Measure Population&quot;:\n  exists(HIE.&quot;buprenorphine_prescribed at date&quot;) or exists(HIE.&quot;methadone_prescribed at date&quot;)\n\n\ndefine &quot;Measure Observation&quot;:\n  (\n    difference in days between\n    Min(\n      {\n        ToDate(First(HIE.&quot;OAMT start&quot;)), \n        ToDate(start of &quot;Measurement Period&quot;)\n      }\n    )\n\n    and ToDate(start of &quot;Measurement Period&quot;)\n  )\n  +\n  (\n    difference in days between end of &quot;Measurement Period&quot;\n    and Coalesce(\n        ToDate(First(HIE.&quot;OAMT end&quot;)), \n        end of &quot;Measurement Period&quot;\n      )\n  )\n  \n/**\n * Denominator\n *\n * 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\n * 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.\n */\n\n/* end Populations */\n\n</code></pre></td></tr>\n            </table>\n          </td>\n        </tr>\n        \n        \n        \n    </table>\n</div>\n</div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
      "valueCode" : "computable"
    }
  ],
  "url" : "http://smart.who.int/hiv/Library/HIVIND12Logic",
  "version" : "0.4.3",
  "name" : "HIVIND12Logic",
  "title" : "HIV.IND.12 Logic",
  "status" : "draft",
  "experimental" : true,
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2025-02-07T14:15:45+00:00",
  "publisher" : "WHO",
  "contact" : [
    {
      "name" : "WHO",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://who.int"
        }
      ]
    }
  ],
  "description" : "% of person-years of follow-up (PYFU) on OAMT among opioid dependent people",
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMTIgTG9naWMKICogUmVmIE5vOiBQUlYuMTIKICogU2hvcnQgTmFtZTogVG90YWwgcGVyc29uLXllYXJzIG9uIE9BTVQKICoKICogRGVmaW5pdGlvbjogJSBvZiBwZXJzb24teWVhcnMgb2YgZm9sbG93LXVwIChQWUZVKSBvbiBPQU1UIGFtb25nIG9waW9pZCBkZXBlbmRlbnQgcGVvcGxlCiAqCiAqIE51bWVyYXRvcjogVG90YWwgUFlGVSBvbiBPQU1UIGR1cmluZyBkZWZpbmVkIHJlcG9ydGluZyBwZXJpb2QuIHwgQ2FsY3VsYXRlZCBmcm9tIHRoZSBzdW0gb2YgdGhlIHRpbWUgb24gT0FNVCBvZiBlYWNoIE9BTVQgcmVjaXBpZW50IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZC4KICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBTVU0gb2YgW0RJRkZFUkVOQ0UgaW4gTUlOKCJEYXRlIE9BTVQgaW5pdGlhdGVkIiwgIlJlcG9ydGluZyBwZXJpb2Qgc3RhcnQgZGF0ZSIpIGFuZCBNQVgoIkRhdGUgb2YgbG9zcyB0byBmb2xsb3ctdXAgb3IgT0FNVCBzdG9wcGVkIiwgIlJlcG9ydGluZyBwZXJpb2QgZW5kIGRhdGUiKV0gZm9yIGFsbCBjbGllbnRzIHdpdGggIk1lZGljYXRpb25zIHByZXNjcmliZWQiIElOICdNZXRoYWRvbmUnLCAnQnVwcmVub3JwaGluZScKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogYSkgUHJvZ3JhbW1lL3NlcnZpY2UgcHJvdmlkZXIgbGV2ZWw6IGVzdGltYXRlZCBQWUZVIGZvciBhbGwgb3Bpb2lkIGRlcGVuZGVudCBwZW9wbGUgYWNjZXNzaW5nIHNlcnZpY2UgZHVyaW5nIGRlZmluZWQgcmVwb3J0aW5nIHBlcmlvZCB8IGIpIFBvcHVsYXRpb24gbGV2ZWw6IGVzdGltYXRlZCBQWUZVIGZvciB0b3RhbCBwb3B1bGF0aW9uIG9mIG9waW9pZCBkZXBlbmRlbnQgcGVvcGxlIGluIHJlbGV2YW50IGdlb2dyYXBoaWMgYXJlYSBkdXJpbmcgZGVmaW5lZCByZXBvcnRpbmcgcGVyaW9kCiAqIERlbm9taW5hdG9yIENhbGN1bGF0aW9uOiBTZXJ2aWNlIGxldmVsOiBOb3QgY2FsY3VsYXRlZCBpbiBEQUsgfCAgfCBQb3B1bGF0aW9uIGRlbm9taW5hdG9yOiAgfCAqRXN0aW1hdGVkIFBZRlUgZm9yIGFsbCBvcGlvaWQtZGVwZW5kZW50IHBlb3BsZSBhY2Nlc3Npbmcgc2VydmljZSBkdXJpbmcgZGVmaW5lZCByZXBvcnRpbmcgcGVyaW9kIHwgIHwgTm90ZTogQ2FuIGJlIHJlcG9ydGVkIG9ubHkgYXMgbnVtZXJhdG9yOyBieSBwb3B1bGF0aW9uIG9yIHNlcnZpY2UgbGV2ZWwgaWYgdGhlc2UgZGVub21pbmF0b3IgZXN0aW1hdGVzIGF2YWlsYWJsZS4KICogRGVub21pbmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERpc2FnZ3JlZ2F0aW9uczoKICog4oCiIEdlbmRlciAoZmVtYWxlLCBtYWxlLCBvdGhlciopIAogKiAg4oCiIEFnZSAoMTXigJMxOSwgMjDigJMyNCwgMjXigJM0OSwgNTArIHllYXJzKSAKICogIOKAoiBQcm92aWRlciB0eXBlIChrZXkgcG9wdWxhdGlvbi1sZWQgb3IgY29tbXVuaXR5LWxlZCBvcmdhbml6YXRpb24sIHB1YmxpYyBzZWN0b3IgcHJvdmlkZXIsIG90aGVyIGVudGl0aWVzIHN1Y2ggYXMgcHJpdmF0ZSBmb3ItcHJvZml0IGFuZCBub3QtZm9yLXByb2ZpdCBvcmdhbml6YXRpb25zLCBpbmNsdWRpbmcgZmFpdGgtYmFzZWQsIGludGVybmF0aW9uYWwsIG5vbmdvdmVybm1lbnRhbCkgCiAqICDigKIgU2V0dGluZzogZmFjaWxpdHktYmFzZWQgc2VydmljZSAoaW5jbHVkaW5nIGhvc3BpdGFscywgaGVhbHRoIGNsaW5pY3MsIGdlbmVyYWwgcHJhY3RpY2Ugb2ZmaWNlcywgZXRjLikgb3IgY29tbXVuaXR5LWJhc2VkIHNlcnZpY2UgKGluY2x1ZGluZyBkcm9wLWluIGNlbnRyZXMsIGNvbW11bml0eSBzZXJ2aWNlIGRlbGl2ZXJ5IHBvaW50cywgbW9iaWxlIGNsaW5pY3Mgb3IgdmFucywgb3V0cmVhY2ggdGVhbXMsIGNvbW11bml0eSBzdXBwb3J0IGdyb3VwcywgZXRjLikgCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6IEdlbmRlciB8IEFnZQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBEYXRlIE9BTVQgaW5pdGlhdGVkIAogKiAgRGF0ZSBvZiBsb3NzIHRvIGZvbGxvdy11cCBvciBPQU1UIHN0b3BwZWQgCiAqICBNZWRpY2F0aW9ucyBwcmVzY3JpYmVkIAogKiAgUmVwb3J0aW5nIHBlcmlvZCBlbmQgZGF0ZSAKICogIFJlcG9ydGluZyBwZXJpb2Qgc3RhcnQgZGF0ZQogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkEuREUxNzogQWdlIHwgQ2FsY3VsYXRlZCBhZ2UgKG51bWJlciBvZiB5ZWFycykgb2YgdGhlIGNsaWVudCBiYXNlZCBvbiBkYXRlIG9mIGJpcnRoCiAqIEhJVi5BLkRFMTg6IEdlbmRlciogfCBHZW5kZXIgb2YgdGhlIGNsaWVudCoKICogSElWLkEuREUxOTogRmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgZmVtYWxlCiAqIEhJVi5BLkRFMjA6IE1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBtYWxlCiAqIEhJVi5BLkRFMjE6IFRyYW5zZ2VuZGVyIG1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBtYWxlCiAqIEhJVi5BLkRFMjI6IFRyYW5zZ2VuZGVyIGZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIGZlbWFsZQogKiBISVYuQS5ERTIzOiBPdGhlciB8IEFkZGl0aW9uYWwgY2F0ZWdvcnkKICogSElWLkMuREU3NTogTWVkaWNhdGlvbnMgcHJlc2NyaWJlZCB8IE1lZGljYXRpb25zIHRoZSBjbGllbnQgd2FzIHByZXNjcmliZWQKICogSElWLkMuREU3NjogUHJFUCBmb3IgSElWIHByZXZlbnRpb24gfCBDbGllbnQgd2FzIHByZXNjcmliZWQgcHJlLWV4cG9zdXJlIHByb3BoeWxheGlzIChQckVQKSBmb3IgSElWIHByZXZlbnRpb24KICogSElWLkMuREU3NzogUEVQIGZvciBISVYgcHJldmVudGlvbiB8IENsaWVudCB3YXMgcHJlc2NyaWJlZCBwb3N0LWV4cG9zdXJlIHByb3BoeWxheGlzIChQRVApIGZvciBISVYgcHJldmVudGlvbgogKiBISVYuQy5ERTc4OiBPdGhlciB8IENsaWVudCB3YXMgcHJlc2NyaWJlZCBvdGhlciBtZWRpY2F0aW9ucwogKiBISVYuRC5ERTQ1NzogTWVkaWNhdGlvbnMgcHJlc2NyaWJlZCB8IE5hbWUgb3IgcmVnaW1lbiBjb2RlIG9mIGFsbCBvdGhlciBtZWRpY2F0aW9ucyBwcmVzY3JpYmVkIGR1cmluZyB0aGUgdmlzaXQKICogSElWLlBSVi5ERTE3OiBEYXRlIE9BTVQgaW5pdGlhdGVkIHwgRGF0ZSBjbGllbnQgaW5pdGlhdGVkIG9waW9pZCBhZ29uaXN0IG1haW50ZW5hbmNlIHRyZWF0bWVudCAoT0FNVCkKICogSElWLlBSVi5ERTI1OiBEYXRlIG9mIGxvc3MgdG8gZm9sbG93LXVwIG9yIE9BTVQgc3RvcHBlZCB8IERhdGUgb2YgbG9zcyB0byBmb2xsb3ctdXAgb3Igb3Bpb2lkIGFnb25pc3QgbWFpbnRlbmFuY2UgdHJlYXRtZW50IChPQU1UKSBzdG9wcGVkCiAqIEhJVi5Db25maWcuREUyMDogUmVwb3J0aW5nIHBlcmlvZCBlbmQgZGF0ZSB8IEVuZCBkYXRlIG9mIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIEhJVi5Db25maWcuREUyMTogUmVwb3J0aW5nIHBlcmlvZCBzdGFydCBkYXRlIHwgU3RhcnQgZGF0ZSBvZiB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBNZWFzdXJlIG9mIHRoZSBwcm9wb3J0aW9uIG9mIHBlcnNvbiB0aW1lIGluIHdoaWNoIGluZGl2aWR1YWxzIHdobyBhcmUgb3Bpb2lkIGRlcGVuZGVudCBhcmUgY292ZXJlZCBieSBPQU1ULgogKiAtIHJhdGlvbmFsZTogRXZpZGVuY2UgZGVtb25zdHJhdGVzIHRoYXQgSElWIHJpc2sgaXMgcmVkdWNlZCBhbW9uZyBpbmRpdmlkdWFscyB3aG8gYXJlIG9waW9pZCBkZXBlbmRlbnQgZHVyaW5nIHBlcmlvZHMgd2hlbiByZWNlaXZpbmcgT0FNVC4KICogLSBtZXRob2Q6IEluZGl2aWR1YWwtbGV2ZWwgZGF0YSBvYnRhaW5lZCBmcm9tIHByb2dyYW1tZSByZWNvcmRzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQxMkxvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQoKaW5jbHVkZSBISVZFbGVtZW50cyBjYWxsZWQgSEUKaW5jbHVkZSBISVZJbmRpY2F0b3JFbGVtZW50cyBjYWxsZWQgSElFCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+IGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjMtMDEtMDEsIEAyMDIzLTAxLTMwXQoKY29udGV4dCBQYXRpZW50Ci8qIFBvcHVsYXRpb25zICovCgovKgogKkluaXRpYWwgUG9wdWxhdGlvbgogKi8KCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICB0cnVlCgovKioKICogTnVtZXJhdG9yCiAqIAogKiBEZWZpbml0aW9uOiBUb3RhbCBQWUZVIG9uIE9BTVQgZHVyaW5nIGRlZmluZWQgcmVwb3J0aW5nIHBlcmlvZC4gfCBDYWxjdWxhdGVkIGZyb20gdGhlIHN1bSBvZiB0aGUgdGltZSBvbiBPQU1UIG9mIGVhY2ggT0FNVCByZWNpcGllbnQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kLgogKiBDYWxjdWxhdGlvbjogU1VNIG9mIFtESUZGRVJFTkNFIGluIE1JTigiRGF0ZSBPQU1UIGluaXRpYXRlZCIsICJSZXBvcnRpbmcgcGVyaW9kIHN0YXJ0IGRhdGUiKSBhbmQgTUFYKCJEYXRlIG9mIGxvc3MgdG8gZm9sbG93LXVwIG9yIE9BTVQgc3RvcHBlZCIsICJSZXBvcnRpbmcgcGVyaW9kIGVuZCBkYXRlIildIGZvciBhbGwgY2xpZW50cyB3aXRoICJNZWRpY2F0aW9ucyBwcmVzY3JpYmVkIiBJTiAnTWV0aGFkb25lJywgJ0J1cHJlbm9ycGhpbmUnCiAqLwoKZGVmaW5lICJNZWFzdXJlIFBvcHVsYXRpb24iOgogIGV4aXN0cyhISUUuImJ1cHJlbm9ycGhpbmVfcHJlc2NyaWJlZCBhdCBkYXRlIikgb3IgZXhpc3RzKEhJRS4ibWV0aGFkb25lX3ByZXNjcmliZWQgYXQgZGF0ZSIpCgoKZGVmaW5lICJNZWFzdXJlIE9ic2VydmF0aW9uIjoKICAoCiAgICBkaWZmZXJlbmNlIGluIGRheXMgYmV0d2VlbgogICAgTWluKAogICAgICB7CiAgICAgICAgVG9EYXRlKEZpcnN0KEhJRS4iT0FNVCBzdGFydCIpKSwgCiAgICAgICAgVG9EYXRlKHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKQogICAgICB9CiAgICApCgogICAgYW5kIFRvRGF0ZShzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIikKICApCiAgKwogICgKICAgIGRpZmZlcmVuY2UgaW4gZGF5cyBiZXR3ZWVuIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgYW5kIENvYWxlc2NlKAogICAgICAgIFRvRGF0ZShGaXJzdChISUUuIk9BTVQgZW5kIikpLCAKICAgICAgICBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgKQogICkKICAKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IGEpIFByb2dyYW1tZS9zZXJ2aWNlIHByb3ZpZGVyIGxldmVsOiBlc3RpbWF0ZWQgUFlGVSBmb3IgYWxsIG9waW9pZCBkZXBlbmRlbnQgcGVvcGxlIGFjY2Vzc2luZyBzZXJ2aWNlIGR1cmluZyBkZWZpbmVkIHJlcG9ydGluZyBwZXJpb2QgfCBiKSBQb3B1bGF0aW9uIGxldmVsOiBlc3RpbWF0ZWQgUFlGVSBmb3IgdG90YWwgcG9wdWxhdGlvbiBvZiBvcGlvaWQgZGVwZW5kZW50IHBlb3BsZSBpbiByZWxldmFudCBnZW9ncmFwaGljIGFyZWEgZHVyaW5nIGRlZmluZWQgcmVwb3J0aW5nIHBlcmlvZAogKiBDYWxjdWxhdGlvbjogU2VydmljZSBsZXZlbDogTm90IGNhbGN1bGF0ZWQgaW4gREFLIHwgIHwgUG9wdWxhdGlvbiBkZW5vbWluYXRvcjogIHwgKkVzdGltYXRlZCBQWUZVIGZvciBhbGwgb3Bpb2lkLWRlcGVuZGVudCBwZW9wbGUgYWNjZXNzaW5nIHNlcnZpY2UgZHVyaW5nIGRlZmluZWQgcmVwb3J0aW5nIHBlcmlvZCB8ICB8IE5vdGU6IENhbiBiZSByZXBvcnRlZCBvbmx5IGFzIG51bWVyYXRvcjsgYnkgcG9wdWxhdGlvbiBvciBzZXJ2aWNlIGxldmVsIGlmIHRoZXNlIGRlbm9taW5hdG9yIGVzdGltYXRlcyBhdmFpbGFibGUuCiAqLwoKLyogZW5kIFBvcHVsYXRpb25zICovCgo="
    }
  ]
}