Draft dQM CMS Content Implementation Guide
2025.1.0 - CI Build
Draft dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/dqm-content-cms-2025/ and changes regularly. See the Directory of published versions
| Draft as of 2026-09-19 |
{
"resourceType" : "Library",
"id" : "CMS117FHIRChildImmunStatus",
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <table class=\"narrative-table\">\n <tbody>\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"metadata\"> </a>Metadata</th>\n\n\n</tr>\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Version</th>\n\n\n\n<td class=\"content-container\">1.1.000</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Status</th>\n\n\n\n<td class=\"content-container\">Draft</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Type</th>\n\n\n\n<td class=\"content-container\">\n <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library\n\n\n</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"parameters\"> </a>Parameters</th>\n\n\n</tr>\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Parameter</th>\n\n\n\n<td class=\"content-container\">None</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n <tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\">Library Content</th>\n\n\n</tr>\n \n \n <tr>\n <th scope=\"row\" class=\"row-header\">CQL Content</th>\n <td>\n <a name=\"cql-content\"> </a>\n <pre style=\"border: none;\" class=\"content-container highlight language-cql\"><code class=\"language-cql\">/*\nNOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.\n*/\nlibrary CMS117FHIRChildImmunStatus version '1.1.000'\n\nusing USQualityCore version '0.1.0-cibuild'\nusing USCore version '6.1.0-derived'\nusing FHIR version '4.0.1'\n\ninclude hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers\ninclude hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon\ninclude hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon\ninclude hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements\n\ninclude CQMCommon version '5.1.000' called CQMCommon\ninclude USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon\ninclude SupplementalDataElements version '6.1.000' called SDE\ninclude Status version '2.1.000' called Status\n\ninclude TJCOverall version '9.1.000' called TJC\ninclude Hospice version '7.1.000' called Hospice\n\ncodesystem "SNOMEDCT": 'http://snomed.info/sct'\ncodesystem "CPT": 'http://www.ama-assn.org/go/cpt'\ncodesystem "CVX": 'http://hl7.org/fhir/sid/cvx'\ncodesystem "ICD10": 'http://www.cms.gov/Medicare/Coding/ICD10'\n\nvalueset "Anaphylactic Reaction to DTaP Vaccine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1031'\nvalueset "Disorders of the Immune System": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1001'\nvalueset "DTaP Vaccine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1214'\nvalueset "DTaP Vaccine Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1022'\nvalueset "Encephalitis Due to Diphtheria, Tetanus or Pertussis Vaccine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1164'\nvalueset "Hepatitis A": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1024'\nvalueset "Hepatitis A Vaccine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1215'\nvalueset "Hepatitis A Vaccine Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1041'\nvalueset "Hepatitis B": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1025'\nvalueset "Hepatitis B Vaccine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1216'\nvalueset "Hepatitis B Vaccine Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1042'\nvalueset "Hib Vaccine (3 dose schedule)": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1083'\nvalueset "Hib Vaccine (3 dose schedule) Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1084'\nvalueset "Hib Vaccine (4 dose schedule)": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1085'\nvalueset "Hib Vaccine (4 dose schedule) Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1086'\nvalueset "HIV": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1003'\nvalueset "Home Healthcare Services": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016'\nvalueset "Inactivated Polio Vaccine (IPV)": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1219'\nvalueset "Inactivated Polio Vaccine (IPV) Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1045'\nvalueset "Child Influenza Vaccine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1218'\nvalueset "Child Influenza Vaccine Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1044'\nvalueset "Influenza Virus LAIV Vaccine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1087'\nvalueset "Influenza Virus LAIV Vaccine Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1088'\nvalueset "Intussusception": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1056'\nvalueset "Malignant Neoplasm of Lymphatic and Hematopoietic Tissue": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1009'\nvalueset "Measles": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1053'\nvalueset "Measles, Mumps and Rubella (MMR) Vaccine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1224'\nvalueset "Measles, Mumps and Rubella (MMR) Vaccine Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1031'\nvalueset "Mumps": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1032'\nvalueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'\nvalueset "Virtual Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089'\nvalueset "Pneumococcal Conjugate Vaccine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1221'\nvalueset "Pneumococcal Conjugate Vaccine Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1046'\nvalueset "Preventive Care Services, Initial Office Visit, 0 to 17": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022'\nvalueset "Preventive Care, Established Office Visit, 0 to 17": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024'\nvalueset "Rotavirus Vaccine (2 dose schedule) Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1048'\nvalueset "Rotavirus Vaccine (3 dose schedule)": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1223'\nvalueset "Rotavirus Vaccine (3 dose schedule) Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1047'\nvalueset "Rubella": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1037'\nvalueset "Severe Combined Immunodeficiency": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1007'\nvalueset "Telephone Visits": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080'\nvalueset "Varicella Zoster": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1039'\nvalueset "Varicella Zoster Vaccine (VZV)": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1170'\nvalueset "Varicella Zoster Vaccine (VZV) Administered": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1040'\n\ncode "Anaphylaxis caused by vaccine product containing only Haemophilus influenzae type b antigen (disorder)": '433621000124101' from "SNOMEDCT" display 'Anaphylaxis caused by vaccine product containing only Haemophilus influenzae type b antigen (disorder)'\ncode "Anaphylaxis caused by vaccine product containing Hepatitis B virus antigen (disorder)": '428321000124101' from "SNOMEDCT" display 'Anaphylaxis caused by vaccine product containing Hepatitis B virus antigen (disorder)'\ncode "Anaphylaxis caused by rotavirus vaccine (disorder)": '428331000124103' from "SNOMEDCT" display 'Anaphylaxis caused by rotavirus vaccine (disorder)'\ncode "Office or other outpatient visit for the evaluation and management of an established patient that may not require the presence of a physician or other qualified health care professional": '99211' from "CPT" display 'Office or other outpatient visit for the evaluation and management of an established patient that may not require the presence of a physician or other qualified health care professional'\ncode "rotavirus, live, monovalent vaccine": '119' from "CVX" display 'rotavirus, live, monovalent vaccine'\ncode "Anaphylaxis caused by vaccine product containing Hepatitis A virus antigen (disorder)": '471311000124103' from "SNOMEDCT" display 'Anaphylaxis caused by vaccine product containing Hepatitis A virus antigen (disorder)'\ncode "Introduction of Serum, Toxoid and Vaccine into Muscle, Percutaneous Approach": '3E0234Z' from "ICD10" display 'Introduction of Serum, Toxoid and Vaccine into Muscle, Percutaneous Approach'\ncode "Anaphylaxis caused by vaccine product containing Influenza virus antigen (disorder)": '471361000124100' from "SNOMEDCT" display 'Anaphylaxis caused by vaccine product containing Influenza virus antigen (disorder)'\ncode "Anaphylaxis caused by vaccine product containing Measles morbillivirus and Mumps orthorubulavirus and Rubella virus antigens (disorder)": '471331000124109' from "SNOMEDCT" display 'Anaphylaxis caused by vaccine product containing Measles morbillivirus and Mumps orthorubulavirus and Rubella virus antigens (disorder)'\ncode "Anaphylaxis caused by vaccine product containing Streptococcus pneumoniae antigen (disorder)": '471141000124102' from "SNOMEDCT" display 'Anaphylaxis caused by vaccine product containing Streptococcus pneumoniae antigen (disorder)'\ncode "Anaphylaxis caused by vaccine product containing human poliovirus antigen (disorder)": '471321000124106' from "SNOMEDCT" display 'Anaphylaxis caused by vaccine product containing human poliovirus antigen (disorder)'\ncode "Anaphylaxis caused by vaccine containing Human alphaherpesvirus 3 antigen (disorder)": '471341000124104' from "SNOMEDCT" display 'Anaphylaxis caused by vaccine containing Human alphaherpesvirus 3 antigen (disorder)'\n\nparameter "Measurement Period" Interval<DateTime>\n default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)\n\ncontext Patient\n\ndefine "Initial Population":\n AgeInYearsAt(date from \n end of "Measurement Period"\n ) = 2\n and exists ( "Qualifying Encounters" )\n\ndefine "Qualifying Encounters":\n ( ( [Encounter: "Office Visit"]\n union [Encounter: "Home Healthcare Services"]\n union [Encounter: "Preventive Care, Established Office Visit, 0 to 17"]\n union [Encounter: "Preventive Care Services, Initial Office Visit, 0 to 17"]\n union ( [Encounter] E\n where exists ( ( E.type ) T\n where T ~ "Office or other outpatient visit for the evaluation and management of an established patient that may not require the presence of a physician or other qualified health care professional"\n )\n )\n union [Encounter: "Virtual Encounter"]\n union [Encounter: "Telephone Visits"]\n ).isEncounterPerformed ( ) ) ValidEncounters\n where ValidEncounters.period during day of "Measurement Period"\n\ndefine "Denominator":\n "Initial Population"\n\ndefine "Denominator Exclusions":\n Hospice."Has Hospice Services"\n or "Has Severe Combined Immunodeficiency"\n or "Has Immunodeficiency"\n or "Has HIV"\n or "Has Lymphoreticular Cancer, Multiple Myeloma or Leukemia"\n or "Has Intussusception"\n\ndefine "Has Severe Combined Immunodeficiency":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Severe Combined Immunodeficiency"]\n // union [ConditionProblemsHealthConcerns: "Severe Combined Immunodeficiency"]\n exists ( ( ( [FHIR.Condition: "Severe Combined Immunodeficiency"] ).verified ( ) ) SevereImmuneDisorder\n where date from start of SevereImmuneDisorder.prevalenceInterval ( ) during day of "First Two Years"\n )\n\ndefine "Has Immunodeficiency":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Disorders of the Immune System"]\n // union [ConditionProblemsHealthConcerns: "Disorders of the Immune System"]\n exists ( ( ( [FHIR.Condition: "Disorders of the Immune System"] ).verified ( ) ) ImmuneDisorder\n where date from start of ImmuneDisorder.prevalenceInterval ( ) during day of "First Two Years"\n )\n\ndefine "Has HIV":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "HIV"]\n // union [ConditionProblemsHealthConcerns: "HIV"]\n exists ( ( ( [FHIR.Condition: "HIV"] ).verified ( ) ) HIVDiagnosis\n where date from start of HIVDiagnosis.prevalenceInterval ( ) during day of "First Two Years"\n )\n\ndefine "Has Lymphoreticular Cancer, Multiple Myeloma or Leukemia":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Malignant Neoplasm of Lymphatic and Hematopoietic Tissue"]\n // union [ConditionProblemsHealthConcerns: "Malignant Neoplasm of Lymphatic and Hematopoietic Tissue"]\n exists ( ( ( [FHIR.Condition: "Malignant Neoplasm of Lymphatic and Hematopoietic Tissue"] ).verified ( ) ) LymphaticMalignantNeoplasm\n where date from start of LymphaticMalignantNeoplasm.prevalenceInterval ( ) during day of "First Two Years"\n )\n\ndefine "Has Intussusception":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Intussusception"]\n // union [ConditionProblemsHealthConcerns: "Intussusception"]\n exists ( ( ( [FHIR.Condition: "Intussusception"] ).verified ( ) ) IntussusceptionDisorder\n where date from start of IntussusceptionDisorder.prevalenceInterval ( ) during day of "First Two Years"\n )\n\ndefine "Numerator":\n ( exists ( "Four DTaP Vaccinations" )\n or exists ( "DTaP Numerator Inclusion Conditions" )\n )\n and ( exists ( "Three Polio Vaccinations" )\n or exists ( "Polio Numerator Inclusion Conditions" )\n )\n and ( exists ( "One MMR Vaccination" )\n or exists ( "MMR Numerator Inclusion Conditions" )\n or ( exists ( "Measles Indicators" )\n and exists ( "Mumps Indicators" )\n and exists ( "Rubella Indicators" )\n )\n )\n and ( "Has Appropriate Number of Hib Immunizations"\n or exists ( "Hib Numerator Inclusion Conditions" )\n )\n and ( exists ( "Three Hepatitis B Vaccinations" )\n or ( exists ( "Meets HepB Vaccination Requirement" )\n or exists ( "Hepatitis B Numerator Inclusion Conditions" )\n )\n )\n and ( exists ( "One Chicken Pox Vaccination" )\n or exists ( "Varicella Zoster Numerator Inclusion Conditions" )\n )\n and ( exists ( "Four Pneumococcal Conjugate Vaccinations" )\n or exists ( "Pneumococcal Conjugate Numerator Inclusion Conditions" )\n )\n and ( exists ( "One Hepatitis A Vaccinations" )\n or exists ( "Hepatitis A Numerator Inclusion Conditions" )\n )\n and ( "Has Appropriate Number of Rotavirus Immunizations"\n or exists ( "Rotavirus Numerator Inclusion Conditions" )\n )\n and ( exists ( "Two Influenza Vaccinations" )\n or ( "Two Influenza Vaccinations Including One LAIV Vaccination" )\n or exists ( "Influenza Numerator Inclusion Conditions" )\n )\n\ndefine "Vaccine Administration Interval - 180 Days up to 2 Years Old":\n Interval[Patient.birthDate + 180 days, "Date of Second Birthday"]\n\ndefine "First Two Years":\n Interval[Patient.birthDate, "Date of Second Birthday"]\n\ndefine "Vaccine Administration Interval - 42 Days up to 2 Years Old":\n Interval[Patient.birthDate + 42 days, "Date of Second Birthday"]\n\ndefine "Date of Second Birthday":\n Patient.birthDate + 2 years\n\ndefine "Date of First Birthday":\n Patient.birthDate + 1 year\n\ndefine "Date of First Birthday to Date of Second Birthday":\n Interval["Date of First Birthday", "Date of Second Birthday"]\n\n//DTaP\n\n\ndefine "Four DTaP Vaccinations":\n from\n "DTaP Immunizations or Procedures" DTaPVaccination1,\n "DTaP Immunizations or Procedures" DTaPVaccination2,\n "DTaP Immunizations or Procedures" DTaPVaccination3,\n "DTaP Immunizations or Procedures" DTaPVaccination4\n where date from DTaPVaccination2.earliest ( ) 1 day or more after day of date from DTaPVaccination1.earliest ( )\n and date from DTaPVaccination3.earliest ( ) 1 day or more after day of DTaPVaccination2.earliest ( )\n and date from DTaPVaccination4.earliest ( ) 1 day or more after day of DTaPVaccination3.earliest ( )\n return all DTaPVaccination1\n\ndefine "DTaP Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Anaphylactic Reaction to DTaP Vaccine"]\n // union [ConditionProblemsHealthConcerns: "Anaphylactic Reaction to DTaP Vaccine"]\n // union [ConditionEncounterDiagnosis: "Encephalitis Due to Diphtheria, Tetanus or Pertussis Vaccine"]\n // union [ConditionProblemsHealthConcerns: "Encephalitis Due to Diphtheria, Tetanus or Pertussis Vaccine"]\n ( ( [FHIR.Condition: "Anaphylactic Reaction to DTaP Vaccine"]\n union [FHIR.Condition: "Encephalitis Due to Diphtheria, Tetanus or Pertussis Vaccine"]\n ).verified ( ) ) DTaPConditions\n where date from start of DTaPConditions.prevalenceInterval ( ) during day of "First Two Years"\n\ndefine "DTaP Immunizations or Procedures":\n ( ( ( [Immunization: "DTaP Vaccine"] ).isImmunizationAdministered ( ) ) DTaPVaccination\n where date from DTaPVaccination.occurrence.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return DTaPVaccination.occurrence\n )\n union ( ( ( [Procedure: "DTaP Vaccine Administered"] ).isProcedurePerformed ( ) ) DTaPProcedure\n where date from DTaPProcedure.performed.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return DTaPProcedure.performed\n )\n\n//Polio\n\ndefine "Polio Immunizations or Procedures":\n ( ( ( [Immunization: "Inactivated Polio Vaccine (IPV)"] ).isImmunizationAdministered ( ) ) PolioVaccination\n where date from PolioVaccination.occurrence.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return PolioVaccination.occurrence\n )\n union ( ( ( [Procedure: "Inactivated Polio Vaccine (IPV) Administered"] ).isProcedurePerformed ( ) ) PolioProcedure\n where date from PolioProcedure.performed.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return PolioProcedure.performed\n )\n\ndefine "Three Polio Vaccinations":\n from\n "Polio Immunizations or Procedures" PolioVaccination1,\n "Polio Immunizations or Procedures" PolioVaccination2,\n "Polio Immunizations or Procedures" PolioVaccination3\n where date from PolioVaccination2.earliest ( ) 1 day or more after date from PolioVaccination1.earliest ( )\n and date from PolioVaccination3.earliest ( ) 1 day or more after date from PolioVaccination2.earliest ( )\n return date from PolioVaccination1.earliest ( )\n\n\ndefine "Polio Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Anaphylaxis caused by vaccine product containing human poliovirus antigen (disorder)"]\n // union [ConditionProblemsHealthConcerns: "Anaphylaxis caused by vaccine product containing human poliovirus antigen (disorder)"]\n ( ( [FHIR.Condition: "Anaphylaxis caused by vaccine product containing human poliovirus antigen (disorder)"] ).verified ( ) ) PolioConditions\n where date from start of PolioConditions.prevalenceInterval ( ) during day of "First Two Years"\n\n//MMR\n\n\ndefine "One MMR Vaccination":\n ( ( ( [Immunization: "Measles, Mumps and Rubella (MMR) Vaccine"] ).isImmunizationAdministered ( ) ) MMRVaccination\n where date from MMRVaccination.occurrence.earliest ( ) during "Date of First Birthday to Date of Second Birthday"\n return date from MMRVaccination.occurrence.earliest ( )\n )\n union ( ( ( [Procedure: "Measles, Mumps and Rubella (MMR) Vaccine Administered"] ).isProcedurePerformed ( ) ) MMRProcedure\n where date from MMRProcedure.performed.earliest ( ) during "Date of First Birthday to Date of Second Birthday"\n return date from MMRProcedure.performed.earliest ( )\n )\n\ndefine "Measles Indicators":\n ( ( [ConditionEncounterDiagnosis: "Measles"]\n union [ConditionEncounterDiagnosis: "Measles"]\n ).verified ( ) ) MeaslesDiagnosis\n where date from start of MeaslesDiagnosis.prevalenceInterval ( ) during day of "First Two Years"\n\ndefine "Mumps Indicators":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Mumps"]\n // union [ConditionProblemsHealthConcerns: "Mumps"]\n ( ( [FHIR.Condition: "Mumps"] ).verified ( ) ) MumpsDiagnosis\n where date from start of MumpsDiagnosis.prevalenceInterval ( ) during day of "First Two Years"\n\ndefine "Rubella Indicators":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Rubella"]\n // union [ConditionProblemsHealthConcerns: "Rubella"]\n ( ( [FHIR.Condition: "Rubella"] ).verified ( ) ) RubellaDiagnosis\n where date from start of RubellaDiagnosis.prevalenceInterval ( ) during day of "First Two Years"\n\ndefine "MMR Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Anaphylaxis caused by vaccine product containing Measles morbillivirus and Mumps orthorubulavirus and Rubella virus antigens (disorder)"]\n // union [ConditionProblemsHealthConcerns: "Anaphylaxis caused by vaccine product containing Measles morbillivirus and Mumps orthorubulavirus and Rubella virus antigens (disorder)"]\n ( ( [FHIR.Condition: "Anaphylaxis caused by vaccine product containing Measles morbillivirus and Mumps orthorubulavirus and Rubella virus antigens (disorder)"] ).verified ( ) ) MMRConditions\n where date from start of MMRConditions.prevalenceInterval ( ) during day of "First Two Years"\n\n//HiB\n\n\ndefine "Has Appropriate Number of Hib Immunizations":\n exists ( "Hib 3 or 4 Dose Immunizations" HibImmunization //4 dose test\n \n let HasFourDose: Count("Hib 4 Dose Immunizations or Procedures") > 0\n where ( HasFourDose //if pt had at least one 4 dose code\n \n and Count(distinct("Hib 3 or 4 Dose Immunizations" HibVaccinations\n return date from HibVaccinations.earliest()\n )\n ) >= 4 //pt must have 4 regimens (e.g., 3,3,4,4 or 4,3,4,4)\n \n )\n or ( HasFourDose is false //if pt did not have at least one 4 dose code\n \n and Count(distinct("Hib 3 or 4 Dose Immunizations" HibVaccinations\n return date from HibVaccinations.earliest()\n )\n ) >= 3 //pt must have 3 regimens of 3 dose codes\n \n )\n )\n\ndefine "Hib Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Anaphylaxis caused by vaccine product containing only Haemophilus influenzae type b antigen (disorder)"]\n // union [ConditionProblemsHealthConcerns: "Anaphylaxis caused by vaccine product containing only Haemophilus influenzae type b antigen (disorder)"]\n ( ( [FHIR.Condition: "Anaphylaxis caused by vaccine product containing only Haemophilus influenzae type b antigen (disorder)"] ).verified ( ) ) HibReaction\n where date from start of HibReaction.prevalenceInterval ( ) during day of "First Two Years"\n\ndefine "Hib 3 Dose Immunizations or Procedures":\n ( ( ( [Immunization: "Hib Vaccine (3 dose schedule)"] ).isImmunizationAdministered ( ) ) ThreeDoseHibVaccine\n where date from ThreeDoseHibVaccine.occurrence.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return ThreeDoseHibVaccine.occurrence\n )\n union ( ( ( [Procedure: "Hib Vaccine (3 dose schedule) Administered"] ).isProcedurePerformed ( ) ) ThreeDoseHibProcedure\n where date from ThreeDoseHibProcedure.performed.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return ThreeDoseHibProcedure.performed\n )\n\ndefine "Hib 3 or 4 Dose Immunizations":\n "Hib 3 Dose Immunizations or Procedures"\n union "Hib 4 Dose Immunizations or Procedures"\n\ndefine "Hib 4 Dose Immunizations or Procedures":\n ( ( ( [Immunization: "Hib Vaccine (4 dose schedule)"] ).isImmunizationAdministered ( ) ) HibVaccine\n where date from HibVaccine.occurrence.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return HibVaccine.occurrence\n )\n union ( ( ( [Procedure: "Hib Vaccine (4 dose schedule) Administered"] ).isProcedurePerformed ( ) ) HibProcedure\n where date from HibProcedure.performed.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return HibProcedure.performed\n )\n\n//HepB\n\n\ndefine "Hepatitis B Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Anaphylaxis caused by vaccine product containing Hepatitis B virus antigen (disorder)"]\n // union [ConditionProblemsHealthConcerns: "Anaphylaxis caused by vaccine product containing Hepatitis B virus antigen (disorder)"]\n // union [ConditionEncounterDiagnosis: "Hepatitis B"]\n // union [ConditionProblemsHealthConcerns: "Hepatitis B"]\n ( ( [FHIR.Condition: "Anaphylaxis caused by vaccine product containing Hepatitis B virus antigen (disorder)"]\n union [FHIR.Condition: "Hepatitis B"]\n ).verified ( ) ) HepBConditions\n where date from start of HepBConditions.prevalenceInterval ( ) during day of "First Two Years"\n\ndefine "Three Hepatitis B Vaccinations":\n from\n "Hepatitis B Immunizations or Procedures" HepatitisBVaccination1,\n "Hepatitis B Immunizations or Procedures" HepatitisBVaccination2,\n "Hepatitis B Immunizations or Procedures" HepatitisBVaccination3\n where date from HepatitisBVaccination2.earliest ( ) 1 day or more after date from HepatitisBVaccination1.earliest ( )\n and date from HepatitisBVaccination3.earliest ( ) 1 day or more after date from HepatitisBVaccination2.earliest ( )\n return date from HepatitisBVaccination1.earliest ( )\n\ndefine "Hepatitis B Immunizations or Procedures":\n ( ( ( [Immunization: "Hepatitis B Vaccine"] ).isImmunizationAdministered ( ) ) HepatitisBVaccination\n where date from HepatitisBVaccination.occurrence.earliest ( ) during day of "First Two Years"\n return HepatitisBVaccination.occurrence\n )\n union ( ( ( [Procedure: "Hepatitis B Vaccine Administered"] ).isProcedurePerformed ( ) ) HepatitisBProcedure\n where date from HepatitisBProcedure.performed.earliest ( ) during day of "First Two Years"\n return HepatitisBProcedure.performed\n )\n\ndefine "Meets HepB Vaccination Requirement":\n from\n "Hepatitis B Immunizations or Procedures" HepatitisBVaccination1,\n "Hepatitis B Immunizations or Procedures" HepatitisBVaccination2,\n "NewBorn Vaccine Requirement" NewBornVaccine3\n where date from HepatitisBVaccination2.earliest ( ) 1 day or more after date from HepatitisBVaccination1.earliest ( )\n and date from HepatitisBVaccination1.earliest ( ) 1 day or more after date from NewBornVaccine3.earliest ( )\n and date from HepatitisBVaccination2.earliest ( ) 1 day or more after date from NewBornVaccine3.earliest ( )\n return date from HepatitisBVaccination1.earliest ( )\n\ndefine "NewBorn Vaccine Requirement":\n ( ( [Procedure: "Introduction of Serum, Toxoid and Vaccine into Muscle, Percutaneous Approach"] ).isProcedurePerformed ( ) ) NewBornVaccine\n where date from NewBornVaccine.performed.earliest ( ) during day of Interval[Patient.birthDate, Patient.birthDate + 7 days]\n return NewBornVaccine.performed\n\n//VZV\n\n\ndefine "One Chicken Pox Vaccination":\n ( ( ( [Immunization: "Varicella Zoster Vaccine (VZV)"] ).isImmunizationAdministered ( ) ) ChickenPoxVaccination\n where date from ChickenPoxVaccination.occurrence.earliest ( ) during "Date of First Birthday to Date of Second Birthday"\n return date from ChickenPoxVaccination.occurrence.earliest ( )\n )\n union ( ( ( [Procedure: "Varicella Zoster Vaccine (VZV) Administered"] ).isProcedurePerformed ( ) ) ChickenPoxProcedure\n where date from ChickenPoxProcedure.performed.earliest ( ) during "Date of First Birthday to Date of Second Birthday"\n return date from ChickenPoxProcedure.performed.earliest ( )\n )\n\ndefine "Varicella Zoster Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Varicella Zoster"]\n // union [ConditionProblemsHealthConcerns: "Varicella Zoster"]\n // union [ConditionEncounterDiagnosis: "Anaphylaxis caused by vaccine containing Human alphaherpesvirus 3 antigen (disorder)"]\n // union [ConditionProblemsHealthConcerns: "Anaphylaxis caused by vaccine containing Human alphaherpesvirus 3 antigen (disorder)"]\n ( ( [FHIR.Condition: "Varicella Zoster"]\n union [FHIR.Condition: "Anaphylaxis caused by vaccine containing Human alphaherpesvirus 3 antigen (disorder)"]\n ).verified ( ) ) VaricellaZoster\n where date from start of VaricellaZoster.prevalenceInterval ( ) during day of "First Two Years"\n\n//PCV\n\n\ndefine "Four Pneumococcal Conjugate Vaccinations":\n from\n "Pneumococcal Conjugate Immunizations or Procedures" PneumococcalVaccination1,\n "Pneumococcal Conjugate Immunizations or Procedures" PneumococcalVaccination2,\n "Pneumococcal Conjugate Immunizations or Procedures" PneumococcalVaccination3,\n "Pneumococcal Conjugate Immunizations or Procedures" PneumococcalVaccination4\n where date from PneumococcalVaccination2.earliest ( ) 1 day or more after date from PneumococcalVaccination1.earliest ( )\n and date from PneumococcalVaccination3.earliest ( ) 1 day or more after date from PneumococcalVaccination2.earliest ( )\n and date from PneumococcalVaccination4.earliest ( ) 1 day or more after date from PneumococcalVaccination3.earliest ( )\n return date from PneumococcalVaccination1.earliest ( )\n\ndefine "Pneumococcal Conjugate Immunizations or Procedures":\n ( ( ( [Immunization: "Pneumococcal Conjugate Vaccine"] ).isImmunizationAdministered ( ) ) PneumococcalVaccination\n where date from PneumococcalVaccination.occurrence.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return PneumococcalVaccination.occurrence\n )\n union ( ( ( [Procedure: "Pneumococcal Conjugate Vaccine Administered"] ).isProcedurePerformed ( ) ) PneumococcalProcedure\n where date from PneumococcalProcedure.performed.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return PneumococcalProcedure.performed\n )\n\ndefine "Pneumococcal Conjugate Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Anaphylaxis caused by vaccine product containing Streptococcus pneumoniae antigen (disorder)"]\n // union [ConditionProblemsHealthConcerns: "Anaphylaxis caused by vaccine product containing Streptococcus pneumoniae antigen (disorder)"]\n ( ( [FHIR.Condition: "Anaphylaxis caused by vaccine product containing Streptococcus pneumoniae antigen (disorder)"] ).verified ( ) ) PneumococcalReaction\n where date from start of PneumococcalReaction.prevalenceInterval ( ) during day of "First Two Years"\n\n//HepA\n\n\ndefine "One Hepatitis A Vaccinations":\n ( ( ( [Immunization: "Hepatitis A Vaccine"] ).isImmunizationAdministered ( ) ) HepatitisAVaccination\n where date from HepatitisAVaccination.occurrence.earliest ( ) during "Date of First Birthday to Date of Second Birthday"\n return date from HepatitisAVaccination.occurrence.earliest ( )\n )\n union ( ( ( [Procedure: "Hepatitis A Vaccine Administered"] ).isProcedurePerformed ( ) ) HepatitisAProcedure\n where date from HepatitisAProcedure.performed.earliest ( ) during "Date of First Birthday to Date of Second Birthday"\n return date from HepatitisAProcedure.performed.earliest ( )\n )\n\ndefine "Hepatitis A Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Hepatitis A"]\n // union [ConditionProblemsHealthConcerns: "Hepatitis A"]\n // union [ConditionEncounterDiagnosis: "Anaphylaxis caused by vaccine product containing Hepatitis A virus antigen (disorder)"]\n // union [ConditionProblemsHealthConcerns: "Anaphylaxis caused by vaccine product containing Hepatitis A virus antigen (disorder)"]\n ( ( [FHIR.Condition: "Hepatitis A"]\n union [FHIR.Condition: "Anaphylaxis caused by vaccine product containing Hepatitis A virus antigen (disorder)"]\n ).verified ( ) ) HepatitisADiagnosis\n where date from start of HepatitisADiagnosis.prevalenceInterval ( ) during day of "First Two Years"\n\n//RV\n\n\ndefine "Has Appropriate Number of Rotavirus Immunizations":\n exists ( "Rotavirus 2 or 3 Dose Immunizations" RotavirusImmunization\n let HasThreeDose: Count("Rotavirus 3 Dose Immunizations or Procedures") > 0\n where ( HasThreeDose\n and Count(distinct("Rotavirus 2 or 3 Dose Immunizations" RotavirusVaccinations\n return date from RotavirusVaccinations.earliest()\n )\n ) >= 3\n )\n or ( HasThreeDose is false\n and Count(distinct("Rotavirus 2 or 3 Dose Immunizations" RotavirusVaccinations\n return date from RotavirusVaccinations.earliest()\n )\n ) >= 2\n )\n )\n\ndefine "Rotavirus 2 Dose Immunizations or Procedures":\n ( ( ( [Immunization: "rotavirus, live, monovalent vaccine"] ).isImmunizationAdministered ( ) ) TwoDoseRotavirusVaccine\n where date from TwoDoseRotavirusVaccine.occurrence.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return TwoDoseRotavirusVaccine.occurrence\n )\n union ( ( ( [Procedure: "Rotavirus Vaccine (2 dose schedule) Administered"] ).isProcedurePerformed ( ) ) TwoDoseRotavirusProcedure\n where date from TwoDoseRotavirusProcedure.performed.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return TwoDoseRotavirusProcedure.performed\n )\n\ndefine "Rotavirus 2 or 3 Dose Immunizations":\n "Rotavirus 2 Dose Immunizations or Procedures"\n union "Rotavirus 3 Dose Immunizations or Procedures"\n\ndefine "Rotavirus Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Anaphylaxis caused by rotavirus vaccine (disorder)"]\n // union [ConditionProblemsHealthConcerns: "Anaphylaxis caused by rotavirus vaccine (disorder)"]\n ( ( [FHIR.Condition: "Anaphylaxis caused by rotavirus vaccine (disorder)"] ).verified ( ) ) RotavirusConditions\n where date from start of RotavirusConditions.prevalenceInterval ( ) during day of "First Two Years"\n\ndefine "Rotavirus 3 Dose Immunizations or Procedures":\n ( ( ( [Immunization: "Rotavirus Vaccine (3 dose schedule)"] ).isImmunizationAdministered ( ) ) ThreeDoseRotavirusVaccine\n where date from ThreeDoseRotavirusVaccine.occurrence.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return ThreeDoseRotavirusVaccine.occurrence\n )\n union ( ( ( [Procedure: "Rotavirus Vaccine (3 dose schedule) Administered"] ).isProcedurePerformed ( ) ) ThreeDoseRotavirusAdministered\n where date from ThreeDoseRotavirusAdministered.performed.earliest ( ) during day of "Vaccine Administration Interval - 42 Days up to 2 Years Old"\n return ThreeDoseRotavirusAdministered.performed\n )\n\n//Flu\n\n\ndefine "Influenza Immunizations or Procedures":\n ( ( ( [Immunization: "Child Influenza Vaccine"] ).isImmunizationAdministered ( ) ) InfluenzaVaccine\n where date from InfluenzaVaccine.occurrence.earliest ( ) during day of "Vaccine Administration Interval - 180 Days up to 2 Years Old"\n return InfluenzaVaccine.occurrence\n )\n union ( ( ( [Procedure: "Child Influenza Vaccine Administered"] ).isProcedurePerformed ( ) ) InfluenzaAdministration\n where date from InfluenzaAdministration.performed.earliest ( ) during day of "Vaccine Administration Interval - 180 Days up to 2 Years Old"\n return InfluenzaAdministration.performed\n )\n\ndefine "Two Influenza Vaccinations":\n from\n "Influenza Immunizations or Procedures" FluVaccination1,\n "Influenza Immunizations or Procedures" FluVaccination2\n where date from FluVaccination2.earliest ( ) 1 day or more after date from FluVaccination1.earliest ( )\n return date from FluVaccination1.earliest ( )\n\ndefine "Influenza Numerator Inclusion Conditions":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionEncounterDiagnosis: "Anaphylaxis caused by vaccine product containing Influenza virus antigen (disorder)"]\n // union [ConditionProblemsHealthConcerns: "Anaphylaxis caused by vaccine product containing Influenza virus antigen (disorder)"]\n ( ( [FHIR.Condition: "Anaphylaxis caused by vaccine product containing Influenza virus antigen (disorder)"] ).verified ( ) ) InfluenzaConditions\n where date from start of InfluenzaConditions.prevalenceInterval ( ) during day of "First Two Years"\n\ndefine "Two Influenza Vaccinations Including One LAIV Vaccination":\n exists "LAIV Vaccinations"\n and exists "Influenza Immunizations or Procedures"\n\ndefine "LAIV Vaccinations":\n ( ( ( [Immunization: "Influenza Virus LAIV Vaccine"] ).isImmunizationAdministered ( ) ) LAIVVaccine\n where date from LAIVVaccine.occurrence.earliest ( ) during day of Interval["Date of Second Birthday", "Date of Second Birthday"]\n return date from LAIVVaccine.occurrence.earliest ( )\n )\n union ( ( ( [Procedure: "Influenza Virus LAIV Vaccine Administered"] ).isProcedurePerformed ( ) ) InfluenzaAdministration\n where date from InfluenzaAdministration.performed.earliest ( ) during day of Interval["Date of Second Birthday", "Date of Second Birthday"]\n return date from InfluenzaAdministration.performed.earliest ( )\n )\n\ndefine "SDE Ethnicity":\n SDE."SDE Ethnicity"\n\ndefine "SDE Payer":\n SDE."SDE Payer"\n\ndefine "SDE Race":\n SDE."SDE Race"\n\ndefine "SDE Sex":\n SDE."SDE Sex"</code></pre>\n </td>\n </tr>\n \n \n\n\n\n<tr>\n <th colspan=\"2\" scope=\"row\" class=\"row-header\">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>\n</tr>\n\n </tbody>\n </table>\n</div>"
},
"extension" : [
{
"url" : "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem",
"valueReference" : {
"reference" : "Device/cqf-tooling"
}
}
],
"url" : "https://madie.cms.gov/Library/CMS117FHIRChildImmunStatus",
"version" : "1.1.000",
"name" : "CMS117FHIRChildImmunStatus",
"status" : "draft",
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2026-09-19T16:31:14+00:00",
"content" : [
{
"contentType" : "text/cql",
"data" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMTdGSElSQ2hpbGRJbW11blN0YXR1cyB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCgppbmNsdWRlIFRKQ092ZXJhbGwgdmVyc2lvbiAnOS4xLjAwMCcgY2FsbGVkIFRKQwppbmNsdWRlIEhvc3BpY2UgdmVyc2lvbiAnNy4xLjAwMCcgY2FsbGVkIEhvc3BpY2UKCmNvZGVzeXN0ZW0gIlNOT01FRENUIjogJ2h0dHA6Ly9zbm9tZWQuaW5mby9zY3QnCmNvZGVzeXN0ZW0gIkNQVCI6ICdodHRwOi8vd3d3LmFtYS1hc3NuLm9yZy9nby9jcHQnCmNvZGVzeXN0ZW0gIkNWWCI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9jdngnCmNvZGVzeXN0ZW0gIklDRDEwIjogJ2h0dHA6Ly93d3cuY21zLmdvdi9NZWRpY2FyZS9Db2RpbmcvSUNEMTAnCgp2YWx1ZXNldCAiQW5hcGh5bGFjdGljIFJlYWN0aW9uIHRvIERUYVAgVmFjY2luZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTkuMTIuMTAzMScKdmFsdWVzZXQgIkRpc29yZGVycyBvZiB0aGUgSW1tdW5lIFN5c3RlbSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMjAuMTIuMTAwMScKdmFsdWVzZXQgIkRUYVAgVmFjY2luZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTYuMTIuMTIxNCcKdmFsdWVzZXQgIkRUYVAgVmFjY2luZSBBZG1pbmlzdGVyZWQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwMjInCnZhbHVlc2V0ICJFbmNlcGhhbGl0aXMgRHVlIHRvIERpcGh0aGVyaWEsIFRldGFudXMgb3IgUGVydHVzc2lzIFZhY2NpbmUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTE2NCcKdmFsdWVzZXQgIkhlcGF0aXRpcyBBIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExMC4xMi4xMDI0Jwp2YWx1ZXNldCAiSGVwYXRpdGlzIEEgVmFjY2luZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTYuMTIuMTIxNScKdmFsdWVzZXQgIkhlcGF0aXRpcyBBIFZhY2NpbmUgQWRtaW5pc3RlcmVkIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExMC4xMi4xMDQxJwp2YWx1ZXNldCAiSGVwYXRpdGlzIEIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwMjUnCnZhbHVlc2V0ICJIZXBhdGl0aXMgQiBWYWNjaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjE5Ni4xMi4xMjE2Jwp2YWx1ZXNldCAiSGVwYXRpdGlzIEIgVmFjY2luZSBBZG1pbmlzdGVyZWQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwNDInCnZhbHVlc2V0ICJIaWIgVmFjY2luZSAoMyBkb3NlIHNjaGVkdWxlKSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTAuMTIuMTA4MycKdmFsdWVzZXQgIkhpYiBWYWNjaW5lICgzIGRvc2Ugc2NoZWR1bGUpIEFkbWluaXN0ZXJlZCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTAuMTIuMTA4NCcKdmFsdWVzZXQgIkhpYiBWYWNjaW5lICg0IGRvc2Ugc2NoZWR1bGUpIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExMC4xMi4xMDg1Jwp2YWx1ZXNldCAiSGliIFZhY2NpbmUgKDQgZG9zZSBzY2hlZHVsZSkgQWRtaW5pc3RlcmVkIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExMC4xMi4xMDg2Jwp2YWx1ZXNldCAiSElWIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEyMC4xMi4xMDAzJwp2YWx1ZXNldCAiSG9tZSBIZWFsdGhjYXJlIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDE2Jwp2YWx1ZXNldCAiSW5hY3RpdmF0ZWQgUG9saW8gVmFjY2luZSAoSVBWKSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTYuMTIuMTIxOScKdmFsdWVzZXQgIkluYWN0aXZhdGVkIFBvbGlvIFZhY2NpbmUgKElQVikgQWRtaW5pc3RlcmVkIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExMC4xMi4xMDQ1Jwp2YWx1ZXNldCAiQ2hpbGQgSW5mbHVlbnphIFZhY2NpbmUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk2LjEyLjEyMTgnCnZhbHVlc2V0ICJDaGlsZCBJbmZsdWVuemEgVmFjY2luZSBBZG1pbmlzdGVyZWQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwNDQnCnZhbHVlc2V0ICJJbmZsdWVuemEgVmlydXMgTEFJViBWYWNjaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExMC4xMi4xMDg3Jwp2YWx1ZXNldCAiSW5mbHVlbnphIFZpcnVzIExBSVYgVmFjY2luZSBBZG1pbmlzdGVyZWQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwODgnCnZhbHVlc2V0ICJJbnR1c3N1c2NlcHRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk5LjEyLjEwNTYnCnZhbHVlc2V0ICJNYWxpZ25hbnQgTmVvcGxhc20gb2YgTHltcGhhdGljIGFuZCBIZW1hdG9wb2lldGljIFRpc3N1ZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDguMTIuMTAwOScKdmFsdWVzZXQgIk1lYXNsZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwNTMnCnZhbHVlc2V0ICJNZWFzbGVzLCBNdW1wcyBhbmQgUnViZWxsYSAoTU1SKSBWYWNjaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjE5Ni4xMi4xMjI0Jwp2YWx1ZXNldCAiTWVhc2xlcywgTXVtcHMgYW5kIFJ1YmVsbGEgKE1NUikgVmFjY2luZSBBZG1pbmlzdGVyZWQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwMzEnCnZhbHVlc2V0ICJNdW1wcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTAuMTIuMTAzMicKdmFsdWVzZXQgIk9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMScKdmFsdWVzZXQgIlZpcnR1YWwgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDg5Jwp2YWx1ZXNldCAiUG5ldW1vY29jY2FsIENvbmp1Z2F0ZSBWYWNjaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjE5Ni4xMi4xMjIxJwp2YWx1ZXNldCAiUG5ldW1vY29jY2FsIENvbmp1Z2F0ZSBWYWNjaW5lIEFkbWluaXN0ZXJlZCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTAuMTIuMTA0NicKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcywgSW5pdGlhbCBPZmZpY2UgVmlzaXQsIDAgdG8gMTciOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMjInCnZhbHVlc2V0ICJQcmV2ZW50aXZlIENhcmUsIEVzdGFibGlzaGVkIE9mZmljZSBWaXNpdCwgMCB0byAxNyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyNCcKdmFsdWVzZXQgIlJvdGF2aXJ1cyBWYWNjaW5lICgyIGRvc2Ugc2NoZWR1bGUpIEFkbWluaXN0ZXJlZCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTAuMTIuMTA0OCcKdmFsdWVzZXQgIlJvdGF2aXJ1cyBWYWNjaW5lICgzIGRvc2Ugc2NoZWR1bGUpIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjE5Ni4xMi4xMjIzJwp2YWx1ZXNldCAiUm90YXZpcnVzIFZhY2NpbmUgKDMgZG9zZSBzY2hlZHVsZSkgQWRtaW5pc3RlcmVkIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExMC4xMi4xMDQ3Jwp2YWx1ZXNldCAiUnViZWxsYSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTAuMTIuMTAzNycKdmFsdWVzZXQgIlNldmVyZSBDb21iaW5lZCBJbW11bm9kZWZpY2llbmN5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEyMC4xMi4xMDA3Jwp2YWx1ZXNldCAiVGVsZXBob25lIFZpc2l0cyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTA4MCcKdmFsdWVzZXQgIlZhcmljZWxsYSBab3N0ZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwMzknCnZhbHVlc2V0ICJWYXJpY2VsbGEgWm9zdGVyIFZhY2NpbmUgKFZaVikiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk2LjEyLjExNzAnCnZhbHVlc2V0ICJWYXJpY2VsbGEgWm9zdGVyIFZhY2NpbmUgKFZaVikgQWRtaW5pc3RlcmVkIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExMC4xMi4xMDQwJwoKY29kZSAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIG9ubHkgSGFlbW9waGlsdXMgaW5mbHVlbnphZSB0eXBlIGIgYW50aWdlbiAoZGlzb3JkZXIpIjogJzQzMzYyMTAwMDEyNDEwMScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0FuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBvbmx5IEhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIGFudGlnZW4gKGRpc29yZGVyKScKY29kZSAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIEhlcGF0aXRpcyBCIHZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSI6ICc0MjgzMjEwMDAxMjQxMDEnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBwcm9kdWN0IGNvbnRhaW5pbmcgSGVwYXRpdGlzIEIgdmlydXMgYW50aWdlbiAoZGlzb3JkZXIpJwpjb2RlICJBbmFwaHlsYXhpcyBjYXVzZWQgYnkgcm90YXZpcnVzIHZhY2NpbmUgKGRpc29yZGVyKSI6ICc0MjgzMzEwMDAxMjQxMDMnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdBbmFwaHlsYXhpcyBjYXVzZWQgYnkgcm90YXZpcnVzIHZhY2NpbmUgKGRpc29yZGVyKScKY29kZSAiT2ZmaWNlIG9yIG90aGVyIG91dHBhdGllbnQgdmlzaXQgZm9yIHRoZSBldmFsdWF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIGFuIGVzdGFibGlzaGVkIHBhdGllbnQgdGhhdCBtYXkgbm90IHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgcGh5c2ljaWFuIG9yIG90aGVyIHF1YWxpZmllZCBoZWFsdGggY2FyZSBwcm9mZXNzaW9uYWwiOiAnOTkyMTEnIGZyb20gIkNQVCIgZGlzcGxheSAnT2ZmaWNlIG9yIG90aGVyIG91dHBhdGllbnQgdmlzaXQgZm9yIHRoZSBldmFsdWF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIGFuIGVzdGFibGlzaGVkIHBhdGllbnQgdGhhdCBtYXkgbm90IHJlcXVpcmUgdGhlIHByZXNlbmNlIG9mIGEgcGh5c2ljaWFuIG9yIG90aGVyIHF1YWxpZmllZCBoZWFsdGggY2FyZSBwcm9mZXNzaW9uYWwnCmNvZGUgInJvdGF2aXJ1cywgbGl2ZSwgbW9ub3ZhbGVudCB2YWNjaW5lIjogJzExOScgZnJvbSAiQ1ZYIiBkaXNwbGF5ICdyb3RhdmlydXMsIGxpdmUsIG1vbm92YWxlbnQgdmFjY2luZScKY29kZSAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIEhlcGF0aXRpcyBBIHZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSI6ICc0NzEzMTEwMDAxMjQxMDMnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBwcm9kdWN0IGNvbnRhaW5pbmcgSGVwYXRpdGlzIEEgdmlydXMgYW50aWdlbiAoZGlzb3JkZXIpJwpjb2RlICJJbnRyb2R1Y3Rpb24gb2YgU2VydW0sIFRveG9pZCBhbmQgVmFjY2luZSBpbnRvIE11c2NsZSwgUGVyY3V0YW5lb3VzIEFwcHJvYWNoIjogJzNFMDIzNFonIGZyb20gIklDRDEwIiBkaXNwbGF5ICdJbnRyb2R1Y3Rpb24gb2YgU2VydW0sIFRveG9pZCBhbmQgVmFjY2luZSBpbnRvIE11c2NsZSwgUGVyY3V0YW5lb3VzIEFwcHJvYWNoJwpjb2RlICJBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBwcm9kdWN0IGNvbnRhaW5pbmcgSW5mbHVlbnphIHZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSI6ICc0NzEzNjEwMDAxMjQxMDAnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBwcm9kdWN0IGNvbnRhaW5pbmcgSW5mbHVlbnphIHZpcnVzIGFudGlnZW4gKGRpc29yZGVyKScKY29kZSAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIE1lYXNsZXMgbW9yYmlsbGl2aXJ1cyBhbmQgTXVtcHMgb3J0aG9ydWJ1bGF2aXJ1cyBhbmQgUnViZWxsYSB2aXJ1cyBhbnRpZ2VucyAoZGlzb3JkZXIpIjogJzQ3MTMzMTAwMDEyNDEwOScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0FuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBNZWFzbGVzIG1vcmJpbGxpdmlydXMgYW5kIE11bXBzIG9ydGhvcnVidWxhdmlydXMgYW5kIFJ1YmVsbGEgdmlydXMgYW50aWdlbnMgKGRpc29yZGVyKScKY29kZSAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIFN0cmVwdG9jb2NjdXMgcG5ldW1vbmlhZSBhbnRpZ2VuIChkaXNvcmRlcikiOiAnNDcxMTQxMDAwMTI0MTAyJyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIFN0cmVwdG9jb2NjdXMgcG5ldW1vbmlhZSBhbnRpZ2VuIChkaXNvcmRlciknCmNvZGUgIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBodW1hbiBwb2xpb3ZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSI6ICc0NzEzMjEwMDAxMjQxMDYnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBwcm9kdWN0IGNvbnRhaW5pbmcgaHVtYW4gcG9saW92aXJ1cyBhbnRpZ2VuIChkaXNvcmRlciknCmNvZGUgIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIGNvbnRhaW5pbmcgSHVtYW4gYWxwaGFoZXJwZXN2aXJ1cyAzIGFudGlnZW4gKGRpc29yZGVyKSI6ICc0NzEzNDEwMDAxMjQxMDQnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBjb250YWluaW5nIEh1bWFuIGFscGhhaGVycGVzdmlydXMgMyBhbnRpZ2VuIChkaXNvcmRlciknCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+CiAgZGVmYXVsdCBJbnRlcnZhbFtAMjAyNi0wMS0wMVQwMDowMDowMC4wMDBaLCBAMjAyNy0wMS0wMVQwMDowMDowMC4wMDBaKQoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSAKICAgIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICkgPSAyCiAgICBhbmQgZXhpc3RzICggIlF1YWxpZnlpbmcgRW5jb3VudGVycyIgKQoKZGVmaW5lICJRdWFsaWZ5aW5nIEVuY291bnRlcnMiOgogICggKCBbRW5jb3VudGVyOiAiT2ZmaWNlIFZpc2l0Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkhvbWUgSGVhbHRoY2FyZSBTZXJ2aWNlcyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUsIEVzdGFibGlzaGVkIE9mZmljZSBWaXNpdCwgMCB0byAxNyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMsIEluaXRpYWwgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3Il0KICAgICAgdW5pb24gKCBbRW5jb3VudGVyXSBFCiAgICAgICAgICB3aGVyZSBleGlzdHMgKCAoIEUudHlwZSApIFQKICAgICAgICAgICAgICB3aGVyZSBUIH4gIk9mZmljZSBvciBvdGhlciBvdXRwYXRpZW50IHZpc2l0IGZvciB0aGUgZXZhbHVhdGlvbiBhbmQgbWFuYWdlbWVudCBvZiBhbiBlc3RhYmxpc2hlZCBwYXRpZW50IHRoYXQgbWF5IG5vdCByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiBhIHBoeXNpY2lhbiBvciBvdGhlciBxdWFsaWZpZWQgaGVhbHRoIGNhcmUgcHJvZmVzc2lvbmFsIgogICAgICAgICAgKQogICAgICApCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJWaXJ0dWFsIEVuY291bnRlciJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJUZWxlcGhvbmUgVmlzaXRzIl0KICApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIFZhbGlkRW5jb3VudGVycwogICAgd2hlcmUgVmFsaWRFbmNvdW50ZXJzLnBlcmlvZCBkdXJpbmcgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNsdXNpb25zIjoKICBIb3NwaWNlLiJIYXMgSG9zcGljZSBTZXJ2aWNlcyIKICAgIG9yICJIYXMgU2V2ZXJlIENvbWJpbmVkIEltbXVub2RlZmljaWVuY3kiCiAgICBvciAiSGFzIEltbXVub2RlZmljaWVuY3kiCiAgICBvciAiSGFzIEhJViIKICAgIG9yICJIYXMgTHltcGhvcmV0aWN1bGFyIENhbmNlciwgTXVsdGlwbGUgTXllbG9tYSBvciBMZXVrZW1pYSIKICAgIG9yICJIYXMgSW50dXNzdXNjZXB0aW9uIgoKZGVmaW5lICJIYXMgU2V2ZXJlIENvbWJpbmVkIEltbXVub2RlZmljaWVuY3kiOgogIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogIC8vIE9yaWdpbmFsOgogIC8vICAgW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlNldmVyZSBDb21iaW5lZCBJbW11bm9kZWZpY2llbmN5Il0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJTZXZlcmUgQ29tYmluZWQgSW1tdW5vZGVmaWNpZW5jeSJdCiAgZXhpc3RzICggKCAoIFtGSElSLkNvbmRpdGlvbjogIlNldmVyZSBDb21iaW5lZCBJbW11bm9kZWZpY2llbmN5Il0gKS52ZXJpZmllZCAoICkgKSBTZXZlcmVJbW11bmVEaXNvcmRlcgogICAgICB3aGVyZSBkYXRlIGZyb20gc3RhcnQgb2YgU2V2ZXJlSW1tdW5lRGlzb3JkZXIucHJldmFsZW5jZUludGVydmFsICggKSBkdXJpbmcgZGF5IG9mICJGaXJzdCBUd28gWWVhcnMiCiAgKQoKZGVmaW5lICJIYXMgSW1tdW5vZGVmaWNpZW5jeSI6CiAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgLy8gT3JpZ2luYWw6CiAgLy8gICBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiRGlzb3JkZXJzIG9mIHRoZSBJbW11bmUgU3lzdGVtIl0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJEaXNvcmRlcnMgb2YgdGhlIEltbXVuZSBTeXN0ZW0iXQogIGV4aXN0cyAoICggKCBbRkhJUi5Db25kaXRpb246ICJEaXNvcmRlcnMgb2YgdGhlIEltbXVuZSBTeXN0ZW0iXSApLnZlcmlmaWVkICggKSApIEltbXVuZURpc29yZGVyCiAgICAgIHdoZXJlIGRhdGUgZnJvbSBzdGFydCBvZiBJbW11bmVEaXNvcmRlci5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgIkZpcnN0IFR3byBZZWFycyIKICApCgpkZWZpbmUgIkhhcyBISVYiOgogIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogIC8vIE9yaWdpbmFsOgogIC8vICAgW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIkhJViJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSElWIl0KICBleGlzdHMgKCAoICggW0ZISVIuQ29uZGl0aW9uOiAiSElWIl0gKS52ZXJpZmllZCAoICkgKSBISVZEaWFnbm9zaXMKICAgICAgd2hlcmUgZGF0ZSBmcm9tIHN0YXJ0IG9mIEhJVkRpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgIkZpcnN0IFR3byBZZWFycyIKICApCgpkZWZpbmUgIkhhcyBMeW1waG9yZXRpY3VsYXIgQ2FuY2VyLCBNdWx0aXBsZSBNeWVsb21hIG9yIExldWtlbWlhIjoKICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAvLyBPcmlnaW5hbDoKICAvLyAgIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJNYWxpZ25hbnQgTmVvcGxhc20gb2YgTHltcGhhdGljIGFuZCBIZW1hdG9wb2lldGljIFRpc3N1ZSJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiTWFsaWduYW50IE5lb3BsYXNtIG9mIEx5bXBoYXRpYyBhbmQgSGVtYXRvcG9pZXRpYyBUaXNzdWUiXQogIGV4aXN0cyAoICggKCBbRkhJUi5Db25kaXRpb246ICJNYWxpZ25hbnQgTmVvcGxhc20gb2YgTHltcGhhdGljIGFuZCBIZW1hdG9wb2lldGljIFRpc3N1ZSJdICkudmVyaWZpZWQgKCApICkgTHltcGhhdGljTWFsaWduYW50TmVvcGxhc20KICAgICAgd2hlcmUgZGF0ZSBmcm9tIHN0YXJ0IG9mIEx5bXBoYXRpY01hbGlnbmFudE5lb3BsYXNtLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgZHVyaW5nIGRheSBvZiAiRmlyc3QgVHdvIFllYXJzIgogICkKCmRlZmluZSAiSGFzIEludHVzc3VzY2VwdGlvbiI6CiAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgLy8gT3JpZ2luYWw6CiAgLy8gICBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiSW50dXNzdXNjZXB0aW9uIl0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJJbnR1c3N1c2NlcHRpb24iXQogIGV4aXN0cyAoICggKCBbRkhJUi5Db25kaXRpb246ICJJbnR1c3N1c2NlcHRpb24iXSApLnZlcmlmaWVkICggKSApIEludHVzc3VzY2VwdGlvbkRpc29yZGVyCiAgICAgIHdoZXJlIGRhdGUgZnJvbSBzdGFydCBvZiBJbnR1c3N1c2NlcHRpb25EaXNvcmRlci5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgIkZpcnN0IFR3byBZZWFycyIKICApCgpkZWZpbmUgIk51bWVyYXRvciI6CiAgKCBleGlzdHMgKCAiRm91ciBEVGFQIFZhY2NpbmF0aW9ucyIgKQogICAgICBvciBleGlzdHMgKCAiRFRhUCBOdW1lcmF0b3IgSW5jbHVzaW9uIENvbmRpdGlvbnMiICkKICApCiAgICBhbmQgKCBleGlzdHMgKCAiVGhyZWUgUG9saW8gVmFjY2luYXRpb25zIiApCiAgICAgICAgb3IgZXhpc3RzICggIlBvbGlvIE51bWVyYXRvciBJbmNsdXNpb24gQ29uZGl0aW9ucyIgKQogICAgKQogICAgYW5kICggZXhpc3RzICggIk9uZSBNTVIgVmFjY2luYXRpb24iICkKICAgICAgICBvciBleGlzdHMgKCAiTU1SIE51bWVyYXRvciBJbmNsdXNpb24gQ29uZGl0aW9ucyIgKQogICAgICAgIG9yICggZXhpc3RzICggIk1lYXNsZXMgSW5kaWNhdG9ycyIgKQogICAgICAgICAgICBhbmQgZXhpc3RzICggIk11bXBzIEluZGljYXRvcnMiICkKICAgICAgICAgICAgYW5kIGV4aXN0cyAoICJSdWJlbGxhIEluZGljYXRvcnMiICkKICAgICAgICApCiAgICApCiAgICBhbmQgKCAiSGFzIEFwcHJvcHJpYXRlIE51bWJlciBvZiBIaWIgSW1tdW5pemF0aW9ucyIKICAgICAgICBvciBleGlzdHMgKCAiSGliIE51bWVyYXRvciBJbmNsdXNpb24gQ29uZGl0aW9ucyIgKQogICAgKQogICAgYW5kICggZXhpc3RzICggIlRocmVlIEhlcGF0aXRpcyBCIFZhY2NpbmF0aW9ucyIgKQogICAgICAgIG9yICggZXhpc3RzICggIk1lZXRzIEhlcEIgVmFjY2luYXRpb24gUmVxdWlyZW1lbnQiICkKICAgICAgICAgICAgb3IgZXhpc3RzICggIkhlcGF0aXRpcyBCIE51bWVyYXRvciBJbmNsdXNpb24gQ29uZGl0aW9ucyIgKQogICAgICAgICkKICAgICkKICAgIGFuZCAoIGV4aXN0cyAoICJPbmUgQ2hpY2tlbiBQb3ggVmFjY2luYXRpb24iICkKICAgICAgICBvciBleGlzdHMgKCAiVmFyaWNlbGxhIFpvc3RlciBOdW1lcmF0b3IgSW5jbHVzaW9uIENvbmRpdGlvbnMiICkKICAgICkKICAgIGFuZCAoIGV4aXN0cyAoICJGb3VyIFBuZXVtb2NvY2NhbCBDb25qdWdhdGUgVmFjY2luYXRpb25zIiApCiAgICAgICAgb3IgZXhpc3RzICggIlBuZXVtb2NvY2NhbCBDb25qdWdhdGUgTnVtZXJhdG9yIEluY2x1c2lvbiBDb25kaXRpb25zIiApCiAgICApCiAgICBhbmQgKCBleGlzdHMgKCAiT25lIEhlcGF0aXRpcyBBIFZhY2NpbmF0aW9ucyIgKQogICAgICAgIG9yIGV4aXN0cyAoICJIZXBhdGl0aXMgQSBOdW1lcmF0b3IgSW5jbHVzaW9uIENvbmRpdGlvbnMiICkKICAgICkKICAgIGFuZCAoICJIYXMgQXBwcm9wcmlhdGUgTnVtYmVyIG9mIFJvdGF2aXJ1cyBJbW11bml6YXRpb25zIgogICAgICAgIG9yIGV4aXN0cyAoICJSb3RhdmlydXMgTnVtZXJhdG9yIEluY2x1c2lvbiBDb25kaXRpb25zIiApCiAgICApCiAgICBhbmQgKCBleGlzdHMgKCAiVHdvIEluZmx1ZW56YSBWYWNjaW5hdGlvbnMiICkKICAgICAgICBvciAoICJUd28gSW5mbHVlbnphIFZhY2NpbmF0aW9ucyBJbmNsdWRpbmcgT25lIExBSVYgVmFjY2luYXRpb24iICkKICAgICAgICBvciBleGlzdHMgKCAiSW5mbHVlbnphIE51bWVyYXRvciBJbmNsdXNpb24gQ29uZGl0aW9ucyIgKQogICAgKQoKZGVmaW5lICJWYWNjaW5lIEFkbWluaXN0cmF0aW9uIEludGVydmFsIC0gMTgwIERheXMgdXAgdG8gMiBZZWFycyBPbGQiOgogIEludGVydmFsW1BhdGllbnQuYmlydGhEYXRlICsgMTgwIGRheXMsICJEYXRlIG9mIFNlY29uZCBCaXJ0aGRheSJdCgpkZWZpbmUgIkZpcnN0IFR3byBZZWFycyI6CiAgSW50ZXJ2YWxbUGF0aWVudC5iaXJ0aERhdGUsICJEYXRlIG9mIFNlY29uZCBCaXJ0aGRheSJdCgpkZWZpbmUgIlZhY2NpbmUgQWRtaW5pc3RyYXRpb24gSW50ZXJ2YWwgLSA0MiBEYXlzIHVwIHRvIDIgWWVhcnMgT2xkIjoKICBJbnRlcnZhbFtQYXRpZW50LmJpcnRoRGF0ZSArIDQyIGRheXMsICJEYXRlIG9mIFNlY29uZCBCaXJ0aGRheSJdCgpkZWZpbmUgIkRhdGUgb2YgU2Vjb25kIEJpcnRoZGF5IjoKICBQYXRpZW50LmJpcnRoRGF0ZSArIDIgeWVhcnMKCmRlZmluZSAiRGF0ZSBvZiBGaXJzdCBCaXJ0aGRheSI6CiAgUGF0aWVudC5iaXJ0aERhdGUgKyAxIHllYXIKCmRlZmluZSAiRGF0ZSBvZiBGaXJzdCBCaXJ0aGRheSB0byBEYXRlIG9mIFNlY29uZCBCaXJ0aGRheSI6CiAgSW50ZXJ2YWxbIkRhdGUgb2YgRmlyc3QgQmlydGhkYXkiLCAiRGF0ZSBvZiBTZWNvbmQgQmlydGhkYXkiXQoKLy9EVGFQCgoKZGVmaW5lICJGb3VyIERUYVAgVmFjY2luYXRpb25zIjoKICBmcm9tCiAgICAiRFRhUCBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiIERUYVBWYWNjaW5hdGlvbjEsCiAgICAiRFRhUCBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiIERUYVBWYWNjaW5hdGlvbjIsCiAgICAiRFRhUCBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiIERUYVBWYWNjaW5hdGlvbjMsCiAgICAiRFRhUCBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiIERUYVBWYWNjaW5hdGlvbjQKICAgIHdoZXJlIGRhdGUgZnJvbSBEVGFQVmFjY2luYXRpb24yLmVhcmxpZXN0ICggKSAxIGRheSBvciBtb3JlIGFmdGVyIGRheSBvZiBkYXRlIGZyb20gRFRhUFZhY2NpbmF0aW9uMS5lYXJsaWVzdCAoICkKICAgICAgYW5kIGRhdGUgZnJvbSBEVGFQVmFjY2luYXRpb24zLmVhcmxpZXN0ICggKSAxIGRheSBvciBtb3JlIGFmdGVyIGRheSBvZiBEVGFQVmFjY2luYXRpb24yLmVhcmxpZXN0ICggKQogICAgICBhbmQgZGF0ZSBmcm9tIERUYVBWYWNjaW5hdGlvbjQuZWFybGllc3QgKCApIDEgZGF5IG9yIG1vcmUgYWZ0ZXIgZGF5IG9mIERUYVBWYWNjaW5hdGlvbjMuZWFybGllc3QgKCApCiAgICByZXR1cm4gYWxsIERUYVBWYWNjaW5hdGlvbjEKCmRlZmluZSAiRFRhUCBOdW1lcmF0b3IgSW5jbHVzaW9uIENvbmRpdGlvbnMiOgogIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogIC8vIE9yaWdpbmFsOgogIC8vICAgW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIkFuYXBoeWxhY3RpYyBSZWFjdGlvbiB0byBEVGFQIFZhY2NpbmUiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkFuYXBoeWxhY3RpYyBSZWFjdGlvbiB0byBEVGFQIFZhY2NpbmUiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiRW5jZXBoYWxpdGlzIER1ZSB0byBEaXBodGhlcmlhLCBUZXRhbnVzIG9yIFBlcnR1c3NpcyBWYWNjaW5lIl0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJFbmNlcGhhbGl0aXMgRHVlIHRvIERpcGh0aGVyaWEsIFRldGFudXMgb3IgUGVydHVzc2lzIFZhY2NpbmUiXQogICggKCBbRkhJUi5Db25kaXRpb246ICJBbmFwaHlsYWN0aWMgUmVhY3Rpb24gdG8gRFRhUCBWYWNjaW5lIl0KICAgICAgdW5pb24gW0ZISVIuQ29uZGl0aW9uOiAiRW5jZXBoYWxpdGlzIER1ZSB0byBEaXBodGhlcmlhLCBUZXRhbnVzIG9yIFBlcnR1c3NpcyBWYWNjaW5lIl0KICApLnZlcmlmaWVkICggKSApIERUYVBDb25kaXRpb25zCiAgICB3aGVyZSBkYXRlIGZyb20gc3RhcnQgb2YgRFRhUENvbmRpdGlvbnMucHJldmFsZW5jZUludGVydmFsICggKSBkdXJpbmcgZGF5IG9mICJGaXJzdCBUd28gWWVhcnMiCgpkZWZpbmUgIkRUYVAgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIjoKICAoICggKCBbSW1tdW5pemF0aW9uOiAiRFRhUCBWYWNjaW5lIl0gKS5pc0ltbXVuaXphdGlvbkFkbWluaXN0ZXJlZCAoICkgKSBEVGFQVmFjY2luYXRpb24KICAgICAgd2hlcmUgZGF0ZSBmcm9tIERUYVBWYWNjaW5hdGlvbi5vY2N1cnJlbmNlLmVhcmxpZXN0ICggKSBkdXJpbmcgZGF5IG9mICJWYWNjaW5lIEFkbWluaXN0cmF0aW9uIEludGVydmFsIC0gNDIgRGF5cyB1cCB0byAyIFllYXJzIE9sZCIKICAgICAgcmV0dXJuIERUYVBWYWNjaW5hdGlvbi5vY2N1cnJlbmNlCiAgKQogICAgdW5pb24gKCAoICggW1Byb2NlZHVyZTogIkRUYVAgVmFjY2luZSBBZG1pbmlzdGVyZWQiXSApLmlzUHJvY2VkdXJlUGVyZm9ybWVkICggKSApIERUYVBQcm9jZWR1cmUKICAgICAgICB3aGVyZSBkYXRlIGZyb20gRFRhUFByb2NlZHVyZS5wZXJmb3JtZWQuZWFybGllc3QgKCApIGR1cmluZyBkYXkgb2YgIlZhY2NpbmUgQWRtaW5pc3RyYXRpb24gSW50ZXJ2YWwgLSA0MiBEYXlzIHVwIHRvIDIgWWVhcnMgT2xkIgogICAgICAgIHJldHVybiBEVGFQUHJvY2VkdXJlLnBlcmZvcm1lZAogICAgKQoKLy9Qb2xpbwoKZGVmaW5lICJQb2xpbyBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiOgogICggKCAoIFtJbW11bml6YXRpb246ICJJbmFjdGl2YXRlZCBQb2xpbyBWYWNjaW5lIChJUFYpIl0gKS5pc0ltbXVuaXphdGlvbkFkbWluaXN0ZXJlZCAoICkgKSBQb2xpb1ZhY2NpbmF0aW9uCiAgICAgIHdoZXJlIGRhdGUgZnJvbSBQb2xpb1ZhY2NpbmF0aW9uLm9jY3VycmVuY2UuZWFybGllc3QgKCApIGR1cmluZyBkYXkgb2YgIlZhY2NpbmUgQWRtaW5pc3RyYXRpb24gSW50ZXJ2YWwgLSA0MiBEYXlzIHVwIHRvIDIgWWVhcnMgT2xkIgogICAgICByZXR1cm4gUG9saW9WYWNjaW5hdGlvbi5vY2N1cnJlbmNlCiAgICApCiAgICB1bmlvbiAoICggKCBbUHJvY2VkdXJlOiAiSW5hY3RpdmF0ZWQgUG9saW8gVmFjY2luZSAoSVBWKSBBZG1pbmlzdGVyZWQiXSApLmlzUHJvY2VkdXJlUGVyZm9ybWVkICggKSApIFBvbGlvUHJvY2VkdXJlCiAgICAgICAgd2hlcmUgZGF0ZSBmcm9tIFBvbGlvUHJvY2VkdXJlLnBlcmZvcm1lZC5lYXJsaWVzdCAoICkgZHVyaW5nIGRheSBvZiAiVmFjY2luZSBBZG1pbmlzdHJhdGlvbiBJbnRlcnZhbCAtIDQyIERheXMgdXAgdG8gMiBZZWFycyBPbGQiCiAgICAgICAgcmV0dXJuIFBvbGlvUHJvY2VkdXJlLnBlcmZvcm1lZAogICAgKQoKZGVmaW5lICJUaHJlZSBQb2xpbyBWYWNjaW5hdGlvbnMiOgogIGZyb20KICAgICJQb2xpbyBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiIFBvbGlvVmFjY2luYXRpb24xLAogICAgIlBvbGlvIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyIgUG9saW9WYWNjaW5hdGlvbjIsCiAgICAiUG9saW8gSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIiBQb2xpb1ZhY2NpbmF0aW9uMwogICAgd2hlcmUgZGF0ZSBmcm9tIFBvbGlvVmFjY2luYXRpb24yLmVhcmxpZXN0ICggKSAxIGRheSBvciBtb3JlIGFmdGVyIGRhdGUgZnJvbSBQb2xpb1ZhY2NpbmF0aW9uMS5lYXJsaWVzdCAoICkKICAgICAgYW5kIGRhdGUgZnJvbSBQb2xpb1ZhY2NpbmF0aW9uMy5lYXJsaWVzdCAoICkgMSBkYXkgb3IgbW9yZSBhZnRlciBkYXRlIGZyb20gUG9saW9WYWNjaW5hdGlvbjIuZWFybGllc3QgKCApCiAgICByZXR1cm4gZGF0ZSBmcm9tIFBvbGlvVmFjY2luYXRpb24xLmVhcmxpZXN0ICggKQoKCmRlZmluZSAiUG9saW8gTnVtZXJhdG9yIEluY2x1c2lvbiBDb25kaXRpb25zIjoKICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAvLyBPcmlnaW5hbDoKICAvLyAgIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBwcm9kdWN0IGNvbnRhaW5pbmcgaHVtYW4gcG9saW92aXJ1cyBhbnRpZ2VuIChkaXNvcmRlcikiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBodW1hbiBwb2xpb3ZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSJdCiAgKCAoIFtGSElSLkNvbmRpdGlvbjogIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBodW1hbiBwb2xpb3ZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSJdICkudmVyaWZpZWQgKCApICkgUG9saW9Db25kaXRpb25zCiAgICB3aGVyZSBkYXRlIGZyb20gc3RhcnQgb2YgUG9saW9Db25kaXRpb25zLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgZHVyaW5nIGRheSBvZiAiRmlyc3QgVHdvIFllYXJzIgoKLy9NTVIKCgpkZWZpbmUgIk9uZSBNTVIgVmFjY2luYXRpb24iOgogICggKCAoIFtJbW11bml6YXRpb246ICJNZWFzbGVzLCBNdW1wcyBhbmQgUnViZWxsYSAoTU1SKSBWYWNjaW5lIl0gKS5pc0ltbXVuaXphdGlvbkFkbWluaXN0ZXJlZCAoICkgKSBNTVJWYWNjaW5hdGlvbgogICAgICB3aGVyZSBkYXRlIGZyb20gTU1SVmFjY2luYXRpb24ub2NjdXJyZW5jZS5lYXJsaWVzdCAoICkgZHVyaW5nICJEYXRlIG9mIEZpcnN0IEJpcnRoZGF5IHRvIERhdGUgb2YgU2Vjb25kIEJpcnRoZGF5IgogICAgICByZXR1cm4gZGF0ZSBmcm9tIE1NUlZhY2NpbmF0aW9uLm9jY3VycmVuY2UuZWFybGllc3QgKCApCiAgKQogICAgdW5pb24gKCAoICggW1Byb2NlZHVyZTogIk1lYXNsZXMsIE11bXBzIGFuZCBSdWJlbGxhIChNTVIpIFZhY2NpbmUgQWRtaW5pc3RlcmVkIl0gKS5pc1Byb2NlZHVyZVBlcmZvcm1lZCAoICkgKSBNTVJQcm9jZWR1cmUKICAgICAgICB3aGVyZSBkYXRlIGZyb20gTU1SUHJvY2VkdXJlLnBlcmZvcm1lZC5lYXJsaWVzdCAoICkgZHVyaW5nICJEYXRlIG9mIEZpcnN0IEJpcnRoZGF5IHRvIERhdGUgb2YgU2Vjb25kIEJpcnRoZGF5IgogICAgICAgIHJldHVybiBkYXRlIGZyb20gTU1SUHJvY2VkdXJlLnBlcmZvcm1lZC5lYXJsaWVzdCAoICkKICAgICkKCmRlZmluZSAiTWVhc2xlcyBJbmRpY2F0b3JzIjoKICAoICggW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIk1lYXNsZXMiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiTWVhc2xlcyJdCiAgKS52ZXJpZmllZCAoICkgKSBNZWFzbGVzRGlhZ25vc2lzCiAgICB3aGVyZSBkYXRlIGZyb20gc3RhcnQgb2YgTWVhc2xlc0RpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgIkZpcnN0IFR3byBZZWFycyIKCmRlZmluZSAiTXVtcHMgSW5kaWNhdG9ycyI6CiAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgLy8gT3JpZ2luYWw6CiAgLy8gICBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiTXVtcHMiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIk11bXBzIl0KICAoICggW0ZISVIuQ29uZGl0aW9uOiAiTXVtcHMiXSApLnZlcmlmaWVkICggKSApIE11bXBzRGlhZ25vc2lzCiAgICB3aGVyZSBkYXRlIGZyb20gc3RhcnQgb2YgTXVtcHNEaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBkdXJpbmcgZGF5IG9mICJGaXJzdCBUd28gWWVhcnMiCgpkZWZpbmUgIlJ1YmVsbGEgSW5kaWNhdG9ycyI6CiAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgLy8gT3JpZ2luYWw6CiAgLy8gICBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiUnViZWxsYSJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiUnViZWxsYSJdCiAgKCAoIFtGSElSLkNvbmRpdGlvbjogIlJ1YmVsbGEiXSApLnZlcmlmaWVkICggKSApIFJ1YmVsbGFEaWFnbm9zaXMKICAgIHdoZXJlIGRhdGUgZnJvbSBzdGFydCBvZiBSdWJlbGxhRGlhZ25vc2lzLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgZHVyaW5nIGRheSBvZiAiRmlyc3QgVHdvIFllYXJzIgoKZGVmaW5lICJNTVIgTnVtZXJhdG9yIEluY2x1c2lvbiBDb25kaXRpb25zIjoKICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAvLyBPcmlnaW5hbDoKICAvLyAgIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBwcm9kdWN0IGNvbnRhaW5pbmcgTWVhc2xlcyBtb3JiaWxsaXZpcnVzIGFuZCBNdW1wcyBvcnRob3J1YnVsYXZpcnVzIGFuZCBSdWJlbGxhIHZpcnVzIGFudGlnZW5zIChkaXNvcmRlcikiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBNZWFzbGVzIG1vcmJpbGxpdmlydXMgYW5kIE11bXBzIG9ydGhvcnVidWxhdmlydXMgYW5kIFJ1YmVsbGEgdmlydXMgYW50aWdlbnMgKGRpc29yZGVyKSJdCiAgKCAoIFtGSElSLkNvbmRpdGlvbjogIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBNZWFzbGVzIG1vcmJpbGxpdmlydXMgYW5kIE11bXBzIG9ydGhvcnVidWxhdmlydXMgYW5kIFJ1YmVsbGEgdmlydXMgYW50aWdlbnMgKGRpc29yZGVyKSJdICkudmVyaWZpZWQgKCApICkgTU1SQ29uZGl0aW9ucwogICAgd2hlcmUgZGF0ZSBmcm9tIHN0YXJ0IG9mIE1NUkNvbmRpdGlvbnMucHJldmFsZW5jZUludGVydmFsICggKSBkdXJpbmcgZGF5IG9mICJGaXJzdCBUd28gWWVhcnMiCgovL0hpQgoKCmRlZmluZSAiSGFzIEFwcHJvcHJpYXRlIE51bWJlciBvZiBIaWIgSW1tdW5pemF0aW9ucyI6CiAgZXhpc3RzICggIkhpYiAzIG9yIDQgRG9zZSBJbW11bml6YXRpb25zIiBIaWJJbW11bml6YXRpb24gLy80IGRvc2UgdGVzdAogICAgICAKICAgICAgbGV0IEhhc0ZvdXJEb3NlOiBDb3VudCgiSGliIDQgRG9zZSBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiKSA+IDAKICAgICAgd2hlcmUgKCBIYXNGb3VyRG9zZSAvL2lmIHB0IGhhZCBhdCBsZWFzdCBvbmUgNCBkb3NlIGNvZGUKICAgICAgICAgIAogICAgICAgICAgYW5kIENvdW50KGRpc3RpbmN0KCJIaWIgMyBvciA0IERvc2UgSW1tdW5pemF0aW9ucyIgSGliVmFjY2luYXRpb25zCiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZSBmcm9tIEhpYlZhY2NpbmF0aW9ucy5lYXJsaWVzdCgpCiAgICAgICAgICAgICkKICAgICAgICAgICkgPj0gNCAvL3B0IG11c3QgaGF2ZSA0IHJlZ2ltZW5zIChlLmcuLCAzLDMsNCw0IG9yIDQsMyw0LDQpCiAgICAgIAogICAgICApCiAgICAgICAgb3IgKCBIYXNGb3VyRG9zZSBpcyBmYWxzZSAvL2lmIHB0IGRpZCBub3QgaGF2ZSBhdCBsZWFzdCBvbmUgNCBkb3NlIGNvZGUKICAgICAgICAgICAgCiAgICAgICAgICAgIGFuZCBDb3VudChkaXN0aW5jdCgiSGliIDMgb3IgNCBEb3NlIEltbXVuaXphdGlvbnMiIEhpYlZhY2NpbmF0aW9ucwogICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZSBmcm9tIEhpYlZhY2NpbmF0aW9ucy5lYXJsaWVzdCgpCiAgICAgICAgICAgICAgKQogICAgICAgICAgICApID49IDMgLy9wdCBtdXN0IGhhdmUgMyByZWdpbWVucyBvZiAzIGRvc2UgY29kZXMKICAgICAgICAKICAgICAgICApCiAgKQoKZGVmaW5lICJIaWIgTnVtZXJhdG9yIEluY2x1c2lvbiBDb25kaXRpb25zIjoKICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAvLyBPcmlnaW5hbDoKICAvLyAgIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBwcm9kdWN0IGNvbnRhaW5pbmcgb25seSBIYWVtb3BoaWx1cyBpbmZsdWVuemFlIHR5cGUgYiBhbnRpZ2VuIChkaXNvcmRlcikiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBvbmx5IEhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIGFudGlnZW4gKGRpc29yZGVyKSJdCiAgKCAoIFtGSElSLkNvbmRpdGlvbjogIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBvbmx5IEhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIGFudGlnZW4gKGRpc29yZGVyKSJdICkudmVyaWZpZWQgKCApICkgSGliUmVhY3Rpb24KICAgIHdoZXJlIGRhdGUgZnJvbSBzdGFydCBvZiBIaWJSZWFjdGlvbi5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgIkZpcnN0IFR3byBZZWFycyIKCmRlZmluZSAiSGliIDMgRG9zZSBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiOgogICggKCAoIFtJbW11bml6YXRpb246ICJIaWIgVmFjY2luZSAoMyBkb3NlIHNjaGVkdWxlKSJdICkuaXNJbW11bml6YXRpb25BZG1pbmlzdGVyZWQgKCApICkgVGhyZWVEb3NlSGliVmFjY2luZQogICAgICB3aGVyZSBkYXRlIGZyb20gVGhyZWVEb3NlSGliVmFjY2luZS5vY2N1cnJlbmNlLmVhcmxpZXN0ICggKSBkdXJpbmcgZGF5IG9mICJWYWNjaW5lIEFkbWluaXN0cmF0aW9uIEludGVydmFsIC0gNDIgRGF5cyB1cCB0byAyIFllYXJzIE9sZCIKICAgICAgcmV0dXJuIFRocmVlRG9zZUhpYlZhY2NpbmUub2NjdXJyZW5jZQogICkKICAgIHVuaW9uICggKCAoIFtQcm9jZWR1cmU6ICJIaWIgVmFjY2luZSAoMyBkb3NlIHNjaGVkdWxlKSBBZG1pbmlzdGVyZWQiXSApLmlzUHJvY2VkdXJlUGVyZm9ybWVkICggKSApIFRocmVlRG9zZUhpYlByb2NlZHVyZQogICAgICAgIHdoZXJlIGRhdGUgZnJvbSBUaHJlZURvc2VIaWJQcm9jZWR1cmUucGVyZm9ybWVkLmVhcmxpZXN0ICggKSBkdXJpbmcgZGF5IG9mICJWYWNjaW5lIEFkbWluaXN0cmF0aW9uIEludGVydmFsIC0gNDIgRGF5cyB1cCB0byAyIFllYXJzIE9sZCIKICAgICAgICByZXR1cm4gVGhyZWVEb3NlSGliUHJvY2VkdXJlLnBlcmZvcm1lZAogICAgKQoKZGVmaW5lICJIaWIgMyBvciA0IERvc2UgSW1tdW5pemF0aW9ucyI6CiAgIkhpYiAzIERvc2UgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIgogICAgdW5pb24gIkhpYiA0IERvc2UgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIgoKZGVmaW5lICJIaWIgNCBEb3NlIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyI6CiAgKCAoICggW0ltbXVuaXphdGlvbjogIkhpYiBWYWNjaW5lICg0IGRvc2Ugc2NoZWR1bGUpIl0gKS5pc0ltbXVuaXphdGlvbkFkbWluaXN0ZXJlZCAoICkgKSBIaWJWYWNjaW5lCiAgICAgIHdoZXJlIGRhdGUgZnJvbSBIaWJWYWNjaW5lLm9jY3VycmVuY2UuZWFybGllc3QgKCApIGR1cmluZyBkYXkgb2YgIlZhY2NpbmUgQWRtaW5pc3RyYXRpb24gSW50ZXJ2YWwgLSA0MiBEYXlzIHVwIHRvIDIgWWVhcnMgT2xkIgogICAgICByZXR1cm4gSGliVmFjY2luZS5vY2N1cnJlbmNlCiAgKQogICAgdW5pb24gKCAoICggW1Byb2NlZHVyZTogIkhpYiBWYWNjaW5lICg0IGRvc2Ugc2NoZWR1bGUpIEFkbWluaXN0ZXJlZCJdICkuaXNQcm9jZWR1cmVQZXJmb3JtZWQgKCApICkgSGliUHJvY2VkdXJlCiAgICAgICAgd2hlcmUgZGF0ZSBmcm9tIEhpYlByb2NlZHVyZS5wZXJmb3JtZWQuZWFybGllc3QgKCApIGR1cmluZyBkYXkgb2YgIlZhY2NpbmUgQWRtaW5pc3RyYXRpb24gSW50ZXJ2YWwgLSA0MiBEYXlzIHVwIHRvIDIgWWVhcnMgT2xkIgogICAgICAgIHJldHVybiBIaWJQcm9jZWR1cmUucGVyZm9ybWVkCiAgICApCgovL0hlcEIKCgpkZWZpbmUgIkhlcGF0aXRpcyBCIE51bWVyYXRvciBJbmNsdXNpb24gQ29uZGl0aW9ucyI6CiAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgLy8gT3JpZ2luYWw6CiAgLy8gICBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIEhlcGF0aXRpcyBCIHZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIEhlcGF0aXRpcyBCIHZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJIZXBhdGl0aXMgQiJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSGVwYXRpdGlzIEIiXQogICggKCBbRkhJUi5Db25kaXRpb246ICJBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBwcm9kdWN0IGNvbnRhaW5pbmcgSGVwYXRpdGlzIEIgdmlydXMgYW50aWdlbiAoZGlzb3JkZXIpIl0KICAgICAgdW5pb24gW0ZISVIuQ29uZGl0aW9uOiAiSGVwYXRpdGlzIEIiXQogICkudmVyaWZpZWQgKCApICkgSGVwQkNvbmRpdGlvbnMKICAgIHdoZXJlIGRhdGUgZnJvbSBzdGFydCBvZiBIZXBCQ29uZGl0aW9ucy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgIkZpcnN0IFR3byBZZWFycyIKCmRlZmluZSAiVGhyZWUgSGVwYXRpdGlzIEIgVmFjY2luYXRpb25zIjoKICBmcm9tCiAgICAiSGVwYXRpdGlzIEIgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIiBIZXBhdGl0aXNCVmFjY2luYXRpb24xLAogICAgIkhlcGF0aXRpcyBCIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyIgSGVwYXRpdGlzQlZhY2NpbmF0aW9uMiwKICAgICJIZXBhdGl0aXMgQiBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiIEhlcGF0aXRpc0JWYWNjaW5hdGlvbjMKICAgIHdoZXJlIGRhdGUgZnJvbSBIZXBhdGl0aXNCVmFjY2luYXRpb24yLmVhcmxpZXN0ICggKSAxIGRheSBvciBtb3JlIGFmdGVyIGRhdGUgZnJvbSBIZXBhdGl0aXNCVmFjY2luYXRpb24xLmVhcmxpZXN0ICggKQogICAgICBhbmQgZGF0ZSBmcm9tIEhlcGF0aXRpc0JWYWNjaW5hdGlvbjMuZWFybGllc3QgKCApIDEgZGF5IG9yIG1vcmUgYWZ0ZXIgZGF0ZSBmcm9tIEhlcGF0aXRpc0JWYWNjaW5hdGlvbjIuZWFybGllc3QgKCApCiAgICByZXR1cm4gZGF0ZSBmcm9tIEhlcGF0aXRpc0JWYWNjaW5hdGlvbjEuZWFybGllc3QgKCApCgpkZWZpbmUgIkhlcGF0aXRpcyBCIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyI6CiAgKCAoICggW0ltbXVuaXphdGlvbjogIkhlcGF0aXRpcyBCIFZhY2NpbmUiXSApLmlzSW1tdW5pemF0aW9uQWRtaW5pc3RlcmVkICggKSApIEhlcGF0aXRpc0JWYWNjaW5hdGlvbgogICAgICB3aGVyZSBkYXRlIGZyb20gSGVwYXRpdGlzQlZhY2NpbmF0aW9uLm9jY3VycmVuY2UuZWFybGllc3QgKCApIGR1cmluZyBkYXkgb2YgIkZpcnN0IFR3byBZZWFycyIKICAgICAgcmV0dXJuIEhlcGF0aXRpc0JWYWNjaW5hdGlvbi5vY2N1cnJlbmNlCiAgKQogICAgdW5pb24gKCAoICggW1Byb2NlZHVyZTogIkhlcGF0aXRpcyBCIFZhY2NpbmUgQWRtaW5pc3RlcmVkIl0gKS5pc1Byb2NlZHVyZVBlcmZvcm1lZCAoICkgKSBIZXBhdGl0aXNCUHJvY2VkdXJlCiAgICAgICAgd2hlcmUgZGF0ZSBmcm9tIEhlcGF0aXRpc0JQcm9jZWR1cmUucGVyZm9ybWVkLmVhcmxpZXN0ICggKSBkdXJpbmcgZGF5IG9mICJGaXJzdCBUd28gWWVhcnMiCiAgICAgICAgcmV0dXJuIEhlcGF0aXRpc0JQcm9jZWR1cmUucGVyZm9ybWVkCiAgICApCgpkZWZpbmUgIk1lZXRzIEhlcEIgVmFjY2luYXRpb24gUmVxdWlyZW1lbnQiOgogIGZyb20KICAgICJIZXBhdGl0aXMgQiBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiIEhlcGF0aXRpc0JWYWNjaW5hdGlvbjEsCiAgICAiSGVwYXRpdGlzIEIgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIiBIZXBhdGl0aXNCVmFjY2luYXRpb24yLAogICAgIk5ld0Jvcm4gVmFjY2luZSBSZXF1aXJlbWVudCIgTmV3Qm9yblZhY2NpbmUzCiAgICB3aGVyZSBkYXRlIGZyb20gSGVwYXRpdGlzQlZhY2NpbmF0aW9uMi5lYXJsaWVzdCAoICkgMSBkYXkgb3IgbW9yZSBhZnRlciBkYXRlIGZyb20gSGVwYXRpdGlzQlZhY2NpbmF0aW9uMS5lYXJsaWVzdCAoICkKICAgICAgYW5kIGRhdGUgZnJvbSBIZXBhdGl0aXNCVmFjY2luYXRpb24xLmVhcmxpZXN0ICggKSAxIGRheSBvciBtb3JlIGFmdGVyIGRhdGUgZnJvbSBOZXdCb3JuVmFjY2luZTMuZWFybGllc3QgKCApCiAgICAgIGFuZCBkYXRlIGZyb20gSGVwYXRpdGlzQlZhY2NpbmF0aW9uMi5lYXJsaWVzdCAoICkgMSBkYXkgb3IgbW9yZSBhZnRlciBkYXRlIGZyb20gTmV3Qm9yblZhY2NpbmUzLmVhcmxpZXN0ICggKQogICAgcmV0dXJuIGRhdGUgZnJvbSBIZXBhdGl0aXNCVmFjY2luYXRpb24xLmVhcmxpZXN0ICggKQoKZGVmaW5lICJOZXdCb3JuIFZhY2NpbmUgUmVxdWlyZW1lbnQiOgogICggKCBbUHJvY2VkdXJlOiAiSW50cm9kdWN0aW9uIG9mIFNlcnVtLCBUb3hvaWQgYW5kIFZhY2NpbmUgaW50byBNdXNjbGUsIFBlcmN1dGFuZW91cyBBcHByb2FjaCJdICkuaXNQcm9jZWR1cmVQZXJmb3JtZWQgKCApICkgTmV3Qm9yblZhY2NpbmUKICAgIHdoZXJlIGRhdGUgZnJvbSBOZXdCb3JuVmFjY2luZS5wZXJmb3JtZWQuZWFybGllc3QgKCApIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbUGF0aWVudC5iaXJ0aERhdGUsIFBhdGllbnQuYmlydGhEYXRlICsgNyBkYXlzXQogICAgcmV0dXJuIE5ld0Jvcm5WYWNjaW5lLnBlcmZvcm1lZAoKLy9WWlYKCgpkZWZpbmUgIk9uZSBDaGlja2VuIFBveCBWYWNjaW5hdGlvbiI6CiAgKCAoICggW0ltbXVuaXphdGlvbjogIlZhcmljZWxsYSBab3N0ZXIgVmFjY2luZSAoVlpWKSJdICkuaXNJbW11bml6YXRpb25BZG1pbmlzdGVyZWQgKCApICkgQ2hpY2tlblBveFZhY2NpbmF0aW9uCiAgICAgIHdoZXJlIGRhdGUgZnJvbSBDaGlja2VuUG94VmFjY2luYXRpb24ub2NjdXJyZW5jZS5lYXJsaWVzdCAoICkgZHVyaW5nICJEYXRlIG9mIEZpcnN0IEJpcnRoZGF5IHRvIERhdGUgb2YgU2Vjb25kIEJpcnRoZGF5IgogICAgICByZXR1cm4gZGF0ZSBmcm9tIENoaWNrZW5Qb3hWYWNjaW5hdGlvbi5vY2N1cnJlbmNlLmVhcmxpZXN0ICggKQogICkKICAgIHVuaW9uICggKCAoIFtQcm9jZWR1cmU6ICJWYXJpY2VsbGEgWm9zdGVyIFZhY2NpbmUgKFZaVikgQWRtaW5pc3RlcmVkIl0gKS5pc1Byb2NlZHVyZVBlcmZvcm1lZCAoICkgKSBDaGlja2VuUG94UHJvY2VkdXJlCiAgICAgICAgd2hlcmUgZGF0ZSBmcm9tIENoaWNrZW5Qb3hQcm9jZWR1cmUucGVyZm9ybWVkLmVhcmxpZXN0ICggKSBkdXJpbmcgIkRhdGUgb2YgRmlyc3QgQmlydGhkYXkgdG8gRGF0ZSBvZiBTZWNvbmQgQmlydGhkYXkiCiAgICAgICAgcmV0dXJuIGRhdGUgZnJvbSBDaGlja2VuUG94UHJvY2VkdXJlLnBlcmZvcm1lZC5lYXJsaWVzdCAoICkKICAgICkKCmRlZmluZSAiVmFyaWNlbGxhIFpvc3RlciBOdW1lcmF0b3IgSW5jbHVzaW9uIENvbmRpdGlvbnMiOgogIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogIC8vIE9yaWdpbmFsOgogIC8vICAgW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlZhcmljZWxsYSBab3N0ZXIiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlZhcmljZWxsYSBab3N0ZXIiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgY29udGFpbmluZyBIdW1hbiBhbHBoYWhlcnBlc3ZpcnVzIDMgYW50aWdlbiAoZGlzb3JkZXIpIl0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJBbmFwaHlsYXhpcyBjYXVzZWQgYnkgdmFjY2luZSBjb250YWluaW5nIEh1bWFuIGFscGhhaGVycGVzdmlydXMgMyBhbnRpZ2VuIChkaXNvcmRlcikiXQogICggKCBbRkhJUi5Db25kaXRpb246ICJWYXJpY2VsbGEgWm9zdGVyIl0KICAgICAgdW5pb24gW0ZISVIuQ29uZGl0aW9uOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgY29udGFpbmluZyBIdW1hbiBhbHBoYWhlcnBlc3ZpcnVzIDMgYW50aWdlbiAoZGlzb3JkZXIpIl0KICApLnZlcmlmaWVkICggKSApIFZhcmljZWxsYVpvc3RlcgogICAgd2hlcmUgZGF0ZSBmcm9tIHN0YXJ0IG9mIFZhcmljZWxsYVpvc3Rlci5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgIkZpcnN0IFR3byBZZWFycyIKCi8vUENWCgoKZGVmaW5lICJGb3VyIFBuZXVtb2NvY2NhbCBDb25qdWdhdGUgVmFjY2luYXRpb25zIjoKICBmcm9tCiAgICAiUG5ldW1vY29jY2FsIENvbmp1Z2F0ZSBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiIFBuZXVtb2NvY2NhbFZhY2NpbmF0aW9uMSwKICAgICJQbmV1bW9jb2NjYWwgQ29uanVnYXRlIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyIgUG5ldW1vY29jY2FsVmFjY2luYXRpb24yLAogICAgIlBuZXVtb2NvY2NhbCBDb25qdWdhdGUgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIiBQbmV1bW9jb2NjYWxWYWNjaW5hdGlvbjMsCiAgICAiUG5ldW1vY29jY2FsIENvbmp1Z2F0ZSBJbW11bml6YXRpb25zIG9yIFByb2NlZHVyZXMiIFBuZXVtb2NvY2NhbFZhY2NpbmF0aW9uNAogICAgd2hlcmUgZGF0ZSBmcm9tIFBuZXVtb2NvY2NhbFZhY2NpbmF0aW9uMi5lYXJsaWVzdCAoICkgMSBkYXkgb3IgbW9yZSBhZnRlciBkYXRlIGZyb20gUG5ldW1vY29jY2FsVmFjY2luYXRpb24xLmVhcmxpZXN0ICggKQogICAgICBhbmQgZGF0ZSBmcm9tIFBuZXVtb2NvY2NhbFZhY2NpbmF0aW9uMy5lYXJsaWVzdCAoICkgMSBkYXkgb3IgbW9yZSBhZnRlciBkYXRlIGZyb20gUG5ldW1vY29jY2FsVmFjY2luYXRpb24yLmVhcmxpZXN0ICggKQogICAgICBhbmQgZGF0ZSBmcm9tIFBuZXVtb2NvY2NhbFZhY2NpbmF0aW9uNC5lYXJsaWVzdCAoICkgMSBkYXkgb3IgbW9yZSBhZnRlciBkYXRlIGZyb20gUG5ldW1vY29jY2FsVmFjY2luYXRpb24zLmVhcmxpZXN0ICggKQogICAgcmV0dXJuIGRhdGUgZnJvbSBQbmV1bW9jb2NjYWxWYWNjaW5hdGlvbjEuZWFybGllc3QgKCApCgpkZWZpbmUgIlBuZXVtb2NvY2NhbCBDb25qdWdhdGUgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIjoKICAoICggKCBbSW1tdW5pemF0aW9uOiAiUG5ldW1vY29jY2FsIENvbmp1Z2F0ZSBWYWNjaW5lIl0gKS5pc0ltbXVuaXphdGlvbkFkbWluaXN0ZXJlZCAoICkgKSBQbmV1bW9jb2NjYWxWYWNjaW5hdGlvbgogICAgICB3aGVyZSBkYXRlIGZyb20gUG5ldW1vY29jY2FsVmFjY2luYXRpb24ub2NjdXJyZW5jZS5lYXJsaWVzdCAoICkgZHVyaW5nIGRheSBvZiAiVmFjY2luZSBBZG1pbmlzdHJhdGlvbiBJbnRlcnZhbCAtIDQyIERheXMgdXAgdG8gMiBZZWFycyBPbGQiCiAgICAgIHJldHVybiBQbmV1bW9jb2NjYWxWYWNjaW5hdGlvbi5vY2N1cnJlbmNlCiAgKQogICAgdW5pb24gKCAoICggW1Byb2NlZHVyZTogIlBuZXVtb2NvY2NhbCBDb25qdWdhdGUgVmFjY2luZSBBZG1pbmlzdGVyZWQiXSApLmlzUHJvY2VkdXJlUGVyZm9ybWVkICggKSApIFBuZXVtb2NvY2NhbFByb2NlZHVyZQogICAgICAgIHdoZXJlIGRhdGUgZnJvbSBQbmV1bW9jb2NjYWxQcm9jZWR1cmUucGVyZm9ybWVkLmVhcmxpZXN0ICggKSBkdXJpbmcgZGF5IG9mICJWYWNjaW5lIEFkbWluaXN0cmF0aW9uIEludGVydmFsIC0gNDIgRGF5cyB1cCB0byAyIFllYXJzIE9sZCIKICAgICAgICByZXR1cm4gUG5ldW1vY29jY2FsUHJvY2VkdXJlLnBlcmZvcm1lZAogICAgKQoKZGVmaW5lICJQbmV1bW9jb2NjYWwgQ29uanVnYXRlIE51bWVyYXRvciBJbmNsdXNpb24gQ29uZGl0aW9ucyI6CiAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgLy8gT3JpZ2luYWw6CiAgLy8gICBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIFN0cmVwdG9jb2NjdXMgcG5ldW1vbmlhZSBhbnRpZ2VuIChkaXNvcmRlcikiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBTdHJlcHRvY29jY3VzIHBuZXVtb25pYWUgYW50aWdlbiAoZGlzb3JkZXIpIl0KICAoICggW0ZISVIuQ29uZGl0aW9uOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIFN0cmVwdG9jb2NjdXMgcG5ldW1vbmlhZSBhbnRpZ2VuIChkaXNvcmRlcikiXSApLnZlcmlmaWVkICggKSApIFBuZXVtb2NvY2NhbFJlYWN0aW9uCiAgICB3aGVyZSBkYXRlIGZyb20gc3RhcnQgb2YgUG5ldW1vY29jY2FsUmVhY3Rpb24ucHJldmFsZW5jZUludGVydmFsICggKSBkdXJpbmcgZGF5IG9mICJGaXJzdCBUd28gWWVhcnMiCgovL0hlcEEKCgpkZWZpbmUgIk9uZSBIZXBhdGl0aXMgQSBWYWNjaW5hdGlvbnMiOgogICggKCAoIFtJbW11bml6YXRpb246ICJIZXBhdGl0aXMgQSBWYWNjaW5lIl0gKS5pc0ltbXVuaXphdGlvbkFkbWluaXN0ZXJlZCAoICkgKSBIZXBhdGl0aXNBVmFjY2luYXRpb24KICAgICAgd2hlcmUgZGF0ZSBmcm9tIEhlcGF0aXRpc0FWYWNjaW5hdGlvbi5vY2N1cnJlbmNlLmVhcmxpZXN0ICggKSBkdXJpbmcgIkRhdGUgb2YgRmlyc3QgQmlydGhkYXkgdG8gRGF0ZSBvZiBTZWNvbmQgQmlydGhkYXkiCiAgICAgIHJldHVybiBkYXRlIGZyb20gSGVwYXRpdGlzQVZhY2NpbmF0aW9uLm9jY3VycmVuY2UuZWFybGllc3QgKCApCiAgKQogICAgdW5pb24gKCAoICggW1Byb2NlZHVyZTogIkhlcGF0aXRpcyBBIFZhY2NpbmUgQWRtaW5pc3RlcmVkIl0gKS5pc1Byb2NlZHVyZVBlcmZvcm1lZCAoICkgKSBIZXBhdGl0aXNBUHJvY2VkdXJlCiAgICAgICAgd2hlcmUgZGF0ZSBmcm9tIEhlcGF0aXRpc0FQcm9jZWR1cmUucGVyZm9ybWVkLmVhcmxpZXN0ICggKSBkdXJpbmcgIkRhdGUgb2YgRmlyc3QgQmlydGhkYXkgdG8gRGF0ZSBvZiBTZWNvbmQgQmlydGhkYXkiCiAgICAgICAgcmV0dXJuIGRhdGUgZnJvbSBIZXBhdGl0aXNBUHJvY2VkdXJlLnBlcmZvcm1lZC5lYXJsaWVzdCAoICkKICAgICkKCmRlZmluZSAiSGVwYXRpdGlzIEEgTnVtZXJhdG9yIEluY2x1c2lvbiBDb25kaXRpb25zIjoKICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAvLyBPcmlnaW5hbDoKICAvLyAgIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJIZXBhdGl0aXMgQSJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSGVwYXRpdGlzIEEiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIEhlcGF0aXRpcyBBIHZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIEhlcGF0aXRpcyBBIHZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSJdCiAgKCAoIFtGSElSLkNvbmRpdGlvbjogIkhlcGF0aXRpcyBBIl0KICAgICAgdW5pb24gW0ZISVIuQ29uZGl0aW9uOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIEhlcGF0aXRpcyBBIHZpcnVzIGFudGlnZW4gKGRpc29yZGVyKSJdCiAgKS52ZXJpZmllZCAoICkgKSBIZXBhdGl0aXNBRGlhZ25vc2lzCiAgICB3aGVyZSBkYXRlIGZyb20gc3RhcnQgb2YgSGVwYXRpdGlzQURpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgIkZpcnN0IFR3byBZZWFycyIKCi8vUlYKCgpkZWZpbmUgIkhhcyBBcHByb3ByaWF0ZSBOdW1iZXIgb2YgUm90YXZpcnVzIEltbXVuaXphdGlvbnMiOgogIGV4aXN0cyAoICJSb3RhdmlydXMgMiBvciAzIERvc2UgSW1tdW5pemF0aW9ucyIgUm90YXZpcnVzSW1tdW5pemF0aW9uCiAgICAgIGxldCBIYXNUaHJlZURvc2U6IENvdW50KCJSb3RhdmlydXMgMyBEb3NlIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyIpID4gMAogICAgICB3aGVyZSAoIEhhc1RocmVlRG9zZQogICAgICAgICAgYW5kIENvdW50KGRpc3RpbmN0KCJSb3RhdmlydXMgMiBvciAzIERvc2UgSW1tdW5pemF0aW9ucyIgUm90YXZpcnVzVmFjY2luYXRpb25zCiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZSBmcm9tIFJvdGF2aXJ1c1ZhY2NpbmF0aW9ucy5lYXJsaWVzdCgpCiAgICAgICAgICAgICkKICAgICAgICAgICkgPj0gMwogICAgICApCiAgICAgICAgb3IgKCBIYXNUaHJlZURvc2UgaXMgZmFsc2UKICAgICAgICAgICAgYW5kIENvdW50KGRpc3RpbmN0KCJSb3RhdmlydXMgMiBvciAzIERvc2UgSW1tdW5pemF0aW9ucyIgUm90YXZpcnVzVmFjY2luYXRpb25zCiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRlIGZyb20gUm90YXZpcnVzVmFjY2luYXRpb25zLmVhcmxpZXN0KCkKICAgICAgICAgICAgICApCiAgICAgICAgICAgICkgPj0gMgogICAgICAgICkKICApCgpkZWZpbmUgIlJvdGF2aXJ1cyAyIERvc2UgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIjoKICAoICggKCBbSW1tdW5pemF0aW9uOiAicm90YXZpcnVzLCBsaXZlLCBtb25vdmFsZW50IHZhY2NpbmUiXSApLmlzSW1tdW5pemF0aW9uQWRtaW5pc3RlcmVkICggKSApIFR3b0Rvc2VSb3RhdmlydXNWYWNjaW5lCiAgICAgIHdoZXJlIGRhdGUgZnJvbSBUd29Eb3NlUm90YXZpcnVzVmFjY2luZS5vY2N1cnJlbmNlLmVhcmxpZXN0ICggKSBkdXJpbmcgZGF5IG9mICJWYWNjaW5lIEFkbWluaXN0cmF0aW9uIEludGVydmFsIC0gNDIgRGF5cyB1cCB0byAyIFllYXJzIE9sZCIKICAgICAgcmV0dXJuIFR3b0Rvc2VSb3RhdmlydXNWYWNjaW5lLm9jY3VycmVuY2UKICApCiAgICB1bmlvbiAoICggKCBbUHJvY2VkdXJlOiAiUm90YXZpcnVzIFZhY2NpbmUgKDIgZG9zZSBzY2hlZHVsZSkgQWRtaW5pc3RlcmVkIl0gKS5pc1Byb2NlZHVyZVBlcmZvcm1lZCAoICkgKSBUd29Eb3NlUm90YXZpcnVzUHJvY2VkdXJlCiAgICAgICAgd2hlcmUgZGF0ZSBmcm9tIFR3b0Rvc2VSb3RhdmlydXNQcm9jZWR1cmUucGVyZm9ybWVkLmVhcmxpZXN0ICggKSBkdXJpbmcgZGF5IG9mICJWYWNjaW5lIEFkbWluaXN0cmF0aW9uIEludGVydmFsIC0gNDIgRGF5cyB1cCB0byAyIFllYXJzIE9sZCIKICAgICAgICByZXR1cm4gVHdvRG9zZVJvdGF2aXJ1c1Byb2NlZHVyZS5wZXJmb3JtZWQKICAgICkKCmRlZmluZSAiUm90YXZpcnVzIDIgb3IgMyBEb3NlIEltbXVuaXphdGlvbnMiOgogICJSb3RhdmlydXMgMiBEb3NlIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyIKICAgIHVuaW9uICJSb3RhdmlydXMgMyBEb3NlIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyIKCmRlZmluZSAiUm90YXZpcnVzIE51bWVyYXRvciBJbmNsdXNpb24gQ29uZGl0aW9ucyI6CiAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgLy8gT3JpZ2luYWw6CiAgLy8gICBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHJvdGF2aXJ1cyB2YWNjaW5lIChkaXNvcmRlcikiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkFuYXBoeWxheGlzIGNhdXNlZCBieSByb3RhdmlydXMgdmFjY2luZSAoZGlzb3JkZXIpIl0KICAoICggW0ZISVIuQ29uZGl0aW9uOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHJvdGF2aXJ1cyB2YWNjaW5lIChkaXNvcmRlcikiXSApLnZlcmlmaWVkICggKSApIFJvdGF2aXJ1c0NvbmRpdGlvbnMKICAgIHdoZXJlIGRhdGUgZnJvbSBzdGFydCBvZiBSb3RhdmlydXNDb25kaXRpb25zLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgZHVyaW5nIGRheSBvZiAiRmlyc3QgVHdvIFllYXJzIgoKZGVmaW5lICJSb3RhdmlydXMgMyBEb3NlIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyI6CiAgKCAoICggW0ltbXVuaXphdGlvbjogIlJvdGF2aXJ1cyBWYWNjaW5lICgzIGRvc2Ugc2NoZWR1bGUpIl0gKS5pc0ltbXVuaXphdGlvbkFkbWluaXN0ZXJlZCAoICkgKSBUaHJlZURvc2VSb3RhdmlydXNWYWNjaW5lCiAgICAgIHdoZXJlIGRhdGUgZnJvbSBUaHJlZURvc2VSb3RhdmlydXNWYWNjaW5lLm9jY3VycmVuY2UuZWFybGllc3QgKCApIGR1cmluZyBkYXkgb2YgIlZhY2NpbmUgQWRtaW5pc3RyYXRpb24gSW50ZXJ2YWwgLSA0MiBEYXlzIHVwIHRvIDIgWWVhcnMgT2xkIgogICAgICByZXR1cm4gVGhyZWVEb3NlUm90YXZpcnVzVmFjY2luZS5vY2N1cnJlbmNlCiAgKQogICAgdW5pb24gKCAoICggW1Byb2NlZHVyZTogIlJvdGF2aXJ1cyBWYWNjaW5lICgzIGRvc2Ugc2NoZWR1bGUpIEFkbWluaXN0ZXJlZCJdICkuaXNQcm9jZWR1cmVQZXJmb3JtZWQgKCApICkgVGhyZWVEb3NlUm90YXZpcnVzQWRtaW5pc3RlcmVkCiAgICAgICAgd2hlcmUgZGF0ZSBmcm9tIFRocmVlRG9zZVJvdGF2aXJ1c0FkbWluaXN0ZXJlZC5wZXJmb3JtZWQuZWFybGllc3QgKCApIGR1cmluZyBkYXkgb2YgIlZhY2NpbmUgQWRtaW5pc3RyYXRpb24gSW50ZXJ2YWwgLSA0MiBEYXlzIHVwIHRvIDIgWWVhcnMgT2xkIgogICAgICAgIHJldHVybiBUaHJlZURvc2VSb3RhdmlydXNBZG1pbmlzdGVyZWQucGVyZm9ybWVkCiAgICApCgovL0ZsdQoKCmRlZmluZSAiSW5mbHVlbnphIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyI6CiAgKCAoICggW0ltbXVuaXphdGlvbjogIkNoaWxkIEluZmx1ZW56YSBWYWNjaW5lIl0gKS5pc0ltbXVuaXphdGlvbkFkbWluaXN0ZXJlZCAoICkgKSBJbmZsdWVuemFWYWNjaW5lCiAgICAgIHdoZXJlIGRhdGUgZnJvbSBJbmZsdWVuemFWYWNjaW5lLm9jY3VycmVuY2UuZWFybGllc3QgKCApIGR1cmluZyBkYXkgb2YgIlZhY2NpbmUgQWRtaW5pc3RyYXRpb24gSW50ZXJ2YWwgLSAxODAgRGF5cyB1cCB0byAyIFllYXJzIE9sZCIKICAgICAgcmV0dXJuIEluZmx1ZW56YVZhY2NpbmUub2NjdXJyZW5jZQogICkKICAgIHVuaW9uICggKCAoIFtQcm9jZWR1cmU6ICJDaGlsZCBJbmZsdWVuemEgVmFjY2luZSBBZG1pbmlzdGVyZWQiXSApLmlzUHJvY2VkdXJlUGVyZm9ybWVkICggKSApIEluZmx1ZW56YUFkbWluaXN0cmF0aW9uCiAgICAgICAgd2hlcmUgZGF0ZSBmcm9tIEluZmx1ZW56YUFkbWluaXN0cmF0aW9uLnBlcmZvcm1lZC5lYXJsaWVzdCAoICkgZHVyaW5nIGRheSBvZiAiVmFjY2luZSBBZG1pbmlzdHJhdGlvbiBJbnRlcnZhbCAtIDE4MCBEYXlzIHVwIHRvIDIgWWVhcnMgT2xkIgogICAgICAgIHJldHVybiBJbmZsdWVuemFBZG1pbmlzdHJhdGlvbi5wZXJmb3JtZWQKICAgICkKCmRlZmluZSAiVHdvIEluZmx1ZW56YSBWYWNjaW5hdGlvbnMiOgogIGZyb20KICAgICJJbmZsdWVuemEgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIiBGbHVWYWNjaW5hdGlvbjEsCiAgICAiSW5mbHVlbnphIEltbXVuaXphdGlvbnMgb3IgUHJvY2VkdXJlcyIgRmx1VmFjY2luYXRpb24yCiAgICB3aGVyZSBkYXRlIGZyb20gRmx1VmFjY2luYXRpb24yLmVhcmxpZXN0ICggKSAxIGRheSBvciBtb3JlIGFmdGVyIGRhdGUgZnJvbSBGbHVWYWNjaW5hdGlvbjEuZWFybGllc3QgKCApCiAgICByZXR1cm4gZGF0ZSBmcm9tIEZsdVZhY2NpbmF0aW9uMS5lYXJsaWVzdCAoICkKCmRlZmluZSAiSW5mbHVlbnphIE51bWVyYXRvciBJbmNsdXNpb24gQ29uZGl0aW9ucyI6CiAgLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgLy8gT3JpZ2luYWw6CiAgLy8gICBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIEluZmx1ZW56YSB2aXJ1cyBhbnRpZ2VuIChkaXNvcmRlcikiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkFuYXBoeWxheGlzIGNhdXNlZCBieSB2YWNjaW5lIHByb2R1Y3QgY29udGFpbmluZyBJbmZsdWVuemEgdmlydXMgYW50aWdlbiAoZGlzb3JkZXIpIl0KICAoICggW0ZISVIuQ29uZGl0aW9uOiAiQW5hcGh5bGF4aXMgY2F1c2VkIGJ5IHZhY2NpbmUgcHJvZHVjdCBjb250YWluaW5nIEluZmx1ZW56YSB2aXJ1cyBhbnRpZ2VuIChkaXNvcmRlcikiXSApLnZlcmlmaWVkICggKSApIEluZmx1ZW56YUNvbmRpdGlvbnMKICAgIHdoZXJlIGRhdGUgZnJvbSBzdGFydCBvZiBJbmZsdWVuemFDb25kaXRpb25zLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgZHVyaW5nIGRheSBvZiAiRmlyc3QgVHdvIFllYXJzIgoKZGVmaW5lICJUd28gSW5mbHVlbnphIFZhY2NpbmF0aW9ucyBJbmNsdWRpbmcgT25lIExBSVYgVmFjY2luYXRpb24iOgogIGV4aXN0cyAiTEFJViBWYWNjaW5hdGlvbnMiCiAgICBhbmQgZXhpc3RzICJJbmZsdWVuemEgSW1tdW5pemF0aW9ucyBvciBQcm9jZWR1cmVzIgoKZGVmaW5lICJMQUlWIFZhY2NpbmF0aW9ucyI6CiAgKCAoICggW0ltbXVuaXphdGlvbjogIkluZmx1ZW56YSBWaXJ1cyBMQUlWIFZhY2NpbmUiXSApLmlzSW1tdW5pemF0aW9uQWRtaW5pc3RlcmVkICggKSApIExBSVZWYWNjaW5lCiAgICAgIHdoZXJlIGRhdGUgZnJvbSBMQUlWVmFjY2luZS5vY2N1cnJlbmNlLmVhcmxpZXN0ICggKSBkdXJpbmcgZGF5IG9mIEludGVydmFsWyJEYXRlIG9mIFNlY29uZCBCaXJ0aGRheSIsICJEYXRlIG9mIFNlY29uZCBCaXJ0aGRheSJdCiAgICAgIHJldHVybiBkYXRlIGZyb20gTEFJVlZhY2NpbmUub2NjdXJyZW5jZS5lYXJsaWVzdCAoICkKICApCiAgICB1bmlvbiAoICggKCBbUHJvY2VkdXJlOiAiSW5mbHVlbnphIFZpcnVzIExBSVYgVmFjY2luZSBBZG1pbmlzdGVyZWQiXSApLmlzUHJvY2VkdXJlUGVyZm9ybWVkICggKSApIEluZmx1ZW56YUFkbWluaXN0cmF0aW9uCiAgICAgICAgd2hlcmUgZGF0ZSBmcm9tIEluZmx1ZW56YUFkbWluaXN0cmF0aW9uLnBlcmZvcm1lZC5lYXJsaWVzdCAoICkgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFsiRGF0ZSBvZiBTZWNvbmQgQmlydGhkYXkiLCAiRGF0ZSBvZiBTZWNvbmQgQmlydGhkYXkiXQogICAgICAgIHJldHVybiBkYXRlIGZyb20gSW5mbHVlbnphQWRtaW5pc3RyYXRpb24ucGVyZm9ybWVkLmVhcmxpZXN0ICggKQogICAgKQoKZGVmaW5lICJTREUgRXRobmljaXR5IjoKICBTREUuIlNERSBFdGhuaWNpdHkiCgpkZWZpbmUgIlNERSBQYXllciI6CiAgU0RFLiJTREUgUGF5ZXIiCgpkZWZpbmUgIlNERSBSYWNlIjoKICBTREUuIlNERSBSYWNlIgoKZGVmaW5lICJTREUgU2V4IjoKICBTREUuIlNERSBTZXgi",
"url" : "https://madie.cms.gov/Library-CMS117FHIRChildImmunStatus.cql"
}
]
}