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
| Draft as of 2026-09-19 |
{
"resourceType" : "Library",
"id" : "CMS996FHIRAptTxforSTEMI",
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <table class=\"narrative-table\">\n <tbody>\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"metadata\"> </a>Metadata</th>\n\n\n</tr>\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Version</th>\n\n\n\n<td class=\"content-container\">2.1.000</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Status</th>\n\n\n\n<td class=\"content-container\">Draft</td>\n\n\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\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Type</th>\n\n\n\n<td class=\"content-container\">\n <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library\n\n\n</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"parameters\"> </a>Parameters</th>\n\n\n</tr>\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Parameter</th>\n\n\n\n<td class=\"content-container\">None</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n <tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\">Library Content</th>\n\n\n</tr>\n \n \n <tr>\n <th scope=\"row\" class=\"row-header\">CQL Content</th>\n <td>\n <a name=\"cql-content\"> </a>\n <pre style=\"border: none;\" class=\"content-container highlight language-cql\"><code class=\"language-cql\">/*\nNOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.\n*/\nlibrary CMS996FHIRAptTxforSTEMI version '2.1.000'\n\nusing USQualityCore version '0.1.0-cibuild'\nusing USCore version '6.1.0-derived'\nusing FHIR version '4.0.1'\n\ninclude hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers\ninclude hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon\ninclude hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon\ninclude hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements\n\ninclude CQMCommon version '5.1.000' called CQMCommon\ninclude USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon\ninclude SupplementalDataElements version '6.1.000' called SDE\ninclude Status version '2.1.000' called Status\n\ncodesystem "LOINC": 'http://loinc.org'\ncodesystem "HSLOC": 'https://www.cdc.gov/nhsn/cdaportal/terminology/codesystem/hsloc.html'\ncodesystem "SNOMEDCT": 'http://snomed.info/sct'\ncodesystem "ActCode": 'http://terminology.hl7.org/CodeSystem/v3-ActCode'\ncodesystem "ICD10CM": 'http://hl7.org/fhir/sid/icd-10-cm'\ncodesystem "RoleCode": 'http://terminology.hl7.org/CodeSystem/v3-RoleCode'\n\nvalueset "Active Bleeding or Bleeding Diathesis, Excluding Menses": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4036'\nvalueset "Active Peptic Ulcer": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4031'\nvalueset "Thrombolytics Adverse Event": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.6'\nvalueset "Allergy to thrombolytics": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.5'\nvalueset "Oral Anticoagulant Medications": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4045'\nvalueset "Aortic Dissection or Ruptured Aortic Aneurysm": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4028'\nvalueset "Cardiopulmonary Emergency": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4048'\nvalueset "Cerebral Vascular Lesion": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4025'\nvalueset "Closed Head and Facial Trauma": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4026'\nvalueset "Dementia and Related Intracranial Pathologies": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4043'\nvalueset "Discharge To Acute Care Facility": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.87'\nvalueset "Emergency Department Evaluation and Management Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010'\nvalueset "Emergency Department Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'\nvalueset "Endotracheal Intubation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.69'\nvalueset "Fibrinolytic Therapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4019'\nvalueset "Intracranial or Intraspinal surgery": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.2'\nvalueset "Ischemic Stroke": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.247'\nvalueset "Major Surgical Procedure": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4056'\nvalueset "Malignant Intracranial Neoplasm Group": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.3'\nvalueset "Mechanical Circulatory Assist Device": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4052'\nvalueset "Neurologic impairment": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.114.12.1012'\nvalueset "Patient Expired": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.309'\nvalueset "Percutaneous Coronary Intervention": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.2000.5'\nvalueset "Pregnant State": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4055'\nvalueset "STEMI": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4017'\nvalueset "Thrombolytic medications": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.4'\nvalueset "Encounter Inpatient": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'\nvalueset "Hospice Care Ambulatory": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1584'\nvalueset "Hospice Diagnosis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165'\nvalueset "Hospice Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003'\nvalueset "Patient Refusal": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.93'\nvalueset "Left Against Medical Advice": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.308'\nvalueset "Drug Intervention Not Indicated/Contraindicated": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1282.1'\nvalueset "Procedure Not Indicated/Contraindicated": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1282.2'\n\ncode "EMER": 'EMER' from "ActCode" display 'emergency'\ncode "Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility": 'Z92.82' from "ICD10CM" display 'Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility'\ncode "Angina pectoris with documented spasm": 'I20.1' from "ICD10CM" display 'Angina pectoris with documented spasm'\ncode "Long term (current) use of anticoagulants": 'Z79.01' from "ICD10CM" display 'Long term (current) use of anticoagulants'\ncode "Takotsubo cardiomyopathy (disorder)": '441541008' from "SNOMEDCT" display 'Takotsubo cardiomyopathy (disorder)'\ncode "Takotsubo syndrome": 'I51.81' from "ICD10CM" display 'Takotsubo syndrome'\ncode "Ventricular aneurysm due to and following acute myocardial infarction (disorder)": '723858002' from "SNOMEDCT" display 'Ventricular aneurysm due to and following acute myocardial infarction (disorder)'\ncode "Aneurysm of heart": 'I25.3' from "ICD10CM" display 'Aneurysm of heart'\ncode "Discharge to healthcare facility for hospice care (procedure)": '428371000124100' from "SNOMEDCT" display 'Discharge to healthcare facility for hospice care (procedure)'\ncode "Discharge to home for hospice care (procedure)": '428361000124107' from "SNOMEDCT" display 'Discharge to home for hospice care (procedure)'\ncode "Hospice care [Minimum Data Set]": '45755-6' from "LOINC" display 'Hospice care [Minimum Data Set]'\ncode "Yes (qualifier value)": '373066001' from "SNOMEDCT" display 'Yes (qualifier value)'\ncode "Emergency room": 'ER' from "RoleCode" display 'Emergency room'\ncode "Emergency trauma unit": 'ETU' from "RoleCode" display 'Emergency trauma unit'\n\nparameter "Measurement Period" Interval<DateTime>\n default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)\n\ncontext Patient\n\ndefine "Initial Population":\n "ED Encounter with STEMI Diagnosis"\n\ndefine "Denominator":\n "Initial Population"\n\ndefine "Denominator Exclusions":\n "Allergy or Intolerance to Thrombolytic Medications Overlaps ED Encounter"\n union "Adverse Effect to Thrombolytic Medications Before End of ED Encounter"\n union "Active Exclusion Diagnosis at Start of ED Encounter"\n union "Active use of Anticoagulants"\n union "Exclusion Diagnosis During ED Encounter or Within 24 Hours of ED Encounter Start"\n union "Major Surgical Procedure 21 Days or Less Before Start of or Starts During ED Encounter"\n union "Intubation or Mechanical Circulatory Assist Device Placement or Removal Procedure During ED Encounter or Within 24 Hours of ED Encounter Start"\n union "Active Exclusion Diagnosis Within 90 Days Before or At the Start of ED Encounter"\n union "Intracranial or Intraspinal Procedure 90 Days or Less Before Start of ED Encounter"\n union "ED Encounter with Discharge Disposition as Patient Expired"\n union "ED Encounter with Discharge Disposition as Left Against Medical Advice"\n union "ED Encounter with Hospice Services"\n union "Currently Pregnant"\n\ndefine "Denominator Exceptions":\n "Received tPA in Another Facility within 24 hours Prior to Admission"\n union "ED Encounter with a Documented Reason for No PCI Performed"\n union "ED Encounter with a Documented Reason for Not Administering Fibrinolytic Therapy"\n\ndefine "Numerator":\n "Fibrinolytic Therapy Administration within 30 Minutes of Arrival"\n union "PCI within 90 Minutes of Arrival"\n union "ED Departure with Discharge to Acute Care Facility Within 45 Minutes Of Arrival"\n\ndefine "Active Exclusion Diagnosis at Start of ED Encounter":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n with ( ( ["ConditionProblemsHealthConcerns": "Active Bleeding or Bleeding Diathesis, Excluding Menses"]\n union ["ConditionProblemsHealthConcerns": "Malignant Intracranial Neoplasm Group"]\n union ["ConditionProblemsHealthConcerns": "Cerebral Vascular Lesion"]\n union ["ConditionProblemsHealthConcerns": "Dementia and Related Intracranial Pathologies"]\n union ["ConditionProblemsHealthConcerns": "Pregnant State"]\n union ["ConditionProblemsHealthConcerns": "Allergy to thrombolytics"]\n ).verified ( ) ) ActiveExclusionDx\n such that ActiveExclusionDx.prevalenceInterval ( ) overlaps before ( EDwithSTEMI.period )\n\ndefine "Currently Pregnant":\n "ED Encounter with STEMI Diagnosis" EDwSTEMI\n with ( ["USCore.ObservationPregnancyStatusProfile"] ) PregStatus\n such that PregStatus.status = 'final'\n and ( PregStatus.value in "Pregnant State" )\n and ( PregStatus.effective during EDwSTEMI.period )\n\ndefine "Active Exclusion Diagnosis Within 90 Days Before or At the Start of ED Encounter":\n "ED Encounter with STEMI Diagnosis" EDwSTEMI\n with ( ( ["ConditionProblemsHealthConcerns": "Ischemic Stroke"]\n union ["ConditionProblemsHealthConcerns": "Closed Head and Facial Trauma"]\n union ["ConditionProblemsHealthConcerns": "Active Peptic Ulcer"]\n ).verified ( ) ) ExclusionCondition\n such that ExclusionCondition.prevalenceInterval ( ) starts during Interval[start of ( EDwSTEMI.period ) - 90 days, start of ( EDwSTEMI.period )]\n\ndefine "Active Oral Anticoagulant Medication at the Start of ED Encounter":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n with ["MedicationRequest": "Oral Anticoagulant Medications"] OralAnticoagulant\n such that OralAnticoagulant.status in { 'active', 'completed' }\n and OralAnticoagulant.intent = 'order'\n and OralAnticoagulant.authoredOn 90 days or less before or on start of EDwithSTEMI.period\n\ndefine "Active Long Term use of Anticoagulants":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // with ( ( ["ConditionProblemsHealthConcerns": "Long term (current) use of anticoagulants"]\n // union ["ConditionEncounterDiagnosis": "Long term (current) use of anticoagulants"]\n with ( ( [Condition: "Long term (current) use of anticoagulants"] ).verified ( ) ) LongTermAnticoagulant\n such that ( LongTermAnticoagulant.prevalenceInterval ( ) starts before or on start of EDwithSTEMI.period\n and LongTermAnticoagulant.prevalenceInterval ( ) ends on or after start of EDwithSTEMI.period\n )\n\ndefine "Active use of Anticoagulants":\n "Active Oral Anticoagulant Medication at the Start of ED Encounter"\n union "Active Long Term use of Anticoagulants"\n\ndefine "Adverse Effect to Thrombolytic Medications Before End of ED Encounter":\n "ED Encounter with STEMI Diagnosis" EDwSTEMI\n with [AdverseEvent: "Thrombolytics Adverse Event"] ThrombolyticAdverseEvent\n such that Coalesce(ThrombolyticAdverseEvent.date, ThrombolyticAdverseEvent.detected, ThrombolyticAdverseEvent.recordedDate) before end of ( EDwSTEMI.period )\n and ThrombolyticAdverseEvent.actuality = 'actual'\n\ndefine "Allergy or Intolerance to Thrombolytic Medications Overlaps ED Encounter":\n "ED Encounter with STEMI Diagnosis" EDwSTEMI\n with ["AllergyIntolerance": "Thrombolytic medications"] ThrombolyticAllergy\n such that ThrombolyticAllergy.clinicalStatus ~ USQualityCoreCommon."allergy-active"\n and ( ThrombolyticAllergy.verificationStatus is not null implies ( ThrombolyticAllergy.verificationStatus ~ USQualityCoreCommon."allergy-confirmed"\n or ThrombolyticAllergy.verificationStatus ~ USQualityCoreCommon."allergy-unconfirmed"\n )\n )\n and ( ThrombolyticAllergy.prevalenceInterval ( ) overlaps ( EDwSTEMI.period )\n or ThrombolyticAllergy.onset before end EDwSTEMI.period\n )\n\ndefine "ED Departure with Discharge to Acute Care Facility Within 45 Minutes Of Arrival":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n where EDwithSTEMI.currentemergencyDepartmentDepartTime ( ) 45 minutes or less after EDwithSTEMI.currentemergencyDepartmentArrivalTime ( )\n and EDwithSTEMI.hospitalization.dischargeDisposition in "Discharge To Acute Care Facility"\n\ndefine "ED Encounter During MP":\n ["Encounter": class ~ "EMER"] EDEncounter\n where EDEncounter.type in "Emergency Department Evaluation and Management Visit"\n and EDEncounter.period ends during day of "Measurement Period"\n and EDEncounter.status = 'finished'\n and AgeInYearsAt(date from start of(EDEncounter.period)) >= 18\n\ndefine "ED Encounter with STEMI Diagnosis":\n "ED Encounter During MP" EDEncounterinMP\n where ( EDEncounterinMP.reasonCode in "STEMI"\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // or exists ( ( ( [ConditionProblemsHealthConcerns: "STEMI"]\n // union [ConditionEncounterDiagnosis: "STEMI"]\n or exists ( ( ( [Condition: "STEMI"]\n ).verified ( ) ) DxSTEMI\n where ( EDEncounterinMP.encounterDiagnosis ( ).code in "STEMI"\n or ( DxSTEMI.prevalenceInterval ( ) starts during EDEncounterinMP.period )\n )\n )\n )\n\ndefine "ED Encounter with Discharge Disposition as Patient Expired":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n where EDwithSTEMI.hospitalization.dischargeDisposition in "Patient Expired"\n\ndefine "ED Encounter with Discharge Disposition as Left Against Medical Advice":\n "ED Encounter with STEMI Diagnosis" EDwSTEMI\n where EDwSTEMI.hospitalization.dischargeDisposition in "Left Against Medical Advice"\n\ndefine "ED Encounter with Hospice Services":\n from\n "ED Encounter with STEMI Diagnosis" EDwSTEMI\n let SixMonthsBeforeToEndOfSTEMI: Interval[start of ( EDwSTEMI.period ) - 6 months, end of ( EDwSTEMI.period )]\n where ( exists ( ( ( [Encounter: "Encounter Inpatient"] ).isEncounterPerformed ( ) ) InpatientEncounter\n where ( InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to home for hospice care (procedure)"\n or InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to healthcare facility for hospice care (procedure)"\n )\n and InpatientEncounter.period starts before or on start of ( EDwSTEMI.period )\n and InpatientEncounter.period overlaps day of SixMonthsBeforeToEndOfSTEMI\n )\n or exists ( ( ( [Encounter: "Hospice Encounter"] ).isEncounterPerformed ( ) ) HospiceEncounter\n where HospiceEncounter.period starts before or on start of ( EDwSTEMI.period )\n and ( HospiceEncounter.period overlaps day of SixMonthsBeforeToEndOfSTEMI )\n )\n or exists ( ( ( [ObservationScreeningAssessment: "Hospice care [Minimum Data Set]"] ).isAssessmentPerformed ( ) ) HospiceAssessment\n where ( HospiceAssessment as ObservationScreeningAssessment ).value ~ "Yes (qualifier value)"\n and HospiceAssessment.effective.toInterval ( ) starts before or on start of ( EDwSTEMI.period )\n and ( HospiceAssessment.effective.toInterval ( ) overlaps day of SixMonthsBeforeToEndOfSTEMI )\n )\n or exists ( ( ( [ServiceRequest: "Hospice Care Ambulatory"] ).isInterventionOrder ( ) ) HospiceOrder\n where HospiceOrder.authoredOn 6 months or less before start of ( EDwSTEMI.period )\n )\n or exists ( ( ( [Procedure: "Hospice Care Ambulatory"] ).isInterventionPerformed ( ) ) HospicePerformed\n where HospicePerformed.performed.toInterval ( ) starts before or on start of ( EDwSTEMI.period )\n and ( HospicePerformed.performed.toInterval ( ) overlaps day of SixMonthsBeforeToEndOfSTEMI )\n )\n or exists ( ( ( [ConditionProblemsHealthConcerns: "Hospice Diagnosis"] ).verified ( ) ) HospiceCareDiagnosis\n where HospiceCareDiagnosis.prevalenceInterval ( ) ends on or after start of ( EDwSTEMI.period )\n )\n )\n\ndefine "Exclusion Diagnosis During ED Encounter or Within 24 Hours of ED Encounter Start":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n with ( ( ["ConditionProblemsHealthConcerns": "Aortic Dissection or Ruptured Aortic Aneurysm"]\n union ["ConditionProblemsHealthConcerns": "Neurologic impairment"]\n union ["ConditionProblemsHealthConcerns": "Angina pectoris with documented spasm"]\n union ["ConditionProblemsHealthConcerns": "Ventricular aneurysm due to and following acute myocardial infarction (disorder)"]\n union ["ConditionProblemsHealthConcerns": "Aneurysm of heart"]\n union ["ConditionProblemsHealthConcerns": "Takotsubo cardiomyopathy (disorder)"]\n union ["ConditionProblemsHealthConcerns": "Takotsubo syndrome"]\n union ["ConditionProblemsHealthConcerns": "Cardiopulmonary Emergency"]\n ).verified ( ) ) ExclusionDiagnosis\n such that ( ( ExclusionDiagnosis.prevalenceInterval ( ) starts during EDwithSTEMI.period )\n or ( ExclusionDiagnosis.prevalenceInterval ( ) starts 24 hours or less before start of EDwithSTEMI.period )\n )\n\ndefine "Received tPA in Another Facility within 24 hours Prior to Admission":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // with ( ( ["ConditionProblemsHealthConcerns": "Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility"]\n // union ["ConditionEncounterDiagnosis": "Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility"]\n with ( ( [Condition: "Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility"]\n ).verified ( ) ) TPA\n such that TPA.prevalenceInterval ( ) starts during EDwithSTEMI.period\n\ndefine "ED Encounter with a Documented Reason for No PCI Performed":\n "ED Encounter with STEMI Diagnosis" EDwSTEMI\n with ["ProcedureNotDone": "Percutaneous Coronary Intervention"] PCINotDone\n such that ( PCINotDone.statusReason in "Patient Refusal"\n or PCINotDone.statusReason in "Procedure Not Indicated/Contraindicated"\n )\n and PCINotDone.performed during EDwSTEMI.period\n\ndefine "ED Encounter with a Documented Reason for Not Administering Fibrinolytic Therapy":\n "ED Encounter with STEMI Diagnosis" EDwSTEMI\n with ["MedicationAdministrationNotDone": "Fibrinolytic Therapy"] FibrinolyticNoMed\n such that ( FibrinolyticNoMed.statusReason in "Patient Refusal"\n or FibrinolyticNoMed.statusReason in "Drug Intervention Not Indicated/Contraindicated"\n )\n and FibrinolyticNoMed.effective during EDwSTEMI.period\n\ndefine "Fibrinolytic Therapy Administration within 30 Minutes of Arrival":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n with ["MedicationAdministration": "Fibrinolytic Therapy"] Fibrinolytic\n such that Fibrinolytic.status = 'completed'\n and start of ( Fibrinolytic.effective.toInterval ( ) ) 30 minutes or less after EDwithSTEMI.currentemergencyDepartmentArrivalTime ( )\n\ndefine "Intracranial or Intraspinal Procedure 90 Days or Less Before Start of ED Encounter":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n with ["Procedure": "Intracranial or Intraspinal surgery"] CranialorSpinalSurgery\n such that CranialorSpinalSurgery.performed.toInterval ( ) starts 90 days or less before start of ( EDwithSTEMI.period )\n and CranialorSpinalSurgery.status = 'completed'\n\ndefine "Intubation or Mechanical Circulatory Assist Device Placement or Removal Procedure During ED Encounter or Within 24 Hours of ED Encounter Start":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n with ( ["Procedure": "Endotracheal Intubation"]\n union ["Procedure": "Mechanical Circulatory Assist Device"] ) AirwayProcedure\n such that ( ( AirwayProcedure.performed.toInterval ( ) starts during ( EDwithSTEMI.period ) )\n or ( AirwayProcedure.performed.toInterval ( ) starts 24 hours or less before start of ( EDwithSTEMI.period ) )\n )\n and AirwayProcedure.status = 'completed'\n\ndefine "Major Surgical Procedure 21 Days or Less Before Start of or Starts During ED Encounter":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n with ["Procedure": "Major Surgical Procedure"] MajorSurgery\n such that ( MajorSurgery.performed.toInterval ( ) starts 21 days or less before start of EDwithSTEMI.period\n or MajorSurgery.performed.toInterval ( ) starts during EDwithSTEMI.period\n )\n and MajorSurgery.status = 'completed'\n\ndefine "PCI within 90 Minutes of Arrival":\n "ED Encounter with STEMI Diagnosis" EDwithSTEMI\n with ["Procedure": "Percutaneous Coronary Intervention"] PCI\n such that PCI.performed.toInterval ( ) starts 90 minutes or less after EDwithSTEMI.currentemergencyDepartmentArrivalTime ( )\n and PCI.status = 'completed'\n\ndefine "SDE Ethnicity":\n SDE."SDE Ethnicity"\n\ndefine "SDE Payer":\n SDE."SDE Payer"\n\ndefine "SDE Race":\n SDE."SDE Race"\n\ndefine "SDE Sex":\n SDE."SDE Sex"\n\ndefine fluent function currentemergencyDepartmentArrivalTime(EDEncounter Encounter):\n First(EDEncounter.location EDLocation\n where exists((EDLocation.location.getLocation().type) LocationType\n where(LocationType in "Emergency Department Visit"\n or LocationType ~ "Emergency room"\n or LocationType ~ "Emergency trauma unit"\n )\n and start of EDLocation.period is not null\n )\n return start of EDLocation.period\n sort ascending\n )\n\ndefine fluent function currentemergencyDepartmentDepartTime(EDEncounter Encounter):\n Last(EDEncounter.location EDLocation\n where exists((EDLocation.location.getLocation().type) LocationType\n where(LocationType in "Emergency Department Visit"\n or LocationType ~ "Emergency room"\n or LocationType ~ "Emergency trauma unit"\n )\n and \n end of EDLocation.period is not null\n )\n return \n end of EDLocation.period\n sort ascending\n )</code></pre>\n </td>\n </tr>\n \n \n\n\n\n<tr>\n <th colspan=\"2\" scope=\"row\" class=\"row-header\">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>\n</tr>\n\n </tbody>\n </table>\n</div>"
},
"extension" : [
{
"url" : "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem",
"valueReference" : {
"reference" : "Device/cqf-tooling"
}
}
],
"url" : "https://madie.cms.gov/Library/CMS996FHIRAptTxforSTEMI",
"version" : "2.1.000",
"name" : "CMS996FHIRAptTxforSTEMI",
"status" : "draft",
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2026-09-19T16:31:14+00:00",
"content" : [
{
"contentType" : "text/cql",
"data" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVM5OTZGSElSQXB0VHhmb3JTVEVNSSB2ZXJzaW9uICcyLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCgpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJIU0xPQyI6ICdodHRwczovL3d3dy5jZGMuZ292L25oc24vY2RhcG9ydGFsL3Rlcm1pbm9sb2d5L2NvZGVzeXN0ZW0vaHNsb2MuaHRtbCcKY29kZXN5c3RlbSAiU05PTUVEQ1QiOiAnaHR0cDovL3Nub21lZC5pbmZvL3NjdCcKY29kZXN5c3RlbSAiQWN0Q29kZSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL3YzLUFjdENvZGUnCmNvZGVzeXN0ZW0gIklDRDEwQ00iOiAnaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtJwpjb2Rlc3lzdGVtICJSb2xlQ29kZSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL3YzLVJvbGVDb2RlJwoKdmFsdWVzZXQgIkFjdGl2ZSBCbGVlZGluZyBvciBCbGVlZGluZyBEaWF0aGVzaXMsIEV4Y2x1ZGluZyBNZW5zZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzE1Ny40MDM2Jwp2YWx1ZXNldCAiQWN0aXZlIFBlcHRpYyBVbGNlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zMTU3LjQwMzEnCnZhbHVlc2V0ICJUaHJvbWJvbHl0aWNzIEFkdmVyc2UgRXZlbnQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTcwLjYnCnZhbHVlc2V0ICJBbGxlcmd5IHRvIHRocm9tYm9seXRpY3MiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTcwLjUnCnZhbHVlc2V0ICJPcmFsIEFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzE1Ny40MDQ1Jwp2YWx1ZXNldCAiQW9ydGljIERpc3NlY3Rpb24gb3IgUnVwdHVyZWQgQW9ydGljIEFuZXVyeXNtIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjMxNTcuNDAyOCcKdmFsdWVzZXQgIkNhcmRpb3B1bG1vbmFyeSBFbWVyZ2VuY3kiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzE1Ny40MDQ4Jwp2YWx1ZXNldCAiQ2VyZWJyYWwgVmFzY3VsYXIgTGVzaW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjMxNTcuNDAyNScKdmFsdWVzZXQgIkNsb3NlZCBIZWFkIGFuZCBGYWNpYWwgVHJhdW1hIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjMxNTcuNDAyNicKdmFsdWVzZXQgIkRlbWVudGlhIGFuZCBSZWxhdGVkIEludHJhY3JhbmlhbCBQYXRob2xvZ2llcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zMTU3LjQwNDMnCnZhbHVlc2V0ICJEaXNjaGFyZ2UgVG8gQWN1dGUgQ2FyZSBGYWNpbGl0eSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4xMTcuMS43LjEuODcnCnZhbHVlc2V0ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBFdmFsdWF0aW9uIGFuZCBNYW5hZ2VtZW50IFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDEwJwp2YWx1ZXNldCAiRW1lcmdlbmN5IERlcGFydG1lbnQgVmlzaXQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjI5MicKdmFsdWVzZXQgIkVuZG90cmFjaGVhbCBJbnR1YmF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTA0NS42OScKdmFsdWVzZXQgIkZpYnJpbm9seXRpYyBUaGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjMxNTcuNDAxOScKdmFsdWVzZXQgIkludHJhY3JhbmlhbCBvciBJbnRyYXNwaW5hbCBzdXJnZXJ5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTE3MC4yJwp2YWx1ZXNldCAiSXNjaGVtaWMgU3Ryb2tlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yNDcnCnZhbHVlc2V0ICJNYWpvciBTdXJnaWNhbCBQcm9jZWR1cmUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzE1Ny40MDU2Jwp2YWx1ZXNldCAiTWFsaWduYW50IEludHJhY3JhbmlhbCBOZW9wbGFzbSBHcm91cCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExNzAuMycKdmFsdWVzZXQgIk1lY2hhbmljYWwgQ2lyY3VsYXRvcnkgQXNzaXN0IERldmljZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zMTU3LjQwNTInCnZhbHVlc2V0ICJOZXVyb2xvZ2ljIGltcGFpcm1lbnQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTE0LjEyLjEwMTInCnZhbHVlc2V0ICJQYXRpZW50IEV4cGlyZWQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjMwOScKdmFsdWVzZXQgIlBlcmN1dGFuZW91cyBDb3JvbmFyeSBJbnRlcnZlbnRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzE1Ny4yMDAwLjUnCnZhbHVlc2V0ICJQcmVnbmFudCBTdGF0ZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zMTU3LjQwNTUnCnZhbHVlc2V0ICJTVEVNSSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zMTU3LjQwMTcnCnZhbHVlc2V0ICJUaHJvbWJvbHl0aWMgbWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTcwLjQnCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycKdmFsdWVzZXQgIkhvc3BpY2UgQ2FyZSBBbWJ1bGF0b3J5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE1ODQnCnZhbHVlc2V0ICJIb3NwaWNlIERpYWdub3NpcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTY1Jwp2YWx1ZXNldCAiSG9zcGljZSBFbmNvdW50ZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAwMycKdmFsdWVzZXQgIlBhdGllbnQgUmVmdXNhbCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4xMTcuMS43LjEuOTMnCnZhbHVlc2V0ICJMZWZ0IEFnYWluc3QgTWVkaWNhbCBBZHZpY2UiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjMwOCcKdmFsdWVzZXQgIkRydWcgSW50ZXJ2ZW50aW9uIE5vdCBJbmRpY2F0ZWQvQ29udHJhaW5kaWNhdGVkIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTI4Mi4xJwp2YWx1ZXNldCAiUHJvY2VkdXJlIE5vdCBJbmRpY2F0ZWQvQ29udHJhaW5kaWNhdGVkIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTI4Mi4yJwoKY29kZSAiRU1FUiI6ICdFTUVSJyBmcm9tICJBY3RDb2RlIiBkaXNwbGF5ICdlbWVyZ2VuY3knCmNvZGUgIlN0YXR1cyBwb3N0IGFkbWluaXN0cmF0aW9uIG9mIHRQQSAocnRQQSkgaW4gYSBkaWZmZXJlbnQgZmFjaWxpdHkgd2l0aGluIHRoZSBsYXN0IDI0IGhvdXJzIHByaW9yIHRvIGFkbWlzc2lvbiB0byBjdXJyZW50IGZhY2lsaXR5IjogJ1o5Mi44MicgZnJvbSAiSUNEMTBDTSIgZGlzcGxheSAnU3RhdHVzIHBvc3QgYWRtaW5pc3RyYXRpb24gb2YgdFBBIChydFBBKSBpbiBhIGRpZmZlcmVudCBmYWNpbGl0eSB3aXRoaW4gdGhlIGxhc3QgMjQgaG91cnMgcHJpb3IgdG8gYWRtaXNzaW9uIHRvIGN1cnJlbnQgZmFjaWxpdHknCmNvZGUgIkFuZ2luYSBwZWN0b3JpcyB3aXRoIGRvY3VtZW50ZWQgc3Bhc20iOiAnSTIwLjEnIGZyb20gIklDRDEwQ00iIGRpc3BsYXkgJ0FuZ2luYSBwZWN0b3JpcyB3aXRoIGRvY3VtZW50ZWQgc3Bhc20nCmNvZGUgIkxvbmcgdGVybSAoY3VycmVudCkgdXNlIG9mIGFudGljb2FndWxhbnRzIjogJ1o3OS4wMScgZnJvbSAiSUNEMTBDTSIgZGlzcGxheSAnTG9uZyB0ZXJtIChjdXJyZW50KSB1c2Ugb2YgYW50aWNvYWd1bGFudHMnCmNvZGUgIlRha290c3VibyBjYXJkaW9teW9wYXRoeSAoZGlzb3JkZXIpIjogJzQ0MTU0MTAwOCcgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ1Rha290c3VibyBjYXJkaW9teW9wYXRoeSAoZGlzb3JkZXIpJwpjb2RlICJUYWtvdHN1Ym8gc3luZHJvbWUiOiAnSTUxLjgxJyBmcm9tICJJQ0QxMENNIiBkaXNwbGF5ICdUYWtvdHN1Ym8gc3luZHJvbWUnCmNvZGUgIlZlbnRyaWN1bGFyIGFuZXVyeXNtIGR1ZSB0byBhbmQgZm9sbG93aW5nIGFjdXRlIG15b2NhcmRpYWwgaW5mYXJjdGlvbiAoZGlzb3JkZXIpIjogJzcyMzg1ODAwMicgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ1ZlbnRyaWN1bGFyIGFuZXVyeXNtIGR1ZSB0byBhbmQgZm9sbG93aW5nIGFjdXRlIG15b2NhcmRpYWwgaW5mYXJjdGlvbiAoZGlzb3JkZXIpJwpjb2RlICJBbmV1cnlzbSBvZiBoZWFydCI6ICdJMjUuMycgZnJvbSAiSUNEMTBDTSIgZGlzcGxheSAnQW5ldXJ5c20gb2YgaGVhcnQnCmNvZGUgIkRpc2NoYXJnZSB0byBoZWFsdGhjYXJlIGZhY2lsaXR5IGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiOiAnNDI4MzcxMDAwMTI0MTAwJyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGlzY2hhcmdlIHRvIGhlYWx0aGNhcmUgZmFjaWxpdHkgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKScKY29kZSAiRGlzY2hhcmdlIHRvIGhvbWUgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKSI6ICc0MjgzNjEwMDAxMjQxMDcnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdEaXNjaGFyZ2UgdG8gaG9tZSBmb3IgaG9zcGljZSBjYXJlIChwcm9jZWR1cmUpJwpjb2RlICJIb3NwaWNlIGNhcmUgW01pbmltdW0gRGF0YSBTZXRdIjogJzQ1NzU1LTYnIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdIb3NwaWNlIGNhcmUgW01pbmltdW0gRGF0YSBTZXRdJwpjb2RlICJZZXMgKHF1YWxpZmllciB2YWx1ZSkiOiAnMzczMDY2MDAxJyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnWWVzIChxdWFsaWZpZXIgdmFsdWUpJwpjb2RlICJFbWVyZ2VuY3kgcm9vbSI6ICdFUicgZnJvbSAiUm9sZUNvZGUiIGRpc3BsYXkgJ0VtZXJnZW5jeSByb29tJwpjb2RlICJFbWVyZ2VuY3kgdHJhdW1hIHVuaXQiOiAnRVRVJyBmcm9tICJSb2xlQ29kZSIgZGlzcGxheSAnRW1lcmdlbmN5IHRyYXVtYSB1bml0JwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogICJFRCBFbmNvdW50ZXIgd2l0aCBTVEVNSSBEaWFnbm9zaXMiCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNsdXNpb25zIjoKICAiQWxsZXJneSBvciBJbnRvbGVyYW5jZSB0byBUaHJvbWJvbHl0aWMgTWVkaWNhdGlvbnMgT3ZlcmxhcHMgRUQgRW5jb3VudGVyIgogICAgdW5pb24gIkFkdmVyc2UgRWZmZWN0IHRvIFRocm9tYm9seXRpYyBNZWRpY2F0aW9ucyBCZWZvcmUgRW5kIG9mIEVEIEVuY291bnRlciIKICAgIHVuaW9uICJBY3RpdmUgRXhjbHVzaW9uIERpYWdub3NpcyBhdCBTdGFydCBvZiBFRCBFbmNvdW50ZXIiCiAgICB1bmlvbiAiQWN0aXZlIHVzZSBvZiBBbnRpY29hZ3VsYW50cyIKICAgIHVuaW9uICJFeGNsdXNpb24gRGlhZ25vc2lzIER1cmluZyBFRCBFbmNvdW50ZXIgb3IgV2l0aGluIDI0IEhvdXJzIG9mIEVEIEVuY291bnRlciBTdGFydCIKICAgIHVuaW9uICJNYWpvciBTdXJnaWNhbCBQcm9jZWR1cmUgMjEgRGF5cyBvciBMZXNzIEJlZm9yZSBTdGFydCBvZiBvciBTdGFydHMgRHVyaW5nIEVEIEVuY291bnRlciIKICAgIHVuaW9uICJJbnR1YmF0aW9uIG9yIE1lY2hhbmljYWwgQ2lyY3VsYXRvcnkgQXNzaXN0IERldmljZSBQbGFjZW1lbnQgb3IgUmVtb3ZhbCBQcm9jZWR1cmUgRHVyaW5nIEVEIEVuY291bnRlciBvciBXaXRoaW4gMjQgSG91cnMgb2YgRUQgRW5jb3VudGVyIFN0YXJ0IgogICAgdW5pb24gIkFjdGl2ZSBFeGNsdXNpb24gRGlhZ25vc2lzIFdpdGhpbiA5MCBEYXlzIEJlZm9yZSBvciBBdCB0aGUgU3RhcnQgb2YgRUQgRW5jb3VudGVyIgogICAgdW5pb24gIkludHJhY3JhbmlhbCBvciBJbnRyYXNwaW5hbCBQcm9jZWR1cmUgOTAgRGF5cyBvciBMZXNzIEJlZm9yZSBTdGFydCBvZiBFRCBFbmNvdW50ZXIiCiAgICB1bmlvbiAiRUQgRW5jb3VudGVyIHdpdGggRGlzY2hhcmdlIERpc3Bvc2l0aW9uIGFzIFBhdGllbnQgRXhwaXJlZCIKICAgIHVuaW9uICJFRCBFbmNvdW50ZXIgd2l0aCBEaXNjaGFyZ2UgRGlzcG9zaXRpb24gYXMgTGVmdCBBZ2FpbnN0IE1lZGljYWwgQWR2aWNlIgogICAgdW5pb24gIkVEIEVuY291bnRlciB3aXRoIEhvc3BpY2UgU2VydmljZXMiCiAgICB1bmlvbiAiQ3VycmVudGx5IFByZWduYW50IgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNlcHRpb25zIjoKICAiUmVjZWl2ZWQgdFBBIGluIEFub3RoZXIgRmFjaWxpdHkgd2l0aGluIDI0IGhvdXJzIFByaW9yIHRvIEFkbWlzc2lvbiIKICAgIHVuaW9uICJFRCBFbmNvdW50ZXIgd2l0aCBhIERvY3VtZW50ZWQgUmVhc29uIGZvciBObyBQQ0kgUGVyZm9ybWVkIgogICAgdW5pb24gIkVEIEVuY291bnRlciB3aXRoIGEgRG9jdW1lbnRlZCBSZWFzb24gZm9yIE5vdCBBZG1pbmlzdGVyaW5nIEZpYnJpbm9seXRpYyBUaGVyYXB5IgoKZGVmaW5lICJOdW1lcmF0b3IiOgogICJGaWJyaW5vbHl0aWMgVGhlcmFweSBBZG1pbmlzdHJhdGlvbiB3aXRoaW4gMzAgTWludXRlcyBvZiBBcnJpdmFsIgogICAgdW5pb24gIlBDSSB3aXRoaW4gOTAgTWludXRlcyBvZiBBcnJpdmFsIgogICAgdW5pb24gIkVEIERlcGFydHVyZSB3aXRoIERpc2NoYXJnZSB0byBBY3V0ZSBDYXJlIEZhY2lsaXR5IFdpdGhpbiA0NSBNaW51dGVzIE9mIEFycml2YWwiCgpkZWZpbmUgIkFjdGl2ZSBFeGNsdXNpb24gRGlhZ25vc2lzIGF0IFN0YXJ0IG9mIEVEIEVuY291bnRlciI6CiAgIkVEIEVuY291bnRlciB3aXRoIFNURU1JIERpYWdub3NpcyIgRUR3aXRoU1RFTUkKICAgIHdpdGggKCAoIFsiQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucyI6ICJBY3RpdmUgQmxlZWRpbmcgb3IgQmxlZWRpbmcgRGlhdGhlc2lzLCBFeGNsdWRpbmcgTWVuc2VzIl0KICAgICAgICB1bmlvbiBbIkNvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnMiOiAiTWFsaWduYW50IEludHJhY3JhbmlhbCBOZW9wbGFzbSBHcm91cCJdCiAgICAgICAgdW5pb24gWyJDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zIjogIkNlcmVicmFsIFZhc2N1bGFyIExlc2lvbiJdCiAgICAgICAgdW5pb24gWyJDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zIjogIkRlbWVudGlhIGFuZCBSZWxhdGVkIEludHJhY3JhbmlhbCBQYXRob2xvZ2llcyJdCiAgICAgICAgdW5pb24gWyJDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zIjogIlByZWduYW50IFN0YXRlIl0KICAgICAgICB1bmlvbiBbIkNvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnMiOiAiQWxsZXJneSB0byB0aHJvbWJvbHl0aWNzIl0KICAgICkudmVyaWZpZWQgKCApICkgQWN0aXZlRXhjbHVzaW9uRHgKICAgICAgc3VjaCB0aGF0IEFjdGl2ZUV4Y2x1c2lvbkR4LnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgYmVmb3JlICggRUR3aXRoU1RFTUkucGVyaW9kICkKCmRlZmluZSAiQ3VycmVudGx5IFByZWduYW50IjoKICAiRUQgRW5jb3VudGVyIHdpdGggU1RFTUkgRGlhZ25vc2lzIiBFRHdTVEVNSQogICAgd2l0aCAoIFsiVVNDb3JlLk9ic2VydmF0aW9uUHJlZ25hbmN5U3RhdHVzUHJvZmlsZSJdICkgUHJlZ1N0YXR1cwogICAgICBzdWNoIHRoYXQgUHJlZ1N0YXR1cy5zdGF0dXMgPSAnZmluYWwnCiAgICAgICAgYW5kICggUHJlZ1N0YXR1cy52YWx1ZSBpbiAiUHJlZ25hbnQgU3RhdGUiICkKICAgICAgICBhbmQgKCBQcmVnU3RhdHVzLmVmZmVjdGl2ZSBkdXJpbmcgRUR3U1RFTUkucGVyaW9kICkKCmRlZmluZSAiQWN0aXZlIEV4Y2x1c2lvbiBEaWFnbm9zaXMgV2l0aGluIDkwIERheXMgQmVmb3JlIG9yIEF0IHRoZSBTdGFydCBvZiBFRCBFbmNvdW50ZXIiOgogICJFRCBFbmNvdW50ZXIgd2l0aCBTVEVNSSBEaWFnbm9zaXMiIEVEd1NURU1JCiAgICB3aXRoICggKCBbIkNvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnMiOiAiSXNjaGVtaWMgU3Ryb2tlIl0KICAgICAgICB1bmlvbiBbIkNvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnMiOiAiQ2xvc2VkIEhlYWQgYW5kIEZhY2lhbCBUcmF1bWEiXQogICAgICAgIHVuaW9uIFsiQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucyI6ICJBY3RpdmUgUGVwdGljIFVsY2VyIl0KICAgICkudmVyaWZpZWQgKCApICkgRXhjbHVzaW9uQ29uZGl0aW9uCiAgICAgIHN1Y2ggdGhhdCBFeGNsdXNpb25Db25kaXRpb24ucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgZHVyaW5nIEludGVydmFsW3N0YXJ0IG9mICggRUR3U1RFTUkucGVyaW9kICkgLSA5MCBkYXlzLCBzdGFydCBvZiAoIEVEd1NURU1JLnBlcmlvZCApXQoKZGVmaW5lICJBY3RpdmUgT3JhbCBBbnRpY29hZ3VsYW50IE1lZGljYXRpb24gYXQgdGhlIFN0YXJ0IG9mIEVEIEVuY291bnRlciI6CiAgIkVEIEVuY291bnRlciB3aXRoIFNURU1JIERpYWdub3NpcyIgRUR3aXRoU1RFTUkKICAgIHdpdGggWyJNZWRpY2F0aW9uUmVxdWVzdCI6ICJPcmFsIEFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiXSBPcmFsQW50aWNvYWd1bGFudAogICAgICBzdWNoIHRoYXQgT3JhbEFudGljb2FndWxhbnQuc3RhdHVzIGluIHsgJ2FjdGl2ZScsICdjb21wbGV0ZWQnIH0KICAgICAgICBhbmQgT3JhbEFudGljb2FndWxhbnQuaW50ZW50ID0gJ29yZGVyJwogICAgICAgIGFuZCBPcmFsQW50aWNvYWd1bGFudC5hdXRob3JlZE9uIDkwIGRheXMgb3IgbGVzcyBiZWZvcmUgb3Igb24gc3RhcnQgb2YgRUR3aXRoU1RFTUkucGVyaW9kCgpkZWZpbmUgIkFjdGl2ZSBMb25nIFRlcm0gdXNlIG9mIEFudGljb2FndWxhbnRzIjoKICAiRUQgRW5jb3VudGVyIHdpdGggU1RFTUkgRGlhZ25vc2lzIiBFRHdpdGhTVEVNSQogICAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgICAvLyBPcmlnaW5hbDoKICAgIC8vIHdpdGggKCAoIFsiQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucyI6ICJMb25nIHRlcm0gKGN1cnJlbnQpIHVzZSBvZiBhbnRpY29hZ3VsYW50cyJdCiAgICAvLyAgICAgdW5pb24gWyJDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXMiOiAiTG9uZyB0ZXJtIChjdXJyZW50KSB1c2Ugb2YgYW50aWNvYWd1bGFudHMiXQogICAgd2l0aCAoICggW0NvbmRpdGlvbjogIkxvbmcgdGVybSAoY3VycmVudCkgdXNlIG9mIGFudGljb2FndWxhbnRzIl0gKS52ZXJpZmllZCAoICkgKSBMb25nVGVybUFudGljb2FndWxhbnQKICAgICAgc3VjaCB0aGF0ICggTG9uZ1Rlcm1BbnRpY29hZ3VsYW50LnByZXZhbGVuY2VJbnRlcnZhbCAoICkgc3RhcnRzIGJlZm9yZSBvciBvbiBzdGFydCBvZiBFRHdpdGhTVEVNSS5wZXJpb2QKICAgICAgICAgIGFuZCBMb25nVGVybUFudGljb2FndWxhbnQucHJldmFsZW5jZUludGVydmFsICggKSBlbmRzIG9uIG9yIGFmdGVyIHN0YXJ0IG9mIEVEd2l0aFNURU1JLnBlcmlvZAogICAgICApCgpkZWZpbmUgIkFjdGl2ZSB1c2Ugb2YgQW50aWNvYWd1bGFudHMiOgogICJBY3RpdmUgT3JhbCBBbnRpY29hZ3VsYW50IE1lZGljYXRpb24gYXQgdGhlIFN0YXJ0IG9mIEVEIEVuY291bnRlciIKICAgIHVuaW9uICJBY3RpdmUgTG9uZyBUZXJtIHVzZSBvZiBBbnRpY29hZ3VsYW50cyIKCmRlZmluZSAiQWR2ZXJzZSBFZmZlY3QgdG8gVGhyb21ib2x5dGljIE1lZGljYXRpb25zIEJlZm9yZSBFbmQgb2YgRUQgRW5jb3VudGVyIjoKICAiRUQgRW5jb3VudGVyIHdpdGggU1RFTUkgRGlhZ25vc2lzIiBFRHdTVEVNSQogICAgd2l0aCBbQWR2ZXJzZUV2ZW50OiAiVGhyb21ib2x5dGljcyBBZHZlcnNlIEV2ZW50Il0gVGhyb21ib2x5dGljQWR2ZXJzZUV2ZW50CiAgICAgIHN1Y2ggdGhhdCBDb2FsZXNjZShUaHJvbWJvbHl0aWNBZHZlcnNlRXZlbnQuZGF0ZSwgVGhyb21ib2x5dGljQWR2ZXJzZUV2ZW50LmRldGVjdGVkLCBUaHJvbWJvbHl0aWNBZHZlcnNlRXZlbnQucmVjb3JkZWREYXRlKSBiZWZvcmUgZW5kIG9mICggRUR3U1RFTUkucGVyaW9kICkKICAgICAgICBhbmQgVGhyb21ib2x5dGljQWR2ZXJzZUV2ZW50LmFjdHVhbGl0eSA9ICdhY3R1YWwnCgpkZWZpbmUgIkFsbGVyZ3kgb3IgSW50b2xlcmFuY2UgdG8gVGhyb21ib2x5dGljIE1lZGljYXRpb25zIE92ZXJsYXBzIEVEIEVuY291bnRlciI6CiAgIkVEIEVuY291bnRlciB3aXRoIFNURU1JIERpYWdub3NpcyIgRUR3U1RFTUkKICAgIHdpdGggWyJBbGxlcmd5SW50b2xlcmFuY2UiOiAiVGhyb21ib2x5dGljIG1lZGljYXRpb25zIl0gVGhyb21ib2x5dGljQWxsZXJneQogICAgICBzdWNoIHRoYXQgVGhyb21ib2x5dGljQWxsZXJneS5jbGluaWNhbFN0YXR1cyB+IFVTUXVhbGl0eUNvcmVDb21tb24uImFsbGVyZ3ktYWN0aXZlIgogICAgICAgIGFuZCAoIFRocm9tYm9seXRpY0FsbGVyZ3kudmVyaWZpY2F0aW9uU3RhdHVzIGlzIG5vdCBudWxsIGltcGxpZXMgKCBUaHJvbWJvbHl0aWNBbGxlcmd5LnZlcmlmaWNhdGlvblN0YXR1cyB+IFVTUXVhbGl0eUNvcmVDb21tb24uImFsbGVyZ3ktY29uZmlybWVkIgogICAgICAgICAgICAgIG9yIFRocm9tYm9seXRpY0FsbGVyZ3kudmVyaWZpY2F0aW9uU3RhdHVzIH4gVVNRdWFsaXR5Q29yZUNvbW1vbi4iYWxsZXJneS11bmNvbmZpcm1lZCIKICAgICAgICAgICkKICAgICAgICApCiAgICAgICAgYW5kICggVGhyb21ib2x5dGljQWxsZXJneS5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzICggRUR3U1RFTUkucGVyaW9kICkKICAgICAgICAgICAgb3IgVGhyb21ib2x5dGljQWxsZXJneS5vbnNldCBiZWZvcmUgZW5kIEVEd1NURU1JLnBlcmlvZAogICAgICAgICkKCmRlZmluZSAiRUQgRGVwYXJ0dXJlIHdpdGggRGlzY2hhcmdlIHRvIEFjdXRlIENhcmUgRmFjaWxpdHkgV2l0aGluIDQ1IE1pbnV0ZXMgT2YgQXJyaXZhbCI6CiAgIkVEIEVuY291bnRlciB3aXRoIFNURU1JIERpYWdub3NpcyIgRUR3aXRoU1RFTUkKICAgIHdoZXJlIEVEd2l0aFNURU1JLmN1cnJlbnRlbWVyZ2VuY3lEZXBhcnRtZW50RGVwYXJ0VGltZSAoICkgNDUgbWludXRlcyBvciBsZXNzIGFmdGVyIEVEd2l0aFNURU1JLmN1cnJlbnRlbWVyZ2VuY3lEZXBhcnRtZW50QXJyaXZhbFRpbWUgKCApCiAgICAgIGFuZCBFRHdpdGhTVEVNSS5ob3NwaXRhbGl6YXRpb24uZGlzY2hhcmdlRGlzcG9zaXRpb24gaW4gIkRpc2NoYXJnZSBUbyBBY3V0ZSBDYXJlIEZhY2lsaXR5IgoKZGVmaW5lICJFRCBFbmNvdW50ZXIgRHVyaW5nIE1QIjoKICBbIkVuY291bnRlciI6IGNsYXNzIH4gIkVNRVIiXSBFREVuY291bnRlcgogICAgd2hlcmUgRURFbmNvdW50ZXIudHlwZSBpbiAiRW1lcmdlbmN5IERlcGFydG1lbnQgRXZhbHVhdGlvbiBhbmQgTWFuYWdlbWVudCBWaXNpdCIKICAgICAgYW5kIEVERW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgYW5kIEVERW5jb3VudGVyLnN0YXR1cyA9ICdmaW5pc2hlZCcKICAgICAgYW5kIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YoRURFbmNvdW50ZXIucGVyaW9kKSkgPj0gMTgKCmRlZmluZSAiRUQgRW5jb3VudGVyIHdpdGggU1RFTUkgRGlhZ25vc2lzIjoKICAiRUQgRW5jb3VudGVyIER1cmluZyBNUCIgRURFbmNvdW50ZXJpbk1QCiAgICB3aGVyZSAoIEVERW5jb3VudGVyaW5NUC5yZWFzb25Db2RlIGluICJTVEVNSSIKICAgICAgICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAgICAgICAvLyBPcmlnaW5hbDoKICAgICAgICAvLyBvciBleGlzdHMgKCAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJTVEVNSSJdCiAgICAgICAgLy8gICAgICAgdW5pb24gW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlNURU1JIl0KICAgICAgICBvciBleGlzdHMgKCAoICggW0NvbmRpdGlvbjogIlNURU1JIl0KICAgICAgICAgICkudmVyaWZpZWQgKCApICkgRHhTVEVNSQogICAgICAgICAgICB3aGVyZSAoIEVERW5jb3VudGVyaW5NUC5lbmNvdW50ZXJEaWFnbm9zaXMgKCApLmNvZGUgaW4gIlNURU1JIgogICAgICAgICAgICAgICAgb3IgKCBEeFNURU1JLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgc3RhcnRzIGR1cmluZyBFREVuY291bnRlcmluTVAucGVyaW9kICkKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKCmRlZmluZSAiRUQgRW5jb3VudGVyIHdpdGggRGlzY2hhcmdlIERpc3Bvc2l0aW9uIGFzIFBhdGllbnQgRXhwaXJlZCI6CiAgIkVEIEVuY291bnRlciB3aXRoIFNURU1JIERpYWdub3NpcyIgRUR3aXRoU1RFTUkKICAgIHdoZXJlIEVEd2l0aFNURU1JLmhvc3BpdGFsaXphdGlvbi5kaXNjaGFyZ2VEaXNwb3NpdGlvbiBpbiAiUGF0aWVudCBFeHBpcmVkIgoKZGVmaW5lICJFRCBFbmNvdW50ZXIgd2l0aCBEaXNjaGFyZ2UgRGlzcG9zaXRpb24gYXMgTGVmdCBBZ2FpbnN0IE1lZGljYWwgQWR2aWNlIjoKICAiRUQgRW5jb3VudGVyIHdpdGggU1RFTUkgRGlhZ25vc2lzIiBFRHdTVEVNSQogICAgd2hlcmUgRUR3U1RFTUkuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIGluICJMZWZ0IEFnYWluc3QgTWVkaWNhbCBBZHZpY2UiCgpkZWZpbmUgIkVEIEVuY291bnRlciB3aXRoIEhvc3BpY2UgU2VydmljZXMiOgogIGZyb20KICAgICJFRCBFbmNvdW50ZXIgd2l0aCBTVEVNSSBEaWFnbm9zaXMiIEVEd1NURU1JCiAgICBsZXQgU2l4TW9udGhzQmVmb3JlVG9FbmRPZlNURU1JOiBJbnRlcnZhbFtzdGFydCBvZiAoIEVEd1NURU1JLnBlcmlvZCApIC0gNiBtb250aHMsIGVuZCBvZiAoIEVEd1NURU1JLnBlcmlvZCApXQogICAgd2hlcmUgKCBleGlzdHMgKCAoICggW0VuY291bnRlcjogIkVuY291bnRlciBJbnBhdGllbnQiXSApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIElucGF0aWVudEVuY291bnRlcgogICAgICAgICAgd2hlcmUgKCBJbnBhdGllbnRFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIH4gIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiCiAgICAgICAgICAgICAgb3IgSW5wYXRpZW50RW5jb3VudGVyLmhvc3BpdGFsaXphdGlvbi5kaXNjaGFyZ2VEaXNwb3NpdGlvbiB+ICJEaXNjaGFyZ2UgdG8gaGVhbHRoY2FyZSBmYWNpbGl0eSBmb3IgaG9zcGljZSBjYXJlIChwcm9jZWR1cmUpIgogICAgICAgICAgKQogICAgICAgICAgICBhbmQgSW5wYXRpZW50RW5jb3VudGVyLnBlcmlvZCBzdGFydHMgYmVmb3JlIG9yIG9uIHN0YXJ0IG9mICggRUR3U1RFTUkucGVyaW9kICkKICAgICAgICAgICAgYW5kIElucGF0aWVudEVuY291bnRlci5wZXJpb2Qgb3ZlcmxhcHMgZGF5IG9mIFNpeE1vbnRoc0JlZm9yZVRvRW5kT2ZTVEVNSQogICAgICApCiAgICAgICAgb3IgZXhpc3RzICggKCAoIFtFbmNvdW50ZXI6ICJIb3NwaWNlIEVuY291bnRlciJdICkuaXNFbmNvdW50ZXJQZXJmb3JtZWQgKCApICkgSG9zcGljZUVuY291bnRlcgogICAgICAgICAgICB3aGVyZSBIb3NwaWNlRW5jb3VudGVyLnBlcmlvZCBzdGFydHMgYmVmb3JlIG9yIG9uIHN0YXJ0IG9mICggRUR3U1RFTUkucGVyaW9kICkKICAgICAgICAgICAgICBhbmQgKCBIb3NwaWNlRW5jb3VudGVyLnBlcmlvZCBvdmVybGFwcyBkYXkgb2YgU2l4TW9udGhzQmVmb3JlVG9FbmRPZlNURU1JICkKICAgICAgICApCiAgICAgICAgb3IgZXhpc3RzICggKCAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJIb3NwaWNlIGNhcmUgW01pbmltdW0gRGF0YSBTZXRdIl0gKS5pc0Fzc2Vzc21lbnRQZXJmb3JtZWQgKCApICkgSG9zcGljZUFzc2Vzc21lbnQKICAgICAgICAgICAgd2hlcmUgKCBIb3NwaWNlQXNzZXNzbWVudCBhcyBPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQgKS52YWx1ZSB+ICJZZXMgKHF1YWxpZmllciB2YWx1ZSkiCiAgICAgICAgICAgICAgYW5kIEhvc3BpY2VBc3Nlc3NtZW50LmVmZmVjdGl2ZS50b0ludGVydmFsICggKSBzdGFydHMgYmVmb3JlIG9yIG9uIHN0YXJ0IG9mICggRUR3U1RFTUkucGVyaW9kICkKICAgICAgICAgICAgICBhbmQgKCBIb3NwaWNlQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIFNpeE1vbnRoc0JlZm9yZVRvRW5kT2ZTVEVNSSApCiAgICAgICAgKQogICAgICAgIG9yIGV4aXN0cyAoICggKCBbU2VydmljZVJlcXVlc3Q6ICJIb3NwaWNlIENhcmUgQW1idWxhdG9yeSJdICkuaXNJbnRlcnZlbnRpb25PcmRlciAoICkgKSBIb3NwaWNlT3JkZXIKICAgICAgICAgICAgd2hlcmUgSG9zcGljZU9yZGVyLmF1dGhvcmVkT24gNiBtb250aHMgb3IgbGVzcyBiZWZvcmUgc3RhcnQgb2YgKCBFRHdTVEVNSS5wZXJpb2QgKQogICAgICAgICkKICAgICAgICBvciBleGlzdHMgKCAoICggW1Byb2NlZHVyZTogIkhvc3BpY2UgQ2FyZSBBbWJ1bGF0b3J5Il0gKS5pc0ludGVydmVudGlvblBlcmZvcm1lZCAoICkgKSBIb3NwaWNlUGVyZm9ybWVkCiAgICAgICAgICAgIHdoZXJlIEhvc3BpY2VQZXJmb3JtZWQucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBiZWZvcmUgb3Igb24gc3RhcnQgb2YgKCBFRHdTVEVNSS5wZXJpb2QgKQogICAgICAgICAgICAgIGFuZCAoIEhvc3BpY2VQZXJmb3JtZWQucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBTaXhNb250aHNCZWZvcmVUb0VuZE9mU1RFTUkgKQogICAgICAgICkKICAgICAgICBvciBleGlzdHMgKCAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJIb3NwaWNlIERpYWdub3NpcyJdICkudmVyaWZpZWQgKCApICkgSG9zcGljZUNhcmVEaWFnbm9zaXMKICAgICAgICAgICAgd2hlcmUgSG9zcGljZUNhcmVEaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBlbmRzIG9uIG9yIGFmdGVyIHN0YXJ0IG9mICggRUR3U1RFTUkucGVyaW9kICkKICAgICAgICApCiAgICApCgpkZWZpbmUgIkV4Y2x1c2lvbiBEaWFnbm9zaXMgRHVyaW5nIEVEIEVuY291bnRlciBvciBXaXRoaW4gMjQgSG91cnMgb2YgRUQgRW5jb3VudGVyIFN0YXJ0IjoKICAiRUQgRW5jb3VudGVyIHdpdGggU1RFTUkgRGlhZ25vc2lzIiBFRHdpdGhTVEVNSQogICAgd2l0aCAoICggWyJDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zIjogIkFvcnRpYyBEaXNzZWN0aW9uIG9yIFJ1cHR1cmVkIEFvcnRpYyBBbmV1cnlzbSJdCiAgICAgICAgdW5pb24gWyJDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zIjogIk5ldXJvbG9naWMgaW1wYWlybWVudCJdCiAgICAgICAgdW5pb24gWyJDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zIjogIkFuZ2luYSBwZWN0b3JpcyB3aXRoIGRvY3VtZW50ZWQgc3Bhc20iXQogICAgICAgIHVuaW9uIFsiQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucyI6ICJWZW50cmljdWxhciBhbmV1cnlzbSBkdWUgdG8gYW5kIGZvbGxvd2luZyBhY3V0ZSBteW9jYXJkaWFsIGluZmFyY3Rpb24gKGRpc29yZGVyKSJdCiAgICAgICAgdW5pb24gWyJDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zIjogIkFuZXVyeXNtIG9mIGhlYXJ0Il0KICAgICAgICB1bmlvbiBbIkNvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnMiOiAiVGFrb3RzdWJvIGNhcmRpb215b3BhdGh5IChkaXNvcmRlcikiXQogICAgICAgIHVuaW9uIFsiQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucyI6ICJUYWtvdHN1Ym8gc3luZHJvbWUiXQogICAgICAgIHVuaW9uIFsiQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucyI6ICJDYXJkaW9wdWxtb25hcnkgRW1lcmdlbmN5Il0KICAgICkudmVyaWZpZWQgKCApICkgRXhjbHVzaW9uRGlhZ25vc2lzCiAgICAgIHN1Y2ggdGhhdCAoICggRXhjbHVzaW9uRGlhZ25vc2lzLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgc3RhcnRzIGR1cmluZyBFRHdpdGhTVEVNSS5wZXJpb2QgKQogICAgICAgICAgb3IgKCBFeGNsdXNpb25EaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgMjQgaG91cnMgb3IgbGVzcyBiZWZvcmUgc3RhcnQgb2YgRUR3aXRoU1RFTUkucGVyaW9kICkKICAgICAgKQoKZGVmaW5lICJSZWNlaXZlZCB0UEEgaW4gQW5vdGhlciBGYWNpbGl0eSB3aXRoaW4gMjQgaG91cnMgUHJpb3IgdG8gQWRtaXNzaW9uIjoKICAiRUQgRW5jb3VudGVyIHdpdGggU1RFTUkgRGlhZ25vc2lzIiBFRHdpdGhTVEVNSQogICAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgICAvLyBPcmlnaW5hbDoKICAgIC8vIHdpdGggKCAoIFsiQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucyI6ICJTdGF0dXMgcG9zdCBhZG1pbmlzdHJhdGlvbiBvZiB0UEEgKHJ0UEEpIGluIGEgZGlmZmVyZW50IGZhY2lsaXR5IHdpdGhpbiB0aGUgbGFzdCAyNCBob3VycyBwcmlvciB0byBhZG1pc3Npb24gdG8gY3VycmVudCBmYWNpbGl0eSJdCiAgICAvLyAgICAgdW5pb24gWyJDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXMiOiAiU3RhdHVzIHBvc3QgYWRtaW5pc3RyYXRpb24gb2YgdFBBIChydFBBKSBpbiBhIGRpZmZlcmVudCBmYWNpbGl0eSB3aXRoaW4gdGhlIGxhc3QgMjQgaG91cnMgcHJpb3IgdG8gYWRtaXNzaW9uIHRvIGN1cnJlbnQgZmFjaWxpdHkiXQogICAgd2l0aCAoICggW0NvbmRpdGlvbjogIlN0YXR1cyBwb3N0IGFkbWluaXN0cmF0aW9uIG9mIHRQQSAocnRQQSkgaW4gYSBkaWZmZXJlbnQgZmFjaWxpdHkgd2l0aGluIHRoZSBsYXN0IDI0IGhvdXJzIHByaW9yIHRvIGFkbWlzc2lvbiB0byBjdXJyZW50IGZhY2lsaXR5Il0KICAgICkudmVyaWZpZWQgKCApICkgVFBBCiAgICAgIHN1Y2ggdGhhdCBUUEEucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgZHVyaW5nIEVEd2l0aFNURU1JLnBlcmlvZAoKZGVmaW5lICJFRCBFbmNvdW50ZXIgd2l0aCBhIERvY3VtZW50ZWQgUmVhc29uIGZvciBObyBQQ0kgUGVyZm9ybWVkIjoKICAiRUQgRW5jb3VudGVyIHdpdGggU1RFTUkgRGlhZ25vc2lzIiBFRHdTVEVNSQogICAgd2l0aCBbIlByb2NlZHVyZU5vdERvbmUiOiAiUGVyY3V0YW5lb3VzIENvcm9uYXJ5IEludGVydmVudGlvbiJdIFBDSU5vdERvbmUKICAgICAgc3VjaCB0aGF0ICggUENJTm90RG9uZS5zdGF0dXNSZWFzb24gaW4gIlBhdGllbnQgUmVmdXNhbCIKICAgICAgICAgIG9yIFBDSU5vdERvbmUuc3RhdHVzUmVhc29uIGluICJQcm9jZWR1cmUgTm90IEluZGljYXRlZC9Db250cmFpbmRpY2F0ZWQiCiAgICAgICkKICAgICAgICBhbmQgUENJTm90RG9uZS5wZXJmb3JtZWQgZHVyaW5nIEVEd1NURU1JLnBlcmlvZAoKZGVmaW5lICJFRCBFbmNvdW50ZXIgd2l0aCBhIERvY3VtZW50ZWQgUmVhc29uIGZvciBOb3QgQWRtaW5pc3RlcmluZyBGaWJyaW5vbHl0aWMgVGhlcmFweSI6CiAgIkVEIEVuY291bnRlciB3aXRoIFNURU1JIERpYWdub3NpcyIgRUR3U1RFTUkKICAgIHdpdGggWyJNZWRpY2F0aW9uQWRtaW5pc3RyYXRpb25Ob3REb25lIjogIkZpYnJpbm9seXRpYyBUaGVyYXB5Il0gRmlicmlub2x5dGljTm9NZWQKICAgICAgc3VjaCB0aGF0ICggRmlicmlub2x5dGljTm9NZWQuc3RhdHVzUmVhc29uIGluICJQYXRpZW50IFJlZnVzYWwiCiAgICAgICAgICBvciBGaWJyaW5vbHl0aWNOb01lZC5zdGF0dXNSZWFzb24gaW4gIkRydWcgSW50ZXJ2ZW50aW9uIE5vdCBJbmRpY2F0ZWQvQ29udHJhaW5kaWNhdGVkIgogICAgICApCiAgICAgICAgYW5kIEZpYnJpbm9seXRpY05vTWVkLmVmZmVjdGl2ZSBkdXJpbmcgRUR3U1RFTUkucGVyaW9kCgpkZWZpbmUgIkZpYnJpbm9seXRpYyBUaGVyYXB5IEFkbWluaXN0cmF0aW9uIHdpdGhpbiAzMCBNaW51dGVzIG9mIEFycml2YWwiOgogICJFRCBFbmNvdW50ZXIgd2l0aCBTVEVNSSBEaWFnbm9zaXMiIEVEd2l0aFNURU1JCiAgICB3aXRoIFsiTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uIjogIkZpYnJpbm9seXRpYyBUaGVyYXB5Il0gRmlicmlub2x5dGljCiAgICAgIHN1Y2ggdGhhdCBGaWJyaW5vbHl0aWMuc3RhdHVzID0gJ2NvbXBsZXRlZCcKICAgICAgICBhbmQgc3RhcnQgb2YgKCBGaWJyaW5vbHl0aWMuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApICkgMzAgbWludXRlcyBvciBsZXNzIGFmdGVyIEVEd2l0aFNURU1JLmN1cnJlbnRlbWVyZ2VuY3lEZXBhcnRtZW50QXJyaXZhbFRpbWUgKCApCgpkZWZpbmUgIkludHJhY3JhbmlhbCBvciBJbnRyYXNwaW5hbCBQcm9jZWR1cmUgOTAgRGF5cyBvciBMZXNzIEJlZm9yZSBTdGFydCBvZiBFRCBFbmNvdW50ZXIiOgogICJFRCBFbmNvdW50ZXIgd2l0aCBTVEVNSSBEaWFnbm9zaXMiIEVEd2l0aFNURU1JCiAgICB3aXRoIFsiUHJvY2VkdXJlIjogIkludHJhY3JhbmlhbCBvciBJbnRyYXNwaW5hbCBzdXJnZXJ5Il0gQ3JhbmlhbG9yU3BpbmFsU3VyZ2VyeQogICAgICBzdWNoIHRoYXQgQ3JhbmlhbG9yU3BpbmFsU3VyZ2VyeS5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkgc3RhcnRzIDkwIGRheXMgb3IgbGVzcyBiZWZvcmUgc3RhcnQgb2YgKCBFRHdpdGhTVEVNSS5wZXJpb2QgKQogICAgICAgIGFuZCBDcmFuaWFsb3JTcGluYWxTdXJnZXJ5LnN0YXR1cyA9ICdjb21wbGV0ZWQnCgpkZWZpbmUgIkludHViYXRpb24gb3IgTWVjaGFuaWNhbCBDaXJjdWxhdG9yeSBBc3Npc3QgRGV2aWNlIFBsYWNlbWVudCBvciBSZW1vdmFsIFByb2NlZHVyZSBEdXJpbmcgRUQgRW5jb3VudGVyIG9yIFdpdGhpbiAyNCBIb3VycyBvZiBFRCBFbmNvdW50ZXIgU3RhcnQiOgogICJFRCBFbmNvdW50ZXIgd2l0aCBTVEVNSSBEaWFnbm9zaXMiIEVEd2l0aFNURU1JCiAgICB3aXRoICggWyJQcm9jZWR1cmUiOiAiRW5kb3RyYWNoZWFsIEludHViYXRpb24iXQogICAgICB1bmlvbiBbIlByb2NlZHVyZSI6ICJNZWNoYW5pY2FsIENpcmN1bGF0b3J5IEFzc2lzdCBEZXZpY2UiXSApIEFpcndheVByb2NlZHVyZQogICAgICBzdWNoIHRoYXQgKCAoIEFpcndheVByb2NlZHVyZS5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkgc3RhcnRzIGR1cmluZyAoIEVEd2l0aFNURU1JLnBlcmlvZCApICkKICAgICAgICAgIG9yICggQWlyd2F5UHJvY2VkdXJlLnBlcmZvcm1lZC50b0ludGVydmFsICggKSBzdGFydHMgMjQgaG91cnMgb3IgbGVzcyBiZWZvcmUgc3RhcnQgb2YgKCBFRHdpdGhTVEVNSS5wZXJpb2QgKSApCiAgICAgICkKICAgICAgICBhbmQgQWlyd2F5UHJvY2VkdXJlLnN0YXR1cyA9ICdjb21wbGV0ZWQnCgpkZWZpbmUgIk1ham9yIFN1cmdpY2FsIFByb2NlZHVyZSAyMSBEYXlzIG9yIExlc3MgQmVmb3JlIFN0YXJ0IG9mIG9yIFN0YXJ0cyBEdXJpbmcgRUQgRW5jb3VudGVyIjoKICAiRUQgRW5jb3VudGVyIHdpdGggU1RFTUkgRGlhZ25vc2lzIiBFRHdpdGhTVEVNSQogICAgd2l0aCBbIlByb2NlZHVyZSI6ICJNYWpvciBTdXJnaWNhbCBQcm9jZWR1cmUiXSBNYWpvclN1cmdlcnkKICAgICAgc3VjaCB0aGF0ICggTWFqb3JTdXJnZXJ5LnBlcmZvcm1lZC50b0ludGVydmFsICggKSBzdGFydHMgMjEgZGF5cyBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBFRHdpdGhTVEVNSS5wZXJpb2QKICAgICAgICAgIG9yIE1ham9yU3VyZ2VyeS5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkgc3RhcnRzIGR1cmluZyBFRHdpdGhTVEVNSS5wZXJpb2QKICAgICAgKQogICAgICAgIGFuZCBNYWpvclN1cmdlcnkuc3RhdHVzID0gJ2NvbXBsZXRlZCcKCmRlZmluZSAiUENJIHdpdGhpbiA5MCBNaW51dGVzIG9mIEFycml2YWwiOgogICJFRCBFbmNvdW50ZXIgd2l0aCBTVEVNSSBEaWFnbm9zaXMiIEVEd2l0aFNURU1JCiAgICB3aXRoIFsiUHJvY2VkdXJlIjogIlBlcmN1dGFuZW91cyBDb3JvbmFyeSBJbnRlcnZlbnRpb24iXSBQQ0kKICAgICAgc3VjaCB0aGF0IFBDSS5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkgc3RhcnRzIDkwIG1pbnV0ZXMgb3IgbGVzcyBhZnRlciBFRHdpdGhTVEVNSS5jdXJyZW50ZW1lcmdlbmN5RGVwYXJ0bWVudEFycml2YWxUaW1lICggKQogICAgICAgIGFuZCBQQ0kuc3RhdHVzID0gJ2NvbXBsZXRlZCcKCmRlZmluZSAiU0RFIEV0aG5pY2l0eSI6CiAgU0RFLiJTREUgRXRobmljaXR5IgoKZGVmaW5lICJTREUgUGF5ZXIiOgogIFNERS4iU0RFIFBheWVyIgoKZGVmaW5lICJTREUgUmFjZSI6CiAgU0RFLiJTREUgUmFjZSIKCmRlZmluZSAiU0RFIFNleCI6CiAgU0RFLiJTREUgU2V4IgoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBjdXJyZW50ZW1lcmdlbmN5RGVwYXJ0bWVudEFycml2YWxUaW1lKEVERW5jb3VudGVyIEVuY291bnRlcik6CiAgRmlyc3QoRURFbmNvdW50ZXIubG9jYXRpb24gRURMb2NhdGlvbgogICAgICB3aGVyZSBleGlzdHMoKEVETG9jYXRpb24ubG9jYXRpb24uZ2V0TG9jYXRpb24oKS50eXBlKSBMb2NhdGlvblR5cGUKICAgICAgICAgIHdoZXJlKExvY2F0aW9uVHlwZSBpbiAiRW1lcmdlbmN5IERlcGFydG1lbnQgVmlzaXQiCiAgICAgICAgICAgICAgb3IgTG9jYXRpb25UeXBlIH4gIkVtZXJnZW5jeSByb29tIgogICAgICAgICAgICAgIG9yIExvY2F0aW9uVHlwZSB+ICJFbWVyZ2VuY3kgdHJhdW1hIHVuaXQiCiAgICAgICAgICApCiAgICAgICAgICAgIGFuZCBzdGFydCBvZiBFRExvY2F0aW9uLnBlcmlvZCBpcyBub3QgbnVsbAogICAgICApCiAgICAgIHJldHVybiBzdGFydCBvZiBFRExvY2F0aW9uLnBlcmlvZAogICAgICBzb3J0IGFzY2VuZGluZwogICkKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gY3VycmVudGVtZXJnZW5jeURlcGFydG1lbnREZXBhcnRUaW1lKEVERW5jb3VudGVyIEVuY291bnRlcik6CiAgTGFzdChFREVuY291bnRlci5sb2NhdGlvbiBFRExvY2F0aW9uCiAgICAgIHdoZXJlIGV4aXN0cygoRURMb2NhdGlvbi5sb2NhdGlvbi5nZXRMb2NhdGlvbigpLnR5cGUpIExvY2F0aW9uVHlwZQogICAgICAgICAgd2hlcmUoTG9jYXRpb25UeXBlIGluICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCIKICAgICAgICAgICAgICBvciBMb2NhdGlvblR5cGUgfiAiRW1lcmdlbmN5IHJvb20iCiAgICAgICAgICAgICAgb3IgTG9jYXRpb25UeXBlIH4gIkVtZXJnZW5jeSB0cmF1bWEgdW5pdCIKICAgICAgICAgICkKICAgICAgICAgICAgYW5kIAogICAgICAgICAgICBlbmQgb2YgRURMb2NhdGlvbi5wZXJpb2QgaXMgbm90IG51bGwKICAgICAgKQogICAgICByZXR1cm4gCiAgICAgIGVuZCBvZiBFRExvY2F0aW9uLnBlcmlvZAogICAgICBzb3J0IGFzY2VuZGluZwogICk=",
"url" : "https://madie.cms.gov/Library-CMS996FHIRAptTxforSTEMI.cql"
}
]
}