SMART DAK Cervical Cancer Screening, published by Dan Heslinga (independent contributor). This guide is not an authorized publication; it is the continuous build for version 0.0.1 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/dhes/smart-dak-cxca/ and changes regularly. See the Directory of published versions
| Draft as of 2026-05-14 |
@prefix fhir: <http://hl7.org/fhir/> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . # - resource ------------------------------------------------------------------- a fhir:Library ; fhir:nodeRole fhir:treeRoot ; fhir:id [ fhir:v "CXCAD2DTScreeningEligibilityLogic"] ; # fhir:meta [ ( fhir:profile [ fhir:v "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"^^xsd:anyURI ; fhir:l <http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary> ] [ fhir:v "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"^^xsd:anyURI ; fhir:l <http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary> ] [ fhir:v "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"^^xsd:anyURI ; fhir:l <http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library> ] [ fhir:v "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"^^xsd:anyURI ; fhir:l <http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module> ] ) ] ; # fhir:text [ fhir:status [ fhir:v "extensions" ] ; fhir:div [ fhir:v "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n<div>\n <table class=\"grid dict\">\n \n \n <tr>\n <th scope=\"row\"><b>Title: </b></th>\n <td style=\"padding-left: 4px;\">CXCAD2DTScreeningEligibilityLogic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Id: </b></th>\n <td style=\"padding-left: 4px;\">CXCAD2DTScreeningEligibilityLogic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Version: </b></th>\n <td style=\"padding-left: 4px;\">0.0.1</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Url: </b></th>\n <td style=\"padding-left: 4px;\"><a href=\"Library-CXCAD2DTScreeningEligibilityLogic.html\">CXCAD2DTScreeningEligibilityLogic</a></td>\n </tr>\n \n\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Status: </b></th>\n <td style=\"padding-left: 4px;\">draft</td>\n </tr>\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Type: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n \n <p style=\"margin-bottom: 5px;\">\n <b>system: </b> <span><a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a></span>\n </p>\n \n \n <p style=\"margin-bottom: 5px;\">\n <b>code: </b> <span>logic-library</span>\n </p>\n \n \n \n \n \n </td>\n </tr>\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Date: </b></th>\n <td style=\"padding-left: 4px;\">2026-05-14 00:50:23+0000</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Publisher: </b></th>\n <td style=\"padding-left: 4px;\">Dan Heslinga (independent contributor)</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Description: </b></th>\n <td style=\"padding-left: 4px;\"><div><p>Decision support logic for cervical cancer screening eligibility (CXCA.D2). Encodes the binding eligibility rules from Mongolia MOH Order A/641 (2020) section 2.2. Source CQL is at input/cql/CXCAD2DTScreeningEligibilityLogic.cql.</p>\n</div></td>\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 <tr>\n <th scope=\"row\"><b>Related Artifacts: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n \n <p><b>Dependencies</b></p>\n <ul>\n \n <li><a href=\"Library-CXCAElements.html\">CXCAElements</a></li>\n \n </ul>\n \n \n \n \n \n </td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Parameters: </b></th>\n <td style=\"padding-left: 4px;\">\n <table class=\"grid-dict\">\n <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>\n \n <tr><th>Today</th><th>date</th><th>0</th><th>1</th><th>In</th></tr>\n \n <tr><th>HasRecentHPVScreening</th><th>boolean</th><th>0</th><th>1</th><th>In</th></tr>\n \n <tr><th>HasRecentCytologyScreening</th><th>boolean</th><th>0</th><th>1</th><th>In</th></tr>\n \n <tr><th>FacilityHasHPVCapability</th><th>boolean</th><th>0</th><th>1</th><th>In</th></tr>\n \n <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client age</th><th>integer</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is at binding target age (35 or 45)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is at programmatic target age (30 or 40)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is due for HPV screening (legal binding)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client not due — already screened in current cycle (legal binding)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client excluded — outside target age range (legal binding)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client excluded — prior hysterectomy (legal binding)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is at cytology pathway target age</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is due for cytology screening (legal binding)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is due for HPV screening (programmatic)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is due for HPV screening at age 35</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Client is due for HPV screening at age 30</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n </table>\n </td>\n </tr>\n \n\n \n\n \n \n <tr>\n <td colspan=\"2\">\n <table>\n <tr><th><a id=\"cql-content\"><b>Content: </b></a> text/cql</th></tr>\n <tr><td><pre><code class=\"language-cql\">/*\n * Library: CXCAD2DTScreeningEligibilityLogic\n *\n * Decision: Cervical cancer screening eligibility (HPV pathway)\n * L2 Source: A/641 (2020) section 2.2 — Mongolia binding screening eligibility rules\n * Trigger: CXCA.D2 — encounter with a woman in primary-care setting\n *\n * Phase 5 expansion: implements the full four-outcome eligibility tree\n * (Due, Not Due in Cycle, Outside Age Range, Excluded - Hysterectomy)\n * across both binding ages 35 and 45, plus a parallel programmatic-overlay\n * tree for the April 2025 launch's announced 30 and 40 ages.\n *\n * Each outcome is encoded as a separate CQL define so PlanDefinition actions\n * can fire on them individually — this lets a CDS engine surface different\n * guidance text per outcome rather than collapsing all branches into a\n * single boolean.\n *\n * PLACEHOLDER PATTERN — read carefully:\n * This rule references four predicates. One has been migrated to a real\n * FHIR query in the shared CXCAElements layer; three remain as Boolean\n * parameters that the CDS client must supply at evaluation time.\n *\n * ✓ Migrated Elements.\"Has Had Hysterectomy\"\n * → real query against [Procedure] with code CXCA.D#DE45\n *\n * ⏸ Placeholder \"HasRecentHPVScreening\", \"HasRecentCytologyScreening\"\n * → straightforward queries in shape, but require a design\n * decision on the recall window: parameterize the interval\n * (one define for both pathways) or author sibling defines\n * (HPV-recent at 10y, cytology-recent at 3y per A/641 §2.2)?\n * Held until the design call is made.\n *\n * ⏸ Placeholder \"FacilityHasHPVCapability\"\n * → not actually a per-patient FHIR query — this is facility\n * configuration. Real implementation could derive it from a\n * Location/Organization extension OR keep it as a parameter\n * the CDS client supplies. Both are defensible; left as a\n * parameter for now.\n *\n * The migration is structurally trivial: replacing a parameter read with\n * `Elements.\"<name>\"` only changes the body of the consuming define. The\n * define's name, signature, and PlanDefinition wiring all stay intact, so\n * downstream consumers (the PlanDefinition actions, ActivityDefinitions,\n * fixtures) are unaffected.\n */\n\nlibrary CXCAD2DTScreeningEligibilityLogic version '0.0.1'\n\nusing FHIR version '4.0.1'\n\ninclude FHIRHelpers version '4.0.1'\n\n// Shared elements layer — the harmonization substrate. Provides\n// `Has Had Hysterectomy` (a real FHIR query against [Procedure]); other\n// per-period predicates can be added here as they are authored.\ninclude CXCAElements called Elements\n\nparameter Today Date default Today()\n\n// Placeholder parameters — see PLACEHOLDER PATTERN in the file header for\n// the per-parameter rationale on why these remain as parameters rather than\n// migrating to CXCAElements queries.\nparameter \"HasRecentHPVScreening\" Boolean default false\nparameter \"HasRecentCytologyScreening\" Boolean default false\n\n// Facility lab-capacity selector — A/641 section 2.2 specifies different age cycles\n// based on whether the facility can run HPV high-risk DNA tests in-house.\n// true → HPV pathway (ages 35 and 45 only)\n// false → cytology pathway (the 11-age 3-year cycle: 30, 33, 36, 39, 42,\n// 45, 48, 51, 54, 57, 60)\n// Real implementation will derive this from a Location/Organization extension\n// or from a facility-registry lookup; in this iteration it is a parameter\n// the CDS client supplies.\nparameter \"FacilityHasHPVCapability\" Boolean default true\n\ncontext Patient\n\n// =============================================================================\n// Helper definitions\n// =============================================================================\n\n/*\n * Client age in years at the encounter date.\n */\ndefine \"Client age\":\n AgeInYearsAt(Today)\n\n/*\n * The client is at one of the binding target ages per A/641 section 2.2\n * (HPV-test-capable facilities: ages 35 and 45 only).\n */\ndefine \"Client is at binding target age (35 or 45)\":\n \"Client age\" = 35 or \"Client age\" = 45\n\n/*\n * The client is at one of the programmatic-overlay target ages per the\n * April 2025 Cervical Cancer Elimination Programme launch announcement\n * (ages 30 and 40).\n */\ndefine \"Client is at programmatic target age (30 or 40)\":\n \"Client age\" = 30 or \"Client age\" = 40\n\n// =============================================================================\n// Legal-binding eligibility tree — A/641 section 2.2 (HPV at ages 35 and 45)\n// Bindingness: legal\n// =============================================================================\n\n/*\n * @output: CXCA.D#DE4 \"Due for HPV screening\"\n * @bindingness: legal\n * Client is due if at a binding target age, has not had a hysterectomy,\n * and has not been screened in the current cycle.\n */\ndefine \"Client is due for HPV screening (legal binding)\":\n \"Client is at binding target age (35 or 45)\"\n and not Elements.\"Has Had Hysterectomy\"\n and not \"HasRecentHPVScreening\"\n\n/*\n * @output: CXCA.D#DE5 \"Not due — already screened in current cycle\"\n * @bindingness: legal\n * Client is at a target age but has had a recent valid HPV screening result.\n */\ndefine \"Client not due — already screened in current cycle (legal binding)\":\n \"Client is at binding target age (35 or 45)\"\n and \"HasRecentHPVScreening\"\n and not Elements.\"Has Had Hysterectomy\"\n\n/*\n * @output: CXCA.D#DE6 \"Excluded — outside target age range\"\n * @bindingness: legal\n * Client is not at a binding target age (35 or 45 only for HPV-capable facilities).\n */\ndefine \"Client excluded — outside target age range (legal binding)\":\n not \"Client is at binding target age (35 or 45)\"\n and not Elements.\"Has Had Hysterectomy\"\n\n/*\n * @output: CXCA.D#DE7 \"Excluded — prior hysterectomy\"\n * @bindingness: legal\n * Client has had a hysterectomy for non-cervical-cancer indication and is\n * therefore exempt from cervical cancer screening per A/641 section 2.2.\n */\ndefine \"Client excluded — prior hysterectomy (legal binding)\":\n Elements.\"Has Had Hysterectomy\"\n\n// =============================================================================\n// Cytology-pathway eligibility — A/641 section 2.2 (cytology-only facilities)\n// Bindingness: legal — binding to cytology-only facilities under A/641\n//\n// Eleven binding ages on a 3-year cycle: 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60.\n// Applied when the facility has no HPV DNA testing capability.\n// =============================================================================\n\n/*\n * The client is at one of the 11 binding cytology-pathway target ages\n * per A/641 section 2.2 (cytology-only facilities, 3-year cycle from 30 to 60).\n */\ndefine \"Client is at cytology pathway target age\":\n \"Client age\" in { 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60 }\n\n/*\n * @output: CXCA.D#DE4 \"Due for HPV screening\" — but the test recommended is\n * cytology, not HPV (the screening name in CXCA.D#DE4 reflects the WHO\n * target test; both pathways are flavors of \"cervical cancer screening\").\n * @bindingness: legal\n * Cytology-pathway client is due if at one of the 11 target ages, the facility\n * lacks HPV capability, no hysterectomy, and no recent valid cytology screening.\n */\ndefine \"Client is due for cytology screening (legal binding)\":\n \"Client is at cytology pathway target age\"\n and not \"FacilityHasHPVCapability\"\n and not Elements.\"Has Had Hysterectomy\"\n and not \"HasRecentCytologyScreening\"\n\n// =============================================================================\n// Programmatic-overlay eligibility — April 2025 launch's 30/40 announcement\n// Bindingness: programmatic (Mongolia overlay)\n// =============================================================================\n\n/*\n * @output: CXCA.D#DE4 \"Due for HPV screening\"\n * @bindingness: programmatic — Mongolia overlay\n * @source: WHO Mongolia news release, 22 April 2025.\n */\ndefine \"Client is due for HPV screening (programmatic)\":\n \"Client is at programmatic target age (30 or 40)\"\n and not Elements.\"Has Had Hysterectomy\"\n and not \"HasRecentHPVScreening\"\n\n// =============================================================================\n// Backward-compatibility shims — preserve Phase 2/3 define names so existing\n// PlanDefinition references continue to fire.\n// (These aliases will be removed once all references migrate to the\n// expanded define names above.)\n// =============================================================================\n\ndefine \"Client is due for HPV screening at age 35\":\n \"Client age\" = 35\n\ndefine \"Client is due for HPV screening at age 30\":\n \"Client age\" = 30\n</code></pre></td></tr>\n </table>\n </td>\n </tr>\n \n \n \n \n \n <tr>\n <td colspan=\"2\">\n <table>\n <tr><th><b>Content: </b> application/elm+xml</th></tr>\n <tr><td><pre><code>Encoded data (47772 characters)</code></pre></td></tr>\n </table>\n </td>\n </tr>\n \n \n </table>\n</div>\n</div>"^^rdf:XMLLiteral ] ] ; # fhir:extension ( [ fhir:url [ fhir:v "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability"^^xsd:anyURI ; fhir:l <http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability> ] ; fhir:value [ a fhir:Code ; fhir:v "computable" ] ] ) ; # fhir:url [ fhir:v "http://smart.who.int/cxca/Library/CXCAD2DTScreeningEligibilityLogic"^^xsd:anyURI ; fhir:l <http://smart.who.int/cxca/Library/CXCAD2DTScreeningEligibilityLogic> ] ; # fhir:version [ fhir:v "0.0.1"] ; # fhir:name [ fhir:v "CXCAD2DTScreeningEligibilityLogic"] ; # fhir:title [ fhir:v "CXCAD2DTScreeningEligibilityLogic"] ; # fhir:status [ fhir:v "draft"] ; # fhir:experimental [ fhir:v false] ; # fhir:type [ ( fhir:coding [ fhir:system [ fhir:v "http://terminology.hl7.org/CodeSystem/library-type"^^xsd:anyURI ; fhir:l <http://terminology.hl7.org/CodeSystem/library-type> ] ; fhir:code [ fhir:v "logic-library" ] ] ) ] ; # fhir:date [ fhir:v "2026-05-14T00:50:23+00:00"^^xsd:dateTime] ; # fhir:publisher [ fhir:v "Dan Heslinga (independent contributor)"] ; # fhir:contact ( [ fhir:name [ fhir:v "Dan Heslinga (independent contributor)" ] ; ( fhir:telecom [ fhir:system [ fhir:v "url" ] ; fhir:value [ fhir:v "https://github.com/dhes" ] ] ) ] ) ; # fhir:description [ fhir:v "Decision support logic for cervical cancer screening eligibility (CXCA.D2). Encodes the binding eligibility rules from Mongolia MOH Order A/641 (2020) section 2.2. Source CQL is at input/cql/CXCAD2DTScreeningEligibilityLogic.cql."] ; # fhir:relatedArtifact ( [ fhir:type [ fhir:v "depends-on" ] ; fhir:display [ fhir:v "Library Elements" ] ; fhir:resource [ fhir:v "http://smart.who.int/cxca/Library/CXCAElements"^^xsd:anyURI ; fhir:l <http://smart.who.int/cxca/Library/CXCAElements> ] ] ) ; # fhir:parameter ( [ fhir:name [ fhir:v "Today" ] ; fhir:use [ fhir:v "in" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "date" ] ] [ fhir:name [ fhir:v "HasRecentHPVScreening" ] ; fhir:use [ fhir:v "in" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "HasRecentCytologyScreening" ] ; fhir:use [ fhir:v "in" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "FacilityHasHPVCapability" ] ; fhir:use [ fhir:v "in" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Patient" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "Patient" ] ] [ fhir:name [ fhir:v "Client age" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "integer" ] ] [ fhir:name [ fhir:v "Client is at binding target age (35 or 45)" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client is at programmatic target age (30 or 40)" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client is due for HPV screening (legal binding)" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client not due — already screened in current cycle (legal binding)" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client excluded — outside target age range (legal binding)" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client excluded — prior hysterectomy (legal binding)" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client is at cytology pathway target age" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client is due for cytology screening (legal binding)" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client is due for HPV screening (programmatic)" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client is due for HPV screening at age 35" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] [ fhir:name [ fhir:v "Client is due for HPV screening at age 30" ] ; fhir:use [ fhir:v "out" ] ; fhir:min [ fhir:v 0 ] ; fhir:max [ fhir:v "1" ] ; fhir:type [ fhir:v "boolean" ] ] ) ; # fhir:content ( [ fhir:contentType [ fhir:v "text/cql" ] ; fhir:data [ fhir:v "LyoKICogTGlicmFyeTogQ1hDQUQyRFRTY3JlZW5pbmdFbGlnaWJpbGl0eUxvZ2ljCiAqCiAqIERlY2lzaW9uOiBDZXJ2aWNhbCBjYW5jZXIgc2NyZWVuaW5nIGVsaWdpYmlsaXR5IChIUFYgcGF0aHdheSkKICogTDIgU291cmNlOiBBLzY0MSAoMjAyMCkgc2VjdGlvbiAyLjIg4oCUIE1vbmdvbGlhIGJpbmRpbmcgc2NyZWVuaW5nIGVsaWdpYmlsaXR5IHJ1bGVzCiAqIFRyaWdnZXI6IENYQ0EuRDIg4oCUIGVuY291bnRlciB3aXRoIGEgd29tYW4gaW4gcHJpbWFyeS1jYXJlIHNldHRpbmcKICoKICogUGhhc2UgNSBleHBhbnNpb246IGltcGxlbWVudHMgdGhlIGZ1bGwgZm91ci1vdXRjb21lIGVsaWdpYmlsaXR5IHRyZWUKICogICAoRHVlLCBOb3QgRHVlIGluIEN5Y2xlLCBPdXRzaWRlIEFnZSBSYW5nZSwgRXhjbHVkZWQgLSBIeXN0ZXJlY3RvbXkpCiAqICAgYWNyb3NzIGJvdGggYmluZGluZyBhZ2VzIDM1IGFuZCA0NSwgcGx1cyBhIHBhcmFsbGVsIHByb2dyYW1tYXRpYy1vdmVybGF5CiAqICAgdHJlZSBmb3IgdGhlIEFwcmlsIDIwMjUgbGF1bmNoJ3MgYW5ub3VuY2VkIDMwIGFuZCA0MCBhZ2VzLgogKgogKiBFYWNoIG91dGNvbWUgaXMgZW5jb2RlZCBhcyBhIHNlcGFyYXRlIENRTCBkZWZpbmUgc28gUGxhbkRlZmluaXRpb24gYWN0aW9ucwogKiBjYW4gZmlyZSBvbiB0aGVtIGluZGl2aWR1YWxseSDigJQgdGhpcyBsZXRzIGEgQ0RTIGVuZ2luZSBzdXJmYWNlIGRpZmZlcmVudAogKiBndWlkYW5jZSB0ZXh0IHBlciBvdXRjb21lIHJhdGhlciB0aGFuIGNvbGxhcHNpbmcgYWxsIGJyYW5jaGVzIGludG8gYQogKiBzaW5nbGUgYm9vbGVhbi4KICoKICogUExBQ0VIT0xERVIgUEFUVEVSTiDigJQgcmVhZCBjYXJlZnVsbHk6CiAqICAgVGhpcyBydWxlIHJlZmVyZW5jZXMgZm91ciBwcmVkaWNhdGVzLiBPbmUgaGFzIGJlZW4gbWlncmF0ZWQgdG8gYSByZWFsCiAqICAgRkhJUiBxdWVyeSBpbiB0aGUgc2hhcmVkIENYQ0FFbGVtZW50cyBsYXllcjsgdGhyZWUgcmVtYWluIGFzIEJvb2xlYW4KICogICBwYXJhbWV0ZXJzIHRoYXQgdGhlIENEUyBjbGllbnQgbXVzdCBzdXBwbHkgYXQgZXZhbHVhdGlvbiB0aW1lLgogKgogKiAgICAg4pyTIE1pZ3JhdGVkICAgRWxlbWVudHMuIkhhcyBIYWQgSHlzdGVyZWN0b215IgogKiAgICAgICAgICAgICAgICAgIOKGkiByZWFsIHF1ZXJ5IGFnYWluc3QgW1Byb2NlZHVyZV0gd2l0aCBjb2RlIENYQ0EuRCNERTQ1CiAqCiAqICAgICDij7ggUGxhY2Vob2xkZXIgIkhhc1JlY2VudEhQVlNjcmVlbmluZyIsICJIYXNSZWNlbnRDeXRvbG9neVNjcmVlbmluZyIKICogICAgICAgICAgICAgICAgICDihpIgc3RyYWlnaHRmb3J3YXJkIHF1ZXJpZXMgaW4gc2hhcGUsIGJ1dCByZXF1aXJlIGEgZGVzaWduCiAqICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbiBvbiB0aGUgcmVjYWxsIHdpbmRvdzogcGFyYW1ldGVyaXplIHRoZSBpbnRlcnZhbAogKiAgICAgICAgICAgICAgICAgICAgKG9uZSBkZWZpbmUgZm9yIGJvdGggcGF0aHdheXMpIG9yIGF1dGhvciBzaWJsaW5nIGRlZmluZXMKICogICAgICAgICAgICAgICAgICAgIChIUFYtcmVjZW50IGF0IDEweSwgY3l0b2xvZ3ktcmVjZW50IGF0IDN5IHBlciBBLzY0MSDCpzIuMik/CiAqICAgICAgICAgICAgICAgICAgICBIZWxkIHVudGlsIHRoZSBkZXNpZ24gY2FsbCBpcyBtYWRlLgogKgogKiAgICAg4o+4IFBsYWNlaG9sZGVyICJGYWNpbGl0eUhhc0hQVkNhcGFiaWxpdHkiCiAqICAgICAgICAgICAgICAgICAg4oaSIG5vdCBhY3R1YWxseSBhIHBlci1wYXRpZW50IEZISVIgcXVlcnkg4oCUIHRoaXMgaXMgZmFjaWxpdHkKICogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uIFJlYWwgaW1wbGVtZW50YXRpb24gY291bGQgZGVyaXZlIGl0IGZyb20gYQogKiAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24vT3JnYW5pemF0aW9uIGV4dGVuc2lvbiBPUiBrZWVwIGl0IGFzIGEgcGFyYW1ldGVyCiAqICAgICAgICAgICAgICAgICAgICB0aGUgQ0RTIGNsaWVudCBzdXBwbGllcy4gQm90aCBhcmUgZGVmZW5zaWJsZTsgbGVmdCBhcyBhCiAqICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgZm9yIG5vdy4KICoKICogICBUaGUgbWlncmF0aW9uIGlzIHN0cnVjdHVyYWxseSB0cml2aWFsOiByZXBsYWNpbmcgYSBwYXJhbWV0ZXIgcmVhZCB3aXRoCiAqICAgYEVsZW1lbnRzLiI8bmFtZT4iYCBvbmx5IGNoYW5nZXMgdGhlIGJvZHkgb2YgdGhlIGNvbnN1bWluZyBkZWZpbmUuIFRoZQogKiAgIGRlZmluZSdzIG5hbWUsIHNpZ25hdHVyZSwgYW5kIFBsYW5EZWZpbml0aW9uIHdpcmluZyBhbGwgc3RheSBpbnRhY3QsIHNvCiAqICAgZG93bnN0cmVhbSBjb25zdW1lcnMgKHRoZSBQbGFuRGVmaW5pdGlvbiBhY3Rpb25zLCBBY3Rpdml0eURlZmluaXRpb25zLAogKiAgIGZpeHR1cmVzKSBhcmUgdW5hZmZlY3RlZC4KICovCgpsaWJyYXJ5IENYQ0FEMkRUU2NyZWVuaW5nRWxpZ2liaWxpdHlMb2dpYyB2ZXJzaW9uICcwLjAuMScKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKLy8gU2hhcmVkIGVsZW1lbnRzIGxheWVyIOKAlCB0aGUgaGFybW9uaXphdGlvbiBzdWJzdHJhdGUuIFByb3ZpZGVzCi8vIGBIYXMgSGFkIEh5c3RlcmVjdG9teWAgKGEgcmVhbCBGSElSIHF1ZXJ5IGFnYWluc3QgW1Byb2NlZHVyZV0pOyBvdGhlcgovLyBwZXItcGVyaW9kIHByZWRpY2F0ZXMgY2FuIGJlIGFkZGVkIGhlcmUgYXMgdGhleSBhcmUgYXV0aG9yZWQuCmluY2x1ZGUgQ1hDQUVsZW1lbnRzIGNhbGxlZCBFbGVtZW50cwoKcGFyYW1ldGVyIFRvZGF5IERhdGUgZGVmYXVsdCBUb2RheSgpCgovLyBQbGFjZWhvbGRlciBwYXJhbWV0ZXJzIOKAlCBzZWUgUExBQ0VIT0xERVIgUEFUVEVSTiBpbiB0aGUgZmlsZSBoZWFkZXIgZm9yCi8vIHRoZSBwZXItcGFyYW1ldGVyIHJhdGlvbmFsZSBvbiB3aHkgdGhlc2UgcmVtYWluIGFzIHBhcmFtZXRlcnMgcmF0aGVyIHRoYW4KLy8gbWlncmF0aW5nIHRvIENYQ0FFbGVtZW50cyBxdWVyaWVzLgpwYXJhbWV0ZXIgIkhhc1JlY2VudEhQVlNjcmVlbmluZyIgQm9vbGVhbiBkZWZhdWx0IGZhbHNlCnBhcmFtZXRlciAiSGFzUmVjZW50Q3l0b2xvZ3lTY3JlZW5pbmciIEJvb2xlYW4gZGVmYXVsdCBmYWxzZQoKLy8gRmFjaWxpdHkgbGFiLWNhcGFjaXR5IHNlbGVjdG9yIOKAlCBBLzY0MSBzZWN0aW9uIDIuMiBzcGVjaWZpZXMgZGlmZmVyZW50IGFnZSBjeWNsZXMKLy8gYmFzZWQgb24gd2hldGhlciB0aGUgZmFjaWxpdHkgY2FuIHJ1biBIUFYgaGlnaC1yaXNrIEROQSB0ZXN0cyBpbi1ob3VzZS4KLy8gICB0cnVlICDihpIgSFBWIHBhdGh3YXkgKGFnZXMgMzUgYW5kIDQ1IG9ubHkpCi8vICAgZmFsc2Ug4oaSIGN5dG9sb2d5IHBhdGh3YXkgKHRoZSAxMS1hZ2UgMy15ZWFyIGN5Y2xlOiAzMCwgMzMsIDM2LCAzOSwgNDIsCi8vICAgICAgICAgICA0NSwgNDgsIDUxLCA1NCwgNTcsIDYwKQovLyBSZWFsIGltcGxlbWVudGF0aW9uIHdpbGwgZGVyaXZlIHRoaXMgZnJvbSBhIExvY2F0aW9uL09yZ2FuaXphdGlvbiBleHRlbnNpb24KLy8gb3IgZnJvbSBhIGZhY2lsaXR5LXJlZ2lzdHJ5IGxvb2t1cDsgaW4gdGhpcyBpdGVyYXRpb24gaXQgaXMgYSBwYXJhbWV0ZXIKLy8gdGhlIENEUyBjbGllbnQgc3VwcGxpZXMuCnBhcmFtZXRlciAiRmFjaWxpdHlIYXNIUFZDYXBhYmlsaXR5IiBCb29sZWFuIGRlZmF1bHQgdHJ1ZQoKY29udGV4dCBQYXRpZW50CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBIZWxwZXIgZGVmaW5pdGlvbnMKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8qCiAqIENsaWVudCBhZ2UgaW4geWVhcnMgYXQgdGhlIGVuY291bnRlciBkYXRlLgogKi8KZGVmaW5lICJDbGllbnQgYWdlIjoKICBBZ2VJblllYXJzQXQoVG9kYXkpCgovKgogKiBUaGUgY2xpZW50IGlzIGF0IG9uZSBvZiB0aGUgYmluZGluZyB0YXJnZXQgYWdlcyBwZXIgQS82NDEgc2VjdGlvbiAyLjIKICogKEhQVi10ZXN0LWNhcGFibGUgZmFjaWxpdGllczogYWdlcyAzNSBhbmQgNDUgb25seSkuCiAqLwpkZWZpbmUgIkNsaWVudCBpcyBhdCBiaW5kaW5nIHRhcmdldCBhZ2UgKDM1IG9yIDQ1KSI6CiAgIkNsaWVudCBhZ2UiID0gMzUgb3IgIkNsaWVudCBhZ2UiID0gNDUKCi8qCiAqIFRoZSBjbGllbnQgaXMgYXQgb25lIG9mIHRoZSBwcm9ncmFtbWF0aWMtb3ZlcmxheSB0YXJnZXQgYWdlcyBwZXIgdGhlCiAqIEFwcmlsIDIwMjUgQ2VydmljYWwgQ2FuY2VyIEVsaW1pbmF0aW9uIFByb2dyYW1tZSBsYXVuY2ggYW5ub3VuY2VtZW50CiAqIChhZ2VzIDMwIGFuZCA0MCkuCiAqLwpkZWZpbmUgIkNsaWVudCBpcyBhdCBwcm9ncmFtbWF0aWMgdGFyZ2V0IGFnZSAoMzAgb3IgNDApIjoKICAiQ2xpZW50IGFnZSIgPSAzMCBvciAiQ2xpZW50IGFnZSIgPSA0MAoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTGVnYWwtYmluZGluZyBlbGlnaWJpbGl0eSB0cmVlIOKAlCBBLzY0MSBzZWN0aW9uIDIuMiAoSFBWIGF0IGFnZXMgMzUgYW5kIDQ1KQovLyBCaW5kaW5nbmVzczogbGVnYWwKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8qCiAqIEBvdXRwdXQ6IENYQ0EuRCNERTQgIkR1ZSBmb3IgSFBWIHNjcmVlbmluZyIKICogQGJpbmRpbmduZXNzOiBsZWdhbAogKiBDbGllbnQgaXMgZHVlIGlmIGF0IGEgYmluZGluZyB0YXJnZXQgYWdlLCBoYXMgbm90IGhhZCBhIGh5c3RlcmVjdG9teSwKICogYW5kIGhhcyBub3QgYmVlbiBzY3JlZW5lZCBpbiB0aGUgY3VycmVudCBjeWNsZS4KICovCmRlZmluZSAiQ2xpZW50IGlzIGR1ZSBmb3IgSFBWIHNjcmVlbmluZyAobGVnYWwgYmluZGluZykiOgogICJDbGllbnQgaXMgYXQgYmluZGluZyB0YXJnZXQgYWdlICgzNSBvciA0NSkiCiAgICBhbmQgbm90IEVsZW1lbnRzLiJIYXMgSGFkIEh5c3RlcmVjdG9teSIKICAgIGFuZCBub3QgIkhhc1JlY2VudEhQVlNjcmVlbmluZyIKCi8qCiAqIEBvdXRwdXQ6IENYQ0EuRCNERTUgIk5vdCBkdWUg4oCUIGFscmVhZHkgc2NyZWVuZWQgaW4gY3VycmVudCBjeWNsZSIKICogQGJpbmRpbmduZXNzOiBsZWdhbAogKiBDbGllbnQgaXMgYXQgYSB0YXJnZXQgYWdlIGJ1dCBoYXMgaGFkIGEgcmVjZW50IHZhbGlkIEhQViBzY3JlZW5pbmcgcmVzdWx0LgogKi8KZGVmaW5lICJDbGllbnQgbm90IGR1ZSDigJQgYWxyZWFkeSBzY3JlZW5lZCBpbiBjdXJyZW50IGN5Y2xlIChsZWdhbCBiaW5kaW5nKSI6CiAgIkNsaWVudCBpcyBhdCBiaW5kaW5nIHRhcmdldCBhZ2UgKDM1IG9yIDQ1KSIKICAgIGFuZCAiSGFzUmVjZW50SFBWU2NyZWVuaW5nIgogICAgYW5kIG5vdCBFbGVtZW50cy4iSGFzIEhhZCBIeXN0ZXJlY3RvbXkiCgovKgogKiBAb3V0cHV0OiBDWENBLkQjREU2ICJFeGNsdWRlZCDigJQgb3V0c2lkZSB0YXJnZXQgYWdlIHJhbmdlIgogKiBAYmluZGluZ25lc3M6IGxlZ2FsCiAqIENsaWVudCBpcyBub3QgYXQgYSBiaW5kaW5nIHRhcmdldCBhZ2UgKDM1IG9yIDQ1IG9ubHkgZm9yIEhQVi1jYXBhYmxlIGZhY2lsaXRpZXMpLgogKi8KZGVmaW5lICJDbGllbnQgZXhjbHVkZWQg4oCUIG91dHNpZGUgdGFyZ2V0IGFnZSByYW5nZSAobGVnYWwgYmluZGluZykiOgogIG5vdCAiQ2xpZW50IGlzIGF0IGJpbmRpbmcgdGFyZ2V0IGFnZSAoMzUgb3IgNDUpIgogICAgYW5kIG5vdCBFbGVtZW50cy4iSGFzIEhhZCBIeXN0ZXJlY3RvbXkiCgovKgogKiBAb3V0cHV0OiBDWENBLkQjREU3ICJFeGNsdWRlZCDigJQgcHJpb3IgaHlzdGVyZWN0b215IgogKiBAYmluZGluZ25lc3M6IGxlZ2FsCiAqIENsaWVudCBoYXMgaGFkIGEgaHlzdGVyZWN0b215IGZvciBub24tY2VydmljYWwtY2FuY2VyIGluZGljYXRpb24gYW5kIGlzCiAqIHRoZXJlZm9yZSBleGVtcHQgZnJvbSBjZXJ2aWNhbCBjYW5jZXIgc2NyZWVuaW5nIHBlciBBLzY0MSBzZWN0aW9uIDIuMi4KICovCmRlZmluZSAiQ2xpZW50IGV4Y2x1ZGVkIOKAlCBwcmlvciBoeXN0ZXJlY3RvbXkgKGxlZ2FsIGJpbmRpbmcpIjoKICBFbGVtZW50cy4iSGFzIEhhZCBIeXN0ZXJlY3RvbXkiCgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBDeXRvbG9neS1wYXRod2F5IGVsaWdpYmlsaXR5IOKAlCBBLzY0MSBzZWN0aW9uIDIuMiAoY3l0b2xvZ3ktb25seSBmYWNpbGl0aWVzKQovLyBCaW5kaW5nbmVzczogbGVnYWwg4oCUIGJpbmRpbmcgdG8gY3l0b2xvZ3ktb25seSBmYWNpbGl0aWVzIHVuZGVyIEEvNjQxCi8vCi8vIEVsZXZlbiBiaW5kaW5nIGFnZXMgb24gYSAzLXllYXIgY3ljbGU6IDMwLCAzMywgMzYsIDM5LCA0MiwgNDUsIDQ4LCA1MSwgNTQsIDU3LCA2MC4KLy8gQXBwbGllZCB3aGVuIHRoZSBmYWNpbGl0eSBoYXMgbm8gSFBWIEROQSB0ZXN0aW5nIGNhcGFiaWxpdHkuCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovKgogKiBUaGUgY2xpZW50IGlzIGF0IG9uZSBvZiB0aGUgMTEgYmluZGluZyBjeXRvbG9neS1wYXRod2F5IHRhcmdldCBhZ2VzCiAqIHBlciBBLzY0MSBzZWN0aW9uIDIuMiAoY3l0b2xvZ3ktb25seSBmYWNpbGl0aWVzLCAzLXllYXIgY3ljbGUgZnJvbSAzMCB0byA2MCkuCiAqLwpkZWZpbmUgIkNsaWVudCBpcyBhdCBjeXRvbG9neSBwYXRod2F5IHRhcmdldCBhZ2UiOgogICJDbGllbnQgYWdlIiBpbiB7IDMwLCAzMywgMzYsIDM5LCA0MiwgNDUsIDQ4LCA1MSwgNTQsIDU3LCA2MCB9CgovKgogKiBAb3V0cHV0OiBDWENBLkQjREU0ICJEdWUgZm9yIEhQViBzY3JlZW5pbmciIOKAlCBidXQgdGhlIHRlc3QgcmVjb21tZW5kZWQgaXMKICogICBjeXRvbG9neSwgbm90IEhQViAodGhlIHNjcmVlbmluZyBuYW1lIGluIENYQ0EuRCNERTQgcmVmbGVjdHMgdGhlIFdITwogKiAgIHRhcmdldCB0ZXN0OyBib3RoIHBhdGh3YXlzIGFyZSBmbGF2b3JzIG9mICJjZXJ2aWNhbCBjYW5jZXIgc2NyZWVuaW5nIikuCiAqIEBiaW5kaW5nbmVzczogbGVnYWwKICogQ3l0b2xvZ3ktcGF0aHdheSBjbGllbnQgaXMgZHVlIGlmIGF0IG9uZSBvZiB0aGUgMTEgdGFyZ2V0IGFnZXMsIHRoZSBmYWNpbGl0eQogKiBsYWNrcyBIUFYgY2FwYWJpbGl0eSwgbm8gaHlzdGVyZWN0b215LCBhbmQgbm8gcmVjZW50IHZhbGlkIGN5dG9sb2d5IHNjcmVlbmluZy4KICovCmRlZmluZSAiQ2xpZW50IGlzIGR1ZSBmb3IgY3l0b2xvZ3kgc2NyZWVuaW5nIChsZWdhbCBiaW5kaW5nKSI6CiAgIkNsaWVudCBpcyBhdCBjeXRvbG9neSBwYXRod2F5IHRhcmdldCBhZ2UiCiAgICBhbmQgbm90ICJGYWNpbGl0eUhhc0hQVkNhcGFiaWxpdHkiCiAgICBhbmQgbm90IEVsZW1lbnRzLiJIYXMgSGFkIEh5c3RlcmVjdG9teSIKICAgIGFuZCBub3QgIkhhc1JlY2VudEN5dG9sb2d5U2NyZWVuaW5nIgoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gUHJvZ3JhbW1hdGljLW92ZXJsYXkgZWxpZ2liaWxpdHkg4oCUIEFwcmlsIDIwMjUgbGF1bmNoJ3MgMzAvNDAgYW5ub3VuY2VtZW50Ci8vIEJpbmRpbmduZXNzOiBwcm9ncmFtbWF0aWMgKE1vbmdvbGlhIG92ZXJsYXkpCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovKgogKiBAb3V0cHV0OiBDWENBLkQjREU0ICJEdWUgZm9yIEhQViBzY3JlZW5pbmciCiAqIEBiaW5kaW5nbmVzczogcHJvZ3JhbW1hdGljIOKAlCBNb25nb2xpYSBvdmVybGF5CiAqIEBzb3VyY2U6IFdITyBNb25nb2xpYSBuZXdzIHJlbGVhc2UsIDIyIEFwcmlsIDIwMjUuCiAqLwpkZWZpbmUgIkNsaWVudCBpcyBkdWUgZm9yIEhQViBzY3JlZW5pbmcgKHByb2dyYW1tYXRpYykiOgogICJDbGllbnQgaXMgYXQgcHJvZ3JhbW1hdGljIHRhcmdldCBhZ2UgKDMwIG9yIDQwKSIKICAgIGFuZCBub3QgRWxlbWVudHMuIkhhcyBIYWQgSHlzdGVyZWN0b215IgogICAgYW5kIG5vdCAiSGFzUmVjZW50SFBWU2NyZWVuaW5nIgoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gQmFja3dhcmQtY29tcGF0aWJpbGl0eSBzaGltcyDigJQgcHJlc2VydmUgUGhhc2UgMi8zIGRlZmluZSBuYW1lcyBzbyBleGlzdGluZwovLyBQbGFuRGVmaW5pdGlvbiByZWZlcmVuY2VzIGNvbnRpbnVlIHRvIGZpcmUuCi8vIChUaGVzZSBhbGlhc2VzIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIGFsbCByZWZlcmVuY2VzIG1pZ3JhdGUgdG8gdGhlCi8vIGV4cGFuZGVkIGRlZmluZSBuYW1lcyBhYm92ZS4pCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpkZWZpbmUgIkNsaWVudCBpcyBkdWUgZm9yIEhQViBzY3JlZW5pbmcgYXQgYWdlIDM1IjoKICAiQ2xpZW50IGFnZSIgPSAzNQoKZGVmaW5lICJDbGllbnQgaXMgZHVlIGZvciBIUFYgc2NyZWVuaW5nIGF0IGFnZSAzMCI6CiAgIkNsaWVudCBhZ2UiID0gMzAK"^^xsd:base64Binary ] ] [ fhir:contentType [ fhir:v "application/elm+xml" ] ; fhir:data [ fhir:v "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSIgbG9jYWxJZD0iMCI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iT3ZlcmxvYWRzIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUluZm8iLz4KICAgPGFubm90YXRpb24gbWVzc2FnZT0iQW4gb3BlcmFuZCBpZGVudGlmaWVyIHJlZmVyZW5jZSBpcyBoaWRpbmcgYW5vdGhlciBpZGVudGlmaWVyIG9mIHRoZSBzYW1lIG5hbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IkFuIG9wZXJhbmQgaWRlbnRpZmllciByZWZlcmVuY2UgaXMgaGlkaW5nIGFub3RoZXIgaWRlbnRpZmllciBvZiB0aGUgc2FtZSBuYW1lLiIgZXJyb3JUeXBlPSJzZW1hbnRpYyIgZXJyb3JTZXZlcml0eT0id2FybmluZyIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1FcnJvciIvPgogICA8YW5ub3RhdGlvbiBtZXNzYWdlPSJBbiBvcGVyYW5kIGlkZW50aWZpZXIgcmVmZXJlbmNlIGlzIGhpZGluZyBhbm90aGVyIGlkZW50aWZpZXIgb2YgdGhlIHNhbWUgbmFtZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgIDxhOnMgcj0iMzYwIj4KICAgICAgICAgPGE6cz4vKgogKiBMaWJyYXJ5OiBDWENBRDJEVFNjcmVlbmluZ0VsaWdpYmlsaXR5TG9naWMKICoKICogRGVjaXNpb246IENlcnZpY2FsIGNhbmNlciBzY3JlZW5pbmcgZWxpZ2liaWxpdHkgKEhQViBwYXRod2F5KQogKiBMMiBTb3VyY2U6IEEvNjQxICgyMDIwKSBzZWN0aW9uIDIuMiDigJQgTW9uZ29saWEgYmluZGluZyBzY3JlZW5pbmcgZWxpZ2liaWxpdHkgcnVsZXMKICogVHJpZ2dlcjogQ1hDQS5EMiDigJQgZW5jb3VudGVyIHdpdGggYSB3b21hbiBpbiBwcmltYXJ5LWNhcmUgc2V0dGluZwogKgogKiBQaGFzZSA1IGV4cGFuc2lvbjogaW1wbGVtZW50cyB0aGUgZnVsbCBmb3VyLW91dGNvbWUgZWxpZ2liaWxpdHkgdHJlZQogKiAgIChEdWUsIE5vdCBEdWUgaW4gQ3ljbGUsIE91dHNpZGUgQWdlIFJhbmdlLCBFeGNsdWRlZCAtIEh5c3RlcmVjdG9teSkKICogICBhY3Jvc3MgYm90aCBiaW5kaW5nIGFnZXMgMzUgYW5kIDQ1LCBwbHVzIGEgcGFyYWxsZWwgcHJvZ3JhbW1hdGljLW92ZXJsYXkKICogICB0cmVlIGZvciB0aGUgQXByaWwgMjAyNSBsYXVuY2gncyBhbm5vdW5jZWQgMzAgYW5kIDQwIGFnZXMuCiAqCiAqIEVhY2ggb3V0Y29tZSBpcyBlbmNvZGVkIGFzIGEgc2VwYXJhdGUgQ1FMIGRlZmluZSBzbyBQbGFuRGVmaW5pdGlvbiBhY3Rpb25zCiAqIGNhbiBmaXJlIG9uIHRoZW0gaW5kaXZpZHVhbGx5IOKAlCB0aGlzIGxldHMgYSBDRFMgZW5naW5lIHN1cmZhY2UgZGlmZmVyZW50CiAqIGd1aWRhbmNlIHRleHQgcGVyIG91dGNvbWUgcmF0aGVyIHRoYW4gY29sbGFwc2luZyBhbGwgYnJhbmNoZXMgaW50byBhCiAqIHNpbmdsZSBib29sZWFuLgogKgogKiBQTEFDRUhPTERFUiBQQVRURVJOIOKAlCByZWFkIGNhcmVmdWxseToKICogICBUaGlzIHJ1bGUgcmVmZXJlbmNlcyBmb3VyIHByZWRpY2F0ZXMuIE9uZSBoYXMgYmVlbiBtaWdyYXRlZCB0byBhIHJlYWwKICogICBGSElSIHF1ZXJ5IGluIHRoZSBzaGFyZWQgQ1hDQUVsZW1lbnRzIGxheWVyOyB0aHJlZSByZW1haW4gYXMgQm9vbGVhbgogKiAgIHBhcmFtZXRlcnMgdGhhdCB0aGUgQ0RTIGNsaWVudCBtdXN0IHN1cHBseSBhdCBldmFsdWF0aW9uIHRpbWUuCiAqCiAqICAgICDinJMgTWlncmF0ZWQgICBFbGVtZW50cy4mcXVvdDtIYXMgSGFkIEh5c3RlcmVjdG9teSZxdW90OwogKiAgICAgICAgICAgICAgICAgIOKGkiByZWFsIHF1ZXJ5IGFnYWluc3QgW1Byb2NlZHVyZV0gd2l0aCBjb2RlIENYQ0EuRCNERTQ1CiAqCiAqICAgICDij7ggUGxhY2Vob2xkZXIgJnF1b3Q7SGFzUmVjZW50SFBWU2NyZWVuaW5nJnF1b3Q7LCAmcXVvdDtIYXNSZWNlbnRDeXRvbG9neVNjcmVlbmluZyZxdW90OwogKiAgICAgICAgICAgICAgICAgIOKGkiBzdHJhaWdodGZvcndhcmQgcXVlcmllcyBpbiBzaGFwZSwgYnV0IHJlcXVpcmUgYSBkZXNpZ24KICogICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uIG9uIHRoZSByZWNhbGwgd2luZG93OiBwYXJhbWV0ZXJpemUgdGhlIGludGVydmFsCiAqICAgICAgICAgICAgICAgICAgICAob25lIGRlZmluZSBmb3IgYm90aCBwYXRod2F5cykgb3IgYXV0aG9yIHNpYmxpbmcgZGVmaW5lcwogKiAgICAgICAgICAgICAgICAgICAgKEhQVi1yZWNlbnQgYXQgMTB5LCBjeXRvbG9neS1yZWNlbnQgYXQgM3kgcGVyIEEvNjQxIMKnMi4yKT8KICogICAgICAgICAgICAgICAgICAgIEhlbGQgdW50aWwgdGhlIGRlc2lnbiBjYWxsIGlzIG1hZGUuCiAqCiAqICAgICDij7ggUGxhY2Vob2xkZXIgJnF1b3Q7RmFjaWxpdHlIYXNIUFZDYXBhYmlsaXR5JnF1b3Q7CiAqICAgICAgICAgICAgICAgICAg4oaSIG5vdCBhY3R1YWxseSBhIHBlci1wYXRpZW50IEZISVIgcXVlcnkg4oCUIHRoaXMgaXMgZmFjaWxpdHkKICogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uIFJlYWwgaW1wbGVtZW50YXRpb24gY291bGQgZGVyaXZlIGl0IGZyb20gYQogKiAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24vT3JnYW5pemF0aW9uIGV4dGVuc2lvbiBPUiBrZWVwIGl0IGFzIGEgcGFyYW1ldGVyCiAqICAgICAgICAgICAgICAgICAgICB0aGUgQ0RTIGNsaWVudCBzdXBwbGllcy4gQm90aCBhcmUgZGVmZW5zaWJsZTsgbGVmdCBhcyBhCiAqICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgZm9yIG5vdy4KICoKICogICBUaGUgbWlncmF0aW9uIGlzIHN0cnVjdHVyYWxseSB0cml2aWFsOiByZXBsYWNpbmcgYSBwYXJhbWV0ZXIgcmVhZCB3aXRoCiAqICAgYEVsZW1lbnRzLiZxdW90OyZsdDtuYW1lPiZxdW90O2Agb25seSBjaGFuZ2VzIHRoZSBib2R5IG9mIHRoZSBjb25zdW1pbmcgZGVmaW5lLiBUaGUKICogICBkZWZpbmUncyBuYW1lLCBzaWduYXR1cmUsIGFuZCBQbGFuRGVmaW5pdGlvbiB3aXJpbmcgYWxsIHN0YXkgaW50YWN0LCBzbwogKiAgIGRvd25zdHJlYW0gY29uc3VtZXJzICh0aGUgUGxhbkRlZmluaXRpb24gYWN0aW9ucywgQWN0aXZpdHlEZWZpbml0aW9ucywKICogICBmaXh0dXJlcykgYXJlIHVuYWZmZWN0ZWQuCiAqLwoKbGlicmFyeSBDWENBRDJEVFNjcmVlbmluZ0VsaWdpYmlsaXR5TG9naWMgdmVyc2lvbiAnMC4wLjEnPC9hOnM+CiAgICAgIDwvYTpzPgogICA8L2Fubm90YXRpb24+CiAgIDxpZGVudGlmaWVyIGlkPSJDWENBRDJEVFNjcmVlbmluZ0VsaWdpYmlsaXR5TG9naWMiIHN5c3RlbT0iaHR0cDovL3NtYXJ0Lndoby5pbnQvY3hjYSIgdmVyc2lvbj0iMC4wLjEiLz4KICAgPHNjaGVtYUlkZW50aWZpZXIgaWQ9InVybjpobDctb3JnOmVsbSIgdmVyc2lvbj0icjEiLz4KICAgPHVzaW5ncz4KICAgICAgPGRlZiBsb2NhbElkPSIxIiBsb2NhbElkZW50aWZpZXI9IlN5c3RlbSIgdXJpPSJ1cm46aGw3LW9yZzplbG0tdHlwZXM6cjEiIHZlcnNpb249IjEuMC4wIi8+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjA2IiBsb2NhdG9yPSI0OToxLTQ5OjI2IiBsb2NhbElkZW50aWZpZXI9IkZISVIiIHVyaT0iaHR0cDovL2hsNy5vcmcvZmhpciIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIyMDYiPgogICAgICAgICAgICAgICA8YTpzPnVzaW5nIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkZISVI8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzQuMC4xJzwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC91c2luZ3M+CiAgIDxpbmNsdWRlcz4KICAgICAgPGRlZiBsb2NhbElkPSIyMDgiIGxvY2F0b3I9IjUxOjEtNTE6MzUiIGxvY2FsSWRlbnRpZmllcj0iRkhJUkhlbHBlcnMiIHBhdGg9Imh0dHA6Ly9obDcub3JnL2ZoaXIvRkhJUkhlbHBlcnMiIHZlcnNpb249IjQuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjA4Ij4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkZISVJIZWxwZXJzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMSc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjEwIiBsb2NhdG9yPSI1NjoxLTU2OjM2IiBsb2NhbElkZW50aWZpZXI9IkVsZW1lbnRzIiBwYXRoPSJodHRwOi8vc21hcnQud2hvLmludC9jeGNhL0NYQ0FFbGVtZW50cyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjIxMCI+CiAgICAgICAgICAgICAgIDxhOnM+Ly8gU2hhcmVkIGVsZW1lbnRzIGxheWVyIOKAlCB0aGUgaGFybW9uaXphdGlvbiBzdWJzdHJhdGUuIFByb3ZpZGVzCi8vIGBIYXMgSGFkIEh5c3RlcmVjdG9teWAgKGEgcmVhbCBGSElSIHF1ZXJ5IGFnYWluc3QgW1Byb2NlZHVyZV0pOyBvdGhlcgovLyBwZXItcGVyaW9kIHByZWRpY2F0ZXMgY2FuIGJlIGFkZGVkIGhlcmUgYXMgdGhleSBhcmUgYXV0aG9yZWQuCmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+Q1hDQUVsZW1lbnRzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgRWxlbWVudHM8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgIDwvaW5jbHVkZXM+CiAgIDxwYXJhbWV0ZXJzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIxMiIgbG9jYXRvcj0iNTg6MS01ODozNiIgbmFtZT0iVG9kYXkiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIyMTIiPgogICAgICAgICAgICAgICA8YTpzPnBhcmFtZXRlciBUb2RheSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyMTYiPgogICAgICAgICAgICAgICAgICA8YTpzPkRhdGU8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGRlZmF1bHQgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjE1Ij4KICAgICAgICAgICAgICAgICAgPGE6cz5Ub2RheSgpPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZGVmYXVsdCBsb2NhbElkPSIyMTUiIGxvY2F0b3I9IjU4OjMwLTU4OjM2IiB4c2k6dHlwZT0iVG9kYXkiLz4KICAgICAgICAgPHBhcmFtZXRlclR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjE2IiBsb2NhdG9yPSI1ODoxNy01ODoyMCIgbmFtZT0idDpEYXRlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIxOCIgbG9jYXRvcj0iNjM6MS02Mzo1NSIgbmFtZT0iSGFzUmVjZW50SFBWU2NyZWVuaW5nIiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjE4Ij4KICAgICAgICAgICAgICAgPGE6cz4vLyBQbGFjZWhvbGRlciBwYXJhbWV0ZXJzIOKAlCBzZWUgUExBQ0VIT0xERVIgUEFUVEVSTiBpbiB0aGUgZmlsZSBoZWFkZXIgZm9yCi8vIHRoZSBwZXItcGFyYW1ldGVyIHJhdGlvbmFsZSBvbiB3aHkgdGhlc2UgcmVtYWluIGFzIHBhcmFtZXRlcnMgcmF0aGVyIHRoYW4KLy8gbWlncmF0aW5nIHRvIENYQ0FFbGVtZW50cyBxdWVyaWVzLgpwYXJhbWV0ZXIgJnF1b3Q7SGFzUmVjZW50SFBWU2NyZWVuaW5nJnF1b3Q7IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjIyMCI+CiAgICAgICAgICAgICAgICAgIDxhOnM+Qm9vbGVhbjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyMTkiPiBkZWZhdWx0IGZhbHNlPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxkZWZhdWx0IGxvY2FsSWQ9IjIxOSIgbG9jYXRvcj0iNjM6NTEtNjM6NTUiIHZhbHVlVHlwZT0idDpCb29sZWFuIiB2YWx1ZT0iZmFsc2UiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgIDxwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjIyMCIgbG9jYXRvcj0iNjM6MzUtNjM6NDEiIG5hbWU9InQ6Qm9vbGVhbiIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyMjIiIGxvY2F0b3I9IjY0OjEtNjQ6NjAiIG5hbWU9Ikhhc1JlY2VudEN5dG9sb2d5U2NyZWVuaW5nIiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjIyIj4KICAgICAgICAgICAgICAgPGE6cz5wYXJhbWV0ZXIgJnF1b3Q7SGFzUmVjZW50Q3l0b2xvZ3lTY3JlZW5pbmcmcXVvdDsgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjI0Ij4KICAgICAgICAgICAgICAgICAgPGE6cz5Cb29sZWFuPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjIyMyI+IGRlZmF1bHQgZmFsc2U8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGRlZmF1bHQgbG9jYWxJZD0iMjIzIiBsb2NhdG9yPSI2NDo1Ni02NDo2MCIgdmFsdWVUeXBlPSJ0OkJvb2xlYW4iIHZhbHVlPSJmYWxzZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgPHBhcmFtZXRlclR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjI0IiBsb2NhdG9yPSI2NDo0MC02NDo0NiIgbmFtZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIyNiIgbG9jYXRvcj0iNzQ6MS03NDo1NyIgbmFtZT0iRmFjaWxpdHlIYXNIUFZDYXBhYmlsaXR5IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjI2Ij4KICAgICAgICAgICAgICAgPGE6cz4vLyBGYWNpbGl0eSBsYWItY2FwYWNpdHkgc2VsZWN0b3Ig4oCUIEEvNjQxIHNlY3Rpb24gMi4yIHNwZWNpZmllcyBkaWZmZXJlbnQgYWdlIGN5Y2xlcwovLyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBmYWNpbGl0eSBjYW4gcnVuIEhQViBoaWdoLXJpc2sgRE5BIHRlc3RzIGluLWhvdXNlLgovLyAgIHRydWUgIOKGkiBIUFYgcGF0aHdheSAoYWdlcyAzNSBhbmQgNDUgb25seSkKLy8gICBmYWxzZSDihpIgY3l0b2xvZ3kgcGF0aHdheSAodGhlIDExLWFnZSAzLXllYXIgY3ljbGU6IDMwLCAzMywgMzYsIDM5LCA0MiwKLy8gICAgICAgICAgIDQ1LCA0OCwgNTEsIDU0LCA1NywgNjApCi8vIFJlYWwgaW1wbGVtZW50YXRpb24gd2lsbCBkZXJpdmUgdGhpcyBmcm9tIGEgTG9jYXRpb24vT3JnYW5pemF0aW9uIGV4dGVuc2lvbgovLyBvciBmcm9tIGEgZmFjaWxpdHktcmVnaXN0cnkgbG9va3VwOyBpbiB0aGlzIGl0ZXJhdGlvbiBpdCBpcyBhIHBhcmFtZXRlcgovLyB0aGUgQ0RTIGNsaWVudCBzdXBwbGllcy4KcGFyYW1ldGVyICZxdW90O0ZhY2lsaXR5SGFzSFBWQ2FwYWJpbGl0eSZxdW90OyA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyMjgiPgogICAgICAgICAgICAgICAgICA8YTpzPkJvb2xlYW48L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjI3Ij4gZGVmYXVsdCB0cnVlPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxkZWZhdWx0IGxvY2FsSWQ9IjIyNyIgbG9jYXRvcj0iNzQ6NTQtNzQ6NTciIHZhbHVlVHlwZT0idDpCb29sZWFuIiB2YWx1ZT0idHJ1ZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgPHBhcmFtZXRlclR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjI4IiBsb2NhdG9yPSI3NDozOC03NDo0NCIgbmFtZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgIDwvZGVmPgogICA8L3BhcmFtZXRlcnM+CiAgIDxjb250ZXh0cz4KICAgICAgPGRlZiBsb2NhbElkPSIyMzMiIGxvY2F0b3I9Ijc2OjEtNzY6MTUiIG5hbWU9IlBhdGllbnQiLz4KICAgPC9jb250ZXh0cz4KICAgPHN0YXRlbWVudHM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjMxIiBsb2NhdG9yPSI3NjoxLTc2OjE1IiBuYW1lPSJQYXRpZW50IiBjb250ZXh0PSJQYXRpZW50Ij4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjMyIiB4c2k6dHlwZT0iU2luZ2xldG9uRnJvbSI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjIzMCIgbG9jYXRvcj0iNzY6MS03NjoxNSIgZGF0YVR5cGU9ImZoaXI6UGF0aWVudCIgdGVtcGxhdGVJZD0iaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL1BhdGllbnQiIHhzaTp0eXBlPSJSZXRyaWV2ZSIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIzNiIgbG9jYXRvcj0iODU6MS04NjoyMSIgbmFtZT0iQ2xpZW50IGFnZSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjIzNiI+CiAgICAgICAgICAgICAgIDxhOnM+Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gSGVscGVyIGRlZmluaXRpb25zCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovKgogKiBDbGllbnQgYWdlIGluIHllYXJzIGF0IHRoZSBlbmNvdW50ZXIgZGF0ZS4KICovCmRlZmluZSAmcXVvdDtDbGllbnQgYWdlJnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjI0MiI+CiAgICAgICAgICAgICAgICAgIDxhOnM+QWdlSW5ZZWFyc0F0KDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzNyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+VG9kYXk8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjQyIiBsb2NhdG9yPSI4NjozLTg2OjIxIiBwcmVjaXNpb249IlllYXIiIHhzaTp0eXBlPSJDYWxjdWxhdGVBZ2VBdCI+CiAgICAgICAgICAgIDxzaWduYXR1cmUgbG9jYWxJZD0iMjQzIiBuYW1lPSJ0OkRhdGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgPHNpZ25hdHVyZSBsb2NhbElkPSIyNDQiIG5hbWU9InQ6RGF0ZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyNDEiIHBhdGg9ImJpcnRoRGF0ZS52YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyNDAiIG5hbWU9IlBhdGllbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjM3IiBsb2NhdG9yPSI4NjoxNi04NjoyMCIgbmFtZT0iVG9kYXkiIHhzaTp0eXBlPSJQYXJhbWV0ZXJSZWYiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyNDciIGxvY2F0b3I9IjkyOjEtOTM6NDAiIG5hbWU9IkNsaWVudCBpcyBhdCBiaW5kaW5nIHRhcmdldCBhZ2UgKDM1IG9yIDQ1KSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjI0NyI+CiAgICAgICAgICAgICAgIDxhOnM+LyoKICogVGhlIGNsaWVudCBpcyBhdCBvbmUgb2YgdGhlIGJpbmRpbmcgdGFyZ2V0IGFnZXMgcGVyIEEvNjQxIHNlY3Rpb24gMi4yCiAqIChIUFYtdGVzdC1jYXBhYmxlIGZhY2lsaXRpZXM6IGFnZXMgMzUgYW5kIDQ1IG9ubHkpLgogKi8KZGVmaW5lICZxdW90O0NsaWVudCBpcyBhdCBiaW5kaW5nIHRhcmdldCBhZ2UgKDM1IG9yIDQ1KSZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyNDgiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI0OSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjUwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGllbnQgYWdlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI1MSI+ID0gMzU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+IG9yIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI1NCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjU1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGllbnQgYWdlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI1NiI+ID0gNDU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNDgiIGxvY2F0b3I9IjkzOjMtOTM6NDAiIHhzaTp0eXBlPSJPciI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI0OSIgbG9jYXRvcj0iOTM6My05MzoxOSIgeHNpOnR5cGU9IkVxdWFsIj4KICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBsb2NhbElkPSIyNTIiIG5hbWU9InQ6SW50ZWdlciIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICA8c2lnbmF0dXJlIGxvY2FsSWQ9IjI1MyIgbmFtZT0idDpJbnRlZ2VyIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI1MCIgbG9jYXRvcj0iOTM6My05MzoxNCIgbmFtZT0iQ2xpZW50IGFnZSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjUxIiBsb2NhdG9yPSI5MzoxOC05MzoxOSIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIzNSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyNTQiIGxvY2F0b3I9IjkzOjI0LTkzOjQwIiB4c2k6dHlwZT0iRXF1YWwiPgogICAgICAgICAgICAgICA8c2lnbmF0dXJlIGxvY2FsSWQ9IjI1NyIgbmFtZT0idDpJbnRlZ2VyIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgIDxzaWduYXR1cmUgbG9jYWxJZD0iMjU4IiBuYW1lPSJ0OkludGVnZXIiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjU1IiBsb2NhdG9yPSI5MzoyNC05MzozNSIgbmFtZT0iQ2xpZW50IGFnZSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjU2IiBsb2NhdG9yPSI5MzozOS05Mzo0MCIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSI0NSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjI2MSIgbG9jYXRvcj0iMTAwOjEtMTAxOjQwIiBuYW1lPSJDbGllbnQgaXMgYXQgcHJvZ3JhbW1hdGljIHRhcmdldCBhZ2UgKDMwIG9yIDQwKSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjI2MSI+CiAgICAgICAgICAgICAgIDxhOnM+LyoKICogVGhlIGNsaWVudCBpcyBhdCBvbmUgb2YgdGhlIHByb2dyYW1tYXRpYy1vdmVybGF5IHRhcmdldCBhZ2VzIHBlciB0aGUKICogQXByaWwgMjAyNSBDZXJ2aWNhbCBDYW5jZXIgRWxpbWluYXRpb24gUHJvZ3JhbW1lIGxhdW5jaCBhbm5vdW5jZW1lbnQKICogKGFnZXMgMzAgYW5kIDQwKS4KICovCmRlZmluZSAmcXVvdDtDbGllbnQgaXMgYXQgcHJvZ3JhbW1hdGljIHRhcmdldCBhZ2UgKDMwIG9yIDQwKSZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyNjIiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI2MyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjY0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGllbnQgYWdlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI2NSI+ID0gMzA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+IG9yIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI2OCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjY5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGllbnQgYWdlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3MCI+ID0gNDA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNjIiIGxvY2F0b3I9IjEwMTozLTEwMTo0MCIgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjYzIiBsb2NhdG9yPSIxMDE6My0xMDE6MTkiIHhzaTp0eXBlPSJFcXVhbCI+CiAgICAgICAgICAgICAgIDxzaWduYXR1cmUgbG9jYWxJZD0iMjY2IiBuYW1lPSJ0OkludGVnZXIiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBsb2NhbElkPSIyNjciIG5hbWU9InQ6SW50ZWdlciIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyNjQiIGxvY2F0b3I9IjEwMTozLTEwMToxNCIgbmFtZT0iQ2xpZW50IGFnZSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjY1IiBsb2NhdG9yPSIxMDE6MTgtMTAxOjE5IiB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjMwIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI2OCIgbG9jYXRvcj0iMTAxOjI0LTEwMTo0MCIgeHNpOnR5cGU9IkVxdWFsIj4KICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBsb2NhbElkPSIyNzEiIG5hbWU9InQ6SW50ZWdlciIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICA8c2lnbmF0dXJlIGxvY2FsSWQ9IjI3MiIgbmFtZT0idDpJbnRlZ2VyIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI2OSIgbG9jYXRvcj0iMTAxOjI0LTEwMTozNSIgbmFtZT0iQ2xpZW50IGFnZSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjcwIiBsb2NhdG9yPSIxMDE6MzktMTAxOjQwIiB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjQwIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjc1IiBsb2NhdG9yPSIxMTQ6MS0xMTc6MzUiIG5hbWU9IkNsaWVudCBpcyBkdWUgZm9yIEhQViBzY3JlZW5pbmcgKGxlZ2FsIGJpbmRpbmcpIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnQgbmFtZT0ib3V0cHV0IiB2YWx1ZT0iJnF1b3Q7RHVlIGZvciBIUFYgc2NyZWVuaW5nJnF1b3Q7Ii8+CiAgICAgICAgICAgIDxhOnQgbmFtZT0iYmluZGluZ25lc3MiIHZhbHVlPSJsZWdhbCYjeGE7Q2xpZW50IGlzIGR1ZSBpZiBhdCBhIGJpbmRpbmcgdGFyZ2V0IGFnZSwgaGFzIG5vdCBoYWQgYSBoeXN0ZXJlY3RvbXksJiN4YTthbmQgaGFzIG5vdCBiZWVuIHNjcmVlbmVkIGluIHRoZSBjdXJyZW50IGN5Y2xlLiIvPgogICAgICAgICAgICA8YTpzIHI9IjI3NSI+CiAgICAgICAgICAgICAgIDxhOnM+Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTGVnYWwtYmluZGluZyBlbGlnaWJpbGl0eSB0cmVlIOKAlCBBLzY0MSBzZWN0aW9uIDIuMiAoSFBWIGF0IGFnZXMgMzUgYW5kIDQ1KQovLyBCaW5kaW5nbmVzczogbGVnYWwKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8qCiAqIEBvdXRwdXQ6IENYQ0EuRCNERTQgJnF1b3Q7RHVlIGZvciBIUFYgc2NyZWVuaW5nJnF1b3Q7CiAqIEBiaW5kaW5nbmVzczogbGVnYWwKICogQ2xpZW50IGlzIGR1ZSBpZiBhdCBhIGJpbmRpbmcgdGFyZ2V0IGFnZSwgaGFzIG5vdCBoYWQgYSBoeXN0ZXJlY3RvbXksCiAqIGFuZCBoYXMgbm90IGJlZW4gc2NyZWVuZWQgaW4gdGhlIGN1cnJlbnQgY3ljbGUuCiAqLwpkZWZpbmUgJnF1b3Q7Q2xpZW50IGlzIGR1ZSBmb3IgSFBWIHNjcmVlbmluZyAobGVnYWwgYmluZGluZykmcXVvdDs6CiAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjc2Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNzciPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3OCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7Q2xpZW50IGlzIGF0IGJpbmRpbmcgdGFyZ2V0IGFnZSAoMzUgb3IgNDUpJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgYW5kIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3OSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+bm90IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI4MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjgwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5FbGVtZW50czwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjgxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtIYXMgSGFkIEh5c3RlcmVjdG9teSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4KICAgIGFuZCA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyODIiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPm5vdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyODMiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0hhc1JlY2VudEhQVlNjcmVlbmluZyZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNzYiIGxvY2F0b3I9IjExNTozLTExNzozNSIgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI3NyIgbG9jYXRvcj0iMTE1OjMtMTE2OjQzIiB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjc4IiBsb2NhdG9yPSIxMTU6My0xMTU6NDYiIG5hbWU9IkNsaWVudCBpcyBhdCBiaW5kaW5nIHRhcmdldCBhZ2UgKDM1IG9yIDQ1KSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjc5IiBsb2NhdG9yPSIxMTY6OS0xMTY6NDMiIHhzaTp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyODEiIGxvY2F0b3I9IjExNjoxMy0xMTY6NDMiIG5hbWU9IkhhcyBIYWQgSHlzdGVyZWN0b215IiBsaWJyYXJ5TmFtZT0iRWxlbWVudHMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyODIiIGxvY2F0b3I9IjExNzo5LTExNzozNSIgeHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI4MyIgbG9jYXRvcj0iMTE3OjEzLTExNzozNSIgbmFtZT0iSGFzUmVjZW50SFBWU2NyZWVuaW5nIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyODYiIGxvY2F0b3I9IjEyNDoxLTEyNzo0MyIgbmFtZT0iQ2xpZW50IG5vdCBkdWUg4oCUIGFscmVhZHkgc2NyZWVuZWQgaW4gY3VycmVudCBjeWNsZSAobGVnYWwgYmluZGluZykiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6dCBuYW1lPSJvdXRwdXQiIHZhbHVlPSImcXVvdDtOb3QgZHVlIOKAlCBhbHJlYWR5IHNjcmVlbmVkIGluIGN1cnJlbnQgY3ljbGUmcXVvdDsiLz4KICAgICAgICAgICAgPGE6dCBuYW1lPSJiaW5kaW5nbmVzcyIgdmFsdWU9ImxlZ2FsJiN4YTtDbGllbnQgaXMgYXQgYSB0YXJnZXQgYWdlIGJ1dCBoYXMgaGFkIGEgcmVjZW50IHZhbGlkIEhQViBzY3JlZW5pbmcgcmVzdWx0LiIvPgogICAgICAgICAgICA8YTpzIHI9IjI4NiI+CiAgICAgICAgICAgICAgIDxhOnM+LyoKICogQG91dHB1dDogQ1hDQS5EI0RFNSAmcXVvdDtOb3QgZHVlIOKAlCBhbHJlYWR5IHNjcmVlbmVkIGluIGN1cnJlbnQgY3ljbGUmcXVvdDsKICogQGJpbmRpbmduZXNzOiBsZWdhbAogKiBDbGllbnQgaXMgYXQgYSB0YXJnZXQgYWdlIGJ1dCBoYXMgaGFkIGEgcmVjZW50IHZhbGlkIEhQViBzY3JlZW5pbmcgcmVzdWx0LgogKi8KZGVmaW5lICZxdW90O0NsaWVudCBub3QgZHVlIOKAlCBhbHJlYWR5IHNjcmVlbmVkIGluIGN1cnJlbnQgY3ljbGUgKGxlZ2FsIGJpbmRpbmcpJnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjI4NyI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjg4Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyODkiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0NsaWVudCBpcyBhdCBiaW5kaW5nIHRhcmdldCBhZ2UgKDM1IG9yIDQ1KSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgIGFuZCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0hhc1JlY2VudEhQVlNjcmVlbmluZyZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICBhbmQgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjkxIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5ub3QgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjkzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkVsZW1lbnRzPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0hhcyBIYWQgSHlzdGVyZWN0b215JnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyODciIGxvY2F0b3I9IjEyNTozLTEyNzo0MyIgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI4OCIgbG9jYXRvcj0iMTI1OjMtMTI2OjMxIiB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjg5IiBsb2NhdG9yPSIxMjU6My0xMjU6NDYiIG5hbWU9IkNsaWVudCBpcyBhdCBiaW5kaW5nIHRhcmdldCBhZ2UgKDM1IG9yIDQ1KSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjkwIiBsb2NhdG9yPSIxMjY6OS0xMjY6MzEiIG5hbWU9Ikhhc1JlY2VudEhQVlNjcmVlbmluZyIgeHNpOnR5cGU9IlBhcmFtZXRlclJlZiIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI5MSIgbG9jYXRvcj0iMTI3OjktMTI3OjQzIiB4c2k6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjkzIiBsb2NhdG9yPSIxMjc6MTMtMTI3OjQzIiBuYW1lPSJIYXMgSGFkIEh5c3RlcmVjdG9teSIgbGlicmFyeU5hbWU9IkVsZW1lbnRzIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjk2IiBsb2NhdG9yPSIxMzQ6MS0xMzY6NDMiIG5hbWU9IkNsaWVudCBleGNsdWRlZCDigJQgb3V0c2lkZSB0YXJnZXQgYWdlIHJhbmdlIChsZWdhbCBiaW5kaW5nKSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTp0IG5hbWU9Im91dHB1dCIgdmFsdWU9IiZxdW90O0V4Y2x1ZGVkIOKAlCBvdXRzaWRlIHRhcmdldCBhZ2UgcmFuZ2UmcXVvdDsiLz4KICAgICAgICAgICAgPGE6dCBuYW1lPSJiaW5kaW5nbmVzcyIgdmFsdWU9ImxlZ2FsJiN4YTtDbGllbnQgaXMgbm90IGF0IGEgYmluZGluZyB0YXJnZXQgYWdlICgzNSBvciA0NSBvbmx5IGZvciBIUFYtY2FwYWJsZSBmYWNpbGl0aWVzKS4iLz4KICAgICAgICAgICAgPGE6cyByPSIyOTYiPgogICAgICAgICAgICAgICA8YTpzPi8qCiAqIEBvdXRwdXQ6IENYQ0EuRCNERTYgJnF1b3Q7RXhjbHVkZWQg4oCUIG91dHNpZGUgdGFyZ2V0IGFnZSByYW5nZSZxdW90OwogKiBAYmluZGluZ25lc3M6IGxlZ2FsCiAqIENsaWVudCBpcyBub3QgYXQgYSBiaW5kaW5nIHRhcmdldCBhZ2UgKDM1IG9yIDQ1IG9ubHkgZm9yIEhQVi1jYXBhYmxlIGZhY2lsaXRpZXMpLgogKi8KZGVmaW5lICZxdW90O0NsaWVudCBleGNsdWRlZCDigJQgb3V0c2lkZSB0YXJnZXQgYWdlIHJhbmdlIChsZWdhbCBiaW5kaW5nKSZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyOTciPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI5OCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+bm90IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI5OSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7Q2xpZW50IGlzIGF0IGJpbmRpbmcgdGFyZ2V0IGFnZSAoMzUgb3IgNDUpJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4KICAgIGFuZCA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMDAiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPm5vdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMDIiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMwMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+RWxlbWVudHM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMwMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7SGFzIEhhZCBIeXN0ZXJlY3RvbXkmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI5NyIgbG9jYXRvcj0iMTM1OjMtMTM2OjQzIiB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjk4IiBsb2NhdG9yPSIxMzU6My0xMzU6NTAiIHhzaTp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyOTkiIGxvY2F0b3I9IjEzNTo3LTEzNTo1MCIgbmFtZT0iQ2xpZW50IGlzIGF0IGJpbmRpbmcgdGFyZ2V0IGFnZSAoMzUgb3IgNDUpIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjMwMCIgbG9jYXRvcj0iMTM2OjktMTM2OjQzIiB4c2k6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzAyIiBsb2NhdG9yPSIxMzY6MTMtMTM2OjQzIiBuYW1lPSJIYXMgSGFkIEh5c3RlcmVjdG9teSIgbGlicmFyeU5hbWU9IkVsZW1lbnRzIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMzA1IiBsb2NhdG9yPSIxNDQ6MS0xNDU6MzMiIG5hbWU9IkNsaWVudCBleGNsdWRlZCDigJQgcHJpb3IgaHlzdGVyZWN0b215IChsZWdhbCBiaW5kaW5nKSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTp0IG5hbWU9Im91dHB1dCIgdmFsdWU9IiZxdW90O0V4Y2x1ZGVkIOKAlCBwcmlvciBoeXN0ZXJlY3RvbXkmcXVvdDsiLz4KICAgICAgICAgICAgPGE6dCBuYW1lPSJiaW5kaW5nbmVzcyIgdmFsdWU9ImxlZ2FsJiN4YTtDbGllbnQgaGFzIGhhZCBhIGh5c3RlcmVjdG9teSBmb3Igbm9uLWNlcnZpY2FsLWNhbmNlciBpbmRpY2F0aW9uIGFuZCBpcyYjeGE7dGhlcmVmb3JlIGV4ZW1wdCBmcm9tIGNlcnZpY2FsIGNhbmNlciBzY3JlZW5pbmcgcGVyIEEvNjQxIHNlY3Rpb24gMi4yLiIvPgogICAgICAgICAgICA8YTpzIHI9IjMwNSI+CiAgICAgICAgICAgICAgIDxhOnM+LyoKICogQG91dHB1dDogQ1hDQS5EI0RFNyAmcXVvdDtFeGNsdWRlZCDigJQgcHJpb3IgaHlzdGVyZWN0b215JnF1b3Q7CiAqIEBiaW5kaW5nbmVzczogbGVnYWwKICogQ2xpZW50IGhhcyBoYWQgYSBoeXN0ZXJlY3RvbXkgZm9yIG5vbi1jZXJ2aWNhbC1jYW5jZXIgaW5kaWNhdGlvbiBhbmQgaXMKICogdGhlcmVmb3JlIGV4ZW1wdCBmcm9tIGNlcnZpY2FsIGNhbmNlciBzY3JlZW5pbmcgcGVyIEEvNjQxIHNlY3Rpb24gMi4yLgogKi8KZGVmaW5lICZxdW90O0NsaWVudCBleGNsdWRlZCDigJQgcHJpb3IgaHlzdGVyZWN0b215IChsZWdhbCBiaW5kaW5nKSZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIzMDciPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjMwNiI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+RWxlbWVudHM8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjMwNyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7SGFzIEhhZCBIeXN0ZXJlY3RvbXkmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzMDciIGxvY2F0b3I9IjE0NTozLTE0NTozMyIgbmFtZT0iSGFzIEhhZCBIeXN0ZXJlY3RvbXkiIGxpYnJhcnlOYW1lPSJFbGVtZW50cyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMzEwIiBsb2NhdG9yPSIxNTk6MS0xNjA6NjQiIG5hbWU9IkNsaWVudCBpcyBhdCBjeXRvbG9neSBwYXRod2F5IHRhcmdldCBhZ2UiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzMTAiPgogICAgICAgICAgICAgICA8YTpzPi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEN5dG9sb2d5LXBhdGh3YXkgZWxpZ2liaWxpdHkg4oCUIEEvNjQxIHNlY3Rpb24gMi4yIChjeXRvbG9neS1vbmx5IGZhY2lsaXRpZXMpCi8vIEJpbmRpbmduZXNzOiBsZWdhbCDigJQgYmluZGluZyB0byBjeXRvbG9neS1vbmx5IGZhY2lsaXRpZXMgdW5kZXIgQS82NDEKLy8KLy8gRWxldmVuIGJpbmRpbmcgYWdlcyBvbiBhIDMteWVhciBjeWNsZTogMzAsIDMzLCAzNiwgMzksIDQyLCA0NSwgNDgsIDUxLCA1NCwgNTcsIDYwLgovLyBBcHBsaWVkIHdoZW4gdGhlIGZhY2lsaXR5IGhhcyBubyBIUFYgRE5BIHRlc3RpbmcgY2FwYWJpbGl0eS4KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8qCiAqIFRoZSBjbGllbnQgaXMgYXQgb25lIG9mIHRoZSAxMSBiaW5kaW5nIGN5dG9sb2d5LXBhdGh3YXkgdGFyZ2V0IGFnZXMKICogcGVyIEEvNjQxIHNlY3Rpb24gMi4yIChjeXRvbG9neS1vbmx5IGZhY2lsaXRpZXMsIDMteWVhciBjeWNsZSBmcm9tIDMwIHRvIDYwKS4KICovCmRlZmluZSAmcXVvdDtDbGllbnQgaXMgYXQgY3l0b2xvZ3kgcGF0aHdheSB0YXJnZXQgYWdlJnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjMyNCI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzExIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGllbnQgYWdlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPiBpbiA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMTIiPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMxMyI+eyAzMCwgMzMsIDM2LCAzOSwgNDIsIDQ1LCA0OCwgNTEsIDU0LCA1NywgNjAgfTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjMyNCIgbG9jYXRvcj0iMTYwOjMtMTYwOjY0IiB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzMTEiIGxvY2F0b3I9IjE2MDozLTE2MDoxNCIgbmFtZT0iQ2xpZW50IGFnZSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzEyIiBsb2NhdG9yPSIxNjA6MTktMTYwOjY0IiB4c2k6dHlwZT0iTGlzdCI+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9IjMxMyIgbG9jYXRvcj0iMTYwOjIxLTE2MDoyMiIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIzMCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPGVsZW1lbnQgbG9jYWxJZD0iMzE0IiBsb2NhdG9yPSIxNjA6MjUtMTYwOjI2IiB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjMzIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8ZWxlbWVudCBsb2NhbElkPSIzMTUiIGxvY2F0b3I9IjE2MDoyOS0xNjA6MzAiIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMzYiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9IjMxNiIgbG9jYXRvcj0iMTYwOjMzLTE2MDozNCIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIzOSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPGVsZW1lbnQgbG9jYWxJZD0iMzE3IiBsb2NhdG9yPSIxNjA6MzctMTYwOjM4IiB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjQyIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8ZWxlbWVudCBsb2NhbElkPSIzMTgiIGxvY2F0b3I9IjE2MDo0MS0xNjA6NDIiIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iNDUiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9IjMxOSIgbG9jYXRvcj0iMTYwOjQ1LTE2MDo0NiIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSI0OCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPGVsZW1lbnQgbG9jYWxJZD0iMzIwIiBsb2NhdG9yPSIxNjA6NDktMTYwOjUwIiB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjUxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8ZWxlbWVudCBsb2NhbElkPSIzMjEiIGxvY2F0b3I9IjE2MDo1My0xNjA6NTQiIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iNTQiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9IjMyMiIgbG9jYXRvcj0iMTYwOjU3LTE2MDo1OCIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSI1NyIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPGVsZW1lbnQgbG9jYWxJZD0iMzIzIiBsb2NhdG9yPSIxNjA6NjEtMTYwOjYyIiB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjYwIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMzI3IiBsb2NhdG9yPSIxNzA6MS0xNzQ6NDAiIG5hbWU9IkNsaWVudCBpcyBkdWUgZm9yIGN5dG9sb2d5IHNjcmVlbmluZyAobGVnYWwgYmluZGluZykiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6dCBuYW1lPSJvdXRwdXQiIHZhbHVlPSImcXVvdDtEdWUgZm9yIEhQViBzY3JlZW5pbmcmcXVvdDsg4oCUIGJ1dCB0aGUgdGVzdCByZWNvbW1lbmRlZCBpcyIvPgogICAgICAgICAgICA8YTp0IG5hbWU9ImJpbmRpbmduZXNzIiB2YWx1ZT0ibGVnYWwmI3hhO0N5dG9sb2d5LXBhdGh3YXkgY2xpZW50IGlzIGR1ZSBpZiBhdCBvbmUgb2YgdGhlIDExIHRhcmdldCBhZ2VzLCB0aGUgZmFjaWxpdHkmI3hhO2xhY2tzIEhQViBjYXBhYmlsaXR5LCBubyBoeXN0ZXJlY3RvbXksIGFuZCBubyByZWNlbnQgdmFsaWQgY3l0b2xvZ3kgc2NyZWVuaW5nLiIvPgogICAgICAgICAgICA8YTpzIHI9IjMyNyI+CiAgICAgICAgICAgICAgIDxhOnM+LyoKICogQG91dHB1dDogQ1hDQS5EI0RFNCAmcXVvdDtEdWUgZm9yIEhQViBzY3JlZW5pbmcmcXVvdDsg4oCUIGJ1dCB0aGUgdGVzdCByZWNvbW1lbmRlZCBpcwogKiAgIGN5dG9sb2d5LCBub3QgSFBWICh0aGUgc2NyZWVuaW5nIG5hbWUgaW4gQ1hDQS5EI0RFNCByZWZsZWN0cyB0aGUgV0hPCiAqICAgdGFyZ2V0IHRlc3Q7IGJvdGggcGF0aHdheXMgYXJlIGZsYXZvcnMgb2YgJnF1b3Q7Y2VydmljYWwgY2FuY2VyIHNjcmVlbmluZyZxdW90OykuCiAqIEBiaW5kaW5nbmVzczogbGVnYWwKICogQ3l0b2xvZ3ktcGF0aHdheSBjbGllbnQgaXMgZHVlIGlmIGF0IG9uZSBvZiB0aGUgMTEgdGFyZ2V0IGFnZXMsIHRoZSBmYWNpbGl0eQogKiBsYWNrcyBIUFYgY2FwYWJpbGl0eSwgbm8gaHlzdGVyZWN0b215LCBhbmQgbm8gcmVjZW50IHZhbGlkIGN5dG9sb2d5IHNjcmVlbmluZy4KICovCmRlZmluZSAmcXVvdDtDbGllbnQgaXMgZHVlIGZvciBjeXRvbG9neSBzY3JlZW5pbmcgKGxlZ2FsIGJpbmRpbmcpJnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjMyOCI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzI5Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMzAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMzMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7Q2xpZW50IGlzIGF0IGN5dG9sb2d5IHBhdGh3YXkgdGFyZ2V0IGFnZSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgIGFuZCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMzIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPm5vdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMzMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0ZhY2lsaXR5SGFzSFBWQ2FwYWJpbGl0eSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgYW5kIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMzNCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+bm90IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMzNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzM1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5FbGVtZW50czwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzM2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtIYXMgSGFkIEh5c3RlcmVjdG9teSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4KICAgIGFuZCA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMzciPgogICAgICAgICAgICAgICAgICAgICA8YTpzPm5vdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMzgiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0hhc1JlY2VudEN5dG9sb2d5U2NyZWVuaW5nJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjMyOCIgbG9jYXRvcj0iMTcxOjMtMTc0OjQwIiB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzI5IiBsb2NhdG9yPSIxNzE6My0xNzM6NDMiIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzMzAiIGxvY2F0b3I9IjE3MTozLTE3MjozOCIgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjMzMSIgbG9jYXRvcj0iMTcxOjMtMTcxOjQ0IiBuYW1lPSJDbGllbnQgaXMgYXQgY3l0b2xvZ3kgcGF0aHdheSB0YXJnZXQgYWdlIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzMzIiIGxvY2F0b3I9IjE3Mjo5LTE3MjozOCIgeHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjMzMyIgbG9jYXRvcj0iMTcyOjEzLTE3MjozOCIgbmFtZT0iRmFjaWxpdHlIYXNIUFZDYXBhYmlsaXR5IiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzMzQiIGxvY2F0b3I9IjE3Mzo5LTE3Mzo0MyIgeHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjMzNiIgbG9jYXRvcj0iMTczOjEzLTE3Mzo0MyIgbmFtZT0iSGFzIEhhZCBIeXN0ZXJlY3RvbXkiIGxpYnJhcnlOYW1lPSJFbGVtZW50cyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjMzNyIgbG9jYXRvcj0iMTc0OjktMTc0OjQwIiB4c2k6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzM4IiBsb2NhdG9yPSIxNzQ6MTMtMTc0OjQwIiBuYW1lPSJIYXNSZWNlbnRDeXRvbG9neVNjcmVlbmluZyIgeHNpOnR5cGU9IlBhcmFtZXRlclJlZiIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMzQxIiBsb2NhdG9yPSIxODY6MS0xODk6MzUiIG5hbWU9IkNsaWVudCBpcyBkdWUgZm9yIEhQViBzY3JlZW5pbmcgKHByb2dyYW1tYXRpYykiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6dCBuYW1lPSJvdXRwdXQiIHZhbHVlPSImcXVvdDtEdWUgZm9yIEhQViBzY3JlZW5pbmcmcXVvdDsiLz4KICAgICAgICAgICAgPGE6dCBuYW1lPSJiaW5kaW5nbmVzcyIgdmFsdWU9InByb2dyYW1tYXRpYyDigJQgTW9uZ29saWEgb3ZlcmxheSIvPgogICAgICAgICAgICA8YTp0IG5hbWU9InNvdXJjZSIgdmFsdWU9IldITyBNb25nb2xpYSBuZXdzIHJlbGVhc2UsIDIyIEFwcmlsIDIwMjUuIi8+CiAgICAgICAgICAgIDxhOnMgcj0iMzQxIj4KICAgICAgICAgICAgICAgPGE6cz4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBQcm9ncmFtbWF0aWMtb3ZlcmxheSBlbGlnaWJpbGl0eSDigJQgQXByaWwgMjAyNSBsYXVuY2gncyAzMC80MCBhbm5vdW5jZW1lbnQKLy8gQmluZGluZ25lc3M6IHByb2dyYW1tYXRpYyAoTW9uZ29saWEgb3ZlcmxheSkKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8qCiAqIEBvdXRwdXQ6IENYQ0EuRCNERTQgJnF1b3Q7RHVlIGZvciBIUFYgc2NyZWVuaW5nJnF1b3Q7CiAqIEBiaW5kaW5nbmVzczogcHJvZ3JhbW1hdGljIOKAlCBNb25nb2xpYSBvdmVybGF5CiAqIEBzb3VyY2U6IFdITyBNb25nb2xpYSBuZXdzIHJlbGVhc2UsIDIyIEFwcmlsIDIwMjUuCiAqLwpkZWZpbmUgJnF1b3Q7Q2xpZW50IGlzIGR1ZSBmb3IgSFBWIHNjcmVlbmluZyAocHJvZ3JhbW1hdGljKSZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIzNDIiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjM0MyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzQ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGllbnQgaXMgYXQgcHJvZ3JhbW1hdGljIHRhcmdldCBhZ2UgKDMwIG9yIDQwKSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgIGFuZCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNDUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPm5vdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNDciPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM0NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+RWxlbWVudHM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM0NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7SGFzIEhhZCBIeXN0ZXJlY3RvbXkmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICBhbmQgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzQ4Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5ub3QgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzQ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtIYXNSZWNlbnRIUFZTY3JlZW5pbmcmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzQyIiBsb2NhdG9yPSIxODc6My0xODk6MzUiIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzNDMiIGxvY2F0b3I9IjE4NzozLTE4ODo0MyIgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM0NCIgbG9jYXRvcj0iMTg3OjMtMTg3OjUxIiBuYW1lPSJDbGllbnQgaXMgYXQgcHJvZ3JhbW1hdGljIHRhcmdldCBhZ2UgKDMwIG9yIDQwKSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzQ1IiBsb2NhdG9yPSIxODg6OS0xODg6NDMiIHhzaTp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzNDciIGxvY2F0b3I9IjE4ODoxMy0xODg6NDMiIG5hbWU9IkhhcyBIYWQgSHlzdGVyZWN0b215IiBsaWJyYXJ5TmFtZT0iRWxlbWVudHMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzNDgiIGxvY2F0b3I9IjE4OTo5LTE4OTozNSIgeHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM0OSIgbG9jYXRvcj0iMTg5OjEzLTE4OTozNSIgbmFtZT0iSGFzUmVjZW50SFBWU2NyZWVuaW5nIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIzNTIiIGxvY2F0b3I9IjE5ODoxLTE5OToxOSIgbmFtZT0iQ2xpZW50IGlzIGR1ZSBmb3IgSFBWIHNjcmVlbmluZyBhdCBhZ2UgMzUiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzNTIiPgogICAgICAgICAgICAgICA8YTpzPi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc2hpbXMg4oCUIHByZXNlcnZlIFBoYXNlIDIvMyBkZWZpbmUgbmFtZXMgc28gZXhpc3RpbmcKLy8gUGxhbkRlZmluaXRpb24gcmVmZXJlbmNlcyBjb250aW51ZSB0byBmaXJlLgovLyAoVGhlc2UgYWxpYXNlcyB3aWxsIGJlIHJlbW92ZWQgb25jZSBhbGwgcmVmZXJlbmNlcyBtaWdyYXRlIHRvIHRoZQovLyBleHBhbmRlZCBkZWZpbmUgbmFtZXMgYWJvdmUuKQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKZGVmaW5lICZxdW90O0NsaWVudCBpcyBkdWUgZm9yIEhQViBzY3JlZW5pbmcgYXQgYWdlIDM1JnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjM1MyI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzU0Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGllbnQgYWdlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjM1NSI+ID0gMzU8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjM1MyIgbG9jYXRvcj0iMTk5OjMtMTk5OjE5IiB4c2k6dHlwZT0iRXF1YWwiPgogICAgICAgICAgICA8c2lnbmF0dXJlIGxvY2FsSWQ9IjM1NiIgbmFtZT0idDpJbnRlZ2VyIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgIDxzaWduYXR1cmUgbG9jYWxJZD0iMzU3IiBuYW1lPSJ0OkludGVnZXIiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzU0IiBsb2NhdG9yPSIxOTk6My0xOTk6MTQiIG5hbWU9IkNsaWVudCBhZ2UiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM1NSIgbG9jYXRvcj0iMTk5OjE4LTE5OToxOSIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIzNSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIzNjAiIGxvY2F0b3I9IjIwMToxLTIwMjoxOSIgbmFtZT0iQ2xpZW50IGlzIGR1ZSBmb3IgSFBWIHNjcmVlbmluZyBhdCBhZ2UgMzAiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzNjAiPgogICAgICAgICAgICAgICA8YTpzPmRlZmluZSAmcXVvdDtDbGllbnQgaXMgZHVlIGZvciBIUFYgc2NyZWVuaW5nIGF0IGFnZSAzMCZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIzNjEiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjM2MiI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7Q2xpZW50IGFnZSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNjMiPiA9IDMwPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzNjEiIGxvY2F0b3I9IjIwMjozLTIwMjoxOSIgeHNpOnR5cGU9IkVxdWFsIj4KICAgICAgICAgICAgPHNpZ25hdHVyZSBsb2NhbElkPSIzNjQiIG5hbWU9InQ6SW50ZWdlciIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICA8c2lnbmF0dXJlIGxvY2FsSWQ9IjM2NSIgbmFtZT0idDpJbnRlZ2VyIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM2MiIgbG9jYXRvcj0iMjAyOjMtMjAyOjE0IiBuYW1lPSJDbGllbnQgYWdlIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzNjMiIGxvY2F0b3I9IjIwMjoxOC0yMDI6MTkiIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMzAiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgIDwvc3RhdGVtZW50cz4KPC9saWJyYXJ5Pgo="^^xsd:base64Binary ] ] ) . #
IG © 2026+ Dan Heslinga (independent contributor). Package smart.who.int.cxca#0.0.1 based on FHIR 4.0.1. Generated 2026-05-14
Links: Table of Contents |
QA Report
| Version History | License