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.40 Logic - JSON Representation

Draft as of 2025-02-02

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "HIVIND40Logic",
  "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.40 Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">HIVIND40Logic</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-HIVIND40Logic.html\">HIV.IND.40 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-02 03:11:41+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 HIV-positive pregnant women who received ART during pregnancy and/or at labour and delivery</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.40 Logic\n * Ref No: VER.4\n * Short Name: ART coverage in pregnant women\n *\n * Definition: % of HIV-positive pregnant women who received ART during pregnancy and/or at labour and delivery\n *\n * Numerator: Number of HIV-positive pregnant women who delivered during the reporting period and received ART during pregnancy and/or at labour and delivery\n * Numerator Calculation: COUNT of women with &quot;HIV status&quot;='HIV-positive' AND &quot;Delivery date&quot; in the reporting period AND ((&quot;On ART&quot;=True at labour and delivery) OR (&quot;On ART&quot;=True during pregnancy, for this pregnancy))\n * Numerator Exclusions: \n *\n * Denominator: a) Programme-based/service delivery denominator | Number of HIV-positive pregnant women who delivered during the reporting period and attended ANC or had a facility-based delivery | b) Population-based denominator | Number of HIV-positive pregnant women who delivered during the reporting period\n * Denominator Calculation: Programme-based/service delivery denominator: | COUNT of women with &quot;HIV status&quot;='HIV-positive' AND &quot;Delivery date&quot; in the reporting period AND (had an &quot;ANC contact date&quot; during reporting period OR &quot;Place of delivery&quot; was a 'Health facility') |  | Population-based denominator: | *Number of HIV-positive pregnant women who delivered during the reporting period\n * Denominator Exclusions: \n *\n * Disaggregations:\n * Numerator: \n *  •\u00a0Timing of ART initiation (1. already on ART at first ANC visit, 2. newly on ART during pregnancy, 3. newly on ART during labour and delivery, 4. on non-recommended ART regimen) \n *   \n *  The primary indicator calculation should include ART status categories 1, 2 and 3. Removing the women in category 1 &quot;already on ART at first ANC visit&quot; from the numerator and denominator gives a measure of ART coverage among HIV-positive pregnant women newly diagnosed during ANC. Dividing category 2 by the sum of categories 2 and 3 gives the proportion of new ART initiations occurring during pregnancy rather than at delivery. Calculating the indicator with those in category 4 (non-recommended ARV regimen) included in the numerator gives a broader measure, that is, coverage of HIV-positive pregnant women receiving any ARV drug.\n *\n * Disaggregation Elements: Timing of ART initiation\n *\n * Numerator and Denominator Elements:\n * ANC contact date \n *  Delivery date \n *  HIV status \n *  On ART \n *  Place of delivery\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.B.DE115: HIV status | HIV status reported after applying the national HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.\n * HIV.B.DE116: HIV-positive | Client is HIV-positive\n * HIV.B.DE117: HIV-negative | Client is HIV-negative\n * HIV.B.DE118: Unknown | Client has unknown HIV status\n * HIV.D.DE38: On ART | Client is currently taking ART\n * HIV.E.DE41: Timing of ART initiation | When the pregnant woman or mother initiated ART, for women living with HIV.\n * 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\n * HIV.E.DE43: Newly on ART during pregnancy | The pregnant woman started ART during her pregnancy\n * HIV.E.DE44: Newly on ART during labour and delivery | The woman started ART during labour and delivery\n * HIV.E.DE46: Delivery date | Date on which the woman delivered\n * HIV.E.DE67: Place of delivery | The type of place where the woman delivered\n * HIV.E.DE68: Health facility | The woman delivered at a health facility\n * HIV.E.DE69: Home | The woman delivered at home\n * HIV.E.DE70: Other | The woman delivered at another location that is not at home or at a health facility\n * HIV.E.DE85: ANC contact date | The date and time of the client's ANC contact (in the ANC DAK this is called 'Contact date')\n * HIV.H.DE47: On ART | Client is currently taking ART \n * HIV.SRV.DE18: ANC contact date | The date and time of the client's ANC contact (in the ANC DAK this is called 'Contact date')\n *\n * Additional Context\n * - what it measures: This indicator measures whether a recommended course of ART has been provided to HIV-positive pregnant women.\n * - rationale: • Providing ART for HIV-positive pregnant women is a critical strategy for preventing vertical transmission of HIV. | • In an era of &quot;Treat All&quot;, all HIV-positive pregnant women should be given a recommended regimen of ART as soon as possible after diagnosis, including during labour and delivery.\n * - method: a) For the numerator and programme-based/service delivery denominator: Programme records (for example, PMTCT registers, ARV registers, labour and delivery registers) |  | b) For the population-based denominator: Modelling-based estimates (for example, Spectrum AIM) |  | The recommended reporting period is 12 months.\n * \n * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm\n */\n\nlibrary HIVIND40Logic\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;Date&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: Number of HIV-positive pregnant women who delivered during the reporting period and received ART during pregnancy and/or at labour and delivery\n * Calculation: COUNT of women with &quot;HIV status&quot;='HIV-positive' AND &quot;Delivery date&quot; in the reporting period AND ((&quot;On ART&quot;=True at labour and delivery) OR (&quot;On ART&quot;=True during pregnancy, for this pregnancy))\n */\n\n\ndefine &quot;Numerator&quot;:\n  HIE.&quot;Has HIV-positive Status&quot; and\n  exists(HIE.&quot;Live Birth Delivery&quot; BirthDelivery\n    where BirthDelivery.effective.toInterval() during &quot;Measurement Period&quot;\n  ) and \n  exists ( \n    HE.&quot;On ART D.DE38&quot; A \n    where A.effective.toInterval() during First(HIE.&quot;Live Birth Delivery&quot; BirthDelivery\n    where BirthDelivery.effective.toInterval() during &quot;Measurement Period&quot;).effective.toInterval()\n    or \n    A.effective.toInterval() during First(HE.&quot;Currently pregnant B.DE29&quot; C \n    where C.prevalenceInterval() during &quot;Measurement Period&quot;).prevalenceInterval()\n  \n  )\n\n\n\n/**\n * Denominator\n *\n * Definition: a) Programme-based/service delivery denominator | Number of HIV-positive pregnant women who delivered during the reporting period and attended ANC or had a facility-based delivery | b) Population-based denominator | Number of HIV-positive pregnant women who delivered during the reporting period\n * Calculation: Programme-based/service delivery denominator: | COUNT of women with &quot;HIV status&quot;='HIV-positive' AND &quot;Delivery date&quot; in the reporting period AND (had an &quot;ANC contact date&quot; during reporting period OR &quot;Place of delivery&quot; was a 'Health facility') |  | Population-based denominator: | *Number of HIV-positive pregnant women who delivered during the reporting period\n */\n\ndefine &quot;Denominator&quot;:\n  HIE.&quot;Has HIV-positive Status&quot; and\n  exists(HIE.&quot;Live Birth Delivery&quot; BirthDelivery\n    where BirthDelivery.effective.toInterval() during &quot;Measurement Period&quot;\n  )and \n  (First(HIE.&quot;ANC within pregnancy&quot;).period.toInterval() during &quot;Measurement Period&quot;\n  or\n    HIE.&quot;Has Delivery in Health Facility&quot;)\n    \n\n/* end Populations */\n\n/*\n * Disaggregators\n */\n\n\ndefine &quot;Timing of ART initiation&quot;:\n  HIE.&quot;Timing of ART initiation&quot;\n\ndefine &quot;Stratification&quot;:\n  HIE.&quot;Timing of ART initiation&quot;.code </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/HIVIND40Logic",
  "version" : "0.4.3",
  "name" : "HIVIND40Logic",
  "title" : "HIV.IND.40 Logic",
  "status" : "draft",
  "experimental" : true,
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2025-02-02T03:11:41+00:00",
  "publisher" : "WHO",
  "contact" : [
    {
      "name" : "WHO",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://who.int"
        }
      ]
    }
  ],
  "description" : "% of HIV-positive pregnant women who received ART during pregnancy and/or at labour and delivery",
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNDAgTG9naWMKICogUmVmIE5vOiBWRVIuNAogKiBTaG9ydCBOYW1lOiBBUlQgY292ZXJhZ2UgaW4gcHJlZ25hbnQgd29tZW4KICoKICogRGVmaW5pdGlvbjogJSBvZiBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gd2hvIHJlY2VpdmVkIEFSVCBkdXJpbmcgcHJlZ25hbmN5IGFuZC9vciBhdCBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgcmVjZWl2ZWQgQVJUIGR1cmluZyBwcmVnbmFuY3kgYW5kL29yIGF0IGxhYm91ciBhbmQgZGVsaXZlcnkKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiB3b21lbiB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAoKCJPbiBBUlQiPVRydWUgYXQgbGFib3VyIGFuZCBkZWxpdmVyeSkgT1IgKCJPbiBBUlQiPVRydWUgZHVyaW5nIHByZWduYW5jeSwgZm9yIHRoaXMgcHJlZ25hbmN5KSkKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogYSkgUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3IgfCBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCBhdHRlbmRlZCBBTkMgb3IgaGFkIGEgZmFjaWxpdHktYmFzZWQgZGVsaXZlcnkgfCBiKSBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yIHwgTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3I6IHwgQ09VTlQgb2Ygd29tZW4gd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJEZWxpdmVyeSBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgKGhhZCBhbiAiQU5DIGNvbnRhY3QgZGF0ZSIgZHVyaW5nIHJlcG9ydGluZyBwZXJpb2QgT1IgIlBsYWNlIG9mIGRlbGl2ZXJ5IiB3YXMgYSAnSGVhbHRoIGZhY2lsaXR5JykgfCAgfCBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yOiB8ICpOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIE51bWVyYXRvcjogCiAqICDigKLCoFRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiAoMS4gYWxyZWFkeSBvbiBBUlQgYXQgZmlyc3QgQU5DIHZpc2l0LCAyLiBuZXdseSBvbiBBUlQgZHVyaW5nIHByZWduYW5jeSwgMy4gbmV3bHkgb24gQVJUIGR1cmluZyBsYWJvdXIgYW5kIGRlbGl2ZXJ5LCA0LiBvbiBub24tcmVjb21tZW5kZWQgQVJUIHJlZ2ltZW4pIAogKiAgIAogKiAgVGhlIHByaW1hcnkgaW5kaWNhdG9yIGNhbGN1bGF0aW9uIHNob3VsZCBpbmNsdWRlIEFSVCBzdGF0dXMgY2F0ZWdvcmllcyAxLCAyIGFuZCAzLiBSZW1vdmluZyB0aGUgd29tZW4gaW4gY2F0ZWdvcnkgMSAiYWxyZWFkeSBvbiBBUlQgYXQgZmlyc3QgQU5DIHZpc2l0IiBmcm9tIHRoZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIGdpdmVzIGEgbWVhc3VyZSBvZiBBUlQgY292ZXJhZ2UgYW1vbmcgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIG5ld2x5IGRpYWdub3NlZCBkdXJpbmcgQU5DLiBEaXZpZGluZyBjYXRlZ29yeSAyIGJ5IHRoZSBzdW0gb2YgY2F0ZWdvcmllcyAyIGFuZCAzIGdpdmVzIHRoZSBwcm9wb3J0aW9uIG9mIG5ldyBBUlQgaW5pdGlhdGlvbnMgb2NjdXJyaW5nIGR1cmluZyBwcmVnbmFuY3kgcmF0aGVyIHRoYW4gYXQgZGVsaXZlcnkuIENhbGN1bGF0aW5nIHRoZSBpbmRpY2F0b3Igd2l0aCB0aG9zZSBpbiBjYXRlZ29yeSA0IChub24tcmVjb21tZW5kZWQgQVJWIHJlZ2ltZW4pIGluY2x1ZGVkIGluIHRoZSBudW1lcmF0b3IgZ2l2ZXMgYSBicm9hZGVyIG1lYXN1cmUsIHRoYXQgaXMsIGNvdmVyYWdlIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiByZWNlaXZpbmcgYW55IEFSViBkcnVnLgogKgogKiBEaXNhZ2dyZWdhdGlvbiBFbGVtZW50czogVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uCiAqCiAqIE51bWVyYXRvciBhbmQgRGVub21pbmF0b3IgRWxlbWVudHM6CiAqIEFOQyBjb250YWN0IGRhdGUgCiAqICBEZWxpdmVyeSBkYXRlIAogKiAgSElWIHN0YXR1cyAKICogIE9uIEFSVCAKICogIFBsYWNlIG9mIGRlbGl2ZXJ5CiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQi5ERTExNTogSElWIHN0YXR1cyB8IEhJViBzdGF0dXMgcmVwb3J0ZWQgYWZ0ZXIgYXBwbHlpbmcgdGhlIG5hdGlvbmFsIEhJViB0ZXN0aW5nIGFsZ29yaXRobS4gTm8gc2luZ2xlIEhJViB0ZXN0IGNhbiBwcm92aWRlIGFuIEhJVi1wb3NpdGl2ZSBkaWFnbm9zaXMuCiAqIEhJVi5CLkRFMTE2OiBISVYtcG9zaXRpdmUgfCBDbGllbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5CLkRFMTE3OiBISVYtbmVnYXRpdmUgfCBDbGllbnQgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5CLkRFMTE4OiBVbmtub3duIHwgQ2xpZW50IGhhcyB1bmtub3duIEhJViBzdGF0dXMKICogSElWLkQuREUzODogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUCiAqIEhJVi5FLkRFNDE6IFRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiB8IFdoZW4gdGhlIHByZWduYW50IHdvbWFuIG9yIG1vdGhlciBpbml0aWF0ZWQgQVJULCBmb3Igd29tZW4gbGl2aW5nIHdpdGggSElWLgogKiBISVYuRS5ERTQyOiBBbHJlYWR5IG9uIEFSVCBhdCBmaXJzdCBhbnRlbmF0YWwgY2FyZSB2aXNpdCB8IFRoZSBwcmVnbmFudCB3b21hbiB3YXMgYWxyZWFkeSBvbiBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IChBUlQpIGF0IGZpcnN0IGFudGVuYXRhbCBjYXJlIHZpc2l0CiAqIEhJVi5FLkRFNDM6IE5ld2x5IG9uIEFSVCBkdXJpbmcgcHJlZ25hbmN5IHwgVGhlIHByZWduYW50IHdvbWFuIHN0YXJ0ZWQgQVJUIGR1cmluZyBoZXIgcHJlZ25hbmN5CiAqIEhJVi5FLkRFNDQ6IE5ld2x5IG9uIEFSVCBkdXJpbmcgbGFib3VyIGFuZCBkZWxpdmVyeSB8IFRoZSB3b21hbiBzdGFydGVkIEFSVCBkdXJpbmcgbGFib3VyIGFuZCBkZWxpdmVyeQogKiBISVYuRS5ERTQ2OiBEZWxpdmVyeSBkYXRlIHwgRGF0ZSBvbiB3aGljaCB0aGUgd29tYW4gZGVsaXZlcmVkCiAqIEhJVi5FLkRFNjc6IFBsYWNlIG9mIGRlbGl2ZXJ5IHwgVGhlIHR5cGUgb2YgcGxhY2Ugd2hlcmUgdGhlIHdvbWFuIGRlbGl2ZXJlZAogKiBISVYuRS5ERTY4OiBIZWFsdGggZmFjaWxpdHkgfCBUaGUgd29tYW4gZGVsaXZlcmVkIGF0IGEgaGVhbHRoIGZhY2lsaXR5CiAqIEhJVi5FLkRFNjk6IEhvbWUgfCBUaGUgd29tYW4gZGVsaXZlcmVkIGF0IGhvbWUKICogSElWLkUuREU3MDogT3RoZXIgfCBUaGUgd29tYW4gZGVsaXZlcmVkIGF0IGFub3RoZXIgbG9jYXRpb24gdGhhdCBpcyBub3QgYXQgaG9tZSBvciBhdCBhIGhlYWx0aCBmYWNpbGl0eQogKiBISVYuRS5ERTg1OiBBTkMgY29udGFjdCBkYXRlIHwgVGhlIGRhdGUgYW5kIHRpbWUgb2YgdGhlIGNsaWVudCdzIEFOQyBjb250YWN0IChpbiB0aGUgQU5DIERBSyB0aGlzIGlzIGNhbGxlZCAnQ29udGFjdCBkYXRlJykKICogSElWLkguREU0NzogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUIAogKiBISVYuU1JWLkRFMTg6IEFOQyBjb250YWN0IGRhdGUgfCBUaGUgZGF0ZSBhbmQgdGltZSBvZiB0aGUgY2xpZW50J3MgQU5DIGNvbnRhY3QgKGluIHRoZSBBTkMgREFLIHRoaXMgaXMgY2FsbGVkICdDb250YWN0IGRhdGUnKQogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBUaGlzIGluZGljYXRvciBtZWFzdXJlcyB3aGV0aGVyIGEgcmVjb21tZW5kZWQgY291cnNlIG9mIEFSVCBoYXMgYmVlbiBwcm92aWRlZCB0byBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4uCiAqIC0gcmF0aW9uYWxlOiDigKIgUHJvdmlkaW5nIEFSVCBmb3IgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIGlzIGEgY3JpdGljYWwgc3RyYXRlZ3kgZm9yIHByZXZlbnRpbmcgdmVydGljYWwgdHJhbnNtaXNzaW9uIG9mIEhJVi4gfCDigKIgSW4gYW4gZXJhIG9mICJUcmVhdCBBbGwiLCBhbGwgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHNob3VsZCBiZSBnaXZlbiBhIHJlY29tbWVuZGVkIHJlZ2ltZW4gb2YgQVJUIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgZGlhZ25vc2lzLCBpbmNsdWRpbmcgZHVyaW5nIGxhYm91ciBhbmQgZGVsaXZlcnkuCiAqIC0gbWV0aG9kOiBhKSBGb3IgdGhlIG51bWVyYXRvciBhbmQgcHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3I6IFByb2dyYW1tZSByZWNvcmRzIChmb3IgZXhhbXBsZSwgUE1UQ1QgcmVnaXN0ZXJzLCBBUlYgcmVnaXN0ZXJzLCBsYWJvdXIgYW5kIGRlbGl2ZXJ5IHJlZ2lzdGVycykgfCAgfCBiKSBGb3IgdGhlIHBvcHVsYXRpb24tYmFzZWQgZGVub21pbmF0b3I6IE1vZGVsbGluZy1iYXNlZCBlc3RpbWF0ZXMgKGZvciBleGFtcGxlLCBTcGVjdHJ1bSBBSU0pIHwgIHwgVGhlIHJlY29tbWVuZGVkIHJlcG9ydGluZyBwZXJpb2QgaXMgMTIgbW9udGhzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQ0MExvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQoKaW5jbHVkZSBISVZFbGVtZW50cyBjYWxsZWQgSEUKaW5jbHVkZSBISVZJbmRpY2F0b3JFbGVtZW50cyBjYWxsZWQgSElFCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZT4gZGVmYXVsdCBJbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdCgpjb250ZXh0IFBhdGllbnQKLyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIHRydWUKCi8qKgogKiBOdW1lcmF0b3IKICogCiAqIERlZmluaXRpb246IE51bWJlciBvZiBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gd2hvIGRlbGl2ZXJlZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QgYW5kIHJlY2VpdmVkIEFSVCBkdXJpbmcgcHJlZ25hbmN5IGFuZC9vciBhdCBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiB3b21lbiB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAoKCJPbiBBUlQiPVRydWUgYXQgbGFib3VyIGFuZCBkZWxpdmVyeSkgT1IgKCJPbiBBUlQiPVRydWUgZHVyaW5nIHByZWduYW5jeSwgZm9yIHRoaXMgcHJlZ25hbmN5KSkKICovCgoKZGVmaW5lICJOdW1lcmF0b3IiOgogIEhJRS4iSGFzIEhJVi1wb3NpdGl2ZSBTdGF0dXMiIGFuZAogIGV4aXN0cyhISUUuIkxpdmUgQmlydGggRGVsaXZlcnkiIEJpcnRoRGVsaXZlcnkKICAgIHdoZXJlIEJpcnRoRGVsaXZlcnkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICApIGFuZCAKICBleGlzdHMgKCAKICAgIEhFLiJPbiBBUlQgRC5ERTM4IiBBIAogICAgd2hlcmUgQS5lZmZlY3RpdmUudG9JbnRlcnZhbCgpIGR1cmluZyBGaXJzdChISUUuIkxpdmUgQmlydGggRGVsaXZlcnkiIEJpcnRoRGVsaXZlcnkKICAgIHdoZXJlIEJpcnRoRGVsaXZlcnkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIpLmVmZmVjdGl2ZS50b0ludGVydmFsKCkKICAgIG9yIAogICAgQS5lZmZlY3RpdmUudG9JbnRlcnZhbCgpIGR1cmluZyBGaXJzdChIRS4iQ3VycmVudGx5IHByZWduYW50IEIuREUyOSIgQyAKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiKS5wcmV2YWxlbmNlSW50ZXJ2YWwoKQogIAogICkKCgoKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IGEpIFByb2dyYW1tZS1iYXNlZC9zZXJ2aWNlIGRlbGl2ZXJ5IGRlbm9taW5hdG9yIHwgTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgYXR0ZW5kZWQgQU5DIG9yIGhhZCBhIGZhY2lsaXR5LWJhc2VkIGRlbGl2ZXJ5IHwgYikgUG9wdWxhdGlvbi1iYXNlZCBkZW5vbWluYXRvciB8IE51bWJlciBvZiBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gd2hvIGRlbGl2ZXJlZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogQ2FsY3VsYXRpb246IFByb2dyYW1tZS1iYXNlZC9zZXJ2aWNlIGRlbGl2ZXJ5IGRlbm9taW5hdG9yOiB8IENPVU5UIG9mIHdvbWVuIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiRGVsaXZlcnkgZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EIChoYWQgYW4gIkFOQyBjb250YWN0IGRhdGUiIGR1cmluZyByZXBvcnRpbmcgcGVyaW9kIE9SICJQbGFjZSBvZiBkZWxpdmVyeSIgd2FzIGEgJ0hlYWx0aCBmYWNpbGl0eScpIHwgIHwgUG9wdWxhdGlvbi1iYXNlZCBkZW5vbWluYXRvcjogfCAqTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKi8KCmRlZmluZSAiRGVub21pbmF0b3IiOgogIEhJRS4iSGFzIEhJVi1wb3NpdGl2ZSBTdGF0dXMiIGFuZAogIGV4aXN0cyhISUUuIkxpdmUgQmlydGggRGVsaXZlcnkiIEJpcnRoRGVsaXZlcnkKICAgIHdoZXJlIEJpcnRoRGVsaXZlcnkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICApYW5kIAogIChGaXJzdChISUUuIkFOQyB3aXRoaW4gcHJlZ25hbmN5IikucGVyaW9kLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICBvcgogICAgSElFLiJIYXMgRGVsaXZlcnkgaW4gSGVhbHRoIEZhY2lsaXR5IikKICAgIAoKLyogZW5kIFBvcHVsYXRpb25zICovCgovKgogKiBEaXNhZ2dyZWdhdG9ycwogKi8KCgpkZWZpbmUgIlRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiI6CiAgSElFLiJUaW1pbmcgb2YgQVJUIGluaXRpYXRpb24iCgpkZWZpbmUgIlN0cmF0aWZpY2F0aW9uIjoKICBISUUuIlRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiIuY29kZSA="
    }
  ]
}