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 |
<Library xmlns="http://hl7.org/fhir">
<id value="CMS1173FHIRDiagnosticDelayVTE"/>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<table class="narrative-table">
<tbody>
<tr>
<th colspan="2" scope="row" class="row-header"><a name="metadata"> </a>Metadata</th>
</tr>
<tr>
<th scope="row" class="row-header">Version</th>
<td class="content-container">1.1.000</td>
</tr>
<tr>
<th scope="row" class="row-header">Status</th>
<td class="content-container">Draft</td>
</tr>
<tr>
<th scope="row" class="row-header">Type</th>
<td class="content-container">
<a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header"><a name="parameters"> </a>Parameters</th>
</tr>
<tr>
<th scope="row" class="row-header">Parameter</th>
<td class="content-container">None</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header">Library Content</th>
</tr>
<tr>
<th scope="row" class="row-header">CQL Content</th>
<td>
<a name="cql-content"> </a>
<pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
NOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.
*/
library CMS1173FHIRDiagnosticDelayVTE version '1.1.000'
using USQualityCore version '0.1.0-cibuild'
using USCore version '6.1.0-derived'
using FHIR version '4.0.1'
include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon
include hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon
include hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements
include CQMCommon version '5.1.000' called CQMCommon
include USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon
include SupplementalDataElements version '6.1.000' called SDE
include Status version '2.1.000' called Status
codesystem "LOINC": 'http://loinc.org'
codesystem "SNOMEDCT": 'http://snomed.info/sct'
valueset "Anticoagulant Medications": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.19'
valueset "Encounter Inpatient": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
valueset "Ethnicity": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837'
valueset "Hospice Care Ambulatory": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.15'
valueset "Hospice Diagnosis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165'
valueset "Hospice Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003'
valueset "Imaging Related to VTE": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.47'
valueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'
valueset "Outpatient Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1087'
valueset "Palliative Care Diagnosis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1167'
valueset "Palliative Care Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1090'
valueset "Palliative Care Intervention": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1135'
valueset "VTE Diagnoses": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.49'
valueset "VTE Symptoms": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.51'
code "Discharge to healthcare facility for hospice care (procedure)": '428371000124100' from "SNOMEDCT" display 'Discharge to healthcare facility for hospice care (procedure)'
code "Discharge to home for hospice care (procedure)": '428361000124107' from "SNOMEDCT" display 'Discharge to home for hospice care (procedure)'
code "Hospice care [Minimum Data Set]": '45755-6' from "LOINC" display 'Hospice care [Minimum Data Set]'
code "Yes (qualifier value)": '373066001' from "SNOMEDCT" display 'Yes (qualifier value)'
code "Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)": '71007-9' from "LOINC" display 'Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)'
parameter "Measurement Period" Interval<DateTime>
default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)
context Patient
define "Initial Population":
/***
* Includes all Qualified VTE Encounters in which the patient was aged 18 or older at the start of the qualified VTE encounter.
***/
"Qualified VTE Encounters During Measurement Period" QualifiedEncounter
where AgeInYearsAt(date from start of QualifiedEncounter.period) >= 18
define "Denominator":
"Initial Population"
define "Denominator Exclusions":
"Qualified VTE Encounter With Hospice Services Within Previous 90 Days"
union "Qualified VTE Encounter With Palliative Care Within Previous 90 Days"
union "Qualified VTE Encounter With Other Qualified VTE Encounter Documented Within Previous 6 Months"
define "Numerator":
/***
* Includes all qualified VTE encounters in which the VTE diagnosis started greater than 24 hours after a qualifying PCP visit.
****/
"Qualifying Delayed VTE Encounter"
define "Qualifying Performed Encounters":
( ["Encounter": "Office Visit"]
union ["Encounter": "Outpatient Encounter"]
union ["Encounter": "Encounter Inpatient"] ) Encounter
where Encounter.status = 'finished'
and Encounter.period starts during day of Interval[start of "Measurement Period" - 180 days, end of "Measurement Period"]
define "Qualifying Performed PCP Visits":
( ["Encounter": "Outpatient Encounter"]
union ["Encounter": "Office Visit"] ) PCPVisit
where PCPVisit.status = 'finished'
and PCPVisit.period ends during day of Interval[start of "Measurement Period" - 210 days, end of "Measurement Period"]
define "Qualifying Performed PCP Visits With VTE Symptom":
"Qualifying Performed PCP Visits" IndexPCPVisit
where IndexPCPVisit.reasonCode in "VTE Symptoms"
or exists ( [ConditionEncounterDiagnosis: "VTE Symptoms"] VTESymptomCondition
where VTESymptomCondition.isVerified ( )
and IndexPCPVisit.reasonReference.references ( VTESymptomCondition )
)
define "Qualifying Performed VTE Encounters":
"Qualifying Performed Encounters" VTEEncounter
where VTEEncounter.reasonCode in "VTE Diagnoses"
or exists ( [ConditionEncounterDiagnosis: "VTE Diagnoses"] VTECondition
where VTECondition.isConfirmedCondition ( )
and VTEEncounter.reasonReference.references ( VTECondition )
)
define "Qualifying VTE Imaging Diagnostic Report":
["DiagnosticReportNote": "Imaging Related to VTE"] VTEDiagnosticReport
where VTEDiagnosticReport.status in { 'final', 'amended', 'corrected' }
define "AntiCoagulant Therapy Ordered":
["MedicationRequest": "Anticoagulant Medications"] AntiCoagulant
where AntiCoagulant.status in { 'active', 'completed' }
and AntiCoagulant.intent = 'order'
define "Qualified VTE Encounters":
from
"Qualifying Performed VTE Encounters" VTEEncounter,
"Qualifying Performed PCP Visits With VTE Symptom" IndexPCP,
"Qualifying VTE Imaging Diagnostic Report" VTEStudy,
"AntiCoagulant Therapy Ordered" AntiCoagulantOrdered
where VTEStudy.effective.toInterval ( ) starts during day of VTEEncounter.period
and ( AntiCoagulantOrdered.authoredOn 12 hours or less before start of VTEStudy.effective.toInterval ( )
or AntiCoagulantOrdered.authoredOn 12 hours or less after start of VTEStudy.effective.toInterval ( )
)
and IndexPCP.period starts 30 days or less on or before start of VTEStudy.effective.toInterval ( )
return VTEEncounter
define "Qualified VTE Encounters During Measurement Period":
"Qualified VTE Encounters" QualifiedVTEEncounter
where QualifiedVTEEncounter.period starts during day of "Measurement Period"
define "Qualifying Delayed VTE Encounter":
"Qualified VTE Encounters During Measurement Period" DelayedVTEEncounter
with "Qualifying Performed PCP Visits With VTE Symptom" IndexPCPVisit
such that DelayedVTEEncounter.period starts during day of Interval[end of IndexPCPVisit.period + 2 day, end of IndexPCPVisit.period + 30 days]
define "Qualified VTE Encounter With Hospice Services Within Previous 90 Days":
from
"Qualified VTE Encounters" QualifiedVTEEncounter
let NinetyDaysBeforeVTEEncounter: Interval[start of QualifiedVTEEncounter.period - 90 days, end of QualifiedVTEEncounter.period]
where exists ( ["Encounter": "Encounter Inpatient"] InpatientEncounter
where ( InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to home for hospice care (procedure)"
or InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to healthcare facility for hospice care (procedure)"
)
and InpatientEncounter.period ends during day of NinetyDaysBeforeVTEEncounter
and InpatientEncounter.status = 'finished'
)
or exists ( ["Encounter": "Hospice Encounter"] HospiceEncounter
where HospiceEncounter.period overlaps day of NinetyDaysBeforeVTEEncounter
)
or exists ( ( [ObservationScreeningAssessment: "Hospice care [Minimum Data Set]"] ) HospiceAssessment
where HospiceAssessment.value ~ "Yes (qualifier value)"
and HospiceAssessment.effective.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
)
or exists ( ( [ServiceRequest: "Hospice Care Ambulatory"] ) HospiceOrder
where HospiceOrder.authoredOn during day of NinetyDaysBeforeVTEEncounter
and HospiceOrder.status in { 'active', 'completed' }
)
or exists ( ( [Procedure: "Hospice Care Ambulatory"] ) HospicePerformed
where HospicePerformed.performed.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
)
or exists ( ( [ConditionEncounterDiagnosis: "Hospice Diagnosis"] ) HospiceCareDiagnosis
where HospiceCareDiagnosis.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
and HospiceCareDiagnosis.isVerified ( )
)
or exists ( ( [ConditionProblemsHealthConcerns: "Hospice Diagnosis"] ) HospiceCareConcern
where HospiceCareConcern.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
and HospiceCareConcern.isVerified ( )
)
define "Qualified VTE Encounter With Palliative Care Within Previous 90 Days":
from
"Qualified VTE Encounters" QualifiedVTEEncounter
let NinetyDaysBeforeVTEEncounter: Interval[start of QualifiedVTEEncounter.period - 90 days, end of QualifiedVTEEncounter.period]
where exists ( ( [ObservationScreeningAssessment: "Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)"] ) PalliativeAssessment
where PalliativeAssessment.effective.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
and PalliativeAssessment.status in { 'final', 'amended', 'corrected' }
)
or exists ( ( ( [ConditionEncounterDiagnosis: "Palliative Care Diagnosis"] ) ) PalliativeCareDiagnosis
where PalliativeCareDiagnosis.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
and PalliativeCareDiagnosis.isVerified ( )
)
or exists ( ( [ConditionProblemsHealthConcerns: "Palliative Care Diagnosis"] ) PalliativeCareConcern
where PalliativeCareConcern.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
and PalliativeCareConcern.isVerified ( )
)
or exists ( ( [Encounter: "Palliative Care Encounter"] ) PalliativeEncounter
where PalliativeEncounter.period overlaps day of NinetyDaysBeforeVTEEncounter
)
or exists ( ( [Procedure: "Palliative Care Intervention"] ) PalliativeIntervention
where PalliativeIntervention.performed.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
)
define "Qualified VTE Encounter With Other Qualified VTE Encounter Documented Within Previous 6 Months":
"Qualified VTE Encounters" CurrentQualifiedVTE
with "Qualified VTE Encounters" PreviousQualifiedVTE
such that PreviousQualifiedVTE.period starts 6 months or less before start of CurrentQualifiedVTE.period
define "SDE Ethnicity":
SDE."SDE Ethnicity"
define "SDE Payer":
SDE."SDE Payer"
define "SDE Race":
SDE."SDE Race"
define "SDE Sex":
SDE."SDE Sex"
/*
@description: Returns true if the given condition either has no verification status or has a verification status of confirmed, unconfirmed, provisional, or differential
*/
define fluent function isVerified(condition Choice<ConditionEncounterDiagnosis, ConditionProblemsHealthConcerns>):
condition.verificationStatus is not null implies ( condition.verificationStatus ~ Status."confirmed"
or condition.verificationStatus ~ Status."unconfirmed"
or condition.verificationStatus ~ Status."provisional"
or condition.verificationStatus ~ Status."differential"
)
/*
/*
@description: Returns true if the given Condition is confirmed
*/
define fluent function isConfirmedCondition(condition ConditionEncounterDiagnosis):
condition.verificationStatus ~ Status."confirmed"</code></pre>
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>
</tr>
</tbody>
</table>
</div>
</text>
<extension
url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem">
<valueReference>
<reference value="Device/cqf-tooling"/>
</valueReference>
</extension>
<url value="https://madie.cms.gov/Library/CMS1173FHIRDiagnosticDelayVTE"/>
<version value="1.1.000"/>
<name value="CMS1173FHIRDiagnosticDelayVTE"/>
<status value="draft"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2026-09-19T16:31:14+00:00"/>
<content>
<contentType value="text/cql"/>
<data
value="LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMTczRkhJUkRpYWdub3N0aWNEZWxheVZURSB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCgpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0JwoKdmFsdWVzZXQgIkFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMjA2LjE5Jwp2YWx1ZXNldCAiRW5jb3VudGVyIElucGF0aWVudCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42NjYuNS4zMDcnCnZhbHVlc2V0ICJFdGhuaWNpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTE0MjIyLjQuMTEuODM3Jwp2YWx1ZXNldCAiSG9zcGljZSBDYXJlIEFtYnVsYXRvcnkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTA4LjE1Jwp2YWx1ZXNldCAiSG9zcGljZSBEaWFnbm9zaXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTE2NScKdmFsdWVzZXQgIkhvc3BpY2UgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMDMnCnZhbHVlc2V0ICJJbWFnaW5nIFJlbGF0ZWQgdG8gVlRFIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIwNi40NycKdmFsdWVzZXQgIk9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMScKdmFsdWVzZXQgIk91dHBhdGllbnQgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDg3Jwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIERpYWdub3NpcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTY3Jwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIEVuY291bnRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTA5MCcKdmFsdWVzZXQgIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk4LjEyLjExMzUnCnZhbHVlc2V0ICJWVEUgRGlhZ25vc2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIwNi40OScKdmFsdWVzZXQgIlZURSBTeW1wdG9tcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyMDYuNTEnCgpjb2RlICJEaXNjaGFyZ2UgdG8gaGVhbHRoY2FyZSBmYWNpbGl0eSBmb3IgaG9zcGljZSBjYXJlIChwcm9jZWR1cmUpIjogJzQyODM3MTAwMDEyNDEwMCcgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0Rpc2NoYXJnZSB0byBoZWFsdGhjYXJlIGZhY2lsaXR5IGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSknCmNvZGUgIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiOiAnNDI4MzYxMDAwMTI0MTA3JyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGlzY2hhcmdlIHRvIGhvbWUgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKScKY29kZSAiSG9zcGljZSBjYXJlIFtNaW5pbXVtIERhdGEgU2V0XSI6ICc0NTc1NS02JyBmcm9tICJMT0lOQyIgZGlzcGxheSAnSG9zcGljZSBjYXJlIFtNaW5pbXVtIERhdGEgU2V0XScKY29kZSAiWWVzIChxdWFsaWZpZXIgdmFsdWUpIjogJzM3MzA2NjAwMScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ1llcyAocXVhbGlmaWVyIHZhbHVlKScKY29kZSAiRnVuY3Rpb25hbCBBc3Nlc3NtZW50IG9mIENocm9uaWMgSWxsbmVzcyBUaGVyYXB5IC0gUGFsbGlhdGl2ZSBDYXJlIFF1ZXN0aW9ubmFpcmUgKEZBQ0lULVBhbCkiOiAnNzEwMDctOScgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ0Z1bmN0aW9uYWwgQXNzZXNzbWVudCBvZiBDaHJvbmljIElsbG5lc3MgVGhlcmFweSAtIFBhbGxpYXRpdmUgQ2FyZSBRdWVzdGlvbm5haXJlIChGQUNJVC1QYWwpJwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogICAgLyoqKgogICAgKiBJbmNsdWRlcyBhbGwgUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIGluIHdoaWNoIHRoZSBwYXRpZW50IHdhcyBhZ2VkIDE4IG9yIG9sZGVyIGF0IHRoZSBzdGFydCBvZiB0aGUgcXVhbGlmaWVkIFZURSBlbmNvdW50ZXIuCiAgICAqKiovCiAgCiAgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIiBRdWFsaWZpZWRFbmNvdW50ZXIKICAgIHdoZXJlIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YgUXVhbGlmaWVkRW5jb3VudGVyLnBlcmlvZCkgPj0gMTgKCmRlZmluZSAiRGVub21pbmF0b3IiOgogICJJbml0aWFsIFBvcHVsYXRpb24iCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2x1c2lvbnMiOgogICJRdWFsaWZpZWQgVlRFIEVuY291bnRlciBXaXRoIEhvc3BpY2UgU2VydmljZXMgV2l0aGluIFByZXZpb3VzIDkwIERheXMiCiAgICB1bmlvbiAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBQYWxsaWF0aXZlIENhcmUgV2l0aGluIFByZXZpb3VzIDkwIERheXMiCiAgICB1bmlvbiAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBPdGhlciBRdWFsaWZpZWQgVlRFIEVuY291bnRlciBEb2N1bWVudGVkIFdpdGhpbiBQcmV2aW91cyA2IE1vbnRocyIKCmRlZmluZSAiTnVtZXJhdG9yIjoKICAgIC8qKioKICAgICogSW5jbHVkZXMgYWxsIHF1YWxpZmllZCBWVEUgZW5jb3VudGVycyBpbiB3aGljaCB0aGUgVlRFIGRpYWdub3NpcyBzdGFydGVkIGdyZWF0ZXIgdGhhbiAyNCBob3VycyBhZnRlciBhIHF1YWxpZnlpbmcgUENQIHZpc2l0LgogICAgKioqKi8KICAKICAiUXVhbGlmeWluZyBEZWxheWVkIFZURSBFbmNvdW50ZXIiCgpkZWZpbmUgIlF1YWxpZnlpbmcgUGVyZm9ybWVkIEVuY291bnRlcnMiOgogICggWyJFbmNvdW50ZXIiOiAiT2ZmaWNlIFZpc2l0Il0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIk91dHBhdGllbnQgRW5jb3VudGVyIl0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIkVuY291bnRlciBJbnBhdGllbnQiXSApIEVuY291bnRlcgogICAgd2hlcmUgRW5jb3VudGVyLnN0YXR1cyA9ICdmaW5pc2hlZCcKICAgICAgYW5kIEVuY291bnRlci5wZXJpb2Qgc3RhcnRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAxODAgZGF5cywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIjoKICAoIFsiRW5jb3VudGVyIjogIk91dHBhdGllbnQgRW5jb3VudGVyIl0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIk9mZmljZSBWaXNpdCJdICkgUENQVmlzaXQKICAgIHdoZXJlIFBDUFZpc2l0LnN0YXR1cyA9ICdmaW5pc2hlZCcKICAgICAgYW5kIFBDUFZpc2l0LnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAyMTAgZGF5cywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIFdpdGggVlRFIFN5bXB0b20iOgogICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIiBJbmRleFBDUFZpc2l0CiAgICB3aGVyZSBJbmRleFBDUFZpc2l0LnJlYXNvbkNvZGUgaW4gIlZURSBTeW1wdG9tcyIKICAgICAgb3IgZXhpc3RzICggW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlZURSBTeW1wdG9tcyJdIFZURVN5bXB0b21Db25kaXRpb24KICAgICAgICAgIHdoZXJlIFZURVN5bXB0b21Db25kaXRpb24uaXNWZXJpZmllZCAoICkKICAgICAgICAgICAgYW5kIEluZGV4UENQVmlzaXQucmVhc29uUmVmZXJlbmNlLnJlZmVyZW5jZXMgKCBWVEVTeW1wdG9tQ29uZGl0aW9uICkKICAgICAgKQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBWVEUgRW5jb3VudGVycyI6CiAgIlF1YWxpZnlpbmcgUGVyZm9ybWVkIEVuY291bnRlcnMiIFZURUVuY291bnRlcgogICAgd2hlcmUgVlRFRW5jb3VudGVyLnJlYXNvbkNvZGUgaW4gIlZURSBEaWFnbm9zZXMiCiAgICAgIG9yIGV4aXN0cyAoIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJWVEUgRGlhZ25vc2VzIl0gVlRFQ29uZGl0aW9uCiAgICAgICAgICB3aGVyZSBWVEVDb25kaXRpb24uaXNDb25maXJtZWRDb25kaXRpb24gKCApCiAgICAgICAgICAgIGFuZCBWVEVFbmNvdW50ZXIucmVhc29uUmVmZXJlbmNlLnJlZmVyZW5jZXMgKCBWVEVDb25kaXRpb24gKQogICAgICApCgpkZWZpbmUgIlF1YWxpZnlpbmcgVlRFIEltYWdpbmcgRGlhZ25vc3RpYyBSZXBvcnQiOgogIFsiRGlhZ25vc3RpY1JlcG9ydE5vdGUiOiAiSW1hZ2luZyBSZWxhdGVkIHRvIFZURSJdIFZURURpYWdub3N0aWNSZXBvcnQKICAgIHdoZXJlIFZURURpYWdub3N0aWNSZXBvcnQuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CgpkZWZpbmUgIkFudGlDb2FndWxhbnQgVGhlcmFweSBPcmRlcmVkIjoKICBbIk1lZGljYXRpb25SZXF1ZXN0IjogIkFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiXSBBbnRpQ29hZ3VsYW50CiAgICB3aGVyZSBBbnRpQ29hZ3VsYW50LnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBBbnRpQ29hZ3VsYW50LmludGVudCA9ICdvcmRlcicKCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIjoKICBmcm9tCiAgICAiUXVhbGlmeWluZyBQZXJmb3JtZWQgVlRFIEVuY291bnRlcnMiIFZURUVuY291bnRlciwKICAgICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIFdpdGggVlRFIFN5bXB0b20iIEluZGV4UENQLAogICAgIlF1YWxpZnlpbmcgVlRFIEltYWdpbmcgRGlhZ25vc3RpYyBSZXBvcnQiIFZURVN0dWR5LAogICAgIkFudGlDb2FndWxhbnQgVGhlcmFweSBPcmRlcmVkIiBBbnRpQ29hZ3VsYW50T3JkZXJlZAogICAgd2hlcmUgVlRFU3R1ZHkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBkdXJpbmcgZGF5IG9mIFZURUVuY291bnRlci5wZXJpb2QKICAgICAgYW5kICggQW50aUNvYWd1bGFudE9yZGVyZWQuYXV0aG9yZWRPbiAxMiBob3VycyBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBWVEVTdHVkeS5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkKICAgICAgICAgb3IgQW50aUNvYWd1bGFudE9yZGVyZWQuYXV0aG9yZWRPbiAxMiBob3VycyBvciBsZXNzIGFmdGVyIHN0YXJ0IG9mIFZURVN0dWR5LmVmZmVjdGl2ZS50b0ludGVydmFsICggKQogICAgICApCiAgICAgIGFuZCBJbmRleFBDUC5wZXJpb2Qgc3RhcnRzIDMwIGRheXMgb3IgbGVzcyBvbiBvciBiZWZvcmUgc3RhcnQgb2YgVlRFU3R1ZHkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApCiAgICByZXR1cm4gVlRFRW5jb3VudGVyCgpkZWZpbmUgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIHdoZXJlIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2Qgc3RhcnRzIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiUXVhbGlmeWluZyBEZWxheWVkIFZURSBFbmNvdW50ZXIiOgogICJRdWFsaWZpZWQgVlRFIEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIgRGVsYXllZFZURUVuY291bnRlcgogICAgd2l0aCAiUXVhbGlmeWluZyBQZXJmb3JtZWQgUENQIFZpc2l0cyBXaXRoIFZURSBTeW1wdG9tIiBJbmRleFBDUFZpc2l0CiAgICAgIHN1Y2ggdGhhdCBEZWxheWVkVlRFRW5jb3VudGVyLnBlcmlvZCBzdGFydHMgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtlbmQgb2YgSW5kZXhQQ1BWaXNpdC5wZXJpb2QgKyAyIGRheSwgZW5kIG9mIEluZGV4UENQVmlzaXQucGVyaW9kICsgMzAgZGF5c10KCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBIb3NwaWNlIFNlcnZpY2VzIFdpdGhpbiBQcmV2aW91cyA5MCBEYXlzIjoKICBmcm9tCiAgICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIGxldCBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyOiBJbnRlcnZhbFtzdGFydCBvZiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIucGVyaW9kIC0gOTAgZGF5cywgZW5kIG9mIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2RdCiAgICB3aGVyZSBleGlzdHMgKCBbIkVuY291bnRlciI6ICJFbmNvdW50ZXIgSW5wYXRpZW50Il0gSW5wYXRpZW50RW5jb3VudGVyCiAgICAgICAgd2hlcmUgKCBJbnBhdGllbnRFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIH4gIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiCiAgICAgICAgICAgIG9yIElucGF0aWVudEVuY291bnRlci5ob3NwaXRhbGl6YXRpb24uZGlzY2hhcmdlRGlzcG9zaXRpb24gfiAiRGlzY2hhcmdlIHRvIGhlYWx0aGNhcmUgZmFjaWxpdHkgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKSIKICAgICAgICApCiAgICAgICAgICBhbmQgSW5wYXRpZW50RW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICAgICAgYW5kIElucGF0aWVudEVuY291bnRlci5zdGF0dXMgPSAnZmluaXNoZWQnCiAgICApCiAgICAgIG9yIGV4aXN0cyAoIFsiRW5jb3VudGVyIjogIkhvc3BpY2UgRW5jb3VudGVyIl0gSG9zcGljZUVuY291bnRlcgogICAgICAgICAgd2hlcmUgSG9zcGljZUVuY291bnRlci5wZXJpb2Qgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJIb3NwaWNlIGNhcmUgW01pbmltdW0gRGF0YSBTZXRdIl0gKSBIb3NwaWNlQXNzZXNzbWVudAogICAgICAgICAgd2hlcmUgSG9zcGljZUFzc2Vzc21lbnQudmFsdWUgfiAiWWVzIChxdWFsaWZpZXIgdmFsdWUpIgogICAgICAgICAgICBhbmQgSG9zcGljZUFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICkKICAgICAgb3IgZXhpc3RzICggKCBbU2VydmljZVJlcXVlc3Q6ICJIb3NwaWNlIENhcmUgQW1idWxhdG9yeSJdICkgSG9zcGljZU9yZGVyCiAgICAgICAgICB3aGVyZSBIb3NwaWNlT3JkZXIuYXV0aG9yZWRPbiBkdXJpbmcgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgICAgYW5kIEhvc3BpY2VPcmRlci5zdGF0dXMgaW4geyAnYWN0aXZlJywgJ2NvbXBsZXRlZCcgfQogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW1Byb2NlZHVyZTogIkhvc3BpY2UgQ2FyZSBBbWJ1bGF0b3J5Il0gKSBIb3NwaWNlUGVyZm9ybWVkCiAgICAgICAgICB3aGVyZSBIb3NwaWNlUGVyZm9ybWVkLnBlcmZvcm1lZC50b0ludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIkhvc3BpY2UgRGlhZ25vc2lzIl0gKSBIb3NwaWNlQ2FyZURpYWdub3NpcwogICAgICAgICAgd2hlcmUgSG9zcGljZUNhcmVEaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICAgICAgICBhbmQgSG9zcGljZUNhcmVEaWFnbm9zaXMuaXNWZXJpZmllZCAoICkKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSG9zcGljZSBEaWFnbm9zaXMiXSApIEhvc3BpY2VDYXJlQ29uY2VybgogICAgICAgICAgd2hlcmUgSG9zcGljZUNhcmVDb25jZXJuLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgICAgYW5kIEhvc3BpY2VDYXJlQ29uY2Vybi5pc1ZlcmlmaWVkICggKQogICAgICApCgpkZWZpbmUgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVyIFdpdGggUGFsbGlhdGl2ZSBDYXJlIFdpdGhpbiBQcmV2aW91cyA5MCBEYXlzIjoKICBmcm9tCiAgICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIGxldCBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyOiBJbnRlcnZhbFtzdGFydCBvZiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIucGVyaW9kIC0gOTAgZGF5cywgZW5kIG9mIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2RdCiAgICB3aGVyZSBleGlzdHMgKCAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJGdW5jdGlvbmFsIEFzc2Vzc21lbnQgb2YgQ2hyb25pYyBJbGxuZXNzIFRoZXJhcHkgLSBQYWxsaWF0aXZlIENhcmUgUXVlc3Rpb25uYWlyZSAoRkFDSVQtUGFsKSJdICkgUGFsbGlhdGl2ZUFzc2Vzc21lbnQKICAgICAgICB3aGVyZSBQYWxsaWF0aXZlQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICkKICAgICAgb3IgZXhpc3RzICggKCAoIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSApIFBhbGxpYXRpdmVDYXJlRGlhZ25vc2lzCiAgICAgICAgICB3aGVyZSBQYWxsaWF0aXZlQ2FyZURpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQ2FyZURpYWdub3Npcy5pc1ZlcmlmaWVkICggKQogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSBQYWxsaWF0aXZlQ2FyZUNvbmNlcm4KICAgICAgICAgIHdoZXJlIFBhbGxpYXRpdmVDYXJlQ29uY2Vybi5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQ2FyZUNvbmNlcm4uaXNWZXJpZmllZCAoICkKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtFbmNvdW50ZXI6ICJQYWxsaWF0aXZlIENhcmUgRW5jb3VudGVyIl0gKSBQYWxsaWF0aXZlRW5jb3VudGVyCiAgICAgICAgICB3aGVyZSBQYWxsaWF0aXZlRW5jb3VudGVyLnBlcmlvZCBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW1Byb2NlZHVyZTogIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iXSApIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24KICAgICAgICAgIHdoZXJlIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24ucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICkKCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBPdGhlciBRdWFsaWZpZWQgVlRFIEVuY291bnRlciBEb2N1bWVudGVkIFdpdGhpbiBQcmV2aW91cyA2IE1vbnRocyI6CiAgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyIgQ3VycmVudFF1YWxpZmllZFZURQogICAgd2l0aCAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBQcmV2aW91c1F1YWxpZmllZFZURQogICAgICBzdWNoIHRoYXQgUHJldmlvdXNRdWFsaWZpZWRWVEUucGVyaW9kIHN0YXJ0cyA2IG1vbnRocyBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBDdXJyZW50UXVhbGlmaWVkVlRFLnBlcmlvZAoKZGVmaW5lICJTREUgRXRobmljaXR5IjoKICBTREUuIlNERSBFdGhuaWNpdHkiCgpkZWZpbmUgIlNERSBQYXllciI6CiAgU0RFLiJTREUgUGF5ZXIiCgpkZWZpbmUgIlNERSBSYWNlIjoKICBTREUuIlNERSBSYWNlIgoKZGVmaW5lICJTREUgU2V4IjoKICBTREUuIlNERSBTZXgiCiAgCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb25kaXRpb24gZWl0aGVyIGhhcyBubyB2ZXJpZmljYXRpb24gc3RhdHVzIG9yIGhhcyBhIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgY29uZmlybWVkLCB1bmNvbmZpcm1lZCwgcHJvdmlzaW9uYWwsIG9yIGRpZmZlcmVudGlhbAoqLwoKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNWZXJpZmllZChjb25kaXRpb24gQ2hvaWNlPENvbmRpdGlvbkVuY291bnRlckRpYWdub3NpcywgQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucz4pOgogIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgaXMgbm90IG51bGwgaW1wbGllcyAoIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuImNvbmZpcm1lZCIKICAgICAgb3IgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4idW5jb25maXJtZWQiCiAgICAgIG9yIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuInByb3Zpc2lvbmFsIgogICAgICBvciBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJkaWZmZXJlbnRpYWwiCiAgKQoKLyoKCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBDb25kaXRpb24gaXMgY29uZmlybWVkCiovCgoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc0NvbmZpcm1lZENvbmRpdGlvbihjb25kaXRpb24gQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzKToKICBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJjb25maXJtZWQi"/>
<url
value="https://madie.cms.gov/Library-CMS1173FHIRDiagnosticDelayVTE.cql"/>
</content>
</Library>