CDC National Healthcare Safety Network (NHSN) Digital Quality Measures (dQM) Content Package IG
3.0.0 - Release 3 - draft United States of America flag

CDC National Healthcare Safety Network (NHSN) Digital Quality Measures (dQM) Content Package IG - Local Development build (v3.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

: NHSN Acute Care Hospital Monthly Initial Population Library - JSON Representation

Page standards status: Trial-use Maturity Level: 2

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "NHSNAcuteCareHospitalMonthlyInitialPopulation",
  "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\">Metadata</th>\n\n\n</tr>\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Version</th>\n\n\n\n<td class=\"content-container\">3.0.0</td>\n\n\n</tr>\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<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Jurisdiction</th>\n\n\n\n<td class=\"content-container\">\n    US from <a href=\"https://en.wikipedia.org/wiki/ISO_3166-2\">urn:iso:std:iso:3166</a> \n\n\n</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Steward (Publisher)</th>\n\n\n\n<td class=\"content-container\">CDC National Healthcare Safety Network (NHSN)</td>\n\n\n</tr>\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Steward Contact</th>\n\n\n\n<td class=\"content-container\">CDC National Healthcare Safety Network (NHSN)</td>\n\n\n</tr>\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    logic-library from <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a> \n\n\n</td>\n\n\n</tr>\n\n\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Library FHIRHelpers\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <code>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2</code>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Library NHSNHelpers\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <code>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002</code>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Library SharedResource\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <code>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010-cibuild</code>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010-cibuild</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Code system ActCode\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-v3-ActCode.html\">ActCode</a> version: 10.0.0\n    <br/>\n    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/v3-ActCode|10.0.0</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Code system Observation Category\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-observation-category.html\">Observation Category Codes</a> version: 2.0.0\n    <br/>\n    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/observation-category|2.0.0</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Code system LOINC\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"http://terminology.hl7.org/6.5.0/CodeSystem-v3-loinc.html\">Logical Observation Identifiers, Names and Codes (LOINC)</a>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://loinc.org</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Code system V2-0074\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-v2-0074.html\">diagnosticServiceSectionId</a> version: 3.0.0\n    <br/>\n    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/v2-0074|3.0.0</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Code system Condition Category\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-condition-category.html\">Condition Category Codes</a> version: 2.0.0\n    <br/>\n    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/condition-category|2.0.0</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Code system US Core Condition Category\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"http://hl7.org/fhir/us/core/STU6.1/CodeSystem-condition-category.html\">US Core Condition Category Extension Codes</a> version: 6.1.0\n    <br/>\n    <em>Canonical URL</em>: <tt>http://hl7.org/fhir/us/core/CodeSystem/condition-category|6.1.0</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Code system Condition Clinical Status\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-condition-clinical.html\">Condition Clinical Status Codes</a> version: 3.0.0\n    <br/>\n    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/condition-clinical|3.0.0</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Code system SNOMEDCT\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"http://hl7.org/fhir/R4/codesystem-snomedct.html\">SNOMED CT (all versions)</a>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://snomed.info/sct</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Code system MedicationRequest Category\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-medicationrequest-category.html\">MedicationRequest Category Codes</a> version: 2.0.0\n    <br/>\n    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/medicationrequest-category|2.0.0</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Value set Inpatient, Emergency, and Observation Locations\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.265/expansion\">Inpatient, Emergency, and Observation Locations</a>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Value set Emergency Department Visit\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.117.1.7.1.292/expansion\">Emergency Department Visit</a>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Value set Encounter Inpatient\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion\">Encounter Inpatient</a>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Value set Observation Services\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1111.143/expansion\">Observation Services</a>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143</tt>\n    \n    \n    \n  </td>\n</tr>\n\n<tr>\n  \n  \n  \n  \n  \n\n<th scope=\"row\" class=\"row-header\">Dependency</th>\n\n\n  \n  \n  <td class=\"content-container\">\n    \n    <em>Description</em>: Value set NHSN Inpatient Encounter Class Codes\n    \n    <br/>\n    \n    \n    \n    \n    \n    \n    <em>Resource</em>: <a href=\"https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.274/expansion\">NHSN Inpatient Encounter Class Codes</a>\n    <br/>\n    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274</tt>\n    \n    \n    \n  </td>\n</tr>\n\n\n\n\n\n\n\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Patient\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/patient.html\">Patient</a>\n    <br/>        \n  \n   \n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Encounter\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/encounter.html\">Encounter</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: type, status, period, location, diagnosis, id, extension, identifier, statusHistory, class, classHistory, subject, reasonCode, hospitalization, partOf\n    <br/>\n   \n  \n    <em>Code Filter(s)</em>: \n    <br/>\n  \n  \n    <span class=\"tab-one\"><em>Path</em>: type</span>\n    <br/>\n  \n  \n  \n    <span class=\"tab-one\"><em>ValueSet</em>:</span> <a href=\"https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion\">Encounter Inpatient</a>\n    <br/> \n  \n  \n  \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Encounter\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/encounter.html\">Encounter</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: type, status, period, location, diagnosis, id, extension, identifier, statusHistory, class, classHistory, subject, reasonCode, hospitalization, partOf\n    <br/>\n   \n  \n    <em>Code Filter(s)</em>: \n    <br/>\n  \n  \n    <span class=\"tab-one\"><em>Path</em>: type</span>\n    <br/>\n  \n  \n  \n    <span class=\"tab-one\"><em>ValueSet</em>:</span> <a href=\"https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.117.1.7.1.292/expansion\">Emergency Department Visit</a>\n    <br/> \n  \n  \n  \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Encounter\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/encounter.html\">Encounter</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: type, status, period, location, diagnosis, id, extension, identifier, statusHistory, class, classHistory, subject, reasonCode, hospitalization, partOf\n    <br/>\n   \n  \n    <em>Code Filter(s)</em>: \n    <br/>\n  \n  \n    <span class=\"tab-one\"><em>Path</em>: type</span>\n    <br/>\n  \n  \n  \n    <span class=\"tab-one\"><em>ValueSet</em>:</span> <a href=\"https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1111.143/expansion\">Observation Services</a>\n    <br/> \n  \n  \n  \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Encounter\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/encounter.html\">Encounter</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: class, status, period, location, diagnosis, id, extension, identifier, statusHistory, classHistory, type, subject, reasonCode, hospitalization, partOf\n    <br/>\n   \n  \n    <em>Code Filter(s)</em>: \n    <br/>\n  \n  \n    <span class=\"tab-one\"><em>Path</em>: class</span>\n    <br/>\n  \n  \n  \n    <span class=\"tab-one\"><em>ValueSet</em>:</span> <a href=\"https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.274/expansion\">NHSN Inpatient Encounter Class Codes</a>\n    <br/> \n  \n  \n  \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Encounter\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/encounter.html\">Encounter</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: class, status, period, location, diagnosis, id, extension, identifier, statusHistory, classHistory, type, subject, reasonCode, hospitalization, partOf\n    <br/>\n   \n  \n    <em>Code Filter(s)</em>: \n    <br/>\n  \n  \n    <span class=\"tab-one\"><em>Path</em>: class</span>\n    <br/>\n  \n  \n  \n  \n    <span class=\"tab-one\"><em>Code(s)</em>: \n    \n      \n      <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-v3-ActCode.html#v3-ActCode-EMER\">ActCode: EMER</a> (emergency)\n      \n    \n    </span>\n    <br/>\n  \n  \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Encounter\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/encounter.html\">Encounter</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: class, status, period, location, diagnosis, id, extension, identifier, statusHistory, classHistory, type, subject, reasonCode, hospitalization, partOf\n    <br/>\n   \n  \n    <em>Code Filter(s)</em>: \n    <br/>\n  \n  \n    <span class=\"tab-one\"><em>Path</em>: class</span>\n    <br/>\n  \n  \n  \n  \n    <span class=\"tab-one\"><em>Code(s)</em>: \n    \n      \n      <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-v3-ActCode.html#v3-ActCode-OBSENC\">ActCode: OBSENC</a> (observation encounter)\n      \n    \n    </span>\n    <br/>\n  \n  \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Encounter\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/encounter.html\">Encounter</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: status, period, location, diagnosis, id, extension, identifier, statusHistory, class, classHistory, type, subject, reasonCode, hospitalization, partOf\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Condition\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: id, extension, clinicalStatus, verificationStatus, category, code, subject, encounter, onset, abatement, recordedDate, encounter.reference\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: DiagnosticReport\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/diagnosticreport.html\">DiagnosticReport</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: id, extension, basedOn, status, category, code, subject, encounter, effective, issued, specimen, result, conclusion, conclusionCode\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Observation\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/observation.html\">Observation</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: id, extension, partOf, status, category, code, subject, encounter, effective, issued, value, dataAbsentReason, interpretation, bodySite, method, specimen, referenceRange, hasMember, derivedFrom, component\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: MedicationRequest\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/medicationrequest.html\">MedicationRequest</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: authoredOn, id, extension, status, statusReason, intent, category, priority, doNotPerform, reported, medication, subject, encounter, recorder, reasonCode, reasonReference, instantiatesCanonical, instantiatesUri, courseOfTherapyType, dosageInstruction\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: MedicationAdministration\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/medicationadministration.html\">MedicationAdministration</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: effective, id, extension, instantiates, partOf, status, statusReason, category, medication, subject, context, supportingInformation, reasonCode, reasonReference, request, device, note, dosage, eventHistory\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Coverage\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/coverage.html\">Coverage</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: period, id, extension, status, type, beneficiary, payor\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Device\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/device.html\">Device</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: id, extension, status, expirationDate, lotNumber, serialNumber, modelNumber, partNumber, type, patient, parent\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Medication\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/medication.html\">Medication</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: id\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Procedure\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/procedure.html\">Procedure</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: performed, category, id, basedOn, partOf, status, code, subject, encounter, location, reasonCode, reasonReference, bodySite\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: Specimen\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/specimen.html\">Specimen</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: collection, collection.collected, id, extension, identifier, accessionIdentifier, status, type, subject, parent, request, note\n    <br/>\n   \n   \n  </td>\n</tr>\n\n<tr>\n  <th scope=\"row\" class=\"row-header\">Data Requirement</th>\n  <td class=\"content-container\">\n    <em>Type</em>: ServiceRequest\n    <br/>\n  \n    <em>Profile(s)</em>: \n  \n    <a href=\"http://hl7.org/fhir/R4/servicerequest.html\">ServiceRequest</a>\n    <br/>        \n  \n   \n   \n    <em>Must Support Elements</em>: authoredOn, category, id, extension, basedOn, status, intent, priority, doNotPerform, code, quantity, subject, encounter, occurrence, asNeeded, specimen\n    <br/>\n   \n   \n  </td>\n</tr>\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<tr>\n  \n\n<th scope=\"row\" class=\"row-header\"/>\n\n\n  <td class=\"content-container\">\n    <table>\n      <thead>\n        <tr>\n          <td><em>Name</em></td>\n          <td><em>Use</em></td>\n          <td><em>Card.</em></td>\n          <td><em>Type</em></td>\n          <td><em>Documentation</em></td>\n        </tr>\n      </thead>\n      <tbody>\n      \n        <tr>\n          <td>Measurement Period</td>\n          <td>In</td>\n          <td>0..1</td>\n          <td>Period</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>Patient</td>\n          <td>Out</td>\n          <td>0..1</td>\n          <td>Patient</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>Qualifying Encounters During Measurement Period</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Encounter</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>Encounters</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Encounter</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>Encounters with Patient Hospital Locations</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Encounter</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>Initial Population</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Encounter</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>Conditions</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Condition</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>DiagnosticReports</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>DiagnosticReport</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>Observations</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Observation</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>Get Locations from IP Encounters in Measurement Period</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Location</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Medication Request</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>MedicationRequest</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Medication Administration</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>MedicationAdministration</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>Medication IDs</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>string</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Condition</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Condition</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Coverage</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Coverage</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Device</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Device</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE DiagnosticReport Lab</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>DiagnosticReport</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE DiagnosticReport Note</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>DiagnosticReport</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Encounter</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Encounter</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE IP Encounters</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Encounter</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Location</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Location</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Medication</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Medication</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Observation Lab Category</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Observation</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Observation Vital Signs Category</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Observation</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Observation Category</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Observation</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Procedure</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Procedure</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Specimen</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>Specimen</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Service Request</td>\n          <td>Out</td>\n          <td>0..*</td>\n          <td>ServiceRequest</td>\n          <td/>\n        </tr>\n      \n        <tr>\n          <td>SDE Minimal Patient</td>\n          <td>Out</td>\n          <td>0..1</td>\n          <td>Patient</td>\n          <td/>\n        </tr>\n      \n      </tbody>\n    </table>\n  </td>\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\">library NHSNAcuteCareHospitalMonthlyInitialPopulation version '3.0.0-cibuild'\n\nusing FHIR version '4.0.1'\n\ninclude FHIRHelpers version '4.0.2' called FHIRHelpers\ninclude NHSNHelpers version '0.0.002' called NHSNHelpers\ninclude SharedResourceCreation version '0.1.010-cibuild' called SharedResource \n\ncodesystem &quot;ActCode&quot;: 'http://terminology.hl7.org/CodeSystem/v3-ActCode'\ncodesystem &quot;Observation Category&quot;: 'http://terminology.hl7.org/CodeSystem/observation-category'\ncodesystem &quot;LOINC&quot;: 'http://loinc.org' \ncodesystem &quot;V2-0074&quot;: 'http://terminology.hl7.org/CodeSystem/v2-0074'\ncodesystem &quot;Condition Category&quot;: 'http://terminology.hl7.org/CodeSystem/condition-category'\ncodesystem &quot;US Core Condition Category&quot;: 'http://hl7.org/fhir/us/core/CodeSystem/condition-category'\ncodesystem &quot;Condition Clinical Status&quot;: 'http://terminology.hl7.org/CodeSystem/condition-clinical'\ncodesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'\ncodesystem &quot;MedicationRequest Category&quot;: 'http://terminology.hl7.org/CodeSystem/medicationrequest-category'\n\nvalueset &quot;Inpatient, Emergency, and Observation Locations&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265'\nvalueset &quot;Emergency Department Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'\nvalueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'\nvalueset &quot;Observation Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143'\nvalueset &quot;NHSN Inpatient Encounter Class Codes&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274'\n\n//code for Observation Category\ncode &quot;laboratory&quot;: 'laboratory' from &quot;Observation Category&quot; display 'Laboratory'\ncode &quot;social-history&quot;: 'social-history' from &quot;Observation Category&quot; display 'Social History'\ncode &quot;vital-signs&quot;: 'vital-signs' from &quot;Observation Category&quot; display 'Vital Signs'\ncode &quot;imaging&quot;: 'imaging' from &quot;Observation Category&quot; display 'Imaging'\ncode &quot;procedure&quot;: 'procedure' from &quot;Observation Category&quot; display 'Procedure'\ncode &quot;survey&quot;: 'survey' from &quot;Observation Category&quot; display 'Survey'\n\n//code for Condition category\n//code &quot;problem-list-item&quot;: 'problem-list-item' from &quot;Condition Category&quot; display 'Problem List Item'\ncode &quot;encounter-diagnosis&quot;: 'encounter-diagnosis' from &quot;Condition Category&quot; display 'Encounter Diagnosis'\n//code &quot;health-concern&quot;: 'health-concern' from &quot;US Core Condition Category&quot; display 'Health Concern'\n\n//code for Diagnostic Report Category\ncode &quot;LAB&quot;: 'LAB' from &quot;V2-0074&quot; display 'Laboratory'\ncode &quot;Radiology&quot;: 'LP29684-5' from &quot;LOINC&quot; display 'Radiology'\ncode &quot;Pathology&quot;: 'LP7839-6' from &quot;LOINC&quot; display 'Pathology'\ncode &quot;Cardiology&quot;: 'LP29708-2' from &quot;LOINC&quot; display 'Cardiology'\n\n//code for Emergency Encounter Class\ncode &quot;emergency&quot;: 'EMER' from &quot;ActCode&quot; display 'emergency'\ncode &quot;observation encounter&quot;: 'OBSENC' from &quot;ActCode&quot; display 'observation encounter'\n\n//code for Condition clinicalStatus\ncode &quot;active&quot;: 'active' from &quot;Condition Clinical Status&quot; display 'active'\n\n//code for Procedure category\ncode &quot;Surgical procedure&quot;: '387713003' from &quot;SNOMEDCT&quot; display 'Surgical procedure'\ncode &quot;Diagnostic procedure&quot;: '103693007' from &quot;SNOMEDCT&quot; display 'Diagnostic procedure' //Code deprecated in SNOMED version 2023-09-01\n//code &quot;Diagnostic intent (qualifier value)&quot;: '261004008' from &quot;SNOMEDCT&quot; display 'Diagnostic intent'\n\n//code for MedicationRequest category\ncode &quot;inpatient&quot;: 'inpatient' from &quot;MedicationRequest Category&quot; display 'Inpatient'\ncode &quot;outpatient&quot;: 'outpatient' from &quot;MedicationRequest Category&quot; display 'Outpatient'\n\n//code for ServiceRequest category (also uses Surgical procedure from Procedure categories)\ncode &quot;Laboratory procedure&quot;: '108252007' from &quot;SNOMEDCT&quot; display 'Laboratory procedure'\ncode &quot;Imaging&quot;: '363679005' from &quot;SNOMEDCT&quot; display 'Imaging'\n\nparameter &quot;Measurement Period&quot; \n    default Interval[@2022-01-01T00:00:00.0, @2022-01-31T23:59:59.0)\n\ncontext Patient \n\ndefine &quot;Qualifying Encounters During Measurement Period&quot;:\n ( [Encounter: &quot;Encounter Inpatient&quot;]\n  union [Encounter: &quot;Emergency Department Visit&quot;]\n  union [Encounter: &quot;Observation Services&quot;]\n  union [Encounter: class in &quot;NHSN Inpatient Encounter Class Codes&quot;]\n  union [Encounter: class ~ &quot;emergency&quot;]\n  union [Encounter: class ~ &quot;observation encounter&quot;]) QualifyingEncounters\n  where QualifyingEncounters.status in {'in-progress', 'finished', 'triaged', 'onleave', 'entered-in-error'}\n    and QualifyingEncounters.period overlaps &quot;Measurement Period&quot; \n\ndefine &quot;Encounters with Patient Hospital Locations&quot;:\n  &quot;Encounters&quot; Encounters\n  where exists(\n    Encounters.location EncounterLocation\n    where NHSNHelpers.GetLocation(EncounterLocation.location).type in &quot;Inpatient, Emergency, and Observation Locations&quot;\n      and EncounterLocation.period overlaps Encounters.period\n  )\n  and Encounters.status in {'in-progress', 'finished', 'triaged', 'onleave', 'entered-in-error'}\n  and Encounters.period overlaps &quot;Measurement Period&quot;\n\ndefine &quot;Initial Population&quot;:\n  &quot;Qualifying Encounters During Measurement Period&quot;\n  union &quot;Encounters with Patient Hospital Locations&quot;\n\ndefine &quot;Encounters&quot;:\n  [Encounter]\n\ndefine &quot;Conditions&quot;:\n  [Condition]\n\ndefine &quot;DiagnosticReports&quot;:\n  [DiagnosticReport]\n\ndefine &quot;Observations&quot;:\n  [Observation]\n\ndefine &quot;Get Locations from IP Encounters in Measurement Period&quot;:\n  flatten(&quot;Initial Population&quot; IP\n  let locationElements: IP.location\n  return\n    locationElements LE\n    let locationReference: LE.location\n    return NHSNHelpers.GetLocation(locationReference))\n\ndefine &quot;Medication IDs&quot;:\n  (&quot;SDE Medication Request&quot;\n  union &quot;SDE Medication Administration&quot;) MedReqOrAdmin\n  where MedReqOrAdmin.medication is FHIR.Reference\n    and exists(&quot;Initial Population&quot;) //No longer need to check for timing here because it's checked in SDE Medication Request/Administriation\n  return NHSNHelpers.GetId(MedReqOrAdmin.medication.reference)\n\n//============================================================================\n//Supplemental Data Element\n//When FHIR.canonical value is present, US Core 3.1.1 profiles are used\n//When FHIR.canonical value is not present, FHIR Base profiles are used\n//============================================================================\ndefine &quot;SDE Condition&quot;:\n  &quot;Conditions&quot; Conditions \n    where exists(\n    &quot;Initial Population&quot; IP\n//Check for Problem List Conditions that were recorded before or during IP \n     where \n      (exists(IP.diagnosis Diagnoses\n          where NHSNHelpers.GetId(Diagnoses.condition.reference) = Conditions.id\n        )\n        or NHSNHelpers.GetId(Conditions.encounter.reference) = IP.id\n      )\n      and exists (Conditions.category categories\n        where categories ~ &quot;encounter-diagnosis&quot;\n    )\n  )\n  return ConditionResource(Conditions,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-condition'}},\n   {&quot;encounter-diagnosis&quot;})\n\ndefine &quot;SDE Coverage&quot;: \n\t[Coverage] Coverages\n  where exists(\n    &quot;Initial Population&quot; IP\n    where Coverages.period overlaps IP.period)\n  return CoverageResource(Coverages,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-coverage'}})\n\ndefine &quot;SDE Device&quot;:\n  [Device] Devices \n  where exists(&quot;Initial Population&quot;)\n  return DeviceResource(Devices,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-device'}})\n\n//This block collects all DiagnosticReport resources while also marking Lab and Note DiagnosticReports with the appropriate profiles\n//#Start DiagnosticReport block\ndefine &quot;SDE DiagnosticReport Lab&quot;:\n  &quot;DiagnosticReports&quot; DiagnosticReports\n  where (exists(DiagnosticReports.category Category where Category ~ &quot;LAB&quot;)\n    and exists(\n      &quot;Initial Population&quot; IP\n      where NHSNHelpers.&quot;Normalize Interval&quot;(DiagnosticReports.effective) overlaps IP.period))\n  return DiagnosticReportLabResource(DiagnosticReports,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-diagnosticreport-lab'}},\n  {&quot;LAB&quot;, &quot;Radiology&quot;, &quot;Pathology&quot;, &quot;Cardiology&quot;})\n \ndefine &quot;SDE DiagnosticReport Note&quot;:\n  &quot;DiagnosticReports&quot; DiagnosticReports\n  where ((exists(DiagnosticReports.category Category where Category ~ &quot;Radiology&quot;))\n    or exists((DiagnosticReports.category Category where Category ~ &quot;Pathology&quot;))\n    or exists((DiagnosticReports.category Category where Category ~ &quot;Cardiology&quot;)))\n    and exists(\n      &quot;Initial Population&quot; IP\n      where NHSNHelpers.&quot;Normalize Interval&quot;(DiagnosticReports.effective) overlaps IP.period)\n  return DiagnosticReportResource(DiagnosticReports,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-diagnosticreport-note'}},\n  {&quot;Radiology&quot;, &quot;Pathology&quot;, &quot;Cardiology&quot;, &quot;LAB&quot;})\n//#End DiagnosticReport block\n\ndefine &quot;SDE Encounter&quot;: \n  &quot;Encounters&quot; Encounters\n  where not CheckIP(Encounters)\n  and exists(\n    &quot;Initial Population&quot; IP\n    where Encounters.period overlaps IP.period)\n  return EncounterResource(Encounters,\n  {FHIR.canonical{value: 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter'}})\n\ndefine &quot;SDE IP Encounters&quot;:\n  &quot;Initial Population&quot; IP\n  return EncounterResource(IP, \n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-encounter'}})\n\ndefine &quot;SDE Location&quot;:\n  &quot;Get Locations from IP Encounters in Measurement Period&quot; Locations\n  where exists(&quot;Initial Population&quot;)\n  and Locations is not null\n  return LocationResource(Locations,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-location'}})\n \ndefine &quot;SDE Medication Administration&quot;:\n  [MedicationAdministration] MedicationAdministrations \n  where exists(\n    &quot;Initial Population&quot; IP\n    where NHSNHelpers.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) overlaps IP.period)\n  return MedicationAdministrationResource(MedicationAdministrations,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medicationadministration'}},\n  {&quot;inpatient&quot;, &quot;outpatient&quot;})\n \ndefine &quot;SDE Medication Request&quot;:\n  [MedicationRequest] MedicationRequests \n  where exists(\n    &quot;Initial Population&quot; IP\n    where MedicationRequests.authoredOn during IP.period)\n  return MedicationRequestResource(MedicationRequests,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medicationrequest'}},\n  {&quot;inpatient&quot;, &quot;outpatient&quot;})\n  \ndefine &quot;SDE Medication&quot;:\n  [Medication] Medications\n  where Medications.id in &quot;Medication IDs&quot;\n  return SharedResource.MedicationResource(Medications,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medication'}})\n\ndefine &quot;SDE Observation Lab Category&quot;:\n  &quot;Observations&quot; Observations \n  where (exists(Observations.category Category where Category ~ &quot;laboratory&quot;))\n    and exists(\n      &quot;Initial Population&quot; IP\n      where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)\n  return ObservationLabResource(Observations,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation-lab'}},\n  {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})\n\n//Vital Signs Observation has its own profile in FHIR Base\ndefine &quot;SDE Observation Vital Signs Category&quot;:\n  &quot;Observations&quot; Observations \n  where (exists(Observations.category Category where Category ~ &quot;vital-signs&quot;))\n    and exists(\n      &quot;Initial Population&quot; IP\n      where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)\n  return ObservationVitalSignsResource(Observations,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation-vitals'}},\n  {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})\n\n//Defaulting to base FHIR profile as there are no individual profiles in US Core 3.1.1 that cover these Observation categories\ndefine &quot;SDE Observation Category&quot;:\n  &quot;Observations&quot; Observations \n  where (/*(exists(Observations.category Category where Category ~ &quot;social-history&quot;))\n    or (exists(Observations.category Category where Category ~ &quot;survey&quot;))\n    or */(exists(Observations.category Category where Category ~ &quot;imaging&quot;))\n    or (exists(Observations.category Category where Category ~ &quot;procedure&quot;)))\n    and exists(\n      &quot;Initial Population&quot; IP\n      where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)\n  return ObservationResource(Observations,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation'}},\n  {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})\n\ndefine &quot;SDE Procedure&quot;:\n  [Procedure] Procedures \n  where exists(\n    &quot;Initial Population&quot; IP\n    where NHSNHelpers.&quot;Normalize Interval&quot;(Procedures.performed) overlaps IP.period)\n      and (\n      Procedures.category ~ &quot;Surgical procedure&quot;\n      or Procedures.category ~ &quot;Diagnostic procedure&quot;)\n     return ProcedureResource(Procedures,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-procedure'}},\n  {&quot;Surgical procedure&quot;, &quot;Diagnostic procedure&quot;})\n\ndefine &quot;SDE Specimen&quot;:\n  [Specimen] Specimens\n  where exists(\n    &quot;Initial Population&quot; IP\n    where NHSNHelpers.&quot;Normalize Interval&quot;(Specimens.collection.collected) overlaps IP.period\n  )\n  return SpecimenResource(Specimens,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-specimen'}})\n\ndefine &quot;SDE Service Request&quot;:\n  [ServiceRequest] ServiceRequests\n  where exists(&quot;Initial Population&quot; IP\n    where ServiceRequests.authoredOn during IP.period)\n    and exists(\n      ServiceRequests.category C \n      where C ~ &quot;Laboratory procedure&quot;\n         or C ~ &quot;Surgical procedure&quot;\n         or C ~ &quot;Imaging&quot;\n    )\n  return ServiceRequestResource(ServiceRequests,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-servicerequest'}},\n  {&quot;Laboratory procedure&quot;, &quot;Surgical procedure&quot;, &quot;Imaging&quot;})\n\ndefine &quot;SDE Minimal Patient&quot;:\n  Patient p\n  return SharedResource.PatientResource(p,\n  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/cross-measure-patient'}})\n\n//\n//Functions\n//\ndefine function &quot;CheckIP&quot;(encounter Encounter):\n  exists(&quot;Initial Population&quot; IP\n  where encounter.id = IP.id)\n\ndefine function &quot;GetMedicationFrom&quot;(choice Choice&lt;FHIR.CodeableConcept, FHIR.Reference&gt;):\n  case\n    when choice is FHIR.Reference then\n      GetMedication(choice as FHIR.Reference)\n    else\n      null\n  end\n\ndefine function &quot;GetMedication&quot;(reference Reference):\n  singleton from (\n    [Medication] Medications\n    where Medications.id = NHSNHelpers.GetId(reference.reference)\n  )\n\ndefine function &quot;GetCondition&quot;(reference Reference):\n  singleton from (\n    &quot;Conditions&quot; Conditions\n    where Conditions.id = NHSNHelpers.GetId(reference.reference)\n  )\n\ndefine function &quot;GetEncounter&quot;(reference Reference):\n  singleton from (\n    &quot;Encounters&quot; Encounters\n    where Encounters.id = NHSNHelpers.GetId(reference.reference)\n  )\n\ndefine function RemoveUnaccepted(codes List&lt;FHIR.CodeableConcept&gt;, accepted List&lt;System.Code&gt;):\n  codes c\n  where exists(\n    accepted a\n    where c ~ a\n  )\n\ndefine function FilterCodeableConcepts(codes List&lt;FHIR.CodeableConcept&gt;, accepted List&lt;System.Code&gt;):\n  if Count(accepted) &gt; 0\n    then RemoveUnaccepted(codes, accepted)\n  else codes    \n\n//\n//Measure Specific Resource Creation Functions\n//\n\ndefine function ConditionResource(condition Condition, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  condition c\n  return Condition{\n    id: FHIR.id {value: 'LCR-' + c.id},\n    meta: SharedResource.MetaElement(c, profileURLs),\n    extension: c.extension,\n    clinicalStatus: c.clinicalStatus,\n    verificationStatus: c.verificationStatus,\n    category: FilterCodeableConcepts(c.category, acceptedCategories),\n    code: c.code,\n    subject: c.subject,\n    encounter: c.encounter,\n    onset: c.onset,\n    abatement: c.abatement,\n    recordedDate: c.recordedDate\n  }\n\ndefine function CoverageResource(coverage Coverage, profileURLs List&lt;FHIR.canonical&gt;):\n  coverage c\n  return Coverage{\n    id: FHIR.id{value: 'LCR-' + c.id},\n    meta: SharedResource.MetaElement(c, profileURLs),\n    extension: c.extension,\n    status: c.status,\n    type: c.type,\n    beneficiary: c.beneficiary,\n    period: c.period,\n    payor: c.payor\n  }\n\ndefine function DeviceResource(device Device, profileURLs List&lt;FHIR.canonical&gt;):\n  device d\n  return Device{\n    id: FHIR.id{value: 'LCR-' + d.id},\n    meta: SharedResource.MetaElement(d, profileURLs),\n    extension: d.extension,\n    status: d.status,\n    expirationDate: d.expirationDate,\n    lotNumber: d.lotNumber,\n    serialNumber: d.serialNumber,\n    modelNumber: d.modelNumber,\n    partNumber: d.partNumber,\n    type: d.type,\n    patient: d.patient,\n    parent: d.parent\n  }\n\ndefine function DiagnosticReportCoding(coding List&lt;Coding&gt;):\n  coding c\n  return Coding{\n    system: c.system,\n    version: c.version,\n    code: c.code,\n    display: c.display\n  }\n\ndefine function DiagnosticReportCategory(category List&lt;CodeableConcept&gt;):\n  category c\n  return CodeableConcept{\n    coding: DiagnosticReportCoding(c.coding)\n  }\n\ndefine function DiagnosticReportLabResource(diagnosticReport DiagnosticReport, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  diagnosticReport d\n  return DiagnosticReport{\n    id: FHIR.id{value: 'LCR-' + d.id},\n    meta: SharedResource.MetaElement(d, profileURLs),\n    extension: d.extension,\n    basedOn: d.basedOn,\n    status: d.status,\n    category: FilterCodeableConcepts(DiagnosticReportCategory(d.category), acceptedCategories),\n    code: d.code,\n    subject: d.subject,\n    encounter: d.encounter,\n    effective: d.effective,\n    issued: d.issued,\n    specimen: d.specimen,\n    result: d.result,\n    conclusion: d.conclusion,\n    conclusionCode: d.conclusionCode\n  }\n\ndefine function DiagnosticReportResource(diagnosticReport DiagnosticReport, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  diagnosticReport d\n  return DiagnosticReport{\n    id: FHIR.id{value: 'LCR-' + d.id},\n    meta: SharedResource.MetaElement(d, profileURLs),\n    extension: d.extension,\n    basedOn: d.basedOn,\n    status: d.status,\n    category: FilterCodeableConcepts(d.category, acceptedCategories),\n    code: d.code,\n    subject: d.subject,\n    encounter: d.encounter,\n    effective: d.effective,\n    issued: d.issued,\n    specimen: d.specimen,\n    result: d.result,\n    conclusion: d.conclusion,\n    conclusionCode: d.conclusionCode\n  }\n\ndefine function EncounterHospitalization(hospitalization FHIR.Encounter.Hospitalization):\n  hospitalization h\n  return FHIR.Encounter.Hospitalization{\n    extension: h.extension,\n    origin: h.origin,\n    admitSource: h.admitSource,\n    reAdmission: h.reAdmission,\n    dietPreference: h.dietPreference,\n    dischargeDisposition: h.dischargeDisposition\n  }\n\ndefine function EncounterResource(encounter Encounter, profileURLs List&lt;FHIR.canonical&gt;):\n  encounter e\n  return Encounter{\n    id: FHIR.id{value: 'LCR-' + e.id},\n    meta: SharedResource.MetaElement(e, profileURLs),\n    extension: e.extension,\n    identifier: SharedResource.EncounterIdentifier(e.identifier),\n    status: e.status,\n    statusHistory: SharedResource.EncounterStatusHistory(e.statusHistory),\n    class: e.class,\n    classHistory: SharedResource.EncounterClassHistory(e.classHistory),\n    type: e.type,\n    subject: e.subject,\n    period: e.period,\n    reasonCode: e.reasonCode,\n    diagnosis: SharedResource.EncounterDiagnosis(e.diagnosis),\n    hospitalization: EncounterHospitalization(e.hospitalization),\n    location: SharedResource.EncounterLocation(e.location),\n    partOf: e.partOf\n  }\n\ndefine function LocationResource(location Location, profileURLs List&lt;FHIR.canonical&gt;):\n  location l\n  return Location{\n    id: FHIR.id {value: 'LCR-' + l.id},\n    meta: SharedResource.MetaElement(l, profileURLs),\n    extension: l.extension,\n    status: l.status,\n    name: l.name,\n    alias: l.alias,\n    type: l.type,\n    physicalType: l.physicalType,\n    managingOrganization: l.managingOrganization,\n    partOf: l.partOf\n  }\n\ndefine function MedicationRequestRepeat(repeat FHIR.Timing.Repeat):\n  repeat r\n  return FHIR.Timing.Repeat{\n    bounds: r.bounds,\n    count: r.count,\n    countMax: r.countMax,\n    &quot;duration&quot;: r.&quot;duration&quot;,\n    durationMax: r.durationMax,\n    durationUnit: r.durationUnit,\n    frequency: r.frequency,\n    frequencyMax: r.frequencyMax,\n    period: r.period,\n    periodMax: r.periodMax,\n    periodUnit: r.periodUnit,\n    dayOfWeek: r.dayOfWeek,\n    timeOfDay: r.timeOfDay,\n    &quot;when&quot;: r.&quot;when&quot;,\n    offset: r.offset\n  }\n\ndefine function MedicationRequestTiming(timing FHIR.Timing):\n  timing t\n  return FHIR.Timing{\n    event: t.event,\n    repeat: MedicationRequestRepeat(t.repeat),\n    code: t.code\n  }\n\ndefine function MedicationRequestDosageInstruction(dosageInstruction List&lt;FHIR.Dosage&gt;):\n  dosageInstruction dI\n  return FHIR.Dosage{\n    text: dI.text,\n    patientInstruction: dI.patientInstruction,\n    timing: MedicationRequestTiming(dI.timing),\n    asNeeded: dI.asNeeded,\n    site: dI.site,\n    route: dI.route,\n    method: dI.method,\n    doseAndRate: SharedResource.MedicationRequestDoseAndRate(dI.doseAndRate)\n  }\n\ndefine function MedicationRequestResource(medicationRequest MedicationRequest, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  medicationRequest m\n  return MedicationRequest{\n    id: FHIR.id {value: 'LCR-' + m.id},\n    meta: SharedResource.MetaElement(medicationRequest, profileURLs),\n    extension: m.extension,\n    status: m.status,\n    statusReason: m.statusReason,\n    intent: m.intent,\n    category: FilterCodeableConcepts(m.category, acceptedCategories),\n    priority: m.priority,\n    doNotPerform: m.doNotPerform,\n    reported: m.reported,\n    medication: m.medication,\n    subject: m.subject,\n    encounter: m.encounter,\n    authoredOn: m.authoredOn,\n    //*requester: m.requester,\n    recorder: m.recorder,\n    reasonCode: m.reasonCode,\n    reasonReference: m.reasonReference,\n    instantiatesCanonical: m.instantiatesCanonical,\n    instantiatesUri: m.instantiatesUri,\n    courseOfTherapyType: m.courseOfTherapyType,\n    dosageInstruction: SharedResource.MedicationRequestDosageInstruction(m.dosageInstruction)\n  }\n\n  define function MedicationAdministrationResource(medicationAdministration MedicationAdministration, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  medicationAdministration m\n  return MedicationAdministration{\n    id: FHIR.id {value: 'LCR-' + m.id},\n    meta: SharedResource.MetaElement(m, profileURLs),\n    extension: m.extension,\n    instantiates: m.instantiates,\n    partOf: m.partOf,\n    status: m.status,\n    statusReason: m.statusReason,\n    category: FilterCodeableConcepts({m.category}, acceptedCategories)[0],\n    medication: m.medication,\n    subject: m.subject,\n    context: m.context,\n    supportingInformation: m.supportingInformation,\n    effective: m.effective,\n    //*performer: SharedResource.MedicationAdministrationPerformer(m.performer),\n    reasonCode: m.reasonCode,\n    reasonReference: m.reasonReference,\n    request: m.request,\n    device: m.device,\n    note: m.note,\n    dosage: SharedResource.MedicationAdministrationDosage(m.dosage),\n    eventHistory: m.eventHistory\n  }\n\ndefine function ObservationLabReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):\n  referenceRange rR\n  return FHIR.Observation.ReferenceRange{\n    low: rR.low,\n    high: rR.high,\n    type: rR.type,\n    appliesTo: rR.appliesTo,\n    age: rR.age\n  }\n\ndefine function ObservationLabCoding(coding List&lt;Coding&gt;):\n  coding c\n  return Coding{\n    system: c.system,\n    version: c.version,\n    code: c.code,\n    display: c.display,\n    userSelected: c.userSelected\n  }\n\ndefine function ObservationLabCategory(category List&lt;CodeableConcept&gt;):\n  category c\n  return CodeableConcept{\n    coding: ObservationLabCoding(c.coding),\n    text: c.text\n  }\n\ndefine function ObservationLabResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  observation o\n  return Observation{\n    id: FHIR.id {value: 'LCR-' + o.id},\n    meta: SharedResource.MetaElement(o, profileURLs),\n    extension: o.extension,\n    partOf: o.partOf,\n    status: o.status,\n    category: FilterCodeableConcepts(ObservationLabCategory(o.category), acceptedCategories),\n    code: o.code,\n    subject: o.subject,\n    encounter: o.encounter,\n    effective: o.effective,\n    issued: o.issued,\n    value: o.value,\n    dataAbsentReason: o.dataAbsentReason,\n    interpretation: o.interpretation,\n    bodySite: o.bodySite,\n    method: o.method,\n    specimen: o.specimen,\n    referenceRange: ObservationLabReferenceRange(o.referenceRange),\n    hasMember: o.hasMember,\n    derivedFrom: o.derivedFrom,\n    component: SharedResource.ObservationComponent(o.component)\n  }\n\ndefine function ObservationReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):\n  referenceRange rR\n  return FHIR.Observation.ReferenceRange{\n    low: rR.low,\n    high: rR.high,\n    type: rR.type,\n    appliesTo: rR.appliesTo,\n    age: rR.age\n  }\n\ndefine function ObservationResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  observation o\n  return Observation{\n    id: FHIR.id {value: 'LCR-' + o.id},\n    meta: SharedResource.MetaElement(o, profileURLs),\n    extension: o.extension,\n    partOf: o.partOf,\n    status: o.status,\n    category: FilterCodeableConcepts(o.category, acceptedCategories),\n    code: o.code,\n    subject: o.subject,\n    encounter: o.encounter,\n    effective: o.effective,\n    issued: o.issued,\n    value: o.value,\n    dataAbsentReason: o.dataAbsentReason,\n    interpretation: o.interpretation,\n    bodySite: o.bodySite,\n    method: o.method,\n    specimen: o.specimen,\n    referenceRange: ObservationReferenceRange(o.referenceRange),\n    hasMember: o.hasMember,\n    derivedFrom: o.derivedFrom,\n    component: SharedResource.ObservationComponent(o.component)\n  }\n\ndefine function ObservationVitalSignsCoding(coding List&lt;Coding&gt;):\n  coding c\n  return Coding{\n    system: c.system,\n    version: c.version,\n    code: c.code,\n    display: c.display,\n    userSelected: c.userSelected\n  }\n\ndefine function ObservationVitalSignsCategory(category List&lt;CodeableConcept&gt;):\n  category c\n  return CodeableConcept{\n    coding: ObservationVitalSignsCoding(c.coding),\n    text: c.text\n  }\n\ndefine function ObservationVitalSignsComponent(component List&lt;FHIR.Observation.Component&gt;):\n  component c\n  return FHIR.Observation.Component{\n    code: c.code,\n    value: c.value,\n    dataAbsentReason: c.dataAbsentReason,\n    interpretation: c.interpretation,\n    referenceRange: SharedResource.ObservationReferenceRange(c.referenceRange)\n  }\n\ndefine function ObservationVitalSignsReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):\n  referenceRange rR\n  return FHIR.Observation.ReferenceRange{\n    low: rR.low,\n    high: rR.high,\n    type: rR.type,\n    appliesTo: rR.appliesTo,\n    age: rR.age\n  }\n\ndefine function ObservationVitalSignsResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  observation o\n  return Observation{\n    id: FHIR.id {value: 'LCR-' + o.id},\n    meta: SharedResource.MetaElement(o, profileURLs),\n    extension: o.extension,\n    partOf: o.partOf,\n    status: o.status,\n    category: FilterCodeableConcepts(ObservationVitalSignsCategory(o.category), acceptedCategories),\n    code: o.code,\n    subject: o.subject,\n    encounter: o.encounter,\n    effective: o.effective,\n    issued: o.issued,\n    value: o.value,\n    dataAbsentReason: o.dataAbsentReason,\n    interpretation: o.interpretation,\n    bodySite: o.bodySite,\n    method: o.method,\n    specimen: o.specimen,\n    referenceRange: ObservationVitalSignsReferenceRange(o.referenceRange),\n    hasMember: o.hasMember,\n    derivedFrom: o.derivedFrom,\n    component: ObservationVitalSignsComponent(o.component)\n  }\n\n define function &quot;GetProcedureExtensions&quot;(domainResource DomainResource):\n  domainResource.extension E\n    where E.url != 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-recorded'\n     return E\n \ndefine function ProcedureResource(procedure Procedure, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  procedure p\n  return Procedure{\n    id: FHIR.id {value: 'LCR-' + p.id},\n    meta: SharedResource.MetaElement(p, profileURLs),\n    extension: GetProcedureExtensions(p), \n    basedOn: p.basedOn,\n    partOf: p.partOf,\n    status: p.status,\n    category: FilterCodeableConcepts({p.category}, acceptedCategories)[0],\n    code: p.code,\n    subject: p.subject,\n    encounter: p.encounter,\n    performed: p.performed,\n    location: p.location,\n    reasonCode: p.reasonCode,\n    reasonReference: p.reasonReference,\n    bodySite: p.bodySite\n  }\n\n  define function ServiceRequestResource(serviceRequest ServiceRequest, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):\n  serviceRequest sR\n  return ServiceRequest{\n    id: FHIR.id {value: 'LCR-' + sR.id},\n    meta: SharedResource.MetaElement(sR, profileURLs),\n    extension: sR.extension,\n    basedOn: sR.basedOn,\n    status: sR.status,\n    intent: sR.intent,\n    category: FilterCodeableConcepts(sR.category, acceptedCategories),\n    priority: sR.priority,\n    doNotPerform: sR.doNotPerform,\n    code: sR.code,\n    quantity: sR.quantity,\n    subject: sR.subject,\n    encounter: sR.encounter,\n    occurrence: sR.occurrence,\n    asNeeded: sR.asNeeded,\n    authoredOn: sR.authoredOn,\n    specimen: sR.specimen\n  }\n\n  define function SpecimenCollection(collection FHIR.Specimen.Collection):\n  collection c\n  return FHIR.Specimen.Collection{\n    collector: c.collector,\n    collected: c.collected,\n    quantity: c.quantity,\n    bodySite: c.bodySite\n  }\n\n  define function SpecimenResource(specimen Specimen, profileURLs List&lt;FHIR.canonical&gt;):\n  specimen s\n  return Specimen{\n    id: FHIR.id {value: 'LCR-' + s.id},\n    meta: SharedResource.MetaElement(s, profileURLs),\n    extension: s.extension,\n    identifier: s.identifier,\n    accessionIdentifier: s.accessionIdentifier,\n    status: s.status,\n    type: s.type,\n    subject: s.subject,\n    parent: s.parent,\n    request: s.request,\n    collection: SpecimenCollection(s.collection),\n    note: s.note\n  }</code></pre>\n      </td>\n    </tr>\n    \n  \n\n<tr>\n  <th colspan=\"2\" scope=\"row\" class=\"row-header\">Generated using version 0.5.6-cibuild of the sample-content-ig Liquid templates</th>\n</tr>\n\n    </tbody>\n  </table>\n</div>"
  },
  "contained" : [
    {
      "resourceType" : "Parameters",
      "id" : "options",
      "parameter" : [
        {
          "name" : "translatorVersion",
          "valueString" : "3.27.0"
        },
        {
          "name" : "option",
          "valueString" : "EnableDateRangeOptimization"
        },
        {
          "name" : "option",
          "valueString" : "EnableAnnotations"
        },
        {
          "name" : "option",
          "valueString" : "EnableLocators"
        },
        {
          "name" : "option",
          "valueString" : "DisableListDemotion"
        },
        {
          "name" : "option",
          "valueString" : "DisableListPromotion"
        },
        {
          "name" : "analyzeDataRequirements",
          "valueBoolean" : false
        },
        {
          "name" : "collapseDataRequirements",
          "valueBoolean" : true
        },
        {
          "name" : "compatibilityLevel",
          "valueString" : "1.5"
        },
        {
          "name" : "enableCqlOnly",
          "valueBoolean" : false
        },
        {
          "name" : "errorLevel",
          "valueString" : "Info"
        },
        {
          "name" : "signatureLevel",
          "valueString" : "Overloads"
        },
        {
          "name" : "validateUnits",
          "valueBoolean" : true
        },
        {
          "name" : "verifyOnly",
          "valueBoolean" : false
        }
      ]
    }
  ],
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/cqf-cqlOptions",
      "valueReference" : {
        "reference" : "#options"
      }
    },
    {
      "url" : "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem",
      "valueReference" : {
        🔗 "reference" : "Device/cqf-tooling"
      }
    }
  ],
  "url" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNAcuteCareHospitalMonthlyInitialPopulation",
  "version" : "3.0.0",
  "name" : "NHSNAcuteCareHospitalMonthlyInitialPopulation",
  "status" : "draft",
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2026-08-14T18:33:45+00:00",
  "publisher" : "CDC National Healthcare Safety Network (NHSN)",
  "contact" : [
    {
      "name" : "CDC National Healthcare Safety Network (NHSN)",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.cdc.gov/nhsn"
        },
        {
          "system" : "email",
          "value" : "nhsn@cdc.gov"
        }
      ]
    }
  ],
  "jurisdiction" : [
    {
      "coding" : [
        {
          "system" : "urn:iso:std:iso:3166",
          "code" : "US"
        }
      ]
    }
  ],
  "relatedArtifact" : [
    {
      "type" : "depends-on",
      "display" : "Library FHIRHelpers",
      "resource" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2"
    },
    {
      "type" : "depends-on",
      "display" : "Library NHSNHelpers",
      "resource" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002"
    },
    {
      "type" : "depends-on",
      "display" : "Library SharedResource",
      "resource" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010-cibuild"
    },
    {
      "type" : "depends-on",
      "display" : "Code system ActCode",
      "resource" : "http://terminology.hl7.org/CodeSystem/v3-ActCode|10.0.0"
    },
    {
      "type" : "depends-on",
      "display" : "Code system Observation Category",
      "resource" : "http://terminology.hl7.org/CodeSystem/observation-category|2.0.0"
    },
    {
      "type" : "depends-on",
      "display" : "Code system LOINC",
      "resource" : "http://loinc.org"
    },
    {
      "type" : "depends-on",
      "display" : "Code system V2-0074",
      "resource" : "http://terminology.hl7.org/CodeSystem/v2-0074|3.0.0"
    },
    {
      "type" : "depends-on",
      "display" : "Code system Condition Category",
      "resource" : "http://terminology.hl7.org/CodeSystem/condition-category|2.0.0"
    },
    {
      "type" : "depends-on",
      "display" : "Code system US Core Condition Category",
      "resource" : "http://hl7.org/fhir/us/core/CodeSystem/condition-category|6.1.0"
    },
    {
      "type" : "depends-on",
      "display" : "Code system Condition Clinical Status",
      "resource" : "http://terminology.hl7.org/CodeSystem/condition-clinical|3.0.0"
    },
    {
      "type" : "depends-on",
      "display" : "Code system SNOMEDCT",
      "resource" : "http://snomed.info/sct"
    },
    {
      "type" : "depends-on",
      "display" : "Code system MedicationRequest Category",
      "resource" : "http://terminology.hl7.org/CodeSystem/medicationrequest-category|2.0.0"
    },
    {
      "type" : "depends-on",
      "display" : "Value set Inpatient, Emergency, and Observation Locations",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265"
    },
    {
      "type" : "depends-on",
      "display" : "Value set Emergency Department Visit",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"
    },
    {
      "type" : "depends-on",
      "display" : "Value set Encounter Inpatient",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"
    },
    {
      "type" : "depends-on",
      "display" : "Value set Observation Services",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"
    },
    {
      "type" : "depends-on",
      "display" : "Value set NHSN Inpatient Encounter Class Codes",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"
    }
  ],
  "parameter" : [
    {
      "name" : "Measurement Period",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "type" : "Period"
    },
    {
      "name" : "Patient",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Patient"
    },
    {
      "name" : "Qualifying Encounters During Measurement Period",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Encounters",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Encounters with Patient Hospital Locations",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Initial Population",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Conditions",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Condition"
    },
    {
      "name" : "DiagnosticReports",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "DiagnosticReport"
    },
    {
      "name" : "Observations",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Observation"
    },
    {
      "name" : "Get Locations from IP Encounters in Measurement Period",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Location"
    },
    {
      "name" : "SDE Medication Request",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "MedicationRequest"
    },
    {
      "name" : "SDE Medication Administration",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "MedicationAdministration"
    },
    {
      "name" : "Medication IDs",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "string"
    },
    {
      "name" : "SDE Condition",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Condition"
    },
    {
      "name" : "SDE Coverage",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Coverage"
    },
    {
      "name" : "SDE Device",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Device"
    },
    {
      "name" : "SDE DiagnosticReport Lab",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "DiagnosticReport"
    },
    {
      "name" : "SDE DiagnosticReport Note",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "DiagnosticReport"
    },
    {
      "name" : "SDE Encounter",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "SDE IP Encounters",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "SDE Location",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Location"
    },
    {
      "name" : "SDE Medication",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Medication"
    },
    {
      "name" : "SDE Observation Lab Category",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Observation"
    },
    {
      "name" : "SDE Observation Vital Signs Category",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Observation"
    },
    {
      "name" : "SDE Observation Category",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Observation"
    },
    {
      "name" : "SDE Procedure",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Procedure"
    },
    {
      "name" : "SDE Specimen",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Specimen"
    },
    {
      "name" : "SDE Service Request",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "ServiceRequest"
    },
    {
      "name" : "SDE Minimal Patient",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Patient"
    }
  ],
  "dataRequirement" : [
    {
      "type" : "Patient",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Patient"
      ]
    },
    {
      "type" : "Encounter",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
      ],
      "mustSupport" : [
        "type",
        "status",
        "period",
        "location",
        "diagnosis",
        "id",
        "extension",
        "identifier",
        "statusHistory",
        "class",
        "classHistory",
        "subject",
        "reasonCode",
        "hospitalization",
        "partOf"
      ],
      "codeFilter" : [
        {
          "path" : "type",
          "valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"
        }
      ]
    },
    {
      "type" : "Encounter",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
      ],
      "mustSupport" : [
        "type",
        "status",
        "period",
        "location",
        "diagnosis",
        "id",
        "extension",
        "identifier",
        "statusHistory",
        "class",
        "classHistory",
        "subject",
        "reasonCode",
        "hospitalization",
        "partOf"
      ],
      "codeFilter" : [
        {
          "path" : "type",
          "valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"
        }
      ]
    },
    {
      "type" : "Encounter",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
      ],
      "mustSupport" : [
        "type",
        "status",
        "period",
        "location",
        "diagnosis",
        "id",
        "extension",
        "identifier",
        "statusHistory",
        "class",
        "classHistory",
        "subject",
        "reasonCode",
        "hospitalization",
        "partOf"
      ],
      "codeFilter" : [
        {
          "path" : "type",
          "valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"
        }
      ]
    },
    {
      "type" : "Encounter",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
      ],
      "mustSupport" : [
        "class",
        "status",
        "period",
        "location",
        "diagnosis",
        "id",
        "extension",
        "identifier",
        "statusHistory",
        "classHistory",
        "type",
        "subject",
        "reasonCode",
        "hospitalization",
        "partOf"
      ],
      "codeFilter" : [
        {
          "path" : "class",
          "valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"
        }
      ]
    },
    {
      "type" : "Encounter",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
      ],
      "mustSupport" : [
        "class",
        "status",
        "period",
        "location",
        "diagnosis",
        "id",
        "extension",
        "identifier",
        "statusHistory",
        "classHistory",
        "type",
        "subject",
        "reasonCode",
        "hospitalization",
        "partOf"
      ],
      "codeFilter" : [
        {
          "path" : "class",
          "code" : [
            {
              "system" : "http://terminology.hl7.org/CodeSystem/v3-ActCode",
              "code" : "EMER",
              "display" : "emergency"
            }
          ]
        }
      ]
    },
    {
      "type" : "Encounter",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
      ],
      "mustSupport" : [
        "class",
        "status",
        "period",
        "location",
        "diagnosis",
        "id",
        "extension",
        "identifier",
        "statusHistory",
        "classHistory",
        "type",
        "subject",
        "reasonCode",
        "hospitalization",
        "partOf"
      ],
      "codeFilter" : [
        {
          "path" : "class",
          "code" : [
            {
              "system" : "http://terminology.hl7.org/CodeSystem/v3-ActCode",
              "code" : "OBSENC",
              "display" : "observation encounter"
            }
          ]
        }
      ]
    },
    {
      "type" : "Encounter",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
      ],
      "mustSupport" : [
        "status",
        "period",
        "location",
        "diagnosis",
        "id",
        "extension",
        "identifier",
        "statusHistory",
        "class",
        "classHistory",
        "type",
        "subject",
        "reasonCode",
        "hospitalization",
        "partOf"
      ]
    },
    {
      "type" : "Condition",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Condition"
      ],
      "mustSupport" : [
        "id",
        "extension",
        "clinicalStatus",
        "verificationStatus",
        "category",
        "code",
        "subject",
        "encounter",
        "onset",
        "abatement",
        "recordedDate",
        "encounter.reference"
      ]
    },
    {
      "type" : "DiagnosticReport",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/DiagnosticReport"
      ],
      "mustSupport" : [
        "id",
        "extension",
        "basedOn",
        "status",
        "category",
        "code",
        "subject",
        "encounter",
        "effective",
        "issued",
        "specimen",
        "result",
        "conclusion",
        "conclusionCode"
      ]
    },
    {
      "type" : "Observation",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Observation"
      ],
      "mustSupport" : [
        "id",
        "extension",
        "partOf",
        "status",
        "category",
        "code",
        "subject",
        "encounter",
        "effective",
        "issued",
        "value",
        "dataAbsentReason",
        "interpretation",
        "bodySite",
        "method",
        "specimen",
        "referenceRange",
        "hasMember",
        "derivedFrom",
        "component"
      ]
    },
    {
      "type" : "MedicationRequest",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/MedicationRequest"
      ],
      "mustSupport" : [
        "authoredOn",
        "id",
        "extension",
        "status",
        "statusReason",
        "intent",
        "category",
        "priority",
        "doNotPerform",
        "reported",
        "medication",
        "subject",
        "encounter",
        "recorder",
        "reasonCode",
        "reasonReference",
        "instantiatesCanonical",
        "instantiatesUri",
        "courseOfTherapyType",
        "dosageInstruction"
      ]
    },
    {
      "type" : "MedicationAdministration",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/MedicationAdministration"
      ],
      "mustSupport" : [
        "effective",
        "id",
        "extension",
        "instantiates",
        "partOf",
        "status",
        "statusReason",
        "category",
        "medication",
        "subject",
        "context",
        "supportingInformation",
        "reasonCode",
        "reasonReference",
        "request",
        "device",
        "note",
        "dosage",
        "eventHistory"
      ]
    },
    {
      "type" : "Coverage",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Coverage"
      ],
      "mustSupport" : [
        "period",
        "id",
        "extension",
        "status",
        "type",
        "beneficiary",
        "payor"
      ]
    },
    {
      "type" : "Device",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Device"
      ],
      "mustSupport" : [
        "id",
        "extension",
        "status",
        "expirationDate",
        "lotNumber",
        "serialNumber",
        "modelNumber",
        "partNumber",
        "type",
        "patient",
        "parent"
      ]
    },
    {
      "type" : "Medication",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Medication"
      ],
      "mustSupport" : [
        "id"
      ]
    },
    {
      "type" : "Procedure",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Procedure"
      ],
      "mustSupport" : [
        "performed",
        "category",
        "id",
        "basedOn",
        "partOf",
        "status",
        "code",
        "subject",
        "encounter",
        "location",
        "reasonCode",
        "reasonReference",
        "bodySite"
      ]
    },
    {
      "type" : "Specimen",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Specimen"
      ],
      "mustSupport" : [
        "collection",
        "collection.collected",
        "id",
        "extension",
        "identifier",
        "accessionIdentifier",
        "status",
        "type",
        "subject",
        "parent",
        "request",
        "note"
      ]
    },
    {
      "type" : "ServiceRequest",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/ServiceRequest"
      ],
      "mustSupport" : [
        "authoredOn",
        "category",
        "id",
        "extension",
        "basedOn",
        "status",
        "intent",
        "priority",
        "doNotPerform",
        "code",
        "quantity",
        "subject",
        "encounter",
        "occurrence",
        "asNeeded",
        "specimen"
      ]
    }
  ],
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "bGlicmFyeSBOSFNOQWN1dGVDYXJlSG9zcGl0YWxNb250aGx5SW5pdGlhbFBvcHVsYXRpb24gdmVyc2lvbiAnMy4wLjAtY2lidWlsZCcKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4yJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBOSFNOSGVscGVycyB2ZXJzaW9uICcwLjAuMDAyJyBjYWxsZWQgTkhTTkhlbHBlcnMKaW5jbHVkZSBTaGFyZWRSZXNvdXJjZUNyZWF0aW9uIHZlcnNpb24gJzAuMS4wMTAtY2lidWlsZCcgY2FsbGVkIFNoYXJlZFJlc291cmNlIAoKY29kZXN5c3RlbSAiQWN0Q29kZSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL3YzLUFjdENvZGUnCmNvZGVzeXN0ZW0gIk9ic2VydmF0aW9uIENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vb2JzZXJ2YXRpb24tY2F0ZWdvcnknCmNvZGVzeXN0ZW0gIkxPSU5DIjogJ2h0dHA6Ly9sb2luYy5vcmcnIApjb2Rlc3lzdGVtICJWMi0wMDc0IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjItMDA3NCcKY29kZXN5c3RlbSAiQ29uZGl0aW9uIENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vY29uZGl0aW9uLWNhdGVnb3J5Jwpjb2Rlc3lzdGVtICJVUyBDb3JlIENvbmRpdGlvbiBDYXRlZ29yeSI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NvcmUvQ29kZVN5c3RlbS9jb25kaXRpb24tY2F0ZWdvcnknCmNvZGVzeXN0ZW0gIkNvbmRpdGlvbiBDbGluaWNhbCBTdGF0dXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9jb25kaXRpb24tY2xpbmljYWwnCmNvZGVzeXN0ZW0gIlNOT01FRENUIjogJ2h0dHA6Ly9zbm9tZWQuaW5mby9zY3QnCmNvZGVzeXN0ZW0gIk1lZGljYXRpb25SZXF1ZXN0IENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vbWVkaWNhdGlvbnJlcXVlc3QtY2F0ZWdvcnknCgp2YWx1ZXNldCAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI2NScKdmFsdWVzZXQgIkVtZXJnZW5jeSBEZXBhcnRtZW50IFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTInCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycKdmFsdWVzZXQgIk9ic2VydmF0aW9uIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xNDMnCnZhbHVlc2V0ICJOSFNOIElucGF0aWVudCBFbmNvdW50ZXIgQ2xhc3MgQ29kZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI3NCcKCi8vY29kZSBmb3IgT2JzZXJ2YXRpb24gQ2F0ZWdvcnkKY29kZSAibGFib3JhdG9yeSI6ICdsYWJvcmF0b3J5JyBmcm9tICJPYnNlcnZhdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnTGFib3JhdG9yeScKY29kZSAic29jaWFsLWhpc3RvcnkiOiAnc29jaWFsLWhpc3RvcnknIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdTb2NpYWwgSGlzdG9yeScKY29kZSAidml0YWwtc2lnbnMiOiAndml0YWwtc2lnbnMnIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdWaXRhbCBTaWducycKY29kZSAiaW1hZ2luZyI6ICdpbWFnaW5nJyBmcm9tICJPYnNlcnZhdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnSW1hZ2luZycKY29kZSAicHJvY2VkdXJlIjogJ3Byb2NlZHVyZScgZnJvbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1Byb2NlZHVyZScKY29kZSAic3VydmV5IjogJ3N1cnZleScgZnJvbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1N1cnZleScKCi8vY29kZSBmb3IgQ29uZGl0aW9uIGNhdGVnb3J5Ci8vY29kZSAicHJvYmxlbS1saXN0LWl0ZW0iOiAncHJvYmxlbS1saXN0LWl0ZW0nIGZyb20gIkNvbmRpdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnUHJvYmxlbSBMaXN0IEl0ZW0nCmNvZGUgImVuY291bnRlci1kaWFnbm9zaXMiOiAnZW5jb3VudGVyLWRpYWdub3NpcycgZnJvbSAiQ29uZGl0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdFbmNvdW50ZXIgRGlhZ25vc2lzJwovL2NvZGUgImhlYWx0aC1jb25jZXJuIjogJ2hlYWx0aC1jb25jZXJuJyBmcm9tICJVUyBDb3JlIENvbmRpdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnSGVhbHRoIENvbmNlcm4nCgovL2NvZGUgZm9yIERpYWdub3N0aWMgUmVwb3J0IENhdGVnb3J5CmNvZGUgIkxBQiI6ICdMQUInIGZyb20gIlYyLTAwNzQiIGRpc3BsYXkgJ0xhYm9yYXRvcnknCmNvZGUgIlJhZGlvbG9neSI6ICdMUDI5Njg0LTUnIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdSYWRpb2xvZ3knCmNvZGUgIlBhdGhvbG9neSI6ICdMUDc4MzktNicgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ1BhdGhvbG9neScKY29kZSAiQ2FyZGlvbG9neSI6ICdMUDI5NzA4LTInIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdDYXJkaW9sb2d5JwoKLy9jb2RlIGZvciBFbWVyZ2VuY3kgRW5jb3VudGVyIENsYXNzCmNvZGUgImVtZXJnZW5jeSI6ICdFTUVSJyBmcm9tICJBY3RDb2RlIiBkaXNwbGF5ICdlbWVyZ2VuY3knCmNvZGUgIm9ic2VydmF0aW9uIGVuY291bnRlciI6ICdPQlNFTkMnIGZyb20gIkFjdENvZGUiIGRpc3BsYXkgJ29ic2VydmF0aW9uIGVuY291bnRlcicKCi8vY29kZSBmb3IgQ29uZGl0aW9uIGNsaW5pY2FsU3RhdHVzCmNvZGUgImFjdGl2ZSI6ICdhY3RpdmUnIGZyb20gIkNvbmRpdGlvbiBDbGluaWNhbCBTdGF0dXMiIGRpc3BsYXkgJ2FjdGl2ZScKCi8vY29kZSBmb3IgUHJvY2VkdXJlIGNhdGVnb3J5CmNvZGUgIlN1cmdpY2FsIHByb2NlZHVyZSI6ICczODc3MTMwMDMnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdTdXJnaWNhbCBwcm9jZWR1cmUnCmNvZGUgIkRpYWdub3N0aWMgcHJvY2VkdXJlIjogJzEwMzY5MzAwNycgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0RpYWdub3N0aWMgcHJvY2VkdXJlJyAvL0NvZGUgZGVwcmVjYXRlZCBpbiBTTk9NRUQgdmVyc2lvbiAyMDIzLTA5LTAxCi8vY29kZSAiRGlhZ25vc3RpYyBpbnRlbnQgKHF1YWxpZmllciB2YWx1ZSkiOiAnMjYxMDA0MDA4JyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGlhZ25vc3RpYyBpbnRlbnQnCgovL2NvZGUgZm9yIE1lZGljYXRpb25SZXF1ZXN0IGNhdGVnb3J5CmNvZGUgImlucGF0aWVudCI6ICdpbnBhdGllbnQnIGZyb20gIk1lZGljYXRpb25SZXF1ZXN0IENhdGVnb3J5IiBkaXNwbGF5ICdJbnBhdGllbnQnCmNvZGUgIm91dHBhdGllbnQiOiAnb3V0cGF0aWVudCcgZnJvbSAiTWVkaWNhdGlvblJlcXVlc3QgQ2F0ZWdvcnkiIGRpc3BsYXkgJ091dHBhdGllbnQnCgovL2NvZGUgZm9yIFNlcnZpY2VSZXF1ZXN0IGNhdGVnb3J5IChhbHNvIHVzZXMgU3VyZ2ljYWwgcHJvY2VkdXJlIGZyb20gUHJvY2VkdXJlIGNhdGVnb3JpZXMpCmNvZGUgIkxhYm9yYXRvcnkgcHJvY2VkdXJlIjogJzEwODI1MjAwNycgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0xhYm9yYXRvcnkgcHJvY2VkdXJlJwpjb2RlICJJbWFnaW5nIjogJzM2MzY3OTAwNScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0ltYWdpbmcnCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgCiAgICBkZWZhdWx0IEludGVydmFsW0AyMDIyLTAxLTAxVDAwOjAwOjAwLjAsIEAyMDIyLTAxLTMxVDIzOjU5OjU5LjApCgpjb250ZXh0IFBhdGllbnQgCgpkZWZpbmUgIlF1YWxpZnlpbmcgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICggW0VuY291bnRlcjogIkVuY291bnRlciBJbnBhdGllbnQiXQogIHVuaW9uIFtFbmNvdW50ZXI6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdCiAgdW5pb24gW0VuY291bnRlcjogIk9ic2VydmF0aW9uIFNlcnZpY2VzIl0KICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyBpbiAiTkhTTiBJbnBhdGllbnQgRW5jb3VudGVyIENsYXNzIENvZGVzIl0KICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyB+ICJlbWVyZ2VuY3kiXQogIHVuaW9uIFtFbmNvdW50ZXI6IGNsYXNzIH4gIm9ic2VydmF0aW9uIGVuY291bnRlciJdKSBRdWFsaWZ5aW5nRW5jb3VudGVycwogIHdoZXJlIFF1YWxpZnlpbmdFbmNvdW50ZXJzLnN0YXR1cyBpbiB7J2luLXByb2dyZXNzJywgJ2ZpbmlzaGVkJywgJ3RyaWFnZWQnLCAnb25sZWF2ZScsICdlbnRlcmVkLWluLWVycm9yJ30KICAgIGFuZCBRdWFsaWZ5aW5nRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgIk1lYXN1cmVtZW50IFBlcmlvZCIgCgpkZWZpbmUgIkVuY291bnRlcnMgd2l0aCBQYXRpZW50IEhvc3BpdGFsIExvY2F0aW9ucyI6CiAgIkVuY291bnRlcnMiIEVuY291bnRlcnMKICB3aGVyZSBleGlzdHMoCiAgICBFbmNvdW50ZXJzLmxvY2F0aW9uIEVuY291bnRlckxvY2F0aW9uCiAgICB3aGVyZSBOSFNOSGVscGVycy5HZXRMb2NhdGlvbihFbmNvdW50ZXJMb2NhdGlvbi5sb2NhdGlvbikudHlwZSBpbiAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiCiAgICAgIGFuZCBFbmNvdW50ZXJMb2NhdGlvbi5wZXJpb2Qgb3ZlcmxhcHMgRW5jb3VudGVycy5wZXJpb2QKICApCiAgYW5kIEVuY291bnRlcnMuc3RhdHVzIGluIHsnaW4tcHJvZ3Jlc3MnLCAnZmluaXNoZWQnLCAndHJpYWdlZCcsICdvbmxlYXZlJywgJ2VudGVyZWQtaW4tZXJyb3InfQogIGFuZCBFbmNvdW50ZXJzLnBlcmlvZCBvdmVybGFwcyAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogICJRdWFsaWZ5aW5nIEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIKICB1bmlvbiAiRW5jb3VudGVycyB3aXRoIFBhdGllbnQgSG9zcGl0YWwgTG9jYXRpb25zIgoKZGVmaW5lICJFbmNvdW50ZXJzIjoKICBbRW5jb3VudGVyXQoKZGVmaW5lICJDb25kaXRpb25zIjoKICBbQ29uZGl0aW9uXQoKZGVmaW5lICJEaWFnbm9zdGljUmVwb3J0cyI6CiAgW0RpYWdub3N0aWNSZXBvcnRdCgpkZWZpbmUgIk9ic2VydmF0aW9ucyI6CiAgW09ic2VydmF0aW9uXQoKZGVmaW5lICJHZXQgTG9jYXRpb25zIGZyb20gSVAgRW5jb3VudGVycyBpbiBNZWFzdXJlbWVudCBQZXJpb2QiOgogIGZsYXR0ZW4oIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICBsZXQgbG9jYXRpb25FbGVtZW50czogSVAubG9jYXRpb24KICByZXR1cm4KICAgIGxvY2F0aW9uRWxlbWVudHMgTEUKICAgIGxldCBsb2NhdGlvblJlZmVyZW5jZTogTEUubG9jYXRpb24KICAgIHJldHVybiBOSFNOSGVscGVycy5HZXRMb2NhdGlvbihsb2NhdGlvblJlZmVyZW5jZSkpCgpkZWZpbmUgIk1lZGljYXRpb24gSURzIjoKICAoIlNERSBNZWRpY2F0aW9uIFJlcXVlc3QiCiAgdW5pb24gIlNERSBNZWRpY2F0aW9uIEFkbWluaXN0cmF0aW9uIikgTWVkUmVxT3JBZG1pbgogIHdoZXJlIE1lZFJlcU9yQWRtaW4ubWVkaWNhdGlvbiBpcyBGSElSLlJlZmVyZW5jZQogICAgYW5kIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikgLy9ObyBsb25nZXIgbmVlZCB0byBjaGVjayBmb3IgdGltaW5nIGhlcmUgYmVjYXVzZSBpdCdzIGNoZWNrZWQgaW4gU0RFIE1lZGljYXRpb24gUmVxdWVzdC9BZG1pbmlzdHJpYXRpb24KICByZXR1cm4gTkhTTkhlbHBlcnMuR2V0SWQoTWVkUmVxT3JBZG1pbi5tZWRpY2F0aW9uLnJlZmVyZW5jZSkKCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovL1N1cHBsZW1lbnRhbCBEYXRhIEVsZW1lbnQKLy9XaGVuIEZISVIuY2Fub25pY2FsIHZhbHVlIGlzIHByZXNlbnQsIFVTIENvcmUgMy4xLjEgcHJvZmlsZXMgYXJlIHVzZWQKLy9XaGVuIEZISVIuY2Fub25pY2FsIHZhbHVlIGlzIG5vdCBwcmVzZW50LCBGSElSIEJhc2UgcHJvZmlsZXMgYXJlIHVzZWQKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRlZmluZSAiU0RFIENvbmRpdGlvbiI6CiAgIkNvbmRpdGlvbnMiIENvbmRpdGlvbnMgCiAgICB3aGVyZSBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAovL0NoZWNrIGZvciBQcm9ibGVtIExpc3QgQ29uZGl0aW9ucyB0aGF0IHdlcmUgcmVjb3JkZWQgYmVmb3JlIG9yIGR1cmluZyBJUCAKICAgICB3aGVyZSAKICAgICAgKGV4aXN0cyhJUC5kaWFnbm9zaXMgRGlhZ25vc2VzCiAgICAgICAgICB3aGVyZSBOSFNOSGVscGVycy5HZXRJZChEaWFnbm9zZXMuY29uZGl0aW9uLnJlZmVyZW5jZSkgPSBDb25kaXRpb25zLmlkCiAgICAgICAgKQogICAgICAgIG9yIE5IU05IZWxwZXJzLkdldElkKENvbmRpdGlvbnMuZW5jb3VudGVyLnJlZmVyZW5jZSkgPSBJUC5pZAogICAgICApCiAgICAgIGFuZCBleGlzdHMgKENvbmRpdGlvbnMuY2F0ZWdvcnkgY2F0ZWdvcmllcwogICAgICAgIHdoZXJlIGNhdGVnb3JpZXMgfiAiZW5jb3VudGVyLWRpYWdub3NpcyIKICAgICkKICApCiAgcmV0dXJuIENvbmRpdGlvblJlc291cmNlKENvbmRpdGlvbnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1jb25kaXRpb24nfX0sCiAgIHsiZW5jb3VudGVyLWRpYWdub3NpcyJ9KQoKZGVmaW5lICJTREUgQ292ZXJhZ2UiOiAKCVtDb3ZlcmFnZV0gQ292ZXJhZ2VzCiAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIENvdmVyYWdlcy5wZXJpb2Qgb3ZlcmxhcHMgSVAucGVyaW9kKQogIHJldHVybiBDb3ZlcmFnZVJlc291cmNlKENvdmVyYWdlcywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LWNvdmVyYWdlJ319KQoKZGVmaW5lICJTREUgRGV2aWNlIjoKICBbRGV2aWNlXSBEZXZpY2VzIAogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICByZXR1cm4gRGV2aWNlUmVzb3VyY2UoRGV2aWNlcywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LWRldmljZSd9fSkKCi8vVGhpcyBibG9jayBjb2xsZWN0cyBhbGwgRGlhZ25vc3RpY1JlcG9ydCByZXNvdXJjZXMgd2hpbGUgYWxzbyBtYXJraW5nIExhYiBhbmQgTm90ZSBEaWFnbm9zdGljUmVwb3J0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBwcm9maWxlcwovLyNTdGFydCBEaWFnbm9zdGljUmVwb3J0IGJsb2NrCmRlZmluZSAiU0RFIERpYWdub3N0aWNSZXBvcnQgTGFiIjoKICAiRGlhZ25vc3RpY1JlcG9ydHMiIERpYWdub3N0aWNSZXBvcnRzCiAgd2hlcmUgKGV4aXN0cyhEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJMQUIiKQogICAgYW5kIGV4aXN0cygKICAgICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoRGlhZ25vc3RpY1JlcG9ydHMuZWZmZWN0aXZlKSBvdmVybGFwcyBJUC5wZXJpb2QpKQogIHJldHVybiBEaWFnbm9zdGljUmVwb3J0TGFiUmVzb3VyY2UoRGlhZ25vc3RpY1JlcG9ydHMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1kaWFnbm9zdGljcmVwb3J0LWxhYid9fSwKICB7IkxBQiIsICJSYWRpb2xvZ3kiLCAiUGF0aG9sb2d5IiwgIkNhcmRpb2xvZ3kifSkKIApkZWZpbmUgIlNERSBEaWFnbm9zdGljUmVwb3J0IE5vdGUiOgogICJEaWFnbm9zdGljUmVwb3J0cyIgRGlhZ25vc3RpY1JlcG9ydHMKICB3aGVyZSAoKGV4aXN0cyhEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJSYWRpb2xvZ3kiKSkKICAgIG9yIGV4aXN0cygoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiUGF0aG9sb2d5IikpCiAgICBvciBleGlzdHMoKERpYWdub3N0aWNSZXBvcnRzLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gIkNhcmRpb2xvZ3kiKSkpCiAgICBhbmQgZXhpc3RzKAogICAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgICB3aGVyZSBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihEaWFnbm9zdGljUmVwb3J0cy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gRGlhZ25vc3RpY1JlcG9ydFJlc291cmNlKERpYWdub3N0aWNSZXBvcnRzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktZGlhZ25vc3RpY3JlcG9ydC1ub3RlJ319LAogIHsiUmFkaW9sb2d5IiwgIlBhdGhvbG9neSIsICJDYXJkaW9sb2d5IiwgIkxBQiJ9KQovLyNFbmQgRGlhZ25vc3RpY1JlcG9ydCBibG9jawoKZGVmaW5lICJTREUgRW5jb3VudGVyIjogCiAgIkVuY291bnRlcnMiIEVuY291bnRlcnMKICB3aGVyZSBub3QgQ2hlY2tJUChFbmNvdW50ZXJzKQogIGFuZCBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgSVAucGVyaW9kKQogIHJldHVybiBFbmNvdW50ZXJSZXNvdXJjZShFbmNvdW50ZXJzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uL3VzLWNvcmUtZW5jb3VudGVyJ319KQoKZGVmaW5lICJTREUgSVAgRW5jb3VudGVycyI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICByZXR1cm4gRW5jb3VudGVyUmVzb3VyY2UoSVAsIAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktZW5jb3VudGVyJ319KQoKZGVmaW5lICJTREUgTG9jYXRpb24iOgogICJHZXQgTG9jYXRpb25zIGZyb20gSVAgRW5jb3VudGVycyBpbiBNZWFzdXJlbWVudCBQZXJpb2QiIExvY2F0aW9ucwogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICBhbmQgTG9jYXRpb25zIGlzIG5vdCBudWxsCiAgcmV0dXJuIExvY2F0aW9uUmVzb3VyY2UoTG9jYXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktbG9jYXRpb24nfX0pCiAKZGVmaW5lICJTREUgTWVkaWNhdGlvbiBBZG1pbmlzdHJhdGlvbiI6CiAgW01lZGljYXRpb25BZG1pbmlzdHJhdGlvbl0gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucyAKICB3aGVyZSBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uUmVzb3VyY2UoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LW1lZGljYXRpb25hZG1pbmlzdHJhdGlvbid9fSwKICB7ImlucGF0aWVudCIsICJvdXRwYXRpZW50In0pCiAKZGVmaW5lICJTREUgTWVkaWNhdGlvbiBSZXF1ZXN0IjoKICBbTWVkaWNhdGlvblJlcXVlc3RdIE1lZGljYXRpb25SZXF1ZXN0cyAKICB3aGVyZSBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgTWVkaWNhdGlvblJlcXVlc3RzLmF1dGhvcmVkT24gZHVyaW5nIElQLnBlcmlvZCkKICByZXR1cm4gTWVkaWNhdGlvblJlcXVlc3RSZXNvdXJjZShNZWRpY2F0aW9uUmVxdWVzdHMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1tZWRpY2F0aW9ucmVxdWVzdCd9fSwKICB7ImlucGF0aWVudCIsICJvdXRwYXRpZW50In0pCiAgCmRlZmluZSAiU0RFIE1lZGljYXRpb24iOgogIFtNZWRpY2F0aW9uXSBNZWRpY2F0aW9ucwogIHdoZXJlIE1lZGljYXRpb25zLmlkIGluICJNZWRpY2F0aW9uIElEcyIKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvblJlc291cmNlKE1lZGljYXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktbWVkaWNhdGlvbid9fSkKCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIExhYiBDYXRlZ29yeSI6CiAgIk9ic2VydmF0aW9ucyIgT2JzZXJ2YXRpb25zIAogIHdoZXJlIChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gImxhYm9yYXRvcnkiKSkKICAgIGFuZCBleGlzdHMoCiAgICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKE9ic2VydmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gT2JzZXJ2YXRpb25MYWJSZXNvdXJjZShPYnNlcnZhdGlvbnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1vYnNlcnZhdGlvbi1sYWInfX0sCiAgeyJpbWFnaW5nIiwgInByb2NlZHVyZSIsICJ2aXRhbC1zaWducyIsICJsYWJvcmF0b3J5In0pCgovL1ZpdGFsIFNpZ25zIE9ic2VydmF0aW9uIGhhcyBpdHMgb3duIHByb2ZpbGUgaW4gRkhJUiBCYXNlCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIFZpdGFsIFNpZ25zIENhdGVnb3J5IjoKICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMgCiAgd2hlcmUgKGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAidml0YWwtc2lnbnMiKSkKICAgIGFuZCBleGlzdHMoCiAgICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKE9ic2VydmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gT2JzZXJ2YXRpb25WaXRhbFNpZ25zUmVzb3VyY2UoT2JzZXJ2YXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktb2JzZXJ2YXRpb24tdml0YWxzJ319LAogIHsiaW1hZ2luZyIsICJwcm9jZWR1cmUiLCAidml0YWwtc2lnbnMiLCAibGFib3JhdG9yeSJ9KQoKLy9EZWZhdWx0aW5nIHRvIGJhc2UgRkhJUiBwcm9maWxlIGFzIHRoZXJlIGFyZSBubyBpbmRpdmlkdWFsIHByb2ZpbGVzIGluIFVTIENvcmUgMy4xLjEgdGhhdCBjb3ZlciB0aGVzZSBPYnNlcnZhdGlvbiBjYXRlZ29yaWVzCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIENhdGVnb3J5IjoKICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMgCiAgd2hlcmUgKC8qKGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAic29jaWFsLWhpc3RvcnkiKSkKICAgIG9yIChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gInN1cnZleSIpKQogICAgb3IgKi8oZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJpbWFnaW5nIikpCiAgICBvciAoZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJwcm9jZWR1cmUiKSkpCiAgICBhbmQgZXhpc3RzKAogICAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgICB3aGVyZSBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihPYnNlcnZhdGlvbnMuZWZmZWN0aXZlKSBvdmVybGFwcyBJUC5wZXJpb2QpCiAgcmV0dXJuIE9ic2VydmF0aW9uUmVzb3VyY2UoT2JzZXJ2YXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktb2JzZXJ2YXRpb24nfX0sCiAgeyJpbWFnaW5nIiwgInByb2NlZHVyZSIsICJ2aXRhbC1zaWducyIsICJsYWJvcmF0b3J5In0pCgpkZWZpbmUgIlNERSBQcm9jZWR1cmUiOgogIFtQcm9jZWR1cmVdIFByb2NlZHVyZXMgCiAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKFByb2NlZHVyZXMucGVyZm9ybWVkKSBvdmVybGFwcyBJUC5wZXJpb2QpCiAgICAgIGFuZCAoCiAgICAgIFByb2NlZHVyZXMuY2F0ZWdvcnkgfiAiU3VyZ2ljYWwgcHJvY2VkdXJlIgogICAgICBvciBQcm9jZWR1cmVzLmNhdGVnb3J5IH4gIkRpYWdub3N0aWMgcHJvY2VkdXJlIikKICAgICByZXR1cm4gUHJvY2VkdXJlUmVzb3VyY2UoUHJvY2VkdXJlcywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LXByb2NlZHVyZSd9fSwKICB7IlN1cmdpY2FsIHByb2NlZHVyZSIsICJEaWFnbm9zdGljIHByb2NlZHVyZSJ9KQoKZGVmaW5lICJTREUgU3BlY2ltZW4iOgogIFtTcGVjaW1lbl0gU3BlY2ltZW5zCiAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKFNwZWNpbWVucy5jb2xsZWN0aW9uLmNvbGxlY3RlZCkgb3ZlcmxhcHMgSVAucGVyaW9kCiAgKQogIHJldHVybiBTcGVjaW1lblJlc291cmNlKFNwZWNpbWVucywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LXNwZWNpbWVuJ319KQoKZGVmaW5lICJTREUgU2VydmljZSBSZXF1ZXN0IjoKICBbU2VydmljZVJlcXVlc3RdIFNlcnZpY2VSZXF1ZXN0cwogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgU2VydmljZVJlcXVlc3RzLmF1dGhvcmVkT24gZHVyaW5nIElQLnBlcmlvZCkKICAgIGFuZCBleGlzdHMoCiAgICAgIFNlcnZpY2VSZXF1ZXN0cy5jYXRlZ29yeSBDIAogICAgICB3aGVyZSBDIH4gIkxhYm9yYXRvcnkgcHJvY2VkdXJlIgogICAgICAgICBvciBDIH4gIlN1cmdpY2FsIHByb2NlZHVyZSIKICAgICAgICAgb3IgQyB+ICJJbWFnaW5nIgogICAgKQogIHJldHVybiBTZXJ2aWNlUmVxdWVzdFJlc291cmNlKFNlcnZpY2VSZXF1ZXN0cywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LXNlcnZpY2VyZXF1ZXN0J319LAogIHsiTGFib3JhdG9yeSBwcm9jZWR1cmUiLCAiU3VyZ2ljYWwgcHJvY2VkdXJlIiwgIkltYWdpbmcifSkKCmRlZmluZSAiU0RFIE1pbmltYWwgUGF0aWVudCI6CiAgUGF0aWVudCBwCiAgcmV0dXJuIFNoYXJlZFJlc291cmNlLlBhdGllbnRSZXNvdXJjZShwLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vY3Jvc3MtbWVhc3VyZS1wYXRpZW50J319KQoKLy8KLy9GdW5jdGlvbnMKLy8KZGVmaW5lIGZ1bmN0aW9uICJDaGVja0lQIihlbmNvdW50ZXIgRW5jb3VudGVyKToKICBleGlzdHMoIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICB3aGVyZSBlbmNvdW50ZXIuaWQgPSBJUC5pZCkKCmRlZmluZSBmdW5jdGlvbiAiR2V0TWVkaWNhdGlvbkZyb20iKGNob2ljZSBDaG9pY2U8RkhJUi5Db2RlYWJsZUNvbmNlcHQsIEZISVIuUmVmZXJlbmNlPik6CiAgY2FzZQogICAgd2hlbiBjaG9pY2UgaXMgRkhJUi5SZWZlcmVuY2UgdGhlbgogICAgICBHZXRNZWRpY2F0aW9uKGNob2ljZSBhcyBGSElSLlJlZmVyZW5jZSkKICAgIGVsc2UKICAgICAgbnVsbAogIGVuZAoKZGVmaW5lIGZ1bmN0aW9uICJHZXRNZWRpY2F0aW9uIihyZWZlcmVuY2UgUmVmZXJlbmNlKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICBbTWVkaWNhdGlvbl0gTWVkaWNhdGlvbnMKICAgIHdoZXJlIE1lZGljYXRpb25zLmlkID0gTkhTTkhlbHBlcnMuR2V0SWQocmVmZXJlbmNlLnJlZmVyZW5jZSkKICApCgpkZWZpbmUgZnVuY3Rpb24gIkdldENvbmRpdGlvbiIocmVmZXJlbmNlIFJlZmVyZW5jZSk6CiAgc2luZ2xldG9uIGZyb20gKAogICAgIkNvbmRpdGlvbnMiIENvbmRpdGlvbnMKICAgIHdoZXJlIENvbmRpdGlvbnMuaWQgPSBOSFNOSGVscGVycy5HZXRJZChyZWZlcmVuY2UucmVmZXJlbmNlKQogICkKCmRlZmluZSBmdW5jdGlvbiAiR2V0RW5jb3VudGVyIihyZWZlcmVuY2UgUmVmZXJlbmNlKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICAiRW5jb3VudGVycyIgRW5jb3VudGVycwogICAgd2hlcmUgRW5jb3VudGVycy5pZCA9IE5IU05IZWxwZXJzLkdldElkKHJlZmVyZW5jZS5yZWZlcmVuY2UpCiAgKQoKZGVmaW5lIGZ1bmN0aW9uIFJlbW92ZVVuYWNjZXB0ZWQoY29kZXMgTGlzdDxGSElSLkNvZGVhYmxlQ29uY2VwdD4sIGFjY2VwdGVkIExpc3Q8U3lzdGVtLkNvZGU+KToKICBjb2RlcyBjCiAgd2hlcmUgZXhpc3RzKAogICAgYWNjZXB0ZWQgYQogICAgd2hlcmUgYyB+IGEKICApCgpkZWZpbmUgZnVuY3Rpb24gRmlsdGVyQ29kZWFibGVDb25jZXB0cyhjb2RlcyBMaXN0PEZISVIuQ29kZWFibGVDb25jZXB0PiwgYWNjZXB0ZWQgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIGlmIENvdW50KGFjY2VwdGVkKSA+IDAKICAgIHRoZW4gUmVtb3ZlVW5hY2NlcHRlZChjb2RlcywgYWNjZXB0ZWQpCiAgZWxzZSBjb2RlcyAgICAKCi8vCi8vTWVhc3VyZSBTcGVjaWZpYyBSZXNvdXJjZSBDcmVhdGlvbiBGdW5jdGlvbnMKLy8KCmRlZmluZSBmdW5jdGlvbiBDb25kaXRpb25SZXNvdXJjZShjb25kaXRpb24gQ29uZGl0aW9uLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToKICBjb25kaXRpb24gYwogIHJldHVybiBDb25kaXRpb257CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIGMuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoYywgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBjLmV4dGVuc2lvbiwKICAgIGNsaW5pY2FsU3RhdHVzOiBjLmNsaW5pY2FsU3RhdHVzLAogICAgdmVyaWZpY2F0aW9uU3RhdHVzOiBjLnZlcmlmaWNhdGlvblN0YXR1cywKICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKGMuY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBjb2RlOiBjLmNvZGUsCiAgICBzdWJqZWN0OiBjLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IGMuZW5jb3VudGVyLAogICAgb25zZXQ6IGMub25zZXQsCiAgICBhYmF0ZW1lbnQ6IGMuYWJhdGVtZW50LAogICAgcmVjb3JkZWREYXRlOiBjLnJlY29yZGVkRGF0ZQogIH0KCmRlZmluZSBmdW5jdGlvbiBDb3ZlcmFnZVJlc291cmNlKGNvdmVyYWdlIENvdmVyYWdlLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6CiAgY292ZXJhZ2UgYwogIHJldHVybiBDb3ZlcmFnZXsKICAgIGlkOiBGSElSLmlke3ZhbHVlOiAnTENSLScgKyBjLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGMsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogYy5leHRlbnNpb24sCiAgICBzdGF0dXM6IGMuc3RhdHVzLAogICAgdHlwZTogYy50eXBlLAogICAgYmVuZWZpY2lhcnk6IGMuYmVuZWZpY2lhcnksCiAgICBwZXJpb2Q6IGMucGVyaW9kLAogICAgcGF5b3I6IGMucGF5b3IKICB9CgpkZWZpbmUgZnVuY3Rpb24gRGV2aWNlUmVzb3VyY2UoZGV2aWNlIERldmljZSwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4pOgogIGRldmljZSBkCiAgcmV0dXJuIERldmljZXsKICAgIGlkOiBGSElSLmlke3ZhbHVlOiAnTENSLScgKyBkLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGQsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogZC5leHRlbnNpb24sCiAgICBzdGF0dXM6IGQuc3RhdHVzLAogICAgZXhwaXJhdGlvbkRhdGU6IGQuZXhwaXJhdGlvbkRhdGUsCiAgICBsb3ROdW1iZXI6IGQubG90TnVtYmVyLAogICAgc2VyaWFsTnVtYmVyOiBkLnNlcmlhbE51bWJlciwKICAgIG1vZGVsTnVtYmVyOiBkLm1vZGVsTnVtYmVyLAogICAgcGFydE51bWJlcjogZC5wYXJ0TnVtYmVyLAogICAgdHlwZTogZC50eXBlLAogICAgcGF0aWVudDogZC5wYXRpZW50LAogICAgcGFyZW50OiBkLnBhcmVudAogIH0KCmRlZmluZSBmdW5jdGlvbiBEaWFnbm9zdGljUmVwb3J0Q29kaW5nKGNvZGluZyBMaXN0PENvZGluZz4pOgogIGNvZGluZyBjCiAgcmV0dXJuIENvZGluZ3sKICAgIHN5c3RlbTogYy5zeXN0ZW0sCiAgICB2ZXJzaW9uOiBjLnZlcnNpb24sCiAgICBjb2RlOiBjLmNvZGUsCiAgICBkaXNwbGF5OiBjLmRpc3BsYXkKICB9CgpkZWZpbmUgZnVuY3Rpb24gRGlhZ25vc3RpY1JlcG9ydENhdGVnb3J5KGNhdGVnb3J5IExpc3Q8Q29kZWFibGVDb25jZXB0Pik6CiAgY2F0ZWdvcnkgYwogIHJldHVybiBDb2RlYWJsZUNvbmNlcHR7CiAgICBjb2Rpbmc6IERpYWdub3N0aWNSZXBvcnRDb2RpbmcoYy5jb2RpbmcpCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIERpYWdub3N0aWNSZXBvcnRMYWJSZXNvdXJjZShkaWFnbm9zdGljUmVwb3J0IERpYWdub3N0aWNSZXBvcnQsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIGRpYWdub3N0aWNSZXBvcnQgZAogIHJldHVybiBEaWFnbm9zdGljUmVwb3J0ewogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGQuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoZCwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBkLmV4dGVuc2lvbiwKICAgIGJhc2VkT246IGQuYmFzZWRPbiwKICAgIHN0YXR1czogZC5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhEaWFnbm9zdGljUmVwb3J0Q2F0ZWdvcnkoZC5jYXRlZ29yeSksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBjb2RlOiBkLmNvZGUsCiAgICBzdWJqZWN0OiBkLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IGQuZW5jb3VudGVyLAogICAgZWZmZWN0aXZlOiBkLmVmZmVjdGl2ZSwKICAgIGlzc3VlZDogZC5pc3N1ZWQsCiAgICBzcGVjaW1lbjogZC5zcGVjaW1lbiwKICAgIHJlc3VsdDogZC5yZXN1bHQsCiAgICBjb25jbHVzaW9uOiBkLmNvbmNsdXNpb24sCiAgICBjb25jbHVzaW9uQ29kZTogZC5jb25jbHVzaW9uQ29kZQogIH0KCmRlZmluZSBmdW5jdGlvbiBEaWFnbm9zdGljUmVwb3J0UmVzb3VyY2UoZGlhZ25vc3RpY1JlcG9ydCBEaWFnbm9zdGljUmVwb3J0LCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToKICBkaWFnbm9zdGljUmVwb3J0IGQKICByZXR1cm4gRGlhZ25vc3RpY1JlcG9ydHsKICAgIGlkOiBGSElSLmlke3ZhbHVlOiAnTENSLScgKyBkLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGQsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogZC5leHRlbnNpb24sCiAgICBiYXNlZE9uOiBkLmJhc2VkT24sCiAgICBzdGF0dXM6IGQuc3RhdHVzLAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoZC5jYXRlZ29yeSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwKICAgIGNvZGU6IGQuY29kZSwKICAgIHN1YmplY3Q6IGQuc3ViamVjdCwKICAgIGVuY291bnRlcjogZC5lbmNvdW50ZXIsCiAgICBlZmZlY3RpdmU6IGQuZWZmZWN0aXZlLAogICAgaXNzdWVkOiBkLmlzc3VlZCwKICAgIHNwZWNpbWVuOiBkLnNwZWNpbWVuLAogICAgcmVzdWx0OiBkLnJlc3VsdCwKICAgIGNvbmNsdXNpb246IGQuY29uY2x1c2lvbiwKICAgIGNvbmNsdXNpb25Db2RlOiBkLmNvbmNsdXNpb25Db2RlCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIEVuY291bnRlckhvc3BpdGFsaXphdGlvbihob3NwaXRhbGl6YXRpb24gRkhJUi5FbmNvdW50ZXIuSG9zcGl0YWxpemF0aW9uKToKICBob3NwaXRhbGl6YXRpb24gaAogIHJldHVybiBGSElSLkVuY291bnRlci5Ib3NwaXRhbGl6YXRpb257CiAgICBleHRlbnNpb246IGguZXh0ZW5zaW9uLAogICAgb3JpZ2luOiBoLm9yaWdpbiwKICAgIGFkbWl0U291cmNlOiBoLmFkbWl0U291cmNlLAogICAgcmVBZG1pc3Npb246IGgucmVBZG1pc3Npb24sCiAgICBkaWV0UHJlZmVyZW5jZTogaC5kaWV0UHJlZmVyZW5jZSwKICAgIGRpc2NoYXJnZURpc3Bvc2l0aW9uOiBoLmRpc2NoYXJnZURpc3Bvc2l0aW9uCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIEVuY291bnRlclJlc291cmNlKGVuY291bnRlciBFbmNvdW50ZXIsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBlbmNvdW50ZXIgZQogIHJldHVybiBFbmNvdW50ZXJ7CiAgICBpZDogRkhJUi5pZHt2YWx1ZTogJ0xDUi0nICsgZS5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChlLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IGUuZXh0ZW5zaW9uLAogICAgaWRlbnRpZmllcjogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVySWRlbnRpZmllcihlLmlkZW50aWZpZXIpLAogICAgc3RhdHVzOiBlLnN0YXR1cywKICAgIHN0YXR1c0hpc3Rvcnk6IFNoYXJlZFJlc291cmNlLkVuY291bnRlclN0YXR1c0hpc3RvcnkoZS5zdGF0dXNIaXN0b3J5KSwKICAgIGNsYXNzOiBlLmNsYXNzLAogICAgY2xhc3NIaXN0b3J5OiBTaGFyZWRSZXNvdXJjZS5FbmNvdW50ZXJDbGFzc0hpc3RvcnkoZS5jbGFzc0hpc3RvcnkpLAogICAgdHlwZTogZS50eXBlLAogICAgc3ViamVjdDogZS5zdWJqZWN0LAogICAgcGVyaW9kOiBlLnBlcmlvZCwKICAgIHJlYXNvbkNvZGU6IGUucmVhc29uQ29kZSwKICAgIGRpYWdub3NpczogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyRGlhZ25vc2lzKGUuZGlhZ25vc2lzKSwKICAgIGhvc3BpdGFsaXphdGlvbjogRW5jb3VudGVySG9zcGl0YWxpemF0aW9uKGUuaG9zcGl0YWxpemF0aW9uKSwKICAgIGxvY2F0aW9uOiBTaGFyZWRSZXNvdXJjZS5FbmNvdW50ZXJMb2NhdGlvbihlLmxvY2F0aW9uKSwKICAgIHBhcnRPZjogZS5wYXJ0T2YKICB9CgpkZWZpbmUgZnVuY3Rpb24gTG9jYXRpb25SZXNvdXJjZShsb2NhdGlvbiBMb2NhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4pOgogIGxvY2F0aW9uIGwKICByZXR1cm4gTG9jYXRpb257CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIGwuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQobCwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBsLmV4dGVuc2lvbiwKICAgIHN0YXR1czogbC5zdGF0dXMsCiAgICBuYW1lOiBsLm5hbWUsCiAgICBhbGlhczogbC5hbGlhcywKICAgIHR5cGU6IGwudHlwZSwKICAgIHBoeXNpY2FsVHlwZTogbC5waHlzaWNhbFR5cGUsCiAgICBtYW5hZ2luZ09yZ2FuaXphdGlvbjogbC5tYW5hZ2luZ09yZ2FuaXphdGlvbiwKICAgIHBhcnRPZjogbC5wYXJ0T2YKICB9CgpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3RSZXBlYXQocmVwZWF0IEZISVIuVGltaW5nLlJlcGVhdCk6CiAgcmVwZWF0IHIKICByZXR1cm4gRkhJUi5UaW1pbmcuUmVwZWF0ewogICAgYm91bmRzOiByLmJvdW5kcywKICAgIGNvdW50OiByLmNvdW50LAogICAgY291bnRNYXg6IHIuY291bnRNYXgsCiAgICAiZHVyYXRpb24iOiByLiJkdXJhdGlvbiIsCiAgICBkdXJhdGlvbk1heDogci5kdXJhdGlvbk1heCwKICAgIGR1cmF0aW9uVW5pdDogci5kdXJhdGlvblVuaXQsCiAgICBmcmVxdWVuY3k6IHIuZnJlcXVlbmN5LAogICAgZnJlcXVlbmN5TWF4OiByLmZyZXF1ZW5jeU1heCwKICAgIHBlcmlvZDogci5wZXJpb2QsCiAgICBwZXJpb2RNYXg6IHIucGVyaW9kTWF4LAogICAgcGVyaW9kVW5pdDogci5wZXJpb2RVbml0LAogICAgZGF5T2ZXZWVrOiByLmRheU9mV2VlaywKICAgIHRpbWVPZkRheTogci50aW1lT2ZEYXksCiAgICAid2hlbiI6IHIuIndoZW4iLAogICAgb2Zmc2V0OiByLm9mZnNldAogIH0KCmRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uUmVxdWVzdFRpbWluZyh0aW1pbmcgRkhJUi5UaW1pbmcpOgogIHRpbWluZyB0CiAgcmV0dXJuIEZISVIuVGltaW5newogICAgZXZlbnQ6IHQuZXZlbnQsCiAgICByZXBlYXQ6IE1lZGljYXRpb25SZXF1ZXN0UmVwZWF0KHQucmVwZWF0KSwKICAgIGNvZGU6IHQuY29kZQogIH0KCmRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uUmVxdWVzdERvc2FnZUluc3RydWN0aW9uKGRvc2FnZUluc3RydWN0aW9uIExpc3Q8RkhJUi5Eb3NhZ2U+KToKICBkb3NhZ2VJbnN0cnVjdGlvbiBkSQogIHJldHVybiBGSElSLkRvc2FnZXsKICAgIHRleHQ6IGRJLnRleHQsCiAgICBwYXRpZW50SW5zdHJ1Y3Rpb246IGRJLnBhdGllbnRJbnN0cnVjdGlvbiwKICAgIHRpbWluZzogTWVkaWNhdGlvblJlcXVlc3RUaW1pbmcoZEkudGltaW5nKSwKICAgIGFzTmVlZGVkOiBkSS5hc05lZWRlZCwKICAgIHNpdGU6IGRJLnNpdGUsCiAgICByb3V0ZTogZEkucm91dGUsCiAgICBtZXRob2Q6IGRJLm1ldGhvZCwKICAgIGRvc2VBbmRSYXRlOiBTaGFyZWRSZXNvdXJjZS5NZWRpY2F0aW9uUmVxdWVzdERvc2VBbmRSYXRlKGRJLmRvc2VBbmRSYXRlKQogIH0KCmRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uUmVxdWVzdFJlc291cmNlKG1lZGljYXRpb25SZXF1ZXN0IE1lZGljYXRpb25SZXF1ZXN0LCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToKICBtZWRpY2F0aW9uUmVxdWVzdCBtCiAgcmV0dXJuIE1lZGljYXRpb25SZXF1ZXN0ewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBtLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG1lZGljYXRpb25SZXF1ZXN0LCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IG0uZXh0ZW5zaW9uLAogICAgc3RhdHVzOiBtLnN0YXR1cywKICAgIHN0YXR1c1JlYXNvbjogbS5zdGF0dXNSZWFzb24sCiAgICBpbnRlbnQ6IG0uaW50ZW50LAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMobS5jYXRlZ29yeSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwKICAgIHByaW9yaXR5OiBtLnByaW9yaXR5LAogICAgZG9Ob3RQZXJmb3JtOiBtLmRvTm90UGVyZm9ybSwKICAgIHJlcG9ydGVkOiBtLnJlcG9ydGVkLAogICAgbWVkaWNhdGlvbjogbS5tZWRpY2F0aW9uLAogICAgc3ViamVjdDogbS5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBtLmVuY291bnRlciwKICAgIGF1dGhvcmVkT246IG0uYXV0aG9yZWRPbiwKICAgIC8vKnJlcXVlc3RlcjogbS5yZXF1ZXN0ZXIsCiAgICByZWNvcmRlcjogbS5yZWNvcmRlciwKICAgIHJlYXNvbkNvZGU6IG0ucmVhc29uQ29kZSwKICAgIHJlYXNvblJlZmVyZW5jZTogbS5yZWFzb25SZWZlcmVuY2UsCiAgICBpbnN0YW50aWF0ZXNDYW5vbmljYWw6IG0uaW5zdGFudGlhdGVzQ2Fub25pY2FsLAogICAgaW5zdGFudGlhdGVzVXJpOiBtLmluc3RhbnRpYXRlc1VyaSwKICAgIGNvdXJzZU9mVGhlcmFweVR5cGU6IG0uY291cnNlT2ZUaGVyYXB5VHlwZSwKICAgIGRvc2FnZUluc3RydWN0aW9uOiBTaGFyZWRSZXNvdXJjZS5NZWRpY2F0aW9uUmVxdWVzdERvc2FnZUluc3RydWN0aW9uKG0uZG9zYWdlSW5zdHJ1Y3Rpb24pCiAgfQoKICBkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uUmVzb3VyY2UobWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uIE1lZGljYXRpb25BZG1pbmlzdHJhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgbWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uIG0KICByZXR1cm4gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBtLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG0sIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogbS5leHRlbnNpb24sCiAgICBpbnN0YW50aWF0ZXM6IG0uaW5zdGFudGlhdGVzLAogICAgcGFydE9mOiBtLnBhcnRPZiwKICAgIHN0YXR1czogbS5zdGF0dXMsCiAgICBzdGF0dXNSZWFzb246IG0uc3RhdHVzUmVhc29uLAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoe20uY2F0ZWdvcnl9LCBhY2NlcHRlZENhdGVnb3JpZXMpWzBdLAogICAgbWVkaWNhdGlvbjogbS5tZWRpY2F0aW9uLAogICAgc3ViamVjdDogbS5zdWJqZWN0LAogICAgY29udGV4dDogbS5jb250ZXh0LAogICAgc3VwcG9ydGluZ0luZm9ybWF0aW9uOiBtLnN1cHBvcnRpbmdJbmZvcm1hdGlvbiwKICAgIGVmZmVjdGl2ZTogbS5lZmZlY3RpdmUsCiAgICAvLypwZXJmb3JtZXI6IFNoYXJlZFJlc291cmNlLk1lZGljYXRpb25BZG1pbmlzdHJhdGlvblBlcmZvcm1lcihtLnBlcmZvcm1lciksCiAgICByZWFzb25Db2RlOiBtLnJlYXNvbkNvZGUsCiAgICByZWFzb25SZWZlcmVuY2U6IG0ucmVhc29uUmVmZXJlbmNlLAogICAgcmVxdWVzdDogbS5yZXF1ZXN0LAogICAgZGV2aWNlOiBtLmRldmljZSwKICAgIG5vdGU6IG0ubm90ZSwKICAgIGRvc2FnZTogU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uRG9zYWdlKG0uZG9zYWdlKSwKICAgIGV2ZW50SGlzdG9yeTogbS5ldmVudEhpc3RvcnkKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJSZWZlcmVuY2VSYW5nZShyZWZlcmVuY2VSYW5nZSBMaXN0PEZISVIuT2JzZXJ2YXRpb24uUmVmZXJlbmNlUmFuZ2U+KToKICByZWZlcmVuY2VSYW5nZSByUgogIHJldHVybiBGSElSLk9ic2VydmF0aW9uLlJlZmVyZW5jZVJhbmdlewogICAgbG93OiByUi5sb3csCiAgICBoaWdoOiByUi5oaWdoLAogICAgdHlwZTogclIudHlwZSwKICAgIGFwcGxpZXNUbzogclIuYXBwbGllc1RvLAogICAgYWdlOiByUi5hZ2UKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJDb2RpbmcoY29kaW5nIExpc3Q8Q29kaW5nPik6CiAgY29kaW5nIGMKICByZXR1cm4gQ29kaW5newogICAgc3lzdGVtOiBjLnN5c3RlbSwKICAgIHZlcnNpb246IGMudmVyc2lvbiwKICAgIGNvZGU6IGMuY29kZSwKICAgIGRpc3BsYXk6IGMuZGlzcGxheSwKICAgIHVzZXJTZWxlY3RlZDogYy51c2VyU2VsZWN0ZWQKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJDYXRlZ29yeShjYXRlZ29yeSBMaXN0PENvZGVhYmxlQ29uY2VwdD4pOgogIGNhdGVnb3J5IGMKICByZXR1cm4gQ29kZWFibGVDb25jZXB0ewogICAgY29kaW5nOiBPYnNlcnZhdGlvbkxhYkNvZGluZyhjLmNvZGluZyksCiAgICB0ZXh0OiBjLnRleHQKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJSZXNvdXJjZShvYnNlcnZhdGlvbiBPYnNlcnZhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgb2JzZXJ2YXRpb24gbwogIHJldHVybiBPYnNlcnZhdGlvbnsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgby5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChvLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IG8uZXh0ZW5zaW9uLAogICAgcGFydE9mOiBvLnBhcnRPZiwKICAgIHN0YXR1czogby5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhPYnNlcnZhdGlvbkxhYkNhdGVnb3J5KG8uY2F0ZWdvcnkpLCBhY2NlcHRlZENhdGVnb3JpZXMpLAogICAgY29kZTogby5jb2RlLAogICAgc3ViamVjdDogby5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBvLmVuY291bnRlciwKICAgIGVmZmVjdGl2ZTogby5lZmZlY3RpdmUsCiAgICBpc3N1ZWQ6IG8uaXNzdWVkLAogICAgdmFsdWU6IG8udmFsdWUsCiAgICBkYXRhQWJzZW50UmVhc29uOiBvLmRhdGFBYnNlbnRSZWFzb24sCiAgICBpbnRlcnByZXRhdGlvbjogby5pbnRlcnByZXRhdGlvbiwKICAgIGJvZHlTaXRlOiBvLmJvZHlTaXRlLAogICAgbWV0aG9kOiBvLm1ldGhvZCwKICAgIHNwZWNpbWVuOiBvLnNwZWNpbWVuLAogICAgcmVmZXJlbmNlUmFuZ2U6IE9ic2VydmF0aW9uTGFiUmVmZXJlbmNlUmFuZ2Uoby5yZWZlcmVuY2VSYW5nZSksCiAgICBoYXNNZW1iZXI6IG8uaGFzTWVtYmVyLAogICAgZGVyaXZlZEZyb206IG8uZGVyaXZlZEZyb20sCiAgICBjb21wb25lbnQ6IFNoYXJlZFJlc291cmNlLk9ic2VydmF0aW9uQ29tcG9uZW50KG8uY29tcG9uZW50KQogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblJlZmVyZW5jZVJhbmdlKHJlZmVyZW5jZVJhbmdlIExpc3Q8RkhJUi5PYnNlcnZhdGlvbi5SZWZlcmVuY2VSYW5nZT4pOgogIHJlZmVyZW5jZVJhbmdlIHJSCiAgcmV0dXJuIEZISVIuT2JzZXJ2YXRpb24uUmVmZXJlbmNlUmFuZ2V7CiAgICBsb3c6IHJSLmxvdywKICAgIGhpZ2g6IHJSLmhpZ2gsCiAgICB0eXBlOiByUi50eXBlLAogICAgYXBwbGllc1RvOiByUi5hcHBsaWVzVG8sCiAgICBhZ2U6IHJSLmFnZQogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblJlc291cmNlKG9ic2VydmF0aW9uIE9ic2VydmF0aW9uLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToKICBvYnNlcnZhdGlvbiBvCiAgcmV0dXJuIE9ic2VydmF0aW9uewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBvLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG8sIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogby5leHRlbnNpb24sCiAgICBwYXJ0T2Y6IG8ucGFydE9mLAogICAgc3RhdHVzOiBvLnN0YXR1cywKICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKG8uY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBjb2RlOiBvLmNvZGUsCiAgICBzdWJqZWN0OiBvLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IG8uZW5jb3VudGVyLAogICAgZWZmZWN0aXZlOiBvLmVmZmVjdGl2ZSwKICAgIGlzc3VlZDogby5pc3N1ZWQsCiAgICB2YWx1ZTogby52YWx1ZSwKICAgIGRhdGFBYnNlbnRSZWFzb246IG8uZGF0YUFic2VudFJlYXNvbiwKICAgIGludGVycHJldGF0aW9uOiBvLmludGVycHJldGF0aW9uLAogICAgYm9keVNpdGU6IG8uYm9keVNpdGUsCiAgICBtZXRob2Q6IG8ubWV0aG9kLAogICAgc3BlY2ltZW46IG8uc3BlY2ltZW4sCiAgICByZWZlcmVuY2VSYW5nZTogT2JzZXJ2YXRpb25SZWZlcmVuY2VSYW5nZShvLnJlZmVyZW5jZVJhbmdlKSwKICAgIGhhc01lbWJlcjogby5oYXNNZW1iZXIsCiAgICBkZXJpdmVkRnJvbTogby5kZXJpdmVkRnJvbSwKICAgIGNvbXBvbmVudDogU2hhcmVkUmVzb3VyY2UuT2JzZXJ2YXRpb25Db21wb25lbnQoby5jb21wb25lbnQpCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uVml0YWxTaWduc0NvZGluZyhjb2RpbmcgTGlzdDxDb2Rpbmc+KToKICBjb2RpbmcgYwogIHJldHVybiBDb2Rpbmd7CiAgICBzeXN0ZW06IGMuc3lzdGVtLAogICAgdmVyc2lvbjogYy52ZXJzaW9uLAogICAgY29kZTogYy5jb2RlLAogICAgZGlzcGxheTogYy5kaXNwbGF5LAogICAgdXNlclNlbGVjdGVkOiBjLnVzZXJTZWxlY3RlZAogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblZpdGFsU2lnbnNDYXRlZ29yeShjYXRlZ29yeSBMaXN0PENvZGVhYmxlQ29uY2VwdD4pOgogIGNhdGVnb3J5IGMKICByZXR1cm4gQ29kZWFibGVDb25jZXB0ewogICAgY29kaW5nOiBPYnNlcnZhdGlvblZpdGFsU2lnbnNDb2RpbmcoYy5jb2RpbmcpLAogICAgdGV4dDogYy50ZXh0CiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uVml0YWxTaWduc0NvbXBvbmVudChjb21wb25lbnQgTGlzdDxGSElSLk9ic2VydmF0aW9uLkNvbXBvbmVudD4pOgogIGNvbXBvbmVudCBjCiAgcmV0dXJuIEZISVIuT2JzZXJ2YXRpb24uQ29tcG9uZW50ewogICAgY29kZTogYy5jb2RlLAogICAgdmFsdWU6IGMudmFsdWUsCiAgICBkYXRhQWJzZW50UmVhc29uOiBjLmRhdGFBYnNlbnRSZWFzb24sCiAgICBpbnRlcnByZXRhdGlvbjogYy5pbnRlcnByZXRhdGlvbiwKICAgIHJlZmVyZW5jZVJhbmdlOiBTaGFyZWRSZXNvdXJjZS5PYnNlcnZhdGlvblJlZmVyZW5jZVJhbmdlKGMucmVmZXJlbmNlUmFuZ2UpCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uVml0YWxTaWduc1JlZmVyZW5jZVJhbmdlKHJlZmVyZW5jZVJhbmdlIExpc3Q8RkhJUi5PYnNlcnZhdGlvbi5SZWZlcmVuY2VSYW5nZT4pOgogIHJlZmVyZW5jZVJhbmdlIHJSCiAgcmV0dXJuIEZISVIuT2JzZXJ2YXRpb24uUmVmZXJlbmNlUmFuZ2V7CiAgICBsb3c6IHJSLmxvdywKICAgIGhpZ2g6IHJSLmhpZ2gsCiAgICB0eXBlOiByUi50eXBlLAogICAgYXBwbGllc1RvOiByUi5hcHBsaWVzVG8sCiAgICBhZ2U6IHJSLmFnZQogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblZpdGFsU2lnbnNSZXNvdXJjZShvYnNlcnZhdGlvbiBPYnNlcnZhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgb2JzZXJ2YXRpb24gbwogIHJldHVybiBPYnNlcnZhdGlvbnsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgby5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChvLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IG8uZXh0ZW5zaW9uLAogICAgcGFydE9mOiBvLnBhcnRPZiwKICAgIHN0YXR1czogby5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhPYnNlcnZhdGlvblZpdGFsU2lnbnNDYXRlZ29yeShvLmNhdGVnb3J5KSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwKICAgIGNvZGU6IG8uY29kZSwKICAgIHN1YmplY3Q6IG8uc3ViamVjdCwKICAgIGVuY291bnRlcjogby5lbmNvdW50ZXIsCiAgICBlZmZlY3RpdmU6IG8uZWZmZWN0aXZlLAogICAgaXNzdWVkOiBvLmlzc3VlZCwKICAgIHZhbHVlOiBvLnZhbHVlLAogICAgZGF0YUFic2VudFJlYXNvbjogby5kYXRhQWJzZW50UmVhc29uLAogICAgaW50ZXJwcmV0YXRpb246IG8uaW50ZXJwcmV0YXRpb24sCiAgICBib2R5U2l0ZTogby5ib2R5U2l0ZSwKICAgIG1ldGhvZDogby5tZXRob2QsCiAgICBzcGVjaW1lbjogby5zcGVjaW1lbiwKICAgIHJlZmVyZW5jZVJhbmdlOiBPYnNlcnZhdGlvblZpdGFsU2lnbnNSZWZlcmVuY2VSYW5nZShvLnJlZmVyZW5jZVJhbmdlKSwKICAgIGhhc01lbWJlcjogby5oYXNNZW1iZXIsCiAgICBkZXJpdmVkRnJvbTogby5kZXJpdmVkRnJvbSwKICAgIGNvbXBvbmVudDogT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ29tcG9uZW50KG8uY29tcG9uZW50KQogIH0KCiBkZWZpbmUgZnVuY3Rpb24gIkdldFByb2NlZHVyZUV4dGVuc2lvbnMiKGRvbWFpblJlc291cmNlIERvbWFpblJlc291cmNlKToKICBkb21haW5SZXNvdXJjZS5leHRlbnNpb24gRQogICAgd2hlcmUgRS51cmwgIT0gJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvcWljb3JlL1N0cnVjdHVyZURlZmluaXRpb24vcWljb3JlLXJlY29yZGVkJwogICAgIHJldHVybiBFCiAKZGVmaW5lIGZ1bmN0aW9uIFByb2NlZHVyZVJlc291cmNlKHByb2NlZHVyZSBQcm9jZWR1cmUsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIHByb2NlZHVyZSBwCiAgcmV0dXJuIFByb2NlZHVyZXsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgcC5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChwLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IEdldFByb2NlZHVyZUV4dGVuc2lvbnMocCksIAogICAgYmFzZWRPbjogcC5iYXNlZE9uLAogICAgcGFydE9mOiBwLnBhcnRPZiwKICAgIHN0YXR1czogcC5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyh7cC5jYXRlZ29yeX0sIGFjY2VwdGVkQ2F0ZWdvcmllcylbMF0sCiAgICBjb2RlOiBwLmNvZGUsCiAgICBzdWJqZWN0OiBwLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IHAuZW5jb3VudGVyLAogICAgcGVyZm9ybWVkOiBwLnBlcmZvcm1lZCwKICAgIGxvY2F0aW9uOiBwLmxvY2F0aW9uLAogICAgcmVhc29uQ29kZTogcC5yZWFzb25Db2RlLAogICAgcmVhc29uUmVmZXJlbmNlOiBwLnJlYXNvblJlZmVyZW5jZSwKICAgIGJvZHlTaXRlOiBwLmJvZHlTaXRlCiAgfQoKICBkZWZpbmUgZnVuY3Rpb24gU2VydmljZVJlcXVlc3RSZXNvdXJjZShzZXJ2aWNlUmVxdWVzdCBTZXJ2aWNlUmVxdWVzdCwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgc2VydmljZVJlcXVlc3Qgc1IKICByZXR1cm4gU2VydmljZVJlcXVlc3R7CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIHNSLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KHNSLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IHNSLmV4dGVuc2lvbiwKICAgIGJhc2VkT246IHNSLmJhc2VkT24sCiAgICBzdGF0dXM6IHNSLnN0YXR1cywKICAgIGludGVudDogc1IuaW50ZW50LAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoc1IuY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBwcmlvcml0eTogc1IucHJpb3JpdHksCiAgICBkb05vdFBlcmZvcm06IHNSLmRvTm90UGVyZm9ybSwKICAgIGNvZGU6IHNSLmNvZGUsCiAgICBxdWFudGl0eTogc1IucXVhbnRpdHksCiAgICBzdWJqZWN0OiBzUi5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBzUi5lbmNvdW50ZXIsCiAgICBvY2N1cnJlbmNlOiBzUi5vY2N1cnJlbmNlLAogICAgYXNOZWVkZWQ6IHNSLmFzTmVlZGVkLAogICAgYXV0aG9yZWRPbjogc1IuYXV0aG9yZWRPbiwKICAgIHNwZWNpbWVuOiBzUi5zcGVjaW1lbgogIH0KCiAgZGVmaW5lIGZ1bmN0aW9uIFNwZWNpbWVuQ29sbGVjdGlvbihjb2xsZWN0aW9uIEZISVIuU3BlY2ltZW4uQ29sbGVjdGlvbik6CiAgY29sbGVjdGlvbiBjCiAgcmV0dXJuIEZISVIuU3BlY2ltZW4uQ29sbGVjdGlvbnsKICAgIGNvbGxlY3RvcjogYy5jb2xsZWN0b3IsCiAgICBjb2xsZWN0ZWQ6IGMuY29sbGVjdGVkLAogICAgcXVhbnRpdHk6IGMucXVhbnRpdHksCiAgICBib2R5U2l0ZTogYy5ib2R5U2l0ZQogIH0KCiAgZGVmaW5lIGZ1bmN0aW9uIFNwZWNpbWVuUmVzb3VyY2Uoc3BlY2ltZW4gU3BlY2ltZW4sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBzcGVjaW1lbiBzCiAgcmV0dXJuIFNwZWNpbWVuewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBzLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KHMsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogcy5leHRlbnNpb24sCiAgICBpZGVudGlmaWVyOiBzLmlkZW50aWZpZXIsCiAgICBhY2Nlc3Npb25JZGVudGlmaWVyOiBzLmFjY2Vzc2lvbklkZW50aWZpZXIsCiAgICBzdGF0dXM6IHMuc3RhdHVzLAogICAgdHlwZTogcy50eXBlLAogICAgc3ViamVjdDogcy5zdWJqZWN0LAogICAgcGFyZW50OiBzLnBhcmVudCwKICAgIHJlcXVlc3Q6IHMucmVxdWVzdCwKICAgIGNvbGxlY3Rpb246IFNwZWNpbWVuQ29sbGVjdGlvbihzLmNvbGxlY3Rpb24pLAogICAgbm90ZTogcy5ub3RlCiAgfQ==",
      "url" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/NHSNAcuteCareHospitalMonthlyInitialPopulation.cql"
    }
  ]
}