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

: CMS136FHIRChildADHDMedFollowUp - XML Representation

Draft as of 2026-09-19

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="CMS136FHIRChildADHDMedFollowUp"/>
  <text>
    <status value="extensions"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
  <table class="narrative-table">
    <tbody>
<tr>


<th colspan="2" scope="row" class="row-header"><a name="metadata"> </a>Metadata</th>


</tr>







<tr>


<th scope="row" class="row-header">Version</th>



<td class="content-container">1.1.000</td>


</tr>
















<tr>


<th scope="row" class="row-header">Status</th>



<td class="content-container">Draft</td>


</tr>







































<tr>


<th scope="row" class="row-header">Type</th>



<td class="content-container">
    <a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library


</td>


</tr>













<tr>


<th colspan="2" scope="row" class="row-header"><a name="parameters"> </a>Parameters</th>


</tr>


<tr>


<th scope="row" class="row-header">Parameter</th>



<td class="content-container">None</td>


</tr>








  <tr>


<th colspan="2" scope="row" class="row-header">Library Content</th>


</tr>
  
    
    <tr>
      <th scope="row" class="row-header">CQL Content</th>
      <td>
        <a name="cql-content"> </a>
        <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
NOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.
*/
library CMS136FHIRChildADHDMedFollowUp version '1.1.000'

using USQualityCore version '0.1.0-cibuild'
using USCore version '6.1.0-derived'
using FHIR version '4.0.1'

include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon
include hl7.fhir.us.cql.CumulativeMedicationDuration version '2.0.0-ballot' called CMD
include hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon
include hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements

include Hospice version '7.1.000' called Hospice
include CQMCommon version '5.1.000' called CQMCommon
include USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon
include SupplementalDataElements version '6.1.000' called SDE
include Status version '2.1.000' called Status

codesystem &quot;RXNORM&quot;: 'http://www.nlm.nih.gov/research/umls/rxnorm'

valueset &quot;Ambulatory&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.122.12.1003'
valueset &quot;Atomoxetine&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1170'
valueset &quot;Behavioral Health Follow up Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1054'
valueset &quot;Clonidine&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1171'
valueset &quot;Dexmethylphenidate&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1172'
valueset &quot;Dextroamphetamine&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1173'
valueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
valueset &quot;Guanfacine Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.11.1252'
valueset &quot;Home Healthcare Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016'
valueset &quot;Lisdexamfetamine&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1174'
valueset &quot;Mental Behavioral and Neurodevelopmental Disorders&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1203'
valueset &quot;Methylphenidate&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1176'
valueset &quot;Narcolepsy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.114.12.1011'
valueset &quot;Office Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'
valueset &quot;Outpatient Consultation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008'
valueset &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'
valueset &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'
valueset &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'
valueset &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'
valueset &quot;Psych Visit Diagnostic Evaluation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492'
valueset &quot;Psych Visit Psychotherapy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496'
valueset &quot;Psychotherapy and Pharmacologic Management&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1055'
valueset &quot;Telephone Visits&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080'
valueset &quot;Viloxazine&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1260'
valueset &quot;Virtual Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089'

code &quot;methamphetamine hydrochloride 5 MG Oral Tablet&quot;: '977860' from &quot;RXNORM&quot; display 'methamphetamine hydrochloride 5 MG Oral Tablet'

parameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;
  default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)

context Patient

define &quot;Initial Population 1&quot;:
  AgeInYearsAt(date from start of &quot;Intake Period&quot;) &gt;= 6
    and AgeInYearsAt(date from 
      end of &quot;Intake Period&quot;
    ) &lt;= 12
    and exists &quot;Qualifying Encounter&quot;
    and &quot;First ADHD Medication Prescribed During Intake Period&quot; is not null
    and not exists &quot;Inpatient Stay with Qualifying Diagnosis During Initiation Phase&quot;

define &quot;Intake Period&quot;:
  Interval[&quot;March 1 of Year Prior to Measurement Period&quot;, &quot;Last Calendar Day of February of Measurement Period&quot;]

define &quot;Last Calendar Day of February of Measurement Period&quot;:
  ( DateTime(year from start of &quot;Measurement Period&quot;, 3, 1, 23, 59, 59, 0, 0) ) - 1 day

define &quot;March 1 of Year Prior to Measurement Period&quot;:
  DateTime((year from start of &quot;Measurement Period&quot; - 1), 3, 1, 0, 0, 0, 0, 0)

define &quot;Qualifying Encounter&quot;:
  ( ( [Encounter: &quot;Office Visit&quot;]
      union [Encounter: &quot;Home Healthcare Services&quot;]
      union [Encounter: &quot;Preventive Care, Established Office Visit, 0 to 17&quot;]
      union [Encounter: &quot;Preventive Care Services, Initial Office Visit, 0 to 17&quot;]
  ).isEncounterPerformed ( ) ) ValidEncounters
    where CQMCommon.&quot;ToDateInterval&quot; ( ValidEncounters.period ) during day of Interval[&quot;IPSD&quot; - 6 months, &quot;IPSD&quot;]

    /*Index Prescription Start Date (IPSD)*/


define &quot;IPSD&quot;:
  &quot;First ADHD Medication Prescribed During Intake Period&quot;

define &quot;First ADHD Medication Prescribed During Intake Period&quot;:
  First(&quot;ADHD Medication Prescribed During Intake Period and Not Previously on ADHD Medication&quot;.startDate)

define &quot;ADHD Medication Prescribed During Intake Period and Not Previously on ADHD Medication&quot;:
  ( ( ( ( [MedicationRequest: &quot;Atomoxetine&quot;]
      union [MedicationRequest: &quot;Clonidine&quot;]
      union [MedicationRequest: &quot;Dexmethylphenidate&quot;]
      union [MedicationRequest: &quot;Dextroamphetamine&quot;]
      union [MedicationRequest: &quot;Lisdexamfetamine&quot;]
      union [MedicationRequest: &quot;methamphetamine hydrochloride 5 MG Oral Tablet&quot;]
      union [MedicationRequest: &quot;Methylphenidate&quot;]
      union [MedicationRequest: &quot;Guanfacine Medications&quot;]
      union [MedicationRequest: &quot;Viloxazine&quot;]
  ).isMedicationOrder ( ) ) ADHDMedications
    where ADHDMedications.medicationRequestPeriod ( ) starts during &quot;Intake Period&quot; ) ADHDMedicationOrder
    without ( ( [MedicationRequest: &quot;Atomoxetine&quot;]
        union [MedicationRequest: &quot;Clonidine&quot;]
        union [MedicationRequest: &quot;Dexmethylphenidate&quot;]
        union [MedicationRequest: &quot;Dextroamphetamine&quot;]
        union [MedicationRequest: &quot;Lisdexamfetamine&quot;]
        union [MedicationRequest: &quot;methamphetamine hydrochloride 5 MG Oral Tablet&quot;]
        union [MedicationRequest: &quot;Methylphenidate&quot;]
        union [MedicationRequest: &quot;Guanfacine Medications&quot;]
        union [MedicationRequest: &quot;Viloxazine&quot;]
    ).isMedicationActive ( ) ) ActiveADHDMedication
      such that ActiveADHDMedication.medicationRequestPeriod ( ) overlaps Interval[date from start of ADHDMedicationOrder.medicationRequestPeriod ( ) - 120 days, date from start of ADHDMedicationOrder.medicationRequestPeriod ( ) ) ) QualifyingMed
    return all {
      startDate: start of QualifyingMed.medicationRequestPeriod ( )
    }
    sort by startDate asc

define &quot;Inpatient Stay with Qualifying Diagnosis During Initiation Phase&quot;:
  &quot;Inpatient Stay with Qualifying Diagnosis&quot; InpatientStay
    where CQMCommon.&quot;ToDateInterval&quot; ( InpatientStay.period ) starts 30 days or less after day of &quot;IPSD&quot;

define &quot;Inpatient Stay with Qualifying Diagnosis&quot;:
  ( ( [Encounter: &quot;Encounter Inpatient&quot;] ).isEncounterPerformed ( ) ) InpatientStay
    where InpatientStay.hasPrincipalDiagnosisOf ( &quot;Mental Behavioral and Neurodevelopmental Disorders&quot; )

define &quot;Denominator 1&quot;:
  &quot;Initial Population 1&quot;

define &quot;Denominator Exclusions&quot;:
  Hospice.&quot;Has Hospice Services&quot;
    or exists &quot;Narcolepsy Exclusion&quot;

define &quot;Narcolepsy Exclusion&quot;:
  // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
  // Original:
  //   [ConditionProblemsHealthConcerns: &quot;Narcolepsy&quot;]
  //     union [ConditionEncounterDiagnosis: &quot;Narcolepsy&quot;]
  ( ( [FHIR.Condition: &quot;Narcolepsy&quot;] ).verified ( ) ) NarcolepsyDx
    where NarcolepsyDx.prevalenceInterval ( ) starts on or before end of &quot;Measurement Period&quot;

define &quot;Numerator 1&quot;:
  exists &quot;Encounter During Initiation Phase&quot;

define &quot;Encounter During Initiation Phase&quot;:
  ( &quot;Qualifying Numerator Encounter&quot;.isEncounterPerformed ( ) ) ValidNumeratorEncounter
    where CQMCommon.&quot;ToDateInterval&quot; ( ValidNumeratorEncounter.period ) starts 30 days or less after day of &quot;IPSD&quot;

define &quot;Qualifying Numerator Encounter&quot;:
  [Encounter: &quot;Office Visit&quot;]
    union [Encounter: &quot;Preventive Care Services Group Counseling&quot;]
    union [Encounter: &quot;Behavioral Health Follow up Visit&quot;]
    union [Encounter: &quot;Preventive Care Services Individual Counseling&quot;]
    union ( [Encounter: &quot;Psychotherapy and Pharmacologic Management&quot;] PsychPharmManagement
        where exists ( PsychPharmManagement.location Location
            where CQMCommon.&quot;GetLocation&quot; ( Location.location ).type in &quot;Ambulatory&quot;
        )
    )
    union [Encounter: &quot;Outpatient Consultation&quot;]
    union [Encounter: &quot;Home Healthcare Services&quot;]
    union [Encounter: &quot;Preventive Care Services, Initial Office Visit, 0 to 17&quot;]
    union [Encounter: &quot;Preventive Care, Established Office Visit, 0 to 17&quot;]
    union [Encounter: &quot;Psych Visit Diagnostic Evaluation&quot;]
    union [Encounter: &quot;Psych Visit Psychotherapy&quot;]
    union [Encounter: &quot;Telephone Visits&quot;]

define &quot;Initial Population 2&quot;:
  AgeInYearsAt(date from start of &quot;Intake Period&quot;) &gt;= 6
    and AgeInYearsAt(date from 
      end of &quot;Intake Period&quot;
    ) &lt;= 12
    and exists &quot;Qualifying Encounter&quot;
    and &quot;First ADHD Medication Prescribed During Intake Period&quot; is not null
    and &quot;Has ADHD Cumulative Medication Duration Greater Than or Equal to 210 Days&quot;
    and not exists &quot;Inpatient Stay with Qualifying Diagnosis During Continuation and Maintenance Phase&quot;

define &quot;Has ADHD Cumulative Medication Duration Greater Than or Equal to 210 Days&quot;:
  &quot;ADHD Cumulative Medication Duration&quot; &gt;= 210

define &quot;ADHD Cumulative Medication Duration&quot;:
  ( &quot;ADHD Medications Taken on IPSD or During Continuation and Maintenance Phase&quot; ).cumulativeDuration ( )

define &quot;Inpatient Stay with Qualifying Diagnosis During Continuation and Maintenance Phase&quot;:
  &quot;Inpatient Stay with Qualifying Diagnosis&quot; InpatientStay
    where CQMCommon.&quot;ToDateInterval&quot; ( InpatientStay.period ) starts 300 days or less after day of &quot;IPSD&quot;

define &quot;ADHD Medications Taken on IPSD or During Continuation and Maintenance Phase&quot;:
  ( ( ( ( ( ( [MedicationRequest: &quot;Atomoxetine&quot;] ).isMedicationOrder ( ) ) AtomoxetineMed
          return all {
            period: AtomoxetineMed.medicationRequestPeriod ( ),
            periodStart: start of AtomoxetineMed.medicationRequestPeriod ( )
          }
          sort by periodStart
      ).period
    ).rolloutIntervals ( )
  )
    union ( ( ( ( ( [MedicationRequest: &quot;Clonidine&quot;] ).isMedicationOrder ( ) ) ClonidineMed
            return all {
              period: ClonidineMed.medicationRequestPeriod ( ),
              periodStart: start of ClonidineMed.medicationRequestPeriod ( )
            }
            sort by periodStart
        ).period
      ).rolloutIntervals ( )
    )
    union ( ( ( ( ( [MedicationRequest: &quot;Dexmethylphenidate&quot;] ).isMedicationOrder ( ) ) DexmethylphenidateMed
            return all {
              period: DexmethylphenidateMed.medicationRequestPeriod ( ),
              periodStart: start of DexmethylphenidateMed.medicationRequestPeriod ( )
            }
            sort by periodStart
        ).period
      ).rolloutIntervals ( )
    )
    union ( ( ( ( ( [MedicationRequest: &quot;Dextroamphetamine&quot;] ).isMedicationOrder ( ) ) DextroamphetamineMed
            return all {
              period: DextroamphetamineMed.medicationRequestPeriod ( ),
              periodStart: start of DextroamphetamineMed.medicationRequestPeriod ( )
            }
            sort by periodStart
        ).period
      ).rolloutIntervals ( )
    )
    union ( ( ( ( ( [MedicationRequest: &quot;Lisdexamfetamine&quot;] ).isMedicationOrder ( ) ) LisdexamfetamineMed
            return all {
              period: LisdexamfetamineMed.medicationRequestPeriod ( ),
              periodStart: start of LisdexamfetamineMed.medicationRequestPeriod ( )
            }
            sort by periodStart
        ).period
      ).rolloutIntervals ( )
    )
    union ( ( ( ( ( [MedicationRequest: &quot;Methylphenidate&quot;] ).isMedicationOrder ( ) ) MethylphenidateMed
            return all {
              period: MethylphenidateMed.medicationRequestPeriod ( ),
              periodStart: start of MethylphenidateMed.medicationRequestPeriod ( )
            }
            sort by periodStart
        ).period
      ).rolloutIntervals ( )
    )
    union ( ( ( ( ( [MedicationRequest: &quot;Guanfacine Medications&quot;] ).isMedicationOrder ( ) ) GuanfacineMed
            return all {
              period: GuanfacineMed.medicationRequestPeriod ( ),
              periodStart: start of GuanfacineMed.medicationRequestPeriod ( )
            }
            sort by periodStart
        ).period
      ).rolloutIntervals ( )
    )
    union ( ( ( ( ( [MedicationRequest: &quot;methamphetamine hydrochloride 5 MG Oral Tablet&quot;] ).isMedicationOrder ( ) ) MethamphetamineMed
            return all {
              period: MethamphetamineMed.medicationRequestPeriod ( ),
              periodStart: start of MethamphetamineMed.medicationRequestPeriod ( )
            }
            sort by periodStart
        ).period
      ).rolloutIntervals ( )
    )
    union ( ( ( ( ( [MedicationRequest: &quot;Viloxazine&quot;] ).isMedicationOrder ( ) ) ViloxazineMed
            return all {
              period: ViloxazineMed.medicationRequestPeriod ( ),
              periodStart: start of ViloxazineMed.medicationRequestPeriod ( )
            }
            sort by periodStart
        ).period
      ).rolloutIntervals ( )
    ) ) ADHDMedication
    let IPSDAndContinuationMaintenancePhase: Interval[&quot;IPSD&quot;, &quot;IPSD&quot; + 300 days]
    return all ADHDMedication
      intersect IPSDAndContinuationMaintenancePhase

define &quot;Denominator 2&quot;:
  &quot;Initial Population 2&quot;

define &quot;Numerator 2&quot;:
  exists &quot;Encounter During Initiation Phase&quot;
    and ( &quot;Two or More Encounters 31 to 300 Days into Continuation and Maintenance Phase&quot;
        or ( exists &quot;Encounter 31 to 300 Days into Continuation and Maintenance Phase&quot; Encounter1
            with &quot;Virtual Encounter 31 to 300 Days into Continuation and Maintenance Phase&quot; Encounter2
              such that Encounter1 is not null
                and Encounter2 is not null
                and Encounter1 !~ Encounter2
        )
    )

define &quot;Two or More Encounters 31 to 300 Days into Continuation and Maintenance Phase&quot;:
  Count(&quot;Encounter 31 to 300 Days into Continuation and Maintenance Phase&quot;) &gt;= 2

define &quot;Encounter 31 to 300 Days into Continuation and Maintenance Phase&quot;:
  ( &quot;Qualifying Numerator Encounter&quot;.isEncounterPerformed ( ) ) ValidNumeratorEncounter
    where CQMCommon.&quot;ToDateInterval&quot; ( ValidNumeratorEncounter.period ) starts during day of Interval[&quot;IPSD&quot; + 31 days, &quot;IPSD&quot; + 300 days]
    return date from start of ValidNumeratorEncounter.period

define &quot;Virtual Encounter 31 to 300 Days into Continuation and Maintenance Phase&quot;:
  ( ( [Encounter: &quot;Virtual Encounter&quot;] ).isEncounterPerformed ( ) ) VirtualEnc
    where CQMCommon.&quot;ToDateInterval&quot; ( VirtualEnc.period ) starts during day of Interval[&quot;IPSD&quot; + 31 days, &quot;IPSD&quot; + 300 days]
    return date from start of VirtualEnc.period

define &quot;SDE Ethnicity&quot;:
  SDE.&quot;SDE Ethnicity&quot;

define &quot;SDE Payer&quot;:
  SDE.&quot;SDE Payer&quot;

define &quot;SDE Race&quot;:
  SDE.&quot;SDE Race&quot;

define &quot;SDE Sex&quot;:
  SDE.&quot;SDE Sex&quot;</code></pre>
      </td>
    </tr>
    
  



<tr>
  <th colspan="2" scope="row" class="row-header">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>
</tr>

    </tbody>
  </table>
</div>
  </text>
  <extension
             url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem">
    <valueReference>
      <reference value="Device/cqf-tooling"/>
    </valueReference>
  </extension>
  <url value="https://madie.cms.gov/Library/CMS136FHIRChildADHDMedFollowUp"/>
  <version value="1.1.000"/>
  <name value="CMS136FHIRChildADHDMedFollowUp"/>
  <status value="draft"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2026-09-19T16:31:14+00:00"/>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMzZGSElSQ2hpbGRBREhETWVkRm9sbG93VXAgdmVyc2lvbiAnMS4xLjAwMCcKCnVzaW5nIFVTUXVhbGl0eUNvcmUgdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcKdXNpbmcgVVNDb3JlIHZlcnNpb24gJzYuMS4wLWRlcml2ZWQnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJDb21tb24gdmVyc2lvbiAnMi4wLjAnIGNhbGxlZCBGSElSQ29tbW9uCmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLkN1bXVsYXRpdmVNZWRpY2F0aW9uRHVyYXRpb24gdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgQ01ECmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLlVTQ29yZUNvbW1vbiB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlRWxlbWVudHMgdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgVVNDb3JlRWxlbWVudHMKCmluY2x1ZGUgSG9zcGljZSB2ZXJzaW9uICc3LjEuMDAwJyBjYWxsZWQgSG9zcGljZQppbmNsdWRlIENRTUNvbW1vbiB2ZXJzaW9uICc1LjEuMDAwJyBjYWxsZWQgQ1FNQ29tbW9uCmluY2x1ZGUgVVNRdWFsaXR5Q29yZUNvbW1vbiB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJyBjYWxsZWQgVVNRdWFsaXR5Q29yZUNvbW1vbgppbmNsdWRlIFN1cHBsZW1lbnRhbERhdGFFbGVtZW50cyB2ZXJzaW9uICc2LjEuMDAwJyBjYWxsZWQgU0RFCmluY2x1ZGUgU3RhdHVzIHZlcnNpb24gJzIuMS4wMDAnIGNhbGxlZCBTdGF0dXMKCmNvZGVzeXN0ZW0gIlJYTk9STSI6ICdodHRwOi8vd3d3Lm5sbS5uaWguZ292L3Jlc2VhcmNoL3VtbHMvcnhub3JtJwoKdmFsdWVzZXQgIkFtYnVsYXRvcnkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTIyLjEyLjEwMDMnCnZhbHVlc2V0ICJBdG9tb3hldGluZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTcwJwp2YWx1ZXNldCAiQmVoYXZpb3JhbCBIZWFsdGggRm9sbG93IHVwIFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDU0Jwp2YWx1ZXNldCAiQ2xvbmlkaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNzEnCnZhbHVlc2V0ICJEZXhtZXRoeWxwaGVuaWRhdGUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTE3MicKdmFsdWVzZXQgIkRleHRyb2FtcGhldGFtaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNzMnCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycKdmFsdWVzZXQgIkd1YW5mYWNpbmUgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk2LjExLjEyNTInCnZhbHVlc2V0ICJIb21lIEhlYWx0aGNhcmUgU2VydmljZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMTYnCnZhbHVlc2V0ICJMaXNkZXhhbWZldGFtaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNzQnCnZhbHVlc2V0ICJNZW50YWwgQmVoYXZpb3JhbCBhbmQgTmV1cm9kZXZlbG9wbWVudGFsIERpc29yZGVycyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDUuMTIuMTIwMycKdmFsdWVzZXQgIk1ldGh5bHBoZW5pZGF0ZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTc2Jwp2YWx1ZXNldCAiTmFyY29sZXBzeSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTQuMTIuMTAxMScKdmFsdWVzZXQgIk9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMScKdmFsdWVzZXQgIk91dHBhdGllbnQgQ29uc3VsdGF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDA4Jwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEdyb3VwIENvdW5zZWxpbmciOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMjcnCnZhbHVlc2V0ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5kaXZpZHVhbCBDb3Vuc2VsaW5nIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI2Jwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzLCBJbml0aWFsIE9mZmljZSBWaXNpdCwgMCB0byAxNyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyMicKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSwgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI0Jwp2YWx1ZXNldCAiUHN5Y2ggVmlzaXQgRGlhZ25vc3RpYyBFdmFsdWF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE0OTInCnZhbHVlc2V0ICJQc3ljaCBWaXNpdCBQc3ljaG90aGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE0OTYnCnZhbHVlc2V0ICJQc3ljaG90aGVyYXB5IGFuZCBQaGFybWFjb2xvZ2ljIE1hbmFnZW1lbnQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwNTUnCnZhbHVlc2V0ICJUZWxlcGhvbmUgVmlzaXRzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDgwJwp2YWx1ZXNldCAiVmlsb3hhemluZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMjYwJwp2YWx1ZXNldCAiVmlydHVhbCBFbmNvdW50ZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwODknCgpjb2RlICJtZXRoYW1waGV0YW1pbmUgaHlkcm9jaGxvcmlkZSA1IE1HIE9yYWwgVGFibGV0IjogJzk3Nzg2MCcgZnJvbSAiUlhOT1JNIiBkaXNwbGF5ICdtZXRoYW1waGV0YW1pbmUgaHlkcm9jaGxvcmlkZSA1IE1HIE9yYWwgVGFibGV0JwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMSI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZiAiSW50YWtlIFBlcmlvZCIpID49IDYKICAgIGFuZCBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIAogICAgICBlbmQgb2YgIkludGFrZSBQZXJpb2QiCiAgICApIDw9IDEyCiAgICBhbmQgZXhpc3RzICJRdWFsaWZ5aW5nIEVuY291bnRlciIKICAgIGFuZCAiRmlyc3QgQURIRCBNZWRpY2F0aW9uIFByZXNjcmliZWQgRHVyaW5nIEludGFrZSBQZXJpb2QiIGlzIG5vdCBudWxsCiAgICBhbmQgbm90IGV4aXN0cyAiSW5wYXRpZW50IFN0YXkgd2l0aCBRdWFsaWZ5aW5nIERpYWdub3NpcyBEdXJpbmcgSW5pdGlhdGlvbiBQaGFzZSIKCmRlZmluZSAiSW50YWtlIFBlcmlvZCI6CiAgSW50ZXJ2YWxbIk1hcmNoIDEgb2YgWWVhciBQcmlvciB0byBNZWFzdXJlbWVudCBQZXJpb2QiLCAiTGFzdCBDYWxlbmRhciBEYXkgb2YgRmVicnVhcnkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIl0KCmRlZmluZSAiTGFzdCBDYWxlbmRhciBEYXkgb2YgRmVicnVhcnkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICAoIERhdGVUaW1lKHllYXIgZnJvbSBzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiwgMywgMSwgMjMsIDU5LCA1OSwgMCwgMCkgKSAtIDEgZGF5CgpkZWZpbmUgIk1hcmNoIDEgb2YgWWVhciBQcmlvciB0byBNZWFzdXJlbWVudCBQZXJpb2QiOgogIERhdGVUaW1lKCh5ZWFyIGZyb20gc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAxKSwgMywgMSwgMCwgMCwgMCwgMCwgMCkKCmRlZmluZSAiUXVhbGlmeWluZyBFbmNvdW50ZXIiOgogICggKCBbRW5jb3VudGVyOiAiT2ZmaWNlIFZpc2l0Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkhvbWUgSGVhbHRoY2FyZSBTZXJ2aWNlcyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUsIEVzdGFibGlzaGVkIE9mZmljZSBWaXNpdCwgMCB0byAxNyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMsIEluaXRpYWwgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3Il0KICApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIFZhbGlkRW5jb3VudGVycwogICAgd2hlcmUgQ1FNQ29tbW9uLiJUb0RhdGVJbnRlcnZhbCIgKCBWYWxpZEVuY291bnRlcnMucGVyaW9kICkgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFsiSVBTRCIgLSA2IG1vbnRocywgIklQU0QiXQoKICAgIC8qSW5kZXggUHJlc2NyaXB0aW9uIFN0YXJ0IERhdGUgKElQU0QpKi8KCgpkZWZpbmUgIklQU0QiOgogICJGaXJzdCBBREhEIE1lZGljYXRpb24gUHJlc2NyaWJlZCBEdXJpbmcgSW50YWtlIFBlcmlvZCIKCmRlZmluZSAiRmlyc3QgQURIRCBNZWRpY2F0aW9uIFByZXNjcmliZWQgRHVyaW5nIEludGFrZSBQZXJpb2QiOgogIEZpcnN0KCJBREhEIE1lZGljYXRpb24gUHJlc2NyaWJlZCBEdXJpbmcgSW50YWtlIFBlcmlvZCBhbmQgTm90IFByZXZpb3VzbHkgb24gQURIRCBNZWRpY2F0aW9uIi5zdGFydERhdGUpCgpkZWZpbmUgIkFESEQgTWVkaWNhdGlvbiBQcmVzY3JpYmVkIER1cmluZyBJbnRha2UgUGVyaW9kIGFuZCBOb3QgUHJldmlvdXNseSBvbiBBREhEIE1lZGljYXRpb24iOgogICggKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiQXRvbW94ZXRpbmUiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJDbG9uaWRpbmUiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJEZXhtZXRoeWxwaGVuaWRhdGUiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJEZXh0cm9hbXBoZXRhbWluZSJdCiAgICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIkxpc2RleGFtZmV0YW1pbmUiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJtZXRoYW1waGV0YW1pbmUgaHlkcm9jaGxvcmlkZSA1IE1HIE9yYWwgVGFibGV0Il0KICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiTWV0aHlscGhlbmlkYXRlIl0KICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiR3VhbmZhY2luZSBNZWRpY2F0aW9ucyJdCiAgICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIlZpbG94YXppbmUiXQogICkuaXNNZWRpY2F0aW9uT3JkZXIgKCApICkgQURIRE1lZGljYXRpb25zCiAgICB3aGVyZSBBREhETWVkaWNhdGlvbnMubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApIHN0YXJ0cyBkdXJpbmcgIkludGFrZSBQZXJpb2QiICkgQURIRE1lZGljYXRpb25PcmRlcgogICAgd2l0aG91dCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiQXRvbW94ZXRpbmUiXQogICAgICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIkNsb25pZGluZSJdCiAgICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiRGV4bWV0aHlscGhlbmlkYXRlIl0KICAgICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJEZXh0cm9hbXBoZXRhbWluZSJdCiAgICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiTGlzZGV4YW1mZXRhbWluZSJdCiAgICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAibWV0aGFtcGhldGFtaW5lIGh5ZHJvY2hsb3JpZGUgNSBNRyBPcmFsIFRhYmxldCJdCiAgICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiTWV0aHlscGhlbmlkYXRlIl0KICAgICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJHdWFuZmFjaW5lIE1lZGljYXRpb25zIl0KICAgICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJWaWxveGF6aW5lIl0KICAgICkuaXNNZWRpY2F0aW9uQWN0aXZlICggKSApIEFjdGl2ZUFESERNZWRpY2F0aW9uCiAgICAgIHN1Y2ggdGhhdCBBY3RpdmVBREhETWVkaWNhdGlvbi5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICkgb3ZlcmxhcHMgSW50ZXJ2YWxbZGF0ZSBmcm9tIHN0YXJ0IG9mIEFESERNZWRpY2F0aW9uT3JkZXIubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApIC0gMTIwIGRheXMsIGRhdGUgZnJvbSBzdGFydCBvZiBBREhETWVkaWNhdGlvbk9yZGVyLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKSApICkgUXVhbGlmeWluZ01lZAogICAgcmV0dXJuIGFsbCB7CiAgICAgIHN0YXJ0RGF0ZTogc3RhcnQgb2YgUXVhbGlmeWluZ01lZC5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICkKICAgIH0KICAgIHNvcnQgYnkgc3RhcnREYXRlIGFzYwoKZGVmaW5lICJJbnBhdGllbnQgU3RheSB3aXRoIFF1YWxpZnlpbmcgRGlhZ25vc2lzIER1cmluZyBJbml0aWF0aW9uIFBoYXNlIjoKICAiSW5wYXRpZW50IFN0YXkgd2l0aCBRdWFsaWZ5aW5nIERpYWdub3NpcyIgSW5wYXRpZW50U3RheQogICAgd2hlcmUgQ1FNQ29tbW9uLiJUb0RhdGVJbnRlcnZhbCIgKCBJbnBhdGllbnRTdGF5LnBlcmlvZCApIHN0YXJ0cyAzMCBkYXlzIG9yIGxlc3MgYWZ0ZXIgZGF5IG9mICJJUFNEIgoKZGVmaW5lICJJbnBhdGllbnQgU3RheSB3aXRoIFF1YWxpZnlpbmcgRGlhZ25vc2lzIjoKICAoICggW0VuY291bnRlcjogIkVuY291bnRlciBJbnBhdGllbnQiXSApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIElucGF0aWVudFN0YXkKICAgIHdoZXJlIElucGF0aWVudFN0YXkuaGFzUHJpbmNpcGFsRGlhZ25vc2lzT2YgKCAiTWVudGFsIEJlaGF2aW9yYWwgYW5kIE5ldXJvZGV2ZWxvcG1lbnRhbCBEaXNvcmRlcnMiICkKCmRlZmluZSAiRGVub21pbmF0b3IgMSI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiAxIgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNsdXNpb25zIjoKICBIb3NwaWNlLiJIYXMgSG9zcGljZSBTZXJ2aWNlcyIKICAgIG9yIGV4aXN0cyAiTmFyY29sZXBzeSBFeGNsdXNpb24iCgpkZWZpbmUgIk5hcmNvbGVwc3kgRXhjbHVzaW9uIjoKICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAvLyBPcmlnaW5hbDoKICAvLyAgIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiTmFyY29sZXBzeSJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJOYXJjb2xlcHN5Il0KICAoICggW0ZISVIuQ29uZGl0aW9uOiAiTmFyY29sZXBzeSJdICkudmVyaWZpZWQgKCApICkgTmFyY29sZXBzeUR4CiAgICB3aGVyZSBOYXJjb2xlcHN5RHgucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgb24gb3IgYmVmb3JlIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJOdW1lcmF0b3IgMSI6CiAgZXhpc3RzICJFbmNvdW50ZXIgRHVyaW5nIEluaXRpYXRpb24gUGhhc2UiCgpkZWZpbmUgIkVuY291bnRlciBEdXJpbmcgSW5pdGlhdGlvbiBQaGFzZSI6CiAgKCAiUXVhbGlmeWluZyBOdW1lcmF0b3IgRW5jb3VudGVyIi5pc0VuY291bnRlclBlcmZvcm1lZCAoICkgKSBWYWxpZE51bWVyYXRvckVuY291bnRlcgogICAgd2hlcmUgQ1FNQ29tbW9uLiJUb0RhdGVJbnRlcnZhbCIgKCBWYWxpZE51bWVyYXRvckVuY291bnRlci5wZXJpb2QgKSBzdGFydHMgMzAgZGF5cyBvciBsZXNzIGFmdGVyIGRheSBvZiAiSVBTRCIKCmRlZmluZSAiUXVhbGlmeWluZyBOdW1lcmF0b3IgRW5jb3VudGVyIjoKICBbRW5jb3VudGVyOiAiT2ZmaWNlIFZpc2l0Il0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgR3JvdXAgQ291bnNlbGluZyJdCiAgICB1bmlvbiBbRW5jb3VudGVyOiAiQmVoYXZpb3JhbCBIZWFsdGggRm9sbG93IHVwIFZpc2l0Il0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5kaXZpZHVhbCBDb3Vuc2VsaW5nIl0KICAgIHVuaW9uICggW0VuY291bnRlcjogIlBzeWNob3RoZXJhcHkgYW5kIFBoYXJtYWNvbG9naWMgTWFuYWdlbWVudCJdIFBzeWNoUGhhcm1NYW5hZ2VtZW50CiAgICAgICAgd2hlcmUgZXhpc3RzICggUHN5Y2hQaGFybU1hbmFnZW1lbnQubG9jYXRpb24gTG9jYXRpb24KICAgICAgICAgICAgd2hlcmUgQ1FNQ29tbW9uLiJHZXRMb2NhdGlvbiIgKCBMb2NhdGlvbi5sb2NhdGlvbiApLnR5cGUgaW4gIkFtYnVsYXRvcnkiCiAgICAgICAgKQogICAgKQogICAgdW5pb24gW0VuY291bnRlcjogIk91dHBhdGllbnQgQ29uc3VsdGF0aW9uIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJIb21lIEhlYWx0aGNhcmUgU2VydmljZXMiXQogICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcywgSW5pdGlhbCBPZmZpY2UgVmlzaXQsIDAgdG8gMTciXQogICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSwgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3Il0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQc3ljaCBWaXNpdCBEaWFnbm9zdGljIEV2YWx1YXRpb24iXQogICAgdW5pb24gW0VuY291bnRlcjogIlBzeWNoIFZpc2l0IFBzeWNob3RoZXJhcHkiXQogICAgdW5pb24gW0VuY291bnRlcjogIlRlbGVwaG9uZSBWaXNpdHMiXQoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMiI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZiAiSW50YWtlIFBlcmlvZCIpID49IDYKICAgIGFuZCBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIAogICAgICBlbmQgb2YgIkludGFrZSBQZXJpb2QiCiAgICApIDw9IDEyCiAgICBhbmQgZXhpc3RzICJRdWFsaWZ5aW5nIEVuY291bnRlciIKICAgIGFuZCAiRmlyc3QgQURIRCBNZWRpY2F0aW9uIFByZXNjcmliZWQgRHVyaW5nIEludGFrZSBQZXJpb2QiIGlzIG5vdCBudWxsCiAgICBhbmQgIkhhcyBBREhEIEN1bXVsYXRpdmUgTWVkaWNhdGlvbiBEdXJhdGlvbiBHcmVhdGVyIFRoYW4gb3IgRXF1YWwgdG8gMjEwIERheXMiCiAgICBhbmQgbm90IGV4aXN0cyAiSW5wYXRpZW50IFN0YXkgd2l0aCBRdWFsaWZ5aW5nIERpYWdub3NpcyBEdXJpbmcgQ29udGludWF0aW9uIGFuZCBNYWludGVuYW5jZSBQaGFzZSIKCmRlZmluZSAiSGFzIEFESEQgQ3VtdWxhdGl2ZSBNZWRpY2F0aW9uIER1cmF0aW9uIEdyZWF0ZXIgVGhhbiBvciBFcXVhbCB0byAyMTAgRGF5cyI6CiAgIkFESEQgQ3VtdWxhdGl2ZSBNZWRpY2F0aW9uIER1cmF0aW9uIiA+PSAyMTAKCmRlZmluZSAiQURIRCBDdW11bGF0aXZlIE1lZGljYXRpb24gRHVyYXRpb24iOgogICggIkFESEQgTWVkaWNhdGlvbnMgVGFrZW4gb24gSVBTRCBvciBEdXJpbmcgQ29udGludWF0aW9uIGFuZCBNYWludGVuYW5jZSBQaGFzZSIgKS5jdW11bGF0aXZlRHVyYXRpb24gKCApCgpkZWZpbmUgIklucGF0aWVudCBTdGF5IHdpdGggUXVhbGlmeWluZyBEaWFnbm9zaXMgRHVyaW5nIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiOgogICJJbnBhdGllbnQgU3RheSB3aXRoIFF1YWxpZnlpbmcgRGlhZ25vc2lzIiBJbnBhdGllbnRTdGF5CiAgICB3aGVyZSBDUU1Db21tb24uIlRvRGF0ZUludGVydmFsIiAoIElucGF0aWVudFN0YXkucGVyaW9kICkgc3RhcnRzIDMwMCBkYXlzIG9yIGxlc3MgYWZ0ZXIgZGF5IG9mICJJUFNEIgoKZGVmaW5lICJBREhEIE1lZGljYXRpb25zIFRha2VuIG9uIElQU0Qgb3IgRHVyaW5nIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiOgogICggKCAoICggKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIkF0b21veGV0aW5lIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBBdG9tb3hldGluZU1lZAogICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgIHBlcmlvZDogQXRvbW94ZXRpbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICBwZXJpb2RTdGFydDogc3RhcnQgb2YgQXRvbW94ZXRpbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICB9CiAgICAgICAgICBzb3J0IGJ5IHBlcmlvZFN0YXJ0CiAgICAgICkucGVyaW9kCiAgICApLnJvbGxvdXRJbnRlcnZhbHMgKCApCiAgKQogICAgdW5pb24gKCAoICggKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIkNsb25pZGluZSJdICkuaXNNZWRpY2F0aW9uT3JkZXIgKCApICkgQ2xvbmlkaW5lTWVkCiAgICAgICAgICAgIHJldHVybiBhbGwgewogICAgICAgICAgICAgIHBlcmlvZDogQ2xvbmlkaW5lTWVkLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKSwKICAgICAgICAgICAgICBwZXJpb2RTdGFydDogc3RhcnQgb2YgQ2xvbmlkaW5lTWVkLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNvcnQgYnkgcGVyaW9kU3RhcnQKICAgICAgICApLnBlcmlvZAogICAgICApLnJvbGxvdXRJbnRlcnZhbHMgKCApCiAgICApCiAgICB1bmlvbiAoICggKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiRGV4bWV0aHlscGhlbmlkYXRlIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBEZXhtZXRoeWxwaGVuaWRhdGVNZWQKICAgICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgICAgcGVyaW9kOiBEZXhtZXRoeWxwaGVuaWRhdGVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICAgIHBlcmlvZFN0YXJ0OiBzdGFydCBvZiBEZXhtZXRoeWxwaGVuaWRhdGVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkKICAgIHVuaW9uICggKCAoICggKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJEZXh0cm9hbXBoZXRhbWluZSJdICkuaXNNZWRpY2F0aW9uT3JkZXIgKCApICkgRGV4dHJvYW1waGV0YW1pbmVNZWQKICAgICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgICAgcGVyaW9kOiBEZXh0cm9hbXBoZXRhbWluZU1lZC5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICksCiAgICAgICAgICAgICAgcGVyaW9kU3RhcnQ6IHN0YXJ0IG9mIERleHRyb2FtcGhldGFtaW5lTWVkLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNvcnQgYnkgcGVyaW9kU3RhcnQKICAgICAgICApLnBlcmlvZAogICAgICApLnJvbGxvdXRJbnRlcnZhbHMgKCApCiAgICApCiAgICB1bmlvbiAoICggKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiTGlzZGV4YW1mZXRhbWluZSJdICkuaXNNZWRpY2F0aW9uT3JkZXIgKCApICkgTGlzZGV4YW1mZXRhbWluZU1lZAogICAgICAgICAgICByZXR1cm4gYWxsIHsKICAgICAgICAgICAgICBwZXJpb2Q6IExpc2RleGFtZmV0YW1pbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICAgIHBlcmlvZFN0YXJ0OiBzdGFydCBvZiBMaXNkZXhhbWZldGFtaW5lTWVkLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNvcnQgYnkgcGVyaW9kU3RhcnQKICAgICAgICApLnBlcmlvZAogICAgICApLnJvbGxvdXRJbnRlcnZhbHMgKCApCiAgICApCiAgICB1bmlvbiAoICggKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiTWV0aHlscGhlbmlkYXRlIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBNZXRoeWxwaGVuaWRhdGVNZWQKICAgICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgICAgcGVyaW9kOiBNZXRoeWxwaGVuaWRhdGVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICAgIHBlcmlvZFN0YXJ0OiBzdGFydCBvZiBNZXRoeWxwaGVuaWRhdGVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkKICAgIHVuaW9uICggKCAoICggKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJHdWFuZmFjaW5lIE1lZGljYXRpb25zIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBHdWFuZmFjaW5lTWVkCiAgICAgICAgICAgIHJldHVybiBhbGwgewogICAgICAgICAgICAgIHBlcmlvZDogR3VhbmZhY2luZU1lZC5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICksCiAgICAgICAgICAgICAgcGVyaW9kU3RhcnQ6IHN0YXJ0IG9mIEd1YW5mYWNpbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkKICAgIHVuaW9uICggKCAoICggKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJtZXRoYW1waGV0YW1pbmUgaHlkcm9jaGxvcmlkZSA1IE1HIE9yYWwgVGFibGV0Il0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBNZXRoYW1waGV0YW1pbmVNZWQKICAgICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgICAgcGVyaW9kOiBNZXRoYW1waGV0YW1pbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICAgIHBlcmlvZFN0YXJ0OiBzdGFydCBvZiBNZXRoYW1waGV0YW1pbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkKICAgIHVuaW9uICggKCAoICggKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJWaWxveGF6aW5lIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBWaWxveGF6aW5lTWVkCiAgICAgICAgICAgIHJldHVybiBhbGwgewogICAgICAgICAgICAgIHBlcmlvZDogVmlsb3hhemluZU1lZC5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICksCiAgICAgICAgICAgICAgcGVyaW9kU3RhcnQ6IHN0YXJ0IG9mIFZpbG94YXppbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkgKSBBREhETWVkaWNhdGlvbgogICAgbGV0IElQU0RBbmRDb250aW51YXRpb25NYWludGVuYW5jZVBoYXNlOiBJbnRlcnZhbFsiSVBTRCIsICJJUFNEIiArIDMwMCBkYXlzXQogICAgcmV0dXJuIGFsbCBBREhETWVkaWNhdGlvbgogICAgICBpbnRlcnNlY3QgSVBTREFuZENvbnRpbnVhdGlvbk1haW50ZW5hbmNlUGhhc2UKCmRlZmluZSAiRGVub21pbmF0b3IgMiI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiAyIgoKZGVmaW5lICJOdW1lcmF0b3IgMiI6CiAgZXhpc3RzICJFbmNvdW50ZXIgRHVyaW5nIEluaXRpYXRpb24gUGhhc2UiCiAgICBhbmQgKCAiVHdvIG9yIE1vcmUgRW5jb3VudGVycyAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiCiAgICAgICAgb3IgKCBleGlzdHMgIkVuY291bnRlciAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiIEVuY291bnRlcjEKICAgICAgICAgICAgd2l0aCAiVmlydHVhbCBFbmNvdW50ZXIgMzEgdG8gMzAwIERheXMgaW50byBDb250aW51YXRpb24gYW5kIE1haW50ZW5hbmNlIFBoYXNlIiBFbmNvdW50ZXIyCiAgICAgICAgICAgICAgc3VjaCB0aGF0IEVuY291bnRlcjEgaXMgbm90IG51bGwKICAgICAgICAgICAgICAgIGFuZCBFbmNvdW50ZXIyIGlzIG5vdCBudWxsCiAgICAgICAgICAgICAgICBhbmQgRW5jb3VudGVyMSAhfiBFbmNvdW50ZXIyCiAgICAgICAgKQogICAgKQoKZGVmaW5lICJUd28gb3IgTW9yZSBFbmNvdW50ZXJzIDMxIHRvIDMwMCBEYXlzIGludG8gQ29udGludWF0aW9uIGFuZCBNYWludGVuYW5jZSBQaGFzZSI6CiAgQ291bnQoIkVuY291bnRlciAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiKSA+PSAyCgpkZWZpbmUgIkVuY291bnRlciAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiOgogICggIlF1YWxpZnlpbmcgTnVtZXJhdG9yIEVuY291bnRlciIuaXNFbmNvdW50ZXJQZXJmb3JtZWQgKCApICkgVmFsaWROdW1lcmF0b3JFbmNvdW50ZXIKICAgIHdoZXJlIENRTUNvbW1vbi4iVG9EYXRlSW50ZXJ2YWwiICggVmFsaWROdW1lcmF0b3JFbmNvdW50ZXIucGVyaW9kICkgc3RhcnRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbIklQU0QiICsgMzEgZGF5cywgIklQU0QiICsgMzAwIGRheXNdCiAgICByZXR1cm4gZGF0ZSBmcm9tIHN0YXJ0IG9mIFZhbGlkTnVtZXJhdG9yRW5jb3VudGVyLnBlcmlvZAoKZGVmaW5lICJWaXJ0dWFsIEVuY291bnRlciAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiOgogICggKCBbRW5jb3VudGVyOiAiVmlydHVhbCBFbmNvdW50ZXIiXSApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIFZpcnR1YWxFbmMKICAgIHdoZXJlIENRTUNvbW1vbi4iVG9EYXRlSW50ZXJ2YWwiICggVmlydHVhbEVuYy5wZXJpb2QgKSBzdGFydHMgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFsiSVBTRCIgKyAzMSBkYXlzLCAiSVBTRCIgKyAzMDAgZGF5c10KICAgIHJldHVybiBkYXRlIGZyb20gc3RhcnQgb2YgVmlydHVhbEVuYy5wZXJpb2QKCmRlZmluZSAiU0RFIEV0aG5pY2l0eSI6CiAgU0RFLiJTREUgRXRobmljaXR5IgoKZGVmaW5lICJTREUgUGF5ZXIiOgogIFNERS4iU0RFIFBheWVyIgoKZGVmaW5lICJTREUgUmFjZSI6CiAgU0RFLiJTREUgUmFjZSIKCmRlZmluZSAiU0RFIFNleCI6CiAgU0RFLiJTREUgU2V4Ig=="/>
    <url
         value="https://madie.cms.gov/Library-CMS136FHIRChildADHDMedFollowUp.cql"/>
  </content>
</Library>