{
  "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 &quot;LOINC&quot;: 'http://loinc.org'\ncodesystem &quot;HSLOC&quot;: 'https://www.cdc.gov/nhsn/cdaportal/terminology/codesystem/hsloc.html'\ncodesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'\ncodesystem &quot;ActCode&quot;: 'http://terminology.hl7.org/CodeSystem/v3-ActCode'\ncodesystem &quot;ICD10CM&quot;: 'http://hl7.org/fhir/sid/icd-10-cm'\ncodesystem &quot;RoleCode&quot;: 'http://terminology.hl7.org/CodeSystem/v3-RoleCode'\n\nvalueset &quot;Active Bleeding or Bleeding Diathesis, Excluding Menses&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4036'\nvalueset &quot;Active Peptic Ulcer&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4031'\nvalueset &quot;Thrombolytics Adverse Event&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.6'\nvalueset &quot;Allergy to thrombolytics&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.5'\nvalueset &quot;Oral Anticoagulant Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4045'\nvalueset &quot;Aortic Dissection or Ruptured Aortic Aneurysm&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4028'\nvalueset &quot;Cardiopulmonary Emergency&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4048'\nvalueset &quot;Cerebral Vascular Lesion&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4025'\nvalueset &quot;Closed Head and Facial Trauma&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4026'\nvalueset &quot;Dementia and Related Intracranial Pathologies&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4043'\nvalueset &quot;Discharge To Acute Care Facility&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.87'\nvalueset &quot;Emergency Department Evaluation and Management Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010'\nvalueset &quot;Emergency Department Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'\nvalueset &quot;Endotracheal Intubation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.69'\nvalueset &quot;Fibrinolytic Therapy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4019'\nvalueset &quot;Intracranial or Intraspinal surgery&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.2'\nvalueset &quot;Ischemic Stroke&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.247'\nvalueset &quot;Major Surgical Procedure&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4056'\nvalueset &quot;Malignant Intracranial Neoplasm Group&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.3'\nvalueset &quot;Mechanical Circulatory Assist Device&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4052'\nvalueset &quot;Neurologic impairment&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.114.12.1012'\nvalueset &quot;Patient Expired&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.309'\nvalueset &quot;Percutaneous Coronary Intervention&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.2000.5'\nvalueset &quot;Pregnant State&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4055'\nvalueset &quot;STEMI&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4017'\nvalueset &quot;Thrombolytic medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.4'\nvalueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'\nvalueset &quot;Hospice Care Ambulatory&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1584'\nvalueset &quot;Hospice Diagnosis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165'\nvalueset &quot;Hospice Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003'\nvalueset &quot;Patient Refusal&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.93'\nvalueset &quot;Left Against Medical Advice&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.308'\nvalueset &quot;Drug Intervention Not Indicated/Contraindicated&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1282.1'\nvalueset &quot;Procedure Not Indicated/Contraindicated&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1282.2'\n\ncode &quot;EMER&quot;: 'EMER' from &quot;ActCode&quot; display 'emergency'\ncode &quot;Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility&quot;: 'Z92.82' from &quot;ICD10CM&quot; display 'Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility'\ncode &quot;Angina pectoris with documented spasm&quot;: 'I20.1' from &quot;ICD10CM&quot; display 'Angina pectoris with documented spasm'\ncode &quot;Long term (current) use of anticoagulants&quot;: 'Z79.01' from &quot;ICD10CM&quot; display 'Long term (current) use of anticoagulants'\ncode &quot;Takotsubo cardiomyopathy (disorder)&quot;: '441541008' from &quot;SNOMEDCT&quot; display 'Takotsubo cardiomyopathy (disorder)'\ncode &quot;Takotsubo syndrome&quot;: 'I51.81' from &quot;ICD10CM&quot; display 'Takotsubo syndrome'\ncode &quot;Ventricular aneurysm due to and following acute myocardial infarction (disorder)&quot;: '723858002' from &quot;SNOMEDCT&quot; display 'Ventricular aneurysm due to and following acute myocardial infarction (disorder)'\ncode &quot;Aneurysm of heart&quot;: 'I25.3' from &quot;ICD10CM&quot; display 'Aneurysm of heart'\ncode &quot;Discharge to healthcare facility for hospice care (procedure)&quot;: '428371000124100' from &quot;SNOMEDCT&quot; display 'Discharge to healthcare facility for hospice care (procedure)'\ncode &quot;Discharge to home for hospice care (procedure)&quot;: '428361000124107' from &quot;SNOMEDCT&quot; display 'Discharge to home for hospice care (procedure)'\ncode &quot;Hospice care [Minimum Data Set]&quot;: '45755-6' from &quot;LOINC&quot; display 'Hospice care [Minimum Data Set]'\ncode &quot;Yes (qualifier value)&quot;: '373066001' from &quot;SNOMEDCT&quot; display 'Yes (qualifier value)'\ncode &quot;Emergency room&quot;: 'ER' from &quot;RoleCode&quot; display 'Emergency room'\ncode &quot;Emergency trauma unit&quot;: 'ETU' from &quot;RoleCode&quot; display 'Emergency trauma unit'\n\nparameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;\n  default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)\n\ncontext Patient\n\ndefine &quot;Initial Population&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot;\n\ndefine &quot;Denominator&quot;:\n  &quot;Initial Population&quot;\n\ndefine &quot;Denominator Exclusions&quot;:\n  &quot;Allergy or Intolerance to Thrombolytic Medications Overlaps ED Encounter&quot;\n    union &quot;Adverse Effect to Thrombolytic Medications Before End of ED Encounter&quot;\n    union &quot;Active Exclusion Diagnosis at Start of ED Encounter&quot;\n    union &quot;Active use of Anticoagulants&quot;\n    union &quot;Exclusion Diagnosis During ED Encounter or Within 24 Hours of ED Encounter Start&quot;\n    union &quot;Major Surgical Procedure 21 Days or Less Before Start of or Starts During ED Encounter&quot;\n    union &quot;Intubation or Mechanical Circulatory Assist Device Placement or Removal Procedure During ED Encounter or Within 24 Hours of ED Encounter Start&quot;\n    union &quot;Active Exclusion Diagnosis Within 90 Days Before or At the Start of ED Encounter&quot;\n    union &quot;Intracranial or Intraspinal Procedure 90 Days or Less Before Start of ED Encounter&quot;\n    union &quot;ED Encounter with Discharge Disposition as Patient Expired&quot;\n    union &quot;ED Encounter with Discharge Disposition as Left Against Medical Advice&quot;\n    union &quot;ED Encounter with Hospice Services&quot;\n    union &quot;Currently Pregnant&quot;\n\ndefine &quot;Denominator Exceptions&quot;:\n  &quot;Received tPA in Another Facility within 24 hours Prior to Admission&quot;\n    union &quot;ED Encounter with a Documented Reason for No PCI Performed&quot;\n    union &quot;ED Encounter with a Documented Reason for Not Administering Fibrinolytic Therapy&quot;\n\ndefine &quot;Numerator&quot;:\n  &quot;Fibrinolytic Therapy Administration within 30 Minutes of Arrival&quot;\n    union &quot;PCI within 90 Minutes of Arrival&quot;\n    union &quot;ED Departure with Discharge to Acute Care Facility Within 45 Minutes Of Arrival&quot;\n\ndefine &quot;Active Exclusion Diagnosis at Start of ED Encounter&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    with ( ( [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Active Bleeding or Bleeding Diathesis, Excluding Menses&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Malignant Intracranial Neoplasm Group&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Cerebral Vascular Lesion&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Dementia and Related Intracranial Pathologies&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Pregnant State&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Allergy to thrombolytics&quot;]\n    ).verified ( ) ) ActiveExclusionDx\n      such that ActiveExclusionDx.prevalenceInterval ( ) overlaps before ( EDwithSTEMI.period )\n\ndefine &quot;Currently Pregnant&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwSTEMI\n    with ( [&quot;USCore.ObservationPregnancyStatusProfile&quot;] ) PregStatus\n      such that PregStatus.status = 'final'\n        and ( PregStatus.value in &quot;Pregnant State&quot; )\n        and ( PregStatus.effective during EDwSTEMI.period )\n\ndefine &quot;Active Exclusion Diagnosis Within 90 Days Before or At the Start of ED Encounter&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwSTEMI\n    with ( ( [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Ischemic Stroke&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Closed Head and Facial Trauma&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Active Peptic Ulcer&quot;]\n    ).verified ( ) ) ExclusionCondition\n      such that ExclusionCondition.prevalenceInterval ( ) starts during Interval[start of ( EDwSTEMI.period ) - 90 days, start of ( EDwSTEMI.period )]\n\ndefine &quot;Active Oral Anticoagulant Medication at the Start of ED Encounter&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    with [&quot;MedicationRequest&quot;: &quot;Oral Anticoagulant Medications&quot;] 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 &quot;Active Long Term use of Anticoagulants&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n    // Original:\n    // with ( ( [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Long term (current) use of anticoagulants&quot;]\n    //     union [&quot;ConditionEncounterDiagnosis&quot;: &quot;Long term (current) use of anticoagulants&quot;]\n    with ( ( [Condition: &quot;Long term (current) use of anticoagulants&quot;] ).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 &quot;Active use of Anticoagulants&quot;:\n  &quot;Active Oral Anticoagulant Medication at the Start of ED Encounter&quot;\n    union &quot;Active Long Term use of Anticoagulants&quot;\n\ndefine &quot;Adverse Effect to Thrombolytic Medications Before End of ED Encounter&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwSTEMI\n    with [AdverseEvent: &quot;Thrombolytics Adverse Event&quot;] ThrombolyticAdverseEvent\n      such that Coalesce(ThrombolyticAdverseEvent.date, ThrombolyticAdverseEvent.detected, ThrombolyticAdverseEvent.recordedDate) before end of ( EDwSTEMI.period )\n        and ThrombolyticAdverseEvent.actuality = 'actual'\n\ndefine &quot;Allergy or Intolerance to Thrombolytic Medications Overlaps ED Encounter&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwSTEMI\n    with [&quot;AllergyIntolerance&quot;: &quot;Thrombolytic medications&quot;] ThrombolyticAllergy\n      such that ThrombolyticAllergy.clinicalStatus ~ USQualityCoreCommon.&quot;allergy-active&quot;\n        and ( ThrombolyticAllergy.verificationStatus is not null implies ( ThrombolyticAllergy.verificationStatus ~ USQualityCoreCommon.&quot;allergy-confirmed&quot;\n              or ThrombolyticAllergy.verificationStatus ~ USQualityCoreCommon.&quot;allergy-unconfirmed&quot;\n          )\n        )\n        and ( ThrombolyticAllergy.prevalenceInterval ( ) overlaps ( EDwSTEMI.period )\n            or ThrombolyticAllergy.onset before end EDwSTEMI.period\n        )\n\ndefine &quot;ED Departure with Discharge to Acute Care Facility Within 45 Minutes Of Arrival&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    where EDwithSTEMI.currentemergencyDepartmentDepartTime ( ) 45 minutes or less after EDwithSTEMI.currentemergencyDepartmentArrivalTime ( )\n      and EDwithSTEMI.hospitalization.dischargeDisposition in &quot;Discharge To Acute Care Facility&quot;\n\ndefine &quot;ED Encounter During MP&quot;:\n  [&quot;Encounter&quot;: class ~ &quot;EMER&quot;] EDEncounter\n    where EDEncounter.type in &quot;Emergency Department Evaluation and Management Visit&quot;\n      and EDEncounter.period ends during day of &quot;Measurement Period&quot;\n      and EDEncounter.status = 'finished'\n      and AgeInYearsAt(date from start of(EDEncounter.period)) &gt;= 18\n\ndefine &quot;ED Encounter with STEMI Diagnosis&quot;:\n  &quot;ED Encounter During MP&quot; EDEncounterinMP\n    where ( EDEncounterinMP.reasonCode in &quot;STEMI&quot;\n        // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n        // Original:\n        // or exists ( ( ( [ConditionProblemsHealthConcerns: &quot;STEMI&quot;]\n        //       union [ConditionEncounterDiagnosis: &quot;STEMI&quot;]\n        or exists ( ( ( [Condition: &quot;STEMI&quot;]\n          ).verified ( ) ) DxSTEMI\n            where ( EDEncounterinMP.encounterDiagnosis ( ).code in &quot;STEMI&quot;\n                or ( DxSTEMI.prevalenceInterval ( ) starts during EDEncounterinMP.period )\n            )\n        )\n    )\n\ndefine &quot;ED Encounter with Discharge Disposition as Patient Expired&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    where EDwithSTEMI.hospitalization.dischargeDisposition in &quot;Patient Expired&quot;\n\ndefine &quot;ED Encounter with Discharge Disposition as Left Against Medical Advice&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwSTEMI\n    where EDwSTEMI.hospitalization.dischargeDisposition in &quot;Left Against Medical Advice&quot;\n\ndefine &quot;ED Encounter with Hospice Services&quot;:\n  from\n    &quot;ED Encounter with STEMI Diagnosis&quot; EDwSTEMI\n    let SixMonthsBeforeToEndOfSTEMI: Interval[start of ( EDwSTEMI.period ) - 6 months, end of ( EDwSTEMI.period )]\n    where ( exists ( ( ( [Encounter: &quot;Encounter Inpatient&quot;] ).isEncounterPerformed ( ) ) InpatientEncounter\n          where ( InpatientEncounter.hospitalization.dischargeDisposition ~ &quot;Discharge to home for hospice care (procedure)&quot;\n              or InpatientEncounter.hospitalization.dischargeDisposition ~ &quot;Discharge to healthcare facility for hospice care (procedure)&quot;\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: &quot;Hospice Encounter&quot;] ).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: &quot;Hospice care [Minimum Data Set]&quot;] ).isAssessmentPerformed ( ) ) HospiceAssessment\n            where ( HospiceAssessment as ObservationScreeningAssessment ).value ~ &quot;Yes (qualifier value)&quot;\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: &quot;Hospice Care Ambulatory&quot;] ).isInterventionOrder ( ) ) HospiceOrder\n            where HospiceOrder.authoredOn 6 months or less before start of ( EDwSTEMI.period )\n        )\n        or exists ( ( ( [Procedure: &quot;Hospice Care Ambulatory&quot;] ).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: &quot;Hospice Diagnosis&quot;] ).verified ( ) ) HospiceCareDiagnosis\n            where HospiceCareDiagnosis.prevalenceInterval ( ) ends on or after start of ( EDwSTEMI.period )\n        )\n    )\n\ndefine &quot;Exclusion Diagnosis During ED Encounter or Within 24 Hours of ED Encounter Start&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    with ( ( [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Aortic Dissection or Ruptured Aortic Aneurysm&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Neurologic impairment&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Angina pectoris with documented spasm&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Ventricular aneurysm due to and following acute myocardial infarction (disorder)&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Aneurysm of heart&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Takotsubo cardiomyopathy (disorder)&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Takotsubo syndrome&quot;]\n        union [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Cardiopulmonary Emergency&quot;]\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 &quot;Received tPA in Another Facility within 24 hours Prior to Admission&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n    // Original:\n    // with ( ( [&quot;ConditionProblemsHealthConcerns&quot;: &quot;Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility&quot;]\n    //     union [&quot;ConditionEncounterDiagnosis&quot;: &quot;Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility&quot;]\n    with ( ( [Condition: &quot;Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility&quot;]\n    ).verified ( ) ) TPA\n      such that TPA.prevalenceInterval ( ) starts during EDwithSTEMI.period\n\ndefine &quot;ED Encounter with a Documented Reason for No PCI Performed&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwSTEMI\n    with [&quot;ProcedureNotDone&quot;: &quot;Percutaneous Coronary Intervention&quot;] PCINotDone\n      such that ( PCINotDone.statusReason in &quot;Patient Refusal&quot;\n          or PCINotDone.statusReason in &quot;Procedure Not Indicated/Contraindicated&quot;\n      )\n        and PCINotDone.performed during EDwSTEMI.period\n\ndefine &quot;ED Encounter with a Documented Reason for Not Administering Fibrinolytic Therapy&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwSTEMI\n    with [&quot;MedicationAdministrationNotDone&quot;: &quot;Fibrinolytic Therapy&quot;] FibrinolyticNoMed\n      such that ( FibrinolyticNoMed.statusReason in &quot;Patient Refusal&quot;\n          or FibrinolyticNoMed.statusReason in &quot;Drug Intervention Not Indicated/Contraindicated&quot;\n      )\n        and FibrinolyticNoMed.effective during EDwSTEMI.period\n\ndefine &quot;Fibrinolytic Therapy Administration within 30 Minutes of Arrival&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    with [&quot;MedicationAdministration&quot;: &quot;Fibrinolytic Therapy&quot;] Fibrinolytic\n      such that Fibrinolytic.status = 'completed'\n        and start of ( Fibrinolytic.effective.toInterval ( ) ) 30 minutes or less after EDwithSTEMI.currentemergencyDepartmentArrivalTime ( )\n\ndefine &quot;Intracranial or Intraspinal Procedure 90 Days or Less Before Start of ED Encounter&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    with [&quot;Procedure&quot;: &quot;Intracranial or Intraspinal surgery&quot;] CranialorSpinalSurgery\n      such that CranialorSpinalSurgery.performed.toInterval ( ) starts 90 days or less before start of ( EDwithSTEMI.period )\n        and CranialorSpinalSurgery.status = 'completed'\n\ndefine &quot;Intubation or Mechanical Circulatory Assist Device Placement or Removal Procedure During ED Encounter or Within 24 Hours of ED Encounter Start&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    with ( [&quot;Procedure&quot;: &quot;Endotracheal Intubation&quot;]\n      union [&quot;Procedure&quot;: &quot;Mechanical Circulatory Assist Device&quot;] ) 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 &quot;Major Surgical Procedure 21 Days or Less Before Start of or Starts During ED Encounter&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    with [&quot;Procedure&quot;: &quot;Major Surgical Procedure&quot;] 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 &quot;PCI within 90 Minutes of Arrival&quot;:\n  &quot;ED Encounter with STEMI Diagnosis&quot; EDwithSTEMI\n    with [&quot;Procedure&quot;: &quot;Percutaneous Coronary Intervention&quot;] PCI\n      such that PCI.performed.toInterval ( ) starts 90 minutes or less after EDwithSTEMI.currentemergencyDepartmentArrivalTime ( )\n        and PCI.status = 'completed'\n\ndefine &quot;SDE Ethnicity&quot;:\n  SDE.&quot;SDE Ethnicity&quot;\n\ndefine &quot;SDE Payer&quot;:\n  SDE.&quot;SDE Payer&quot;\n\ndefine &quot;SDE Race&quot;:\n  SDE.&quot;SDE Race&quot;\n\ndefine &quot;SDE Sex&quot;:\n  SDE.&quot;SDE Sex&quot;\n\ndefine fluent function currentemergencyDepartmentArrivalTime(EDEncounter Encounter):\n  First(EDEncounter.location EDLocation\n      where exists((EDLocation.location.getLocation().type) LocationType\n          where(LocationType in &quot;Emergency Department Visit&quot;\n              or LocationType ~ &quot;Emergency room&quot;\n              or LocationType ~ &quot;Emergency trauma unit&quot;\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 &quot;Emergency Department Visit&quot;\n              or LocationType ~ &quot;Emergency room&quot;\n              or LocationType ~ &quot;Emergency trauma unit&quot;\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"
  }]
}