Draft dQM CMS Content Implementation Guide
2025.1.0 - CI Build

Draft dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/dqm-content-cms-2025/ and changes regularly. See the Directory of published versions

: CMS347FHIRStatinPreventionTxCVD - XML Representation

Draft as of 2026-09-19

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="CMS347FHIRStatinPreventionTxCVD"/>
  <text>
    <status value="extensions"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
  <table class="narrative-table">
    <tbody>
<tr>


<th colspan="2" scope="row" class="row-header"><a name="metadata"> </a>Metadata</th>


</tr>







<tr>


<th scope="row" class="row-header">Version</th>



<td class="content-container">1.1.000</td>


</tr>
















<tr>


<th scope="row" class="row-header">Status</th>



<td class="content-container">Draft</td>


</tr>







































<tr>


<th scope="row" class="row-header">Type</th>



<td class="content-container">
    <a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library


</td>


</tr>













<tr>


<th colspan="2" scope="row" class="row-header"><a name="parameters"> </a>Parameters</th>


</tr>


<tr>


<th scope="row" class="row-header">Parameter</th>



<td class="content-container">None</td>


</tr>








  <tr>


<th colspan="2" scope="row" class="row-header">Library Content</th>


</tr>
  
    
    <tr>
      <th scope="row" class="row-header">CQL Content</th>
      <td>
        <a name="cql-content"> </a>
        <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
NOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.
*/
library CMS347FHIRStatinPreventionTxCVD version '1.1.000'

using USQualityCore version '0.1.0-cibuild'
using USCore version '6.1.0-derived'
using FHIR version '4.0.1'

include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon
include hl7.fhir.us.cql.CumulativeMedicationDuration version '2.0.0-ballot' called CMD
include hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon
include hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements

include USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon
include SupplementalDataElements version '6.1.000' called SDE
include Status version '2.1.000' called Status
include Hospice version '7.1.000' called Hospice
include PalliativeCare version '2.1.000' called PalliativeCare

codesystem &quot;ICD10CM&quot;: 'http://hl7.org/fhir/sid/icd-10-cm'
codesystem &quot;LOINC&quot;: 'http://loinc.org'

valueset &quot;Annual Wellness Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240'
valueset &quot;Atherosclerosis and Peripheral Arterial Disease&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.21'
valueset &quot;Breastfeeding&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.73'
valueset &quot;CABG Surgeries&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.694'
valueset &quot;CABG or PCI Procedure&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1138.566'
valueset &quot;Carotid Intervention&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.204'
valueset &quot;Cerebrovascular Disease Stroke or TIA&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.44'
valueset &quot;Diabetes&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.103.12.1001'
valueset &quot;End Stage Renal Disease&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.353'
valueset &quot;Familial Hypercholesterolemia&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.100'
valueset &quot;Hepatitis A&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1024'
valueset &quot;Hepatitis B&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.269'
valueset &quot;High Intensity Statin Therapy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1572'
valueset &quot;Ischemic Heart Disease or Other Related Diagnoses&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.46'
valueset &quot;LDL Cholesterol&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1573'
valueset &quot;Liver Disease&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.42'
valueset &quot;Low Intensity Statin Therapy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1574'
valueset &quot;Medical Reason&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1007'
valueset &quot;Moderate Intensity Statin Therapy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1575'
valueset &quot;Myocardial Infarction&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.101'
valueset &quot;Office Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'
valueset &quot;Outpatient Consultation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008'
valueset &quot;Outpatient Encounters for Preventive Care&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1576'
valueset &quot;PCI&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.67'
valueset &quot;Preventive Care Services Established Office Visit, 18 and Up&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025'
valueset &quot;Preventive Care Services Individual Counseling&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026'
valueset &quot;Preventive Care Services Initial Office Visit, 18 and Up&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023'
valueset &quot;Preventive Care Services Other&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.11.1150'
valueset &quot;Rhabdomyolysis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.102'
valueset &quot;Stable and Unstable Angina&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.47'
valueset &quot;Statin Allergen&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.42'
valueset &quot;Statin Associated Muscle Symptoms&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.85'
valueset &quot;Telemedicine Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1248.276'

code &quot;Cardiovascular disease 10Y risk [Likelihood]&quot;: '99055-6' from &quot;LOINC&quot; display 'Cardiovascular disease 10Y risk [Likelihood]'
code &quot;Cardiovascular disease 10Y risk [Likelihood] ACC-AHA Pooled Cohort by Goff 2013&quot;: '79423-0' from &quot;LOINC&quot; display 'Cardiovascular disease 10Y risk [Likelihood] ACC-AHA Pooled Cohort by Goff 2013'
code &quot;Subsequent non-ST elevation (NSTEMI) myocardial infarction&quot;: 'I22.2' from &quot;ICD10CM&quot; display 'Subsequent non-ST elevation (NSTEMI) myocardial infarction'

parameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;
  default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)

context Patient

define &quot;Initial Population 1&quot;:
  exists &quot;ASCVD Diagnosis or Procedure before End of Measurement Period&quot;
    and exists &quot;Qualifying Encounter During Day of Measurement Period&quot;

define &quot;Initial Population 2&quot;:
  &quot;Patients Aged 20 to 75 with LDL Cholesterol Result Greater than or Equal to 190 or Hypercholesterolemia without ASCVD&quot;
    and exists &quot;Qualifying Encounter During Day of Measurement Period&quot;

define &quot;Initial Population 3&quot;:
  &quot;Patients Aged 40 to 75 Years with Diabetes without ASCVD or LDL Greater than 190 or Hypercholesterolemia&quot;
    and exists &quot;Qualifying Encounter During Day of Measurement Period&quot;

define &quot;Initial Population 4&quot;:
  &quot;Patients Age 40 to 75 Years and have a 10 Year CVD Risk of High without ASCVD and High LDL and Diabetes&quot;
    and exists &quot;Qualifying Encounter During Day of Measurement Period&quot;

define &quot;Denominator 1&quot;:
  &quot;Initial Population 1&quot;

define &quot;Denominator 2&quot;:
  &quot;Initial Population 2&quot;

define &quot;Denominator 3&quot;:
  &quot;Initial Population 3&quot;

define &quot;Denominator 4&quot;:
  &quot;Initial Population 4&quot;

define &quot;Denominator Exclusions&quot;:
  // [E-13] base FHIR.Condition retrieve: sibling-profile union -&gt; Choice&lt;...&gt; cannot widen to
  // FHIR.Condition for .prevalenceInterval()/.isVerified() (defect-tracking/engine-issues.md E-13).
  // Original:
  //   exists ( ( [ConditionProblemsHealthConcerns: &quot;Breastfeeding&quot;]
  //       union [ConditionProblemsHealthConcerns: &quot;Rhabdomyolysis&quot;]
  //       union [ConditionEncounterDiagnosis: &quot;Breastfeeding&quot;]
  //       union [ConditionEncounterDiagnosis: &quot;Rhabdomyolysis&quot;] ) ExclusionDiagnosis
  exists ( ( [FHIR.Condition: &quot;Breastfeeding&quot;]
      union [FHIR.Condition: &quot;Rhabdomyolysis&quot;] ) ExclusionDiagnosis
      where ExclusionDiagnosis.prevalenceInterval ( ) overlaps day of &quot;Measurement Period&quot;
        and ExclusionDiagnosis.isVerified ( )
  )

define &quot;Denominator Exceptions&quot;:
  &quot;Has Allergy to Statin&quot;
    or Hospice.&quot;Has Hospice Services&quot;
    or PalliativeCare.&quot;Has Palliative Care in the Measurement Period&quot;
    or &quot;Has Hepatitis or Liver Disease Diagnosis&quot;
    or &quot;Has Statin Associated Muscle Symptoms&quot;
    or &quot;Has ESRD Diagnosis&quot;
    or &quot;Has Adverse Reaction to Statin&quot;
    or &quot;Has Medical Reason for Not Ordering Statin Therapy&quot;

define &quot;Numerator&quot;:
  exists &quot;Statin Therapy Ordered during Measurement Period&quot;
    or exists &quot;Medication Active during the Measurement Period&quot;

define &quot;ASCVD Diagnosis or Procedure before End of Measurement Period&quot;:
  ( ( [ConditionProblemsHealthConcerns: &quot;Myocardial Infarction&quot;]
      union [ConditionProblemsHealthConcerns: &quot;Subsequent non-ST elevation (NSTEMI) myocardial infarction&quot;]
      union [ConditionProblemsHealthConcerns: &quot;Cerebrovascular Disease Stroke or TIA&quot;]
      union [ConditionProblemsHealthConcerns: &quot;Atherosclerosis and Peripheral Arterial Disease&quot;]
      union [ConditionProblemsHealthConcerns: &quot;Ischemic Heart Disease or Other Related Diagnoses&quot;]
      union [ConditionProblemsHealthConcerns: &quot;Stable and Unstable Angina&quot;] ) ASCVDDiagnosis
      where ASCVDDiagnosis.prevalenceInterval ( ) starts on or before day of end of &quot;Measurement Period&quot;
        and ASCVDDiagnosis.isVerified ( )
  )
    union ( ( [Procedure: &quot;PCI&quot;]
        union [Procedure: &quot;CABG Surgeries&quot;]
        union [Procedure: &quot;Carotid Intervention&quot;]
        union [Procedure: &quot;CABG or PCI Procedure&quot;] ) ASCVDProcedure
        where ASCVDProcedure.performed.toInterval ( ) starts on or before day of end of &quot;Measurement Period&quot;
          and ASCVDProcedure.status = 'completed'
    )

define &quot;Has Adverse Reaction to Statin&quot;:
  exists ( [AdverseEvent: &quot;Statin Allergen&quot;] StatinReaction
      where Coalesce(StatinReaction.date, StatinReaction.recordedDate) during day of &quot;Measurement Period&quot;
  )

define &quot;Has Allergy to Statin&quot;:
  exists ( [AllergyIntolerance: &quot;Statin Allergen&quot;] StatinAllergy
      where StatinAllergy.prevalenceInterval ( ) overlaps day of &quot;Measurement Period&quot;
        and StatinAllergy.clinicalStatus ~ FHIRCommon.&quot;allergy-active&quot;
  )

define &quot;Has Diabetes Diagnosis&quot;:
  exists ( [ConditionProblemsHealthConcerns: &quot;Diabetes&quot;] DiabetesDiagnosis
      where DiabetesDiagnosis.prevalenceInterval ( ) overlaps day of &quot;Measurement Period&quot;
        and DiabetesDiagnosis.isVerified ( )
  )

define &quot;Has ESRD Diagnosis&quot;:
  exists ( [ConditionProblemsHealthConcerns: &quot;End Stage Renal Disease&quot;] ESRD
      where ESRD.prevalenceInterval ( ) overlaps day of &quot;Measurement Period&quot;
        and ESRD.isVerified ( )
  )

define &quot;Has Hepatitis or Liver Disease Diagnosis&quot;:
  exists ( ( [ConditionProblemsHealthConcerns: &quot;Hepatitis A&quot;]
      union [ConditionProblemsHealthConcerns: &quot;Hepatitis B&quot;]
      union [ConditionProblemsHealthConcerns: &quot;Liver Disease&quot;] ) HepatitisLiverDisease
      where HepatitisLiverDisease.prevalenceInterval ( ) overlaps day of &quot;Measurement Period&quot;
        and HepatitisLiverDisease.isVerified ( )
  )

define &quot;Has Medical Reason for Not Ordering Statin Therapy&quot;:
  exists ( ( [MedicationNotRequested: &quot;Low Intensity Statin Therapy&quot;]
      union [MedicationNotRequested: &quot;Moderate Intensity Statin Therapy&quot;]
      union [MedicationNotRequested: &quot;High Intensity Statin Therapy&quot;] ) NoStatinTherapyOrdered
      with &quot;Qualifying Encounter During Day of Measurement Period&quot; QualifyingEncounter
        such that NoStatinTherapyOrdered.authoredOn during day of QualifyingEncounter.period
          and NoStatinTherapyOrdered.status in { 'active', 'completed' }
          and NoStatinTherapyOrdered.reasonCode in &quot;Medical Reason&quot;
  )

define &quot;Has Statin Associated Muscle Symptoms&quot;:
  exists ( [ConditionProblemsHealthConcerns: &quot;Statin Associated Muscle Symptoms&quot;] StatinMuscleSymptom
      where StatinMuscleSymptom.prevalenceInterval ( ) overlaps day of &quot;Measurement Period&quot;
        and StatinMuscleSymptom.isVerified ( )
  )

define &quot;Hypercholesterolemia Diagnosis&quot;:
  ( [ConditionProblemsHealthConcerns: &quot;Familial Hypercholesterolemia&quot;] Hypercholesterolemia
      where Hypercholesterolemia.prevalenceInterval ( ) starts on or before day of end of &quot;Measurement Period&quot;
        and Hypercholesterolemia.isVerified ( )
  )

define &quot;LDL Result Greater Than or Equal To 190&quot;:
  [LaboratoryResultObservation: &quot;LDL Cholesterol&quot;] LDL190
    where LDL190.value as Quantity &gt;= 190 'mg/dL'
      and LDL190.effective.toInterval ( ) starts on or before day of end of &quot;Measurement Period&quot;
      and LDL190.status in { 'final', 'amended', 'corrected', 'appended' }

define &quot;Medication Active during the Measurement Period&quot;:
  ( [MedicationRequest: &quot;Low Intensity Statin Therapy&quot;]
    union [MedicationRequest: &quot;Moderate Intensity Statin Therapy&quot;]
    union [MedicationRequest: &quot;High Intensity Statin Therapy&quot;] ) ActiveStatin
    where ActiveStatin.medicationRequestPeriod ( ) overlaps day of &quot;Measurement Period&quot;
      and ActiveStatin.status in { 'active', 'completed' }

define &quot;Patients Aged 20 to 75 with LDL Cholesterol Result Greater than or Equal to 190 or Hypercholesterolemia without ASCVD&quot;:
  &quot;Patients Aged 20 to 75 at Start of Measurement Period&quot;
    and exists ( &quot;LDL Result Greater Than or Equal To 190&quot;
        union &quot;Hypercholesterolemia Diagnosis&quot;
    )
    and not exists ( &quot;ASCVD Diagnosis or Procedure before End of Measurement Period&quot; )

define &quot;Patients Aged 20 to 75 at Start of Measurement Period&quot;:
  AgeInYearsAt(date from start of &quot;Measurement Period&quot;) in Interval[20, 75]

define &quot;Patients Aged 40 to 75 Years with Diabetes without ASCVD or LDL Greater than 190 or Hypercholesterolemia&quot;:
  AgeInYearsAt(date from start of &quot;Measurement Period&quot;) in Interval[40, 75]
    and &quot;Has Diabetes Diagnosis&quot;
    and ( not exists &quot;ASCVD Diagnosis or Procedure before End of Measurement Period&quot;
        and not exists &quot;LDL Result Greater Than or Equal To 190&quot;
        and not exists &quot;Hypercholesterolemia Diagnosis&quot;
    )

define &quot;Patients Age 40 to 75 Years and have a 10 Year CVD Risk of High without ASCVD and High LDL and Diabetes&quot;:
  AgeInYearsAt(date from start of &quot;Measurement Period&quot;) in Interval[40, 75]
    and &quot;Ten Year CVD Risk is High&quot;
    and not ( exists &quot;ASCVD Diagnosis or Procedure before End of Measurement Period&quot;
        or exists &quot;Hypercholesterolemia Diagnosis&quot;
        or exists &quot;LDL Result Greater Than or Equal To 190&quot;
        or &quot;Has Diabetes Diagnosis&quot;
    )

define &quot;Qualifying Encounter During Day of Measurement Period&quot;:
  ( [Encounter: &quot;Annual Wellness Visit&quot;]
    union [Encounter: &quot;Office Visit&quot;]
    union [Encounter: &quot;Outpatient Consultation&quot;]
    union [Encounter: &quot;Outpatient Encounters for Preventive Care&quot;]
    union [Encounter: &quot;Preventive Care Services Established Office Visit, 18 and Up&quot;]
    union [Encounter: &quot;Preventive Care Services Individual Counseling&quot;]
    union [Encounter: &quot;Preventive Care Services Initial Office Visit, 18 and Up&quot;]
    union [Encounter: &quot;Preventive Care Services Other&quot;]
    union [Encounter: &quot;Telemedicine Services&quot;] ) QualifyingEncounter
    where QualifyingEncounter.period during day of &quot;Measurement Period&quot;
      and QualifyingEncounter.status = 'finished'

define &quot;Statin Therapy Ordered during Measurement Period&quot;:
  ( [MedicationRequest: &quot;Low Intensity Statin Therapy&quot;]
    union [MedicationRequest: &quot;Moderate Intensity Statin Therapy&quot;]
    union [MedicationRequest: &quot;High Intensity Statin Therapy&quot;] ) StatinRequest
    where StatinRequest.authoredOn during day of &quot;Measurement Period&quot;
      and StatinRequest.status in { 'active', 'completed' }
      and StatinRequest.intent in { 'order', 'original-order', 'reflex-order', 'filter-order', 'instance-order' }

define &quot;Ten Year CVD Risk is High&quot;:
  exists ( ( [ObservationScreeningAssessment: &quot;Cardiovascular disease 10Y risk [Likelihood]&quot;]
      union [ObservationScreeningAssessment: &quot;Cardiovascular disease 10Y risk [Likelihood] ACC-AHA Pooled Cohort by Goff 2013&quot;] ) AtRiskCVD
      where AtRiskCVD.value as Quantity &gt;= 20 '%'
        and AtRiskCVD.effective.toInterval ( ) during day of &quot;Measurement Period&quot;
        and AtRiskCVD.status in { 'final', 'amended', 'corrected' }
  )

define fluent function isVerified(condition Choice&lt;ConditionEncounterDiagnosis, ConditionProblemsHealthConcerns&gt;):
  condition.verificationStatus is not null implies ( condition.verificationStatus ~ Status.&quot;confirmed&quot;
      or condition.verificationStatus ~ Status.&quot;unconfirmed&quot;
      or condition.verificationStatus ~ Status.&quot;provisional&quot;
      or condition.verificationStatus ~ Status.&quot;differential&quot;
  )

define &quot;SDE Ethnicity&quot;:
  SDE.&quot;SDE Ethnicity&quot;

define &quot;SDE Payer&quot;:
  SDE.&quot;SDE Payer&quot;

define &quot;SDE Race&quot;:
  SDE.&quot;SDE Race&quot;

define &quot;SDE Sex&quot;:
  SDE.&quot;SDE Sex&quot;</code></pre>
      </td>
    </tr>
    
  



<tr>
  <th colspan="2" scope="row" class="row-header">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>
</tr>

    </tbody>
  </table>
</div>
  </text>
  <extension
             url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem">
    <valueReference>
      <reference value="Device/cqf-tooling"/>
    </valueReference>
  </extension>
  <url value="https://madie.cms.gov/Library/CMS347FHIRStatinPreventionTxCVD"/>
  <version value="1.1.000"/>
  <name value="CMS347FHIRStatinPreventionTxCVD"/>
  <status value="draft"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2026-09-19T16:31:14+00:00"/>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMzNDdGSElSU3RhdGluUHJldmVudGlvblR4Q1ZEIHZlcnNpb24gJzEuMS4wMDAnCgp1c2luZyBVU1F1YWxpdHlDb3JlIHZlcnNpb24gJzAuMS4wLWNpYnVpbGQnCnVzaW5nIFVTQ29yZSB2ZXJzaW9uICc2LjEuMC1kZXJpdmVkJwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnIGNhbGxlZCBGSElSSGVscGVycwppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSQ29tbW9uIHZlcnNpb24gJzIuMC4wJyBjYWxsZWQgRkhJUkNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5DdW11bGF0aXZlTWVkaWNhdGlvbkR1cmF0aW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIENNRAppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVDb21tb24gdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgVVNDb3JlQ29tbW9uCmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLlVTQ29yZUVsZW1lbnRzIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUVsZW1lbnRzCgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCmluY2x1ZGUgSG9zcGljZSB2ZXJzaW9uICc3LjEuMDAwJyBjYWxsZWQgSG9zcGljZQppbmNsdWRlIFBhbGxpYXRpdmVDYXJlIHZlcnNpb24gJzIuMS4wMDAnIGNhbGxlZCBQYWxsaWF0aXZlQ2FyZQoKY29kZXN5c3RlbSAiSUNEMTBDTSI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9pY2QtMTAtY20nCmNvZGVzeXN0ZW0gIkxPSU5DIjogJ2h0dHA6Ly9sb2luYy5vcmcnCgp2YWx1ZXNldCAiQW5udWFsIFdlbGxuZXNzIFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjEyNDAnCnZhbHVlc2V0ICJBdGhlcm9zY2xlcm9zaXMgYW5kIFBlcmlwaGVyYWwgQXJ0ZXJpYWwgRGlzZWFzZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDcuMjEnCnZhbHVlc2V0ICJCcmVhc3RmZWVkaW5nIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTA0Ny43MycKdmFsdWVzZXQgIkNBQkcgU3VyZ2VyaWVzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjY5NCcKdmFsdWVzZXQgIkNBQkcgb3IgUENJIFByb2NlZHVyZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExMzguNTY2Jwp2YWx1ZXNldCAiQ2Fyb3RpZCBJbnRlcnZlbnRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjIwNCcKdmFsdWVzZXQgIkNlcmVicm92YXNjdWxhciBEaXNlYXNlIFN0cm9rZSBvciBUSUEiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ3LjQ0Jwp2YWx1ZXNldCAiRGlhYmV0ZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAzLjEyLjEwMDEnCnZhbHVlc2V0ICJFbmQgU3RhZ2UgUmVuYWwgRGlzZWFzZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4zNTMnCnZhbHVlc2V0ICJGYW1pbGlhbCBIeXBlcmNob2xlc3Rlcm9sZW1pYSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDcuMTAwJwp2YWx1ZXNldCAiSGVwYXRpdGlzIEEiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwMjQnCnZhbHVlc2V0ICJIZXBhdGl0aXMgQiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42Ny4xLjEwMS4xLjI2OScKdmFsdWVzZXQgIkhpZ2ggSW50ZW5zaXR5IFN0YXRpbiBUaGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE1NzInCnZhbHVlc2V0ICJJc2NoZW1pYyBIZWFydCBEaXNlYXNlIG9yIE90aGVyIFJlbGF0ZWQgRGlhZ25vc2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTA0Ny40NicKdmFsdWVzZXQgIkxETCBDaG9sZXN0ZXJvbCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xNTczJwp2YWx1ZXNldCAiTGl2ZXIgRGlzZWFzZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDcuNDInCnZhbHVlc2V0ICJMb3cgSW50ZW5zaXR5IFN0YXRpbiBUaGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE1NzQnCnZhbHVlc2V0ICJNZWRpY2FsIFJlYXNvbiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMDA3Jwp2YWx1ZXNldCAiTW9kZXJhdGUgSW50ZW5zaXR5IFN0YXRpbiBUaGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE1NzUnCnZhbHVlc2V0ICJNeW9jYXJkaWFsIEluZmFyY3Rpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTA4LjEwMScKdmFsdWVzZXQgIk9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMScKdmFsdWVzZXQgIk91dHBhdGllbnQgQ29uc3VsdGF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDA4Jwp2YWx1ZXNldCAiT3V0cGF0aWVudCBFbmNvdW50ZXJzIGZvciBQcmV2ZW50aXZlIENhcmUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTU3NicKdmFsdWVzZXQgIlBDSSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDUuNjcnCnZhbHVlc2V0ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAxOCBhbmQgVXAiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMjUnCnZhbHVlc2V0ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5kaXZpZHVhbCBDb3Vuc2VsaW5nIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI2Jwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEluaXRpYWwgT2ZmaWNlIFZpc2l0LCAxOCBhbmQgVXAiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMjMnCnZhbHVlc2V0ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgT3RoZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjExLjExNTAnCnZhbHVlc2V0ICJSaGFiZG9teW9seXNpcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDcuMTAyJwp2YWx1ZXNldCAiU3RhYmxlIGFuZCBVbnN0YWJsZSBBbmdpbmEiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ3LjQ3Jwp2YWx1ZXNldCAiU3RhdGluIEFsbGVyZ2VuIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMC40MicKdmFsdWVzZXQgIlN0YXRpbiBBc3NvY2lhdGVkIE11c2NsZSBTeW1wdG9tcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExMDguODUnCnZhbHVlc2V0ICJUZWxlbWVkaWNpbmUgU2VydmljZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMjQ4LjI3NicKCmNvZGUgIkNhcmRpb3Zhc2N1bGFyIGRpc2Vhc2UgMTBZIHJpc2sgW0xpa2VsaWhvb2RdIjogJzk5MDU1LTYnIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdDYXJkaW92YXNjdWxhciBkaXNlYXNlIDEwWSByaXNrIFtMaWtlbGlob29kXScKY29kZSAiQ2FyZGlvdmFzY3VsYXIgZGlzZWFzZSAxMFkgcmlzayBbTGlrZWxpaG9vZF0gQUNDLUFIQSBQb29sZWQgQ29ob3J0IGJ5IEdvZmYgMjAxMyI6ICc3OTQyMy0wJyBmcm9tICJMT0lOQyIgZGlzcGxheSAnQ2FyZGlvdmFzY3VsYXIgZGlzZWFzZSAxMFkgcmlzayBbTGlrZWxpaG9vZF0gQUNDLUFIQSBQb29sZWQgQ29ob3J0IGJ5IEdvZmYgMjAxMycKY29kZSAiU3Vic2VxdWVudCBub24tU1QgZWxldmF0aW9uIChOU1RFTUkpIG15b2NhcmRpYWwgaW5mYXJjdGlvbiI6ICdJMjIuMicgZnJvbSAiSUNEMTBDTSIgZGlzcGxheSAnU3Vic2VxdWVudCBub24tU1QgZWxldmF0aW9uIChOU1RFTUkpIG15b2NhcmRpYWwgaW5mYXJjdGlvbicKCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlVGltZT4KICBkZWZhdWx0IEludGVydmFsW0AyMDI2LTAxLTAxVDAwOjAwOjAwLjAwMFosIEAyMDI3LTAxLTAxVDAwOjAwOjAwLjAwMFopCgpjb250ZXh0IFBhdGllbnQKCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIDEiOgogIGV4aXN0cyAiQVNDVkQgRGlhZ25vc2lzIG9yIFByb2NlZHVyZSBiZWZvcmUgRW5kIG9mIE1lYXN1cmVtZW50IFBlcmlvZCIKICAgIGFuZCBleGlzdHMgIlF1YWxpZnlpbmcgRW5jb3VudGVyIER1cmluZyBEYXkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMiI6CiAgIlBhdGllbnRzIEFnZWQgMjAgdG8gNzUgd2l0aCBMREwgQ2hvbGVzdGVyb2wgUmVzdWx0IEdyZWF0ZXIgdGhhbiBvciBFcXVhbCB0byAxOTAgb3IgSHlwZXJjaG9sZXN0ZXJvbGVtaWEgd2l0aG91dCBBU0NWRCIKICAgIGFuZCBleGlzdHMgIlF1YWxpZnlpbmcgRW5jb3VudGVyIER1cmluZyBEYXkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMyI6CiAgIlBhdGllbnRzIEFnZWQgNDAgdG8gNzUgWWVhcnMgd2l0aCBEaWFiZXRlcyB3aXRob3V0IEFTQ1ZEIG9yIExETCBHcmVhdGVyIHRoYW4gMTkwIG9yIEh5cGVyY2hvbGVzdGVyb2xlbWlhIgogICAgYW5kIGV4aXN0cyAiUXVhbGlmeWluZyBFbmNvdW50ZXIgRHVyaW5nIERheSBvZiBNZWFzdXJlbWVudCBQZXJpb2QiCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiA0IjoKICAiUGF0aWVudHMgQWdlIDQwIHRvIDc1IFllYXJzIGFuZCBoYXZlIGEgMTAgWWVhciBDVkQgUmlzayBvZiBIaWdoIHdpdGhvdXQgQVNDVkQgYW5kIEhpZ2ggTERMIGFuZCBEaWFiZXRlcyIKICAgIGFuZCBleGlzdHMgIlF1YWxpZnlpbmcgRW5jb3VudGVyIER1cmluZyBEYXkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJEZW5vbWluYXRvciAxIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIDEiCgpkZWZpbmUgIkRlbm9taW5hdG9yIDIiOgogICJJbml0aWFsIFBvcHVsYXRpb24gMiIKCmRlZmluZSAiRGVub21pbmF0b3IgMyI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiAzIgoKZGVmaW5lICJEZW5vbWluYXRvciA0IjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIDQiCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2x1c2lvbnMiOgogIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlOiBzaWJsaW5nLXByb2ZpbGUgdW5pb24gLT4gQ2hvaWNlPC4uLj4gY2Fubm90IHdpZGVuIHRvCiAgLy8gRkhJUi5Db25kaXRpb24gZm9yIC5wcmV2YWxlbmNlSW50ZXJ2YWwoKS8uaXNWZXJpZmllZCgpIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKS4KICAvLyBPcmlnaW5hbDoKICAvLyAgIGV4aXN0cyAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJCcmVhc3RmZWVkaW5nIl0KICAvLyAgICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlJoYWJkb215b2x5c2lzIl0KICAvLyAgICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiQnJlYXN0ZmVlZGluZyJdCiAgLy8gICAgICAgdW5pb24gW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlJoYWJkb215b2x5c2lzIl0gKSBFeGNsdXNpb25EaWFnbm9zaXMKICBleGlzdHMgKCAoIFtGSElSLkNvbmRpdGlvbjogIkJyZWFzdGZlZWRpbmciXQogICAgICB1bmlvbiBbRkhJUi5Db25kaXRpb246ICJSaGFiZG9teW9seXNpcyJdICkgRXhjbHVzaW9uRGlhZ25vc2lzCiAgICAgIHdoZXJlIEV4Y2x1c2lvbkRpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgIGFuZCBFeGNsdXNpb25EaWFnbm9zaXMuaXNWZXJpZmllZCAoICkKICApCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2VwdGlvbnMiOgogICJIYXMgQWxsZXJneSB0byBTdGF0aW4iCiAgICBvciBIb3NwaWNlLiJIYXMgSG9zcGljZSBTZXJ2aWNlcyIKICAgIG9yIFBhbGxpYXRpdmVDYXJlLiJIYXMgUGFsbGlhdGl2ZSBDYXJlIGluIHRoZSBNZWFzdXJlbWVudCBQZXJpb2QiCiAgICBvciAiSGFzIEhlcGF0aXRpcyBvciBMaXZlciBEaXNlYXNlIERpYWdub3NpcyIKICAgIG9yICJIYXMgU3RhdGluIEFzc29jaWF0ZWQgTXVzY2xlIFN5bXB0b21zIgogICAgb3IgIkhhcyBFU1JEIERpYWdub3NpcyIKICAgIG9yICJIYXMgQWR2ZXJzZSBSZWFjdGlvbiB0byBTdGF0aW4iCiAgICBvciAiSGFzIE1lZGljYWwgUmVhc29uIGZvciBOb3QgT3JkZXJpbmcgU3RhdGluIFRoZXJhcHkiCgpkZWZpbmUgIk51bWVyYXRvciI6CiAgZXhpc3RzICJTdGF0aW4gVGhlcmFweSBPcmRlcmVkIGR1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiCiAgICBvciBleGlzdHMgIk1lZGljYXRpb24gQWN0aXZlIGR1cmluZyB0aGUgTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJBU0NWRCBEaWFnbm9zaXMgb3IgUHJvY2VkdXJlIGJlZm9yZSBFbmQgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJNeW9jYXJkaWFsIEluZmFyY3Rpb24iXQogICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlN1YnNlcXVlbnQgbm9uLVNUIGVsZXZhdGlvbiAoTlNURU1JKSBteW9jYXJkaWFsIGluZmFyY3Rpb24iXQogICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkNlcmVicm92YXNjdWxhciBEaXNlYXNlIFN0cm9rZSBvciBUSUEiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkF0aGVyb3NjbGVyb3NpcyBhbmQgUGVyaXBoZXJhbCBBcnRlcmlhbCBEaXNlYXNlIl0KICAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJJc2NoZW1pYyBIZWFydCBEaXNlYXNlIG9yIE90aGVyIFJlbGF0ZWQgRGlhZ25vc2VzIl0KICAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJTdGFibGUgYW5kIFVuc3RhYmxlIEFuZ2luYSJdICkgQVNDVkREaWFnbm9zaXMKICAgICAgd2hlcmUgQVNDVkREaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgb24gb3IgYmVmb3JlIGRheSBvZiBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgICBhbmQgQVNDVkREaWFnbm9zaXMuaXNWZXJpZmllZCAoICkKICApCiAgICB1bmlvbiAoICggW1Byb2NlZHVyZTogIlBDSSJdCiAgICAgICAgdW5pb24gW1Byb2NlZHVyZTogIkNBQkcgU3VyZ2VyaWVzIl0KICAgICAgICB1bmlvbiBbUHJvY2VkdXJlOiAiQ2Fyb3RpZCBJbnRlcnZlbnRpb24iXQogICAgICAgIHVuaW9uIFtQcm9jZWR1cmU6ICJDQUJHIG9yIFBDSSBQcm9jZWR1cmUiXSApIEFTQ1ZEUHJvY2VkdXJlCiAgICAgICAgd2hlcmUgQVNDVkRQcm9jZWR1cmUucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBvbiBvciBiZWZvcmUgZGF5IG9mIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgICAgYW5kIEFTQ1ZEUHJvY2VkdXJlLnN0YXR1cyA9ICdjb21wbGV0ZWQnCiAgICApCgpkZWZpbmUgIkhhcyBBZHZlcnNlIFJlYWN0aW9uIHRvIFN0YXRpbiI6CiAgZXhpc3RzICggW0FkdmVyc2VFdmVudDogIlN0YXRpbiBBbGxlcmdlbiJdIFN0YXRpblJlYWN0aW9uCiAgICAgIHdoZXJlIENvYWxlc2NlKFN0YXRpblJlYWN0aW9uLmRhdGUsIFN0YXRpblJlYWN0aW9uLnJlY29yZGVkRGF0ZSkgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICkKCmRlZmluZSAiSGFzIEFsbGVyZ3kgdG8gU3RhdGluIjoKICBleGlzdHMgKCBbQWxsZXJneUludG9sZXJhbmNlOiAiU3RhdGluIEFsbGVyZ2VuIl0gU3RhdGluQWxsZXJneQogICAgICB3aGVyZSBTdGF0aW5BbGxlcmd5LnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIFN0YXRpbkFsbGVyZ3kuY2xpbmljYWxTdGF0dXMgfiBGSElSQ29tbW9uLiJhbGxlcmd5LWFjdGl2ZSIKICApCgpkZWZpbmUgIkhhcyBEaWFiZXRlcyBEaWFnbm9zaXMiOgogIGV4aXN0cyAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiRGlhYmV0ZXMiXSBEaWFiZXRlc0RpYWdub3NpcwogICAgICB3aGVyZSBEaWFiZXRlc0RpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgIGFuZCBEaWFiZXRlc0RpYWdub3Npcy5pc1ZlcmlmaWVkICggKQogICkKCmRlZmluZSAiSGFzIEVTUkQgRGlhZ25vc2lzIjoKICBleGlzdHMgKCBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkVuZCBTdGFnZSBSZW5hbCBEaXNlYXNlIl0gRVNSRAogICAgICB3aGVyZSBFU1JELnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIEVTUkQuaXNWZXJpZmllZCAoICkKICApCgpkZWZpbmUgIkhhcyBIZXBhdGl0aXMgb3IgTGl2ZXIgRGlzZWFzZSBEaWFnbm9zaXMiOgogIGV4aXN0cyAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJIZXBhdGl0aXMgQSJdCiAgICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSGVwYXRpdGlzIEIiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkxpdmVyIERpc2Vhc2UiXSApIEhlcGF0aXRpc0xpdmVyRGlzZWFzZQogICAgICB3aGVyZSBIZXBhdGl0aXNMaXZlckRpc2Vhc2UucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgICBhbmQgSGVwYXRpdGlzTGl2ZXJEaXNlYXNlLmlzVmVyaWZpZWQgKCApCiAgKQoKZGVmaW5lICJIYXMgTWVkaWNhbCBSZWFzb24gZm9yIE5vdCBPcmRlcmluZyBTdGF0aW4gVGhlcmFweSI6CiAgZXhpc3RzICggKCBbTWVkaWNhdGlvbk5vdFJlcXVlc3RlZDogIkxvdyBJbnRlbnNpdHkgU3RhdGluIFRoZXJhcHkiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvbk5vdFJlcXVlc3RlZDogIk1vZGVyYXRlIEludGVuc2l0eSBTdGF0aW4gVGhlcmFweSJdCiAgICAgIHVuaW9uIFtNZWRpY2F0aW9uTm90UmVxdWVzdGVkOiAiSGlnaCBJbnRlbnNpdHkgU3RhdGluIFRoZXJhcHkiXSApIE5vU3RhdGluVGhlcmFweU9yZGVyZWQKICAgICAgd2l0aCAiUXVhbGlmeWluZyBFbmNvdW50ZXIgRHVyaW5nIERheSBvZiBNZWFzdXJlbWVudCBQZXJpb2QiIFF1YWxpZnlpbmdFbmNvdW50ZXIKICAgICAgICBzdWNoIHRoYXQgTm9TdGF0aW5UaGVyYXB5T3JkZXJlZC5hdXRob3JlZE9uIGR1cmluZyBkYXkgb2YgUXVhbGlmeWluZ0VuY291bnRlci5wZXJpb2QKICAgICAgICAgIGFuZCBOb1N0YXRpblRoZXJhcHlPcmRlcmVkLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgICAgICBhbmQgTm9TdGF0aW5UaGVyYXB5T3JkZXJlZC5yZWFzb25Db2RlIGluICJNZWRpY2FsIFJlYXNvbiIKICApCgpkZWZpbmUgIkhhcyBTdGF0aW4gQXNzb2NpYXRlZCBNdXNjbGUgU3ltcHRvbXMiOgogIGV4aXN0cyAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiU3RhdGluIEFzc29jaWF0ZWQgTXVzY2xlIFN5bXB0b21zIl0gU3RhdGluTXVzY2xlU3ltcHRvbQogICAgICB3aGVyZSBTdGF0aW5NdXNjbGVTeW1wdG9tLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIFN0YXRpbk11c2NsZVN5bXB0b20uaXNWZXJpZmllZCAoICkKICApCgpkZWZpbmUgIkh5cGVyY2hvbGVzdGVyb2xlbWlhIERpYWdub3NpcyI6CiAgKCBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkZhbWlsaWFsIEh5cGVyY2hvbGVzdGVyb2xlbWlhIl0gSHlwZXJjaG9sZXN0ZXJvbGVtaWEKICAgICAgd2hlcmUgSHlwZXJjaG9sZXN0ZXJvbGVtaWEucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgb24gb3IgYmVmb3JlIGRheSBvZiBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgICBhbmQgSHlwZXJjaG9sZXN0ZXJvbGVtaWEuaXNWZXJpZmllZCAoICkKICApCgpkZWZpbmUgIkxETCBSZXN1bHQgR3JlYXRlciBUaGFuIG9yIEVxdWFsIFRvIDE5MCI6CiAgW0xhYm9yYXRvcnlSZXN1bHRPYnNlcnZhdGlvbjogIkxETCBDaG9sZXN0ZXJvbCJdIExETDE5MAogICAgd2hlcmUgTERMMTkwLnZhbHVlIGFzIFF1YW50aXR5ID49IDE5MCAnbWcvZEwnCiAgICAgIGFuZCBMREwxOTAuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBvbiBvciBiZWZvcmUgZGF5IG9mIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICBhbmQgTERMMTkwLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcsICdhcHBlbmRlZCcgfQoKZGVmaW5lICJNZWRpY2F0aW9uIEFjdGl2ZSBkdXJpbmcgdGhlIE1lYXN1cmVtZW50IFBlcmlvZCI6CiAgKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJMb3cgSW50ZW5zaXR5IFN0YXRpbiBUaGVyYXB5Il0KICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIk1vZGVyYXRlIEludGVuc2l0eSBTdGF0aW4gVGhlcmFweSJdCiAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJIaWdoIEludGVuc2l0eSBTdGF0aW4gVGhlcmFweSJdICkgQWN0aXZlU3RhdGluCiAgICB3aGVyZSBBY3RpdmVTdGF0aW4ubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApIG92ZXJsYXBzIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICBhbmQgQWN0aXZlU3RhdGluLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CgpkZWZpbmUgIlBhdGllbnRzIEFnZWQgMjAgdG8gNzUgd2l0aCBMREwgQ2hvbGVzdGVyb2wgUmVzdWx0IEdyZWF0ZXIgdGhhbiBvciBFcXVhbCB0byAxOTAgb3IgSHlwZXJjaG9sZXN0ZXJvbGVtaWEgd2l0aG91dCBBU0NWRCI6CiAgIlBhdGllbnRzIEFnZWQgMjAgdG8gNzUgYXQgU3RhcnQgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgYW5kIGV4aXN0cyAoICJMREwgUmVzdWx0IEdyZWF0ZXIgVGhhbiBvciBFcXVhbCBUbyAxOTAiCiAgICAgICAgdW5pb24gIkh5cGVyY2hvbGVzdGVyb2xlbWlhIERpYWdub3NpcyIKICAgICkKICAgIGFuZCBub3QgZXhpc3RzICggIkFTQ1ZEIERpYWdub3NpcyBvciBQcm9jZWR1cmUgYmVmb3JlIEVuZCBvZiBNZWFzdXJlbWVudCBQZXJpb2QiICkKCmRlZmluZSAiUGF0aWVudHMgQWdlZCAyMCB0byA3NSBhdCBTdGFydCBvZiBNZWFzdXJlbWVudCBQZXJpb2QiOgogIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIpIGluIEludGVydmFsWzIwLCA3NV0KCmRlZmluZSAiUGF0aWVudHMgQWdlZCA0MCB0byA3NSBZZWFycyB3aXRoIERpYWJldGVzIHdpdGhvdXQgQVNDVkQgb3IgTERMIEdyZWF0ZXIgdGhhbiAxOTAgb3IgSHlwZXJjaG9sZXN0ZXJvbGVtaWEiOgogIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIpIGluIEludGVydmFsWzQwLCA3NV0KICAgIGFuZCAiSGFzIERpYWJldGVzIERpYWdub3NpcyIKICAgIGFuZCAoIG5vdCBleGlzdHMgIkFTQ1ZEIERpYWdub3NpcyBvciBQcm9jZWR1cmUgYmVmb3JlIEVuZCBvZiBNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIG5vdCBleGlzdHMgIkxETCBSZXN1bHQgR3JlYXRlciBUaGFuIG9yIEVxdWFsIFRvIDE5MCIKICAgICAgICBhbmQgbm90IGV4aXN0cyAiSHlwZXJjaG9sZXN0ZXJvbGVtaWEgRGlhZ25vc2lzIgogICAgKQoKZGVmaW5lICJQYXRpZW50cyBBZ2UgNDAgdG8gNzUgWWVhcnMgYW5kIGhhdmUgYSAxMCBZZWFyIENWRCBSaXNrIG9mIEhpZ2ggd2l0aG91dCBBU0NWRCBhbmQgSGlnaCBMREwgYW5kIERpYWJldGVzIjoKICBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKSBpbiBJbnRlcnZhbFs0MCwgNzVdCiAgICBhbmQgIlRlbiBZZWFyIENWRCBSaXNrIGlzIEhpZ2giCiAgICBhbmQgbm90ICggZXhpc3RzICJBU0NWRCBEaWFnbm9zaXMgb3IgUHJvY2VkdXJlIGJlZm9yZSBFbmQgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgIG9yIGV4aXN0cyAiSHlwZXJjaG9sZXN0ZXJvbGVtaWEgRGlhZ25vc2lzIgogICAgICAgIG9yIGV4aXN0cyAiTERMIFJlc3VsdCBHcmVhdGVyIFRoYW4gb3IgRXF1YWwgVG8gMTkwIgogICAgICAgIG9yICJIYXMgRGlhYmV0ZXMgRGlhZ25vc2lzIgogICAgKQoKZGVmaW5lICJRdWFsaWZ5aW5nIEVuY291bnRlciBEdXJpbmcgRGF5IG9mIE1lYXN1cmVtZW50IFBlcmlvZCI6CiAgKCBbRW5jb3VudGVyOiAiQW5udWFsIFdlbGxuZXNzIFZpc2l0Il0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPZmZpY2UgVmlzaXQiXQogICAgdW5pb24gW0VuY291bnRlcjogIk91dHBhdGllbnQgQ29uc3VsdGF0aW9uIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPdXRwYXRpZW50IEVuY291bnRlcnMgZm9yIFByZXZlbnRpdmUgQ2FyZSJdCiAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEVzdGFibGlzaGVkIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5kaXZpZHVhbCBDb3Vuc2VsaW5nIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5pdGlhbCBPZmZpY2UgVmlzaXQsIDE4IGFuZCBVcCJdCiAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIE90aGVyIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJUZWxlbWVkaWNpbmUgU2VydmljZXMiXSApIFF1YWxpZnlpbmdFbmNvdW50ZXIKICAgIHdoZXJlIFF1YWxpZnlpbmdFbmNvdW50ZXIucGVyaW9kIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgYW5kIFF1YWxpZnlpbmdFbmNvdW50ZXIuc3RhdHVzID0gJ2ZpbmlzaGVkJwoKZGVmaW5lICJTdGF0aW4gVGhlcmFweSBPcmRlcmVkIGR1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiOgogICggW01lZGljYXRpb25SZXF1ZXN0OiAiTG93IEludGVuc2l0eSBTdGF0aW4gVGhlcmFweSJdCiAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJNb2RlcmF0ZSBJbnRlbnNpdHkgU3RhdGluIFRoZXJhcHkiXQogICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiSGlnaCBJbnRlbnNpdHkgU3RhdGluIFRoZXJhcHkiXSApIFN0YXRpblJlcXVlc3QKICAgIHdoZXJlIFN0YXRpblJlcXVlc3QuYXV0aG9yZWRPbiBkdXJpbmcgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgIGFuZCBTdGF0aW5SZXF1ZXN0LnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBTdGF0aW5SZXF1ZXN0LmludGVudCBpbiB7ICdvcmRlcicsICdvcmlnaW5hbC1vcmRlcicsICdyZWZsZXgtb3JkZXInLCAnZmlsdGVyLW9yZGVyJywgJ2luc3RhbmNlLW9yZGVyJyB9CgpkZWZpbmUgIlRlbiBZZWFyIENWRCBSaXNrIGlzIEhpZ2giOgogIGV4aXN0cyAoICggW09ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudDogIkNhcmRpb3Zhc2N1bGFyIGRpc2Vhc2UgMTBZIHJpc2sgW0xpa2VsaWhvb2RdIl0KICAgICAgdW5pb24gW09ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudDogIkNhcmRpb3Zhc2N1bGFyIGRpc2Vhc2UgMTBZIHJpc2sgW0xpa2VsaWhvb2RdIEFDQy1BSEEgUG9vbGVkIENvaG9ydCBieSBHb2ZmIDIwMTMiXSApIEF0Umlza0NWRAogICAgICB3aGVyZSBBdFJpc2tDVkQudmFsdWUgYXMgUXVhbnRpdHkgPj0gMjAgJyUnCiAgICAgICAgYW5kIEF0Umlza0NWRC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgIGFuZCBBdFJpc2tDVkQuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CiAgKQoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc1ZlcmlmaWVkKGNvbmRpdGlvbiBDaG9pY2U8Q29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzLCBDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zPik6CiAgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyBpcyBub3QgbnVsbCBpbXBsaWVzICggY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4iY29uZmlybWVkIgogICAgICBvciBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJ1bmNvbmZpcm1lZCIKICAgICAgb3IgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4icHJvdmlzaW9uYWwiCiAgICAgIG9yIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuImRpZmZlcmVudGlhbCIKICApCgpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOgogIFNERS4iU0RFIEV0aG5pY2l0eSIKCmRlZmluZSAiU0RFIFBheWVyIjoKICBTREUuIlNERSBQYXllciIKCmRlZmluZSAiU0RFIFJhY2UiOgogIFNERS4iU0RFIFJhY2UiCgpkZWZpbmUgIlNERSBTZXgiOgogIFNERS4iU0RFIFNleCI="/>
    <url
         value="https://madie.cms.gov/Library-CMS347FHIRStatinPreventionTxCVD.cql"/>
  </content>
</Library>