From a4bd0f41751eff648ebf9f0cb683fb63ffdb00e8 Mon Sep 17 00:00:00 2001
From: Lieven Clement
Date: Wed, 16 Oct 2024 14:34:47 +0200
Subject: [PATCH] update twosample and wilcoxon with movies
---
05-statisticalInference-twosampleT.Rmd | 2 ++
...ametericStatistics-WilcoxonMannWithney.Rmd | 1 +
docs/05-statisticalInference-twosampleT.html | 4 +++-
.../figure-html/unnamed-chunk-2-1.png | Bin 47350 -> 47539 bytes
...metericStatistics-WilcoxonMannWithney.html | 4 +++-
5 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/05-statisticalInference-twosampleT.Rmd b/05-statisticalInference-twosampleT.Rmd
index 622713f2..8c07590d 100644
--- a/05-statisticalInference-twosampleT.Rmd
+++ b/05-statisticalInference-twosampleT.Rmd
@@ -14,6 +14,8 @@ knitr::opts_chunk$set(
library(tidyverse)
```
+
+
# Smelly armpit example
- Smelly armpits are not caused by sweat, itself. The smell is caused by specific micro-organisms belonging to the group of *Corynebacterium spp.* that metabolise sweat.
diff --git a/09-NonparametericStatistics-WilcoxonMannWithney.Rmd b/09-NonparametericStatistics-WilcoxonMannWithney.Rmd
index fedf6523..e2d4ba2b 100644
--- a/09-NonparametericStatistics-WilcoxonMannWithney.Rmd
+++ b/09-NonparametericStatistics-WilcoxonMannWithney.Rmd
@@ -16,6 +16,7 @@ library(Rmisc)
set.seed(140)
```
+
# Introduction
diff --git a/docs/05-statisticalInference-twosampleT.html b/docs/05-statisticalInference-twosampleT.html
index 38cdb8a9..1cc8cf40 100644
--- a/docs/05-statisticalInference-twosampleT.html
+++ b/docs/05-statisticalInference-twosampleT.html
@@ -554,6 +554,8 @@ statOmics, Ghent University (
+
Smelly armpit example
@@ -777,7 +779,7 @@ How to report?
An effect can be extremely statistically significant, but scientifically irrelevant. With a CI you will spot this.
-LS0tCnRpdGxlOiAiNS4gU3RhdGlzdGljYWwgSW5mZXJlbmNlOiBUd28tc2FtcGxlIHQtdGVzdCIKYXV0aG9yOiAiTGlldmVuIENsZW1lbnQiCmRhdGU6ICJzdGF0T21pY3MsIEdoZW50IFVuaXZlcnNpdHkgKGh0dHBzOi8vc3RhdG9taWNzLmdpdGh1Yi5pbykiCi0tLQoKPGEgcmVsPSJsaWNlbnNlIiBocmVmPSJodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMtc2EvNC4wIj48aW1nIGFsdD0iQ3JlYXRpdmUgQ29tbW9ucyBMaWNlbnNlIiBzdHlsZT0iYm9yZGVyLXdpZHRoOjAiIHNyYz0iaHR0cHM6Ly9pLmNyZWF0aXZlY29tbW9ucy5vcmcvbC9ieS1uYy1zYS80LjAvODh4MzEucG5nIiAvPjwvYT4KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFLCBjYWNoZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KAogIGluY2x1ZGUgPSBUUlVFLCBjb21tZW50ID0gTkEsIGVjaG8gPSBUUlVFLAogIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFLCBjYWNoZSA9IFRSVUUKKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKYGBgCgojIFNtZWxseSBhcm1waXQgZXhhbXBsZQoKLSBTbWVsbHkgYXJtcGl0cyBhcmUgbm90IGNhdXNlZCBieSBzd2VhdCwgaXRzZWxmLiBUaGUgc21lbGwgaXMgY2F1c2VkIGJ5IHNwZWNpZmljIG1pY3JvLW9yZ2FuaXNtcyBiZWxvbmdpbmcgdG8gdGhlIGdyb3VwIG9mICpDb3J5bmViYWN0ZXJpdW0gc3BwLiogdGhhdCBtZXRhYm9saXNlIHN3ZWF0LgpBbm90aGVyIGdyb3VwIG9mIGFidW5kYW50IGJhY3RlcmlhIGFyZSB0aGUgKlN0YXBoeWxvY29jY3VzIHNwcC4qLCB0aGVzZSBiYWN0ZXJpYSBkbyBub3QgbWV0YWJvbGlzZSBzd2VhdCBpbiBzbWVsbHkgY29tcG91bmRzLgoKLSBUaGUgQ01FVC1ncm91cCBhdCBHaGVudCBVbml2ZXJzaXR5IGRvZXMgcmVzZWFyY2ggdG8gb24gdHJhbnNwbGFudGluZyB0aGUgYXJtcGl0IG1pY3JvYmlvbWUgdG8gc2F2ZSBwZW9wbGUgd2l0aCBzbWVsbHkgYXJtcGl0cy4KCi0gUHJvcG9zZWQgVGhlcmFweToKICAJMS4gUmVtb3ZlIGFybXBpdC1taWNyb2Jpb21lIHdpdGggYW50aWJpb3RpY3MKICAgIDIuIEluZmx1ZW5jZSBhcm1waXQgbWljcm9iaW9tZSB3aXRoIG1pY3JvYmlhbCAgdHJhbnNwbGFudCAoaHR0cHM6Ly95b3V0dS5iZS85UklGeXFMWGRWdykKCi0gRXhwZXJpbWVudDoKCiAgICAtIDIwIHN1YmplY3RzIHdpdGggc21lbGx5IGFybXBpdHMgYXJlIGF0dHJpYnV0ZWQgdG8gb25lIG9mIHR3byB0cmVhdG1lbnQgZ3JvdXBzCiAgICAtIHBsYWNlYm8gKG9ubHkgYW50aWJpb3RpY3MpCiAgICAtIHRyYW5zcGxhbnQgKGFudGliaW90aWNhIGZvbGxvd2VkIGJ5IG1pY3JvYmlhbCB0cmFuc3BsYW50KS4KICAgIC0gVGhlIG1pY3JvYmlvbWUgaXMgc2FtcGxlZCA2IHdlZWtzIHVwb24gdGhlIHRyZWF0bWVudAogICAgLSBUaGUgcmVsYXRpdmUgYWJ1bmRhbmNlIG9mICpTdGFwaHlsb2NvY2N1cyBzcHAuKiBvbiAqQ29yeW5lYmFjdGVyaXVtIHNwcC4qICsgKlN0YXBoeWxvY29jY3VzIHNwcC4qIGluIHRoZSBtaWNyb2Jpb21lIGlzIG1lYXN1cmVkIHZpYSBER0dFICgqRGVuYXR1cmluZyBHcmFkaWVudCBHZWwgRWxlY3Ryb3Bob3Jlc2lzKikuCgotLS0KCiMjIEltcG9ydCB0aGUgZGF0YQoKYGBge3J9CmFwIDwtIHJlYWRfY3N2KCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vR1RQQi9QU0xTMjAvbWFzdGVyL2RhdGEvYXJtcGl0LmNzdiIpCmFwCmBgYAoKIyMgRGF0YSBleHBsb3JhdGlvbgoKV2UgcGxvdCB0aGUgZGlyZWN0IHJlbGF0aXZlIGFidW5kYW5jZXMgaW4gZnVuY3Rpb24gb2YgdGhlIHRyZWF0bWVudCBncm91cC4gV2l0aCB0aGUgZ2dwbG90MiBsaWJyYXJ5IHdlIGNhbiBlYXNpbHkgYnVpbGQgcGxvdHMgYnkgYWRkaW5nIGxheWVycy4KCmBgYHtyfQphcCAlPiUgZ2dwbG90KGFlcyh4ID0gdHJ0LCB5ID0gcmVsKSkgKwogIGdlb21fYm94cGxvdChvdXRsaWVyLnNoYXBlID0gTkEpICsKICBnZW9tX3BvaW50KHBvc2l0aW9uID0gImppdHRlciIpCgphcCAlPiUgZ2dwbG90KGFlcyhzYW1wbGUgPSByZWwpKSArCiAgZ2VvbV9xcSgpICsKICBnZW9tX3FxX2xpbmUoKSArCiAgZmFjZXRfd3JhcCh+dHJ0KQpgYGAKCi0tLQoKIyBUd28gc2FtcGxlIFQtdGVzdAojIyBOb3RhdGlvbgoKU3VwcG9zZSB0aGF0ICRZX3tpan0kIGlzIHRoZSByZXNwb25zZSBmb3Igc3ViamVjdHMgJGk9MSxcbGRvdHMsIG5faiQgZnJvbSBwb3B1bGF0aW9uICRqPTEsMiQuCgpVc2Ugb2YgdGhlIHRlcm0gKip0cmVhdG1lbnQqKiBvciAqKmdyb3VwKiogaW5zdGVhZCBvZiBwb3B1bGF0aW9uCgpIZXJlIHRoZSB0cmVhdG1lbnQgaXMgJGo9MSQgbWljcm9iaWFsIHRyYW5zcGxhbnQgdnMgJGo9MiQgcGxhY2Viby4KCldlIGFzc3VtZQoKJCRZX3tpan1cdGV4dHsgaS5pLmQuIH0gTihcbXVfaixcc2lnbWFeMilcO1w7XDtpPTEsXGxkb3RzLG5faVw7aj0xLDIuJCQKCk5vdGUsIHRoYXQgd2UgYXNzdW1lIGVxdWFsIHZhcmlhbmNlcyAqKmhvbW9zY2VkYXN0aWMqKgoKKFVuZXF1YWwgdmFyaWFuY2VzIGFyZSByZWZlcnJlZCB0byBhcyAgKipoZXRlcm9zY2VkYXN0aWMqKikKCi0tLQoKIyMgSHlwb3RoZXNlcwoKVGVzdCAkJCBIXzA6IFxtdV8xID0gXG11XzIgJCQKYWdhaW5zdAokJCAgSF8xOiBcbXVfMSBcbmVxIFxtdV8yIC4kJAoKJEhfMSQgaXMgYWdhaW4gdGhlIHJlc2VhcmNoIGh5cG90aGVzaXM6IHRoZSBhdmVyYWdlIHJlbGF0aXZlIGFidW5kYW5jZSBvZiAqU3RhcGh5bG9jb2NjdXMgc3BwLiogaXMgZGlmZmVyZW50IHVwb24gbWljcm9iaWFsIHRyYW5zcGxhbnQgdGhlbiB1cG9uIHBsYWNlYm8gdHJlYXRtZW50LgoKJEhfMCQgYW5kICRIXzEkIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBpbiB0ZXJtcyBvZiB0aGUgZWZmZWN0IHNpemUgYmV0d2VlbiB0aGUgdHdvIHRyZWF0bWVudHMsICRcbXVfMS1cbXVfMiQKJCRIXzA6IFxtdV8xLVxtdV8yID0gMCwkJAokJEhfMTogXG11XzEtXG11XzIgXG5lcSAwLiQkCgpXZSBjYW4gZXN0aW1hdGUgdGhlIGVmZmVjdCBzaXplIHVzaW5nIHRoZSBkaWZmZXJlbmNlIGluIHNhbXBsZSBtZWFuczoKJCRcaGF0IFxtdV8xLVxoYXQgXG11XzI9XGJhciBZXzEgLVxiYXIgWV8yLiQkCgotLS0KCiMjIFZhcmlhbmNlIGVzdGltYXRvcgoKVGhlIGV4cGVyaW1lbnRhbCB1bml0cyBhcmUgaW5kZXBlbmRlbnQgc28gdGhlIHNhbXBsZSBtZWFucyBhcmUgYWxzbyBpbmRlcGVuZGVudCBhbmQgdGhlIHZhcmlhbmNlIG9uIHRoZSBkaWZmZXJlbmNlIGlzCiQkXHRleHR7VmFyfV97XGJhciBZXzEgLVxiYXIgWV8yfT1cZnJhY3tcc2lnbWFeMn17bl8xfStcZnJhY3tcc2lnbWFeMn17bl8yfT1cc2lnbWFeMiBcbGVmdChcZnJhY3sxfXtuXzF9K1xmcmFjezF9e25fMn1ccmlnaHQpLiQkCgpBbmQgdGhlIHN0YW5kYXJkIGVycm9yIGJlY29tZXMKJCRcc2lnbWFfe1xiYXIgWV8xIC1cYmFyIFlfMn09XHNpZ21hXHNxcnR7XGZyYWN7MX17bl8xfStcZnJhY3sxfXtuXzJ9fS4kJAoKVGhlIHZhcmlhbmNlIGNhbiBiZSBlc3RpbWF0ZWQgd2l0aGluIGVhY2ggZ3JvdXAgdXNpbmcgdGhlIHNhbXBsZSB2YXJpYW5jZToKCiQkU18xXjIgPSBcZnJhY3sxfXtuXzEtMX1cc3VtX3tpPTF9XntuXzF9IChZX3tpMX0tXGJhcntZfV8xKV4yLiQkCgokJFNfMl4yID0gXGZyYWN7MX17bl8yLTF9XHN1bV97aT0xfV57bl8yfSAoWV97aTJ9LVxiYXJ7WX1fMileMi4kJAoKQnV0LCBpZiB3ZSBhc3N1bWUgZXF1YWwgdmFyaWFuY2VzICRcc2lnbWFfMV4yPVxzaWdtYV8yXjI9XHNpZ21hXjIkIHRoYW4gd2UgY2FuIGVzdGltYXRlIHRoZSB2YXJpYW5jZSBtb3JlIHByZWNpc2UgYnkgdXNpbmcgYWxsIG9ic2VydmF0aW9ucyBpbiBib3RoIGdyb3Vwcy4gVGhpcyB2YXJpYW5jZSBlc3RpbWF0b3IgaXMgYWxzbyByZWZlcnJlZCB0byBhcyB0aGUgKnBvb2xlZCB2YXJpYW5jZSBlc3RpbWF0b3I6ICRTXjJfcCQqLgoKU28gJFNfMV4yJCBlbiAkU18yXjIkIGFyZSBlc3RpbWF0b3JzIG9mIHRoZSBzYW1lIHBhcmFtZXRlciAkXHNpZ21hXjIkLgoKQW5kIHdlIGNhbiBjb21iaW5lIHRoZW0gaW50byBvbmUgZXN0aW1hdG9yIGJhc2VkIG9uIGFsbCAkbl8xK25fMiQgb2JzZXJ2YXRpb25zOgoKJCQgIFNfcF4yID0gXGZyYWN7bl8xLTF9e25fMStuXzItMn0gU18xXjIgKyBcZnJhY3tuXzItMX17bl8xK25fMi0yfSBTXzJeMiA9IFxmcmFjezF9e25fMStuXzItMn1cc3VtX3tqPTF9XjJcc3VtX3tpPTF9XntuX2p9IChZX3tpan0gLSBcYmFye1l9X2opXjIuJCQKCiQkIFNfcF4yPSBcc3VtXGxpbWl0c197aj0xfV4yXHN1bVxsaW1pdHNfe2k9MX1ee25fan0gXGZyYWN7KFlfe2lqfS1cYmFye1l9X3suan0pXjJ9e25fMStuXzItMn0kJAoKClRoZSBwb29sZWQgdmFyaWFuY2UgZXN0aW1hdG9yIHVzZXMgdGhlIHNxdWFyZWQgZGV2aWF0aW9ucyBvZiB0aGUgb2JzZXJ2YXRpb25zIGZyb20gdGhlaXIgZ3JvdXAgbWVhbiBhbmQgaGFzICRuXzErbl8yLTIkIGRlZ3JlZXMgb2YgZnJlZWRvbS4KCi0tLQoKIyMgVGVzdCBzdGF0aXN0aWMKVHdvLXNhbXBsZSAkdCQtdGVzdHN0YXRpc3RpZWs6CgokJFQgPSBcZnJhY3tcYmFye1l9XzEtXGJhcntZfV8yfXtcc3FydHtcZnJhY3tTX3BeMn17bl8xfStcZnJhY3tTX3BeMn17bl8yfX19ID0KICBcZnJhY3tcYmFye1l9XzEgLSBcYmFye1l9XzJ9e1NfcFxzcXJ0e1xmcmFjezF9e25fMX0rXGZyYWN7MX17bl8yfX19LiQkCgpUaGUgc3RhdGlzdGljIFQgZm9sbG93cyBhIHQtZGlzdHJpYnV0aW9uIHdpdGggJG5fMStuXzItMiQgdW5kZXIgJEhfMCQgaXMgYWxsIGRhdGEgYXJlIGluZGVwZW5kZW50LCBub3JtYWxseSBkaXN0cmlidXRlZCBhbmQgaGF2ZSBlcXVhbCB2YXJpYW5jZXMuCgotLS0KCiMjIEFybXBpdCBleGFtcGxlCgpXZSBjYW4gaW1wbGVtZW50IHRoZSB0ZXN0IGluIFI6CgpgYGB7cn0KdC50ZXN0KHJlbCB+IHRydCwgZGF0YSA9IGFwLCB2YXIuZXF1YWwgPSBUUlVFKQpgYGAKCk9uIHRoZSAkNVwlJCBzaWduaWZpY2FuY2UgbGV2ZWwgd2UgcmVqZWN0IHRoZSBudWxsIGh5cG90aGVzaXMgaW4gZmF2b3Igb2YgdGhlIGFsdGVybmF0aXZlIGh5cG90aGVzaXMgYW5kIGNvbmNsdWRlIHRoYXQgdGhlIHJlbGF0aXZlIGFidW5kYW5jZSBvZiAgKlN0YXBoeWxvY29jY3VzIHNwcC4qIGlzIG9uIGF2ZXJhZ2UgZXh0cmVtZSBzaWduaWZpY2FudCBsYXJnZXIgaXMgaW4gdHJhbnNwbGFudGF0aW9uIGdyb3VwIHRoYW4gaW4gdGhlIHBsYWNlYm8gZ3JvdXAuCgpJZiB0aGVyZSBpcyBubyBlZmZlY3Qgb2YgdGhlIHRyYW5zcGxhbnQgd2UgaGF2ZSBhIHByb2JhYmlsaXR5IG9mIGxlc3MgdGhlbiA5IGluICQxMDAwMDAkIHRvIG9ic2VydmUgYSB0ZXN0IHN0YXRpc3RpYyBpbiBhIHJhbmRvbSBzYW1wbGUgdGhhdCBpcyBhdCBsZWFzdCBhcyBleHRyZW1lIGFzIHdoYXQgd2Ugb2JzZXJ2ZWQgaW4gdGhlIGFybXBpdCBleHBlcmltZW50LgoKVGhpcyBpcyBleHRyZW1lbHkgcmFyZSB1bmRlciAkSF8wJC4KCklmICRIXzEkIGlzIGNvcnJlY3QsIHdlIGV4cGVjdCB0aGF0IHRoZSB0ZXN0IHN0YXRpc3RpYyBpcyBsYXJnZXIgaW4gYWJzb2x1dGUgdmFsdWUgYW5kIGV4cGVjdCBzbWFsbCBwLXZhbHVlcy4gSGVuY2Ugd2UgZGVjaWRlIHRoYXQgdGhlcmUgaXMgYSBsb3Qgb2YgZXZpZGVuY2UgYWdhaW5zdCAkSF8wJCBpbiBmYXZvdXIgb2YgJEhfMSQuCgoqKkdvb2Qgc3RhdGlzdGljYWwgcHJhY3RpY2UqKiBpcyB0byByZXBvcnQgdGhlICRwJC12YWx1ZSwgYnV0IGFsc28gIGVmZmVjdCBzaXplIGFsb25nIHdpdGggaXRzIGNvbmZpZGVuY2UgaW50ZXJ2YWwuIFNvIHRoYXQgd2UgY2FuIGp1ZGdlIHRoZSBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2UgYW5kIHRoZSBiaW9sb2dpY2FsIHJlbGV2YW5jZS4KCiMjIyBDb25jbHVzaW9uCgpPbiBhdmVyYWdlIHRoZSByZWxhdGl2ZSBhYnVuZGFuY2Ugb2YgKlN0YXBoeWxvY29jY3VzIHNwcC4qIGluIHRoZSBtaWNyb2Jpb21lIG9mIHRoZSBhcm1waXQgaW4gdGhlIHRyYW5zcGxhbnQgZ3JvdXAgaXMgZXh0cmVtZWx5IHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGZyb20gdGhhdCBpbiB0aGUgcGxhY2VibyBncm91cCAoJHA8PDAuMDAxJCkuIFRoZSByZWxhdGl2ZSBhYnVuZGFuY2Ugb2YgKlN0YXBoeWxvY29jY3VzIHNwcC4qIGlzIG9uIGF2ZXJhZ2UgYHIgcm91bmQoZGlmZih0LnRlc3QocmVsfnRydCxkYXRhPWFwLHZhci5lcXVhbD1UUlVFKSRlc3RpbWF0ZSksMSlgJSBsYXJnZXIgaW4gdGhlIHRyYW5zcGxhbnQgZ3JvdXAgdGhhbiBpbiB0aGUgcGxhY2VibyBncm91cCAoOTVcJSBDSSBbYHIgcGFzdGUoZm9ybWF0KC10LnRlc3QocmVsfnRydCxkYXRhPWFwLHZhci5lcXVhbD1UUlVFKSRjb25mLmludFsyOjFdLGRpZ2l0cz0yLG5zbWFsbD0xKSxjb2xsYXBzZT0iLCIpYF0lKS4KCi0tLQoKIyBBc3N1bXB0aW9ucwoKVmFsaWRpdHkgb2YgdC10ZXN0IGRlcGVuZHMgb24gZGlzdHJpYnV0aW9uYWwgYXNzdW1wdGlvbnM6CgotIEluZGVwZW5kZW5jZSAoZGVzaWduKQotIE9uZS1zYW1wbGUgdC10ZXN0OiBub3JtYWxpdHkgb2YgdGhlIG9ic2VydmF0aW9ucwotIFBhaXJlZCB0LXRlc3Q6IG5vcm1hbGl0eSBvZiB0aGUgZGlmZmVyZW5jZQotIFR3by1zYW1wbGUgdC10ZXN0OiBOb3JtYWxpdHkgb2YgdGhlIG9ic2VydmF0aW9ucyBpbiBib3RoIGdyb3VwcywgYW5kIGVxdWFsIHZhcmlhbmNlcy4KCklmIHRoZSBhc3N1bXB0aW9ucyBhcmUgbm90IG1ldCwgdGhlIG51bGwgZGlzdHJpYnV0aW9uIGRvZXMgbm90IGZvbGxvdyBhIHQtZGlzdHJpYnV0aW9uLCBhbmQsIHRoZSBwLXZhbHVlcyBhbmQgY3JpdGljYWwgdmFsdWVzIGFyZSBpbmNvcnJlY3QuCgpUbyBjb25zdHJ1Y3QgY29uZmlkZW5jZSBpbnRlcnZhbHMgd2UgYWxzbyByZWx5IG9uIHRoZXNlIGFzc3VtcHRpb25zLgoKLSBXZSB1c2VkIHF1YW50aWxlcyBmcm9tIHRoZSB0LWRpc3RyaWJ1dGlvbiB0byBjYWxjdWxhdGUgdGhlIGxvd2VyIGFuZCB1cHBlciBsaW1pdC4KCi0gVGhlIGNvcnJlY3QgY292ZXJhZ2Ugb2YgdGhlIENJIGRlcGVuZHMgb24gdGhlc2UgYXNzdW1wdGlvbnMKCi0tLQoKIyMgRXZhbHVhdGUgbm9ybWFsaXR5CgogLSBCb3hwbG90cyBhbmQgaGlzdG9ncmFtczogc2hhcGUgb2YgZGlzdHJpYnV0aW9uIGFuZCBvdXRsaWVycwoKIC0gUVEtcGxvdHMKClRoZXJlIGFsc28gZXhpc3QgaHlwb3RoZXNpcyB0ZXN0cyAoZ29vZG5lc3Mtb2YtZml0IHRlc3QpLCBidXQgdGhlaXIgbnVsbCBoeXBvdGhlc2lzIGlzIHRoYXQgdGhlIGRhdGEgYXJlIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIHNvIHdlIG1ha2UgYSB3ZWFrIGNvbmNsdXNpb24hCgogIC0gS29sbW9nb3Jvdi1TbWlybm92LCBTaGFwaXJvLVdpbGsgZW4gQW5kZXJzb24tRGFybGluZy4KICAtIEluIHNtYWxsIHNhbXBsZXMgdGhleSBoYXZlIGEgbG93IHBvd2VyCiAgLSBJbiBsYXJnZSBzYW1wbGVzIHRoZXkgb2Z0ZW4gZmxhZyB2ZXJ5IHNtYWxsIGRldmlhdGlvbnMgYXMgc2lnbmlmaWNhbnQKClJlY29tbWVuZGF0aW9uCgotIFN0YXJ0IHdpdGggZ3JhcGhpY2FsIGV4cGxvcmF0aW9uIG9mIHRoZSBkYXRhIGFuZCBrZWVwIHRoZSBzYW1wbGUgc2l6ZSBpbiBtaW5kIHRvIGF2b2lkIG92ZXJpbnRlcnByZXRhdGlvbiBvZiB0aGUgcGxvdHMuCgotIElmIHlvdSBoYXZlIGRvdWJ0cywgdXNlIHNpbXVsYXRpb24gd2hlcmUgeW91IHNpbXVsYXRlIGRhdGEgd2l0aCB0aGUgc2FtZSBzYW1wbGUgc2l6ZSBmcm9tIGEgTm9ybWFsIGRpc3RyaWJ1dGlvbiB3aXRoIHRoZSBzYW1lIG1lYW4gYW5kIHZhcmlhbmNlIGFzIHRoZSBvbmUgdGhhdCB5b3Ugb2JzZXJ2ZWQgaW4gdGhlIHNhbXBsZQoKLSBJZiB5b3Ugb2JzZXJ2ZWQgZGV2aWF0aW9ucyBvZiBub3JtYWxpdHkgY2hlY2sgaW4gdGhlIGxpdGVyYXR1cmUgaG93IHNlbnNpdGl2ZSB5b3VyIG1ldGhvZCBpcyBzdWNoIGRldmlhdGlvbnMgb2Ygbm9ybWFsaXR5LiAoZS5nLiBULXRlc3RzIGZvciBpbnN0YW5jZSBhcmUgcmF0aGVyIGluc2Vuc2l0aXZlIHRvIGRldmlhdGlvbnMgYXMgbG9uZyBhcyB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBkYXRhIGlzIHN5bW1ldHJpYy4pCgotIEluIGxhcmdlIHNhbXBsZXMgeW91IGNhbiByZXNvcnQgdG8gdGhlIGNlbnRyYWwgbGltaXQgdGhlb3JlbS4KCi0gWW91IG1pZ2h0IHJlc29ydCB0byB0cmFuc2Zvcm1hdGlvbnMgb2YgdGhlIHJlc3BvbnNlLgoKLS0tCgojIyBIb21vc2NlZGFzdGljaXR5CgotIEJveHBsb3RzOiBUaGUgYm94IHNpemUgaXMgdGhlIGludGVyIHF1YXJ0aWxlIHJhbmdlIChJUVIpIGEgcm9idXN0IGVzdGltYXRvciBvZiB0aGUgdmFyaWFuY2UuCgotIElmIHRoZSBkaWZmZXJlbmNlcyBhcmUgbm90IGxhcmdlICRccmlnaHRhcnJvdyQgaG9tb3NjZWRhc3RpY2l0ZWl0CgotIEFnYWluIHlvdSBjYW4gdXNlIHNpbXVsYXRpb24gdG8gZ2V0IGluc2lnaHQgaW4gdGhlIGRpZmZlcmVuY2VzIHlvdSBjYW4gZXhwZWN0LgoKLSBGb3JtYWwgRi10ZXN0IGNhbiBiZSB1c2VkIHRvIGNvbXBhcmUgdGhlIHZhcmlhbmNlcywgYnV0IGFnYWluIHVuZGVyIHRoZSBudWxsIHlvdSBhc3N1bWUgZXF1YWwgdmFyaWFuY2VzLCBzbyB0aGUgc2FtZSBjcml0aWNpc20gYXMgZm9yIG5vcm1hbGl0eSB0ZXN0cyBhcHBsaWVzIGhlcmUuCgotLS0KCiMjIFdlbGNoIG1vZGlmaWVkIHQtdGVzdAoKSWYgdGhlIGRhdGEgYXJlIGhldGVyb3NjZWRhc3RpYywgeW91IGNhbiB1c2UgYSBXZWxjaCB0d28tc2FtcGxlIFQtdGVzdCwgd2hpY2ggbm8gbG9uZ2VyIHVzZXMgdGhlIHBvb2xlZCB2YXJpYW5jZSBlc3RpbWF0b3IuCgokJFQgPSAgXGZyYWN7XGJhcntZfV8xIC0gXGJhcntZfV8yfXtcc3FydHtcZnJhY3tTXjJfMX17bl8xfStcZnJhY3tTXjJfMn17bl8yfX19JCQKd2l0aCAkU14yXzEkIGVuICRTXjJfMiQgdGhlIHNhbXBsZSB2YXJpYW5jZXMgaW4gYm90aCBncm91cHMuCgpUaGlzIHN0YXRpc3RpYyBmb2xsb3dzIGFwcHJveGltYXRlbHkgYSB0LWRpc3RyaWJ1dGlvbiB3aXRoIGEgbnVtYmVyIG9mIGRlZ3JlZXMgb2YgZnJlZWRvbSBiZXR3ZWVuICAkXHRleHR7bWlufShuXzEtMSxuXzItMSkkIGFuZCAkbl8xK25fMi0yJC4KCkluIFIgdGhlIGRlZ3JlZXMgb2YgZnJlZWRvbSBhcmUgZXN0aW1hdGVkIHVzaW5nIHRoZSBXZWxjaC0gU2F0dGVydGh3YWl0ZSBhcHByb3hpbWF0aW9uLiBZb3UgY2FuIGRvIHRoaXMgYnkgdXNpbmcgdGhlIGB0LnRlc3RgIGZ1bmN0aW9uIHdpdGggYXJndW1lbnQgYHZhci5lcXVhbD1GQUxTRWAuCgpgYGB7cn0KdC50ZXN0KHJlbCB+IHRydCwgZGF0YSA9IGFwLCB2YXIuZXF1YWwgPSBGQUxTRSkKYGBgCgpOb3RlIHRoYXQgeW91IGNhbiBzZWUgdGhhdCB0aGUgV2VsY2ggVC10ZXN0IGlzIGFkb3B0ZWQgaW4gdGhlIHRpdGxlLiBUaGUgYWRqdXN0ZWQgZGVncmVlcyBvZiBmcmVlZG9tIGFyZSAkZGYgPSAxNy44NzYkICRccG0kIHRvIHRoYXQgb2YgdGhlIGNvbnZlbnRpb25hbCBULXRlc3QsIGJlY2F1c2UgdGhlIHZhcmlhbmNlcyBhcmUgYXBwcm94aW1hdGVseSBlcXVhbC4KCi0tLQoKIyBIb3cgdG8gcmVwb3J0PwoKLSBJbiB0aGUgc2NpZW50aWZpYyBsaXRlcmF0dXJlIHRoZXJlIGlzIHRvbyBtdWNoIGF0dGVudGlvbiBmb3IgcC12YWx1ZXMKCi0gSXQgaXMgbXVjaCBtb3JlIGluZm9ybWF0aXZlIHRvIGNvbWJpbmUgYW4gZXN0aW1hdGUgd2l0aCBpdHMgY29uZmlkZW5jZSBpbnRlcnZhbC4KCioqUnVsZSBvZiB0aHVtYioqOgoKUmVwb3J0IGFuIGVzdGltYXRlIHRvZ2V0aGVyIHdpdGggaXRzICBjb25maWRlbmNlIGludGVydmFsIChhbmQgaXRzIHAtdmFsdWUpCgoxLiBUaGUgcmVzdWx0IG9mIHRoZSB0ZXN0IGNhbiBiZSBkZXJpdmVkIG9mIHRoZSBjb25maWRlbmNlIGludGVydmFsCjIuIEl0IGFsbG93cyB0aGUgcmVhZGVyIHRvIGp1ZGdlICoqc2NpZW50aWZpYyByZWxldmFuY2UqKi4KCmBgYHtyfQp0LnRlc3QocmVsIH4gdHJ0LCBkYXRhID0gYXApCmBgYAoKVGhlIHJlc3VsdCBvZiBhbiAkXGFscGhhJC1sZXZlbCB0LXRlc3QgaXMgZXF1aXZhbGVudCB3aXRoIGNvbXBhcmluZyB0aGUgZWZmZWN0IHNpemUgdW5kZXIgJEhfMCQgd2l0aCB0aGUgJDEtXGFscGhhJCBDSS4KCkFuIGVmZmVjdCBjYW4gYmUgZXh0cmVtZWx5IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQsIGJ1dCBzY2llbnRpZmljYWxseSBpcnJlbGV2YW50LiBXaXRoIGEgQ0kgeW91IHdpbGwgc3BvdCB0aGlzLgo=
+LS0tCnRpdGxlOiAiNS4gU3RhdGlzdGljYWwgSW5mZXJlbmNlOiBUd28tc2FtcGxlIHQtdGVzdCIKYXV0aG9yOiAiTGlldmVuIENsZW1lbnQiCmRhdGU6ICJzdGF0T21pY3MsIEdoZW50IFVuaXZlcnNpdHkgKGh0dHBzOi8vc3RhdG9taWNzLmdpdGh1Yi5pbykiCi0tLQoKPGEgcmVsPSJsaWNlbnNlIiBocmVmPSJodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMtc2EvNC4wIj48aW1nIGFsdD0iQ3JlYXRpdmUgQ29tbW9ucyBMaWNlbnNlIiBzdHlsZT0iYm9yZGVyLXdpZHRoOjAiIHNyYz0iaHR0cHM6Ly9pLmNyZWF0aXZlY29tbW9ucy5vcmcvbC9ieS1uYy1zYS80LjAvODh4MzEucG5nIiAvPjwvYT4KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFLCBjYWNoZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KAogIGluY2x1ZGUgPSBUUlVFLCBjb21tZW50ID0gTkEsIGVjaG8gPSBUUlVFLAogIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFLCBjYWNoZSA9IFRSVUUKKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKYGBgCgo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2dnaFMwY3pQS0dZP3NpPVZzUGt1ZS1mN0dnVmVJTGMiIHRpdGxlPSJZb3VUdWJlIHZpZGVvIHBsYXllciIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlOyB3ZWItc2hhcmUiIHJlZmVycmVycG9saWN5PSJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+CgojIFNtZWxseSBhcm1waXQgZXhhbXBsZQoKLSBTbWVsbHkgYXJtcGl0cyBhcmUgbm90IGNhdXNlZCBieSBzd2VhdCwgaXRzZWxmLiBUaGUgc21lbGwgaXMgY2F1c2VkIGJ5IHNwZWNpZmljIG1pY3JvLW9yZ2FuaXNtcyBiZWxvbmdpbmcgdG8gdGhlIGdyb3VwIG9mICpDb3J5bmViYWN0ZXJpdW0gc3BwLiogdGhhdCBtZXRhYm9saXNlIHN3ZWF0LgpBbm90aGVyIGdyb3VwIG9mIGFidW5kYW50IGJhY3RlcmlhIGFyZSB0aGUgKlN0YXBoeWxvY29jY3VzIHNwcC4qLCB0aGVzZSBiYWN0ZXJpYSBkbyBub3QgbWV0YWJvbGlzZSBzd2VhdCBpbiBzbWVsbHkgY29tcG91bmRzLgoKLSBUaGUgQ01FVC1ncm91cCBhdCBHaGVudCBVbml2ZXJzaXR5IGRvZXMgcmVzZWFyY2ggdG8gb24gdHJhbnNwbGFudGluZyB0aGUgYXJtcGl0IG1pY3JvYmlvbWUgdG8gc2F2ZSBwZW9wbGUgd2l0aCBzbWVsbHkgYXJtcGl0cy4KCi0gUHJvcG9zZWQgVGhlcmFweToKICAJMS4gUmVtb3ZlIGFybXBpdC1taWNyb2Jpb21lIHdpdGggYW50aWJpb3RpY3MKICAgIDIuIEluZmx1ZW5jZSBhcm1waXQgbWljcm9iaW9tZSB3aXRoIG1pY3JvYmlhbCAgdHJhbnNwbGFudCAoaHR0cHM6Ly95b3V0dS5iZS85UklGeXFMWGRWdykKCi0gRXhwZXJpbWVudDoKCiAgICAtIDIwIHN1YmplY3RzIHdpdGggc21lbGx5IGFybXBpdHMgYXJlIGF0dHJpYnV0ZWQgdG8gb25lIG9mIHR3byB0cmVhdG1lbnQgZ3JvdXBzCiAgICAtIHBsYWNlYm8gKG9ubHkgYW50aWJpb3RpY3MpCiAgICAtIHRyYW5zcGxhbnQgKGFudGliaW90aWNhIGZvbGxvd2VkIGJ5IG1pY3JvYmlhbCB0cmFuc3BsYW50KS4KICAgIC0gVGhlIG1pY3JvYmlvbWUgaXMgc2FtcGxlZCA2IHdlZWtzIHVwb24gdGhlIHRyZWF0bWVudAogICAgLSBUaGUgcmVsYXRpdmUgYWJ1bmRhbmNlIG9mICpTdGFwaHlsb2NvY2N1cyBzcHAuKiBvbiAqQ29yeW5lYmFjdGVyaXVtIHNwcC4qICsgKlN0YXBoeWxvY29jY3VzIHNwcC4qIGluIHRoZSBtaWNyb2Jpb21lIGlzIG1lYXN1cmVkIHZpYSBER0dFICgqRGVuYXR1cmluZyBHcmFkaWVudCBHZWwgRWxlY3Ryb3Bob3Jlc2lzKikuCgotLS0KCiMjIEltcG9ydCB0aGUgZGF0YQoKYGBge3J9CmFwIDwtIHJlYWRfY3N2KCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vR1RQQi9QU0xTMjAvbWFzdGVyL2RhdGEvYXJtcGl0LmNzdiIpCmFwCmBgYAoKIyMgRGF0YSBleHBsb3JhdGlvbgoKV2UgcGxvdCB0aGUgZGlyZWN0IHJlbGF0aXZlIGFidW5kYW5jZXMgaW4gZnVuY3Rpb24gb2YgdGhlIHRyZWF0bWVudCBncm91cC4gV2l0aCB0aGUgZ2dwbG90MiBsaWJyYXJ5IHdlIGNhbiBlYXNpbHkgYnVpbGQgcGxvdHMgYnkgYWRkaW5nIGxheWVycy4KCmBgYHtyfQphcCAlPiUgZ2dwbG90KGFlcyh4ID0gdHJ0LCB5ID0gcmVsKSkgKwogIGdlb21fYm94cGxvdChvdXRsaWVyLnNoYXBlID0gTkEpICsKICBnZW9tX3BvaW50KHBvc2l0aW9uID0gImppdHRlciIpCgphcCAlPiUgZ2dwbG90KGFlcyhzYW1wbGUgPSByZWwpKSArCiAgZ2VvbV9xcSgpICsKICBnZW9tX3FxX2xpbmUoKSArCiAgZmFjZXRfd3JhcCh+dHJ0KQpgYGAKCi0tLQoKIyBUd28gc2FtcGxlIFQtdGVzdAojIyBOb3RhdGlvbgoKU3VwcG9zZSB0aGF0ICRZX3tpan0kIGlzIHRoZSByZXNwb25zZSBmb3Igc3ViamVjdHMgJGk9MSxcbGRvdHMsIG5faiQgZnJvbSBwb3B1bGF0aW9uICRqPTEsMiQuCgpVc2Ugb2YgdGhlIHRlcm0gKip0cmVhdG1lbnQqKiBvciAqKmdyb3VwKiogaW5zdGVhZCBvZiBwb3B1bGF0aW9uCgpIZXJlIHRoZSB0cmVhdG1lbnQgaXMgJGo9MSQgbWljcm9iaWFsIHRyYW5zcGxhbnQgdnMgJGo9MiQgcGxhY2Viby4KCldlIGFzc3VtZQoKJCRZX3tpan1cdGV4dHsgaS5pLmQuIH0gTihcbXVfaixcc2lnbWFeMilcO1w7XDtpPTEsXGxkb3RzLG5faVw7aj0xLDIuJCQKCk5vdGUsIHRoYXQgd2UgYXNzdW1lIGVxdWFsIHZhcmlhbmNlcyAqKmhvbW9zY2VkYXN0aWMqKgoKKFVuZXF1YWwgdmFyaWFuY2VzIGFyZSByZWZlcnJlZCB0byBhcyAgKipoZXRlcm9zY2VkYXN0aWMqKikKCi0tLQoKIyMgSHlwb3RoZXNlcwoKVGVzdCAkJCBIXzA6IFxtdV8xID0gXG11XzIgJCQKYWdhaW5zdAokJCAgSF8xOiBcbXVfMSBcbmVxIFxtdV8yIC4kJAoKJEhfMSQgaXMgYWdhaW4gdGhlIHJlc2VhcmNoIGh5cG90aGVzaXM6IHRoZSBhdmVyYWdlIHJlbGF0aXZlIGFidW5kYW5jZSBvZiAqU3RhcGh5bG9jb2NjdXMgc3BwLiogaXMgZGlmZmVyZW50IHVwb24gbWljcm9iaWFsIHRyYW5zcGxhbnQgdGhlbiB1cG9uIHBsYWNlYm8gdHJlYXRtZW50LgoKJEhfMCQgYW5kICRIXzEkIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBpbiB0ZXJtcyBvZiB0aGUgZWZmZWN0IHNpemUgYmV0d2VlbiB0aGUgdHdvIHRyZWF0bWVudHMsICRcbXVfMS1cbXVfMiQKJCRIXzA6IFxtdV8xLVxtdV8yID0gMCwkJAokJEhfMTogXG11XzEtXG11XzIgXG5lcSAwLiQkCgpXZSBjYW4gZXN0aW1hdGUgdGhlIGVmZmVjdCBzaXplIHVzaW5nIHRoZSBkaWZmZXJlbmNlIGluIHNhbXBsZSBtZWFuczoKJCRcaGF0IFxtdV8xLVxoYXQgXG11XzI9XGJhciBZXzEgLVxiYXIgWV8yLiQkCgotLS0KCiMjIFZhcmlhbmNlIGVzdGltYXRvcgoKVGhlIGV4cGVyaW1lbnRhbCB1bml0cyBhcmUgaW5kZXBlbmRlbnQgc28gdGhlIHNhbXBsZSBtZWFucyBhcmUgYWxzbyBpbmRlcGVuZGVudCBhbmQgdGhlIHZhcmlhbmNlIG9uIHRoZSBkaWZmZXJlbmNlIGlzCiQkXHRleHR7VmFyfV97XGJhciBZXzEgLVxiYXIgWV8yfT1cZnJhY3tcc2lnbWFeMn17bl8xfStcZnJhY3tcc2lnbWFeMn17bl8yfT1cc2lnbWFeMiBcbGVmdChcZnJhY3sxfXtuXzF9K1xmcmFjezF9e25fMn1ccmlnaHQpLiQkCgpBbmQgdGhlIHN0YW5kYXJkIGVycm9yIGJlY29tZXMKJCRcc2lnbWFfe1xiYXIgWV8xIC1cYmFyIFlfMn09XHNpZ21hXHNxcnR7XGZyYWN7MX17bl8xfStcZnJhY3sxfXtuXzJ9fS4kJAoKVGhlIHZhcmlhbmNlIGNhbiBiZSBlc3RpbWF0ZWQgd2l0aGluIGVhY2ggZ3JvdXAgdXNpbmcgdGhlIHNhbXBsZSB2YXJpYW5jZToKCiQkU18xXjIgPSBcZnJhY3sxfXtuXzEtMX1cc3VtX3tpPTF9XntuXzF9IChZX3tpMX0tXGJhcntZfV8xKV4yLiQkCgokJFNfMl4yID0gXGZyYWN7MX17bl8yLTF9XHN1bV97aT0xfV57bl8yfSAoWV97aTJ9LVxiYXJ7WX1fMileMi4kJAoKQnV0LCBpZiB3ZSBhc3N1bWUgZXF1YWwgdmFyaWFuY2VzICRcc2lnbWFfMV4yPVxzaWdtYV8yXjI9XHNpZ21hXjIkIHRoYW4gd2UgY2FuIGVzdGltYXRlIHRoZSB2YXJpYW5jZSBtb3JlIHByZWNpc2UgYnkgdXNpbmcgYWxsIG9ic2VydmF0aW9ucyBpbiBib3RoIGdyb3Vwcy4gVGhpcyB2YXJpYW5jZSBlc3RpbWF0b3IgaXMgYWxzbyByZWZlcnJlZCB0byBhcyB0aGUgKnBvb2xlZCB2YXJpYW5jZSBlc3RpbWF0b3I6ICRTXjJfcCQqLgoKU28gJFNfMV4yJCBlbiAkU18yXjIkIGFyZSBlc3RpbWF0b3JzIG9mIHRoZSBzYW1lIHBhcmFtZXRlciAkXHNpZ21hXjIkLgoKQW5kIHdlIGNhbiBjb21iaW5lIHRoZW0gaW50byBvbmUgZXN0aW1hdG9yIGJhc2VkIG9uIGFsbCAkbl8xK25fMiQgb2JzZXJ2YXRpb25zOgoKJCQgIFNfcF4yID0gXGZyYWN7bl8xLTF9e25fMStuXzItMn0gU18xXjIgKyBcZnJhY3tuXzItMX17bl8xK25fMi0yfSBTXzJeMiA9IFxmcmFjezF9e25fMStuXzItMn1cc3VtX3tqPTF9XjJcc3VtX3tpPTF9XntuX2p9IChZX3tpan0gLSBcYmFye1l9X2opXjIuJCQKCiQkIFNfcF4yPSBcc3VtXGxpbWl0c197aj0xfV4yXHN1bVxsaW1pdHNfe2k9MX1ee25fan0gXGZyYWN7KFlfe2lqfS1cYmFye1l9X3suan0pXjJ9e25fMStuXzItMn0kJAoKClRoZSBwb29sZWQgdmFyaWFuY2UgZXN0aW1hdG9yIHVzZXMgdGhlIHNxdWFyZWQgZGV2aWF0aW9ucyBvZiB0aGUgb2JzZXJ2YXRpb25zIGZyb20gdGhlaXIgZ3JvdXAgbWVhbiBhbmQgaGFzICRuXzErbl8yLTIkIGRlZ3JlZXMgb2YgZnJlZWRvbS4KCi0tLQoKIyMgVGVzdCBzdGF0aXN0aWMKVHdvLXNhbXBsZSAkdCQtdGVzdHN0YXRpc3RpZWs6CgokJFQgPSBcZnJhY3tcYmFye1l9XzEtXGJhcntZfV8yfXtcc3FydHtcZnJhY3tTX3BeMn17bl8xfStcZnJhY3tTX3BeMn17bl8yfX19ID0KICBcZnJhY3tcYmFye1l9XzEgLSBcYmFye1l9XzJ9e1NfcFxzcXJ0e1xmcmFjezF9e25fMX0rXGZyYWN7MX17bl8yfX19LiQkCgpUaGUgc3RhdGlzdGljIFQgZm9sbG93cyBhIHQtZGlzdHJpYnV0aW9uIHdpdGggJG5fMStuXzItMiQgdW5kZXIgJEhfMCQgaXMgYWxsIGRhdGEgYXJlIGluZGVwZW5kZW50LCBub3JtYWxseSBkaXN0cmlidXRlZCBhbmQgaGF2ZSBlcXVhbCB2YXJpYW5jZXMuCgotLS0KCiMjIEFybXBpdCBleGFtcGxlCgpXZSBjYW4gaW1wbGVtZW50IHRoZSB0ZXN0IGluIFI6CgpgYGB7cn0KdC50ZXN0KHJlbCB+IHRydCwgZGF0YSA9IGFwLCB2YXIuZXF1YWwgPSBUUlVFKQpgYGAKCk9uIHRoZSAkNVwlJCBzaWduaWZpY2FuY2UgbGV2ZWwgd2UgcmVqZWN0IHRoZSBudWxsIGh5cG90aGVzaXMgaW4gZmF2b3Igb2YgdGhlIGFsdGVybmF0aXZlIGh5cG90aGVzaXMgYW5kIGNvbmNsdWRlIHRoYXQgdGhlIHJlbGF0aXZlIGFidW5kYW5jZSBvZiAgKlN0YXBoeWxvY29jY3VzIHNwcC4qIGlzIG9uIGF2ZXJhZ2UgZXh0cmVtZSBzaWduaWZpY2FudCBsYXJnZXIgaXMgaW4gdHJhbnNwbGFudGF0aW9uIGdyb3VwIHRoYW4gaW4gdGhlIHBsYWNlYm8gZ3JvdXAuCgpJZiB0aGVyZSBpcyBubyBlZmZlY3Qgb2YgdGhlIHRyYW5zcGxhbnQgd2UgaGF2ZSBhIHByb2JhYmlsaXR5IG9mIGxlc3MgdGhlbiA5IGluICQxMDAwMDAkIHRvIG9ic2VydmUgYSB0ZXN0IHN0YXRpc3RpYyBpbiBhIHJhbmRvbSBzYW1wbGUgdGhhdCBpcyBhdCBsZWFzdCBhcyBleHRyZW1lIGFzIHdoYXQgd2Ugb2JzZXJ2ZWQgaW4gdGhlIGFybXBpdCBleHBlcmltZW50LgoKVGhpcyBpcyBleHRyZW1lbHkgcmFyZSB1bmRlciAkSF8wJC4KCklmICRIXzEkIGlzIGNvcnJlY3QsIHdlIGV4cGVjdCB0aGF0IHRoZSB0ZXN0IHN0YXRpc3RpYyBpcyBsYXJnZXIgaW4gYWJzb2x1dGUgdmFsdWUgYW5kIGV4cGVjdCBzbWFsbCBwLXZhbHVlcy4gSGVuY2Ugd2UgZGVjaWRlIHRoYXQgdGhlcmUgaXMgYSBsb3Qgb2YgZXZpZGVuY2UgYWdhaW5zdCAkSF8wJCBpbiBmYXZvdXIgb2YgJEhfMSQuCgoqKkdvb2Qgc3RhdGlzdGljYWwgcHJhY3RpY2UqKiBpcyB0byByZXBvcnQgdGhlICRwJC12YWx1ZSwgYnV0IGFsc28gIGVmZmVjdCBzaXplIGFsb25nIHdpdGggaXRzIGNvbmZpZGVuY2UgaW50ZXJ2YWwuIFNvIHRoYXQgd2UgY2FuIGp1ZGdlIHRoZSBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2UgYW5kIHRoZSBiaW9sb2dpY2FsIHJlbGV2YW5jZS4KCiMjIyBDb25jbHVzaW9uCgpPbiBhdmVyYWdlIHRoZSByZWxhdGl2ZSBhYnVuZGFuY2Ugb2YgKlN0YXBoeWxvY29jY3VzIHNwcC4qIGluIHRoZSBtaWNyb2Jpb21lIG9mIHRoZSBhcm1waXQgaW4gdGhlIHRyYW5zcGxhbnQgZ3JvdXAgaXMgZXh0cmVtZWx5IHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGZyb20gdGhhdCBpbiB0aGUgcGxhY2VibyBncm91cCAoJHA8PDAuMDAxJCkuIFRoZSByZWxhdGl2ZSBhYnVuZGFuY2Ugb2YgKlN0YXBoeWxvY29jY3VzIHNwcC4qIGlzIG9uIGF2ZXJhZ2UgYHIgcm91bmQoZGlmZih0LnRlc3QocmVsfnRydCxkYXRhPWFwLHZhci5lcXVhbD1UUlVFKSRlc3RpbWF0ZSksMSlgJSBsYXJnZXIgaW4gdGhlIHRyYW5zcGxhbnQgZ3JvdXAgdGhhbiBpbiB0aGUgcGxhY2VibyBncm91cCAoOTVcJSBDSSBbYHIgcGFzdGUoZm9ybWF0KC10LnRlc3QocmVsfnRydCxkYXRhPWFwLHZhci5lcXVhbD1UUlVFKSRjb25mLmludFsyOjFdLGRpZ2l0cz0yLG5zbWFsbD0xKSxjb2xsYXBzZT0iLCIpYF0lKS4KCi0tLQoKIyBBc3N1bXB0aW9ucwoKVmFsaWRpdHkgb2YgdC10ZXN0IGRlcGVuZHMgb24gZGlzdHJpYnV0aW9uYWwgYXNzdW1wdGlvbnM6CgotIEluZGVwZW5kZW5jZSAoZGVzaWduKQotIE9uZS1zYW1wbGUgdC10ZXN0OiBub3JtYWxpdHkgb2YgdGhlIG9ic2VydmF0aW9ucwotIFBhaXJlZCB0LXRlc3Q6IG5vcm1hbGl0eSBvZiB0aGUgZGlmZmVyZW5jZQotIFR3by1zYW1wbGUgdC10ZXN0OiBOb3JtYWxpdHkgb2YgdGhlIG9ic2VydmF0aW9ucyBpbiBib3RoIGdyb3VwcywgYW5kIGVxdWFsIHZhcmlhbmNlcy4KCklmIHRoZSBhc3N1bXB0aW9ucyBhcmUgbm90IG1ldCwgdGhlIG51bGwgZGlzdHJpYnV0aW9uIGRvZXMgbm90IGZvbGxvdyBhIHQtZGlzdHJpYnV0aW9uLCBhbmQsIHRoZSBwLXZhbHVlcyBhbmQgY3JpdGljYWwgdmFsdWVzIGFyZSBpbmNvcnJlY3QuCgpUbyBjb25zdHJ1Y3QgY29uZmlkZW5jZSBpbnRlcnZhbHMgd2UgYWxzbyByZWx5IG9uIHRoZXNlIGFzc3VtcHRpb25zLgoKLSBXZSB1c2VkIHF1YW50aWxlcyBmcm9tIHRoZSB0LWRpc3RyaWJ1dGlvbiB0byBjYWxjdWxhdGUgdGhlIGxvd2VyIGFuZCB1cHBlciBsaW1pdC4KCi0gVGhlIGNvcnJlY3QgY292ZXJhZ2Ugb2YgdGhlIENJIGRlcGVuZHMgb24gdGhlc2UgYXNzdW1wdGlvbnMKCi0tLQoKIyMgRXZhbHVhdGUgbm9ybWFsaXR5CgogLSBCb3hwbG90cyBhbmQgaGlzdG9ncmFtczogc2hhcGUgb2YgZGlzdHJpYnV0aW9uIGFuZCBvdXRsaWVycwoKIC0gUVEtcGxvdHMKClRoZXJlIGFsc28gZXhpc3QgaHlwb3RoZXNpcyB0ZXN0cyAoZ29vZG5lc3Mtb2YtZml0IHRlc3QpLCBidXQgdGhlaXIgbnVsbCBoeXBvdGhlc2lzIGlzIHRoYXQgdGhlIGRhdGEgYXJlIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIHNvIHdlIG1ha2UgYSB3ZWFrIGNvbmNsdXNpb24hCgogIC0gS29sbW9nb3Jvdi1TbWlybm92LCBTaGFwaXJvLVdpbGsgZW4gQW5kZXJzb24tRGFybGluZy4KICAtIEluIHNtYWxsIHNhbXBsZXMgdGhleSBoYXZlIGEgbG93IHBvd2VyCiAgLSBJbiBsYXJnZSBzYW1wbGVzIHRoZXkgb2Z0ZW4gZmxhZyB2ZXJ5IHNtYWxsIGRldmlhdGlvbnMgYXMgc2lnbmlmaWNhbnQKClJlY29tbWVuZGF0aW9uCgotIFN0YXJ0IHdpdGggZ3JhcGhpY2FsIGV4cGxvcmF0aW9uIG9mIHRoZSBkYXRhIGFuZCBrZWVwIHRoZSBzYW1wbGUgc2l6ZSBpbiBtaW5kIHRvIGF2b2lkIG92ZXJpbnRlcnByZXRhdGlvbiBvZiB0aGUgcGxvdHMuCgotIElmIHlvdSBoYXZlIGRvdWJ0cywgdXNlIHNpbXVsYXRpb24gd2hlcmUgeW91IHNpbXVsYXRlIGRhdGEgd2l0aCB0aGUgc2FtZSBzYW1wbGUgc2l6ZSBmcm9tIGEgTm9ybWFsIGRpc3RyaWJ1dGlvbiB3aXRoIHRoZSBzYW1lIG1lYW4gYW5kIHZhcmlhbmNlIGFzIHRoZSBvbmUgdGhhdCB5b3Ugb2JzZXJ2ZWQgaW4gdGhlIHNhbXBsZQoKLSBJZiB5b3Ugb2JzZXJ2ZWQgZGV2aWF0aW9ucyBvZiBub3JtYWxpdHkgY2hlY2sgaW4gdGhlIGxpdGVyYXR1cmUgaG93IHNlbnNpdGl2ZSB5b3VyIG1ldGhvZCBpcyBzdWNoIGRldmlhdGlvbnMgb2Ygbm9ybWFsaXR5LiAoZS5nLiBULXRlc3RzIGZvciBpbnN0YW5jZSBhcmUgcmF0aGVyIGluc2Vuc2l0aXZlIHRvIGRldmlhdGlvbnMgYXMgbG9uZyBhcyB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBkYXRhIGlzIHN5bW1ldHJpYy4pCgotIEluIGxhcmdlIHNhbXBsZXMgeW91IGNhbiByZXNvcnQgdG8gdGhlIGNlbnRyYWwgbGltaXQgdGhlb3JlbS4KCi0gWW91IG1pZ2h0IHJlc29ydCB0byB0cmFuc2Zvcm1hdGlvbnMgb2YgdGhlIHJlc3BvbnNlLgoKLS0tCgojIyBIb21vc2NlZGFzdGljaXR5CgotIEJveHBsb3RzOiBUaGUgYm94IHNpemUgaXMgdGhlIGludGVyIHF1YXJ0aWxlIHJhbmdlIChJUVIpIGEgcm9idXN0IGVzdGltYXRvciBvZiB0aGUgdmFyaWFuY2UuCgotIElmIHRoZSBkaWZmZXJlbmNlcyBhcmUgbm90IGxhcmdlICRccmlnaHRhcnJvdyQgaG9tb3NjZWRhc3RpY2l0ZWl0CgotIEFnYWluIHlvdSBjYW4gdXNlIHNpbXVsYXRpb24gdG8gZ2V0IGluc2lnaHQgaW4gdGhlIGRpZmZlcmVuY2VzIHlvdSBjYW4gZXhwZWN0LgoKLSBGb3JtYWwgRi10ZXN0IGNhbiBiZSB1c2VkIHRvIGNvbXBhcmUgdGhlIHZhcmlhbmNlcywgYnV0IGFnYWluIHVuZGVyIHRoZSBudWxsIHlvdSBhc3N1bWUgZXF1YWwgdmFyaWFuY2VzLCBzbyB0aGUgc2FtZSBjcml0aWNpc20gYXMgZm9yIG5vcm1hbGl0eSB0ZXN0cyBhcHBsaWVzIGhlcmUuCgotLS0KCiMjIFdlbGNoIG1vZGlmaWVkIHQtdGVzdAoKSWYgdGhlIGRhdGEgYXJlIGhldGVyb3NjZWRhc3RpYywgeW91IGNhbiB1c2UgYSBXZWxjaCB0d28tc2FtcGxlIFQtdGVzdCwgd2hpY2ggbm8gbG9uZ2VyIHVzZXMgdGhlIHBvb2xlZCB2YXJpYW5jZSBlc3RpbWF0b3IuCgokJFQgPSAgXGZyYWN7XGJhcntZfV8xIC0gXGJhcntZfV8yfXtcc3FydHtcZnJhY3tTXjJfMX17bl8xfStcZnJhY3tTXjJfMn17bl8yfX19JCQKd2l0aCAkU14yXzEkIGVuICRTXjJfMiQgdGhlIHNhbXBsZSB2YXJpYW5jZXMgaW4gYm90aCBncm91cHMuCgpUaGlzIHN0YXRpc3RpYyBmb2xsb3dzIGFwcHJveGltYXRlbHkgYSB0LWRpc3RyaWJ1dGlvbiB3aXRoIGEgbnVtYmVyIG9mIGRlZ3JlZXMgb2YgZnJlZWRvbSBiZXR3ZWVuICAkXHRleHR7bWlufShuXzEtMSxuXzItMSkkIGFuZCAkbl8xK25fMi0yJC4KCkluIFIgdGhlIGRlZ3JlZXMgb2YgZnJlZWRvbSBhcmUgZXN0aW1hdGVkIHVzaW5nIHRoZSBXZWxjaC0gU2F0dGVydGh3YWl0ZSBhcHByb3hpbWF0aW9uLiBZb3UgY2FuIGRvIHRoaXMgYnkgdXNpbmcgdGhlIGB0LnRlc3RgIGZ1bmN0aW9uIHdpdGggYXJndW1lbnQgYHZhci5lcXVhbD1GQUxTRWAuCgpgYGB7cn0KdC50ZXN0KHJlbCB+IHRydCwgZGF0YSA9IGFwLCB2YXIuZXF1YWwgPSBGQUxTRSkKYGBgCgpOb3RlIHRoYXQgeW91IGNhbiBzZWUgdGhhdCB0aGUgV2VsY2ggVC10ZXN0IGlzIGFkb3B0ZWQgaW4gdGhlIHRpdGxlLiBUaGUgYWRqdXN0ZWQgZGVncmVlcyBvZiBmcmVlZG9tIGFyZSAkZGYgPSAxNy44NzYkICRccG0kIHRvIHRoYXQgb2YgdGhlIGNvbnZlbnRpb25hbCBULXRlc3QsIGJlY2F1c2UgdGhlIHZhcmlhbmNlcyBhcmUgYXBwcm94aW1hdGVseSBlcXVhbC4KCi0tLQoKIyBIb3cgdG8gcmVwb3J0PwoKLSBJbiB0aGUgc2NpZW50aWZpYyBsaXRlcmF0dXJlIHRoZXJlIGlzIHRvbyBtdWNoIGF0dGVudGlvbiBmb3IgcC12YWx1ZXMKCi0gSXQgaXMgbXVjaCBtb3JlIGluZm9ybWF0aXZlIHRvIGNvbWJpbmUgYW4gZXN0aW1hdGUgd2l0aCBpdHMgY29uZmlkZW5jZSBpbnRlcnZhbC4KCioqUnVsZSBvZiB0aHVtYioqOgoKUmVwb3J0IGFuIGVzdGltYXRlIHRvZ2V0aGVyIHdpdGggaXRzICBjb25maWRlbmNlIGludGVydmFsIChhbmQgaXRzIHAtdmFsdWUpCgoxLiBUaGUgcmVzdWx0IG9mIHRoZSB0ZXN0IGNhbiBiZSBkZXJpdmVkIG9mIHRoZSBjb25maWRlbmNlIGludGVydmFsCjIuIEl0IGFsbG93cyB0aGUgcmVhZGVyIHRvIGp1ZGdlICoqc2NpZW50aWZpYyByZWxldmFuY2UqKi4KCmBgYHtyfQp0LnRlc3QocmVsIH4gdHJ0LCBkYXRhID0gYXApCmBgYAoKVGhlIHJlc3VsdCBvZiBhbiAkXGFscGhhJC1sZXZlbCB0LXRlc3QgaXMgZXF1aXZhbGVudCB3aXRoIGNvbXBhcmluZyB0aGUgZWZmZWN0IHNpemUgdW5kZXIgJEhfMCQgd2l0aCB0aGUgJDEtXGFscGhhJCBDSS4KCkFuIGVmZmVjdCBjYW4gYmUgZXh0cmVtZWx5IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQsIGJ1dCBzY2llbnRpZmljYWxseSBpcnJlbGV2YW50LiBXaXRoIGEgQ0kgeW91IHdpbGwgc3BvdCB0aGlzLgo=