{
  "resourceType" : "Library",
  "id" : "CMS1173FHIRDiagnosticDelayVTE",
  "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\">1.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 CMS1173FHIRDiagnosticDelayVTE version '1.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;SNOMEDCT&quot;: 'http://snomed.info/sct'\n\nvalueset &quot;Anticoagulant Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.19'\nvalueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'\nvalueset &quot;Ethnicity&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837'\nvalueset &quot;Hospice Care Ambulatory&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.15'\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;Imaging Related to VTE&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.47'\nvalueset &quot;Office Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'\nvalueset &quot;Outpatient Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1087'\nvalueset &quot;Palliative Care Diagnosis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1167'\nvalueset &quot;Palliative Care Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1090'\nvalueset &quot;Palliative Care Intervention&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1135'\nvalueset &quot;VTE Diagnoses&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.49'\nvalueset &quot;VTE Symptoms&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.51'\n\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;Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)&quot;: '71007-9' from &quot;LOINC&quot; display 'Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)'\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    /***\n    * Includes all Qualified VTE Encounters in which the patient was aged 18 or older at the start of the qualified VTE encounter.\n    ***/\n  \n  &quot;Qualified VTE Encounters During Measurement Period&quot; QualifiedEncounter\n    where AgeInYearsAt(date from start of QualifiedEncounter.period) &gt;= 18\n\ndefine &quot;Denominator&quot;:\n  &quot;Initial Population&quot;\n\ndefine &quot;Denominator Exclusions&quot;:\n  &quot;Qualified VTE Encounter With Hospice Services Within Previous 90 Days&quot;\n    union &quot;Qualified VTE Encounter With Palliative Care Within Previous 90 Days&quot;\n    union &quot;Qualified VTE Encounter With Other Qualified VTE Encounter Documented Within Previous 6 Months&quot;\n\ndefine &quot;Numerator&quot;:\n    /***\n    * Includes all qualified VTE encounters in which the VTE diagnosis started greater than 24 hours after a qualifying PCP visit.\n    ****/\n  \n  &quot;Qualifying Delayed VTE Encounter&quot;\n\ndefine &quot;Qualifying Performed Encounters&quot;:\n  ( [&quot;Encounter&quot;: &quot;Office Visit&quot;]\n    union [&quot;Encounter&quot;: &quot;Outpatient Encounter&quot;]\n    union [&quot;Encounter&quot;: &quot;Encounter Inpatient&quot;] ) Encounter\n    where Encounter.status = 'finished'\n      and Encounter.period starts during day of Interval[start of &quot;Measurement Period&quot; - 180 days, end of &quot;Measurement Period&quot;]\n\ndefine &quot;Qualifying Performed PCP Visits&quot;:\n  ( [&quot;Encounter&quot;: &quot;Outpatient Encounter&quot;]\n    union [&quot;Encounter&quot;: &quot;Office Visit&quot;] ) PCPVisit\n    where PCPVisit.status = 'finished'\n      and PCPVisit.period ends during day of Interval[start of &quot;Measurement Period&quot; - 210 days, end of &quot;Measurement Period&quot;]\n\ndefine &quot;Qualifying Performed PCP Visits With VTE Symptom&quot;:\n  &quot;Qualifying Performed PCP Visits&quot; IndexPCPVisit\n    where IndexPCPVisit.reasonCode in &quot;VTE Symptoms&quot;\n      or exists ( [ConditionEncounterDiagnosis: &quot;VTE Symptoms&quot;] VTESymptomCondition\n          where VTESymptomCondition.isVerified ( )\n            and IndexPCPVisit.reasonReference.references ( VTESymptomCondition )\n      )\n\ndefine &quot;Qualifying Performed VTE Encounters&quot;:\n  &quot;Qualifying Performed Encounters&quot; VTEEncounter\n    where VTEEncounter.reasonCode in &quot;VTE Diagnoses&quot;\n      or exists ( [ConditionEncounterDiagnosis: &quot;VTE Diagnoses&quot;] VTECondition\n          where VTECondition.isConfirmedCondition ( )\n            and VTEEncounter.reasonReference.references ( VTECondition )\n      )\n\ndefine &quot;Qualifying VTE Imaging Diagnostic Report&quot;:\n  [&quot;DiagnosticReportNote&quot;: &quot;Imaging Related to VTE&quot;] VTEDiagnosticReport\n    where VTEDiagnosticReport.status in { 'final', 'amended', 'corrected' }\n\ndefine &quot;AntiCoagulant Therapy Ordered&quot;:\n  [&quot;MedicationRequest&quot;: &quot;Anticoagulant Medications&quot;] AntiCoagulant\n    where AntiCoagulant.status in { 'active', 'completed' }\n      and AntiCoagulant.intent = 'order'\n\ndefine &quot;Qualified VTE Encounters&quot;:\n  from\n    &quot;Qualifying Performed VTE Encounters&quot; VTEEncounter,\n    &quot;Qualifying Performed PCP Visits With VTE Symptom&quot; IndexPCP,\n    &quot;Qualifying VTE Imaging Diagnostic Report&quot; VTEStudy,\n    &quot;AntiCoagulant Therapy Ordered&quot; AntiCoagulantOrdered\n    where VTEStudy.effective.toInterval ( ) starts during day of VTEEncounter.period\n      and ( AntiCoagulantOrdered.authoredOn 12 hours or less before start of VTEStudy.effective.toInterval ( )\n         or AntiCoagulantOrdered.authoredOn 12 hours or less after start of VTEStudy.effective.toInterval ( )\n      )\n      and IndexPCP.period starts 30 days or less on or before start of VTEStudy.effective.toInterval ( )\n    return VTEEncounter\n\ndefine &quot;Qualified VTE Encounters During Measurement Period&quot;:\n  &quot;Qualified VTE Encounters&quot; QualifiedVTEEncounter\n    where QualifiedVTEEncounter.period starts during day of &quot;Measurement Period&quot;\n\ndefine &quot;Qualifying Delayed VTE Encounter&quot;:\n  &quot;Qualified VTE Encounters During Measurement Period&quot; DelayedVTEEncounter\n    with &quot;Qualifying Performed PCP Visits With VTE Symptom&quot; IndexPCPVisit\n      such that DelayedVTEEncounter.period starts during day of Interval[end of IndexPCPVisit.period + 2 day, end of IndexPCPVisit.period + 30 days]\n\ndefine &quot;Qualified VTE Encounter With Hospice Services Within Previous 90 Days&quot;:\n  from\n    &quot;Qualified VTE Encounters&quot; QualifiedVTEEncounter\n    let NinetyDaysBeforeVTEEncounter: Interval[start of QualifiedVTEEncounter.period - 90 days, end of QualifiedVTEEncounter.period]\n    where exists ( [&quot;Encounter&quot;: &quot;Encounter Inpatient&quot;] 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 ends during day of NinetyDaysBeforeVTEEncounter\n          and InpatientEncounter.status = 'finished'\n    )\n      or exists ( [&quot;Encounter&quot;: &quot;Hospice Encounter&quot;] HospiceEncounter\n          where HospiceEncounter.period overlaps day of NinetyDaysBeforeVTEEncounter\n      )\n      or exists ( ( [ObservationScreeningAssessment: &quot;Hospice care [Minimum Data Set]&quot;] ) HospiceAssessment\n          where HospiceAssessment.value ~ &quot;Yes (qualifier value)&quot;\n            and HospiceAssessment.effective.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n      )\n      or exists ( ( [ServiceRequest: &quot;Hospice Care Ambulatory&quot;] ) HospiceOrder\n          where HospiceOrder.authoredOn during day of NinetyDaysBeforeVTEEncounter\n            and HospiceOrder.status in { 'active', 'completed' }\n      )\n      or exists ( ( [Procedure: &quot;Hospice Care Ambulatory&quot;] ) HospicePerformed\n          where HospicePerformed.performed.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n      )\n      or exists ( ( [ConditionEncounterDiagnosis: &quot;Hospice Diagnosis&quot;] ) HospiceCareDiagnosis\n          where HospiceCareDiagnosis.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n            and HospiceCareDiagnosis.isVerified ( )\n      )\n      or exists ( ( [ConditionProblemsHealthConcerns: &quot;Hospice Diagnosis&quot;] ) HospiceCareConcern\n          where HospiceCareConcern.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n            and HospiceCareConcern.isVerified ( )\n      )\n\ndefine &quot;Qualified VTE Encounter With Palliative Care Within Previous 90 Days&quot;:\n  from\n    &quot;Qualified VTE Encounters&quot; QualifiedVTEEncounter\n    let NinetyDaysBeforeVTEEncounter: Interval[start of QualifiedVTEEncounter.period - 90 days, end of QualifiedVTEEncounter.period]\n    where exists ( ( [ObservationScreeningAssessment: &quot;Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)&quot;] ) PalliativeAssessment\n        where PalliativeAssessment.effective.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n          and PalliativeAssessment.status in { 'final', 'amended', 'corrected' }\n    )\n      or exists ( ( ( [ConditionEncounterDiagnosis: &quot;Palliative Care Diagnosis&quot;] ) ) PalliativeCareDiagnosis\n          where PalliativeCareDiagnosis.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n            and PalliativeCareDiagnosis.isVerified ( )\n      )\n      or exists ( ( [ConditionProblemsHealthConcerns: &quot;Palliative Care Diagnosis&quot;] ) PalliativeCareConcern\n          where PalliativeCareConcern.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n            and PalliativeCareConcern.isVerified ( )\n      )\n      or exists ( ( [Encounter: &quot;Palliative Care Encounter&quot;] ) PalliativeEncounter\n          where PalliativeEncounter.period overlaps day of NinetyDaysBeforeVTEEncounter\n      )\n      or exists ( ( [Procedure: &quot;Palliative Care Intervention&quot;] ) PalliativeIntervention\n          where PalliativeIntervention.performed.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n      )\n\ndefine &quot;Qualified VTE Encounter With Other Qualified VTE Encounter Documented Within Previous 6 Months&quot;:\n  &quot;Qualified VTE Encounters&quot; CurrentQualifiedVTE\n    with &quot;Qualified VTE Encounters&quot; PreviousQualifiedVTE\n      such that PreviousQualifiedVTE.period starts 6 months or less before start of CurrentQualifiedVTE.period\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  \n/*\n@description: Returns true if the given condition either has no verification status or has a verification status of confirmed, unconfirmed, provisional, or differential\n*/\n\n\ndefine fluent function isVerified(condition Choice&lt;ConditionEncounterDiagnosis, ConditionProblemsHealthConcerns&gt;):\n  condition.verificationStatus is not null implies ( condition.verificationStatus ~ Status.&quot;confirmed&quot;\n      or condition.verificationStatus ~ Status.&quot;unconfirmed&quot;\n      or condition.verificationStatus ~ Status.&quot;provisional&quot;\n      or condition.verificationStatus ~ Status.&quot;differential&quot;\n  )\n\n/*\n\n/*\n@description: Returns true if the given Condition is confirmed\n*/\n\n\ndefine fluent function isConfirmedCondition(condition ConditionEncounterDiagnosis):\n  condition.verificationStatus ~ Status.&quot;confirmed&quot;</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/CMS1173FHIRDiagnosticDelayVTE",
  "version" : "1.1.000",
  "name" : "CMS1173FHIRDiagnosticDelayVTE",
  "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" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMTczRkhJUkRpYWdub3N0aWNEZWxheVZURSB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCgpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0JwoKdmFsdWVzZXQgIkFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMjA2LjE5Jwp2YWx1ZXNldCAiRW5jb3VudGVyIElucGF0aWVudCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42NjYuNS4zMDcnCnZhbHVlc2V0ICJFdGhuaWNpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTE0MjIyLjQuMTEuODM3Jwp2YWx1ZXNldCAiSG9zcGljZSBDYXJlIEFtYnVsYXRvcnkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTA4LjE1Jwp2YWx1ZXNldCAiSG9zcGljZSBEaWFnbm9zaXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTE2NScKdmFsdWVzZXQgIkhvc3BpY2UgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMDMnCnZhbHVlc2V0ICJJbWFnaW5nIFJlbGF0ZWQgdG8gVlRFIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIwNi40NycKdmFsdWVzZXQgIk9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMScKdmFsdWVzZXQgIk91dHBhdGllbnQgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDg3Jwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIERpYWdub3NpcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTY3Jwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIEVuY291bnRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTA5MCcKdmFsdWVzZXQgIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk4LjEyLjExMzUnCnZhbHVlc2V0ICJWVEUgRGlhZ25vc2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIwNi40OScKdmFsdWVzZXQgIlZURSBTeW1wdG9tcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyMDYuNTEnCgpjb2RlICJEaXNjaGFyZ2UgdG8gaGVhbHRoY2FyZSBmYWNpbGl0eSBmb3IgaG9zcGljZSBjYXJlIChwcm9jZWR1cmUpIjogJzQyODM3MTAwMDEyNDEwMCcgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0Rpc2NoYXJnZSB0byBoZWFsdGhjYXJlIGZhY2lsaXR5IGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSknCmNvZGUgIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiOiAnNDI4MzYxMDAwMTI0MTA3JyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGlzY2hhcmdlIHRvIGhvbWUgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKScKY29kZSAiSG9zcGljZSBjYXJlIFtNaW5pbXVtIERhdGEgU2V0XSI6ICc0NTc1NS02JyBmcm9tICJMT0lOQyIgZGlzcGxheSAnSG9zcGljZSBjYXJlIFtNaW5pbXVtIERhdGEgU2V0XScKY29kZSAiWWVzIChxdWFsaWZpZXIgdmFsdWUpIjogJzM3MzA2NjAwMScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ1llcyAocXVhbGlmaWVyIHZhbHVlKScKY29kZSAiRnVuY3Rpb25hbCBBc3Nlc3NtZW50IG9mIENocm9uaWMgSWxsbmVzcyBUaGVyYXB5IC0gUGFsbGlhdGl2ZSBDYXJlIFF1ZXN0aW9ubmFpcmUgKEZBQ0lULVBhbCkiOiAnNzEwMDctOScgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ0Z1bmN0aW9uYWwgQXNzZXNzbWVudCBvZiBDaHJvbmljIElsbG5lc3MgVGhlcmFweSAtIFBhbGxpYXRpdmUgQ2FyZSBRdWVzdGlvbm5haXJlIChGQUNJVC1QYWwpJwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogICAgLyoqKgogICAgKiBJbmNsdWRlcyBhbGwgUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIGluIHdoaWNoIHRoZSBwYXRpZW50IHdhcyBhZ2VkIDE4IG9yIG9sZGVyIGF0IHRoZSBzdGFydCBvZiB0aGUgcXVhbGlmaWVkIFZURSBlbmNvdW50ZXIuCiAgICAqKiovCiAgCiAgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIiBRdWFsaWZpZWRFbmNvdW50ZXIKICAgIHdoZXJlIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YgUXVhbGlmaWVkRW5jb3VudGVyLnBlcmlvZCkgPj0gMTgKCmRlZmluZSAiRGVub21pbmF0b3IiOgogICJJbml0aWFsIFBvcHVsYXRpb24iCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2x1c2lvbnMiOgogICJRdWFsaWZpZWQgVlRFIEVuY291bnRlciBXaXRoIEhvc3BpY2UgU2VydmljZXMgV2l0aGluIFByZXZpb3VzIDkwIERheXMiCiAgICB1bmlvbiAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBQYWxsaWF0aXZlIENhcmUgV2l0aGluIFByZXZpb3VzIDkwIERheXMiCiAgICB1bmlvbiAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBPdGhlciBRdWFsaWZpZWQgVlRFIEVuY291bnRlciBEb2N1bWVudGVkIFdpdGhpbiBQcmV2aW91cyA2IE1vbnRocyIKCmRlZmluZSAiTnVtZXJhdG9yIjoKICAgIC8qKioKICAgICogSW5jbHVkZXMgYWxsIHF1YWxpZmllZCBWVEUgZW5jb3VudGVycyBpbiB3aGljaCB0aGUgVlRFIGRpYWdub3NpcyBzdGFydGVkIGdyZWF0ZXIgdGhhbiAyNCBob3VycyBhZnRlciBhIHF1YWxpZnlpbmcgUENQIHZpc2l0LgogICAgKioqKi8KICAKICAiUXVhbGlmeWluZyBEZWxheWVkIFZURSBFbmNvdW50ZXIiCgpkZWZpbmUgIlF1YWxpZnlpbmcgUGVyZm9ybWVkIEVuY291bnRlcnMiOgogICggWyJFbmNvdW50ZXIiOiAiT2ZmaWNlIFZpc2l0Il0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIk91dHBhdGllbnQgRW5jb3VudGVyIl0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIkVuY291bnRlciBJbnBhdGllbnQiXSApIEVuY291bnRlcgogICAgd2hlcmUgRW5jb3VudGVyLnN0YXR1cyA9ICdmaW5pc2hlZCcKICAgICAgYW5kIEVuY291bnRlci5wZXJpb2Qgc3RhcnRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAxODAgZGF5cywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIjoKICAoIFsiRW5jb3VudGVyIjogIk91dHBhdGllbnQgRW5jb3VudGVyIl0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIk9mZmljZSBWaXNpdCJdICkgUENQVmlzaXQKICAgIHdoZXJlIFBDUFZpc2l0LnN0YXR1cyA9ICdmaW5pc2hlZCcKICAgICAgYW5kIFBDUFZpc2l0LnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAyMTAgZGF5cywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIFdpdGggVlRFIFN5bXB0b20iOgogICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIiBJbmRleFBDUFZpc2l0CiAgICB3aGVyZSBJbmRleFBDUFZpc2l0LnJlYXNvbkNvZGUgaW4gIlZURSBTeW1wdG9tcyIKICAgICAgb3IgZXhpc3RzICggW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlZURSBTeW1wdG9tcyJdIFZURVN5bXB0b21Db25kaXRpb24KICAgICAgICAgIHdoZXJlIFZURVN5bXB0b21Db25kaXRpb24uaXNWZXJpZmllZCAoICkKICAgICAgICAgICAgYW5kIEluZGV4UENQVmlzaXQucmVhc29uUmVmZXJlbmNlLnJlZmVyZW5jZXMgKCBWVEVTeW1wdG9tQ29uZGl0aW9uICkKICAgICAgKQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBWVEUgRW5jb3VudGVycyI6CiAgIlF1YWxpZnlpbmcgUGVyZm9ybWVkIEVuY291bnRlcnMiIFZURUVuY291bnRlcgogICAgd2hlcmUgVlRFRW5jb3VudGVyLnJlYXNvbkNvZGUgaW4gIlZURSBEaWFnbm9zZXMiCiAgICAgIG9yIGV4aXN0cyAoIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJWVEUgRGlhZ25vc2VzIl0gVlRFQ29uZGl0aW9uCiAgICAgICAgICB3aGVyZSBWVEVDb25kaXRpb24uaXNDb25maXJtZWRDb25kaXRpb24gKCApCiAgICAgICAgICAgIGFuZCBWVEVFbmNvdW50ZXIucmVhc29uUmVmZXJlbmNlLnJlZmVyZW5jZXMgKCBWVEVDb25kaXRpb24gKQogICAgICApCgpkZWZpbmUgIlF1YWxpZnlpbmcgVlRFIEltYWdpbmcgRGlhZ25vc3RpYyBSZXBvcnQiOgogIFsiRGlhZ25vc3RpY1JlcG9ydE5vdGUiOiAiSW1hZ2luZyBSZWxhdGVkIHRvIFZURSJdIFZURURpYWdub3N0aWNSZXBvcnQKICAgIHdoZXJlIFZURURpYWdub3N0aWNSZXBvcnQuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CgpkZWZpbmUgIkFudGlDb2FndWxhbnQgVGhlcmFweSBPcmRlcmVkIjoKICBbIk1lZGljYXRpb25SZXF1ZXN0IjogIkFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiXSBBbnRpQ29hZ3VsYW50CiAgICB3aGVyZSBBbnRpQ29hZ3VsYW50LnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBBbnRpQ29hZ3VsYW50LmludGVudCA9ICdvcmRlcicKCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIjoKICBmcm9tCiAgICAiUXVhbGlmeWluZyBQZXJmb3JtZWQgVlRFIEVuY291bnRlcnMiIFZURUVuY291bnRlciwKICAgICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIFdpdGggVlRFIFN5bXB0b20iIEluZGV4UENQLAogICAgIlF1YWxpZnlpbmcgVlRFIEltYWdpbmcgRGlhZ25vc3RpYyBSZXBvcnQiIFZURVN0dWR5LAogICAgIkFudGlDb2FndWxhbnQgVGhlcmFweSBPcmRlcmVkIiBBbnRpQ29hZ3VsYW50T3JkZXJlZAogICAgd2hlcmUgVlRFU3R1ZHkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBkdXJpbmcgZGF5IG9mIFZURUVuY291bnRlci5wZXJpb2QKICAgICAgYW5kICggQW50aUNvYWd1bGFudE9yZGVyZWQuYXV0aG9yZWRPbiAxMiBob3VycyBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBWVEVTdHVkeS5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkKICAgICAgICAgb3IgQW50aUNvYWd1bGFudE9yZGVyZWQuYXV0aG9yZWRPbiAxMiBob3VycyBvciBsZXNzIGFmdGVyIHN0YXJ0IG9mIFZURVN0dWR5LmVmZmVjdGl2ZS50b0ludGVydmFsICggKQogICAgICApCiAgICAgIGFuZCBJbmRleFBDUC5wZXJpb2Qgc3RhcnRzIDMwIGRheXMgb3IgbGVzcyBvbiBvciBiZWZvcmUgc3RhcnQgb2YgVlRFU3R1ZHkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApCiAgICByZXR1cm4gVlRFRW5jb3VudGVyCgpkZWZpbmUgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIHdoZXJlIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2Qgc3RhcnRzIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiUXVhbGlmeWluZyBEZWxheWVkIFZURSBFbmNvdW50ZXIiOgogICJRdWFsaWZpZWQgVlRFIEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIgRGVsYXllZFZURUVuY291bnRlcgogICAgd2l0aCAiUXVhbGlmeWluZyBQZXJmb3JtZWQgUENQIFZpc2l0cyBXaXRoIFZURSBTeW1wdG9tIiBJbmRleFBDUFZpc2l0CiAgICAgIHN1Y2ggdGhhdCBEZWxheWVkVlRFRW5jb3VudGVyLnBlcmlvZCBzdGFydHMgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtlbmQgb2YgSW5kZXhQQ1BWaXNpdC5wZXJpb2QgKyAyIGRheSwgZW5kIG9mIEluZGV4UENQVmlzaXQucGVyaW9kICsgMzAgZGF5c10KCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBIb3NwaWNlIFNlcnZpY2VzIFdpdGhpbiBQcmV2aW91cyA5MCBEYXlzIjoKICBmcm9tCiAgICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIGxldCBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyOiBJbnRlcnZhbFtzdGFydCBvZiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIucGVyaW9kIC0gOTAgZGF5cywgZW5kIG9mIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2RdCiAgICB3aGVyZSBleGlzdHMgKCBbIkVuY291bnRlciI6ICJFbmNvdW50ZXIgSW5wYXRpZW50Il0gSW5wYXRpZW50RW5jb3VudGVyCiAgICAgICAgd2hlcmUgKCBJbnBhdGllbnRFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIH4gIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiCiAgICAgICAgICAgIG9yIElucGF0aWVudEVuY291bnRlci5ob3NwaXRhbGl6YXRpb24uZGlzY2hhcmdlRGlzcG9zaXRpb24gfiAiRGlzY2hhcmdlIHRvIGhlYWx0aGNhcmUgZmFjaWxpdHkgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKSIKICAgICAgICApCiAgICAgICAgICBhbmQgSW5wYXRpZW50RW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICAgICAgYW5kIElucGF0aWVudEVuY291bnRlci5zdGF0dXMgPSAnZmluaXNoZWQnCiAgICApCiAgICAgIG9yIGV4aXN0cyAoIFsiRW5jb3VudGVyIjogIkhvc3BpY2UgRW5jb3VudGVyIl0gSG9zcGljZUVuY291bnRlcgogICAgICAgICAgd2hlcmUgSG9zcGljZUVuY291bnRlci5wZXJpb2Qgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJIb3NwaWNlIGNhcmUgW01pbmltdW0gRGF0YSBTZXRdIl0gKSBIb3NwaWNlQXNzZXNzbWVudAogICAgICAgICAgd2hlcmUgSG9zcGljZUFzc2Vzc21lbnQudmFsdWUgfiAiWWVzIChxdWFsaWZpZXIgdmFsdWUpIgogICAgICAgICAgICBhbmQgSG9zcGljZUFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICkKICAgICAgb3IgZXhpc3RzICggKCBbU2VydmljZVJlcXVlc3Q6ICJIb3NwaWNlIENhcmUgQW1idWxhdG9yeSJdICkgSG9zcGljZU9yZGVyCiAgICAgICAgICB3aGVyZSBIb3NwaWNlT3JkZXIuYXV0aG9yZWRPbiBkdXJpbmcgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgICAgYW5kIEhvc3BpY2VPcmRlci5zdGF0dXMgaW4geyAnYWN0aXZlJywgJ2NvbXBsZXRlZCcgfQogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW1Byb2NlZHVyZTogIkhvc3BpY2UgQ2FyZSBBbWJ1bGF0b3J5Il0gKSBIb3NwaWNlUGVyZm9ybWVkCiAgICAgICAgICB3aGVyZSBIb3NwaWNlUGVyZm9ybWVkLnBlcmZvcm1lZC50b0ludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIkhvc3BpY2UgRGlhZ25vc2lzIl0gKSBIb3NwaWNlQ2FyZURpYWdub3NpcwogICAgICAgICAgd2hlcmUgSG9zcGljZUNhcmVEaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICAgICAgICBhbmQgSG9zcGljZUNhcmVEaWFnbm9zaXMuaXNWZXJpZmllZCAoICkKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSG9zcGljZSBEaWFnbm9zaXMiXSApIEhvc3BpY2VDYXJlQ29uY2VybgogICAgICAgICAgd2hlcmUgSG9zcGljZUNhcmVDb25jZXJuLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgICAgYW5kIEhvc3BpY2VDYXJlQ29uY2Vybi5pc1ZlcmlmaWVkICggKQogICAgICApCgpkZWZpbmUgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVyIFdpdGggUGFsbGlhdGl2ZSBDYXJlIFdpdGhpbiBQcmV2aW91cyA5MCBEYXlzIjoKICBmcm9tCiAgICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIGxldCBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyOiBJbnRlcnZhbFtzdGFydCBvZiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIucGVyaW9kIC0gOTAgZGF5cywgZW5kIG9mIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2RdCiAgICB3aGVyZSBleGlzdHMgKCAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJGdW5jdGlvbmFsIEFzc2Vzc21lbnQgb2YgQ2hyb25pYyBJbGxuZXNzIFRoZXJhcHkgLSBQYWxsaWF0aXZlIENhcmUgUXVlc3Rpb25uYWlyZSAoRkFDSVQtUGFsKSJdICkgUGFsbGlhdGl2ZUFzc2Vzc21lbnQKICAgICAgICB3aGVyZSBQYWxsaWF0aXZlQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICkKICAgICAgb3IgZXhpc3RzICggKCAoIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSApIFBhbGxpYXRpdmVDYXJlRGlhZ25vc2lzCiAgICAgICAgICB3aGVyZSBQYWxsaWF0aXZlQ2FyZURpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQ2FyZURpYWdub3Npcy5pc1ZlcmlmaWVkICggKQogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSBQYWxsaWF0aXZlQ2FyZUNvbmNlcm4KICAgICAgICAgIHdoZXJlIFBhbGxpYXRpdmVDYXJlQ29uY2Vybi5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQ2FyZUNvbmNlcm4uaXNWZXJpZmllZCAoICkKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtFbmNvdW50ZXI6ICJQYWxsaWF0aXZlIENhcmUgRW5jb3VudGVyIl0gKSBQYWxsaWF0aXZlRW5jb3VudGVyCiAgICAgICAgICB3aGVyZSBQYWxsaWF0aXZlRW5jb3VudGVyLnBlcmlvZCBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW1Byb2NlZHVyZTogIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iXSApIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24KICAgICAgICAgIHdoZXJlIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24ucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICkKCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBPdGhlciBRdWFsaWZpZWQgVlRFIEVuY291bnRlciBEb2N1bWVudGVkIFdpdGhpbiBQcmV2aW91cyA2IE1vbnRocyI6CiAgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyIgQ3VycmVudFF1YWxpZmllZFZURQogICAgd2l0aCAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBQcmV2aW91c1F1YWxpZmllZFZURQogICAgICBzdWNoIHRoYXQgUHJldmlvdXNRdWFsaWZpZWRWVEUucGVyaW9kIHN0YXJ0cyA2IG1vbnRocyBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBDdXJyZW50UXVhbGlmaWVkVlRFLnBlcmlvZAoKZGVmaW5lICJTREUgRXRobmljaXR5IjoKICBTREUuIlNERSBFdGhuaWNpdHkiCgpkZWZpbmUgIlNERSBQYXllciI6CiAgU0RFLiJTREUgUGF5ZXIiCgpkZWZpbmUgIlNERSBSYWNlIjoKICBTREUuIlNERSBSYWNlIgoKZGVmaW5lICJTREUgU2V4IjoKICBTREUuIlNERSBTZXgiCiAgCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb25kaXRpb24gZWl0aGVyIGhhcyBubyB2ZXJpZmljYXRpb24gc3RhdHVzIG9yIGhhcyBhIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgY29uZmlybWVkLCB1bmNvbmZpcm1lZCwgcHJvdmlzaW9uYWwsIG9yIGRpZmZlcmVudGlhbAoqLwoKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNWZXJpZmllZChjb25kaXRpb24gQ2hvaWNlPENvbmRpdGlvbkVuY291bnRlckRpYWdub3NpcywgQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucz4pOgogIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgaXMgbm90IG51bGwgaW1wbGllcyAoIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuImNvbmZpcm1lZCIKICAgICAgb3IgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4idW5jb25maXJtZWQiCiAgICAgIG9yIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuInByb3Zpc2lvbmFsIgogICAgICBvciBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJkaWZmZXJlbnRpYWwiCiAgKQoKLyoKCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBDb25kaXRpb24gaXMgY29uZmlybWVkCiovCgoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc0NvbmZpcm1lZENvbmRpdGlvbihjb25kaXRpb24gQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzKToKICBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJjb25maXJtZWQi",
    "url" : "https://madie.cms.gov/Library-CMS1173FHIRDiagnosticDelayVTE.cql"
  }]
}