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

: CMS138FHIRTobaccoScrnCessation - JSON Representation

Draft as of 2026-09-19

Raw json | Download

{
  "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 &quot;CPT&quot;: 'http://www.ama-assn.org/go/cpt'\ncodesystem &quot;ICD10CM&quot;: 'http://hl7.org/fhir/sid/icd-10-cm'\ncodesystem &quot;TaskCode&quot;: 'http://hl7.org/fhir/CodeSystem/task-code'\n\nvalueset &quot;Annual Wellness Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240'\nvalueset &quot;Home Healthcare Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016'\nvalueset &quot;Nutrition Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1006'\nvalueset &quot;Occupational Therapy Evaluation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1011'\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;Ophthalmological Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1285'\nvalueset &quot;Physical Therapy Evaluation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1022'\nvalueset &quot;Preventive Care Services Established Office Visit, 18 and Up&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025'\nvalueset &quot;Preventive Care Services Group Counseling&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1027'\nvalueset &quot;Preventive Care Services Individual Counseling&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026'\nvalueset &quot;Preventive Care Services Initial Office Visit, 18 and Up&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023'\nvalueset &quot;Preventive Care Services, Initial Office Visit, 0 to 17&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022'\nvalueset &quot;Preventive Care, Established Office Visit, 0 to 17&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024'\nvalueset &quot;Psych Visit Diagnostic Evaluation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492'\nvalueset &quot;Psych Visit Psychotherapy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496'\nvalueset &quot;Psychoanalysis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1141'\nvalueset &quot;Speech and Hearing Evaluation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1530'\nvalueset &quot;Telephone Visits&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080'\nvalueset &quot;Tobacco Non User&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1189'\nvalueset &quot;Tobacco Use Cessation Counseling&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.509'\nvalueset &quot;Tobacco Use Cessation Pharmacotherapy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1190'\nvalueset &quot;Tobacco Use Screening&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1278'\nvalueset &quot;Tobacco User&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1170'\nvalueset &quot;Virtual Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089'\n\ncode &quot;Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)&quot;: '96156' from &quot;CPT&quot; display 'Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)'\ncode &quot;Health behavior intervention, individual, face-to-face; initial 30 minutes&quot;: '96158' from &quot;CPT&quot; display 'Health behavior intervention, individual, face-to-face; initial 30 minutes'\ncode &quot;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&quot;: '99024' from &quot;CPT&quot; 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 &quot;Tobacco abuse counseling&quot;: 'Z71.6' from &quot;ICD10CM&quot; display 'Tobacco abuse counseling'\ncode &quot;Unlisted preventive medicine service&quot;: '99429' from &quot;CPT&quot; display 'Unlisted preventive medicine service'\ncode &quot;fulfill&quot;: 'fulfill' from &quot;TaskCode&quot; display 'Fulfill the focal request'\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;Denominator 1&quot;:\n  &quot;Initial Population&quot;\n\ndefine &quot;Denominator 2&quot;:\n  &quot;Initial Population&quot;\n    and &quot;Most Recent Tobacco Use Screening Indicates Tobacco User&quot; is not null\n\ndefine &quot;Denominator 3&quot;:\n  &quot;Initial Population&quot;\n\ndefine &quot;Initial Population&quot;:\n  AgeInYearsAt(date from start of &quot;Measurement Period&quot;) &gt;= 12\n    and ( Count(&quot;Qualifying Visit During Measurement Period&quot;) &gt;= 2\n        or exists &quot;Preventive Visit During Measurement Period&quot;\n    )\n\ndefine &quot;Numerator 1&quot;:\n  &quot;Most Recent Tobacco Use Screening Indicates Tobacco Non User&quot; is not null\n    or &quot;Most Recent Tobacco Use Screening Indicates Tobacco User&quot; is not null\n\ndefine &quot;Numerator 2&quot;:\n  exists &quot;Tobacco Cessation Counseling Given&quot;\n    or exists &quot;Tobacco Cessation Pharmacotherapy Ordered&quot;\n    or exists &quot;Active Pharmacotherapy for Tobacco Cessation&quot;\n\ndefine &quot;Numerator 3&quot;:\n  &quot;Most Recent Tobacco Use Screening Indicates Tobacco Non User&quot; is not null\n    or ( &quot;Most Recent Tobacco Use Screening Indicates Tobacco User&quot; is not null\n        and ( exists &quot;Tobacco Cessation Counseling Given&quot;\n            or exists &quot;Tobacco Cessation Pharmacotherapy Ordered&quot;\n            or exists &quot;Active Pharmacotherapy for Tobacco Cessation&quot;\n        )\n    )\n\ndefine &quot;Most Recent Tobacco Use Screening Indicates Tobacco Non User&quot;:\n  ( Last((([USCore.SmokingStatusProfile]).isObservationSmokingStatus()) TobaccoUseScreening\n      where TobaccoUseScreening.effective.toInterval() during day of &quot;Measurement Period&quot;\n      sort by start of effective.toInterval()\n  ) ) MostRecentTobaccoUseScreening\n    where MostRecentTobaccoUseScreening.value as CodeableConcept in &quot;Tobacco Non User&quot;\n\ndefine &quot;Active Pharmacotherapy for Tobacco Cessation&quot;:\n  ( ( [MedicationRequest: &quot;Tobacco Use Cessation Pharmacotherapy&quot;] ).isMedicationActive ( ) ) TakingCessationPharmacotherapy\n    where TakingCessationPharmacotherapy.medicationRequestPeriod ( ) during day of Interval[start of &quot;Measurement Period&quot; - 6 months, end of &quot;Measurement Period&quot;]\n\ndefine &quot;Most Recent Tobacco Use Screening Indicates Tobacco User&quot;:\n  ( Last((([USCore.SmokingStatusProfile]).isObservationSmokingStatus()) TobaccoUseScreening\n      where TobaccoUseScreening.effective.toInterval() during day of &quot;Measurement Period&quot;\n      sort by start of effective.toInterval()\n  ) ) MostRecentTobaccoUseScreening\n    where MostRecentTobaccoUseScreening.value as CodeableConcept in &quot;Tobacco User&quot;\n\ndefine &quot;Tobacco Cessation Pharmacotherapy Ordered&quot;:\n  ( ( [MedicationRequest: &quot;Tobacco Use Cessation Pharmacotherapy&quot;] ).isMedicationOrder ( ) ) CessationPharmacotherapyOrdered\n    where CessationPharmacotherapyOrdered.authoredOn during day of Interval[start of &quot;Measurement Period&quot; - 6 months, end of &quot;Measurement Period&quot;]\n      and not exists ( [TaskRejected] TaskReject\n          where TaskReject.focus.references ( CessationPharmacotherapyOrdered )\n            and TaskReject.code ~ &quot;fulfill&quot;\n      )\n\ndefine &quot;Tobacco Cessation Counseling Given&quot;:\n  ( ( ( [Procedure: &quot;Tobacco Use Cessation Counseling&quot;] ).isInterventionPerformed ( ) ) TobaccoCessationCounseling\n      where TobaccoCessationCounseling.performed.toInterval ( ) during day of Interval[start of &quot;Measurement Period&quot; - 6 months, end of &quot;Measurement Period&quot;]\n  )\n    union ( // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n        // Original:\n        //   [ConditionProblemsHealthConcerns: &quot;Tobacco abuse counseling&quot;]\n        //     union [ConditionEncounterDiagnosis: &quot;Tobacco abuse counseling&quot;]\n        ( ( [FHIR.Condition: &quot;Tobacco abuse counseling&quot;] ).verified ( ) ) TobaccoCounseling\n        where TobaccoCounseling.prevalenceInterval ( ) starts during day of Interval[start of &quot;Measurement Period&quot; - 6 months, end of &quot;Measurement Period&quot;]\n    )\n\ndefine &quot;Preventive Visit During Measurement Period&quot;:\n  ( ( [Encounter: &quot;Annual Wellness Visit&quot;]\n      union [Encounter: &quot;Preventive Care Services Established Office Visit, 18 and Up&quot;]\n      union [Encounter: &quot;Preventive Care Services Initial Office Visit, 18 and Up&quot;]\n      union [Encounter: &quot;Preventive Care, Established Office Visit, 0 to 17&quot;]\n      union [Encounter: &quot;Preventive Care Services, Initial Office Visit, 0 to 17&quot;]\n      union [Encounter: &quot;Preventive Care Services Group Counseling&quot;]\n      union [Encounter: &quot;Preventive Care Services Individual Counseling&quot;]\n      union ( [Encounter] E\n          where exists ( ( E.type ) T\n              where T ~ &quot;Unlisted preventive medicine service&quot;\n          )\n      )\n      union ( [Encounter] E\n          where exists ( ( E.type ) T\n              where T ~ &quot;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&quot;\n          )\n      )\n      union [Encounter: &quot;Nutrition Services&quot;]\n  ).isEncounterPerformed ( ) ) PreventiveEncounter\n    where PreventiveEncounter.period during day of &quot;Measurement Period&quot;\n\ndefine &quot;Qualifying Visit During Measurement Period&quot;:\n  ( ( ( [Encounter] E\n        where exists ( ( E.type ) T\n            where T ~ &quot;Health behavior intervention, individual, face-to-face; initial 30 minutes&quot;\n        )\n    )\n      union ( [Encounter] E\n          where exists ( ( E.type ) T\n              where T ~ &quot;Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)&quot;\n          )\n      )\n      union [Encounter: &quot;Home Healthcare Services&quot;]\n      union [Encounter: &quot;Occupational Therapy Evaluation&quot;]\n      union [Encounter: &quot;Office Visit&quot;]\n      union [Encounter: &quot;Ophthalmological Services&quot;]\n      union [Encounter: &quot;Physical Therapy Evaluation&quot;]\n      union [Encounter: &quot;Psych Visit Diagnostic Evaluation&quot;]\n      union [Encounter: &quot;Psych Visit Psychotherapy&quot;]\n      union [Encounter: &quot;Psychoanalysis&quot;]\n      union [Encounter: &quot;Speech and Hearing Evaluation&quot;]\n      union [Encounter: &quot;Telephone Visits&quot;]\n      union [Encounter: &quot;Virtual Encounter&quot;]\n  ).isEncounterPerformed ( ) ) OfficeBasedEncounter\n    where OfficeBasedEncounter.period during day of &quot;Measurement Period&quot;\n\ndefine &quot;Denominator Exclusions&quot;:\n  Hospice.&quot;Has Hospice Services&quot;\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;</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"
    }
  ]
}