Draft dQM CMS Content Implementation Guide
2025.1.0 - CI Build
Draft dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/dqm-content-cms-2025/ and changes regularly. See the Directory of published versions
| Draft as of 2026-09-19 |
{
"resourceType" : "Library",
"id" : "CMS138FHIRTobaccoScrnCessation",
"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 CMS138FHIRTobaccoScrnCessation 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.CumulativeMedicationDuration version '2.0.0-ballot' called CMD\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 Hospice version '7.1.000' called Hospice\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 "CPT": 'http://www.ama-assn.org/go/cpt'\ncodesystem "ICD10CM": 'http://hl7.org/fhir/sid/icd-10-cm'\ncodesystem "TaskCode": 'http://hl7.org/fhir/CodeSystem/task-code'\n\nvalueset "Annual Wellness Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240'\nvalueset "Home Healthcare Services": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016'\nvalueset "Nutrition Services": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1006'\nvalueset "Occupational Therapy Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1011'\nvalueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'\nvalueset "Ophthalmological Services": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1285'\nvalueset "Physical Therapy Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1022'\nvalueset "Preventive Care Services Established Office Visit, 18 and Up": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025'\nvalueset "Preventive Care Services Group Counseling": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1027'\nvalueset "Preventive Care Services Individual Counseling": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026'\nvalueset "Preventive Care Services Initial Office Visit, 18 and Up": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023'\nvalueset "Preventive Care Services, Initial Office Visit, 0 to 17": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022'\nvalueset "Preventive Care, Established Office Visit, 0 to 17": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024'\nvalueset "Psych Visit Diagnostic Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492'\nvalueset "Psych Visit Psychotherapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496'\nvalueset "Psychoanalysis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1141'\nvalueset "Speech and Hearing Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1530'\nvalueset "Telephone Visits": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080'\nvalueset "Tobacco Non User": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1189'\nvalueset "Tobacco Use Cessation Counseling": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.509'\nvalueset "Tobacco Use Cessation Pharmacotherapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1190'\nvalueset "Tobacco Use Screening": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1278'\nvalueset "Tobacco User": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1170'\nvalueset "Virtual Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089'\n\ncode "Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)": '96156' from "CPT" display 'Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)'\ncode "Health behavior intervention, individual, face-to-face; initial 30 minutes": '96158' from "CPT" display 'Health behavior intervention, individual, face-to-face; initial 30 minutes'\ncode "Postoperative follow-up visit, normally included in the surgical package, to indicate that an evaluation and management service was performed during a postoperative period for a reason(s) related to the original procedure": '99024' from "CPT" display 'Postoperative follow-up visit, normally included in the surgical package, to indicate that an evaluation and management service was performed during a postoperative period for a reason(s) related to the original procedure'\ncode "Tobacco abuse counseling": 'Z71.6' from "ICD10CM" display 'Tobacco abuse counseling'\ncode "Unlisted preventive medicine service": '99429' from "CPT" display 'Unlisted preventive medicine service'\ncode "fulfill": 'fulfill' from "TaskCode" display 'Fulfill the focal request'\n\nparameter "Measurement Period" Interval<DateTime>\n default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)\n\ncontext Patient\n\ndefine "Denominator 1":\n "Initial Population"\n\ndefine "Denominator 2":\n "Initial Population"\n and "Most Recent Tobacco Use Screening Indicates Tobacco User" is not null\n\ndefine "Denominator 3":\n "Initial Population"\n\ndefine "Initial Population":\n AgeInYearsAt(date from start of "Measurement Period") >= 12\n and ( Count("Qualifying Visit During Measurement Period") >= 2\n or exists "Preventive Visit During Measurement Period"\n )\n\ndefine "Numerator 1":\n "Most Recent Tobacco Use Screening Indicates Tobacco Non User" is not null\n or "Most Recent Tobacco Use Screening Indicates Tobacco User" is not null\n\ndefine "Numerator 2":\n exists "Tobacco Cessation Counseling Given"\n or exists "Tobacco Cessation Pharmacotherapy Ordered"\n or exists "Active Pharmacotherapy for Tobacco Cessation"\n\ndefine "Numerator 3":\n "Most Recent Tobacco Use Screening Indicates Tobacco Non User" is not null\n or ( "Most Recent Tobacco Use Screening Indicates Tobacco User" is not null\n and ( exists "Tobacco Cessation Counseling Given"\n or exists "Tobacco Cessation Pharmacotherapy Ordered"\n or exists "Active Pharmacotherapy for Tobacco Cessation"\n )\n )\n\ndefine "Most Recent Tobacco Use Screening Indicates Tobacco Non User":\n ( Last((([USCore.SmokingStatusProfile]).isObservationSmokingStatus()) TobaccoUseScreening\n where TobaccoUseScreening.effective.toInterval() during day of "Measurement Period"\n sort by start of effective.toInterval()\n ) ) MostRecentTobaccoUseScreening\n where MostRecentTobaccoUseScreening.value as CodeableConcept in "Tobacco Non User"\n\ndefine "Active Pharmacotherapy for Tobacco Cessation":\n ( ( [MedicationRequest: "Tobacco Use Cessation Pharmacotherapy"] ).isMedicationActive ( ) ) TakingCessationPharmacotherapy\n where TakingCessationPharmacotherapy.medicationRequestPeriod ( ) during day of Interval[start of "Measurement Period" - 6 months, end of "Measurement Period"]\n\ndefine "Most Recent Tobacco Use Screening Indicates Tobacco User":\n ( Last((([USCore.SmokingStatusProfile]).isObservationSmokingStatus()) TobaccoUseScreening\n where TobaccoUseScreening.effective.toInterval() during day of "Measurement Period"\n sort by start of effective.toInterval()\n ) ) MostRecentTobaccoUseScreening\n where MostRecentTobaccoUseScreening.value as CodeableConcept in "Tobacco User"\n\ndefine "Tobacco Cessation Pharmacotherapy Ordered":\n ( ( [MedicationRequest: "Tobacco Use Cessation Pharmacotherapy"] ).isMedicationOrder ( ) ) CessationPharmacotherapyOrdered\n where CessationPharmacotherapyOrdered.authoredOn during day of Interval[start of "Measurement Period" - 6 months, end of "Measurement Period"]\n and not exists ( [TaskRejected] TaskReject\n where TaskReject.focus.references ( CessationPharmacotherapyOrdered )\n and TaskReject.code ~ "fulfill"\n )\n\ndefine "Tobacco Cessation Counseling Given":\n ( ( ( [Procedure: "Tobacco Use Cessation Counseling"] ).isInterventionPerformed ( ) ) TobaccoCessationCounseling\n where TobaccoCessationCounseling.performed.toInterval ( ) during day of Interval[start of "Measurement Period" - 6 months, end of "Measurement Period"]\n )\n union ( // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionProblemsHealthConcerns: "Tobacco abuse counseling"]\n // union [ConditionEncounterDiagnosis: "Tobacco abuse counseling"]\n ( ( [FHIR.Condition: "Tobacco abuse counseling"] ).verified ( ) ) TobaccoCounseling\n where TobaccoCounseling.prevalenceInterval ( ) starts during day of Interval[start of "Measurement Period" - 6 months, end of "Measurement Period"]\n )\n\ndefine "Preventive Visit During Measurement Period":\n ( ( [Encounter: "Annual Wellness Visit"]\n union [Encounter: "Preventive Care Services Established Office Visit, 18 and Up"]\n union [Encounter: "Preventive Care Services Initial Office Visit, 18 and Up"]\n union [Encounter: "Preventive Care, Established Office Visit, 0 to 17"]\n union [Encounter: "Preventive Care Services, Initial Office Visit, 0 to 17"]\n union [Encounter: "Preventive Care Services Group Counseling"]\n union [Encounter: "Preventive Care Services Individual Counseling"]\n union ( [Encounter] E\n where exists ( ( E.type ) T\n where T ~ "Unlisted preventive medicine service"\n )\n )\n union ( [Encounter] E\n where exists ( ( E.type ) T\n where T ~ "Postoperative follow-up visit, normally included in the surgical package, to indicate that an evaluation and management service was performed during a postoperative period for a reason(s) related to the original procedure"\n )\n )\n union [Encounter: "Nutrition Services"]\n ).isEncounterPerformed ( ) ) PreventiveEncounter\n where PreventiveEncounter.period during day of "Measurement Period"\n\ndefine "Qualifying Visit During Measurement Period":\n ( ( ( [Encounter] E\n where exists ( ( E.type ) T\n where T ~ "Health behavior intervention, individual, face-to-face; initial 30 minutes"\n )\n )\n union ( [Encounter] E\n where exists ( ( E.type ) T\n where T ~ "Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)"\n )\n )\n union [Encounter: "Home Healthcare Services"]\n union [Encounter: "Occupational Therapy Evaluation"]\n union [Encounter: "Office Visit"]\n union [Encounter: "Ophthalmological Services"]\n union [Encounter: "Physical Therapy Evaluation"]\n union [Encounter: "Psych Visit Diagnostic Evaluation"]\n union [Encounter: "Psych Visit Psychotherapy"]\n union [Encounter: "Psychoanalysis"]\n union [Encounter: "Speech and Hearing Evaluation"]\n union [Encounter: "Telephone Visits"]\n union [Encounter: "Virtual Encounter"]\n ).isEncounterPerformed ( ) ) OfficeBasedEncounter\n where OfficeBasedEncounter.period during day of "Measurement Period"\n\ndefine "Denominator Exclusions":\n Hospice."Has Hospice Services"\n\ndefine "SDE Ethnicity":\n SDE."SDE Ethnicity"\n\ndefine "SDE Payer":\n SDE."SDE Payer"\n\ndefine "SDE Race":\n SDE."SDE Race"\n\ndefine "SDE Sex":\n SDE."SDE Sex"</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/CMS138FHIRTobaccoScrnCessation",
"version" : "1.1.000",
"name" : "CMS138FHIRTobaccoScrnCessation",
"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" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMzhGSElSVG9iYWNjb1Njcm5DZXNzYXRpb24gdmVyc2lvbiAnMS4xLjAwMCcKCnVzaW5nIFVTUXVhbGl0eUNvcmUgdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcKdXNpbmcgVVNDb3JlIHZlcnNpb24gJzYuMS4wLWRlcml2ZWQnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJDb21tb24gdmVyc2lvbiAnMi4wLjAnIGNhbGxlZCBGSElSQ29tbW9uCmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLkN1bXVsYXRpdmVNZWRpY2F0aW9uRHVyYXRpb24gdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgQ01ECmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLlVTQ29yZUNvbW1vbiB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlRWxlbWVudHMgdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgVVNDb3JlRWxlbWVudHMKCmluY2x1ZGUgSG9zcGljZSB2ZXJzaW9uICc3LjEuMDAwJyBjYWxsZWQgSG9zcGljZQppbmNsdWRlIENRTUNvbW1vbiB2ZXJzaW9uICc1LjEuMDAwJyBjYWxsZWQgQ1FNQ29tbW9uCmluY2x1ZGUgVVNRdWFsaXR5Q29yZUNvbW1vbiB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJyBjYWxsZWQgVVNRdWFsaXR5Q29yZUNvbW1vbgppbmNsdWRlIFN1cHBsZW1lbnRhbERhdGFFbGVtZW50cyB2ZXJzaW9uICc2LjEuMDAwJyBjYWxsZWQgU0RFCmluY2x1ZGUgU3RhdHVzIHZlcnNpb24gJzIuMS4wMDAnIGNhbGxlZCBTdGF0dXMKCmNvZGVzeXN0ZW0gIkNQVCI6ICdodHRwOi8vd3d3LmFtYS1hc3NuLm9yZy9nby9jcHQnCmNvZGVzeXN0ZW0gIklDRDEwQ00iOiAnaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtJwpjb2Rlc3lzdGVtICJUYXNrQ29kZSI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL0NvZGVTeXN0ZW0vdGFzay1jb2RlJwoKdmFsdWVzZXQgIkFubnVhbCBXZWxsbmVzcyBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMjQwJwp2YWx1ZXNldCAiSG9tZSBIZWFsdGhjYXJlIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDE2Jwp2YWx1ZXNldCAiTnV0cml0aW9uIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMDYnCnZhbHVlc2V0ICJPY2N1cGF0aW9uYWwgVGhlcmFweSBFdmFsdWF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjEwMTEnCnZhbHVlc2V0ICJPZmZpY2UgVmlzaXQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMDEnCnZhbHVlc2V0ICJPcGh0aGFsbW9sb2dpY2FsIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjEyODUnCnZhbHVlc2V0ICJQaHlzaWNhbCBUaGVyYXB5IEV2YWx1YXRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTAyMicKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBFc3RhYmxpc2hlZCBPZmZpY2UgVmlzaXQsIDE4IGFuZCBVcCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyNScKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBHcm91cCBDb3Vuc2VsaW5nIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI3Jwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEluZGl2aWR1YWwgQ291bnNlbGluZyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyNicKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBJbml0aWFsIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDIzJwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzLCBJbml0aWFsIE9mZmljZSBWaXNpdCwgMCB0byAxNyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyMicKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSwgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI0Jwp2YWx1ZXNldCAiUHN5Y2ggVmlzaXQgRGlhZ25vc3RpYyBFdmFsdWF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE0OTInCnZhbHVlc2V0ICJQc3ljaCBWaXNpdCBQc3ljaG90aGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE0OTYnCnZhbHVlc2V0ICJQc3ljaG9hbmFseXNpcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMTQxJwp2YWx1ZXNldCAiU3BlZWNoIGFuZCBIZWFyaW5nIEV2YWx1YXRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTUzMCcKdmFsdWVzZXQgIlRlbGVwaG9uZSBWaXNpdHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwODAnCnZhbHVlc2V0ICJUb2JhY2NvIE5vbiBVc2VyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjExODknCnZhbHVlc2V0ICJUb2JhY2NvIFVzZSBDZXNzYXRpb24gQ291bnNlbGluZyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy41MDknCnZhbHVlc2V0ICJUb2JhY2NvIFVzZSBDZXNzYXRpb24gUGhhcm1hY290aGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjExOTAnCnZhbHVlc2V0ICJUb2JhY2NvIFVzZSBTY3JlZW5pbmciOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTI3OCcKdmFsdWVzZXQgIlRvYmFjY28gVXNlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMTcwJwp2YWx1ZXNldCAiVmlydHVhbCBFbmNvdW50ZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwODknCgpjb2RlICJIZWFsdGggYmVoYXZpb3IgYXNzZXNzbWVudCwgb3IgcmUtYXNzZXNzbWVudCAoaWUsIGhlYWx0aC1mb2N1c2VkIGNsaW5pY2FsIGludGVydmlldywgYmVoYXZpb3JhbCBvYnNlcnZhdGlvbnMsIGNsaW5pY2FsIGRlY2lzaW9uIG1ha2luZykiOiAnOTYxNTYnIGZyb20gIkNQVCIgZGlzcGxheSAnSGVhbHRoIGJlaGF2aW9yIGFzc2Vzc21lbnQsIG9yIHJlLWFzc2Vzc21lbnQgKGllLCBoZWFsdGgtZm9jdXNlZCBjbGluaWNhbCBpbnRlcnZpZXcsIGJlaGF2aW9yYWwgb2JzZXJ2YXRpb25zLCBjbGluaWNhbCBkZWNpc2lvbiBtYWtpbmcpJwpjb2RlICJIZWFsdGggYmVoYXZpb3IgaW50ZXJ2ZW50aW9uLCBpbmRpdmlkdWFsLCBmYWNlLXRvLWZhY2U7IGluaXRpYWwgMzAgbWludXRlcyI6ICc5NjE1OCcgZnJvbSAiQ1BUIiBkaXNwbGF5ICdIZWFsdGggYmVoYXZpb3IgaW50ZXJ2ZW50aW9uLCBpbmRpdmlkdWFsLCBmYWNlLXRvLWZhY2U7IGluaXRpYWwgMzAgbWludXRlcycKY29kZSAiUG9zdG9wZXJhdGl2ZSBmb2xsb3ctdXAgdmlzaXQsIG5vcm1hbGx5IGluY2x1ZGVkIGluIHRoZSBzdXJnaWNhbCBwYWNrYWdlLCB0byBpbmRpY2F0ZSB0aGF0IGFuIGV2YWx1YXRpb24gYW5kIG1hbmFnZW1lbnQgc2VydmljZSB3YXMgcGVyZm9ybWVkIGR1cmluZyBhIHBvc3RvcGVyYXRpdmUgcGVyaW9kIGZvciBhIHJlYXNvbihzKSByZWxhdGVkIHRvIHRoZSBvcmlnaW5hbCBwcm9jZWR1cmUiOiAnOTkwMjQnIGZyb20gIkNQVCIgZGlzcGxheSAnUG9zdG9wZXJhdGl2ZSBmb2xsb3ctdXAgdmlzaXQsIG5vcm1hbGx5IGluY2x1ZGVkIGluIHRoZSBzdXJnaWNhbCBwYWNrYWdlLCB0byBpbmRpY2F0ZSB0aGF0IGFuIGV2YWx1YXRpb24gYW5kIG1hbmFnZW1lbnQgc2VydmljZSB3YXMgcGVyZm9ybWVkIGR1cmluZyBhIHBvc3RvcGVyYXRpdmUgcGVyaW9kIGZvciBhIHJlYXNvbihzKSByZWxhdGVkIHRvIHRoZSBvcmlnaW5hbCBwcm9jZWR1cmUnCmNvZGUgIlRvYmFjY28gYWJ1c2UgY291bnNlbGluZyI6ICdaNzEuNicgZnJvbSAiSUNEMTBDTSIgZGlzcGxheSAnVG9iYWNjbyBhYnVzZSBjb3Vuc2VsaW5nJwpjb2RlICJVbmxpc3RlZCBwcmV2ZW50aXZlIG1lZGljaW5lIHNlcnZpY2UiOiAnOTk0MjknIGZyb20gIkNQVCIgZGlzcGxheSAnVW5saXN0ZWQgcHJldmVudGl2ZSBtZWRpY2luZSBzZXJ2aWNlJwpjb2RlICJmdWxmaWxsIjogJ2Z1bGZpbGwnIGZyb20gIlRhc2tDb2RlIiBkaXNwbGF5ICdGdWxmaWxsIHRoZSBmb2NhbCByZXF1ZXN0JwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJEZW5vbWluYXRvciAxIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgoKZGVmaW5lICJEZW5vbWluYXRvciAyIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgogICAgYW5kICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gVXNlciIgaXMgbm90IG51bGwKCmRlZmluZSAiRGVub21pbmF0b3IgMyI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiIKCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKSA+PSAxMgogICAgYW5kICggQ291bnQoIlF1YWxpZnlpbmcgVmlzaXQgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIpID49IDIKICAgICAgICBvciBleGlzdHMgIlByZXZlbnRpdmUgVmlzaXQgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIKICAgICkKCmRlZmluZSAiTnVtZXJhdG9yIDEiOgogICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gTm9uIFVzZXIiIGlzIG5vdCBudWxsCiAgICBvciAiTW9zdCBSZWNlbnQgVG9iYWNjbyBVc2UgU2NyZWVuaW5nIEluZGljYXRlcyBUb2JhY2NvIFVzZXIiIGlzIG5vdCBudWxsCgpkZWZpbmUgIk51bWVyYXRvciAyIjoKICBleGlzdHMgIlRvYmFjY28gQ2Vzc2F0aW9uIENvdW5zZWxpbmcgR2l2ZW4iCiAgICBvciBleGlzdHMgIlRvYmFjY28gQ2Vzc2F0aW9uIFBoYXJtYWNvdGhlcmFweSBPcmRlcmVkIgogICAgb3IgZXhpc3RzICJBY3RpdmUgUGhhcm1hY290aGVyYXB5IGZvciBUb2JhY2NvIENlc3NhdGlvbiIKCmRlZmluZSAiTnVtZXJhdG9yIDMiOgogICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gTm9uIFVzZXIiIGlzIG5vdCBudWxsCiAgICBvciAoICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gVXNlciIgaXMgbm90IG51bGwKICAgICAgICBhbmQgKCBleGlzdHMgIlRvYmFjY28gQ2Vzc2F0aW9uIENvdW5zZWxpbmcgR2l2ZW4iCiAgICAgICAgICAgIG9yIGV4aXN0cyAiVG9iYWNjbyBDZXNzYXRpb24gUGhhcm1hY290aGVyYXB5IE9yZGVyZWQiCiAgICAgICAgICAgIG9yIGV4aXN0cyAiQWN0aXZlIFBoYXJtYWNvdGhlcmFweSBmb3IgVG9iYWNjbyBDZXNzYXRpb24iCiAgICAgICAgKQogICAgKQoKZGVmaW5lICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gTm9uIFVzZXIiOgogICggTGFzdCgoKFtVU0NvcmUuU21va2luZ1N0YXR1c1Byb2ZpbGVdKS5pc09ic2VydmF0aW9uU21va2luZ1N0YXR1cygpKSBUb2JhY2NvVXNlU2NyZWVuaW5nCiAgICAgIHdoZXJlIFRvYmFjY29Vc2VTY3JlZW5pbmcuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgIHNvcnQgYnkgc3RhcnQgb2YgZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKQogICkgKSBNb3N0UmVjZW50VG9iYWNjb1VzZVNjcmVlbmluZwogICAgd2hlcmUgTW9zdFJlY2VudFRvYmFjY29Vc2VTY3JlZW5pbmcudmFsdWUgYXMgQ29kZWFibGVDb25jZXB0IGluICJUb2JhY2NvIE5vbiBVc2VyIgoKZGVmaW5lICJBY3RpdmUgUGhhcm1hY290aGVyYXB5IGZvciBUb2JhY2NvIENlc3NhdGlvbiI6CiAgKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIlRvYmFjY28gVXNlIENlc3NhdGlvbiBQaGFybWFjb3RoZXJhcHkiXSApLmlzTWVkaWNhdGlvbkFjdGl2ZSAoICkgKSBUYWtpbmdDZXNzYXRpb25QaGFybWFjb3RoZXJhcHkKICAgIHdoZXJlIFRha2luZ0Nlc3NhdGlvblBoYXJtYWNvdGhlcmFweS5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICkgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiAtIDYgbW9udGhzLCBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCJdCgpkZWZpbmUgIk1vc3QgUmVjZW50IFRvYmFjY28gVXNlIFNjcmVlbmluZyBJbmRpY2F0ZXMgVG9iYWNjbyBVc2VyIjoKICAoIExhc3QoKChbVVNDb3JlLlNtb2tpbmdTdGF0dXNQcm9maWxlXSkuaXNPYnNlcnZhdGlvblNtb2tpbmdTdGF0dXMoKSkgVG9iYWNjb1VzZVNjcmVlbmluZwogICAgICB3aGVyZSBUb2JhY2NvVXNlU2NyZWVuaW5nLmVmZmVjdGl2ZS50b0ludGVydmFsKCkgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICBzb3J0IGJ5IHN0YXJ0IG9mIGVmZmVjdGl2ZS50b0ludGVydmFsKCkKICApICkgTW9zdFJlY2VudFRvYmFjY29Vc2VTY3JlZW5pbmcKICAgIHdoZXJlIE1vc3RSZWNlbnRUb2JhY2NvVXNlU2NyZWVuaW5nLnZhbHVlIGFzIENvZGVhYmxlQ29uY2VwdCBpbiAiVG9iYWNjbyBVc2VyIgoKZGVmaW5lICJUb2JhY2NvIENlc3NhdGlvbiBQaGFybWFjb3RoZXJhcHkgT3JkZXJlZCI6CiAgKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIlRvYmFjY28gVXNlIENlc3NhdGlvbiBQaGFybWFjb3RoZXJhcHkiXSApLmlzTWVkaWNhdGlvbk9yZGVyICggKSApIENlc3NhdGlvblBoYXJtYWNvdGhlcmFweU9yZGVyZWQKICAgIHdoZXJlIENlc3NhdGlvblBoYXJtYWNvdGhlcmFweU9yZGVyZWQuYXV0aG9yZWRPbiBkdXJpbmcgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiIC0gNiBtb250aHMsIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIl0KICAgICAgYW5kIG5vdCBleGlzdHMgKCBbVGFza1JlamVjdGVkXSBUYXNrUmVqZWN0CiAgICAgICAgICB3aGVyZSBUYXNrUmVqZWN0LmZvY3VzLnJlZmVyZW5jZXMgKCBDZXNzYXRpb25QaGFybWFjb3RoZXJhcHlPcmRlcmVkICkKICAgICAgICAgICAgYW5kIFRhc2tSZWplY3QuY29kZSB+ICJmdWxmaWxsIgogICAgICApCgpkZWZpbmUgIlRvYmFjY28gQ2Vzc2F0aW9uIENvdW5zZWxpbmcgR2l2ZW4iOgogICggKCAoIFtQcm9jZWR1cmU6ICJUb2JhY2NvIFVzZSBDZXNzYXRpb24gQ291bnNlbGluZyJdICkuaXNJbnRlcnZlbnRpb25QZXJmb3JtZWQgKCApICkgVG9iYWNjb0Nlc3NhdGlvbkNvdW5zZWxpbmcKICAgICAgd2hlcmUgVG9iYWNjb0Nlc3NhdGlvbkNvdW5zZWxpbmcucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSA2IG1vbnRocywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQogICkKICAgIHVuaW9uICggLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgICAgICAgLy8gT3JpZ2luYWw6CiAgICAgICAgLy8gICBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlRvYmFjY28gYWJ1c2UgY291bnNlbGluZyJdCiAgICAgICAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJUb2JhY2NvIGFidXNlIGNvdW5zZWxpbmciXQogICAgICAgICggKCBbRkhJUi5Db25kaXRpb246ICJUb2JhY2NvIGFidXNlIGNvdW5zZWxpbmciXSApLnZlcmlmaWVkICggKSApIFRvYmFjY29Db3Vuc2VsaW5nCiAgICAgICAgd2hlcmUgVG9iYWNjb0NvdW5zZWxpbmcucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiAtIDYgbW9udGhzLCBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCJdCiAgICApCgpkZWZpbmUgIlByZXZlbnRpdmUgVmlzaXQgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCI6CiAgKCAoIFtFbmNvdW50ZXI6ICJBbm51YWwgV2VsbG5lc3MgVmlzaXQiXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEVzdGFibGlzaGVkIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBJbml0aWFsIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSwgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcywgSW5pdGlhbCBPZmZpY2UgVmlzaXQsIDAgdG8gMTciXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEdyb3VwIENvdW5zZWxpbmciXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEluZGl2aWR1YWwgQ291bnNlbGluZyJdCiAgICAgIHVuaW9uICggW0VuY291bnRlcl0gRQogICAgICAgICAgd2hlcmUgZXhpc3RzICggKCBFLnR5cGUgKSBUCiAgICAgICAgICAgICAgd2hlcmUgVCB+ICJVbmxpc3RlZCBwcmV2ZW50aXZlIG1lZGljaW5lIHNlcnZpY2UiCiAgICAgICAgICApCiAgICAgICkKICAgICAgdW5pb24gKCBbRW5jb3VudGVyXSBFCiAgICAgICAgICB3aGVyZSBleGlzdHMgKCAoIEUudHlwZSApIFQKICAgICAgICAgICAgICB3aGVyZSBUIH4gIlBvc3RvcGVyYXRpdmUgZm9sbG93LXVwIHZpc2l0LCBub3JtYWxseSBpbmNsdWRlZCBpbiB0aGUgc3VyZ2ljYWwgcGFja2FnZSwgdG8gaW5kaWNhdGUgdGhhdCBhbiBldmFsdWF0aW9uIGFuZCBtYW5hZ2VtZW50IHNlcnZpY2Ugd2FzIHBlcmZvcm1lZCBkdXJpbmcgYSBwb3N0b3BlcmF0aXZlIHBlcmlvZCBmb3IgYSByZWFzb24ocykgcmVsYXRlZCB0byB0aGUgb3JpZ2luYWwgcHJvY2VkdXJlIgogICAgICAgICAgKQogICAgICApCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJOdXRyaXRpb24gU2VydmljZXMiXQogICkuaXNFbmNvdW50ZXJQZXJmb3JtZWQgKCApICkgUHJldmVudGl2ZUVuY291bnRlcgogICAgd2hlcmUgUHJldmVudGl2ZUVuY291bnRlci5wZXJpb2QgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJRdWFsaWZ5aW5nIFZpc2l0IER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiOgogICggKCAoIFtFbmNvdW50ZXJdIEUKICAgICAgICB3aGVyZSBleGlzdHMgKCAoIEUudHlwZSApIFQKICAgICAgICAgICAgd2hlcmUgVCB+ICJIZWFsdGggYmVoYXZpb3IgaW50ZXJ2ZW50aW9uLCBpbmRpdmlkdWFsLCBmYWNlLXRvLWZhY2U7IGluaXRpYWwgMzAgbWludXRlcyIKICAgICAgICApCiAgICApCiAgICAgIHVuaW9uICggW0VuY291bnRlcl0gRQogICAgICAgICAgd2hlcmUgZXhpc3RzICggKCBFLnR5cGUgKSBUCiAgICAgICAgICAgICAgd2hlcmUgVCB+ICJIZWFsdGggYmVoYXZpb3IgYXNzZXNzbWVudCwgb3IgcmUtYXNzZXNzbWVudCAoaWUsIGhlYWx0aC1mb2N1c2VkIGNsaW5pY2FsIGludGVydmlldywgYmVoYXZpb3JhbCBvYnNlcnZhdGlvbnMsIGNsaW5pY2FsIGRlY2lzaW9uIG1ha2luZykiCiAgICAgICAgICApCiAgICAgICkKICAgICAgdW5pb24gW0VuY291bnRlcjogIkhvbWUgSGVhbHRoY2FyZSBTZXJ2aWNlcyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPY2N1cGF0aW9uYWwgVGhlcmFweSBFdmFsdWF0aW9uIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIk9mZmljZSBWaXNpdCJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPcGh0aGFsbW9sb2dpY2FsIFNlcnZpY2VzIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlBoeXNpY2FsIFRoZXJhcHkgRXZhbHVhdGlvbiJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQc3ljaCBWaXNpdCBEaWFnbm9zdGljIEV2YWx1YXRpb24iXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHN5Y2ggVmlzaXQgUHN5Y2hvdGhlcmFweSJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQc3ljaG9hbmFseXNpcyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJTcGVlY2ggYW5kIEhlYXJpbmcgRXZhbHVhdGlvbiJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJUZWxlcGhvbmUgVmlzaXRzIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlZpcnR1YWwgRW5jb3VudGVyIl0KICApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIE9mZmljZUJhc2VkRW5jb3VudGVyCiAgICB3aGVyZSBPZmZpY2VCYXNlZEVuY291bnRlci5wZXJpb2QgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNsdXNpb25zIjoKICBIb3NwaWNlLiJIYXMgSG9zcGljZSBTZXJ2aWNlcyIKCmRlZmluZSAiU0RFIEV0aG5pY2l0eSI6CiAgU0RFLiJTREUgRXRobmljaXR5IgoKZGVmaW5lICJTREUgUGF5ZXIiOgogIFNERS4iU0RFIFBheWVyIgoKZGVmaW5lICJTREUgUmFjZSI6CiAgU0RFLiJTREUgUmFjZSIKCmRlZmluZSAiU0RFIFNleCI6CiAgU0RFLiJTREUgU2V4Ig==",
"url" : "https://madie.cms.gov/Library-CMS138FHIRTobaccoScrnCessation.cql"
}
]
}