{
  "resourceType" : "Library",
  "id" : "CXCAD2DTHPVResultRoutingLogic",
  "meta" : {
    "profile" : ["http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary",
    "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary",
    "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library",
    "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"]
  },
  "text" : {
    "status" : "extensions",
    "div" : "<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;\">CXCAD2DTHPVResultRoutingLogic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">CXCAD2DTHPVResultRoutingLogic</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-CXCAD2DTHPVResultRoutingLogic.html\">CXCAD2DTHPVResultRoutingLogic</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>CQL logic library for routing decisions after an HPV high-risk DNA test result returns. Implements the three-outcome decision tree from A/641 (2020) Fig 2.4: HPV negative → routine; HPV+ with negative cytology → repeat HPV in 12 months; HPV+ with cytology ≥ ASC-US → refer to colposcopy. Source CQL is at input/cql/CXCAD2DTHPVResultRoutingLogic.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\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>HPVResultPositive</th><th>boolean</th><th>0</th><th>1</th><th>In</th></tr>\n              \n                <tr><th>CytologyResultASCUSorWorse</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>Route — HPV negative, return to routine</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Route — HPV+, cytology negative, repeat HPV in 12 months</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Route — HPV+, cytology ≥ ASC-US, refer to colposcopy</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: CXCAD2DTHPVResultRoutingLogic\n *\n * Decision: What to do with a returned HPV high-risk DNA test result\n * L2 Source: A/641 (2020) Fig 2.4 — HPV pathway result routing tree\n * Trigger: HPV result available for an HPV-screened patient\n *\n * THE ROUTING TREE:\n *\n *   HPV result returns\n *      ↓\n *   ┌──────────────────────────────────┐\n *   │ HPV negative                     │ → return to routine screening\n *   ├──────────────────────────────────┤\n *   │ HPV positive                     │ → re-read the saved cytology slide\n *   │   ↓                              │\n *   │   Cytology &lt; ASC-US (NILM)       │ → repeat HPV in 12 months\n *   │   ↓ (then if HPV+ again)         │\n *   │   → refer to colposcopy          │\n *   │                                  │\n *   │   Cytology ≥ ASC-US              │ → refer to colposcopy directly\n *   └──────────────────────────────────┘\n *\n * This library encodes the IMMEDIATE three-outcome decision (HPV negative /\n * HPV+ with negative cytology / HPV+ with abnormal cytology). The 12-month\n * repeat-HPV cycle is encoded as the routing outcome; tracking and timer-\n * based recall happens via the recall/scheduling layer (chunk 7 — deferred).\n *\n * Each routing outcome maps to a CXCA.D code (DE34/DE35/DE36).\n */\n\nlibrary CXCAD2DTHPVResultRoutingLogic version '0.0.1'\n\nusing FHIR version '4.0.1'\n\ninclude FHIRHelpers version '4.0.1'\n\n// Placeholders — to be replaced with FHIR queries via the shared CXCAElements\n// layer. Real implementation:\n//   HPVResultPositive: Observation with code = CXCA.D#DE3 and value = CXCA.D#DE8\n//   CytologyResultASCUSorWorse: Observation with code = CXCA.D#DE13 and value\n//     in {DE30 ASC-US, DE31 ASC-H, DE32 LSIL, DE33 HSIL} (Bethesda ≥ ASC-US)\nparameter &quot;HPVResultPositive&quot; Boolean default false\nparameter &quot;CytologyResultASCUSorWorse&quot; Boolean default false\n\ncontext Patient\n\n// =============================================================================\n// Routing rules — three mutually-exclusive outcomes per A/641 Fig 2.4\n// =============================================================================\n\n/*\n * @output: CXCA.D#DE34 &quot;Route: return to routine screening&quot;\n * @bindingness: legal\n * HPV result is negative — no further investigation indicated.\n */\ndefine &quot;Route — HPV negative, return to routine&quot;:\n  not &quot;HPVResultPositive&quot;\n\n/*\n * @output: CXCA.D#DE35 &quot;Route: repeat HPV test in 12 months&quot;\n * @bindingness: legal\n * HPV result is positive but the cytology re-read shows no significant\n * cellular abnormality (NILM / less than ASC-US). Per Fig 2.4, do not refer\n * to colposcopy yet — recheck HPV in 12 months. If still positive at recheck,\n * the next evaluation will route to colposcopy.\n */\ndefine &quot;Route — HPV+, cytology negative, repeat HPV in 12 months&quot;:\n  &quot;HPVResultPositive&quot;\n    and not &quot;CytologyResultASCUSorWorse&quot;\n\n/*\n * @output: CXCA.D#DE36 &quot;Route: refer to colposcopy&quot;\n * @bindingness: legal\n * HPV result is positive and cytology re-read shows ≥ ASC-US (any of\n * ASC-US, ASC-H, LSIL, HSIL per Bethesda 2014). Refer to colposcopy\n * directly per A/641 Fig 2.4 (Op.Inst. 5.6 covers the colposcopy procedure).\n */\ndefine &quot;Route — HPV+, cytology ≥ ASC-US, refer to colposcopy&quot;:\n  &quot;HPVResultPositive&quot;\n    and &quot;CytologyResultASCUSorWorse&quot;\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 (14956 characters)</code></pre></td></tr>\n            </table>\n          </td>\n        </tr>\n        \n        \n    </table>\n</div>\n</div>"
  },
  "extension" : [{
    "url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
    "valueCode" : "computable"
  }],
  "url" : "http://smart.who.int/cxca/Library/CXCAD2DTHPVResultRoutingLogic",
  "version" : "0.0.1",
  "name" : "CXCAD2DTHPVResultRoutingLogic",
  "title" : "CXCAD2DTHPVResultRoutingLogic",
  "status" : "draft",
  "experimental" : false,
  "type" : {
    "coding" : [{
      "system" : "http://terminology.hl7.org/CodeSystem/library-type",
      "code" : "logic-library"
    }]
  },
  "date" : "2026-05-14T00:50:23+00:00",
  "publisher" : "Dan Heslinga (independent contributor)",
  "contact" : [{
    "name" : "Dan Heslinga (independent contributor)",
    "telecom" : [{
      "system" : "url",
      "value" : "https://github.com/dhes"
    }]
  }],
  "description" : "CQL logic library for routing decisions after an HPV high-risk DNA test result returns. Implements the three-outcome decision tree from A/641 (2020) Fig 2.4: HPV negative → routine; HPV+ with negative cytology → repeat HPV in 12 months; HPV+ with cytology ≥ ASC-US → refer to colposcopy. Source CQL is at input/cql/CXCAD2DTHPVResultRoutingLogic.cql.",
  "parameter" : [{
    "name" : "HPVResultPositive",
    "use" : "in",
    "min" : 0,
    "max" : "1",
    "type" : "boolean"
  },
  {
    "name" : "CytologyResultASCUSorWorse",
    "use" : "in",
    "min" : 0,
    "max" : "1",
    "type" : "boolean"
  },
  {
    "name" : "Patient",
    "use" : "out",
    "min" : 0,
    "max" : "1",
    "type" : "Patient"
  },
  {
    "name" : "Route — HPV negative, return to routine",
    "use" : "out",
    "min" : 0,
    "max" : "1",
    "type" : "boolean"
  },
  {
    "name" : "Route — HPV+, cytology negative, repeat HPV in 12 months",
    "use" : "out",
    "min" : 0,
    "max" : "1",
    "type" : "boolean"
  },
  {
    "name" : "Route — HPV+, cytology ≥ ASC-US, refer to colposcopy",
    "use" : "out",
    "min" : 0,
    "max" : "1",
    "type" : "boolean"
  }],
  "content" : [{
    "contentType" : "text/cql",
    "data" : "LyoKICogTGlicmFyeTogQ1hDQUQyRFRIUFZSZXN1bHRSb3V0aW5nTG9naWMKICoKICogRGVjaXNpb246IFdoYXQgdG8gZG8gd2l0aCBhIHJldHVybmVkIEhQViBoaWdoLXJpc2sgRE5BIHRlc3QgcmVzdWx0CiAqIEwyIFNvdXJjZTogQS82NDEgKDIwMjApIEZpZyAyLjQg4oCUIEhQViBwYXRod2F5IHJlc3VsdCByb3V0aW5nIHRyZWUKICogVHJpZ2dlcjogSFBWIHJlc3VsdCBhdmFpbGFibGUgZm9yIGFuIEhQVi1zY3JlZW5lZCBwYXRpZW50CiAqCiAqIFRIRSBST1VUSU5HIFRSRUU6CiAqCiAqICAgSFBWIHJlc3VsdCByZXR1cm5zCiAqICAgICAg4oaTCiAqICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQCiAqICAg4pSCIEhQViBuZWdhdGl2ZSAgICAgICAgICAgICAgICAgICAgIOKUgiDihpIgcmV0dXJuIHRvIHJvdXRpbmUgc2NyZWVuaW5nCiAqICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkCiAqICAg4pSCIEhQViBwb3NpdGl2ZSAgICAgICAgICAgICAgICAgICAgIOKUgiDihpIgcmUtcmVhZCB0aGUgc2F2ZWQgY3l0b2xvZ3kgc2xpZGUKICogICDilIIgICDihpMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKICogICDilIIgICBDeXRvbG9neSA8IEFTQy1VUyAoTklMTSkgICAgICAg4pSCIOKGkiByZXBlYXQgSFBWIGluIDEyIG1vbnRocwogKiAgIOKUgiAgIOKGkyAodGhlbiBpZiBIUFYrIGFnYWluKSAgICAgICAgIOKUggogKiAgIOKUgiAgIOKGkiByZWZlciB0byBjb2xwb3Njb3B5ICAgICAgICAgIOKUggogKiAgIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKICogICDilIIgICBDeXRvbG9neSDiiaUgQVNDLVVTICAgICAgICAgICAgICDilIIg4oaSIHJlZmVyIHRvIGNvbHBvc2NvcHkgZGlyZWN0bHkKICogICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgKICoKICogVGhpcyBsaWJyYXJ5IGVuY29kZXMgdGhlIElNTUVESUFURSB0aHJlZS1vdXRjb21lIGRlY2lzaW9uIChIUFYgbmVnYXRpdmUgLwogKiBIUFYrIHdpdGggbmVnYXRpdmUgY3l0b2xvZ3kgLyBIUFYrIHdpdGggYWJub3JtYWwgY3l0b2xvZ3kpLiBUaGUgMTItbW9udGgKICogcmVwZWF0LUhQViBjeWNsZSBpcyBlbmNvZGVkIGFzIHRoZSByb3V0aW5nIG91dGNvbWU7IHRyYWNraW5nIGFuZCB0aW1lci0KICogYmFzZWQgcmVjYWxsIGhhcHBlbnMgdmlhIHRoZSByZWNhbGwvc2NoZWR1bGluZyBsYXllciAoY2h1bmsgNyDigJQgZGVmZXJyZWQpLgogKgogKiBFYWNoIHJvdXRpbmcgb3V0Y29tZSBtYXBzIHRvIGEgQ1hDQS5EIGNvZGUgKERFMzQvREUzNS9ERTM2KS4KICovCgpsaWJyYXJ5IENYQ0FEMkRUSFBWUmVzdWx0Um91dGluZ0xvZ2ljIHZlcnNpb24gJzAuMC4xJwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgovLyBQbGFjZWhvbGRlcnMg4oCUIHRvIGJlIHJlcGxhY2VkIHdpdGggRkhJUiBxdWVyaWVzIHZpYSB0aGUgc2hhcmVkIENYQ0FFbGVtZW50cwovLyBsYXllci4gUmVhbCBpbXBsZW1lbnRhdGlvbjoKLy8gICBIUFZSZXN1bHRQb3NpdGl2ZTogT2JzZXJ2YXRpb24gd2l0aCBjb2RlID0gQ1hDQS5EI0RFMyBhbmQgdmFsdWUgPSBDWENBLkQjREU4Ci8vICAgQ3l0b2xvZ3lSZXN1bHRBU0NVU29yV29yc2U6IE9ic2VydmF0aW9uIHdpdGggY29kZSA9IENYQ0EuRCNERTEzIGFuZCB2YWx1ZQovLyAgICAgaW4ge0RFMzAgQVNDLVVTLCBERTMxIEFTQy1ILCBERTMyIExTSUwsIERFMzMgSFNJTH0gKEJldGhlc2RhIOKJpSBBU0MtVVMpCnBhcmFtZXRlciAiSFBWUmVzdWx0UG9zaXRpdmUiIEJvb2xlYW4gZGVmYXVsdCBmYWxzZQpwYXJhbWV0ZXIgIkN5dG9sb2d5UmVzdWx0QVNDVVNvcldvcnNlIiBCb29sZWFuIGRlZmF1bHQgZmFsc2UKCmNvbnRleHQgUGF0aWVudAoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gUm91dGluZyBydWxlcyDigJQgdGhyZWUgbXV0dWFsbHktZXhjbHVzaXZlIG91dGNvbWVzIHBlciBBLzY0MSBGaWcgMi40Ci8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovKgogKiBAb3V0cHV0OiBDWENBLkQjREUzNCAiUm91dGU6IHJldHVybiB0byByb3V0aW5lIHNjcmVlbmluZyIKICogQGJpbmRpbmduZXNzOiBsZWdhbAogKiBIUFYgcmVzdWx0IGlzIG5lZ2F0aXZlIOKAlCBubyBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW5kaWNhdGVkLgogKi8KZGVmaW5lICJSb3V0ZSDigJQgSFBWIG5lZ2F0aXZlLCByZXR1cm4gdG8gcm91dGluZSI6CiAgbm90ICJIUFZSZXN1bHRQb3NpdGl2ZSIKCi8qCiAqIEBvdXRwdXQ6IENYQ0EuRCNERTM1ICJSb3V0ZTogcmVwZWF0IEhQViB0ZXN0IGluIDEyIG1vbnRocyIKICogQGJpbmRpbmduZXNzOiBsZWdhbAogKiBIUFYgcmVzdWx0IGlzIHBvc2l0aXZlIGJ1dCB0aGUgY3l0b2xvZ3kgcmUtcmVhZCBzaG93cyBubyBzaWduaWZpY2FudAogKiBjZWxsdWxhciBhYm5vcm1hbGl0eSAoTklMTSAvIGxlc3MgdGhhbiBBU0MtVVMpLiBQZXIgRmlnIDIuNCwgZG8gbm90IHJlZmVyCiAqIHRvIGNvbHBvc2NvcHkgeWV0IOKAlCByZWNoZWNrIEhQViBpbiAxMiBtb250aHMuIElmIHN0aWxsIHBvc2l0aXZlIGF0IHJlY2hlY2ssCiAqIHRoZSBuZXh0IGV2YWx1YXRpb24gd2lsbCByb3V0ZSB0byBjb2xwb3Njb3B5LgogKi8KZGVmaW5lICJSb3V0ZSDigJQgSFBWKywgY3l0b2xvZ3kgbmVnYXRpdmUsIHJlcGVhdCBIUFYgaW4gMTIgbW9udGhzIjoKICAiSFBWUmVzdWx0UG9zaXRpdmUiCiAgICBhbmQgbm90ICJDeXRvbG9neVJlc3VsdEFTQ1VTb3JXb3JzZSIKCi8qCiAqIEBvdXRwdXQ6IENYQ0EuRCNERTM2ICJSb3V0ZTogcmVmZXIgdG8gY29scG9zY29weSIKICogQGJpbmRpbmduZXNzOiBsZWdhbAogKiBIUFYgcmVzdWx0IGlzIHBvc2l0aXZlIGFuZCBjeXRvbG9neSByZS1yZWFkIHNob3dzIOKJpSBBU0MtVVMgKGFueSBvZgogKiBBU0MtVVMsIEFTQy1ILCBMU0lMLCBIU0lMIHBlciBCZXRoZXNkYSAyMDE0KS4gUmVmZXIgdG8gY29scG9zY29weQogKiBkaXJlY3RseSBwZXIgQS82NDEgRmlnIDIuNCAoT3AuSW5zdC4gNS42IGNvdmVycyB0aGUgY29scG9zY29weSBwcm9jZWR1cmUpLgogKi8KZGVmaW5lICJSb3V0ZSDigJQgSFBWKywgY3l0b2xvZ3kg4omlIEFTQy1VUywgcmVmZXIgdG8gY29scG9zY29weSI6CiAgIkhQVlJlc3VsdFBvc2l0aXZlIgogICAgYW5kICJDeXRvbG9neVJlc3VsdEFTQ1VTb3JXb3JzZSIK"
  },
  {
    "contentType" : "application/elm+xml",
    "data" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSIgbG9jYWxJZD0iMCI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iT3ZlcmxvYWRzIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUluZm8iLz4KICAgPGFubm90YXRpb24gbWVzc2FnZT0iQW4gb3BlcmFuZCBpZGVudGlmaWVyIHJlZmVyZW5jZSBpcyBoaWRpbmcgYW5vdGhlciBpZGVudGlmaWVyIG9mIHRoZSBzYW1lIG5hbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IkFuIG9wZXJhbmQgaWRlbnRpZmllciByZWZlcmVuY2UgaXMgaGlkaW5nIGFub3RoZXIgaWRlbnRpZmllciBvZiB0aGUgc2FtZSBuYW1lLiIgZXJyb3JUeXBlPSJzZW1hbnRpYyIgZXJyb3JTZXZlcml0eT0id2FybmluZyIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1FcnJvciIvPgogICA8YW5ub3RhdGlvbiBtZXNzYWdlPSJBbiBvcGVyYW5kIGlkZW50aWZpZXIgcmVmZXJlbmNlIGlzIGhpZGluZyBhbm90aGVyIGlkZW50aWZpZXIgb2YgdGhlIHNhbWUgbmFtZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgIDxhOnMgcj0iMjM2Ij4KICAgICAgICAgPGE6cz4vKgogKiBMaWJyYXJ5OiBDWENBRDJEVEhQVlJlc3VsdFJvdXRpbmdMb2dpYwogKgogKiBEZWNpc2lvbjogV2hhdCB0byBkbyB3aXRoIGEgcmV0dXJuZWQgSFBWIGhpZ2gtcmlzayBETkEgdGVzdCByZXN1bHQKICogTDIgU291cmNlOiBBLzY0MSAoMjAyMCkgRmlnIDIuNCDigJQgSFBWIHBhdGh3YXkgcmVzdWx0IHJvdXRpbmcgdHJlZQogKiBUcmlnZ2VyOiBIUFYgcmVzdWx0IGF2YWlsYWJsZSBmb3IgYW4gSFBWLXNjcmVlbmVkIHBhdGllbnQKICoKICogVEhFIFJPVVRJTkcgVFJFRToKICoKICogICBIUFYgcmVzdWx0IHJldHVybnMKICogICAgICDihpMKICogICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAKICogICDilIIgSFBWIG5lZ2F0aXZlICAgICAgICAgICAgICAgICAgICAg4pSCIOKGkiByZXR1cm4gdG8gcm91dGluZSBzY3JlZW5pbmcKICogICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKQKICogICDilIIgSFBWIHBvc2l0aXZlICAgICAgICAgICAgICAgICAgICAg4pSCIOKGkiByZS1yZWFkIHRoZSBzYXZlZCBjeXRvbG9neSBzbGlkZQogKiAgIOKUgiAgIOKGkyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUggogKiAgIOKUgiAgIEN5dG9sb2d5ICZsdDsgQVNDLVVTIChOSUxNKSAgICAgICDilIIg4oaSIHJlcGVhdCBIUFYgaW4gMTIgbW9udGhzCiAqICAg4pSCICAg4oaTICh0aGVuIGlmIEhQVisgYWdhaW4pICAgICAgICAg4pSCCiAqICAg4pSCICAg4oaSIHJlZmVyIHRvIGNvbHBvc2NvcHkgICAgICAgICAg4pSCCiAqICAg4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUggogKiAgIOKUgiAgIEN5dG9sb2d5IOKJpSBBU0MtVVMgICAgICAgICAgICAgIOKUgiDihpIgcmVmZXIgdG8gY29scG9zY29weSBkaXJlY3RseQogKiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmAogKgogKiBUaGlzIGxpYnJhcnkgZW5jb2RlcyB0aGUgSU1NRURJQVRFIHRocmVlLW91dGNvbWUgZGVjaXNpb24gKEhQViBuZWdhdGl2ZSAvCiAqIEhQVisgd2l0aCBuZWdhdGl2ZSBjeXRvbG9neSAvIEhQVisgd2l0aCBhYm5vcm1hbCBjeXRvbG9neSkuIFRoZSAxMi1tb250aAogKiByZXBlYXQtSFBWIGN5Y2xlIGlzIGVuY29kZWQgYXMgdGhlIHJvdXRpbmcgb3V0Y29tZTsgdHJhY2tpbmcgYW5kIHRpbWVyLQogKiBiYXNlZCByZWNhbGwgaGFwcGVucyB2aWEgdGhlIHJlY2FsbC9zY2hlZHVsaW5nIGxheWVyIChjaHVuayA3IOKAlCBkZWZlcnJlZCkuCiAqCiAqIEVhY2ggcm91dGluZyBvdXRjb21lIG1hcHMgdG8gYSBDWENBLkQgY29kZSAoREUzNC9ERTM1L0RFMzYpLgogKi8KCmxpYnJhcnkgQ1hDQUQyRFRIUFZSZXN1bHRSb3V0aW5nTG9naWMgdmVyc2lvbiAnMC4wLjEnPC9hOnM+CiAgICAgIDwvYTpzPgogICA8L2Fubm90YXRpb24+CiAgIDxpZGVudGlmaWVyIGlkPSJDWENBRDJEVEhQVlJlc3VsdFJvdXRpbmdMb2dpYyIgc3lzdGVtPSJodHRwOi8vc21hcnQud2hvLmludC9jeGNhIiB2ZXJzaW9uPSIwLjAuMSIvPgogICA8c2NoZW1hSWRlbnRpZmllciBpZD0idXJuOmhsNy1vcmc6ZWxtIiB2ZXJzaW9uPSJyMSIvPgogICA8dXNpbmdzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEiIGxvY2FsSWRlbnRpZmllcj0iU3lzdGVtIiB1cmk9InVybjpobDctb3JnOmVsbS10eXBlczpyMSIgdmVyc2lvbj0iMS4wLjAiLz4KICAgICAgPGRlZiBsb2NhbElkPSIyMDYiIGxvY2F0b3I9IjM0OjEtMzQ6MjYiIGxvY2FsSWRlbnRpZmllcj0iRkhJUiIgdXJpPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB2ZXJzaW9uPSI0LjAuMSI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjIwNiI+CiAgICAgICAgICAgICAgIDxhOnM+dXNpbmcgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gdmVyc2lvbiAnNC4wLjEnPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICA8L3VzaW5ncz4KICAgPGluY2x1ZGVzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIwOCIgbG9jYXRvcj0iMzY6MS0zNjozNSIgbG9jYWxJZGVudGlmaWVyPSJGSElSSGVscGVycyIgcGF0aD0iaHR0cDovL2hsNy5vcmcvZmhpci9GSElSSGVscGVycyIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIyMDgiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUkhlbHBlcnM8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzQuMC4xJzwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC9pbmNsdWRlcz4KICAgPHBhcmFtZXRlcnM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjEwIiBsb2NhdG9yPSI0MzoxLTQzOjUxIiBuYW1lPSJIUFZSZXN1bHRQb3NpdGl2ZSIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjIxMCI+CiAgICAgICAgICAgICAgIDxhOnM+Ly8gUGxhY2Vob2xkZXJzIOKAlCB0byBiZSByZXBsYWNlZCB3aXRoIEZISVIgcXVlcmllcyB2aWEgdGhlIHNoYXJlZCBDWENBRWxlbWVudHMKLy8gbGF5ZXIuIFJlYWwgaW1wbGVtZW50YXRpb246Ci8vICAgSFBWUmVzdWx0UG9zaXRpdmU6IE9ic2VydmF0aW9uIHdpdGggY29kZSA9IENYQ0EuRCNERTMgYW5kIHZhbHVlID0gQ1hDQS5EI0RFOAovLyAgIEN5dG9sb2d5UmVzdWx0QVNDVVNvcldvcnNlOiBPYnNlcnZhdGlvbiB3aXRoIGNvZGUgPSBDWENBLkQjREUxMyBhbmQgdmFsdWUKLy8gICAgIGluIHtERTMwIEFTQy1VUywgREUzMSBBU0MtSCwgREUzMiBMU0lMLCBERTMzIEhTSUx9IChCZXRoZXNkYSDiiaUgQVNDLVVTKQpwYXJhbWV0ZXIgJnF1b3Q7SFBWUmVzdWx0UG9zaXRpdmUmcXVvdDsgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjEyIj4KICAgICAgICAgICAgICAgICAgPGE6cz5Cb29sZWFuPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjIxMSI+IGRlZmF1bHQgZmFsc2U8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGRlZmF1bHQgbG9jYWxJZD0iMjExIiBsb2NhdG9yPSI0Mzo0Ny00Mzo1MSIgdmFsdWVUeXBlPSJ0OkJvb2xlYW4iIHZhbHVlPSJmYWxzZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgPHBhcmFtZXRlclR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjEyIiBsb2NhdG9yPSI0MzozMS00MzozNyIgbmFtZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIxNCIgbG9jYXRvcj0iNDQ6MS00NDo2MCIgbmFtZT0iQ3l0b2xvZ3lSZXN1bHRBU0NVU29yV29yc2UiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIyMTQiPgogICAgICAgICAgICAgICA8YTpzPnBhcmFtZXRlciAmcXVvdDtDeXRvbG9neVJlc3VsdEFTQ1VTb3JXb3JzZSZxdW90OyA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyMTYiPgogICAgICAgICAgICAgICAgICA8YTpzPkJvb2xlYW48L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjE1Ij4gZGVmYXVsdCBmYWxzZTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZGVmYXVsdCBsb2NhbElkPSIyMTUiIGxvY2F0b3I9IjQ0OjU2LTQ0OjYwIiB2YWx1ZVR5cGU9InQ6Qm9vbGVhbiIgdmFsdWU9ImZhbHNlIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICA8cGFyYW1ldGVyVHlwZVNwZWNpZmllciBsb2NhbElkPSIyMTYiIGxvY2F0b3I9IjQ0OjQwLTQ0OjQ2IiBuYW1lPSJ0OkJvb2xlYW4iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgPC9kZWY+CiAgIDwvcGFyYW1ldGVycz4KICAgPGNvbnRleHRzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIyMSIgbG9jYXRvcj0iNDY6MS00NjoxNSIgbmFtZT0iUGF0aWVudCIvPgogICA8L2NvbnRleHRzPgogICA8c3RhdGVtZW50cz4KICAgICAgPGRlZiBsb2NhbElkPSIyMTkiIGxvY2F0b3I9IjQ2OjEtNDY6MTUiIG5hbWU9IlBhdGllbnQiIGNvbnRleHQ9IlBhdGllbnQiPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyMjAiIHhzaTp0eXBlPSJTaW5nbGV0b25Gcm9tIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjE4IiBsb2NhdG9yPSI0NjoxLTQ2OjE1IiBkYXRhVHlwZT0iZmhpcjpQYXRpZW50IiB0ZW1wbGF0ZUlkPSJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vUGF0aWVudCIgeHNpOnR5cGU9IlJldHJpZXZlIi8+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjI0IiBsb2NhdG9yPSI1NzoxLTU4OjI1IiBuYW1lPSJSb3V0ZSDigJQgSFBWIG5lZ2F0aXZlLCByZXR1cm4gdG8gcm91dGluZSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTp0IG5hbWU9Im91dHB1dCIgdmFsdWU9IiZxdW90O1JvdXRlOiByZXR1cm4gdG8gcm91dGluZSBzY3JlZW5pbmcmcXVvdDsiLz4KICAgICAgICAgICAgPGE6dCBuYW1lPSJiaW5kaW5nbmVzcyIgdmFsdWU9ImxlZ2FsJiN4YTtIUFYgcmVzdWx0IGlzIG5lZ2F0aXZlIOKAlCBubyBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW5kaWNhdGVkLiIvPgogICAgICAgICAgICA8YTpzIHI9IjIyNCI+CiAgICAgICAgICAgICAgIDxhOnM+Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gUm91dGluZyBydWxlcyDigJQgdGhyZWUgbXV0dWFsbHktZXhjbHVzaXZlIG91dGNvbWVzIHBlciBBLzY0MSBGaWcgMi40Ci8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovKgogKiBAb3V0cHV0OiBDWENBLkQjREUzNCAmcXVvdDtSb3V0ZTogcmV0dXJuIHRvIHJvdXRpbmUgc2NyZWVuaW5nJnF1b3Q7CiAqIEBiaW5kaW5nbmVzczogbGVnYWwKICogSFBWIHJlc3VsdCBpcyBuZWdhdGl2ZSDigJQgbm8gZnVydGhlciBpbnZlc3RpZ2F0aW9uIGluZGljYXRlZC4KICovCmRlZmluZSAmcXVvdDtSb3V0ZSDigJQgSFBWIG5lZ2F0aXZlLCByZXR1cm4gdG8gcm91dGluZSZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyMjUiPgogICAgICAgICAgICAgICAgICA8YTpzPm5vdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMjYiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0hQVlJlc3VsdFBvc2l0aXZlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjI1IiBsb2NhdG9yPSI1ODozLTU4OjI1IiB4c2k6dHlwZT0iTm90Ij4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjI2IiBsb2NhdG9yPSI1ODo3LTU4OjI1IiBuYW1lPSJIUFZSZXN1bHRQb3NpdGl2ZSIgeHNpOnR5cGU9IlBhcmFtZXRlclJlZiIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIyOSIgbG9jYXRvcj0iNjg6MS03MDo0MCIgbmFtZT0iUm91dGUg4oCUIEhQVissIGN5dG9sb2d5IG5lZ2F0aXZlLCByZXBlYXQgSFBWIGluIDEyIG1vbnRocyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTp0IG5hbWU9Im91dHB1dCIgdmFsdWU9IiZxdW90O1JvdXRlOiByZXBlYXQgSFBWIHRlc3QgaW4gMTIgbW9udGhzJnF1b3Q7Ii8+CiAgICAgICAgICAgIDxhOnQgbmFtZT0iYmluZGluZ25lc3MiIHZhbHVlPSJsZWdhbCYjeGE7SFBWIHJlc3VsdCBpcyBwb3NpdGl2ZSBidXQgdGhlIGN5dG9sb2d5IHJlLXJlYWQgc2hvd3Mgbm8gc2lnbmlmaWNhbnQmI3hhO2NlbGx1bGFyIGFibm9ybWFsaXR5IChOSUxNIC8gbGVzcyB0aGFuIEFTQy1VUykuIFBlciBGaWcgMi40LCBkbyBub3QgcmVmZXImI3hhO3RvIGNvbHBvc2NvcHkgeWV0IOKAlCByZWNoZWNrIEhQViBpbiAxMiBtb250aHMuIElmIHN0aWxsIHBvc2l0aXZlIGF0IHJlY2hlY2ssJiN4YTt0aGUgbmV4dCBldmFsdWF0aW9uIHdpbGwgcm91dGUgdG8gY29scG9zY29weS4iLz4KICAgICAgICAgICAgPGE6cyByPSIyMjkiPgogICAgICAgICAgICAgICA8YTpzPi8qCiAqIEBvdXRwdXQ6IENYQ0EuRCNERTM1ICZxdW90O1JvdXRlOiByZXBlYXQgSFBWIHRlc3QgaW4gMTIgbW9udGhzJnF1b3Q7CiAqIEBiaW5kaW5nbmVzczogbGVnYWwKICogSFBWIHJlc3VsdCBpcyBwb3NpdGl2ZSBidXQgdGhlIGN5dG9sb2d5IHJlLXJlYWQgc2hvd3Mgbm8gc2lnbmlmaWNhbnQKICogY2VsbHVsYXIgYWJub3JtYWxpdHkgKE5JTE0gLyBsZXNzIHRoYW4gQVNDLVVTKS4gUGVyIEZpZyAyLjQsIGRvIG5vdCByZWZlcgogKiB0byBjb2xwb3Njb3B5IHlldCDigJQgcmVjaGVjayBIUFYgaW4gMTIgbW9udGhzLiBJZiBzdGlsbCBwb3NpdGl2ZSBhdCByZWNoZWNrLAogKiB0aGUgbmV4dCBldmFsdWF0aW9uIHdpbGwgcm91dGUgdG8gY29scG9zY29weS4KICovCmRlZmluZSAmcXVvdDtSb3V0ZSDigJQgSFBWKywgY3l0b2xvZ3kgbmVnYXRpdmUsIHJlcGVhdCBIUFYgaW4gMTIgbW9udGhzJnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjIzMCI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjMxIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtIUFZSZXN1bHRQb3NpdGl2ZSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4KICAgIGFuZCA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMzIiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPm5vdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMzMiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0N5dG9sb2d5UmVzdWx0QVNDVVNvcldvcnNlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjIzMCIgbG9jYXRvcj0iNjk6My03MDo0MCIgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjIzMSIgbG9jYXRvcj0iNjk6My02OToyMSIgbmFtZT0iSFBWUmVzdWx0UG9zaXRpdmUiIHhzaTp0eXBlPSJQYXJhbWV0ZXJSZWYiLz4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjMyIiBsb2NhdG9yPSI3MDo5LTcwOjQwIiB4c2k6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjMzIiBsb2NhdG9yPSI3MDoxMy03MDo0MCIgbmFtZT0iQ3l0b2xvZ3lSZXN1bHRBU0NVU29yV29yc2UiIHhzaTp0eXBlPSJQYXJhbWV0ZXJSZWYiLz4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIzNiIgbG9jYXRvcj0iNzk6MS04MTozNiIgbmFtZT0iUm91dGUg4oCUIEhQVissIGN5dG9sb2d5IOKJpSBBU0MtVVMsIHJlZmVyIHRvIGNvbHBvc2NvcHkiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6dCBuYW1lPSJvdXRwdXQiIHZhbHVlPSImcXVvdDtSb3V0ZTogcmVmZXIgdG8gY29scG9zY29weSZxdW90OyIvPgogICAgICAgICAgICA8YTp0IG5hbWU9ImJpbmRpbmduZXNzIiB2YWx1ZT0ibGVnYWwmI3hhO0hQViByZXN1bHQgaXMgcG9zaXRpdmUgYW5kIGN5dG9sb2d5IHJlLXJlYWQgc2hvd3Mg4omlIEFTQy1VUyAoYW55IG9mJiN4YTtBU0MtVVMsIEFTQy1ILCBMU0lMLCBIU0lMIHBlciBCZXRoZXNkYSAyMDE0KS4gUmVmZXIgdG8gY29scG9zY29weSYjeGE7ZGlyZWN0bHkgcGVyIEEvNjQxIEZpZyAyLjQgKE9wLkluc3QuIDUuNiBjb3ZlcnMgdGhlIGNvbHBvc2NvcHkgcHJvY2VkdXJlKS4iLz4KICAgICAgICAgICAgPGE6cyByPSIyMzYiPgogICAgICAgICAgICAgICA8YTpzPi8qCiAqIEBvdXRwdXQ6IENYQ0EuRCNERTM2ICZxdW90O1JvdXRlOiByZWZlciB0byBjb2xwb3Njb3B5JnF1b3Q7CiAqIEBiaW5kaW5nbmVzczogbGVnYWwKICogSFBWIHJlc3VsdCBpcyBwb3NpdGl2ZSBhbmQgY3l0b2xvZ3kgcmUtcmVhZCBzaG93cyDiiaUgQVNDLVVTIChhbnkgb2YKICogQVNDLVVTLCBBU0MtSCwgTFNJTCwgSFNJTCBwZXIgQmV0aGVzZGEgMjAxNCkuIFJlZmVyIHRvIGNvbHBvc2NvcHkKICogZGlyZWN0bHkgcGVyIEEvNjQxIEZpZyAyLjQgKE9wLkluc3QuIDUuNiBjb3ZlcnMgdGhlIGNvbHBvc2NvcHkgcHJvY2VkdXJlKS4KICovCmRlZmluZSAmcXVvdDtSb3V0ZSDigJQgSFBWKywgY3l0b2xvZ3kg4omlIEFTQy1VUywgcmVmZXIgdG8gY29scG9zY29weSZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyMzciPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzOCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7SFBWUmVzdWx0UG9zaXRpdmUmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICBhbmQgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjM5Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDeXRvbG9neVJlc3VsdEFTQ1VTb3JXb3JzZSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjIzNyIgbG9jYXRvcj0iODA6My04MTozNiIgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjIzOCIgbG9jYXRvcj0iODA6My04MDoyMSIgbmFtZT0iSFBWUmVzdWx0UG9zaXRpdmUiIHhzaTp0eXBlPSJQYXJhbWV0ZXJSZWYiLz4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjM5IiBsb2NhdG9yPSI4MTo5LTgxOjM2IiBuYW1lPSJDeXRvbG9neVJlc3VsdEFTQ1VTb3JXb3JzZSIgeHNpOnR5cGU9IlBhcmFtZXRlclJlZiIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICA8L3N0YXRlbWVudHM+CjwvbGlicmFyeT4K"
  }]
}