WHO SMART Guidelines - HIV
0.3.0 - ci-build

WHO SMART Guidelines - HIV - Local Development build (v0.3.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

: HIV.IND.70 Logic - JSON Representation

Draft as of 2024-08-21

Raw json | Download


{
  "resourceType" : "Library",
  "id" : "HIVIND70Logic",
  "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" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: Library HIVIND70Logic</b></p><a name=\"HIVIND70Logic\"> </a><a name=\"hcHIVIND70Logic\"> </a><a name=\"HIVIND70Logic-en-US\"> </a><h2>Related Artifacts</h2><table class=\"grid\"><tr><td>Depends On</td><td>Library HIC</td><td><code>http://smart.who.int/hiv/Library/HIVCommon|0.0.1</code></td></tr><tr><td>Depends On</td><td>Library WCom</td><td><a href=\"Library-WHOCommon.html\">WHOCommon</a></td></tr><tr><td>Depends On</td><td>Library HE</td><td><a href=\"Library-HIVElements.html\">HIVElements</a></td></tr><tr><td>Depends On</td><td>Library HIE</td><td><a href=\"Library-HIVIndicatorElements.html\">HIVIndicatorElements</a></td></tr><tr><td>Depends On</td><td>Library Config</td><td><a href=\"Library-HIVConfig.html\">HIVConfig</a></td></tr></table><h2>Parameters</h2><table class=\"grid\"><tr><td>Measurement Period</td><td>in</td><td>0</td><td>1</td><td>Period</td></tr><tr><td>Patient</td><td>out</td><td>0</td><td>1</td><td>Patient</td></tr><tr><td>Initial Population</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Numerator</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Denominator</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Administrative Gender Stratifier</td><td>out</td><td>0</td><td>1</td><td>Coding</td></tr><tr><td>Age Stratifier</td><td>out</td><td>0</td><td>1</td><td>string</td></tr><tr><td>Geographic Region Stratifier</td><td>out</td><td>0</td><td>1</td><td>string</td></tr><tr><td>patientGroups Stratifier</td><td>out</td><td>0</td><td>*</td><td>string</td></tr><tr><td>HIV prevention intervention</td><td>out</td><td>0</td><td>*</td><td>string</td></tr><tr><td>HIV Status</td><td>out</td><td>0</td><td>1</td><td>Coding</td></tr><tr><td>Stratification</td><td>out</td><td>0</td><td>1</td><td>string</td></tr></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class=\"language-sql\">/**\n * Library: HIV.IND.70 Logic\n * Ref No: STI.4A\n * Short Name: Gonorrhoea testing coverage, HIV prevention services\n *\n * Definition: % of people attending HIV prevention services tested for gonorrhoea during the reporting period\n *\n * Numerator: Number of people attending HIV prevention services tested for gonorrhoea (using a molecular test, culture or POC test) | \n * Numerator Calculation: COUNT of clients with &quot;Gonorrhoea test date&quot; in the reporting period\n * Numerator Exclusions: \n *\n * Denominator: Number of people attending HIV prevention services during the reporting period\n * Denominator Calculation: COUNT of clients with &quot;Date accessed HIV prevention intervention&quot; in the reporting period\n * Denominator Exclusions: \n *\n * Disaggregations:\n * •\u00a0Gender (female, male, other*) \n *  •\u00a0Age (15–19, 20–24, 25–29, 30–49, 50+ years) \n *  •\u00a0Key populations (men who have sex with men, people living in prisons and other closed settings, people who inject drugs, sex workers, trans and gender diverse people)** \n *  •\u00a0HIV status (HIV-positive, HIV-negative, unknown status) \n *  •\u00a0HIV prevention intervention (for example, PrEP) \n *  •\u00a0Diagnostic test used and anatomic site sampled \n *  •\u00a0Cities and other administrative regions of epidemiologic importance\n *\n * Disaggregation Elements: Gender | Age | Key population member type | HIV status | HIV prevention intervention | Type of specimen | Neisseria gonorrhoeae test type\n *\n * Numerator and Denominator Elements:\n * Date accessed HIV prevention intervention \n *  Gonorrhoea test date\n *\n * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022\n * \n * Data Concepts:\n * HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth\n * HIV.A.DE18: Gender* | Gender of the client*\n * HIV.A.DE19: Female | Client identifies as female\n * HIV.A.DE20: Male | Client identifies as male\n * HIV.A.DE21: Transgender male | Client identifies as transgender male\n * HIV.A.DE22: Transgender female | Client identifies as transgender female\n * HIV.A.DE23: Other | Additional category\n * HIV.B.DE50: Key population member type* | The type of key population that the client is included in\n * HIV.B.DE51: Sex worker | Client is a sex worker\n * HIV.B.DE52: Men who have sex with men | Client is a man who has sex with men\n * HIV.B.DE53: Trans and gender-diverse people | Client identifies as trans and gender-diverse\n * HIV.B.DE54: People who inject drugs | Client is a person who injects drugs\n * HIV.B.DE55: People living in prisons and other closed settings | Client lives in a prison or another closed setting\n * HIV.B.DE115: HIV status | HIV status reported after applying the national HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.\n * HIV.B.DE116: HIV-positive | Client is HIV-positive\n * HIV.B.DE117: HIV-negative | Client is HIV-negative\n * HIV.B.DE118: Unknown | Client has unknown HIV status\n * HIV.B.DE255: Gonorrhoea test date | Date of Gonorrhoea test\n * HIV.B.DE261: Type of specimen | Type of specimen to be collected\n * HIV.B.DE262: Blood | Blood specimen to be collected\n * HIV.B.DE263: Urine | Urine specimen to be collected\n * HIV.B.DE264: Cervical or vaginal swab | Cervical or vaginal swab to be collected\n * HIV.B.DE265: Urethral or penile swab | Urethral or penile swab to be collected\n * HIV.B.DE266: Rectal swab | Rectal swab to be collected\n * HIV.B.DE267: Other | Other specimen type to be collected\n * HIV.B.DE276: Neisseria gonorrhoeae test type | Type of diagnostic test used for Neisseria gonorrhoeae\n * HIV.B.DE277: NAAT | Nucleic Acid Amplification Test (NAAT) used\n * HIV.B.DE278: POC Test | Point-of-care (POC) test used\n * HIV.B.DE279: Culture | Culture test used\n * HIV.B.DE280: Microscopy | Microscopy test used\n * HIV.B.DE281: Other | Other type of test used\n * HIV.D.DE807: Gonorrhoea test date | Date of Gonorrhoea test\n * HIV.D.DE813: Type of specimen | Type of specimen to be collected\n * HIV.D.DE814: Blood | Blood specimen to be collected\n * HIV.D.DE815: Urine | Urine specimen to be collected\n * HIV.D.DE816: Cervical or vaginal swab | Cervical or vaginal swab to be collected\n * HIV.D.DE817: Urethral or penile swab | Urethral or penile swab to be collected\n * HIV.D.DE818: Rectal swab | Rectal swab to be collected\n * HIV.D.DE819: Other | Other specimen type to be collected\n * HIV.D.DE828: Neisseria gonorrhoeae test type | Type of diagnostic test used for Neisseria gonorrhoeae\n * HIV.D.DE829: NAAT | Nucleic Acid Amplification Test (NAAT) used\n * HIV.D.DE830: POC Test | Point-of-care (POC) test used\n * HIV.D.DE831: Culture | Culture test used\n * HIV.D.DE832: Microscopy | Microscopy test used\n * HIV.D.DE833: Other | Other type of test used\n * HIV.E.DE114: Key population member type* | The type of key population that the infant's mother is included in\n * HIV.E.DE115: Sex worker | Infant's mother is a sex worker\n * HIV.E.DE116: People who inject drugs | Infant's mother is a person who injects drugs\n * HIV.E.DE117: Trans and gender-diverse people | Infant's mother identifies as trans and gender-diverse\n * HIV.E.DE118: People living in prisons and other closed setting | Infant's mother is in a prison or closed setting\n * HIV.PRV.DE2: HIV prevention intervention | HIV prevention intervention that client accessed\n * HIV.PRV.DE3: PrEP service | Client accessed PrEP services\n * HIV.PRV.DE4: OAMT | Client accessed opioid agonist maintenance treatment (OAMT) services\n * HIV.PRV.DE5: NSP | Client accessed needle-syringe programme (NSP) services\n * HIV.PRV.DE6: STI services | Client accessed sexually transmitted infection (STI) services\n * HIV.PRV.DE7: VMMC | Client accessed voluntary medical male circumcision (VMMC) services\n * HIV.PRV.DE8: Other | Client accessed other HIV prevention services\n * HIV.PRV.DE10: Date accessed HIV prevention intervention | Date the client accessed HIV prevention intervention\n *\n * Additional Context\n * - what it measures: A: % of people attending HIV prevention services who were tested for gonorrhoea | (molecular test, culture or POC test) during the reporting period | B: % of people living with HIV who were tested for gonorrhoea (using a molecular test, culture or POC test) during the reporting period\n * - rationale: • Infection with an acute bacterial sexually transmitted infection such as gonorrhoea is a marker of unprotected sexual intercourse and facilitates HIV transmission and acquisition. | •\u00a0Measuring the burden of gonorrhoea among people living with HIV and among populations at risk of HIV can help national planners determine the resources needed to address both diseases. | •\u00a0Testing for gonorrhoea identifies individuals who would benefit from treatment. | •\u00a0Testing coverage measures progress towards scaling up screening/testing and can be used to assess whether national screening guidelines are being followed.\n * - method: Individual-level data obtained from programme records.   |  | If individual-level data are not available, the indicator can be reported using aggregate programme data. If aggregate data are used and it is not possible to exclude individuals who are tested more than once during the reporting period, the testing coverage estimates will be inflated.\n * \n * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm\n */\n\nlibrary HIVIND70Logic\n\n// Included Libraries\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called HIC\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WCom\ninclude HIVElements called HE\ninclude HIVIndicatorElements called HIE\ninclude HIVConfig called Config\n\n// Indicator Definition\nparameter &quot;Measurement Period&quot; Interval&lt;Date&gt; default Interval[@2023-01-01, @2023-01-30]\n\ncontext Patient\n/* Populations */\n\n/*\n *Initial Population\n */\n\ndefine &quot;Initial Population&quot;:\n  true\n\n/**\n * Numerator\n * \n * Definition: Number of people attending HIV prevention services tested for gonorrhoea (using a molecular test, culture or POC test) | \n * Calculation: COUNT of clients with &quot;Gonorrhoea test date&quot; in the reporting period\n */\n\ndefine &quot;Numerator&quot;:\n  HIE.&quot;Gonorrhoea test date B.DE255&quot;\n\n\n/**\n * Denominator\n *\n * Definition: Number of people attending HIV prevention services during the reporting period\n * Calculation: COUNT of clients with &quot;Date accessed HIV prevention intervention&quot; in the reporting period\n */\n\ndefine &quot;Denominator&quot;:\n  HIE.&quot;Date accessed HIV prevention intervention&quot;\n    \n\n/* end Populations */\n\n/*\n * Disaggregators\n */\n\ndefine &quot;Administrative Gender Stratifier&quot;:\n\tHIE.&quot;By Administrative Gender Stratifier&quot;\n\ndefine &quot;Age Stratifier&quot;:\n\tHIE.&quot;By Age Stratifier 2&quot;\n\ndefine &quot;Geographic Region Stratifier&quot;:\n\tHIE.&quot;By Geographic Region Stratifier&quot;\n\ndefine &quot;patientGroups Stratifier&quot;:\n\tHIE.&quot;patientGroups&quot;\n\ndefine &quot;HIV prevention intervention&quot;:\n\tHIE.&quot;HIV prevention intervention&quot;\n\ndefine &quot;HIV Status&quot;:\n  HIE.&quot;HIV Status Stratifier&quot;\n\ndefine &quot;Stratification&quot;:\n HIE.&quot;By Administrative Gender Stratifier&quot;.code \n  + ':' + HIE.&quot;By Age Stratifier 2&quot;\n+ ':' + HIE.&quot;By Geographic Region Stratifier&quot;\n+ Combine(HIE.patientGroups, ':')\n+ Combine(HIE.&quot;HIV prevention intervention&quot;, ':')\n+ ':' + HIE.&quot;HIV Status Stratifier&quot;.code \n\n//need to add Diagnostic test used and anatomic site sampled </code></pre><p><code>Content not shown - (</code><code>application/elm+xml</code>, size = 29Kb )</p></div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
      "valueCode" : "computable"
    }
  ],
  "url" : "http://smart.who.int/hiv/Library/HIVIND70Logic",
  "version" : "0.3.0",
  "name" : "HIVIND70Logic",
  "title" : "HIV.IND.70 Logic",
  "status" : "draft",
  "experimental" : true,
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2024-08-21T16:05:17+00:00",
  "publisher" : "WHO",
  "contact" : [
    {
      "name" : "WHO",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://who.int"
        }
      ]
    }
  ],
  "description" : "% of people attending HIV prevention services tested for gonorrhoea during the reporting period",
  "relatedArtifact" : [
    {
      "type" : "depends-on",
      "display" : "Library HIC",
      "resource" : "http://smart.who.int/hiv/Library/HIVCommon|0.0.1"
    },
    {
      "type" : "depends-on",
      "display" : "Library WCom",
      "resource" : "http://smart.who.int/hiv/Library/WHOCommon"
    },
    {
      "type" : "depends-on",
      "display" : "Library HE",
      "resource" : "http://smart.who.int/hiv/Library/HIVElements"
    },
    {
      "type" : "depends-on",
      "display" : "Library HIE",
      "resource" : "http://smart.who.int/hiv/Library/HIVIndicatorElements"
    },
    {
      "type" : "depends-on",
      "display" : "Library Config",
      "resource" : "http://smart.who.int/hiv/Library/HIVConfig"
    }
  ],
  "parameter" : [
    {
      "name" : "Measurement Period",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "type" : "Period"
    },
    {
      "name" : "Patient",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Patient"
    },
    {
      "name" : "Initial Population",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "boolean"
    },
    {
      "name" : "Numerator",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "boolean"
    },
    {
      "name" : "Denominator",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "boolean"
    },
    {
      "name" : "Administrative Gender Stratifier",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Coding"
    },
    {
      "name" : "Age Stratifier",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "string"
    },
    {
      "name" : "Geographic Region Stratifier",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "string"
    },
    {
      "name" : "patientGroups Stratifier",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "string"
    },
    {
      "name" : "HIV prevention intervention",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "string"
    },
    {
      "name" : "HIV Status",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Coding"
    },
    {
      "name" : "Stratification",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "string"
    }
  ],
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNzAgTG9naWMKICogUmVmIE5vOiBTVEkuNEEKICogU2hvcnQgTmFtZTogR29ub3JyaG9lYSB0ZXN0aW5nIGNvdmVyYWdlLCBISVYgcHJldmVudGlvbiBzZXJ2aWNlcwogKgogKiBEZWZpbml0aW9uOiAlIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgdGVzdGVkIGZvciBnb25vcnJob2VhIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKgogKiBOdW1lcmF0b3I6IE51bWJlciBvZiBwZW9wbGUgYXR0ZW5kaW5nIEhJViBwcmV2ZW50aW9uIHNlcnZpY2VzIHRlc3RlZCBmb3IgZ29ub3JyaG9lYSAodXNpbmcgYSBtb2xlY3VsYXIgdGVzdCwgY3VsdHVyZSBvciBQT0MgdGVzdCkgfCAKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkdvbm9ycmhvZWEgdGVzdCBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBOdW1iZXIgb2YgcGVvcGxlIGF0dGVuZGluZyBISVYgcHJldmVudGlvbiBzZXJ2aWNlcyBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiRGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAosKgR2VuZGVyIChmZW1hbGUsIG1hbGUsIG90aGVyKikgCiAqICDigKLCoEFnZSAoMTXigJMxOSwgMjDigJMyNCwgMjXigJMyOSwgMzDigJM0OSwgNTArIHllYXJzKSAKICogIOKAosKgS2V5IHBvcHVsYXRpb25zIChtZW4gd2hvIGhhdmUgc2V4IHdpdGggbWVuLCBwZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncywgcGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MsIHNleCB3b3JrZXJzLCB0cmFucyBhbmQgZ2VuZGVyIGRpdmVyc2UgcGVvcGxlKSoqIAogKiAg4oCiwqBISVYgc3RhdHVzIChISVYtcG9zaXRpdmUsIEhJVi1uZWdhdGl2ZSwgdW5rbm93biBzdGF0dXMpIAogKiAg4oCiwqBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gKGZvciBleGFtcGxlLCBQckVQKSAKICogIOKAosKgRGlhZ25vc3RpYyB0ZXN0IHVzZWQgYW5kIGFuYXRvbWljIHNpdGUgc2FtcGxlZCAKICogIOKAosKgQ2l0aWVzIGFuZCBvdGhlciBhZG1pbmlzdHJhdGl2ZSByZWdpb25zIG9mIGVwaWRlbWlvbG9naWMgaW1wb3J0YW5jZQogKgogKiBEaXNhZ2dyZWdhdGlvbiBFbGVtZW50czogR2VuZGVyIHwgQWdlIHwgS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUgfCBISVYgc3RhdHVzIHwgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIHwgVHlwZSBvZiBzcGVjaW1lbiB8IE5laXNzZXJpYSBnb25vcnJob2VhZSB0ZXN0IHR5cGUKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogRGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gCiAqICBHb25vcnJob2VhIHRlc3QgZGF0ZQogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkEuREUxNzogQWdlIHwgQ2FsY3VsYXRlZCBhZ2UgKG51bWJlciBvZiB5ZWFycykgb2YgdGhlIGNsaWVudCBiYXNlZCBvbiBkYXRlIG9mIGJpcnRoCiAqIEhJVi5BLkRFMTg6IEdlbmRlciogfCBHZW5kZXIgb2YgdGhlIGNsaWVudCoKICogSElWLkEuREUxOTogRmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgZmVtYWxlCiAqIEhJVi5BLkRFMjA6IE1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBtYWxlCiAqIEhJVi5BLkRFMjE6IFRyYW5zZ2VuZGVyIG1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBtYWxlCiAqIEhJVi5BLkRFMjI6IFRyYW5zZ2VuZGVyIGZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIGZlbWFsZQogKiBISVYuQS5ERTIzOiBPdGhlciB8IEFkZGl0aW9uYWwgY2F0ZWdvcnkKICogSElWLkIuREU1MDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgY2xpZW50IGlzIGluY2x1ZGVkIGluCiAqIEhJVi5CLkRFNTE6IFNleCB3b3JrZXIgfCBDbGllbnQgaXMgYSBzZXggd29ya2VyCiAqIEhJVi5CLkRFNTI6IE1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4gfCBDbGllbnQgaXMgYSBtYW4gd2hvIGhhcyBzZXggd2l0aCBtZW4KICogSElWLkIuREU1MzogVHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlIHBlb3BsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZQogKiBISVYuQi5ERTU0OiBQZW9wbGUgd2hvIGluamVjdCBkcnVncyB8IENsaWVudCBpcyBhIHBlcnNvbiB3aG8gaW5qZWN0cyBkcnVncwogKiBISVYuQi5ERTU1OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncyB8IENsaWVudCBsaXZlcyBpbiBhIHByaXNvbiBvciBhbm90aGVyIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5CLkRFMTE1OiBISVYgc3RhdHVzIHwgSElWIHN0YXR1cyByZXBvcnRlZCBhZnRlciBhcHBseWluZyB0aGUgbmF0aW9uYWwgSElWIHRlc3RpbmcgYWxnb3JpdGhtLiBObyBzaW5nbGUgSElWIHRlc3QgY2FuIHByb3ZpZGUgYW4gSElWLXBvc2l0aXZlIGRpYWdub3Npcy4KICogSElWLkIuREUxMTY6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTc6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCBpcyBISVYtbmVnYXRpdmUKICogSElWLkIuREUxMTg6IFVua25vd24gfCBDbGllbnQgaGFzIHVua25vd24gSElWIHN0YXR1cwogKiBISVYuQi5ERTI1NTogR29ub3JyaG9lYSB0ZXN0IGRhdGUgfCBEYXRlIG9mIEdvbm9ycmhvZWEgdGVzdAogKiBISVYuQi5ERTI2MTogVHlwZSBvZiBzcGVjaW1lbiB8IFR5cGUgb2Ygc3BlY2ltZW4gdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5CLkRFMjYyOiBCbG9vZCB8IEJsb29kIHNwZWNpbWVuIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuQi5ERTI2MzogVXJpbmUgfCBVcmluZSBzcGVjaW1lbiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkIuREUyNjQ6IENlcnZpY2FsIG9yIHZhZ2luYWwgc3dhYiB8IENlcnZpY2FsIG9yIHZhZ2luYWwgc3dhYiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkIuREUyNjU6IFVyZXRocmFsIG9yIHBlbmlsZSBzd2FiIHwgVXJldGhyYWwgb3IgcGVuaWxlIHN3YWIgdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5CLkRFMjY2OiBSZWN0YWwgc3dhYiB8IFJlY3RhbCBzd2FiIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuQi5ERTI2NzogT3RoZXIgfCBPdGhlciBzcGVjaW1lbiB0eXBlIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuQi5ERTI3NjogTmVpc3NlcmlhIGdvbm9ycmhvZWFlIHRlc3QgdHlwZSB8IFR5cGUgb2YgZGlhZ25vc3RpYyB0ZXN0IHVzZWQgZm9yIE5laXNzZXJpYSBnb25vcnJob2VhZQogKiBISVYuQi5ERTI3NzogTkFBVCB8IE51Y2xlaWMgQWNpZCBBbXBsaWZpY2F0aW9uIFRlc3QgKE5BQVQpIHVzZWQKICogSElWLkIuREUyNzg6IFBPQyBUZXN0IHwgUG9pbnQtb2YtY2FyZSAoUE9DKSB0ZXN0IHVzZWQKICogSElWLkIuREUyNzk6IEN1bHR1cmUgfCBDdWx0dXJlIHRlc3QgdXNlZAogKiBISVYuQi5ERTI4MDogTWljcm9zY29weSB8IE1pY3Jvc2NvcHkgdGVzdCB1c2VkCiAqIEhJVi5CLkRFMjgxOiBPdGhlciB8IE90aGVyIHR5cGUgb2YgdGVzdCB1c2VkCiAqIEhJVi5ELkRFODA3OiBHb25vcnJob2VhIHRlc3QgZGF0ZSB8IERhdGUgb2YgR29ub3JyaG9lYSB0ZXN0CiAqIEhJVi5ELkRFODEzOiBUeXBlIG9mIHNwZWNpbWVuIHwgVHlwZSBvZiBzcGVjaW1lbiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkQuREU4MTQ6IEJsb29kIHwgQmxvb2Qgc3BlY2ltZW4gdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5ELkRFODE1OiBVcmluZSB8IFVyaW5lIHNwZWNpbWVuIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuRC5ERTgxNjogQ2VydmljYWwgb3IgdmFnaW5hbCBzd2FiIHwgQ2VydmljYWwgb3IgdmFnaW5hbCBzd2FiIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuRC5ERTgxNzogVXJldGhyYWwgb3IgcGVuaWxlIHN3YWIgfCBVcmV0aHJhbCBvciBwZW5pbGUgc3dhYiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkQuREU4MTg6IFJlY3RhbCBzd2FiIHwgUmVjdGFsIHN3YWIgdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5ELkRFODE5OiBPdGhlciB8IE90aGVyIHNwZWNpbWVuIHR5cGUgdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5ELkRFODI4OiBOZWlzc2VyaWEgZ29ub3JyaG9lYWUgdGVzdCB0eXBlIHwgVHlwZSBvZiBkaWFnbm9zdGljIHRlc3QgdXNlZCBmb3IgTmVpc3NlcmlhIGdvbm9ycmhvZWFlCiAqIEhJVi5ELkRFODI5OiBOQUFUIHwgTnVjbGVpYyBBY2lkIEFtcGxpZmljYXRpb24gVGVzdCAoTkFBVCkgdXNlZAogKiBISVYuRC5ERTgzMDogUE9DIFRlc3QgfCBQb2ludC1vZi1jYXJlIChQT0MpIHRlc3QgdXNlZAogKiBISVYuRC5ERTgzMTogQ3VsdHVyZSB8IEN1bHR1cmUgdGVzdCB1c2VkCiAqIEhJVi5ELkRFODMyOiBNaWNyb3Njb3B5IHwgTWljcm9zY29weSB0ZXN0IHVzZWQKICogSElWLkQuREU4MzM6IE90aGVyIHwgT3RoZXIgdHlwZSBvZiB0ZXN0IHVzZWQKICogSElWLkUuREUxMTQ6IEtleSBwb3B1bGF0aW9uIG1lbWJlciB0eXBlKiB8IFRoZSB0eXBlIG9mIGtleSBwb3B1bGF0aW9uIHRoYXQgdGhlIGluZmFudCdzIG1vdGhlciBpcyBpbmNsdWRlZCBpbgogKiBISVYuRS5ERTExNTogU2V4IHdvcmtlciB8IEluZmFudCdzIG1vdGhlciBpcyBhIHNleCB3b3JrZXIKICogSElWLkUuREUxMTY6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5FLkRFMTE3OiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgSW5mYW50J3MgbW90aGVyIGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5FLkRFMTE4OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5nIHwgSW5mYW50J3MgbW90aGVyIGlzIGluIGEgcHJpc29uIG9yIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5QUlYuREUyOiBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gfCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gdGhhdCBjbGllbnQgYWNjZXNzZWQKICogSElWLlBSVi5ERTM6IFByRVAgc2VydmljZSB8IENsaWVudCBhY2Nlc3NlZCBQckVQIHNlcnZpY2VzCiAqIEhJVi5QUlYuREU0OiBPQU1UIHwgQ2xpZW50IGFjY2Vzc2VkIG9waW9pZCBhZ29uaXN0IG1haW50ZW5hbmNlIHRyZWF0bWVudCAoT0FNVCkgc2VydmljZXMKICogSElWLlBSVi5ERTU6IE5TUCB8IENsaWVudCBhY2Nlc3NlZCBuZWVkbGUtc3lyaW5nZSBwcm9ncmFtbWUgKE5TUCkgc2VydmljZXMKICogSElWLlBSVi5ERTY6IFNUSSBzZXJ2aWNlcyB8IENsaWVudCBhY2Nlc3NlZCBzZXh1YWxseSB0cmFuc21pdHRlZCBpbmZlY3Rpb24gKFNUSSkgc2VydmljZXMKICogSElWLlBSVi5ERTc6IFZNTUMgfCBDbGllbnQgYWNjZXNzZWQgdm9sdW50YXJ5IG1lZGljYWwgbWFsZSBjaXJjdW1jaXNpb24gKFZNTUMpIHNlcnZpY2VzCiAqIEhJVi5QUlYuREU4OiBPdGhlciB8IENsaWVudCBhY2Nlc3NlZCBvdGhlciBISVYgcHJldmVudGlvbiBzZXJ2aWNlcwogKiBISVYuUFJWLkRFMTA6IERhdGUgYWNjZXNzZWQgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIHwgRGF0ZSB0aGUgY2xpZW50IGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbgogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBBOiAlIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgd2hvIHdlcmUgdGVzdGVkIGZvciBnb25vcnJob2VhIHwgKG1vbGVjdWxhciB0ZXN0LCBjdWx0dXJlIG9yIFBPQyB0ZXN0KSBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QgfCBCOiAlIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgd2hvIHdlcmUgdGVzdGVkIGZvciBnb25vcnJob2VhICh1c2luZyBhIG1vbGVjdWxhciB0ZXN0LCBjdWx0dXJlIG9yIFBPQyB0ZXN0KSBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogLSByYXRpb25hbGU6IOKAoiBJbmZlY3Rpb24gd2l0aCBhbiBhY3V0ZSBiYWN0ZXJpYWwgc2V4dWFsbHkgdHJhbnNtaXR0ZWQgaW5mZWN0aW9uIHN1Y2ggYXMgZ29ub3JyaG9lYSBpcyBhIG1hcmtlciBvZiB1bnByb3RlY3RlZCBzZXh1YWwgaW50ZXJjb3Vyc2UgYW5kIGZhY2lsaXRhdGVzIEhJViB0cmFuc21pc3Npb24gYW5kIGFjcXVpc2l0aW9uLiB8IOKAosKgTWVhc3VyaW5nIHRoZSBidXJkZW4gb2YgZ29ub3JyaG9lYSBhbW9uZyBwZW9wbGUgbGl2aW5nIHdpdGggSElWIGFuZCBhbW9uZyBwb3B1bGF0aW9ucyBhdCByaXNrIG9mIEhJViBjYW4gaGVscCBuYXRpb25hbCBwbGFubmVycyBkZXRlcm1pbmUgdGhlIHJlc291cmNlcyBuZWVkZWQgdG8gYWRkcmVzcyBib3RoIGRpc2Vhc2VzLiB8IOKAosKgVGVzdGluZyBmb3IgZ29ub3JyaG9lYSBpZGVudGlmaWVzIGluZGl2aWR1YWxzIHdobyB3b3VsZCBiZW5lZml0IGZyb20gdHJlYXRtZW50LiB8IOKAosKgVGVzdGluZyBjb3ZlcmFnZSBtZWFzdXJlcyBwcm9ncmVzcyB0b3dhcmRzIHNjYWxpbmcgdXAgc2NyZWVuaW5nL3Rlc3RpbmcgYW5kIGNhbiBiZSB1c2VkIHRvIGFzc2VzcyB3aGV0aGVyIG5hdGlvbmFsIHNjcmVlbmluZyBndWlkZWxpbmVzIGFyZSBiZWluZyBmb2xsb3dlZC4KICogLSBtZXRob2Q6IEluZGl2aWR1YWwtbGV2ZWwgZGF0YSBvYnRhaW5lZCBmcm9tIHByb2dyYW1tZSByZWNvcmRzLiAgIHwgIHwgSWYgaW5kaXZpZHVhbC1sZXZlbCBkYXRhIGFyZSBub3QgYXZhaWxhYmxlLCB0aGUgaW5kaWNhdG9yIGNhbiBiZSByZXBvcnRlZCB1c2luZyBhZ2dyZWdhdGUgcHJvZ3JhbW1lIGRhdGEuIElmIGFnZ3JlZ2F0ZSBkYXRhIGFyZSB1c2VkIGFuZCBpdCBpcyBub3QgcG9zc2libGUgdG8gZXhjbHVkZSBpbmRpdmlkdWFscyB3aG8gYXJlIHRlc3RlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QsIHRoZSB0ZXN0aW5nIGNvdmVyYWdlIGVzdGltYXRlcyB3aWxsIGJlIGluZmxhdGVkLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQ3MExvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQppbmNsdWRlIEhJVkVsZW1lbnRzIGNhbGxlZCBIRQppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKaW5jbHVkZSBISVZDb25maWcgY2FsbGVkIENvbmZpZwoKLy8gSW5kaWNhdG9yIERlZmluaXRpb24KcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGU+IGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjMtMDEtMDEsIEAyMDIzLTAxLTMwXQoKY29udGV4dCBQYXRpZW50Ci8qIFBvcHVsYXRpb25zICovCgovKgogKkluaXRpYWwgUG9wdWxhdGlvbgogKi8KCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICB0cnVlCgovKioKICogTnVtZXJhdG9yCiAqIAogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgcGVvcGxlIGF0dGVuZGluZyBISVYgcHJldmVudGlvbiBzZXJ2aWNlcyB0ZXN0ZWQgZm9yIGdvbm9ycmhvZWEgKHVzaW5nIGEgbW9sZWN1bGFyIHRlc3QsIGN1bHR1cmUgb3IgUE9DIHRlc3QpIHwgCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkdvbm9ycmhvZWEgdGVzdCBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKi8KCmRlZmluZSAiTnVtZXJhdG9yIjoKICBISUUuIkdvbm9ycmhvZWEgdGVzdCBkYXRlIEIuREUyNTUiCgoKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IE51bWJlciBvZiBwZW9wbGUgYXR0ZW5kaW5nIEhJViBwcmV2ZW50aW9uIHNlcnZpY2VzIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJEYXRlIGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICBISUUuIkRhdGUgYWNjZXNzZWQgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIgogICAgCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCi8qCiAqIERpc2FnZ3JlZ2F0b3JzCiAqLwoKZGVmaW5lICJBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciI6CglISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIgoKZGVmaW5lICJBZ2UgU3RyYXRpZmllciI6CglISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIDIiCgpkZWZpbmUgIkdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgoKZGVmaW5lICJwYXRpZW50R3JvdXBzIFN0cmF0aWZpZXIiOgoJSElFLiJwYXRpZW50R3JvdXBzIgoKZGVmaW5lICJISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iOgoJSElFLiJISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iCgpkZWZpbmUgIkhJViBTdGF0dXMiOgogIEhJRS4iSElWIFN0YXR1cyBTdHJhdGlmaWVyIgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiI6CiBISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIi5jb2RlIAogICsgJzonICsgSElFLiJCeSBBZ2UgU3RyYXRpZmllciAyIgorICc6JyArIEhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKKyBDb21iaW5lKEhJRS5wYXRpZW50R3JvdXBzLCAnOicpCisgQ29tYmluZShISUUuIkhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiIsICc6JykKKyAnOicgKyBISUUuIkhJViBTdGF0dXMgU3RyYXRpZmllciIuY29kZSAKCi8vbmVlZCB0byBhZGQgRGlhZ25vc3RpYyB0ZXN0IHVzZWQgYW5kIGFuYXRvbWljIHNpdGUgc2FtcGxlZCA="
    },
    {
      "contentType" : "application/elm+xml",
      "data" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iTm9uZSIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1JbmZvIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub1N0cmluZyBoYXMgbXVsdGlwbGUgb3ZlcmxvYWRzIGFuZCBkdWUgdG8gdGhlIFNpZ25hdHVyZUxldmVsIHNldHRpbmcgKE5vbmUpLCB0aGUgb3ZlcmxvYWQgc2lnbmF0dXJlIGlzIG5vdCBiZWluZyBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LiBUaGlzIG1heSByZXN1bHQgaW4gYW1iaWd1b3VzIGZ1bmN0aW9uIHJlc29sdXRpb24gYXQgcnVudGltZSwgY29uc2lkZXIgc2V0dGluZyB0aGUgU2lnbmF0dXJlTGV2ZWwgdG8gT3ZlcmxvYWRzIG9yIEFsbCB0byBlbnN1cmUgdGhhdCB0aGUgb3V0cHV0IGluY2x1ZGVzIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gc3VwcG9ydCBjb3JyZWN0IG92ZXJsb2FkIHNlbGVjdGlvbiBhdCBydW50aW1lLiIgZXJyb3JUeXBlPSJzZW1hbnRpYyIgZXJyb3JTZXZlcml0eT0id2FybmluZyIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1FcnJvciIvPgogICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgPGE6cyByPSI2OSI+CiAgICAgICAgIDxhOnM+LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNzAgTG9naWMKICogUmVmIE5vOiBTVEkuNEEKICogU2hvcnQgTmFtZTogR29ub3JyaG9lYSB0ZXN0aW5nIGNvdmVyYWdlLCBISVYgcHJldmVudGlvbiBzZXJ2aWNlcwogKgogKiBEZWZpbml0aW9uOiAlIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgdGVzdGVkIGZvciBnb25vcnJob2VhIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKgogKiBOdW1lcmF0b3I6IE51bWJlciBvZiBwZW9wbGUgYXR0ZW5kaW5nIEhJViBwcmV2ZW50aW9uIHNlcnZpY2VzIHRlc3RlZCBmb3IgZ29ub3JyaG9lYSAodXNpbmcgYSBtb2xlY3VsYXIgdGVzdCwgY3VsdHVyZSBvciBQT0MgdGVzdCkgfCAKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggJnF1b3Q7R29ub3JyaG9lYSB0ZXN0IGRhdGUmcXVvdDsgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogTnVtYmVyIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIERlbm9taW5hdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggJnF1b3Q7RGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24mcXVvdDsgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QKICogRGVub21pbmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERpc2FnZ3JlZ2F0aW9uczoKICog4oCiwqBHZW5kZXIgKGZlbWFsZSwgbWFsZSwgb3RoZXIqKSAKICogIOKAosKgQWdlICgxNeKAkzE5LCAyMOKAkzI0LCAyNeKAkzI5LCAzMOKAkzQ5LCA1MCsgeWVhcnMpIAogKiAg4oCiwqBLZXkgcG9wdWxhdGlvbnMgKG1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4sIHBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzLCBwZW9wbGUgd2hvIGluamVjdCBkcnVncywgc2V4IHdvcmtlcnMsIHRyYW5zIGFuZCBnZW5kZXIgZGl2ZXJzZSBwZW9wbGUpKiogCiAqICDigKLCoEhJViBzdGF0dXMgKEhJVi1wb3NpdGl2ZSwgSElWLW5lZ2F0aXZlLCB1bmtub3duIHN0YXR1cykgCiAqICDigKLCoEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiAoZm9yIGV4YW1wbGUsIFByRVApIAogKiAg4oCiwqBEaWFnbm9zdGljIHRlc3QgdXNlZCBhbmQgYW5hdG9taWMgc2l0ZSBzYW1wbGVkIAogKiAg4oCiwqBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBHZW5kZXIgfCBBZ2UgfCBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSB8IEhJViBzdGF0dXMgfCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gfCBUeXBlIG9mIHNwZWNpbWVuIHwgTmVpc3NlcmlhIGdvbm9ycmhvZWFlIHRlc3QgdHlwZQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBEYXRlIGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiAKICogIEdvbm9ycmhvZWEgdGVzdCBkYXRlCiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQS5ERTE3OiBBZ2UgfCBDYWxjdWxhdGVkIGFnZSAobnVtYmVyIG9mIHllYXJzKSBvZiB0aGUgY2xpZW50IGJhc2VkIG9uIGRhdGUgb2YgYmlydGgKICogSElWLkEuREUxODogR2VuZGVyKiB8IEdlbmRlciBvZiB0aGUgY2xpZW50KgogKiBISVYuQS5ERTE5OiBGZW1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBmZW1hbGUKICogSElWLkEuREUyMDogTWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIG1hbGUKICogSElWLkEuREUyMTogVHJhbnNnZW5kZXIgbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIG1hbGUKICogSElWLkEuREUyMjogVHJhbnNnZW5kZXIgZmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnNnZW5kZXIgZmVtYWxlCiAqIEhJVi5BLkRFMjM6IE90aGVyIHwgQWRkaXRpb25hbCBjYXRlZ29yeQogKiBISVYuQi5ERTUwOiBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSogfCBUaGUgdHlwZSBvZiBrZXkgcG9wdWxhdGlvbiB0aGF0IHRoZSBjbGllbnQgaXMgaW5jbHVkZWQgaW4KICogSElWLkIuREU1MTogU2V4IHdvcmtlciB8IENsaWVudCBpcyBhIHNleCB3b3JrZXIKICogSElWLkIuREU1MjogTWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiB8IENsaWVudCBpcyBhIG1hbiB3aG8gaGFzIHNleCB3aXRoIG1lbgogKiBISVYuQi5ERTUzOiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5CLkRFNTQ6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgQ2xpZW50IGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5CLkRFNTU6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzIHwgQ2xpZW50IGxpdmVzIGluIGEgcHJpc29uIG9yIGFub3RoZXIgY2xvc2VkIHNldHRpbmcKICogSElWLkIuREUxMTU6IEhJViBzdGF0dXMgfCBISVYgc3RhdHVzIHJlcG9ydGVkIGFmdGVyIGFwcGx5aW5nIHRoZSBuYXRpb25hbCBISVYgdGVzdGluZyBhbGdvcml0aG0uIE5vIHNpbmdsZSBISVYgdGVzdCBjYW4gcHJvdmlkZSBhbiBISVYtcG9zaXRpdmUgZGlhZ25vc2lzLgogKiBISVYuQi5ERTExNjogSElWLXBvc2l0aXZlIHwgQ2xpZW50IGlzIEhJVi1wb3NpdGl2ZQogKiBISVYuQi5ERTExNzogSElWLW5lZ2F0aXZlIHwgQ2xpZW50IGlzIEhJVi1uZWdhdGl2ZQogKiBISVYuQi5ERTExODogVW5rbm93biB8IENsaWVudCBoYXMgdW5rbm93biBISVYgc3RhdHVzCiAqIEhJVi5CLkRFMjU1OiBHb25vcnJob2VhIHRlc3QgZGF0ZSB8IERhdGUgb2YgR29ub3JyaG9lYSB0ZXN0CiAqIEhJVi5CLkRFMjYxOiBUeXBlIG9mIHNwZWNpbWVuIHwgVHlwZSBvZiBzcGVjaW1lbiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkIuREUyNjI6IEJsb29kIHwgQmxvb2Qgc3BlY2ltZW4gdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5CLkRFMjYzOiBVcmluZSB8IFVyaW5lIHNwZWNpbWVuIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuQi5ERTI2NDogQ2VydmljYWwgb3IgdmFnaW5hbCBzd2FiIHwgQ2VydmljYWwgb3IgdmFnaW5hbCBzd2FiIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuQi5ERTI2NTogVXJldGhyYWwgb3IgcGVuaWxlIHN3YWIgfCBVcmV0aHJhbCBvciBwZW5pbGUgc3dhYiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkIuREUyNjY6IFJlY3RhbCBzd2FiIHwgUmVjdGFsIHN3YWIgdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5CLkRFMjY3OiBPdGhlciB8IE90aGVyIHNwZWNpbWVuIHR5cGUgdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5CLkRFMjc2OiBOZWlzc2VyaWEgZ29ub3JyaG9lYWUgdGVzdCB0eXBlIHwgVHlwZSBvZiBkaWFnbm9zdGljIHRlc3QgdXNlZCBmb3IgTmVpc3NlcmlhIGdvbm9ycmhvZWFlCiAqIEhJVi5CLkRFMjc3OiBOQUFUIHwgTnVjbGVpYyBBY2lkIEFtcGxpZmljYXRpb24gVGVzdCAoTkFBVCkgdXNlZAogKiBISVYuQi5ERTI3ODogUE9DIFRlc3QgfCBQb2ludC1vZi1jYXJlIChQT0MpIHRlc3QgdXNlZAogKiBISVYuQi5ERTI3OTogQ3VsdHVyZSB8IEN1bHR1cmUgdGVzdCB1c2VkCiAqIEhJVi5CLkRFMjgwOiBNaWNyb3Njb3B5IHwgTWljcm9zY29weSB0ZXN0IHVzZWQKICogSElWLkIuREUyODE6IE90aGVyIHwgT3RoZXIgdHlwZSBvZiB0ZXN0IHVzZWQKICogSElWLkQuREU4MDc6IEdvbm9ycmhvZWEgdGVzdCBkYXRlIHwgRGF0ZSBvZiBHb25vcnJob2VhIHRlc3QKICogSElWLkQuREU4MTM6IFR5cGUgb2Ygc3BlY2ltZW4gfCBUeXBlIG9mIHNwZWNpbWVuIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuRC5ERTgxNDogQmxvb2QgfCBCbG9vZCBzcGVjaW1lbiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkQuREU4MTU6IFVyaW5lIHwgVXJpbmUgc3BlY2ltZW4gdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5ELkRFODE2OiBDZXJ2aWNhbCBvciB2YWdpbmFsIHN3YWIgfCBDZXJ2aWNhbCBvciB2YWdpbmFsIHN3YWIgdG8gYmUgY29sbGVjdGVkCiAqIEhJVi5ELkRFODE3OiBVcmV0aHJhbCBvciBwZW5pbGUgc3dhYiB8IFVyZXRocmFsIG9yIHBlbmlsZSBzd2FiIHRvIGJlIGNvbGxlY3RlZAogKiBISVYuRC5ERTgxODogUmVjdGFsIHN3YWIgfCBSZWN0YWwgc3dhYiB0byBiZSBjb2xsZWN0ZWQKICogSElWLkQuREU4MTk6IE90aGVyIHwgT3RoZXIgc3BlY2ltZW4gdHlwZSB0byBiZSBjb2xsZWN0ZWQKICogSElWLkQuREU4Mjg6IE5laXNzZXJpYSBnb25vcnJob2VhZSB0ZXN0IHR5cGUgfCBUeXBlIG9mIGRpYWdub3N0aWMgdGVzdCB1c2VkIGZvciBOZWlzc2VyaWEgZ29ub3JyaG9lYWUKICogSElWLkQuREU4Mjk6IE5BQVQgfCBOdWNsZWljIEFjaWQgQW1wbGlmaWNhdGlvbiBUZXN0IChOQUFUKSB1c2VkCiAqIEhJVi5ELkRFODMwOiBQT0MgVGVzdCB8IFBvaW50LW9mLWNhcmUgKFBPQykgdGVzdCB1c2VkCiAqIEhJVi5ELkRFODMxOiBDdWx0dXJlIHwgQ3VsdHVyZSB0ZXN0IHVzZWQKICogSElWLkQuREU4MzI6IE1pY3Jvc2NvcHkgfCBNaWNyb3Njb3B5IHRlc3QgdXNlZAogKiBISVYuRC5ERTgzMzogT3RoZXIgfCBPdGhlciB0eXBlIG9mIHRlc3QgdXNlZAogKiBISVYuRS5ERTExNDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgaW5mYW50J3MgbW90aGVyIGlzIGluY2x1ZGVkIGluCiAqIEhJVi5FLkRFMTE1OiBTZXggd29ya2VyIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgc2V4IHdvcmtlcgogKiBISVYuRS5ERTExNjogUGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MgfCBJbmZhbnQncyBtb3RoZXIgaXMgYSBwZXJzb24gd2hvIGluamVjdHMgZHJ1Z3MKICogSElWLkUuREUxMTc6IFRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZSBwZW9wbGUgfCBJbmZhbnQncyBtb3RoZXIgaWRlbnRpZmllcyBhcyB0cmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UKICogSElWLkUuREUxMTg6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmcgfCBJbmZhbnQncyBtb3RoZXIgaXMgaW4gYSBwcmlzb24gb3IgY2xvc2VkIHNldHRpbmcKICogSElWLlBSVi5ERTI6IEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiB8IEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiB0aGF0IGNsaWVudCBhY2Nlc3NlZAogKiBISVYuUFJWLkRFMzogUHJFUCBzZXJ2aWNlIHwgQ2xpZW50IGFjY2Vzc2VkIFByRVAgc2VydmljZXMKICogSElWLlBSVi5ERTQ6IE9BTVQgfCBDbGllbnQgYWNjZXNzZWQgb3Bpb2lkIGFnb25pc3QgbWFpbnRlbmFuY2UgdHJlYXRtZW50IChPQU1UKSBzZXJ2aWNlcwogKiBISVYuUFJWLkRFNTogTlNQIHwgQ2xpZW50IGFjY2Vzc2VkIG5lZWRsZS1zeXJpbmdlIHByb2dyYW1tZSAoTlNQKSBzZXJ2aWNlcwogKiBISVYuUFJWLkRFNjogU1RJIHNlcnZpY2VzIHwgQ2xpZW50IGFjY2Vzc2VkIHNleHVhbGx5IHRyYW5zbWl0dGVkIGluZmVjdGlvbiAoU1RJKSBzZXJ2aWNlcwogKiBISVYuUFJWLkRFNzogVk1NQyB8IENsaWVudCBhY2Nlc3NlZCB2b2x1bnRhcnkgbWVkaWNhbCBtYWxlIGNpcmN1bWNpc2lvbiAoVk1NQykgc2VydmljZXMKICogSElWLlBSVi5ERTg6IE90aGVyIHwgQ2xpZW50IGFjY2Vzc2VkIG90aGVyIEhJViBwcmV2ZW50aW9uIHNlcnZpY2VzCiAqIEhJVi5QUlYuREUxMDogRGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gfCBEYXRlIHRoZSBjbGllbnQgYWNjZXNzZWQgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uCiAqCiAqIEFkZGl0aW9uYWwgQ29udGV4dAogKiAtIHdoYXQgaXQgbWVhc3VyZXM6IEE6ICUgb2YgcGVvcGxlIGF0dGVuZGluZyBISVYgcHJldmVudGlvbiBzZXJ2aWNlcyB3aG8gd2VyZSB0ZXN0ZWQgZm9yIGdvbm9ycmhvZWEgfCAobW9sZWN1bGFyIHRlc3QsIGN1bHR1cmUgb3IgUE9DIHRlc3QpIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCB8IEI6ICUgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG8gd2VyZSB0ZXN0ZWQgZm9yIGdvbm9ycmhvZWEgKHVzaW5nIGEgbW9sZWN1bGFyIHRlc3QsIGN1bHR1cmUgb3IgUE9DIHRlc3QpIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiAtIHJhdGlvbmFsZTog4oCiIEluZmVjdGlvbiB3aXRoIGFuIGFjdXRlIGJhY3RlcmlhbCBzZXh1YWxseSB0cmFuc21pdHRlZCBpbmZlY3Rpb24gc3VjaCBhcyBnb25vcnJob2VhIGlzIGEgbWFya2VyIG9mIHVucHJvdGVjdGVkIHNleHVhbCBpbnRlcmNvdXJzZSBhbmQgZmFjaWxpdGF0ZXMgSElWIHRyYW5zbWlzc2lvbiBhbmQgYWNxdWlzaXRpb24uIHwg4oCiwqBNZWFzdXJpbmcgdGhlIGJ1cmRlbiBvZiBnb25vcnJob2VhIGFtb25nIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgYW5kIGFtb25nIHBvcHVsYXRpb25zIGF0IHJpc2sgb2YgSElWIGNhbiBoZWxwIG5hdGlvbmFsIHBsYW5uZXJzIGRldGVybWluZSB0aGUgcmVzb3VyY2VzIG5lZWRlZCB0byBhZGRyZXNzIGJvdGggZGlzZWFzZXMuIHwg4oCiwqBUZXN0aW5nIGZvciBnb25vcnJob2VhIGlkZW50aWZpZXMgaW5kaXZpZHVhbHMgd2hvIHdvdWxkIGJlbmVmaXQgZnJvbSB0cmVhdG1lbnQuIHwg4oCiwqBUZXN0aW5nIGNvdmVyYWdlIG1lYXN1cmVzIHByb2dyZXNzIHRvd2FyZHMgc2NhbGluZyB1cCBzY3JlZW5pbmcvdGVzdGluZyBhbmQgY2FuIGJlIHVzZWQgdG8gYXNzZXNzIHdoZXRoZXIgbmF0aW9uYWwgc2NyZWVuaW5nIGd1aWRlbGluZXMgYXJlIGJlaW5nIGZvbGxvd2VkLgogKiAtIG1ldGhvZDogSW5kaXZpZHVhbC1sZXZlbCBkYXRhIG9idGFpbmVkIGZyb20gcHJvZ3JhbW1lIHJlY29yZHMuICAgfCAgfCBJZiBpbmRpdmlkdWFsLWxldmVsIGRhdGEgYXJlIG5vdCBhdmFpbGFibGUsIHRoZSBpbmRpY2F0b3IgY2FuIGJlIHJlcG9ydGVkIHVzaW5nIGFnZ3JlZ2F0ZSBwcm9ncmFtbWUgZGF0YS4gSWYgYWdncmVnYXRlIGRhdGEgYXJlIHVzZWQgYW5kIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBleGNsdWRlIGluZGl2aWR1YWxzIHdobyBhcmUgdGVzdGVkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCwgdGhlIHRlc3RpbmcgY292ZXJhZ2UgZXN0aW1hdGVzIHdpbGwgYmUgaW5mbGF0ZWQuCiAqIAogKiBTdWdnZXN0ZWQgU2NvcmluZyBNZXRob2Q6IHByb3BvcnRpb24gfCBodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NxZm1lYXN1cmVzL1N0cnVjdHVyZURlZmluaXRpb24vcHJvcG9ydGlvbi1tZWFzdXJlLWNxZm0KICovCgpsaWJyYXJ5IEhJVklORDcwTG9naWM8L2E6cz4KICAgICAgPC9hOnM+CiAgIDwvYW5ub3RhdGlvbj4KICAgPGlkZW50aWZpZXIgaWQ9IkhJVklORDcwTG9naWMiIHN5c3RlbT0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2Ii8+CiAgIDxzY2hlbWFJZGVudGlmaWVyIGlkPSJ1cm46aGw3LW9yZzplbG0iIHZlcnNpb249InIxIi8+CiAgIDx1c2luZ3M+CiAgICAgIDxkZWYgbG9jYWxJZGVudGlmaWVyPSJTeXN0ZW0iIHVyaT0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIi8+CiAgICAgIDxkZWYgbG9jYWxJZD0iMSIgbG9jYXRvcj0iMTA0OjEtMTA0OjI2IiBsb2NhbElkZW50aWZpZXI9IkZISVIiIHVyaT0iaHR0cDovL2hsNy5vcmcvZmhpciIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxIj4KICAgICAgICAgICAgICAgPGE6cz4vLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gdmVyc2lvbiAnNC4wLjEnPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICA8L3VzaW5ncz4KICAgPGluY2x1ZGVzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIiIGxvY2F0b3I9IjEwNjoxLTEwNjo0NCIgbG9jYWxJZGVudGlmaWVyPSJISUMiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9ISVZDb21tb24iIHZlcnNpb249IjAuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMiI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5ISVZDb21tb248L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjMiIGxvY2F0b3I9IjEwNzoxLTEwNzozNSIgbG9jYWxJZGVudGlmaWVyPSJGSElSSGVscGVycyIgcGF0aD0iaHR0cDovL2hsNy5vcmcvZmhpci9GSElSSGVscGVycyIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzIj4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkZISVJIZWxwZXJzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMSc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iNCIgbG9jYXRvcj0iMTA5OjEtMTA5OjI5IiBsb2NhbElkZW50aWZpZXI9IldDb20iIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9XSE9Db21tb24iPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSI0Ij4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPldIT0NvbW1vbjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gY2FsbGVkIFdDb208L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iNSIgbG9jYXRvcj0iMTEwOjEtMTEwOjI5IiBsb2NhbElkZW50aWZpZXI9IkhFIiBwYXRoPSJodHRwOi8vc21hcnQud2hvLmludC9oaXYvSElWRWxlbWVudHMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSI1Ij4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkhJVkVsZW1lbnRzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgSEU8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iNiIgbG9jYXRvcj0iMTExOjEtMTExOjM5IiBsb2NhbElkZW50aWZpZXI9IkhJRSIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2L0hJVkluZGljYXRvckVsZW1lbnRzIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNiI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5ISVZJbmRpY2F0b3JFbGVtZW50czwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gY2FsbGVkIEhJRTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI3IiBsb2NhdG9yPSIxMTI6MS0xMTI6MzEiIGxvY2FsSWRlbnRpZmllcj0iQ29uZmlnIiBwYXRoPSJodHRwOi8vc21hcnQud2hvLmludC9oaXYvSElWQ29uZmlnIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNyI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5ISVZDb25maWc8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGNhbGxlZCBDb25maWc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgIDwvaW5jbHVkZXM+CiAgIDxwYXJhbWV0ZXJzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEzIiBsb2NhdG9yPSIxMTU6MS0xMTU6ODgiIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEzIj4KICAgICAgICAgICAgICAgPGE6cz4vLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgJnF1b3Q7TWVhc3VyZW1lbnQgUGVyaW9kJnF1b3Q7IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjEyIj4KICAgICAgICAgICAgICAgICAgPGE6cz5JbnRlcnZhbCZsdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+RGF0ZTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4+PC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBkZWZhdWx0IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjEwIj4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4Ij5JbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZGVmYXVsdCBsb2NhbElkPSIxMCIgbG9jYXRvcj0iMTE1OjU1LTExNTo4OCIgbG93Q2xvc2VkPSJ0cnVlIiBoaWdoQ2xvc2VkPSJ0cnVlIiB4c2k6dHlwZT0iSW50ZXJ2YWwiPgogICAgICAgICAgICA8bG93IGxvY2FsSWQ9IjgiIGxvY2F0b3I9IjExNTo2NC0xMTU6NzQiIHhzaTp0eXBlPSJEYXRlIj4KICAgICAgICAgICAgICAgPHllYXIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIyMDIzIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8bW9udGggdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8ZGF5IHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgPC9sb3c+CiAgICAgICAgICAgIDxoaWdoIGxvY2FsSWQ9IjkiIGxvY2F0b3I9IjExNTo3Ny0xMTU6ODciIHhzaTp0eXBlPSJEYXRlIj4KICAgICAgICAgICAgICAgPHllYXIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIyMDIzIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8bW9udGggdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8ZGF5IHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMzAiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgIDwvaGlnaD4KICAgICAgICAgPC9kZWZhdWx0PgogICAgICAgICA8cGFyYW1ldGVyVHlwZVNwZWNpZmllciBsb2NhbElkPSIxMiIgbG9jYXRvcj0iMTE1OjMyLTExNTo0NSIgeHNpOnR5cGU9IkludGVydmFsVHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgIDxwb2ludFR5cGUgbG9jYWxJZD0iMTEiIGxvY2F0b3I9IjExNTo0MS0xMTU6NDQiIG5hbWU9InQ6RGF0ZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L3BhcmFtZXRlclR5cGVTcGVjaWZpZXI+CiAgICAgIDwvZGVmPgogICA8L3BhcmFtZXRlcnM+CiAgIDxjb250ZXh0cz4KICAgICAgPGRlZiBsb2NhdG9yPSIxMTc6MS0xMTc6MTUiIG5hbWU9IlBhdGllbnQiLz4KICAgPC9jb250ZXh0cz4KICAgPHN0YXRlbWVudHM+CiAgICAgIDxkZWYgbG9jYXRvcj0iMTE3OjEtMTE3OjE1IiBuYW1lPSJQYXRpZW50IiBjb250ZXh0PSJQYXRpZW50Ij4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlNpbmdsZXRvbkZyb20iPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhdG9yPSIxMTc6MS0xMTc6MTUiIGRhdGFUeXBlPSJmaGlyOlBhdGllbnQiIHRlbXBsYXRlSWQ9Imh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9QYXRpZW50IiB4c2k6dHlwZT0iUmV0cmlldmUiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIxNSIgbG9jYXRvcj0iMTI0OjEtMTI1OjYiIG5hbWU9IkluaXRpYWwgUG9wdWxhdGlvbiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjE1Ij4KICAgICAgICAgICAgICAgPGE6cyByPSIxNCI+LyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICZxdW90O0luaXRpYWwgUG9wdWxhdGlvbiZxdW90OzoKICB0cnVlPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjE0IiBsb2NhdG9yPSIxMjU6My0xMjU6NiIgdmFsdWVUeXBlPSJ0OkJvb2xlYW4iIHZhbHVlPSJ0cnVlIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIxOCIgbG9jYXRvcj0iMTM0OjEtMTM1OjM2IiBuYW1lPSJOdW1lcmF0b3IiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxOCI+CiAgICAgICAgICAgICAgIDxhOnM+LyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgdGVzdGVkIGZvciBnb25vcnJob2VhICh1c2luZyBhIG1vbGVjdWxhciB0ZXN0LCBjdWx0dXJlIG9yIFBPQyB0ZXN0KSB8IAogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICZxdW90O0dvbm9ycmhvZWEgdGVzdCBkYXRlJnF1b3Q7IGluIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqLwoKZGVmaW5lICZxdW90O051bWVyYXRvciZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIxNyI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTYiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTciPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0dvbm9ycmhvZWEgdGVzdCBkYXRlIEIuREUyNTUmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxNyIgbG9jYXRvcj0iMTM1OjMtMTM1OjM2IiBuYW1lPSJHb25vcnJob2VhIHRlc3QgZGF0ZSBCLkRFMjU1IiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyMSIgbG9jYXRvcj0iMTQ1OjEtMTQ2OjQ5IiBuYW1lPSJEZW5vbWluYXRvciIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjIxIj4KICAgICAgICAgICAgICAgPGE6cz4vKioKICogRGVub21pbmF0b3IKICoKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggJnF1b3Q7RGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24mcXVvdDsgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QKICovCgpkZWZpbmUgJnF1b3Q7RGVub21pbmF0b3ImcXVvdDs6CiAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjAiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjE5Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIwIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtEYXRlIGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjIwIiBsb2NhdG9yPSIxNDY6My0xNDY6NDkiIG5hbWU9IkRhdGUgYWNjZXNzZWQgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyNCIgbG9jYXRvcj0iMTU1OjEtMTU2OjQyIiBuYW1lPSJBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjI0Ij4KICAgICAgICAgICAgICAgPGE6cz4vKiBlbmQgUG9wdWxhdGlvbnMgKi8KCi8qCiAqIERpc2FnZ3JlZ2F0b3JzCiAqLwoKZGVmaW5lICZxdW90O0FkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyJnF1b3Q7OgoJPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjMiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtCeSBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjIzIiBsb2NhdG9yPSIxNTY6Mi0xNTY6NDIiIG5hbWU9IkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyNyIgbG9jYXRvcj0iMTU4OjEtMTU5OjI2IiBuYW1lPSJBZ2UgU3RyYXRpZmllciIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjI3Ij4KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgJnF1b3Q7QWdlIFN0cmF0aWZpZXImcXVvdDs6Cgk8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyNiI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjUiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjYiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0J5IEFnZSBTdHJhdGlmaWVyIDImcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNiIgbG9jYXRvcj0iMTU5OjItMTU5OjI2IiBuYW1lPSJCeSBBZ2UgU3RyYXRpZmllciAyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIzMCIgbG9jYXRvcj0iMTYxOjEtMTYyOjM4IiBuYW1lPSJHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMzAiPgogICAgICAgICAgICAgICA8YTpzPmRlZmluZSAmcXVvdDtHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyJnF1b3Q7OgoJPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjkiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI4Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI5Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjkiIGxvY2F0b3I9IjE2MjoyLTE2MjozOCIgbmFtZT0iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIgbGlicmFyeU5hbWU9IkhJRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMzMiIGxvY2F0b3I9IjE2NDoxLTE2NToyMCIgbmFtZT0icGF0aWVudEdyb3VwcyBTdHJhdGlmaWVyIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMzMiPgogICAgICAgICAgICAgICA8YTpzPmRlZmluZSAmcXVvdDtwYXRpZW50R3JvdXBzIFN0cmF0aWZpZXImcXVvdDs6Cgk8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIzMiI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzEiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzIiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O3BhdGllbnRHcm91cHMmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzMiIgbG9jYXRvcj0iMTY1OjItMTY1OjIwIiBuYW1lPSJwYXRpZW50R3JvdXBzIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIzNiIgbG9jYXRvcj0iMTY3OjEtMTY4OjM0IiBuYW1lPSJISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzNiI+CiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lICZxdW90O0hJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiZxdW90OzoKCTwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjM1Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7SElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzUiIGxvY2F0b3I9IjE2ODoyLTE2ODozNCIgbmFtZT0iSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIzOSIgbG9jYXRvcj0iMTcwOjEtMTcxOjI5IiBuYW1lPSJISVYgU3RhdHVzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMzkiPgogICAgICAgICAgICAgICA8YTpzPmRlZmluZSAmcXVvdDtISVYgU3RhdHVzJnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjM4Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7SElWIFN0YXR1cyBTdHJhdGlmaWVyJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzgiIGxvY2F0b3I9IjE3MTozLTE3MToyOSIgbmFtZT0iSElWIFN0YXR1cyBTdHJhdGlmaWVyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI2OSIgbG9jYXRvcj0iMTczOjEtMTc5OjQwIiBuYW1lPSJTdHJhdGlmaWNhdGlvbiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjY5Ij4KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgJnF1b3Q7U3RyYXRpZmljYXRpb24mcXVvdDs6CiA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI2OCI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjQiPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0J5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmNvZGU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiAKICArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nOic8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7QnkgQWdlIFN0cmF0aWZpZXIgMiZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgorIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nOic8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7QnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgorIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5Db21iaW5lKDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cGF0aWVudEdyb3VwczwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JzonPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgorIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5Db21iaW5lKDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1OCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1OSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7SElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4sIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nOic8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+CisgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjMiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPic6JzwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+ICsgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjciPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7SElWIFN0YXR1cyBTdHJhdGlmaWVyJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjciPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmNvZGU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjgiIGxvY2F0b3I9IjE3NDoyLTE3OTo0MCIgeHNpOnR5cGU9IkNvbmNhdGVuYXRlIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNjQiIGxvY2F0b3I9IjE3NDoyLTE3OTo1IiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2MiIgbG9jYXRvcj0iMTc0OjItMTc4OjQ5IiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1NyIgbG9jYXRvcj0iMTc0OjItMTc3OjMzIiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1MiIgbG9jYXRvcj0iMTc0OjItMTc2OjQ1IiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI0OSIgbG9jYXRvcj0iMTc0OjItMTc2OjUiIHhzaTp0eXBlPSJDb25jYXRlbmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQ3IiBsb2NhdG9yPSIxNzQ6Mi0xNzU6MzUiIHhzaTp0eXBlPSJDb25jYXRlbmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQ0IiBsb2NhdG9yPSIxNzQ6Mi0xNzU6NyIgeHNpOnR5cGU9IkNvbmNhdGVuYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDIiIGxvY2F0b3I9IjE3NDoyLTE3NDo0NyIgcGF0aD0iY29kZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0MSIgbG9jYXRvcj0iMTc0OjItMTc0OjQyIiBuYW1lPSJCeSBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciIgbGlicmFyeU5hbWU9IkhJRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI0MyIgbG9jYXRvcj0iMTc1OjUtMTc1OjciIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSI6IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQ2IiBsb2NhdG9yPSIxNzU6MTEtMTc1OjM1IiBuYW1lPSJCeSBBZ2UgU3RyYXRpZmllciAyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQ4IiBsb2NhdG9yPSIxNzY6My0xNzY6NSIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IjoiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNTEiIGxvY2F0b3I9IjE3Njo5LTE3Njo0NSIgbmFtZT0iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIgbGlicmFyeU5hbWU9IkhJRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjU2IiBsb2NhdG9yPSIxNzc6My0xNzc6MzMiIHhzaTp0eXBlPSJDb21iaW5lIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1NCIgbG9jYXRvcj0iMTc3OjExLTE3NzoyNyIgbmFtZT0icGF0aWVudEdyb3VwcyIgbGlicmFyeU5hbWU9IkhJRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlcGFyYXRvciBsb2NhbElkPSI1NSIgbG9jYXRvcj0iMTc3OjMwLTE3NzozMiIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IjoiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2MSIgbG9jYXRvcj0iMTc4OjMtMTc4OjQ5IiB4c2k6dHlwZT0iQ29tYmluZSI+CiAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTkiIGxvY2F0b3I9IjE3ODoxMS0xNzg6NDMiIG5hbWU9IkhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiIgbGlicmFyeU5hbWU9IkhJRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPHNlcGFyYXRvciBsb2NhbElkPSI2MCIgbG9jYXRvcj0iMTc4OjQ2LTE3ODo0OCIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IjoiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2MyIgbG9jYXRvcj0iMTc5OjMtMTc5OjUiIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSI6IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjY3IiBsb2NhdG9yPSIxNzk6OS0xNzk6NDAiIHBhdGg9ImNvZGUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjYiIGxvY2F0b3I9IjE3OTo5LTE3OTozNSIgbmFtZT0iSElWIFN0YXR1cyBTdHJhdGlmaWVyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgIDwvc3RhdGVtZW50cz4KPC9saWJyYXJ5Pgo="
    }
  ]
}