ZGlmZiAtLWdpdCBhL0ZpbGVsaXN0IGIvRmlsZWxpc3QKaW5kZXggNDA3MDQ2NC4uMDRmY2QyNSAxMDA2NDQKLS0tIGEvRmlsZWxpc3QKKysrIGIvRmlsZWxpc3QKQEAgLTQ0OSw2ICs0NDksNyBAQAogCQlydW50aW1lL2RvYy92aW1kaWZmLjEgXAogCQlydW50aW1lL2RvYy92aW10dXRvci4xIFwKIAkJcnVudGltZS9kb2MveHhkLjEgXAorCQlydW50aW1lL2RvYy8qLWl0LjEgXAogCQlydW50aW1lL2Z0b2ZmLnZpbSBcCiAJCXJ1bnRpbWUvZ3ZpbXJjX2V4YW1wbGUudmltIFwKIAkJcnVudGltZS9tYWNyb3MvUkVBRE1FLnR4dCBcCmRpZmYgLS1naXQgYS9ydW50aW1lL2NvbXBpbGVyL2NoZWNrc3R5bGUudmltIGIvcnVudGltZS9jb21waWxlci9jaGVja3N0eWxlLnZpbQppbmRleCA4ZDY5NmYwLi43NGFiM2U0IDEwMDY0NAotLS0gYS9ydW50aW1lL2NvbXBpbGVyL2NoZWNrc3R5bGUudmltCisrKyBiL3J1bnRpbWUvY29tcGlsZXIvY2hlY2tzdHlsZS52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBjb21waWxlciBmaWxlCiAiIENvbXBpbGVyOglDaGVja3N0eWxlCi0iIE1haW50YWluZXI6CURvdWcgS2Vhcm5zIDxkamtlYTJAbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXU+Ci0iIFVSTDoJCWh0dHA6Ly9tdWdjYS5pdHMubW9uYXNoLmVkdS5hdS9+ZGprZWEyL3ZpbS9jb21waWxlci9jaGVja3N0eWxlLnZpbQotIiBMYXN0IENoYW5nZToJMjAwNCBNYXIgMjcKKyIgTWFpbnRhaW5lcjoJRG91ZyBLZWFybnMgPGRqa2VhMkBndXMuZ3NjaXQubW9uYXNoLmVkdS5hdT4KKyIgVVJMOgkJaHR0cDovL2d1cy5nc2NpdC5tb25hc2guZWR1LmF1L35kamtlYTIvdmltL2NvbXBpbGVyL2NoZWNrc3R5bGUudmltCisiIExhc3QgQ2hhbmdlOgkyMDA0IE5vdiAyNwogCiBpZiBleGlzdHMoImN1cnJlbnRfY29tcGlsZXIiKQogICBmaW5pc2gKZGlmZiAtLWdpdCBhL3J1bnRpbWUvY29tcGlsZXIvamF2YWMudmltIGIvcnVudGltZS9jb21waWxlci9qYXZhYy52aW0KaW5kZXggMjk2Zjc2Ni4uMjM0ZTI4YiAxMDA2NDQKLS0tIGEvcnVudGltZS9jb21waWxlci9qYXZhYy52aW0KKysrIGIvcnVudGltZS9jb21waWxlci9qYXZhYy52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBjb21waWxlciBmaWxlCiAiIENvbXBpbGVyOiAgICAgamF2YWMKLSIgTWFpbnRhaW5lcjogICBEb3VnIEtlYXJucyA8ZGprZWEyQG11Z2NhLml0cy5tb25hc2guZWR1LmF1PgotIiBVUkw6CQlodHRwOi8vbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vY29tcGlsZXIvamF2YWMudmltCi0iIExhc3QgQ2hhbmdlOiAgMjAwNCBBcHIgMTUKKyIgTWFpbnRhaW5lcjogICBEb3VnIEtlYXJucyA8ZGprZWEyQGd1cy5nc2NpdC5tb25hc2guZWR1LmF1PgorIiBVUkw6CQlodHRwOi8vZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vY29tcGlsZXIvamF2YWMudmltCisiIExhc3QgQ2hhbmdlOiAgMjAwNCBOb3YgMjcKIAogaWYgZXhpc3RzKCJjdXJyZW50X2NvbXBpbGVyIikKICAgZmluaXNoCmRpZmYgLS1naXQgYS9ydW50aW1lL2NvbXBpbGVyL3BocC52aW0gYi9ydW50aW1lL2NvbXBpbGVyL3BocC52aW0KaW5kZXggNWRhZDI3MS4uMmY0ZjAzMiAxMDA2NDQKLS0tIGEvcnVudGltZS9jb21waWxlci9waHAudmltCisrKyBiL3J1bnRpbWUvY29tcGlsZXIvcGhwLnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIGNvbXBpbGVyIGZpbGUKICIgQ29tcGlsZXI6CVBIUAotIiBNYWludGFpbmVyOglEb3VnIEtlYXJucyA8ZGprZWEyQG11Z2NhLml0cy5tb25hc2guZWR1LmF1PgotIiBVUkw6CQlodHRwOi8vbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vY29tcGlsZXIvcGhwLnZpbQotIiBMYXN0IENoYW5nZToJMjAwNCBTZXAgMDUKKyIgTWFpbnRhaW5lcjoJRG91ZyBLZWFybnMgPGRqa2VhMkBndXMuZ3NjaXQubW9uYXNoLmVkdS5hdT4KKyIgVVJMOgkJaHR0cDovL2d1cy5nc2NpdC5tb25hc2guZWR1LmF1L35kamtlYTIvdmltL2NvbXBpbGVyL3BocC52aW0KKyIgTGFzdCBDaGFuZ2U6CTIwMDQgTm92IDI3CiAKIGlmIGV4aXN0cygiY3VycmVudF9jb21waWxlciIpCiAgIGZpbmlzaApkaWZmIC0tZ2l0IGEvcnVudGltZS9jb21waWxlci9ydWJ5LnZpbSBiL3J1bnRpbWUvY29tcGlsZXIvcnVieS52aW0KaW5kZXggZjEyNGVkMy4uYmZiODM3MCAxMDA2NDQKLS0tIGEvcnVudGltZS9jb21waWxlci9ydWJ5LnZpbQorKysgYi9ydW50aW1lL2NvbXBpbGVyL3J1YnkudmltCkBAIC0xMCw3ICsxMCw3IEBACiAiCiAiIENvbnRyaWJ1dG9yczoKICIgICBIdWdoIFNhc3NlIDxoZ3NAZG11LmFjLnVrPgotIiAgIERvdWcgS2Vhcm5zIDxkamtlYTJAbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXU+CisiICAgRG91ZyBLZWFybnMgPGRqa2VhMkBndXMuZ3NjaXQubW9uYXNoLmVkdS5hdT4KICIKICIgVG9kbzoKICIgICBtYXRjaCBlcnJvciB0eXBlICVtCmRpZmYgLS1naXQgYS9ydW50aW1lL2NvbXBpbGVyL3NlLnZpbSBiL3J1bnRpbWUvY29tcGlsZXIvc2UudmltCmluZGV4IGFjMGFhYjguLmZiZmE2MmQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvY29tcGlsZXIvc2UudmltCisrKyBiL3J1bnRpbWUvY29tcGlsZXIvc2UudmltCkBAIC0xLDggKzEsOCBAQAogIiBWaW0gY29tcGlsZXIgZmlsZQogIiBDb21waWxlcjoJc2UgKFNtYXJ0RWlmZmVsIENvbXBpbGVyKQotIiBNYWludGFpbmVyOglEb3VnIEtlYXJucyA8ZGprZWEyQG11Z2NhLml0cy5tb25hc2guZWR1LmF1PgotIiBVUkw6CQlodHRwOi8vbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vY29tcGlsZXIvc2UudmltCi0iIExhc3QgQ2hhbmdlOgkyMDA0IE1heSAxNgorIiBNYWludGFpbmVyOglEb3VnIEtlYXJucyA8ZGprZWEyQGd1cy5nc2NpdC5tb25hc2guZWR1LmF1PgorIiBVUkw6CQlodHRwOi8vZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vY29tcGlsZXIvc2UudmltCisiIExhc3QgQ2hhbmdlOgkyMDA0IE5vdiAyNwogCiBpZiBleGlzdHMoImN1cnJlbnRfY29tcGlsZXIiKQogICBmaW5pc2gKZGlmZiAtLWdpdCBhL3J1bnRpbWUvY29tcGlsZXIvdGNsLnZpbSBiL3J1bnRpbWUvY29tcGlsZXIvdGNsLnZpbQppbmRleCA3NmQzZWRmLi44YmQ2ZGU2IDEwMDY0NAotLS0gYS9ydW50aW1lL2NvbXBpbGVyL3RjbC52aW0KKysrIGIvcnVudGltZS9jb21waWxlci90Y2wudmltCkBAIC0xLDggKzEsOCBAQAogIiBWaW0gY29tcGlsZXIgZmlsZQogIiBDb21waWxlcjoJdGNsCi0iIE1haW50YWluZXI6CURvdWcgS2Vhcm5zIDxkamtlYTJAbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXU+Ci0iIFVSTDoJCWh0dHA6Ly9tdWdjYS5pdHMubW9uYXNoLmVkdS5hdS9+ZGprZWEyL3ZpbS9jb21waWxlci90Y2wudmltCi0iIExhc3QgQ2hhbmdlOgkyMDA0IE1hciAyNworIiBNYWludGFpbmVyOglEb3VnIEtlYXJucyA8ZGprZWEyQGd1cy5nc2NpdC5tb25hc2guZWR1LmF1PgorIiBVUkw6CQlodHRwOi8vZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vY29tcGlsZXIvdGNsLnZpbQorIiBMYXN0IENoYW5nZToJMjAwNCBOb3YgMjcKIAogaWYgZXhpc3RzKCJjdXJyZW50X2NvbXBpbGVyIikKICAgZmluaXNoCmRpZmYgLS1naXQgYS9ydW50aW1lL2NvbXBpbGVyL3RpZHkudmltIGIvcnVudGltZS9jb21waWxlci90aWR5LnZpbQppbmRleCAzNjQxNmViLi41MmJjNTI2IDEwMDY0NAotLS0gYS9ydW50aW1lL2NvbXBpbGVyL3RpZHkudmltCisrKyBiL3J1bnRpbWUvY29tcGlsZXIvdGlkeS52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBjb21waWxlciBmaWxlCiAiIENvbXBpbGVyOglIVE1MIFRpZHkKLSIgTWFpbnRhaW5lcjoJRG91ZyBLZWFybnMgPGRqa2VhMkBtdWdjYS5pdHMubW9uYXNoLmVkdS5hdT4KLSIgVVJMOgkJaHR0cDovL211Z2NhLml0cy5tb25hc2guZWR1LmF1L35kamtlYTIvdmltL2NvbXBpbGVyL3RpZHkudmltCi0iIExhc3QgQ2hhbmdlOgkyMDA0IE1hciAyNworIiBNYWludGFpbmVyOglEb3VnIEtlYXJucyA8ZGprZWEyQGd1cy5nc2NpdC5tb25hc2guZWR1LmF1PgorIiBVUkw6CQlodHRwOi8vZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vY29tcGlsZXIvdGlkeS52aW0KKyIgTGFzdCBDaGFuZ2U6CTIwMDQgTm92IDI3CiAKICIgTk9URTogc2V0ICd0aWR5X2NvbXBpbGVyXzA0MDgwMCcgaWYgeW91IGFyZSB1c2luZyB0aGUgNHRoIEF1Z3VzdCAyMDAwIHJlbGVhc2UKICIgICAgICAgb2YgSFRNTCBUaWR5LgpkaWZmIC0tZ2l0IGEvcnVudGltZS9jb21waWxlci94bWxsaW50LnZpbSBiL3J1bnRpbWUvY29tcGlsZXIveG1sbGludC52aW0KaW5kZXggYjcxMTBjNy4uOGZkZTRlMSAxMDA2NDQKLS0tIGEvcnVudGltZS9jb21waWxlci94bWxsaW50LnZpbQorKysgYi9ydW50aW1lL2NvbXBpbGVyL3htbGxpbnQudmltCkBAIC0xLDggKzEsOCBAQAogIiBWaW0gY29tcGlsZXIgZmlsZQogIiBDb21waWxlcjoJeG1sbGludAotIiBNYWludGFpbmVyOglEb3VnIEtlYXJucyA8ZGprZWEyQG11Z2NhLml0cy5tb25hc2guZWR1LmF1PgotIiBVUkw6CQlodHRwOi8vbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vY29tcGlsZXIveG1sbGludC52aW0KLSIgTGFzdCBDaGFuZ2U6CTIwMDQgTWFyIDI3CisiIE1haW50YWluZXI6CURvdWcgS2Vhcm5zIDxkamtlYTJAZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXU+CisiIFVSTDoJCWh0dHA6Ly9ndXMuZ3NjaXQubW9uYXNoLmVkdS5hdS9+ZGprZWEyL3ZpbS9jb21waWxlci94bWxsaW50LnZpbQorIiBMYXN0IENoYW5nZToJMjAwNCBOb3YgMjcKIAogaWYgZXhpc3RzKCJjdXJyZW50X2NvbXBpbGVyIikKICAgZmluaXNoCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9NYWtlZmlsZSBiL3J1bnRpbWUvZG9jL01ha2VmaWxlCmluZGV4IDhkYTU5MmMuLjk0YmY4MDUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL01ha2VmaWxlCisrKyBiL3J1bnRpbWUvZG9jL01ha2VmaWxlCkBAIC0zNiw2ICszNiw3IEBACiAJaGVscC50eHQgXAogCWhvd3RvLnR4dCBcCiAJaWZfY3Njb3AudHh0IFwKKwlpZl9tenNjaC50eHQgXAogCWlmX29sZS50eHQgXAogCWlmX3BlcmwudHh0IFwKIAlpZl9weXRoLnR4dCBcCkBAIC0xNTYsNiArMTU3LDcgQEAKIAloZWxwLmh0bWwgXAogCWhvd3RvLmh0bWwgXAogCWlmX2NzY29wLmh0bWwgXAorCWlmX216c2NoLmh0bWwgXAogCWlmX29sZS5odG1sIFwKIAlpZl9wZXJsLmh0bWwgXAogCWlmX3B5dGguaHRtbCBcCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0IGIvcnVudGltZS9kb2MvY2hhbmdlLnR4dAppbmRleCA0ZjM3MWY5Li41ZTQ1ZWM3IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0CisrKyBiL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQKQEAgLTEsNCArMSw0IEBACi0qY2hhbmdlLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgT2N0IDExCisqY2hhbmdlLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgTm92IDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zNTAsMjMgKzM1MCwyNCBAQAogVGhlIENUUkwtQSBhbmQgQ1RSTC1YIGNvbW1hbmRzIHdvcmsgZm9yIChzaWduZWQpIGRlY2ltYWwgbnVtYmVycywgdW5zaWduZWQKIG9jdGFsIGFuZCBoZXhhZGVjaW1hbCBudW1iZXJzIGFuZCBhbHBoYWJldGljIGNoYXJhY3RlcnMuICBUaGlzIGRlcGVuZHMgb24gdGhlCiAnbnJmb3JtYXRzJyBvcHRpb24uCi0tIFdoZW4gJ25yZm9ybWF0cycgaW5jbHVkZXMgImFscGhhIiwgVmltIHdpbGwgY2hhbmdlIHRoZSBhbHBoYWJldGljIGNoYXJhY3RlcgotICB1bmRlciBvciBhZnRlciB0aGUgY3Vyc29yLiAgVGhpcyBpcyB1c2VmdWwgdG8gbWFrZSBsaXN0cyB3aXRoIGFuIGFscGhhYmV0aWMKLSAgaW5kZXguCi0tIFdoZW4gJ25yZm9ybWF0cycgaW5jbHVkZXMgImhleCIsIFZpbSBhc3N1bWVzIG51bWJlcnMgc3RhcnRpbmcgd2l0aCAnMHgnIG9yCi0gICcwWCcgYXJlIGhleGFkZWNpbWFsLiAgVGhlIGNhc2Ugb2YgdGhlIHJpZ2h0bW9zdCBsZXR0ZXIgaW4gdGhlIG51bWJlcgotICBkZXRlcm1pbmVzIHRoZSBjYXNlIG9mIHRoZSByZXN1bHRpbmcgaGV4YWRlY2ltYWwgbnVtYmVyLiAgSWYgdGhlcmUgaXMgbm8KLSAgbGV0dGVyIGluIHRoZSBjdXJyZW50IG51bWJlciwgVmltIHVzZXMgdGhlIHByZXZpb3VzbHkgZGV0ZWN0ZWQgY2FzZS4KIC0gV2hlbiAnbnJmb3JtYXRzJyBpbmNsdWRlcyAib2N0YWwiLCBWaW0gY29uc2lkZXJzIG51bWJlcnMgc3RhcnRpbmcgd2l0aCBhICcwJwogICB0byBiZSBvY3RhbC4gIE90aGVyIG51bWJlcnMgYXJlIGRlY2ltYWwgYW5kIG1heSBoYXZlIGEgcHJlY2VkaW5nIG1pbnVzIHNpZ24uCiAgIElmIHRoZSBjdXJzb3IgaXMgb24gYSBudW1iZXIsIHRoZSBjb21tYW5kcyBhcHBseSB0byB0aGF0IG51bWJlcjsgb3RoZXJ3aXNlCiAgIFZpbSB1c2VzIHRoZSBudW1iZXIgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjdXJzb3IuCistIFdoZW4gJ25yZm9ybWF0cycgaW5jbHVkZXMgImhleCIsIFZpbSBhc3N1bWVzIG51bWJlcnMgc3RhcnRpbmcgd2l0aCAnMHgnIG9yCisgICcwWCcgYXJlIGhleGFkZWNpbWFsLiAgVGhlIGNhc2Ugb2YgdGhlIHJpZ2h0bW9zdCBsZXR0ZXIgaW4gdGhlIG51bWJlcgorICBkZXRlcm1pbmVzIHRoZSBjYXNlIG9mIHRoZSByZXN1bHRpbmcgaGV4YWRlY2ltYWwgbnVtYmVyLiAgSWYgdGhlcmUgaXMgbm8KKyAgbGV0dGVyIGluIHRoZSBjdXJyZW50IG51bWJlciwgVmltIHVzZXMgdGhlIHByZXZpb3VzbHkgZGV0ZWN0ZWQgY2FzZS4KKy0gV2hlbiAnbnJmb3JtYXRzJyBpbmNsdWRlcyAiYWxwaGEiLCBWaW0gd2lsbCBjaGFuZ2UgdGhlIGFscGhhYmV0aWMgY2hhcmFjdGVyCisgIHVuZGVyIG9yIGFmdGVyIHRoZSBjdXJzb3IuICBUaGlzIGlzIHVzZWZ1bCB0byBtYWtlIGxpc3RzIHdpdGggYW4gYWxwaGFiZXRpYworICBpbmRleC4KIAogRm9yIG51bWJlcnMgd2l0aCBsZWFkaW5nIHplcm9zIChpbmNsdWRpbmcgYWxsIG9jdGFsIGFuZCBoZXhhZGVjaW1hbCBudW1iZXJzKSwKIFZpbSBwcmVzZXJ2ZXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBudW1iZXIgd2hlbiBwb3NzaWJsZS4gIENUUkwtQSBvbgotIjAwNzciIHJlc3VsdHMgaW4gIjAxMDAiLCBDVFJMLVggb24gIjB4MTAwIiByZXN1bHRzIGluICIweDBmZiIuICBOb3RlIHRoYXQKLXdoZW4gJ25yZm9ybWF0cycgaW5jbHVkZXMgIm9jdGFsIiwgZGVjaW1hbCBudW1iZXJzIHdpdGggbGVhZGluZyB6ZXJvcyBhcmUKLWltcG9zc2libGUgYmVjYXVzZSB0aGV5IGFyZSBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIG9jdGFsIG51bWJlcnMuCisiMDA3NyIgcmVzdWx0cyBpbiAiMDEwMCIsIENUUkwtWCBvbiAiMHgxMDAiIHJlc3VsdHMgaW4gIjB4MGZmIi4KKworTm90ZSB0aGF0IHdoZW4gJ25yZm9ybWF0cycgaW5jbHVkZXMgIm9jdGFsIiwgZGVjaW1hbCBudW1iZXJzIHdpdGggbGVhZGluZworemVyb3MgYXJlIGltcG9zc2libGUgYmVjYXVzZSB0aGV5IGFyZSBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIG9jdGFsIG51bWJlcnMuCiAKIFRoZSBDVFJMLUEgY29tbWFuZCBpcyB2ZXJ5IHVzZWZ1bCBpbiBhIG1hY3JvLiAgRXhhbXBsZTogVXNlIHRoZSBmb2xsb3dpbmcKIHN0ZXBzIHRvIG1ha2UgYSBudW1iZXJlZCBsaXN0LgpAQCAtODYzLDggKzg2NCwxMCBAQAogCQkJCQkJCSo8TWlkZGxlTW91c2U+KgogWyJ4XTxNaWRkbGVNb3VzZT4JUHV0IHRoZSB0ZXh0IGZyb20gYSByZWdpc3RlciBiZWZvcmUgdGhlIGN1cnNvciBbY291bnRdCiAJCQl0aW1lcy4gIFVzZXMgdGhlICIqIHJlZ2lzdGVyLCB1bmxlc3MgYW5vdGhlciBpcwotCQkJc3BlY2lmaWVkLiAgVXNpbmcgdGhlIG1vdXNlIG9ubHkgd29ya3Mgd2hlbiAnbW91c2UnCi0JCQljb250YWlucyAnbicgb3IgJ2EnLgorCQkJc3BlY2lmaWVkLiAgCisJCQlMZWF2ZXMgdGhlIGN1cnNvciBhdCB0aGUgZW5kIG9mIHRoZSBuZXcgdGV4dC4KKwkJCVVzaW5nIHRoZSBtb3VzZSBvbmx5IHdvcmtzIHdoZW4gJ21vdXNlJyBjb250YWlucyAnbicKKwkJCW9yICdhJy4KIAkJCXtub3QgaW4gVml9CiAJCQlJZiB5b3UgaGF2ZSBhIHNjcm9sbHdoZWVsIGFuZCBvZnRlbiBhY2NpZGVudGFsbHkgcGFzdGUKIAkJCXRleHQsIHlvdSBjYW4gdXNlIHRoZXNlIG1hcHBpbmdzIHRvIGRpc2FibGUgdGhlCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9ldmltLWl0LjEgYi9ydW50aW1lL2RvYy9ldmltLWl0LjEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjQ0Zjc5MwotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvZG9jL2V2aW0taXQuMQpAQCAtMCwwICsxLDU0IEBACisuVEggRVZJTSAxICIxNiBmZWJicmFpbyAyMDAyICIKKy5TSCBOT01FCitldmltIFwtIFZpbSAiZmFjaWxlIiwgVmltIGltcG9zdGF0byBpbiBtb2RvIGRhIHBvdGVyIGVzc2VyZSB1c2F0bworZmFjaWxtZW50ZSBwZXIgbW9kaWZpY2FyZSBmaWxlLCBhbmNoZSBkYSBjaGkgbm9uIGFiYmlhIGZhbWlsaWFyaXTgCitjb24gaSBjb21hbmRpLgorLlNIIFNJTlRBU1NJCisuYnIKKy5CIGV2aW0KK1tvcHppb25pXSBbZmlsZSAuLl0KKy5icgorLkIgZXZpZXcKKy5TSCBERVNDUklaSU9ORQorLkIgZXZpbQorSW5pemlhCisuQiBWaW0KK2UgaW1wb3N0YSBsZSBvcHppb25pIHBlciBmYXJsbyBjb21wb3J0YXJlIGNvbWUgdW4gZWRpdG9yZSAibW9kZWxlc3MiLgorU3RhdGUgc2VtcHJlIHVzYW5kbyBWaW0sIG1hIGNvbWUgdW4gZWRpdG9yZSAicG9zaXppb25hdGktZS1jbGljY2EiLgorU2ltaWxlIGFsbCd1c28gZGkgTm90ZXBhZCBpbiBNUy1XaW5kb3dzLgorLkIgZXZpbQorcmljaGllZGUgbGEgcHJlc2VuemEgZGVsbGEgR1VJLCBwZXIgYXZlcmUgYSBkaXNwb3NpemlvbmUgbWVudSBlIGJhcnJhCitzdHJ1bWVudGkuCisuUFAKK0RhIHVzYXJzaSBzb2xvIGRhIHBhcnRlIGRpIGNoaSBub24g6CBpbiBncmFkbyBkaSBsYXZvcmFyZSBjb24gVmltIG5lbGxhCittYW5pZXJhIHVzdWFsZS4KK0xhIG1vZGlmaWNhIGZpbGUgc2Fy4CBtb2x0byBtZW5vIGVmZmljaWVudGUuCisuUFAKKy5CIGV2aWV3Citjb21lIHNvcHJhLCBtYSBwYXJ0ZSBpbiBtb2RhbGl04CAiU29sYSBMZXR0dXJhIi4gIEZ1bnppb25hIGNvbWUgZXZpbSAtUi4KKy5QUAorVmVkZXJlIHZpbSgxKSBwZXIgZGV0dGFnbGkgcmlndWFyZG8gYSBWaW0sIG9wemlvbmksIGV0Yy4KKy5QUAorTCdvcHppb25lICdpbnNlcnRtb2RlJyDoIGltcG9zdGF0YSBwZXIgcG90ZXIgaW1tZXR0ZXJlIGRlbCB0ZXN0byBkaXJldHRhbWVudGUuCisuYnIKK1Nvbm8gZGVmaW5pdGUgZGVsbGUgbWFwcGF0dXJlIGNoZSBjb25zZW50b25vIGRpIHVzYXJlIENPUElBIGUgSU5DT0xMQSBjb24gaQorZmFtaWxpYXJpIHRhc3RpIHVzYXRpIHNvdHRvIE1TLVdpbmRvd3MuCitDVFJMLVggdGFnbGlhIHRlc3RvLCBDVFJMLUMgY29waWEgdGVzdG8gZSBDVFJMLVYgaW5jb2xsYSB0ZXN0by4KK1VzYXRlIENUUkwtUSBwZXIgb3R0ZW5lcmUgcXVlbGxvIGNocyBzaSBvdHRpZXJyZWJiZSBjb24gQ1RSTC1WIGluIFZpbSBuYXRpdm8uCisuU0ggT1BaSU9OSQorVmVkZXJlIHZpbSgxKS4KKy5TSCBGSUxFCisuVFAgMTUKKy91c3IvbG9jYWwvbGliL3ZpbS9ldmltLnZpbQorTG8gc2NyaXB0IGNhcmljYXRvIHBlciBpbml6aWFsaXp6YXJlIGVWaW0uCisuU0ggTkFDIFtOT1RPIEFOQ0hFIENPTUVdCitOb3RvIEFuY2hlIENvbWUgIlZpbSBwZXIgc2VtcGxpY2kiLgorUXVhbmRvIHVzYXRlIGV2aW0gc2kgc3VwcG9uZSBjaGUgcHJlbmRpYXRlIHVuIGZhenpvbGV0dG8sCitmYWNjaWF0ZSB1biBub2RvIGFkIG9nbmkgYW5nb2xvIGUgdmUgbG8gbWV0dGlhdGUgaW4gdGVzdGEuCisuU0ggVkVERVJFIEFOQ0hFCit2aW0oMSkKKy5TSCBBVVRPUkUKK0J1b25hIHBhcnRlIGRpCisuQiBWaW0KK+ggc3RhdG8gc2NyaXR0byBkYSBCcmFtIE1vb2xlbmFhciwgY29uIG1vbHRvIGFpdXRvIGRhIGFsdHJpLgorVmVkZXJlIGlsIE1lbnUgIkFpdXRvL0NyZWRpdGkiLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaWZfb2xlLnR4dCBiL3J1bnRpbWUvZG9jL2lmX29sZS50eHQKaW5kZXggOWNlZDM0ZS4uMDZlNWI0MiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaWZfb2xlLnR4dAorKysgYi9ydW50aW1lL2RvYy9pZl9vbGUudHh0CkBAIC0xLDQgKzEsNCBAQAotKmlmX29sZS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDAzIEp1biAxOQorKmlmX29sZS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IERlYyAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBQYXVsIE1vb3JlCkBAIC0xNTgsNSArMTU4LDQxIEBACiB0aGUgT0xFIHZlcnNpb24uICBUaGUgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlIHJ1bnRpbWUgZGlyZWN0b3J5LCB0aGUKIFJFQURNRV9WaXNWaW0udHh0IGZpbGUuCiAKKworVXNpbmcgVmltIHdpdGggVmlzdWFsIFN0dWRpbyAuTmV0fgorCitXaXRoIC5OZXQgeW91IG5vIGxvbmdlciByZWFsbHkgbmVlZCBWaXNWaW0sIHNpbmNlIC5OZXQgc3R1ZGlvIGhhcyBzdXBwb3J0IGZvcgorZXh0ZXJuYWwgZWRpdG9ycy4gIEZvbGxvdyB0aGVzZSBkaXJlY3Rpb25zOgorCitJbiAuTmV0IFN0dWRpbyBjaG9vc2UgZnJvbSB0aGUgbWVudSBUb29scy0+RXh0ZXJuYWwgVG9vbHMuLi4KK0FkZAorICAgICBUaXRsZSAgICAgLSBWaW0KKyAgICAgQ29tbWFuZCAgIC0gYzpcdmltXHZpbTYzXGd2aW0uZXhlCisgICAgIEFyZ3VtZW50cyAtIC0tc2VydmVybmFtZSBWU19ORVQgLS1yZW1vdGUtc2lsZW50ICIrY2FsbCBjdXJzb3IoJChDdXJMaW5lKSwgJChDdXJDb2wpKSIgJChJdGVtUGF0aCkgIAorICAgICBJbml0IERpciAgLSBFbXB0eQorCitOb3csIHdoZW4geW91IG9wZW4gYSBmaWxlIGluIC5OZXQsIHlvdSBjYW4gY2hvb3NlIGZyb20gdGhlIC5OZXQgbWVudToKK1Rvb2xzLT5WaW0KKworVGhhdCB3aWxsIG9wZW4gdGhlIGZpbGUgaW4gVmltLgorWW91IGNhbiB0aGVuIGFkZCB0aGlzIGV4dGVybmFsIGNvbW1hbmQgYXMgYW4gaWNvbiBhbmQgcGxhY2UgaXQgYW55d2hlcmUgeW91CitsaWtlLiAgWW91IG1pZ2h0IGFsc28gYmUgYWJsZSB0byBzZXQgdGhpcyBhcyB5b3VyIGRlZmF1bHQgZWRpdG9yLgorCitJZiB5b3UgcmVmaW5lIHRoaXMgZnVydGhlciwgcGxlYXNlIHBvc3QgYmFjayB0byB0aGUgVmltIG1haWxsaXN0IHNvIHdlIGhhdmUgYQorcmVjb3JkIG9mIGl0LgorCistLXNlcnZlcm5hbWUgVlNfTkVUIAorVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB2aW0gY2FsbGVkIFZTX05FVC4gIFNvIGlmIHlvdSBvcGVuIG11bHRpcGxlCitmaWxlcyBmcm9tIFZTLCB0aGV5IHdpbGwgdXNlIHRoZSBzYW1lIGluc3RhbmNlIG9mIFZpbS4gIFRoaXMgYWxsb3dzIHlvdSB0bworaGF2ZSBtdWx0aXBsZSBjb3BpZXMgb2YgVmltIHJ1bm5pbmcsIGJ1dCB5b3UgY2FuIGNvbnRyb2wgd2hpY2ggb25lIGhhcyBWUworZmlsZXMgaW4gaXQuCisKKy0tcmVtb3RlLXNpbGVudCAiK2NhbGwgY3Vyc29yKDEwLCAyNykiIAorICAgICAgICAgICAgICAtIFBsYWNlcyB0aGUgY3Vyc29yIG9uIGxpbmUgMTAgY29sdW1uIDI3CitJbiBWaW0gPgorICAgOmggLS1yZW1vdGUtc2lsZW50IGZvciBtb3IgZGV0YWlscworCitbLk5ldCByZW1hcmtzIHByb3ZpZGVkIGJ5IERhdmUgRmlzaGJ1cm4gYW5kIEJyaWFuIFN0dXJrXQorCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICB2aW06dHc9Nzg6dHM9ODpmdD1oZWxwOm5vcmw6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pbmRleC50eHQgYi9ydW50aW1lL2RvYy9pbmRleC50eHQKaW5kZXggNjI1NzRkNC4uODY3MjFkNSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaW5kZXgudHh0CisrKyBiL3J1bnRpbWUvZG9jL2luZGV4LnR4dApAQCAtMSw0ICsxLDQgQEAKLSppbmRleC50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBTZXAgMDcKKyppbmRleC50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBOb3YgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMyOCw4ICszMjgsNyBAQAogCQkJCSAgIGNoYXJhY3RlcnMsIHJlcGVhdCB0aGUgZW50ZXJlZCB0ZXh0IE4tMQogCQkJCSAgIHRpbWVzCiB8U3wJCVsieF1TCQkyICBkZWxldGUgTiBsaW5lcyBbaW50byBidWZmZXIgeF0gYW5kIHN0YXJ0Ci0JCQkJICAgaW5zZXJ0OyBzeW5vbnltIGZvciAiXmNjIiBvciAiMGNjIiwKLQkJCQkgICBkZXBlbmRpbmcgb24gYXV0b2luZGVudAorCQkJCSAgIGluc2VydDsgc3lub255bSBmb3IgImNjIi4KIHxUfAkJVHtjaGFyfQkJMSAgY3Vyc29yIHRpbGwgYWZ0ZXIgTnRoIG9jY3VycmVuY2Ugb2Yge2NoYXJ9CiAJCQkJICAgdG8gdGhlIGxlZnQKIHxVfAkJVQkJMiAgdW5kbyBhbGwgbGF0ZXN0IGNoYW5nZXMgb24gb25lIGxpbmUKQEAgLTQyNSw3ICs0MjQsNyBAQAogfDxJbnNlcnQ+fAk8SW5zZXJ0PgkyICBzYW1lIGFzICJpIgogfDxMZWZ0PnwJPExlZnQ+CQkxICBzYW1lIGFzICJoIgogfDxMZWZ0TW91c2U+fAk8TGVmdE1vdXNlPgkxICBtb3ZlIGN1cnNvciB0byB0aGUgbW91c2UgY2xpY2sgcG9zaXRpb24KLXw8TWlkZGxlTW91c2U+fCA8TWlkZGxlTW91c2U+CTIgIHNhbWUgYXMgIlAiIGF0IHRoZSBtb3VzZSBjbGljayBwb3NpdGlvbgorfDxNaWRkbGVNb3VzZT58IDxNaWRkbGVNb3VzZT4JMiAgc2FtZSBhcyAiZ1AiIGF0IHRoZSBtb3VzZSBjbGljayBwb3NpdGlvbgogfDxQYWdlRG93bj58CTxQYWdlRG93bj4JICAgc2FtZSBhcyBDVFJMLUYKIHw8UGFnZVVwPnwJPFBhZ2VVcD4JICAgc2FtZSBhcyBDVFJMLUIKIHw8UmlnaHQ+fAk8UmlnaHQ+CQkxICBzYW1lIGFzICJsIgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaW5zZXJ0LnR4dCBiL3J1bnRpbWUvZG9jL2luc2VydC50eHQKaW5kZXggMWI3MDQ0OC4uMGJiZjg2OCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaW5zZXJ0LnR4dAorKysgYi9ydW50aW1lL2RvYy9pbnNlcnQudHh0CkBAIC0xLDQgKzEsNCBAQAotKmluc2VydC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1bCAwNAorKmluc2VydC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IE5vdiAxOAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTI0LDYgKzEyNCw5IEBACiAJCQknLScJdGhlIGxhc3Qgc21hbGwgKGxlc3MgdGhhbiBhIGxpbmUpIGRlbGV0ZQogCQkJJz0nCXRoZSBleHByZXNzaW9uIHJlZ2lzdGVyOiB5b3UgYXJlIHByb21wdGVkIHRvCiAJCQkJZW50ZXIgYW4gZXhwcmVzc2lvbiAoc2VlIHxleHByZXNzaW9ufCkKKwkJCQlOb3RlIHRoYXQgMHg4MCAoMTI4IGRlY2ltYWwpIGlzIHVzZWQgZm9yCisJCQkJc3BlY2lhbCBrZXlzLCB1c2UgQ1RSTC1SIENUUkwtUiB0byBpbnNlcnQgaXQKKwkJCQlsaXRlcmFsbHkuCiAJCVNlZSB8cmVnaXN0ZXJzfCBhYm91dCByZWdpc3RlcnMuICB7bm90IGluIFZpfQogCiBDVFJMLVIgQ1RSTC1SIHswLTlhLXoiJSMqKy86Li09fQkJCSppX0NUUkwtUl9DVFJMLVIqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pbnRyby50eHQgYi9ydW50aW1lL2RvYy9pbnRyby50eHQKaW5kZXggMDNmNzMxNS4uMGQzNjI3YyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaW50cm8udHh0CisrKyBiL3J1bnRpbWUvZG9jL2ludHJvLnR4dApAQCAtMSw0ICsxLDQgQEAKLSppbnRyby50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBPY3QgMDgKKyppbnRyby50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBOb3YgMTgKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTM1MCw3ICszNTAsNyBAQAogCQljb25jYXRlbmF0ZWQuICBGb3IgZXhhbXBsZSwge2EtekEtWjAtOX0gaXMgYW55IGFscGhhbnVtZXJpYwogCQljaGFyYWN0ZXIuCiAKLQkJCQkJCQkqe21vdGlvbn0qCisJCQkJCQkqe21vdGlvbn0qICptb3ZlbWVudCoKIHttb3Rpb259CUEgY29tbWFuZCB0aGF0IG1vdmVzIHRoZSBjdXJzb3IuICBUaGVzZSBhcmUgZXhwbGFpbmVkIGluCiAJCXxtb3Rpb24udHh0fC4gIEV4YW1wbGVzOgogCQkJdwkJdG8gc3RhcnQgb2YgbmV4dCB3b3JkCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9tYXAudHh0IGIvcnVudGltZS9kb2MvbWFwLnR4dAppbmRleCA4YzA1ZGRjLi44Y2Q4ODU0IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9tYXAudHh0CisrKyBiL3J1bnRpbWUvZG9jL21hcC50eHQKQEAgLTEsNCArMSw0IEBACi0qbWFwLnR4dCogICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgTWF5IDIxCisqbWFwLnR4dCogICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgRGVjIDA5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yMzIsOCArMjMyLDYgQEAKIGlzIHR5cGVkLiAgVGhlIHN0YXRlIGxhc3QgdXNlZCBpcyByZW1lbWJlcmVkIGZvciBJbnNlcnQgbW9kZSBhbmQgU2VhcmNoCiBwYXR0ZXJucyBzZXBhcmF0ZWx5LiAgVGhlIHN0YXRlIGZvciBJbnNlcnQgbW9kZSBpcyBhbHNvIHVzZWQgd2hlbiB0eXBpbmcgYQogY2hhcmFjdGVyIGFzIGFuIGFyZ3VtZW50IHRvIGNvbW1hbmQgbGlrZSAiZiIgb3IgInQiLgotICAgV2hlbiBhZGRpbmcgYSAiOmxtYXAiIG1hcHBpbmcgdGhlIHVzZSBvZiB0aGVzZSBtYXBwaW5ncyBpbiBJbnNlcnQgbW9kZSBhbmQKLWZvciBTZWFyY2ggcGF0dGVybnMgd2lsbCBiZSBzd2l0Y2hlZCBvbi4KICAgIExhbmd1YWdlIG1hcHBpbmdzIHdpbGwgbmV2ZXIgYmUgYXBwbGllZCB0byBhbHJlYWR5IG1hcHBlZCBjaGFyYWN0ZXJzLiAgVGhleQogYXJlIG9ubHkgdXNlZCBmb3IgdHlwZWQgY2hhcmFjdGVycy4gIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBsYW5ndWFnZSBtYXBwaW5nCiB3YXMgYWxyZWFkeSBkb25lIHdoZW4gdHlwaW5nIHRoZSBtYXBwaW5nLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvbW90aW9uLnR4dCBiL3J1bnRpbWUvZG9jL21vdGlvbi50eHQKaW5kZXggOWQxNDllMC4uNGY5NDA1ZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvbW90aW9uLnR4dAorKysgYi9ydW50aW1lL2RvYy9tb3Rpb24udHh0CkBAIC0xLDQgKzEsNCBAQAotKm1vdGlvbi50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IFNlcCAwNworKm1vdGlvbi50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IE5vdiAyMwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtODE0LDggKzgxNCw4IEBACiAJCQlhcmVhIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4gIHtub3QgaW4gVml9LgogCiAJCQkJCQkJKicnKiAqYGAqCi0nJyAgYGAJCQlUbyB0aGUgcG9zaXRpb24gYmVmb3JlIGxhdGVzdCBqdW1wLCBvciB3aGVyZSB0aGUgbGFzdAotCQkJIm0nIiBvciAibWAiIGNvbW1hbmQgd2FzIGdpdmVuLiAgTm90IHNldCB3aGVuIHRoZQorJycgIGBgCQkJVG8gdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGUgbGF0ZXN0IGp1bXAsIG9yIHdoZXJlIHRoZQorCQkJbGFzdCAibSciIG9yICJtYCIgY29tbWFuZCB3YXMgZ2l2ZW4uICBOb3Qgc2V0IHdoZW4gdGhlCiAJCQl8OmtlZXBqdW1wc3wgY29tbWFuZCBtb2RpZmllciB3YXMgdXNlZC4KIAkJCUFsc28gc2VlIHxyZXN0b3JlLXBvc2l0aW9ufC4KIApAQCAtMTI0MCw3ICsxMjQwLDcgQEAKIAkJCUN1cnNvciBpcyBhZGp1c3RlZCBmb3IgJ3Njcm9sbG9mZicgb3B0aW9uLgogCiA8TGVmdE1vdXNlPgkJTW92ZXMgdG8gdGhlIHBvc2l0aW9uIG9uIHRoZSBzY3JlZW4gd2hlcmUgdGhlIG1vdXNlCi0JCQljbGljayBpcyB8aW5jbHVzaXZlfC4gIFNlZSBhbHNvIHw8TGVmdE1vdXNlPnwuICBJZiB0aGUKKwkJCWNsaWNrIGlzIHxleGNsdXNpdmV8LiAgU2VlIGFsc28gfDxMZWZ0TW91c2U+fC4gIElmIHRoZQogCQkJcG9zaXRpb24gaXMgaW4gYSBzdGF0dXMgbGluZSwgdGhhdCB3aW5kb3cgaXMgbWFkZSB0aGUKIAkJCWFjdGl2ZSB3aW5kb3cgYW5kIHRoZSBjdXJzb3IgaXMgbm90IG1vdmVkLiAge25vdCBpbiBWaX0KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAppbmRleCA3NjlhNDVjLi5hODg4ZDkyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAorKysgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgT2N0IDIxCisqb3B0aW9ucy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IERlYyAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMzksNiArMTM5LDkgQEAKICh0aGUgXlsgaXMgYSByZWFsIDxFc2M+IGhlcmUsIHVzZSBDVFJMLVYgPEVzYz4gdG8gZW50ZXIgaXQpCiBUaGUgYWR2YW50YWdlIG92ZXIgYSBtYXBwaW5nIGlzIHRoYXQgaXQgd29ya3MgaW4gYWxsIHNpdHVhdGlvbnMuCiAKK1RoZSB0X3h4IG9wdGlvbnMgY2Fubm90IGJlIHNldCBmcm9tIGEgfG1vZGVsaW5lfCBvciBpbiB0aGUgfHNhbmRib3h8LCBmb3IKK3NlY3VyaXR5IHJlYXNvbnMuCisKIFRoZSBsaXN0aW5nIGZyb20gIjpzZXQiIGxvb2tzIGRpZmZlcmVudCBmcm9tIFZpLiAgTG9uZyBzdHJpbmcgb3B0aW9ucyBhcmUgcHV0CiBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LiAgVGhlIG51bWJlciBvZiBvcHRpb25zIGlzIHF1aXRlIGxhcmdlLiAgVGhlIG91dHB1dCBvZgogInNldCBhbGwiIHByb2JhYmx5IGRvZXMgbm90IGZpdCBvbiB0aGUgc2NyZWVuLCBjYXVzaW5nIFZpbSB0byBnaXZlIHRoZQpAQCAtOTUzLDYgKzk1Niw3IEBACiAJYWNjaWRlbnRhbGx5IG92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzIHdpdGggYSBiYWNrdXAgZmlsZS4gIFlvdSBtaWdodAogCXByZWZlciB1c2luZyAiLmJhayIsIGJ1dCBtYWtlIHN1cmUgdGhhdCB5b3UgZG9uJ3QgaGF2ZSBmaWxlcyB3aXRoCiAJIi5iYWsiIHRoYXQgeW91IHdhbnQgdG8ga2VlcC4KKwlPbmx5IG5vcm1hbCBmaWxlIG5hbWUgY2hhcmFjdGVycyBjYW4gYmUgdXNlZCwgIi9cKj9bfDw+IiBhcmUgaWxsZWdhbC4KIAogCUlmIHlvdSBsaWtlIHRvIGtlZXAgYSBsb3Qgb2YgYmFja3VwcywgeW91IGNvdWxkIHVzZSBhIEJ1ZldyaXRlUHJlCiAJYXV0b2NvbW1hbmQgdG8gY2hhbmdlICdiYWNrdXBleHQnIGp1c3QgYmVmb3JlIHdyaXRpbmcgdGhlIGZpbGUgdG8KQEAgLTE4MzUsNyArMTgzOSw5IEBACiAJCQlldmVyeXRoaW5nIGluc2lkZSBxdW90ZXMgaXMgaWdub3JlZC4gIFdoZW4gbWF0Y2hpbmcgYQogCQkJcGFyZW4gaW5zaWRlIHF1b3RlcywgaXQgd2lsbCBmaW5kIHRoZSBtYXRjaGluZyBvbmUgKGlmCiAJCQl0aGVyZSBpcyBvbmUpLiAgVGhpcyB3b3JrcyB2ZXJ5IHdlbGwgZm9yIEMgcHJvZ3JhbXMuCi0JCQkJCQkJCSpjcG8tc3RhcioKKwkJCVRoaXMgZmxhZyBpcyBhbHNvIHVzZWQgZm9yIG90aGVyIGZlYXR1cmVzLCBzdWNoIGFzCisJCQlDLWluZGVudGluZy4KKwkJCSAJCQkJCWNwby1zdGFyKgogCQkqCVVzZSAiOioiIGluIHRoZSBzYW1lIHdheSBhcyAiOkAiLiAgV2hlbiBub3QgaW5jbHVkZWQsCiAJCQkiOioiIGlzIGFuIGFsaWFzIGZvciAiOic8LCc+Iiwgc2VsZWN0IHRoZSBWaXN1YWwgYXJlYS4KIAkJCQkJCQkJKmNwby08KgpAQCAtMjQ3OSw2ICsyNDg1LDcgQEAKIAl0eXBlIHRoYXQgaXMgYWN0dWFsbHkgc3RvcmVkIHdpdGggdGhlIGZpbGUuCiAJVGhpcyBvcHRpb24gaXMgbm90IGNvcGllZCB0byBhbm90aGVyIGJ1ZmZlciwgaW5kZXBlbmRlbnQgb2YgdGhlICdzJyBvcgogCSdTJyBmbGFnIGluICdjcG9wdGlvbnMnLgorCU9ubHkgbm9ybWFsIGZpbGUgbmFtZSBjaGFyYWN0ZXJzIGNhbiBiZSB1c2VkLCAiL1wqP1t8PD4iIGFyZSBpbGxlZ2FsLgogCiAJCQkJCQkqJ2ZpbGxjaGFycycqIConZmNzJyoKICdmaWxsY2hhcnMnICdmY3MnCXN0cmluZwkoZGVmYXVsdCAidmVydDp8LGZvbGQ6LSIpCkBAIC0yNzI1LDYgKzI3MzIsMjAgQEAKIAlUaGlzIG9wdGlvbiBjYW5ub3QgYmUgc2V0IGZyb20gYSB8bW9kZWxpbmV8IG9yIGluIHRoZSB8c2FuZGJveHwsIGZvcgogCXNlY3VyaXR5IHJlYXNvbnMuCiAKKwkJCQkJCQkqJ2ZzeW5jJyogKidmcycqCisnZnN5bmMnICdmcycJCWJvb2xlYW4JKGRlZmF1bHQgb24pCisJCQlnbG9iYWwKKwkJCXtub3QgaW4gVml9CisJV2hlbiBvbiwgdGhlIGxpYnJhcnkgZnVuY3Rpb24gZnN5bmMoKSB3aWxsIGJlIGNhbGxlZCBhZnRlciB3cml0aW5nIGEKKwlmaWxlLiAgVGhpcyB3aWxsIGZsdXNoIGEgZmlsZSB0byBkaXNrLCBlbnN1cmluZyB0aGF0IGl0IGlzIHNhZmVseQorCXdyaXR0ZW4gZXZlbiBvbiBmaWxlc3lzdGVtcyB3aGljaCBkbyBtZXRhZGF0YS1vbmx5IGpvdXJuYWxpbmcuICBUaGlzCisJd2lsbCBmb3JjZSB0aGUgaGFyZGRyaXZlIHRvIHNwaW4gdXAgb24gTGludXggc3lzdGVtcyBydW5uaW5nIGluIGxhcHRvcAorCW1vZGUsIHNvIGl0IG1heSBiZSB1bmRlc2lyYWJsZSBpbiBzb21lIHNpdHVhdGlvbnMuICBCZSB3YXJuZWQgdGhhdAorCXR1cm5pbmcgdGhpcyBvZmYgaW5jcmVhc2VzIHRoZSBjaGFuY2VzIG9mIGRhdGEgbG9zcyBhZnRlciBhIGNyYXNoLiAgT24KKwlzeXN0ZW1zIHdpdGhvdXQgYW4gZnN5bmMoKSBpbXBsZW1lbnRhdGlvbiwgdGhpcyB2YXJpYWJsZSBpcyBhbHdheXMKKwlvZmYuCisJQWxzbyBzZWUgJ3N3YXBzeW5jJyBmb3IgY29udHJvbGxpbmcgZnN5bmMoKSBvbiBzd2FwIGZpbGVzLgorCiAJCQkJICAgKidnZGVmYXVsdCcqIConZ2QnKiAqJ25vZ2RlZmF1bHQnKiAqJ25vZ2QnKgogJ2dkZWZhdWx0JyAnZ2QnCQlib29sZWFuCShkZWZhdWx0IG9mZikKIAkJCWdsb2JhbApAQCAtMjc5MSw2ICsyODEyLDcgQEAKIAl0aGUgaGVpZ2h0IG9mIHRoZSBjdXJzb3IgY2FuIGJlIGNoYW5nZWQuICBUaGlzIGNhbiBiZSBkb25lIGJ5CiAJc3BlY2lmeWluZyBhIGJsb2NrIGN1cnNvciwgb3IgYSBwZXJjZW50YWdlIGZvciBhIHZlcnRpY2FsIG9yCiAJaG9yaXpvbnRhbCBjdXJzb3IuCisJRm9yIGEgY29uc29sZSB0aGUgJ3RfU0knIGFuZCAndF9FSScgZXNjYXBlIHNlcXVlbmNlcyBhcmUgdXNlZC4KIAogCVRoZSBvcHRpb24gaXMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwYXJ0cy4gIEVhY2ggcGFydCBjb25zaXN0IG9mIGEKIAltb2RlLWxpc3QgYW5kIGFuIGFyZ3VtZW50LWxpc3Q6CkBAIC0zNjg2LDYgKzM3MDgsNyBAQAogCVNldHRpbmcgdGhpcyBvcHRpb24gdG8gYSB2YWxpZCBrZXltYXAgbmFtZSBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mCiAJc2V0dGluZyAnaW1pbnNlcnQnIHRvIG9uZSwgc28gdGhhdCB0aGUga2V5bWFwIGJlY29tZXMgZWZmZWN0aXZlLgogCSdpbXNlYXJjaCcgaXMgYWxzbyBzZXQgdG8gb25lLCB1bmxlc3MgaXQgd2FzIC0xCisJT25seSBub3JtYWwgZmlsZSBuYW1lIGNoYXJhY3RlcnMgY2FuIGJlIHVzZWQsICIvXCo/W3w8PiIgYXJlIGlsbGVnYWwuCiAKIAkJCQkJKidrZXltb2RlbCcqICona20nKgogJ2tleW1vZGVsJyAna20nCQlzdHJpbmcJKGRlZmF1bHQgIiIpCkBAIC0zNzc3LDYgKzM4MDAsNyBAQAogCW1hdHRlciB3aGF0ICRMQU5HIGlzIHNldCB0bzogPgogCQk6c2V0IGxhbmdtZW51PW5sX05MLklTT184ODU5LTEKIDwJV2hlbiAnbGFuZ21lbnUnIGlzIGVtcHR5LCB8djpsYW5nfCBpcyB1c2VkLgorCU9ubHkgbm9ybWFsIGZpbGUgbmFtZSBjaGFyYWN0ZXJzIGNhbiBiZSB1c2VkLCAiL1wqP1t8PD4iIGFyZSBpbGxlZ2FsLgogCUlmIHlvdXIgJExBTkcgaXMgc2V0IHRvIGEgbm9uLUVuZ2xpc2ggbGFuZ3VhZ2UgYnV0IHlvdSBkbyB3YW50IHRvIHVzZQogCXRoZSBFbmdsaXNoIG1lbnVzOiA+CiAJCTpzZXQgbGFuZ21lbnU9bm9uZQpAQCAtNDQyNyw2ICs0NDUxLDcgQEAKIAlVc2luZyAncGF0Y2htb2RlJyBmb3IgY29tcHJlc3NlZCBmaWxlcyBhcHBlbmRzIHRoZSBleHRlbnNpb24gYXQgdGhlCiAJZW5kIChlLmcuLCAiZmlsZS5nei5vcmlnIiksIHRodXMgdGhlIHJlc3VsdGluZyBuYW1lIGlzbid0IGFsd2F5cwogCXJlY29nbml6ZWQgYXMgYSBjb21wcmVzc2VkIGZpbGUuCisJT25seSBub3JtYWwgZmlsZSBuYW1lIGNoYXJhY3RlcnMgY2FuIGJlIHVzZWQsICIvXCo/W3w8PiIgYXJlIGlsbGVnYWwuCiAKIAkJCQkJKidwYXRoJyogKidwYScqICpFMzQzKiAqRTM0NSogKkUzNDcqCiAncGF0aCcgJ3BhJwkJc3RyaW5nCShkZWZhdWx0IG9uIFVuaXg6ICIuLC91c3IvaW5jbHVkZSwsIgpAQCAtNDUzNyw2ICs0NTYyLDggQEAKIAkJCWZlYXR1cmV9CiAJVGhlIG5hbWUgb2YgdGhlIHByaW50ZXIgdG8gYmUgdXNlZCBmb3IgfDpoYXJkY29weXwuCiAJU2VlIHxwZGV2LW9wdGlvbnwuCisJVGhpcyBvcHRpb24gY2Fubm90IGJlIHNldCBmcm9tIGEgfG1vZGVsaW5lfCBvciBpbiB0aGUgfHNhbmRib3h8LCBmb3IKKwlzZWN1cml0eSByZWFzb25zLgogCiAJCQkJCQkqJ3ByaW50ZW5jb2RpbmcnKiAqJ3BlbmMnKgogJ3ByaW50ZW5jb2RpbmcnICdwZW5jJwlTdHJpbmcJKGRlZmF1bHQgZW1wdHksIGV4Y2VwdCBmb3Igc29tZSBzeXN0ZW1zKQpAQCAtNTY0Nyw2ICs1Njc0LDcgQEAKIAlzeXN0ZW1zIHRoZSBzd2FwIGZpbGUgd2lsbCBub3QgYmUgd3JpdHRlbiBhdCBhbGwuICBGb3IgYSB1bml4IHN5c3RlbQogCXNldHRpbmcgaXQgdG8gInN5bmMiIHdpbGwgdXNlIHRoZSBzeW5jKCkgY2FsbCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0CiAJZnN5bmMoKSwgd2hpY2ggbWF5IHdvcmsgYmV0dGVyIG9uIHNvbWUgc3lzdGVtcy4KKwlUaGUgJ2ZzeW5jJyBvcHRpb24gaXMgdXNlZCBmb3IgdGhlIGFjdHVhbCBmaWxlLgogCiAJCQkJCQkqJ3N3aXRjaGJ1ZicqIConc3diJyoKICdzd2l0Y2hidWYnICdzd2InCXN0cmluZwkoZGVmYXVsdCAiIikKQEAgLTU2ODcsNiArNTcxNSw3IEBACiAJU3ludGF4IGF1dG9jb21tYW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB3aXRoIHRoZSB2YWx1ZSBhcyBhcmd1bWVudC4KIAlUaGlzIG9wdGlvbiBpcyBub3QgY29waWVkIHRvIGFub3RoZXIgYnVmZmVyLCBpbmRlcGVuZGVudCBvZiB0aGUgJ3MnIG9yCiAJJ1MnIGZsYWcgaW4gJ2Nwb3B0aW9ucycuCisJT25seSBub3JtYWwgZmlsZSBuYW1lIGNoYXJhY3RlcnMgY2FuIGJlIHVzZWQsICIvXCo/W3w8PiIgYXJlIGlsbGVnYWwuCiAKIAkJCQkJKid0YWJzdG9wJyogKid0cycqCiAndGFic3RvcCcgJ3RzJwkJbnVtYmVyCShkZWZhdWx0IDgpCkBAIC02MDY1LDYgKzYwOTQsOCBAQAogCVRoaXMgb3B0aW9uIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHdpbmRvdyB0aXRsZSB3aGVuIGV4aXRpbmcgVmltIGlmIHRoZQogCW9yaWdpbmFsIHRpdGxlIGNhbm5vdCBiZSByZXN0b3JlZC4gIE9ubHkgaGFwcGVucyBpZiAndGl0bGUnIGlzIG9uIG9yCiAJJ3RpdGxlc3RyaW5nJyBpcyBub3QgZW1wdHkuCisJVGhpcyBvcHRpb24gY2Fubm90IGJlIHNldCBmcm9tIGEgfG1vZGVsaW5lfCBvciBpbiB0aGUgfHNhbmRib3h8LCBmb3IKKwlzZWN1cml0eSByZWFzb25zLgogCQkJCQkJKid0aXRsZXN0cmluZycqCiAndGl0bGVzdHJpbmcnCQlzdHJpbmcJKGRlZmF1bHQgIiIpCiAJCQlnbG9iYWwKQEAgLTY2NDksOCArNjY4MCw4IEBACiAJCWtleXMgY2FuIGJlIG1hcHBlZC4KIAlJZiB0aGUgbWVudSBpcyBkaXNhYmxlZCBieSBleGNsdWRpbmcgJ20nIGZyb20gJ2d1aW9wdGlvbnMnLCB0aGUgQUxUCiAJa2V5IGlzIG5ldmVyIHVzZWQgZm9yIHRoZSBtZW51LgotCUluIHRoZSBXaW4zMiB2ZXJzaW9uLCB0aGUgPEYxMD4ga2V5IGlzIGhhbmRsZWQgbGlrZSB0aGlzIHRvbywgc2luY2UKLQlXaW5kb3dzIHVzZXMgaXQgdG8gc2VsZWN0IGEgbWVudS4KKwlUaGlzIG9wdGlvbiBpcyBub3QgdXNlZCBmb3IgPEYxMD47IG9uIFdpbjMyIGFuZCB3aXRoIEdUSyA8RjEwPiB3aWxsCisJc2VsZWN0IHRoZSBtZW51LCB1bmxlc3MgaXQgaGFzIGJlZW4gbWFwcGVkLgogCiAJCQkJCQkqJ3dpbmhlaWdodCcqICond2gnKiAqRTU5MSoKICd3aW5oZWlnaHQnICd3aCcJbnVtYmVyCShkZWZhdWx0IDEpCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9waV9uZXRydy50eHQgYi9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKaW5kZXggNDdkMGQ3ZS4uNGU4MjQzZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CisrKyBiL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpwaV9uZXRydy50eHQgIEZvciBWaW0gdmVyc2lvbiA2LjIuICBMYXN0IGNoYW5nZTogU2VwIDEzLCAyMDA0CisqcGlfbmV0cncudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDYuMy4gIExhc3QgY2hhbmdlOiBPY3QgMDgsIDIwMDQKIAogCiAJCVZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgpAQCAtNTM2LDExICs1MzYsMTMgQEAKICAgICAgPGMtbD4uLi4uLi5SZWZyZXNoaW5nIHRoZSBMaXN0aW5nLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWN0cmwtbHwKICAgICAgby4uLi4uLi4uLi5Ccm93c2luZyB3aXRoIGEgSG9yaXpvbnRhbCBTcGxpdC4uLi4uLi4ufG5ldHJ3LW98CiAgICAgIHAuLi4uLi4uLi4uUHJldmlldyBXaW5kb3cuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1wfAotICAgICBxLi4uLi4uLi4uLkxpc3RpbmcgQm9va21hcmtzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcXwKKyAgICAgcS4uLi4uLi4uLi5MaXN0aW5nIEJvb2ttYXJrcyBhbmQgSGlzdG9yeS4uLi4uLi4uLi4ufG5ldHJ3LXF8CiAgICAgIHIuLi4uLi4uLi4uUmV2ZXJzaW5nIFNvcnRpbmcgT3JkZXIuLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1yfAogICAgICBSLi4uLi4uLi4uLlJlbmFtaW5nIEZpbGVzIG9yIERpcmVjdG9yaWVzLi4uLi4uLi4uLi58bmV0cnctUnwKICAgICAgcy4uLi4uLi4uLi5TZWxlY3RpbmcgU29ydGluZyBTdHlsZS4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXN8CiAgICAgIFMuLi4uLi4uLi4uRWRpdGluZyB0aGUgU29ydGluZyBTZXF1ZW5jZS4uLi4uLi4uLi4uLnxuZXRydy1TfAorICAgICB1Li4uLi4uLi4uLkNoYW5naW5nIHRvIGEgUHJlZGVjZXNzb3IgRGlyZWN0b3J5Li4uLi58bmV0cnctdXwKKyAgICAgVS4uLi4uLi4uLi5DaGFuZ2luZyB0byBhIFN1Y2Nlc3NvciBEaXJlY3RvcnkuLi4uLi4ufG5ldHJ3LVV8CiAgICAgIHYuLi4uLi4uLi4uQnJvd3Npbmcgd2l0aCBhIFZlcnRpY2FsIFNwbGl0Li4uLi4uLi4uLnxuZXRydy12fAogICAgICB4Li4uLi4uLi4uLkN1c3RvbWl6aW5nIEJyb3dzaW5nLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cncteHwKIApAQCAtNzUxLDcgKzc1Myw3IEBACiBUaGUgIjxjdHJsLWg+IiBtYXAgYnJpbmdzIHVwIGEgcmVxdWVzdG9yIGFsbG93aW5nIHRoZSB1c2VyIHRvIGNoYW5nZSB0aGUKIGZpbGUvZGlyZWN0b3J5IGhpZGluZyBsaXN0LiAgVGhlIGhpZGluZyBsaXN0IGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIHBhdHRlcm5zCiBkZWxpbWl0ZWQgYnkgY29tbWFzLiAgRmlsZXMgYW5kL29yIGRpcmVjdG9yaWVzIHNhdGlzZnlpbmcgdGhlc2UgcGF0dGVybnMgd2lsbAotYmUgaGlkZGVuIChpZS4gbm90IHNob3duKS4KK2VpdGhlciBiZSBoaWRkZW4gKGllLiBub3Qgc2hvd24pIG9yIGJlIHRoZSBvbmx5IG9uZXMgZGlzcGxheWVkIChzZWUgfG5ldHJ3LWF8KS4KIAogCiBCUk9XU0lORyBXSVRIIEEgSE9SSVpPTlRBTExZIFNQTElUIFdJTkRPVwkJCSpuZXRydy1vKgpAQCAtODAyLDYgKzgwNCwyMiBAQAogInIiIGtleS4KIAogCitDSEFOR0lORyBUTyBBIFBSRURFQ0VTU09SIERJUkVDVE9SWQkJCQkqbmV0cnctdSoKKworRXZlcnkgdGltZSB5b3UgY2hhbmdlIHRvIGEgbmV3IGRpcmVjdG9yeSAobmV3IGZvciB0aGUgY3VycmVudCBzZXNzaW9uKSwKK25ldHJ3IHdpbGwgc2F2ZSB0aGUgZGlyZWN0b3J5IGluIGEgcmVjZW50bHktdmlzaXRlZCBkaXJlY3RvcnkgaGlzdG9yeQorbGlzdCAodW5sZXNzIGc6bmV0cndfZGlyaGlzdG1heCBpcyB6ZXJvOyBieSBkZWZhdWx0LCBpdHMgdGVuKS4gIFdpdGggdGhlCisidSIgbWFwLCBvbmUgY2FuIGNoYW5nZSB0byBhbiBlYXJsaWVyIGRpcmVjdG9yeSAocHJlZGVjZXNzb3IpLiAgVG8gZG8KK3RoZSBvcHBvc2l0ZSwgc2VlIHxuZXRydy1VfC4KKworCitDSEFOR0lORyBUTyBBIFNVQ0NFU1NPUiBESVJFQ1RPUlkJCQkJKm5ldHJ3LVUqCisKK1dpdGggdGhlICJVIiBtYXAsIG9uZSBjYW4gY2hhbmdlIHRvIGEgbGF0ZXIgZGlyZWN0b3J5IChzdWNjZXNzb3IpLgorVGhpcyBtYXAgaXMgdGhlIG9wcG9zaXRlIG9mIHRoZSAidSIgbWFwLiAoc2VlIHxuZXRydy11fCkgIFVzZSB0aGUKK3EgbWFwIHRvIGxpc3QgYm90aCB0aGUgYm9va21hcmtzIGFuZCBoaXN0b3J5LiAoc2VlIHxuZXRydy1xfCkKKworCiBCUk9XU0lORyBXSVRIIEEgVkVSVElDQUxMWSBTUExJVCBXSU5ET1cJCQkJKm5ldHJ3LXYqCiAKIE5vcm1hbGx5IG9uZSBlbnRlcnMgYSBmaWxlIG9yIGRpcmVjdG9yeSB1c2luZyB0aGUgPGNyPi4gIEhvd2V2ZXIsIHRoZSAidiIKQEAgLTg1NCw3ICs4NzIsOCBAQAogCXtjbnR9YgogCiBBbnkgY291bnQgbWF5IGJlIHVzZWQuICBPbmUgbWF5IHVzZSB2aW1pbmZvJ3MgIiEiIG9wdGlvbiB0byByZXRhaW4gYm9va21hcmtzCi1iZXR3ZWVuIHZpbSBzZXNzaW9ucy4KK2JldHdlZW4gdmltIHNlc3Npb25zLiAgU2VlIHxuZXRydy1CfCBmb3IgaG93IHRvIHJldHVybiB0byBhIGJvb2ttYXJrIGFuZAorfG5ldHJ3LXF8IGZvciBob3cgdG8gbGlzdCB0aGVtLgogCiAKIENIQU5HSU5HIFRPIEEgQk9PS01BUktFRCBESVJFQ1RPUlkJCQkJKm5ldHJ3LUIqCkBAIC04NjMsMTIgKzg4MiwxNCBAQAogCiAJe2NudH1CCiAKLUFueSBjb3VudCBtYXkgYmUgdXNlZC4KK0FueSBjb3VudCBtYXkgYmUgdXNlZCB0byByZWZlcmVuY2UgYW55IG9mIHRoZSBib29rbWFya3MuICBTZWUgfG5ldHJ3LWJ8Citmb3IgaG93IHRvIGJvb2ttYXJrIGEgZGlyZWN0b3J5IGFuZCB8bmV0cnctcXwgZm9yIGhvdyB0byBsaXN0IHRoZW0uCiAKIAotTElTVElORyBCT09LTUFSS1MJCQkJCQkqbmV0cnctcSoKK0xJU1RJTkcgQk9PS01BUktTIEFORCBISVNUT1JZCQkJCQkqbmV0cnctcSoKIAotUHJlc3NpbmcgInEiIHdpbGwgbGlzdCB0aGUgYm9va21hcmtlZCBkaXJlY3Rvcmllcy4gKHF1ZXJ5KQorUHJlc3NpbmcgInEiIHdpbGwgbGlzdCB0aGUgYm9va21hcmtlZCBkaXJlY3RvcmllcyBhbmQgZGlyZWN0b3J5IHRyYXZlcnNhbAoraGlzdG9yeSAocXVlcnkpLiAoc2VlIHxuZXRydy1ifCwgfG5ldHJ3LUJ8LCB8bmV0cnctdXwsIGFuZCB8bmV0cnctVXwpCiAKIAogSU1QUk9WSU5HIERJUkVDVE9SWSBCUk9XU0lORwkJCQkqbmV0cnctbGlzdC1oYWNrKgpAQCAtOTkxLDExICsxMDEyLDI2IEBACiAJICAgYXR0ZW1wdGluZyB0byByZWFkL3dyaXRlIHlvdXIgZmlsZSBvdmVyIHRoZSBuZXR3b3JrLiAgUGxlYXNlCiAJICAgc2VuZCB0aGF0IGluZm9ybWF0aW9uIHRvIDxuZXRydy52aW0+J3MgbWFpbnRhaW5lciwKIAotCQlkcmNoaXBOT1NQQU0gYXQgY2FtcGJlbGxmYW1pbHkuYml6IC0gTk9TUEFNCisJCU5kck9jaGlwIGF0IFNjYW1wYmVsbFBmYW1pbHkuQWJpek0gLSBOT1NQQU0KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAxMC4gSGlzdG9yeQkJCQkJCSpuZXRydy1oaXN0b3J5KgogCisJdjUyOiAqIG5vbnVtYmVyJ2luZyBub3cgc2V0IGZvciBicm93c2luZyBidWZmZXJzCisJICAgICAqIHdoZW4gdGhlIGhpZGluZyBsaXN0IGhpZCBhbGwgZmlsZXMsIGVycm9yIG1lc3NhZ2VzIGVuc3VlZC4gRml4ZWQKKwkgICAgICogd2hlbiBicm93c2luZywgc3dmIGlzIHNldCwgYnV0IGRpcmVjdG9yeSBpcyBub3Qgc2V0LCB3aGVuIG5ldHJ3CisJICAgICAgIHdhcyBhdHRlbXB0aW5nIHRvIHJlc3RvcmUgb3B0aW9ucywgdmltIHdhbnRlZCB0byBzYXZlIGEgc3dhcGZpbGUKKwkgICAgICAgdG8gYSBsb2NhbCBkaXJlY3RvcnkgdXNpbmcgYW4gdXJsLXN0eWxlIHBhdGguICBGaXhlZAorCXY1MTogKiBjeWd3aW4gZGV0ZWN0aW9uIG5vdyBhdXRvbWF0ZWQgKHVzaW5nIHdpbmRvd3MgYW5kICZzaGVsbCBpcyBiYXNoKQorCSAgICAgKiBjdXN0b21pemFibGUgYnJvd3NlciAiZmlsZSIgcmVqZWN0aW9uIHBhdHRlcm5zCisJICAgICAqIGRpcmVjdG9yeSBoaXN0b3J5CisJICAgICAqIDpbcmFuZ2VddyB1cmwgIG5vdyBzdXBwb3J0ZWQgKGllLiBuZXRydyBoYXMgYSBGaWxlV3JpdGVDbWQgZXZlbnQpCisJICAgICAqIGVycm9yIG1lc3NhZ2VzIGhhdmUgYSAiUHJlc3MgPGNyPiB0byBjb250aW51ZSIgdG8gYWxsb3cgdGhlbQorCSAgICAgICB0byBiZSBzZWVuCisJICAgICAqIGRpcmVjdG9yeSBicm93c2VyIGRpc3BsYXlzIG5vIGxvbmdlciBib3RoZXIgdGhlIHN3YXBmaWxlCisJICAgICAqIHUvVSBjb21tYW5kcyB0byBnbyB1cCBhbmQgZG93biB0aGUgaGlzdG9yeSBzdGFjaworCSAgICAgKiBoaXN0b3J5IHN0YWNrIG1heSBiZSBzYXZlZCB3aXRoIHZpbWluZm8gd2l0aCBpdHMgIiEiIG9wdGlvbgorCSAgICAgKiBidWdmaXhlcyBhc3NvY2lhdGVkIHdpdGggdW53YW50ZWQgW05vIEZpbGVzXSBlbnRyaWVzCiAJdjUwOiAqIGRpcmVjdG9yaWVzIG5vdyBkaXNwbGF5ZWQgdXNpbmcgYnVmdHlwZT1ub2ZpbGU7IHNob3VsZCBrZWVwIHRoZQogCSAgICAgICBkaXJlY3RvcnkgbmFtZXMgYXMtaXMKIAkgICAgICogYXR0ZW1wdHMgdG8gcmVtb3ZlIGVtcHR5ICJbTm8gRmlsZV0iIGJ1ZmZlcnMgbGVmdG92ZXIKQEAgLTEwMDMsOCArMTAzOSw4IEBACiAJICAgICAqIGJ1Z2ZpeDogYSAiY2Fwcy1sb2NrIiBlZGl0aW5nIGRpZmZpY3VsdHkgbGVmdCBpbiB2NDkgd2FzIGZpeGVkCiAJICAgICAqIHN5bnRheCBoaWdobGlnaHRpbmcgZm9yICJTaG93aW5nOiIgdGhlIGhpZGluZyBsaXN0IGluY2x1ZGVkCiAJICAgICAqIGJvb2ttYXJrcyBjYW4gbm93IGJlIHJldGFpbmVkIGlmICIhIiBpcyBpbiB0aGUgdmltaW5mbyBvcHRpb24KLQl2NDk6ICogd2lsbCB1c2UgZnRwIGZvciBodHRwOi8vLi4uLyBicm93c2luZyB2NDg6ICogT25lIG1heSB1c2UgZnRwIHRvCi0JICAgICAgIGRvIHJlbW90ZSBob3N0IGZpbGUgYnJvd3NpbmcKKwl2NDk6ICogd2lsbCB1c2UgZnRwIGZvciBodHRwOi8vLi4uLyBicm93c2luZyB2NDg6CisJICAgICAqIE9uZSBtYXkgdXNlIGZ0cCB0byBkbyByZW1vdGUgaG9zdCBmaWxlIGJyb3dzaW5nCiAJICAgICAqICh3aW5kb3dzIGFuZCAhY3lnd2luKSByZW1vdGUgYnJvd3Npbmcgd2l0aCBmdHAgY2FuIG5vdyB1c2UKIAkgICAgICAgdGhlICJkaXIiIGNvbW1hbmQgaW50ZXJuYWxseSB0byBwcm92aWRlIGxpc3RpbmdzCiAJICAgICAqIGc6bmV0cndfa2VlcGRpciBub3cgYWxsb3dzIG9uZSB0byBrZWVwIHRoZSBpbml0aWFsIGN1cnJlbnQKQEAgLTEwMzIsOSArMTA2OCw5IEBACiAJICAgICAgIGxpc3RpbmdzCiAJICAgICAqIGltcHJvdmVkIHVudXN1YWwgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWUgaGFuZGxpbmcgcHJldmlldwogCSAgICAgKiB3aW5kb3cgc3VwcG9ydAotCXY0NzogKiBub3cgaGFuZGxlcyBsb2NhbCBkaXJlY3RvcnkgYnJvd3NpbmcuICB2NDY6ICogbm93IGhhbmRsZXMKLQlyZW1vdGUgZGlyZWN0b3J5IGJyb3dzaW5nCi0JICAgICAqIGc6bmV0cndfc2lsZW50IChpZiAxKSB3aWxsIGNhdXNlIGFsbCB0cmFuc2ZlcnMgdG8gYmUgc2lsZW50J2QKKwl2NDc6ICogbm93IGhhbmRsZXMgbG9jYWwgZGlyZWN0b3J5IGJyb3dzaW5nLgorCXY0NjogKiBub3cgaGFuZGxlcyByZW1vdGUgZGlyZWN0b3J5IGJyb3dzaW5nCisJICAgICAqIGc6bmV0cndfc2lsZW50IChpZiAxKSB3aWxsIGNhdXNlIGFsbCB0cmFuc2ZlcnMgdG8gYmUgc2lsZW50CiAJdjQ1OiAqIG1hZGUgdGhlIFt1c2VyQF1ob3N0bmFtZTpwYXRoIGZvcm0gYSBiaXQgbW9yZSByZXN0cmljdGl2ZSB0bwogCSAgICAgICBiZXR0ZXIgaGFuZGxlIGVycm9ycyBpbiB1c2luZyBwcm90b2NvbHMgKGUuZy4gc2NwOnVzckBob3N0OmZpbGUKIAkgICAgICAgd2FzIGJlaW5nIHJlY29nbml6ZWQgYXMgYW4gcmNwIHJlcXVlc3QpIHY0NDogKiBjaGFuZ2VkIGZyb20KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CmluZGV4IDBlMTQ3YjUuLjU4M2E3ODQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3ludGF4LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzeW50YXgudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBPY3QgMTIKKypzeW50YXgudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBEZWMgMDkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNjQwLDYgKzY0MCwxMCBAQAogY19ub19jZm9ybWF0CQlkb24ndCBoaWdobGlnaHQgJS1mb3JtYXRzIGluIHN0cmluZ3MKIGNfbm9fYzk5CQlkb24ndCBoaWdobGlnaHQgQzk5IHN0YW5kYXJkIGl0ZW1zCiAKK1doZW4gJ2ZvbGRtZXRob2QnIGlzIHNldCB0byAic3ludGF4IiB0aGVuIC8qICovIGNvbW1lbnRzIGFuZCB7IH0gYmxvY2tzIHdpbGwKK2JlY29tZSBhIGZvbGQuICBJZiB5b3UgZG9uJ3Qgd2FudCBjb21tZW50cyB0byBiZWNvbWUgYSBmb2xkIHVzZTogPgorCTpsZXQgY19ub19jb21tZW50X2ZvbGQgPSAxCisKIElmIHlvdSBub3RpY2UgaGlnaGxpZ2h0aW5nIGVycm9ycyB3aGlsZSBzY3JvbGxpbmcgYmFja3dhcmRzLCB3aGljaCBhcmUgZml4ZWQKIHdoZW4gcmVkcmF3aW5nIHdpdGggQ1RSTC1MLCB0cnkgc2V0dGluZyB0aGUgImNfbWlubGluZXMiIGludGVybmFsIHZhcmlhYmxlCiB0byBhIGxhcmdlciBudW1iZXI6ID4KQEAgLTIxMjgsNiArMjEzMiw5IEBACiAKIE16U2NoZW1lLXNwZWNpZmljIHN0dWZmIHdpbGwgYmUgdXNlZCBpZiBiOmlzX216c2NoZW1lIG9yIGc6aXNfbXpzY2hlbWUKIHZhcmlhYmxlcyBhcmUgZGVmaW5lZC4KKyAKK0Fsc28gc2NoZW1lLnZpbSBzdXBwb3J0cyBrZXl3b3JkcyBvZiB0aGUgQ2hpY2tlbiBTY2hlbWUtPkMgY29tcGlsZXIuICBEZWZpbmUKK2I6aXNfY2hpY2tlbiBvciBnOmlzX2NoaWNrZW4sIGlmIHlvdSBuZWVkIHRoZW0uCiAKIAogU0RMCQkJCQkJKnNkbC52aW0qICpzZGwtc3ludGF4KgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFncyBiL3J1bnRpbWUvZG9jL3RhZ3MKaW5kZXggYjNlYTBlOC4uNGMwMjBhMSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFncworKysgYi9ydW50aW1lL2RvYy90YWdzCkBAIC0yMjksNiArMjI5LDggQEAKICdmb3JtYXRvcHRpb25zJwlvcHRpb25zLnR4dAkvKidmb3JtYXRvcHRpb25zJyoKICdmb3JtYXRwcmcnCW9wdGlvbnMudHh0CS8qJ2Zvcm1hdHByZycqCiAnZnAnCW9wdGlvbnMudHh0CS8qJ2ZwJyoKKydmcycJb3B0aW9ucy50eHQJLyonZnMnKgorJ2ZzeW5jJwlvcHRpb25zLnR4dAkvKidmc3luYycqCiAnZnQnCW9wdGlvbnMudHh0CS8qJ2Z0JyoKICdnY3InCW9wdGlvbnMudHh0CS8qJ2djcicqCiAnZ2QnCW9wdGlvbnMudHh0CS8qJ2dkJyoKQEAgLTc1Niw2ICs3NTgsNyBAQAogJ3RfQ1YnCXRlcm0udHh0CS8qJ3RfQ1YnKgogJ3RfQ28nCXRlcm0udHh0CS8qJ3RfQ28nKgogJ3RfREwnCXRlcm0udHh0CS8qJ3RfREwnKgorJ3RfRUknCXRlcm0udHh0CS8qJ3RfRUknKgogJ3RfRjEnCXRlcm0udHh0CS8qJ3RfRjEnKgogJ3RfRjInCXRlcm0udHh0CS8qJ3RfRjInKgogJ3RfRjMnCXRlcm0udHh0CS8qJ3RfRjMnKgpAQCAtNzg5LDYgKzc5Miw3IEBACiAndF9LTCcJdGVybS50eHQJLyondF9LTCcqCiAndF9SSScJdGVybS50eHQJLyondF9SSScqCiAndF9SVicJdGVybS50eHQJLyondF9SVicqCisndF9TSScJdGVybS50eHQJLyondF9TSScqCiAndF9TYicJdGVybS50eHQJLyondF9TYicqCiAndF9TZicJdGVybS50eHQJLyondF9TZicqCiAndF9XUCcJdGVybS50eHQJLyondF9XUCcqCkBAIC00Mjk4LDcgKzQzMDIsNiBAQAogY3BvLXAJb3B0aW9ucy50eHQJLypjcG8tcCoKIGNwby1yCW9wdGlvbnMudHh0CS8qY3BvLXIqCiBjcG8tcwlvcHRpb25zLnR4dAkvKmNwby1zKgotY3BvLXN0YXIJb3B0aW9ucy50eHQJLypjcG8tc3RhcioKIGNwby10CW9wdGlvbnMudHh0CS8qY3BvLXQqCiBjcG8tdQlvcHRpb25zLnR4dAkvKmNwby11KgogY3BvLXYJb3B0aW9ucy50eHQJLypjcG8tdioKQEAgLTQ5MjksNyArNDkzMiw2IEBACiBoZWJyZXcudHh0CWhlYnJldy50eHQJLypoZWJyZXcudHh0KgogaGVscAl2YXJpb3VzLnR4dAkvKmhlbHAqCiBoZWxwLWNvbnRleHQJaGVscC50eHQJLypoZWxwLWNvbnRleHQqCi1oZWxwLXRhZ3MJdGFncwkxCiBoZWxwLXRyYW5zbGF0ZWQJdmFyaW91cy50eHQJLypoZWxwLXRyYW5zbGF0ZWQqCiBoZWxwLXh0ZXJtLXdpbmRvdwl2YXJpb3VzLnR4dAkvKmhlbHAteHRlcm0td2luZG93KgogaGVscC50eHQJaGVscC50eHQJLypoZWxwLnR4dCoKQEAgLTUzOTEsNiArNTM5Myw3IEBACiBtb3VzZS1vdmVydmlldwl0ZXJtLnR4dAkvKm1vdXNlLW92ZXJ2aWV3KgogbW91c2Utc3dhcC1idXR0b25zCXRlcm0udHh0CS8qbW91c2Utc3dhcC1idXR0b25zKgogbW91c2UtdXNpbmcJdGVybS50eHQJLyptb3VzZS11c2luZyoKK21vdmVtZW50CWludHJvLnR4dAkvKm1vdmVtZW50KgogbXMtZG9zCW9zX21zZG9zLnR4dAkvKm1zLWRvcyoKIG1zZG9zCW9zX21zZG9zLnR4dAkvKm1zZG9zKgogbXNkb3MtYXJyb3dzCW9zX21zZG9zLnR4dAkvKm1zZG9zLWFycm93cyoKQEAgLTU0NjIsNiArNTQ2NSw3IEBACiBuZXRydy1ECXBpX25ldHJ3LnR4dAkvKm5ldHJ3LUQqCiBuZXRydy1SCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LVIqCiBuZXRydy1TCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LVMqCituZXRydy1VCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LVUqCiBuZXRydy1hY3RpdmF0ZQlwaV9uZXRydy50eHQJLypuZXRydy1hY3RpdmF0ZSoKIG5ldHJ3LWIJcGlfbmV0cncudHh0CS8qbmV0cnctYioKIG5ldHJ3LWJvb2ttYXJrCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWJvb2ttYXJrKgpAQCAtNTUwNyw2ICs1NTExLDcgQEAKIG5ldHJ3LXJlbmFtZQlwaV9uZXRydy50eHQJLypuZXRydy1yZW5hbWUqCiBuZXRydy1zCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXMqCiBuZXRydy10cmFuc3BhcmVudAlwaV9uZXRydy50eHQJLypuZXRydy10cmFuc3BhcmVudCoKK25ldHJ3LXUJcGlfbmV0cncudHh0CS8qbmV0cnctdSoKIG5ldHJ3LXVpZHBhc3MJcGlfbmV0cncudHh0CS8qbmV0cnctdWlkcGFzcyoKIG5ldHJ3LXVybHMJcGlfbmV0cncudHh0CS8qbmV0cnctdXJscyoKIG5ldHJ3LXYJcGlfbmV0cncudHh0CS8qbmV0cnctdioKQEAgLTU1NTMsNiArNTU1OCw3IEBACiBuZXctaXRlbXMtNgl2ZXJzaW9uNi50eHQJLypuZXctaXRlbXMtNioKIG5ldy1pdGVtcy03CXZlcnNpb243LnR4dAkvKm5ldy1pdGVtcy03KgogbmV3LWxpbmUtY29udGludWF0aW9uCXZlcnNpb241LnR4dAkvKm5ldy1saW5lLWNvbnRpbnVhdGlvbioKK25ldy1tYW5wYWdlLXRyYW5zCXZlcnNpb243LnR4dAkvKm5ldy1tYW5wYWdlLXRyYW5zKgogbmV3LW11bHRpLWJ5dGUJdmVyc2lvbjUudHh0CS8qbmV3LW11bHRpLWJ5dGUqCiBuZXctbXVsdGktbGFuZwl2ZXJzaW9uNi50eHQJLypuZXctbXVsdGktbGFuZyoKIG5ldy1uZXR3b3JrLWZpbGVzCXZlcnNpb242LnR4dAkvKm5ldy1uZXR3b3JrLWZpbGVzKgpAQCAtNTY5MCw2ICs1Njk2LDcgQEAKIHBodG1sLnZpbQlzeW50YXgudHh0CS8qcGh0bWwudmltKgogcGlfZXhwbC50eHQJcGlfZXhwbC50eHQJLypwaV9leHBsLnR4dCoKIHBpX2d6aXAudHh0CXBpX2d6aXAudHh0CS8qcGlfZ3ppcC50eHQqCitwaV9uZXRydy50eHQJcGlfbmV0cncudHh0CS8qcGlfbmV0cncudHh0KgogcGlfc3BlYy50eHQJcGlfc3BlYy50eHQJLypwaV9zcGVjLnR4dCoKIHBsdWdpbgl1c3JfMDUudHh0CS8qcGx1Z2luKgogcGx1Z2luLWRldGFpbHMJZmlsZXR5cGUudHh0CS8qcGx1Z2luLWRldGFpbHMqCkBAIC02MDg0LDYgKzYwOTEsNyBAQAogdF9DVgl0ZXJtLnR4dAkvKnRfQ1YqCiB0X0NvCXRlcm0udHh0CS8qdF9DbyoKIHRfREwJdGVybS50eHQJLyp0X0RMKgordF9FSQl0ZXJtLnR4dAkvKnRfRUkqCiB0X0YxCXRlcm0udHh0CS8qdF9GMSoKIHRfRjIJdGVybS50eHQJLyp0X0YyKgogdF9GMwl0ZXJtLnR4dAkvKnRfRjMqCkBAIC02MTE3LDYgKzYxMjUsNyBAQAogdF9LTAl0ZXJtLnR4dAkvKnRfS0wqCiB0X1JJCXRlcm0udHh0CS8qdF9SSSoKIHRfUlYJdGVybS50eHQJLyp0X1JWKgordF9TSQl0ZXJtLnR4dAkvKnRfU0kqCiB0X1NiCXRlcm0udHh0CS8qdF9TYioKIHRfU2YJdGVybS50eHQJLyp0X1NmKgogdF9XUAl0ZXJtLnR4dAkvKnRfV1AqCkBAIC02Mjk5LDYgKzYzMDgsOCBAQAogdGVybWNhcAl0ZXJtLnR4dAkvKnRlcm1jYXAqCiB0ZXJtY2FwLWNoYW5nZWQJdmVyc2lvbjQudHh0CS8qdGVybWNhcC1jaGFuZ2VkKgogdGVybWNhcC1jb2xvcnMJdGVybS50eHQJLyp0ZXJtY2FwLWNvbG9ycyoKK3Rlcm1jYXAtY3Vyc29yLWNvbG9yCXRlcm0udHh0CS8qdGVybWNhcC1jdXJzb3ItY29sb3IqCit0ZXJtY2FwLWN1cnNvci1zaGFwZQl0ZXJtLnR4dAkvKnRlcm1jYXAtY3Vyc29yLXNoYXBlKgogdGVybWNhcC1zeW50YXgJc3ludGF4LnR4dAkvKnRlcm1jYXAtc3ludGF4KgogdGVybWNhcC10aXRsZQl0ZXJtLnR4dAkvKnRlcm1jYXAtdGl0bGUqCiB0ZXJtaW5hbC1jb2xvcnMJb3NfdW5peC50eHQJLyp0ZXJtaW5hbC1jb2xvcnMqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90ZXJtLnR4dCBiL3J1bnRpbWUvZG9jL3Rlcm0udHh0CmluZGV4IGI0MThlNGMuLmI5MjUyYTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Rlcm0udHh0CisrKyBiL3J1bnRpbWUvZG9jL3Rlcm0udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRlcm0udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IE9jdCAyMAorKnRlcm0udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IERlYyAwNwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMjc1LDYgKzI3NSw4IEBACiAJdF9JRQlzZXQgaWNvbiB0ZXh0IGVuZAkJCQkqdF9JRSogKid0X0lFJyoKIAl0X1dQCXNldCB3aW5kb3cgcG9zaXRpb24gKFksIFgpIGluIHBpeGVscwkJKnRfV1AqICondF9XUCcqCiAJdF9XUwlzZXQgd2luZG93IHNpemUgKGhlaWdodCwgd2lkdGgpIGluIGNoYXJhY3RlcnMJKnRfV1MqICondF9XUycqCisJdF9TSSAgICBzdGFydCBpbnNlcnQgbW9kZSAoYmFyIGN1cnNvciBzaGFwZSkgICAgICAgICAgICAqdF9TSSogKid0X1NJJyoKKwl0X0VJICAgIGVuZCBpbnNlcnQgbW9kZSAoYmxvY2sgY3Vyc29yIHNoYXBlKSAgICAgICAgICAgICp0X0VJKiAqJ3RfRUknKgogCXRfUlYJcmVxdWVzdCB0ZXJtaW5hbCB2ZXJzaW9uIHN0cmluZyAoZm9yIHh0ZXJtKQkqdF9SViogKid0X1JWJyoKIAkJfHh0ZXJtLThiaXR8IHx2OnRlcm1yZXNwb25zZXwgfCd0dHltb3VzZSd8IHx4dGVybS1jb2Rlc3wKIApAQCAtMzk1LDYgKzM5NywxOSBAQAogSWYgb25lIG9mIHRoZXNlIGlzIG5vdCBhdmFpbGFibGUsICd0X1NiJyBhbmQgJ3RfU2YnIGFyZSB1c2VkLiAgJ3RfbWUnIGlzIHVzZWQKIHRvIHJlc2V0IHRvIHRoZSBkZWZhdWx0IGNvbG9ycy4KIAorCQkJCSp0ZXJtY2FwLWN1cnNvci1zaGFwZSogKnRlcm1jYXAtY3Vyc29yLWNvbG9yKgorV2hlbiBWaW0gZW50ZXJzIEluc2VydCBtb2RlIHRoZSAndF9TSScgZXNjYXBlIHNlcXVlbmNlIGlzIHNlbnQuICBXaGVuIGxlYXZpbmcKK0luc2VydCBtb2RlICd0X0VJJyBpcyB1c2VkLiAgQnV0IG9ubHkgaWYgYm90aCBhcmUgZGVmaW5lZC4gIFRoaXMgY2FuIGJlIHVzZWQKK3RvIGNoYW5nZSB0aGUgc2hhcGUgb3IgY29sb3Igb2YgdGhlIGN1cnNvciBpbiBJbnNlcnQgbW9kZS4gIFRoZXNlIGFyZSBub3QKK3N0YW5kYXJkIHRlcm1jYXAvdGVybWluZm8gZW50cmllcywgeW91IG5lZWQgdG8gc2V0IHRoZW0geW91cnNlbGYuCitFeGFtcGxlIGZvciBhbiB4dGVybSwgdGhpcyBjaGFuZ2VzIHRoZSBjb2xvciBvZiB0aGUgY3Vyc29yOiA+CisgICAgaWYgJnRlcm0gPX4gInh0ZXJtIgorCWxldCAmdF9TSSA9ICJcPEVzYz5dMTI7cHVycGxlXHg3IgorCWxldCAmdF9FSSA9ICJcPEVzYz5dMTI7Ymx1ZVx4NyIKKyAgICBlbmRpZgorTk9URTogV2hlbiBWaW0gZXhpdHMgdGhlIHNoYXBlIGZvciBOb3JtYWwgbW9kZSB3aWxsIHJlbWFpbi4gIFRoZSBzaGFwZSBmcm9tCitiZWZvcmUgVmltIHN0YXJ0ZWQgd2lsbCBub3QgYmUgcmVzdG9yZWQuCisKIAkJCQkJCQkqdGVybWNhcC10aXRsZSoKIFRoZSAndF90cycgYW5kICd0X2ZzJyBvcHRpb25zIGFyZSB1c2VkIHRvIHNldCB0aGUgd2luZG93IHRpdGxlIGlmIHRoZSB0ZXJtaW5hbAogYWxsb3dzIHRpdGxlIHNldHRpbmcgdmlhIHNlbmRpbmcgc3RyaW5ncy4gIFRoZXkgYXJlIHNlbnQgYmVmb3JlIGFuZCBhZnRlciB0aGUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RvZG8udHh0IGIvcnVudGltZS9kb2MvdG9kby50eHQKaW5kZXggYWQ1MjA5YS4uZDZkYTYyZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdG9kby50eHQKKysrIGIvcnVudGltZS9kb2MvdG9kby50eHQKQEAgLTEsNCArMSw0IEBACi0qdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgT2N0IDI0CisqdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgRGVjIDA5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMwLDU3ICszMCw2IEBACiAJCQkJCQkJKmtub3duLWJ1Z3MqCiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBLbm93biBidWdzIGFuZCBjdXJyZW50IHdvcmsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSW5jbHVkZSBOZXRCZWFucyBwYXRjaGVzIChHb3Jkb24gUHJpZXVyLCBPY3QgMjApCi0gICAgU2VlIHR3byBtZXNzYWdlcyBmb3IgbGlzdCBvZiBjaGFuZ2VkIGZpbGVzLiAgQWRkaXRpb25hbGx5OgotCWRvYy9ldmFsLnR4dAotICAgIERvY3MgZm9yIG1lc3NhZ2UgRTY4MC4KLQotTGluZSBudW1iZXIgbm90IHVwZGF0ZWQgd2hlbiBpbnNlcnRpbmcgYSBsaW5lIGluIGFub3RoZSB3aW5kb3cuIChIaXRpZXIKLVN5bHZhaW4sIE9jdCAyNCkKLQotQWJvcnRpbmcgYXQgdGhlIEFUVEVOVElPTiBwcm9tcHQgY2F1c2VzIHRyb3VibGU6Ci0gICAgYnVmZmVyIHJlbWFpbnMgYWN0aXZlLCBud2luZG93cyBpc24ndCBjbG9zZWQgKGZpeGVkIGluIGJ1ZmZlci5jKQotICAgIGFsdGVybmF0ZSBidWZmZXIgZ2V0cyAicmVhZCBlcnJvciIgZmxhZy4KLSAgICAiOnNidWYiIGFuZCAiOmJhbGwiIGxlYXZlIGFuIGVtcHR5IHdpbmRvdyBiZWhpbmQuCi1DaGFuZ2UgaW4gaGFuZGxlX3N3YXBfZXhpc3RzKCkgYWxzbyBpbiA2LjM/Ci1BZGQgZW50ZXJfY2xlYW51cCgpIGFuZCBsZWF2ZV9jbGVhbnVwKCkgYWxzbyBpbiA2LjM/Ci0gICAgYnVmZmVyLmMKLSAgICBleF9ldmFsLmMKLSAgICBwcm90by9leF9ldmFsLnBybwotICAgIHN0cnVjdHMuaAotICAgIHZpbS5oCi0KLVdpbjMyOiBXaGVuIHRoZSBwYXRoIHRvIGEgZmlsZSBoYXMgUnVzc2lhbiBjaGFyYWN0ZXJzLCAiOmNkICU6cDpoIiBkb2Vzbid0Ci13b3JrLiAoVmFsZXJ5IEtvbmRha29mZikKLVNvbHZlZCBpbiBvc19tc3dpbi5jLiAgQWRkIHRvIDYuMz8KLQotUGF0Y2ggZm9yIFdpbjMyIHRleHRkb21haW46IE5BS0FEQUlSQSBZdWtpaGlybywgU2VwdCAxNy4KLQotSGFuZGxpbmcgZGVjaW1hbCBwb2ludCBvbiBrZXlwYWQ6IHVzZSBNYXBWaXJ0dWFsS2V5LiAoVmluY2UgTmVncmksIE9jdCAyMCkKLQotVmFsZW5jaWE6IGV4ZWN1dGFibGUoInh4ZC5leGUiKSByZXR1cm5zIHRydWUgd2hpbGUgIiF4eGQiIGRvZXNuJ3Qgd29yay4KLVdvcmtzIGZpbmUgZm9yIG1lLiAgT25seSBpbiBzcGVjaWZpYyBlbnZpcm9ubWVudD8KLQotbmV0cncgcGx1Z2luOiBXaGVuIGNvbWluZyBiYWNrIHRvIHRoZSBzYW1lIGRpcmVjdG9yeSBhIHNjcmF0Y2ggYnVmZmVyIGFwcGVhcnMuCi1Pbmx5IG9uIFdpbjMyLiAoQ2hhcmxlcyBDYW1wYmVsbCwgU2VwdCAxNSkKLQotTmV3IEVpZmZlbCBpbmRlbnQgc2NyaXB0IGZyb20gSm9jZWx5biBGaWF0LiAgT0sgd2l0aCBEYXZpZCBDbGFya2UuCi0KLVdpbjMyOiBub3QgdXNpbmcgJ3RlbmMnIGluIEdVSSBjYXVzZXMgcHJvYmxlbXMgb24gV2luIDk4PyAgKEppcmkgSmV6ZGluc2t5KQotVHJ5IG91dCB3aXRoIFJ1c3NpYW4gaW5wdXQgbWV0aG9kLgotCi1BZnRlciAiWSIgJ1sgYW5kICddIGFyZSBub3QgYXQgc3RhcnQvZW5kIG9mIHRoZSB5YW5rZWQgdGV4dC4gKEtlbiBDbGFyaykKLQotUGF0Y2ggZm9yIGFkZGluZyAnZnN5bmMnIG9wdGlvbjogZGlzYWJsZSB1c2luZyBmc3luYygpIG9uIGZpbGUgd3JpdGUuIChTZXB0LgotMjYsIENpYXJhbiBNY0NyZWVzaCkKLQotRm9sZGluZyBmb3IgQyBzeW50YXg6IChPbGFmIERhYnJ1bnogMjcgc2VwdCAyMDA0KQotCi1BZGQgcmVtYXJrIGFib3V0IHVzaW5nIFZpbSB3aXRoIFZTIC5uZXQgdG8gVmlzdmltIGRvY3MuIChEYXZpZCBGaXNoYnVybiwgU2VwdAotMjcpCi0KLVZpbSBpY29uIGZvciBkb2N1bWVudHMgYXNzb2NpYXRlZCB3aXRoIFZpbT8gKFJhaHVsIEt1bGthcm5pLCBzZXB0IDI4KQotCiBBZGQgYSBmdW5jdGlvbiB0byB0ZXN0IGlmIGEgZm9udCBuYW1lIGFjdHVhbGx5IHdvcmtzLgogCiBXaGVuIHVzaW5nICJzZXQgbGFzdHN0YXR1cz0yIGNtZGhlaWdodD0yIiBpbiB0aGUgLmd2aW1yYyB5b3Ugb25seSBnZXQgb25lIGxpbmUKQEAgLTg5LDYgKzM4LDMwIEBACiAKICI6ZSA8Y2ZpbGU+IiBkb2VzIG5vdCBleHBhbmQgfi9maWxlLCB2ZXJ5IGNvbmZ1c2luZyBjb21wYXJlZCB0byAiOmUgfi9maWxlIi4KIAorU0lHSFVQIGlzIGRlbGF5ZWQgdW50aWwgd2FpdGluZyBmb3IgYSBjaGFyYWN0ZXIuICBDYW4gdGhlIHNhbWUgdGhpbmcgYmUgZG9uZQorZm9yIFNJR0lOVD8gIFRoZW4gYWxzbyBjaGVjayB3aGVuIHdhaXRpbmcgZm9yIGEgc2hvcnQgdGltZS4KKworV2hlbiBubyB0ZXJtY2FwL3Rlcm1saWIgbGlicmFyeSBpcyBmb3VuZCwgY2hlY2sgdGhhdCBjb21waWxpbmcgVmltIHdvcmtzIGluCitjb25maWd1cmUuICBHaXZlIGFuIGNsZWFyIGVycm9yIG1lc3NhZ2UgKCJpbnN0YWxsIHRlcm1jYXAgb3IgbmN1cnNlcy1kZXYKK3BhY2thZ2UiKSB3aGVuIGl0IGRvZXNuJ3QuCisKK1doZW4gZG9pbmcgIjp3IGZpbGUiICdtb2RpZmllZCcgaXMgcmVzZXQsIGJ1dCAidSIgc2V0cyBpdCwgd2hpbGUgdGhlIGZpbGUgaXMKK2FjdHVhbGx5IHVuY2hhbmdlZC4gIERvbid0IHJlc2V0ICdtb2RpZmllZCcgd2hlbiAnbm9jcCcgaXMgc2V0LgorCitXaW4zMjogImd2aW0gLVYxMDAiIHNob3VsZCB1c2UgZGlhbG9nIHdpdGggc2Nyb2xsYmFyLgorCitVc2luZyBDVFJMLUEgb24gIjA4IiBzaG91bGQgbm90IHdvcmsgbGlrZSBvY3RhbC4gKE1hdHRoZXcgRHVnZ2FuKQorCitDdXJzb3Igb25kZXIgbGFhdHN0ZSByZWdlbCBuYSAiOmcvcGF0L3MvLz4iIGNvbW1hbmRvIHdhYXJkb29yIHJlZ2VscyBuaWV0IG1lZXIKK3dyYXBwZW4uIChBZHJpIFZlcmhvZWYsIERlYyAxKQorCitJbmNsdWRlZCBOZXRCZWFucyBwYXRjaGVzIChHb3Jkb24gUHJpZXVyLCBPY3QgMjApCisgICAgU2VlIHR3byBtZXNzYWdlcyBmb3IgbGlzdCBvZiBjaGFuZ2VkIGZpbGVzLiAgQWRkaXRpb25hbGx5OgorCWRvYy9ldmFsLnR4dAorICAgIERvY3MgZm9yIG1lc3NhZ2UgRTY4MC4KKyAgICBEb2NzIGZvciAiOm5ia2V5Ii4KKyAgICBBc2tlZCBHb3Jkb24gdG8gc2VuZCB0aGUgZGlmZmVyZW5jZXMgYWdhaW4sIHNvbWUgcGFydHMgYXBwYXJlbnRseSBhcmUKKyAgICBtaXNzaW5nLgogCiBGb3IgdmVyc2lvbiA3LjA6CiAKQEAgLTE3Miw2ICsxNDUsOCBAQAogCQkJCVRjbCBpbXBsZW1lbnRhdGlvbiB+L3ZpbS9IaWVyQXNzaXN0LyApCiAgICAgNyAgIEFkZCBwYXRjaCBmcm9tIEJlbm9pdCBDZXJyaW5hIHRvIGludGVncmF0ZSBWaW0gYW5kIFBlcmwgZnVuY3Rpb25zCiAJYmV0dGVyLiAgTm93IGFsc28gd29ya3MgZm9yIFJ1YnkgKDIwMDEgTm92IDEwKQorICAgIC0gICBQYXRjaCBmcm9tIEhlcmN1bGFubyBkZSBMaW1hIEVpbmxvZnQgTmV0byBmb3IgYmV0dGVyIGZvcm1hdHRpbmcgb2YgdGhlCisJcXVpY2tmaXggd2luZG93ICgyMDA0IGRlYyAyKQogICAgIDcgICBNb3RpZjogdXNlIHRoZSBtZW51IGZvbnQgY29uc2lzdGVudGx5LiAgUGF0Y2ggZnJvbSBNYXJ0aW4gRGFsZWNraSAyMDAyCiAJSmFuIDExLgogICAgIC0gICBNb3RpZjogYWRkIDNEIHNoYWRpbmcgZm9yIHRoZSBtZW51IGVudHJpZXM/ICBQYXRjaCBmcm9tIE1hcnRpbiBEYWxlY2tpLgpAQCAtMjA0LDEzICsxNzksMzIgQEAKIAlydW50aW1lIGZpbGVzPwogCUFsc286IHdoZW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGV4aXN0cywgdXNlIGl0LiAgSWYgaXQgZG9lc24ndAogCWV4aXN0LCBzZXQgaXQuICBSZXF1aXJlcyBnb29kIG5hbWVzOiAkVklNX1VTRVJfVklNUkMgICRWSU1fVVNFUl9ESVIKKyAgICAtCUFkZCB0aGUgIjpjYnVmZmVyIiBjb21tYW5kOiByZWFkIGxpc3Qgb2YgZXJyb3JzIGZyb20gYSBidWZmZXIgaW5zdGVhZAorCW9mIGZyb20gYSBmaWxlLiAoWWVnYXBwYW4gTGFrc2htYW5hbiwgT2N0IDMxLCBidXQgYXZvaWQgdGhlIHRlbXAgZmlsZSkKKwlQZXJoYXBzICI6Y2V4cHIiIGNvdWxkIHJlYWQgZnJvbSBhIGxpc3Q/CisJQWRkICViIHRvICdlcnJvcmZvcm1hdCc6IGJ1ZmZlciBudW1iZXIuIChZZWdhcHBhbiBMYWtzaG1hbmFuIC8gU3VyZXNoCisJR292aW5kYWNoYXIpCisgICAgLQlUaGUgUmVwbGFjZSBkaWFsb2cgdGFrZXMgIlxyIiBsaXRlcmFsLCB1bmxlc3MgInJlcGxhY2UgYWxsIiBpcyB1c2VkLgorCU5lZWQgdG8gZXNjYXBlIGJhY2tzbGFzaGVzLgorICAgICAgICBXaW4zMjogdGhlIHRleHQgdG8gcmVwbGFjZSB3aXRoIGlzbid0IHJlbWVtYmVyZWQuCisgICAgLQlGb3IgR1VJIEZpbmQvUmVwbGFjZSBkaWFsb2cgc3VwcG9ydCB1c2luZyBhIHJlZ2V4cC4gIFBhdGNoIGZvciBNb3RpZgorCWFuZCBHVEsgYnkgZGVncmVuZWlyIChub3YgMTAgYW5kIG5vdiAxOCkuCistICAgVXNlIGEgYnVpbHRpbiBncmVwIGNvbW1hbmQgZm9yICI6Z3JlcCI/ICBNYWtlcyBpdCBwb3NzaWJsZSB0byBhZGQgdGhlCisgICAgY29sdW1uIG51bWJlci4gIENhbiB1c2UgdGhlIGNvZGUgb2YgIjpoZWxwZ3JlcCIuCisgICAgUGF0Y2ggZnJvbSBZZWdhcHBhbiBMYWtzaG1hbmFuLCBOb3YgNC4gIE9yIHVzZSAiOmdyZXAiIGFuZCBzZXQgJ2dyZXBwcmcnCisgICAgdG8gc29tZXRoaW5nIHNwZWNpYWw/ICBDb3VsZCBhbHNvIGRvIGJvdGguCisgICAgQWxzbyBzdXBwb3J0IHVzaW5nICIqKiIgaW4gZmlsZW5hbWUsIHNvIHRoYXQgYSBkaXJlY3RvcnkgdHJlZSBjYW4gYmUKKyAgICBzZWFyY2hlZC4KKyAgICBBbHNvIHNlZSB0aGUgIm1pbmlncmVwLnZpbSIgc2NyaXB0IG9uIHd3dy52aW0ub3JnLgogCiAKIC0gICBFZGl0IHNhbWUgZmlsZSBvbiBVbml4IGFuZCBmcm9tIE1TLVdpbmRvd3M6IG5vIHdhcm5pbmcgZm9yIHN3YXAgZmlsZS4KKy0gICBEcm9wIHRoZSBrdmltIHN1cHBvcnQ/ICBUaGVyZSBpcyBubyBtYWludGVuYW5jZSBhbmQgInl6aXMiIGlzIHN1cHBvc2VkIHRvCisgICAgcmVwbGFjZSBpdC4KIC0gICBJbiB0aGUga3ZpbS9LREUgc291cmNlIGZpbGVzIGZpeCB0aGUgZm9ybWF0dGluZy4KIC0gICBLREUgdmVyc2lvbiBpcyBjYWxsZWQgImt2aW0iLiAgTWFrZSBpdCAiZ3ZpbSIsIGxpa2UgdGhlIG90aGVycz8KIC0gICBCZXR0ZXIgY29uZmlndXJlIGNoZWNrIGZvciBLREUgaW5jbHVkZSBmaWxlcyBmcm9tIERhbiBTaGFycC4KLS0gICBLREUgSW5wdXQgbWV0aG9kIHBhdGNoLiAoWWFzdWhpcm8gTWF0c3Vtb3RvKQorLSAgIEtERSBHVUkgSW5wdXQgbWV0aG9kIHBhdGNoLiAoWWFzdWhpcm8gTWF0c3Vtb3RvKSAodXBkLiBPY3QgMjUgMjAwNCkKIC0gICBDaGFuZ2UgZ2Ffcm9vbSBpbnRvIGdhX21heGxlbiwgc28gdGhhdCBpdCBkb2Vzbid0IG5lZWQgdG8gYmUKICAgICBpbmNyZW1lbnRlZC9kZWNyZW1lbnRlZCBlYWNoIHRpbWUuCiAtICAgRm9yIHN0cmluZyB2YXJpYWJsZXMsIHVzZSBsZW5ndGggaW5zdGVhZCBvZiBOVUwgdGVybWluYXRpb24uCkBAIC0yNzksOSArMjczLDExIEBACiAgICAgU2hvdWxkIHN0b3JlIHRoZSB2YWx1ZXMgaW4gYmxvY2sgMCBvZiB0aGUgc3dhcCBmaWxlLCBidXQgdGhhdCBpcyBhbgogICAgIGluY29tcGF0aWJsZSBjaGFuZ2UuCiA3ICAgU3VwcG9ydCBXSU5ET1cgVEFCUy4gIFdvcmtzIGxpa2Ugc2V2ZXJhbCBwYWdlcywgZWFjaCB3aXRoIHRoZWlyIG93bgotICAgIHNwbGl0IHdpbmRvd3MuICBQYXRjaCBmb3IgR1RLIDEuMiBmcm9tIENocmlzdGlhbiBNaWNob24sIDIwMDQgSmFuIDYuCi0gICAgQWxzbyBmb3IgdGhlIGNvbnNvbGUhICBJbiBFbWFjcyB0aGVzZSBhcmUgY2FsbGVkIGZyYW1lcy4KKyAgICBzcGxpdCB3aW5kb3dzLiAgUGF0Y2ggZm9yIEdUSyAxLjIgcGFzc2VkIG9uIGJ5IENocmlzdGlhbiBNaWNob24sIDIwMDQgSmFuIDYuCisgICAgQWxzbyBmb3IgdGhlIGNvbnNvbGUhCisgICAgSW4gRW1hY3MgdGhlc2UgYXJlIGNhbGxlZCBmcmFtZXMuICBDb3VsZCBhbHNvIGNhbGwgdGhlbSAicGFnZXMiLgogICAgIFVzZSAiMWd0IiAtICI5OWd0IiB0byBzd2l0Y2ggdG8gYSB0YWI/CisgICAgU2ltcGxlIHBhdGNoIGZvciBHVEsgYnkgTHVpcyBNIChub3YgNykuCiAtICAgRU1CRURESU5HOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biBWaW0gaW5zaWRlIGEgd2luZG93IG9mIGFub3RoZXIgcHJvZ3JhbS4KICAgICBGb3IgWHdpbmRvd3MgdGhpcyBjYW4gYmUgZG9uZSB3aXRoIFhSZXBhcmVudFdpbmRvdygpLgogICAgIEZvciBHVEsgTmVpbCBCaXJkIGhhcyBhIHBhdGNoIHRvIHVzZSBWaW0gbGlrZSBhIHdpZGdldC4KQEAgLTMzNywxNCArMzMzLDE4IEBACiAtICAgIm9uZW1vcmUiIGZsYWcgaW4gJ3ZpcnR1YWxlZGl0JzogbW92ZSBjdXJzb3IgcGFzdCBlbmQgb2YgbGluZS4gIFBhdGNoIGJ5CiAgICAgTWF0dGlhcyBGbG9kaW4gKDIwMDQgSnVsIDMwKQogCi1UaGUgZnN5bmMoKSBpbiBidWZfd3JpdGUoKSBjYXVzZXMgbGFwdG9wIGhhcmRkaXNrIHNwaW51cC4gIEFkZCBhbiBvcHRpb24gdG8KLWF2b2lkIGl0PworV2luMzI6IFdoZW4gc2V0dGluZyAnZW5jb2RpbmcnIGluIGEgVmltIHNlcnZlciB0byAidXRmLTgiLCBhbmQgdXNpbmcgInZpbQorLS1yZW1vdGUgcnVzc2lhbiIgaW4gYSBjb25zb2xlLCAicnVzc2lhbiIgc2hvdWxkIGJlIGNvbnZlcnRlZCBmcm9tIHRoZSBjb25zb2xlCitlbmNvZGluZyB0byB1dGYtOC4gIFNlbmQgYWxsIHJlbW90ZSBtZXNzYWdlcyBpbiB1dGYtOD8gIE9ubHkgb24gV2luMzI/CiAKIFN1cHBvcnQgIjpzZXQgc3ludGF4PWNwcC5kb3h5Z2VuIj8gIFN1Z2dlc3RlZCBwYXRjaCBieSBNaWNoYWVsIEdlZGRlcyAoOSBBdWcKIDIwMDQpLiAgU2hvdWxkIGFsc28gd29yayBmb3IgJ2ZpbGV0eXBlJy4KIAogUGF0Y2ggZm9yICdicmVha2luZGVudCcgb3B0aW9uOiByZXBlYXQgaW5kZW50IGZvciB3cmFwcGVkIGxpbmUuIChWYWNsYXYKLVNtaWxhdWVyLCAyMDA0IFNlcCAxMykKK1NtaWxhdWVyLCAyMDA0IFNlcCAxMywgZml4IE9jdCAzMSkKKworIjpidWZkbyBnL3NvbWV0aGluZy9wIiBoYXMgdGhlIGxhc3QgbWF0Y2ggb3ZlcndyaXR0ZW4gYnkgdGhlIGZpbGUgaW5mby4KK0V4YW1wbGUgYnkgQ2VzYXIgQW5kYWxvdSAoTm92IDMpLgogCiBXaW4zMjogSW4gJ2ZpbGVlbmNvZGluZ3MnIGFsbG93IHVzaW5nICJhY3AiIGZvciB0aGUgYWN0aXZlIGNvZGVwYWdlLiAgVXNlZnVsCiB2YWx1ZTogInVjcy1ib20sdXRmLTgsYWNwLGxhdGluMSIKQEAgLTM3NSw3ICszNzUsMTMgQEAKIAogQWRkIGd1aV9tY2hfYnJvd3NlZGlyKCkgZm9yIE1vdGlmLCBLREUgYW5kIE1hYyBPUy9YLgogCi1JbnN0YWxsIHZpbS1pdC4xIG1hbnVhbCBwYWdlIGluIC4uLi9tYW4vaXQvbWFuMS92aW0uMQorQWRkIE1ha2VmaWxlIGNvZGUgdG8gaW5zdGFsbCAqLWl0LjEgbWFudWFsIHBhZ2VzIGluIC4uLi9tYW4vaXQvbWFuMS8qLjEKKworSFRNTCBpbmRlbnRpbmcgY2FuIGJlIHNsb3csIGZpbmQgb3V0IHdoeS4gIEFueSB3YXkgdG8gZG8gc29tZSBraW5kIG9mCitwcm9maWxpbmcgZm9yIFZpbSBzY3JpcHQ/CisKK01hYzogcHJvYmxlbSB3aXRoIFhjb2RlLCBWaW0gZG9lc24ndCBjb250aW51ZSB1bnRpbCB0aGUgbmV4dCBjbGljay4KK0FwcGFyZW50bHkgaGFuZ2VzIGluIGhhbmRsZV9kcm9wKCkuICBBIFBvc3RFdmVudCgpIGF2b2lkcyBpdC4gKERhIFdvb24gSnVuZykKIAogCiBWaSBpbmNvbXBhdGliaWxpdHk6CkBAIC0xMjE4LDYgKzEyMjQsOCBAQAogCQkJCQkJICAgICpleHRlbnNpb25zLWltcHJvdmVtZW50cyoKIAogRG9jdW1lbnRhdGlvbjoKKzggICBUaGUgR1VJIGhlbHAgc2hvdWxkIGV4cGxhaW4gdGhlIEZpbmQgYW5kIEZpbmQvUmVwbGFjZSBkaWFsb2dzLiAgQWRkIGEgbGluaworICAgIHRvIGl0IGZyb20gIjpwcm9tcHRyZXBsIiBhbmQgIjpwcm9tcHRmaW5kIi4KIDggICBMaXN0IG9mIG9wdGlvbnMgc2hvdWxkIG1lbnRpb24gd2hldGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGV4cGFuZGVkCiAgICAgb3Igbm90LgogOCAgIEV4dGVuZCB1c3JfMjcudHh0IGEgYml0LiAoQWRhbSBTZXlmYXJ0aCkKQEAgLTEzMDgsOCArMTMxNiwxMCBAQAogOCAgICJIIiBhbmQgIkwiIGNvdW50IGJ1ZmZlciBsaW5lcyBpbnN0ZWFkIG9mIHdpbmRvdyBsaW5lcy4gKFNlcnZhdGl1cyBCcmFuZHQpCiA4ICAgQWRkIGEgd2F5IHRvIGFkZCBmb2xkLXBsdWdpbnMuICBKb2hhbm5lcyBaZWxsbmVyIGhhcyBvbmUgZm9yIFZCLgogNyAgIFdoZW4gdXNpbmcgbWFudWFsIGZvbGRpbmcsIHRoZSB1bmRvIGNvbW1hbmQgc2hvdWxkIGFsc28gcmVzdG9yZSBmb2xkcy4KLS0gICBBbGxvdyBjb21wbGV0ZWx5IGhpZGluZyBhIGNsb3NlZCBmb2xkLiAgUmVxdWlyZSBzaG93aW5nIGEgY2hhcmFjdGVyIGluCi0gICAgJ2ZvbGRjb2x1bW4nIHRvIGF2b2lkIHRoZSBtaXNzaW5nIGxpbmUgZ29lcyB1bm5vdGljZWQuCistICAgQWxsb3cgY29tcGxldGVseSBoaWRpbmcgYSBjbG9zZWQgZm9sZC4gIEUuZy4sIGJ5IHNldHRpbmcgJ2ZvbGR0ZXh0JyB0byBhbgorICAgIGVtcHR5IHN0cmluZy4gIFJlcXVpcmUgc2hvd2luZyBhIGNoYXJhY3RlciBpbiAnZm9sZGNvbHVtbicgdG8gYXZvaWQgdGhlCisgICAgbWlzc2luZyBsaW5lIGdvZXMgdW5ub3RpY2VkLgorICAgIEhvdyB0byBpbXBsZW1lbnQgdGhpcz8KIC0gICBXaGVuIHByZXNzaW5nIHRoZSBkb3duIGFycm93IG9mIGEgc2Nyb2xsYmFyLCBhIGNsb3NlZCBmb2xkIGRvZXNuJ3Qgc2Nyb2xsCiAgICAgdW50aWwgYWZ0ZXIgYSBsb25nIHRpbWUuICBIb3cgdG8gbWFrZSBzY3JvbGxpbmcgd2l0aCBjbG9zZWQgZm9sZHMKICAgICBzbW9vdGhlcj8KQEAgLTEzMTcsMTUgKzEzMjcsMTQgQEAKICAgICB1c2luZyB0aGUgd2luaW5mbyBpbiB3aV9mb2xkcy4KIC0gICAnZm9sZG1ldGhvZCcgInRleHRvYmplY3QiOiBmb2xkIG9uIHNlY3Rpb25zIGFuZCBwYXJhZ3JhcGggdGV4dCBvYmplY3RzLgogLSAgIEFkZCAnaGlkZWNvbW1lbnQnIG9wdGlvbjogZG9uJ3QgZGlzcGxheSBjb21tZW50cyBpbiAvKiAqLyBhbmQgYWZ0ZXIgLy8uCisgICAgT3IgaXMgdGhlIGNvbmNlYWwgcGF0Y2ggZnJvbSBWaW5jZSBOZWdyaSBhIG1vcmUgZ2VuZXJpYyBzb2x1dGlvbj8KIC0gICAienUiOiB1bmRvIGNoYW5nZSBpbiBtYW51YWwgZm9sZC4gInpVIiByZWRvIGNoYW5nZSBpbiBtYW51YWwgZm9sZC4gIEhvdyB0bwogICAgIGltcGxlbWVudCB0aGlzPwogLSAgICJ6SiIgY29tbWFuZDogYWRkIHRoZSBsaW5lIG9yIGZvbGQgYmVsb3cgdGhlIGZvbGQgaW4gdGhlIGZvbGQgdW5kZXIgdGhlCiAgICAgY3Vyc29yLgogLSAgICdmb2xkbWV0aG9kJyAic3ludGF4IjogImZvbGQ9MyI6IHNldCBmb2xkIGxldmVsIGZvciBhIHJlZ2lvbi4KLS0gICBDYW4gc2V0ICdmb2xkdGV4dCcgdG8gZW1wdHkgc3RyaW5nOiBkb24ndCBkaXNwbGF5IGFueSBsaW5lLiAgSG93IHRvCi0gICAgaW1wbGVtZW50IHRoaXM/CiAtICAgQXBwbHkgYSBuZXcgZm9sZGxldmVsIHRvIGEgcmFuZ2Ugb2YgbGluZXMuIChTdGV2ZSBMaXR0KQotLSAgIEhhdmUgc29tZSB3YXkgdG8gcmVzdHJpY3QgY29tbWFuZHMgdG8gbm90IGZvbGRlZCB0ZXh0LiAgQWxzbyBjb21tYW5kcyBsaWtlCis4ICAgSGF2ZSBzb21lIHdheSB0byByZXN0cmljdCBjb21tYW5kcyB0byBub3QgZm9sZGVkIHRleHQuICBBbHNvIGNvbW1hbmRzIGxpa2UKICAgICBzZWFyY2hlcy4KIAogCkBAIC0xMzQ0LDcgKzEzNTMsNyBAQAogICAgIHRoZSBlbmNvZGluZy4gPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gIE9yICJjaGFyc2V0PVVURi04Ij8KIDggICBUaGUgcXVpY2tmaXggZmlsZSBpcyByZWFkIHdpdGhvdXQgY29udmVyc2lvbiwgdGh1cyBpbiAnZW5jb2RpbmcnLiAgQWRkIGFuCiAgICAgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGVuY29kaW5nIG9mIHRoZSBlcnJvcmZpbGUgYW5kIGNvbnZlcnQgaXQuICBBbHNvIGZvcgotICAgICI6Z3JlcCIuCisgICAgIjpncmVwIiBhbmQgIjpoZWxwZ3JlcCIuCiA4ICAgV2hlbiBhIGZpbGUgd2FzIGNvbnZlcnRlZCBmcm9tICdmaWxlZW5jb2RpbmcnIHRvICdlbmNvZGluZycsIGEgdGFnIHNlYXJjaAogICAgIHNob3VsZCBhbHNvIGRvIHRoaXMgb24gdGhlIHNlYXJjaCBwYXR0ZXJuLiAoQW5kcnplaiBNLiBPc3RydXN6a2EpCiA3ICAgV2hlbiBjb252ZXJ0aW5nIGEgZmlsZSBmYWlscywgbWVudGlvbiB3aGljaCBieXRlIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQsCkBAIC0xNzE3LDggKzE3MjYsOCBAQAogICAgIHRoaXMgYmUgaW1wcm92ZWQ/CiA4ICAgU2V0IGRlZmF1bHQgZm9yICd0dHlzY3JvbGwnIHRvIGhhbGYgYSBzY3JlZW4gaGVpZ2h0PyAgU2hvdWxkIHNwZWVkIHVwCiAgICAgTVMtRE9TIHZlcnNpb24uIChOZWdyaSkKLTcgICBDIHN5bnRheCBoaWdobGlnaHRpbmcgZ2V0cyBhIGxvdCBzbG93ZXIgd2hlbiBhZGRpbmcgYSByZWdpb24gZm9yIGZvbGRpbmcKLSAgICBmcm9tIHsgdG8gfS4gKENoYXJsZXMgQ2FtcGJlbGwpICBJbnNlcnRpbmcgYSAieyIgaXMgdmVyeSBzbG93LiAoZG1hbikKKzcgICBDIHN5bnRheCBoaWdobGlnaHRpbmcgZ2V0cyBhIGxvdCBzbG93ZXIgYWZ0ZXIgIjpzZXQgZm9sZG1ldGhvZD1zeW50YXgiLgorICAgIChDaGFybGVzIENhbXBiZWxsKSAgSW5zZXJ0aW5nIGEgInsiIGlzIHZlcnkgc2xvdy4gKGRtYW4pCiA3ICAgSFRNTCBzeW50YXggaGlnaGxpZ2h0aW5nIGlzIHNsb3cgZm9yIGxvbmcgbGluZXMuICBUcnkgZGlzcGxheWluZwogICAgIGh0dHA6Ly93d3cudGhlcmVnaXN0ZXIuY28udWsvY29udGVudC80LzIyOTA4Lmh0bWwuIChBbmRyZSBQYW5nKQogNyAgIENoZWNrIGhvdyBwZXJmb3JtYW5jZSBvZiBsb2FkaW5nIHRoZSB3b3JkbGlzdCBjYW4gYmUgaW1wcm92ZWQgKGFkZGluZyBhCkBAIC0yMDY0LDcgKzIwNzMsNyBAQAogNyAgIE1vdGlmOiBGb3IgYSBjb25maXJtKCkgZGlhbG9nIDxFbnRlcj4gc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBubyBkZWZhdWx0CiAgICAgYnV0dG9uIHNlbGVjdGVkLCA8RXNjPiBzaG91bGQgY2xvc2UgdGhlIGRpYWxvZy4KIC0gICBNb3RpZiBzdGVhbHMgPEYxMD4gZnJvbSB1cywgdG8gcG9wIHVwIG1lbnVzIHdpdGggdGhlIGtleWJvYXJkLiAgSG93IGRvIHdlCi0gICAgZ2V0IGl0IGJhY2sgaWYgd2Ugd2FudCBpdD8KKyAgICBnZXQgaXQgYmFjayBpZiB3ZSB3YW50IGl0PyAgSXQncyBhbHJlYWR5IHNvbHZlZCBmb3IgR1RLLgogLSAgIFBhc3RlIGluIEluc2VydCBtb2RlIHNob3VsZCBub3QgZG8gYXV0b3dyYXAgZXRjLiAgT3IgbWF5YmUgdGhpcyBzaG91bGQgYmUKICAgICBjaGFuZ2VhYmxlIHdpdGggYW4gb3B0aW9uPwogLSAgIFB1dCBhIG5pY2UgcGljdHVyZSBpbiB0aGUgaWNvbiAoYnV0IGhvdyBkbyB3ZSBkbyB0aGF0PykuCkBAIC0zMzQwLDExICszMzQ5LDYgQEAKICAgICBzdWZmaWNpZW50LiAgIjpzZXRmbHVzaCIgcmVzZXRzIHRoZSBvcHRpb24gc3RhY2s/CiAgICAgSG93IHRvIGhhbmRsZSBhbiBhYm9ydGVkIG1hcHBpbmc/ICBSZW1lbWJlciBwb3NpdGlvbiBpbiB0YWcgc3RhY2sgd2hlbgogICAgIG1hcHBpbmcgc3RhcnRzLCByZXN0b3JlIGl0IHdoZW4gYW4gZXJyb3IgYWJvcnRzIHRoZSBtYXBwaW5nPwotLSAgIFVzZSBhIGJ1aWx0aW4gZ3JlcCBjb21tYW5kIGZvciAiOmdyZXAiPyAgTWFrZXMgaXQgcG9zc2libGUgdG8gYWRkIHRoZQotICAgIGNvbHVtbiBudW1iZXIuICBDYW4gdXNlIHRoZSBjb2RlIG9mICI6aGVscGdyZXAiLgotICAgIEFsc28gc3VwcG9ydCB1c2luZyAiKioiIGluIGZpbGVuYW1lLCBzbyB0aGF0IGEgZGlyZWN0b3J5IHRyZWUgY2FuIGJlCi0gICAgc2VhcmNoZWQuCi0gICAgQWxzbyBzZWUgdGhlICJtaW5pZ3JlcC52aW0iIHNjcmlwdCBvbiB3d3cudmltLm9yZy4KIC0gICBDaGFuZ2UgIjpmaXhkZWwiIGludG8gb3B0aW9uICdmaXhkZWwnLCB0X2RlbCB3aWxsIGJlIGFkanVzdGVkIGVhY2ggdGltZQogICAgIHRfYnMgaXMgc2V0PyAoV2ViYikKIC0gICAiZ2MiOiBnb3RvIGNoYXJhY3RlciwgbW92ZSBhYnNvbHV0ZSBjaGFyYWN0ZXIgcG9zaXRpb25zIGZvcndhcmQsIGFsc28KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dCBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dAppbmRleCAzYjBhMDZjLi5jZGZiMWEwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKKysrIGIvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CkBAIC0xLDQgKzEsNCBAQAotKnZlcnNpb243LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IE9jdCAxMgorKnZlcnNpb243LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IERlYyAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTksNiArMTksNyBAQAogCiBOZXcgZGF0YSB0eXBlcwkJCQl8bmV3LWRhdGEtdHlwZXN8CiBLREUgc3VwcG9ydAkJCQl8bmV3LUtERXwKK1RyYW5zbGF0ZWQgbWFudWFsIHBhZ2VzCQkJfG5ldy1tYW5wYWdlLXRyYW5zfAogVmFyaW91cyBuZXcgaXRlbXMJCQl8bmV3LWl0ZW1zLTd8CiAKIElNUFJPVkVNRU5UUwkJCQl8aW1wcm92ZW1lbnRzLTd8CkBAIC01Niw2ICs1NywxMCBAQAogZm9sZHMgc2hvdWxkIGFwcGVhciBpbiB0aGUgSFRNTC4gKHBhcnRseSBieSBDYXJsIE9zdGVyd2lzY2gpCiBEaWZmIG1vZGUgbm93IGlzIGFsc28gY29udmVydGVkIGFzIGl0IGlzIGRpc3BsYXllZC4KIAorV2luMzI6IFRoZSBlZmZlY3Qgb2YgdGhlIDxGMTA+IGtleSBkZXBlbmRlZCBvbiAnd2luYWx0a2V5cycuICBOb3cgaXQgZGVwZW5kcworb24gd2hldGhlciA8RjEwPiBoYXMgYmVlbiBtYXBwZWQgb3Igbm90LiAgVGhpcyBhbGxvd3MgbWFwcGluZyA8RjEwPiB3aXRob3V0CitjaGFuZ2luZyAnd2luYWx0a2V5cycuCisKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogTkVXIEZFQVRVUkVTCQkJCQkJKm5ldy03KgogCkBAIC05NSw2ICsxMDAsMTMgQEAKIEFsc28gc2VlIHxwb3N0c2NyaXB0LWNqay1wcmludGluZ3wuICAoTWlrZSBXaWxsaWFtcykKIAogCitUcmFuc2xhdGVkIG1hbnVhbCBwYWdlcwkJCQkJKm5ldy1tYW5wYWdlLXRyYW5zKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1hbnVhbCBwYWdlIG9mIFZpbSBhbmQgYXNzb2NpYXRlZCBwcm9ncmFtcyBpcyBub3cgYWxzbyBhdmFpbGFibGUgaW4KK0l0YWxpYW4gKHRyYW5zbGF0ZWQgYnkgQW50b25pbyBDb2xvbWJvKS4gIE1vcmUgbGFuZ3VhZ2VzIHdpbGwgZm9sbG93LgorCisKIFZhcmlvdXMgbmV3IGl0ZW1zCQkJCQkqbmV3LWl0ZW1zLTcqCiAtLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xMTUsNiArMTI3LDggQEAKICdtenF1YW50dW0nCQlUaW1lIGluIG1zZWMgdG8gc2NoZWR1bGUgTXpTY2hlbWUgdGhyZWFkcy4KICdwcmludG1iY2hhcnNldCcJQ0pLIGNoYXJhY3RlciBzZXQgdG8gYmUgdXNlZCBmb3IgOmhhcmRjb3B5CiAncHJpbnRtYmZvbnQnCQlmb250IG5hbWVzIHRvIGJlIHVzZWQgZm9yIENKSyBvdXRwdXQgb2YgOmhhcmRjb3B5CisnZnN5bmMnCQkJV2hldGhlciBmc3luYygpIGlzIGNhbGxlZCBhZnRlciB3cml0aW5nIGEgZmlsZS4KKwkJCShDaWFyYW4gTWNDcmVlc2gpCiAKIAogRXggY29tbWFuZHM6IH4KQEAgLTE4Nyw2ICsyMDEsOCBAQAogCiBQSFAgY29tcGlsZXIgcGx1Z2luLiAoRG91ZyBLZWFybnMpCiAKK1NpdmUgc3ludGF4IGZpbGUuIChOaWtvbGFpIFdlaWJ1bGwpCisKIAogTmV3IEtleW1hcHM6IH4KIApAQCAtMjEwLDYgKzIyNiwxMCBAQAogVGhlIG5ldHJ3IHBsdWdpbiBub3cgYWxzbyBzdXBwb3J0cyB2aWV3aW5nIGEgZGlyZWN0b3J5LCB3aGVuICJzY3A6Ly8iIGlzIHVzZWQuCiBEZWxldGluZyBhbmQgcmVuYW1pbmcgZmlsZXMgaXMgcG9zc2libGUuICAoQ2hhcmxlcyBDYW1wYmVsbCkKIAorQWRkZWQgdGhlIHRfU0kgYW5kIHRfRUkgZXNjYXBlIHNlcXVlbmNlcyBmb3Igc3RhcnRpbmcgYW5kIGVuZGluZyBJbnNlcnQgbW9kZS4KK1RvIGJlIHVzZWQgdG8gc2V0IHRoZSBjdXJzb3Igc2hhcGUgdG8gYSBiYXIgb3IgYSBibG9jay4gIE5vIGRlZmF1bHQgdmFsdWVzLAordGhleSBhcmUgbm90IHN1cHBvcnRlZCBieSB0ZXJtY2FwL3Rlcm1pbmZvLgorCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIElNUFJPVkVNRU5UUwkJCQkJCSppbXByb3ZlbWVudHMtNyoKIApAQCAtMjY3LDYgKzI4NywxNyBAQAogU3VwcG9ydCBjb252ZXJzaW9uIGJldHdlZW4gdXRmLTggYW5kIGxhdGluOSAoaXNvLTg4NTktMTUpIGludGVybmFsbHksIHNvIHRoYXQKIGRpZ3JhcGhzIHN0aWxsIHdvcmsgd2hlbiBpY29udiBpcyBub3QgYXZhaWxhYmxlLgogCitXaGVuIGEgc2Vzc2lvbiBmaWxlIGlzIGxvYWRlZCB3aGlsZSBlZGl0aW5nIGFuIHVubmFtZWQsIGVtcHR5IGJ1ZmZlciB0aGF0CitidWZmZXIgaXMgd2lwZWQgb3V0LiAgQXZvaWRzIHRoYXQgdGhlcmUgaXMgYW4gdW51c2VkIGJ1ZmZlciBpbiB0aGUgYnVmZmVyCitsaXN0LgorCitXaW4zMjogV2hlbiBsaWJpbnRsLmRsbCBzdXBwb3J0cyBiaW5kX3RleHRkb21haW5fY29kZXNldCgpLCB1c2UgaXQuCisoTkFLQURBSVJBIFl1a2loaXJvKQorCitXaGVuIGZvbGR0ZXh0KCkgZmluZHMgbm8gdGV4dCBhZnRlciByZW1vdmluZyB0aGUgY29tbWVudCBsZWFkZXIsIHVzZSB0aGUKK3NlY29uZCBsaW5lIG9mIHRoZSBmb2xkLiAgSGVscHMgZm9yIEMtc3R5bGUgLyogKi8gY29tbWVudHMgd2hlcmUgdGhlIGZpcnN0CitsaW5lIGlzIGp1c3QgIi8qIi4KKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBDT01QSUxFIFRJTUUgQ0hBTkdFUwkJCQkJKmNvbXBpbGUtY2hhbmdlcy03KgogCkBAIC00MjEsNCArNDUyLDQ5IEBACiBXaXRoIHRoZSBHVUkgZmluZC9yZXBsYWNlIGRpYWxvZyBhIHJlcGxhY2Ugb25seSB3b3JrZWQgaWYgdGhlIHBhdHRlcm4gd2FzCiBsaXRlcmFsIHRleHQuICBOb3cgaXQgd29ya3MgZm9yIGFueSBwYXR0ZXJuLgogCitXaGVuICdlcXVhbGFsd2F5cycgaXMgc2V0IGFuZCAnZWFkaXJlY3Rpb24nIGlzICJob3IiLCAiOnF1aXQiIHdvdWxkIHN0aWxsCitjYXVzZSBlcXVhbGl6aW5nIHdpbmRvdyBoZWlnaHRzIGluIHRoZSB2ZXJ0aWNhbCBkaXJlY3Rpb24uCisKK1doZW4gIjplbWVudSIgaXMgdXNlZCBpbiBhIHN0YXJ0dXAgc2NyaXB0IHRoZSBjb21tYW5kIHdhcyBwdXQgaW4gdGhlIHR5cGVhaGVhZAorYnVmZmVyLCBjYXVzaW5nIGEgcHJvbXB0IGZvciB0aGUgY3J5cHQga2V5IHRvIGJlIG1lc3NlZCB1cC4KKworTWFjIE9TL1g6IFRoZSBkZWZhdWx0IGZvciAnaXNwcmludCcgaW5jbHVkZWQgY2hhcmFjdGVycyAxMjgtMTYwLCBjYXVzZXMKK3Byb2JsZW1zIGZvciBUZXJtaW5hbC5hcHAuCisKK1doZW4gYSBzeW50YXggaXRlbSB3aXRoICJjb250YWluZWRpbiIgaXMgdXNlZCwgaXQgbWF5IG1hdGNoIGluIHRoZSBzdGFydCBvcgorZW5kIG9mIGEgcmVnaW9uIHdpdGggYSBtYXRjaGdyb3VwLCB3aGlsZSB0aGlzIGRvZXNuJ3QgaGFwcGVuIGZvciBhICJjb250YWlucyIKK2FyZ3VtZW50LgorCitXaGVuIGEgdHJhbnNwYXJlbnQgc3ludGF4IGl0ZW1zIG1hdGNoZXMgaW4gYW5vdGhlciBpdGVtIHdoZXJlIHRoZSBoaWdobGlnaHRpbmcKK2hhcyBhbHJlYWR5IHN0b3BwZWQgKGJlY2F1c2Ugb2YgYSBoZT0gYXJndW1lbnQpLCB0aGUgaGlnaGxpZ2h0aW5nIHdvdWxkIGNvbWUKK2JhY2suCisKK1doZW4gY3Njb3BlIGlzIHVzZWQgdG8gc2V0IHRoZSBxdWlja2ZpeCBlcnJvciBsaXN0LCBpdCBkaWRuJ3QgZ2V0IHNldCBpZiB0aGVyZQord2FzIG9ubHkgb25lIG1hdGNoLiAoU2VyZ2V5IEtob3JldikKKworV2hlbiAnY29uZmlybScgaXMgc2V0IGFuZCB1c2luZyAiOmJkZWwiIGluIGEgbW9kaWZpZWQgYnVmZmVyLCB0aGVuIHNlbGVjdGluZworImNhbmNlbCIsIHdvdWxkIHN0aWxsIGdpdmUgYW4gZXJyb3IgbWVzc2FnZS4KKworVGhlIFBvcFVwIG1lbnUgaXRlbXMgdGhhdCBzdGFydGVkIFZpc3VhbCBtb2RlIGRpZG4ndCB3b3JrIHdoZW4gbm90IGluIE5vcm1hbAorbW9kZS4gIFN3aXRjaGluZyBiZXR3ZWVuIHNlbGVjdGluZyBhIHdvcmQgYW5kIGEgbGluZSB3YXMgbm90IHBvc3NpYmxlLgorCitXaW4zMjogVGhlIGtleXBhZCBkZWNpbWFsIHBvaW50IGFsd2F5cyByZXN1bHRlZCBpbiBhICcuJywgd2hpbGUgb24gc29tZQora2V5Ym9hcmRzIGl0J3MgYSAnLCcuICBVc2UgTWFwVmlydHVhbEtleShWS19ERUNJTUFMLCAyKS4KKworUmVtb3ZlZCB1bnVzZWQgZnVuY3Rpb24gRGlzcGxheUNvbXBTdHJpbmdPcGFxdWUoKSBmcm9tIGd1aV93MzIuYworCitJbiBWaXN1YWwgbW9kZSB0aGVyZSBpcyBub3QgYWx3YXlzIGFuIGluZGljYXRpb24gd2hldGhlciB0aGUgbGluZSBicmVhayBpcworc2VsZWN0ZWQgb3Igbm90LiAgSGlnaGxpZ2h0IHRoZSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGxpbmUgd2hlbiB0aGUgbGluZSBicmVhaworaXMgaW5jbHVkZWQsIGUuZy4sIGFmdGVyICJ2JG8iLgorCitHVEs6IFRoZSA8RjEwPiBrZXkgY2FuJ3QgYmUgbWFwcGVkLCBpdCBzZWxlY3RzIHRoZSBtZW51LiAgRGlzYWJsZSB0aGF0IHdpdGggYQorR1RLIHNldHRpbmcgYW5kIGRvIHNlbGVjdCB0aGUgbWVudSB3aGVuIDxGMTA+IGlzbid0IG1hcHBlZC4gKERhdmlkIE5lY2FzKQorCitBZnRlciAiWSIgJ1sgYW5kICddIHdlcmUgbm90IGF0IHN0YXJ0L2VuZCBvZiB0aGUgeWFua2VkIHRleHQuCisKK1doZW4gYSB0ZWxuZXQgY29ubmVjdGlvbiBpcyBkcm9wcGVkIFZpbSBwcmVzZXJ2ZXMgZmlsZXMgYW5kIGV4aXRzLiAgV2hpbGUKK2RvaW5nIHRoYXQgYSBTSUdIVVAgbWF5IGFycml2ZSBhbmQgZGlzdHVyYmUgdXMsIHRodXMgaWdub3JlIGl0LiAoU2NvdHQKK0FuZGVyc29uKSAgQWxzbyBwb3N0cG9uZSBTSUdIVVAgdW50aWwgaXQncyBzYWZlIHRvIGhhbmRsZS4gIEFkZGVkCitoYW5kbGVfc2lnaHVwKCkuCisKICB2aW06dHc9Nzg6dHM9ODpmdD1oZWxwOm5vcmw6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92aW0taXQuMSBiL3J1bnRpbWUvZG9jL3ZpbS1pdC4xCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjYwZmI4YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL2RvYy92aW0taXQuMQpAQCAtMCwwICsxLDU1OCBAQAorLlRIIFZJTSAxICIyMiBmZWJicmFpbyAyMDAyIgorLlNIIE5PTUUKK3ZpbSBcLSBWSSBNaWdsaW9yYXRvLCB1biBlZGl0b3IgZGkgdGVzdGkgcGVyIHByb2dyYW1tYXRvcmkKKy5TSCBTSU5UQVNTSQorLmJyCisuQiB2aW0KK1tvcHppb25pXSBbZmlsZSAuLl0KKy5icgorLkIgdmltCitbb3B6aW9uaV0gLQorLmJyCisuQiB2aW0KK1tvcHppb25pXSBcLXQgdGFnCisuYnIKKy5CIHZpbQorW29wemlvbmldIFwtcSBbZmlsZV9lcnJvcmldCisuUFAKKy5icgorLkIgZXgKKy5icgorLkIgdmlldworLmJyCisuQiBndmltCisuQiBndmlldworLkIgZXZpbQorLkIgZXZpZXcKKy5icgorLkIgcnZpbQorLkIgcnZpZXcKKy5CIHJndmltCisuQiByZ3ZpZXcKKy5TSCBERVNDUklaSU9ORQorLkIgVmltCitVbiBlZGl0b3JlIGRpIHRlc3RpLCBjb21wYXRpYmlsZSBjb24sIGUgbWlnbGlvcmUgZGksIFZpLgorUHXyIGVzc2VyZSB1c2F0byBwZXIgZWRpdGFyZSBxdWFsc2lhc2kgZmlsZSBkaSB0ZXN0by4KK1BhcnRpY29sYXJtZW50ZSB1dGlsZSBwZXIgZWRpdGFyZSBwcm9ncmFtbWkuCisuUFAKK0NpIHNvbm8gcGFyZWNjaGkgbWlnbGlvcmFtZW50aSByaXNwZXR0byBhIFZpOiB1bmRvIG11bHRpcGxpLAorZmluZXN0cmUgZSBidWZmZXIgbXVsdGlwbGksIGV2aWRlbnppYXppb25lIHNpbnRhdHRpY2EsIHBvc3NpYmlsaXTgCitkaSBtb2RpZmljYXJlIGxhIGxpbmVhIGRpIGNvbWFuZG8sIGNvbXBsZXRhbWVudG8gbm9taSBmaWxlLCBoZWxwCitpbiBsaW5lYSwgc2VsZXppb25lIHRlc3RpIGluIG1vZGFsaXTgIHZpc3VhbGUsIGV0Yy4uCitWZWRlcmUgIjpoZWxwIHZpX2RpZmYudHh0IiBwZXIgdW4gc29tbWFyaW8gZGVsbGUgZGlmZmVyZW56ZSBmcmEKKy5CIFZpbQorZSBWaS4KKy5QUAorTWVudHJlIHVzYXRlCisuQiBWaW0KK3BvdGV0ZSByaWNldmVyZSBtb2x0byBhaXV0byBkYWwgc2lzdGVtYSBkaSBoZWxwIG9ubGluZSwgY29sIGNvbWFuZG8gIjpoZWxwIi4KK1ZlZGVyZSBxdWkgc290dG8gbGEgc2V6aW9uZSBBSVVUTyBPTkxJTkUuCisuUFAKK1F1YXNpIHNlbXByZQorLkIgVmltCit2aWVuZSBpbnZvY2F0bywgcGVyIG1vZGlmaWNhcmUgdW4gZmlsZSwgY29sIGNvbWFuZG8KKy5QUAorCXZpbSBmaWxlCisuUFAKK1Bp+SBpbiBnZW5lcmFsZQorLkIgVmltCit2aWVuZSBpbnZvY2F0byBjb246CisuUFAKKwl2aW0gW29wemlvbmldIFtsaXN0YV9maWxlXQorLlBQCitTZSBsaXN0YV9maWxlIG5vbiDoIHByZXNlbnRlLCBsJ2VkaXRvciBpbml6aWEgYXByZW5kbyB1biBidWZmZXIgdnVvdG8uCitBbHRyaW1lbnRpLCB1bmEgZSB1bmEgc29sYSBkZWxsZSBxdWF0dHJvIG1hbmllcmUgaW5kaWNhdGUgcXVpIHNvdHRvIHB18gorZXNzZXJlIHVzYXRhIHBlciBzY2VnbGllcmUgdW5vIG8gcGn5IGZpbGUgZGEgbW9kaWZpY2FyZS4KKy5UUCAxMgorZmlsZSAuLgorVW5hIGxpc3RhIGRpIG5vbWkgZGkgZmlsZS4KK0lsIHByaW1vIGRpIHF1ZXN0aSBzYXLgIGlsIGZpbGUgY29ycmVudGUsIGUgdmVycuAgbGV0dG8gbmVsIGJ1ZmZlci4KK0lsIGN1cnNvcmUgc2Fy4CBwb3NpemlvbmF0byBzdWxsYSBwcmltYSBsaW5lYSBkZWwgYnVmZmVyLgorUG90ZXRlIGFycml2YXJlIGFnbGkgYWx0cmkgZmlsZSBjb2wgY29tYW5kbyAiOm5leHQiLgorUGVyIGVkaXRhcmUgdW4gZmlsZSBpbCBjdWkgbm9tZSBpbml6aWEgcGVyICItIiBwcmVtZXR0ZXRlICItLSIgYWxsYQorbGlzdGFfZmlsZS4KKy5UUAorLQorSWwgZmlsZSBkYSBlZGl0YXJlIOggbGV0dG8gZGFsbG8gInN0ZGluIiBbZGkgc29saXRvLCBtYSBub24KK25lY2Vzc3JpYW1lbnRlLCBpbCB0ZXJtaW5hbGUgLSBOZFRdLiAgSSBjb21hbmRpIHNvbm8gbGV0dGkgZGEgInN0ZGVyciIsCitjaGUgZG92cmViYmUgZXNzZXJlIHVuIHRlcm1pbmFsZSBbdHR5XS4KKy5UUAorLXQge3RhZ30KK0lsIGZpbGUgZGEgZWRpdGFyZSBlIGxhIHBvc2l6aW9uZSBpbml6aWFsZSBkZWwgY3Vyc29yZSBkaXBlbmRvbm8gZGEgInRhZyIsCit1bmEgc3BlY2llIGRpICJldGljaGV0dGEiIGEgY3VpIHNhbHRhcmUuCit7dGFnfSB2aWVuZSBjZXJjYXRhIG5lbCBmaWxlIHRhZ3MsIGVkIGlsIGZpbGUgYWQgZXNzYSBhc3NvY2lhdG8gZGl2ZW50YQorcXVlbGxvIGNvcnJlbnRlLCBlZCBpbCBjb21hbmRvIGFkIGVzc2EgYXNzb2NpYXRvIHZpZW5lIGVzZWd1aXRvLgorRGkgc29saXRvIHNpIHVzYSBwZXIgcHJvZ3JhbW1pIEMsIG5lbCBxdWFsIGNhc28ge3RhZ30gcG90cmViYmUgZXNzZXJlIHVuCitub21lIGRpIGZ1bnppb25lLgorTCdlZmZldHRvIOggY2hlIGlsIGZpbGUgY29udGVuZW50ZSBxdWVsbGEgZnVuemlvbmUgZGl2ZW50YSBpbCBmaWxlIGNvcnJlbnRlCitlIGlsIGN1cnNvcmUg6CBwb3NpemlvbmF0byBhbGwnaW5pemlvIGRlbGxhIGZ1bnppb25lLgorVmVkZXJlICI6aGVscCB0YWctY29tbWFuZHMiLgorLlRQCistcSBbZmlsZV9lcnJvcmldCitJbml6aWEgbmVsbGEgbW9kYWxpdOAgcXVpY2tGaXggW2NvcnJlemlvbmUgdmVsb2NlXS4KK0lsIGZpbGUgW2ZpbGVfZXJyb3JpXSDoIGxldHRvIGUgaWwgcHJpbW8gZXJyb3JlIOggdmlzdWFsaXp6YXRvLgorU2UgW2ZpbGVfZXJyb3JpXSBub24g6CBpbmRpY2F0bywgaWwgc3VvIG5vbWUg6CBvdHRlbnV0byBkYWwgdmFsb3JlCitkZWxsJ29wemlvbmUgJ2Vycm9yZmlsZScgKGNoZSwgc2Ugbm9uIHNwZWNpZmljYXRhLCB2YWxlICJBenRlY0MuRXJyIgorcGVyIGwnQW1pZ2EsICJlcnJvcnMuZXJyIiBzdSBhbHRyaSBzaXN0ZW1pKS4KK1NpIHB18iBzYWx0YXJlIGFsbCdlcnJvcmUgc3VjY2Vzc2l2byBjb2wgY29tYW5kbyAiOmNuIi4KK1ZlZGVyZSAiOmhlbHAgcXVpY2tmaXgiLgorLlBQCisuQiBWaW0KK3NpIGNvbXBvcnRhIGluIG1vZG8gZGl2ZXJzbyBzZSBpbnZvY2F0byBjb24gbm9taSBkaWZmZXJlbnRpIChpbCBwcm9ncmFtbWEKK2VzZWd1aWJpbGUgInNvdHRvc3RhbnRlIiBwdfIgZXNzZXJlIHNlbXByZSBsbyBzdGVzc28pLgorLlRQIDEwCit2aW0KK01vZGFsaXTgICJOb3JtYWwiLCBjb21wb3J0YW1lbnRvIG5vcm1hbGUuCisuVFAKK2V4CitJbml6aWEgaW4gbW9kYWxpdOAgIkV4Ii4KK1NpIHB18iBwYXNzYXJlIGluIG1vZGFsaXTgICJOb3JtYWwiIGNvbCBjb21hbmRpICI6dmkiLgorU2kgcHXyIGludm9jYXJlIGxhIG1vZGFsaXTgICJFeCIgYW5jaGUgY29uIGwnYXJnb21lbnRvICItZSIuCisuVFAKK3ZpZXcKK0luaXppYSBpbiBtb2RhbGl04CAiU29sYSBMZXR0dXJhIi4gIE5vbiBwb3RldGUgbW9kaWZpY2FyZSBpIGZpbGUuCitTaSBwdfIgaW52b2NhcmUgbGEgbW9kYWxpdOAgIlNvbGEgTGV0dHVyYSIgYW5jaGUgY29uIGwnYXJnb21lbnRvICItUiIuCisuVFAKK2d2aW0gZ3ZpZXcKK0xhIHZlcnNpb25lIEdVSSBbR3JhcGhpY2FsIFVzZXIgSW50ZXJmYWNlXS4KK0FwcmUgdW5hIG51b3ZhIGZpbmVzdHJhLgorU2kgcHXyIGludm9jYXJlIGxhIG1vZGFsaXTgICJHVUkiIGFuY2hlIGNvbiBsJ2FyZ29tZW50byAiLWciLgorLlRQCitldmltIGV2aWV3CitMYSB2ZXJzaW9uZSBHVUkgaW4gbW9kYWxpdOAgIkZhY2lsZSIgKHNlbXBsaWZpY2F0YSkuCitBcHJlIHVuYSBudW92YSBmaW5lc3RyYS4KK1NpIHB18iBpbnZvY2FyZSBsYSBtb2RhbGl04CAiRmFjaWxlIiBhbmNoZSBjb24gbCdhcmdvbWVudG8gIi15Ii4KKy5UUAorcnZpbSBydmlldyByZ3ZpbSByZ3ZpZXcKK0NvbWUgc29wcmEsIG1hIGNvbiByZXN0cml6aW9uaSBhaSBjb21hbmRpLiAgTm9uIHNpIHBvdHJubm8gZXNlZ3VpcmUgY29tYW5kaQorZGVsbG8gc2hlbGwgbyBzb3NwZW5kZXJlCisuQiBWaW0uCitTaSBwdfIgaW52b2NhcmUgbGEgbW9kYWxpdOAgIlJpc3RyZXR0YSIgYW5jaGUgY29uIGwnYXJnb21lbnRvICItWiIuCisuU0ggT1BaSU9OSQorTGUgb3B6aW9uaSBwb3Nzb25vIGVzc2VyZSBpbiB1biBvcmRpbmUgcXVhbHNpYXNpLCBwcmltYSBvIGRvcG8gaSBub21pIGRpCitmaWxlLiAgT3B6aW9uaSBjaGUgbm9uIG5lY2Vzc2l0YW5vIHVuIGFyZ29tZW50byBwb3Nzb25vIGVzc2VyZSByYWdncnVwcGF0ZQorZGlldHJvIGEgdW4gc29sbyAiLSIuCisuVFAgMTIKKytbbnVtZXJvXQorUGVyIGlsIHByaW1vIGZpbGUgaWwgY3Vyc29yZSBzYXLgIHBvc2l6aW9uYXRvIHN1bGxhIGxpbmVhICJudW1lcm8iLgorU2UgIm51bWVybyIgbWFuY2EsIGlsIGN1cnNvcmUgc2Fy4CBwb3NpemlvbmF0byBzdWxsJ3VsdGltYSBsaW5lYSBkZWwgZmlsZS4KKy5UUAorKy97ZXNwcmVzc2lvbmV9CitQZXIgaWwgcHJpbW8gZmlsZSBpbCBjdXJzb3JlIHNhcuAgcG9zaXppb25hdG8gYWxsYQorcHJpbWEgb2Njb3JyZW56YSBkaSB7ZXNwcmVzc2lvbmV9LgorVmVkZXJlICI6aGVscCBzZWFyY2gtcGF0dGVybiIgcGVyIGNvbWUgc3BlY2lmaWNhcmUgbCdlc3ByZXNzaW9uZS4KKy5UUAorK3tjb21hbmRvfQorLlRQCistYyB7Y29tYW5kb30KK3tjb21hbmRvfSBzYXLgIGVzZWd1aXRvIGRvcG8gY2hlIGlsCitwcmltbyBmaWxlIOggc3RhdG8gbGV0dG8uCit7Y29tYW5kb30g6CBpbnRlcnByZXRhdG8gY29tZSB1biBjb21hbmRvIEV4LgorU2UgaWwge2NvbWFuZG99IGNvbnRpZW5lIHNwYXppIGRldmUgZXNzZXJlIGluY2x1c28gZnJhIGRvcHBpIGFwaWNpCisobyBhbHRybyBkZWxpbWl0YXRvcmUsIGEgc2Vjb25kYSBkZWxsbyBzaGVsbCBjaGUgc2kgc3RhIHVzYW5kbykuCitFc2VtcGlvOiBWaW0gIitzZXQgc2kiIG1haW4uYworLmJyCitOb3RlOiBTaSBwb3Nzb25vIGF2ZXJlIGZpbm8gYSAxMCBjb21hbmRpICIrIiBvICItYyIuCisuVFAKKy1TIHtmaWxlfQorSSBjb21hbmRpIGNvbnRlbnV0aSBpbiB7ZmlsZX0gc29ubyBlc2VndWl0aSBkb3BvIGxhIGxldHR1cmEgZGVsIHByaW1vIGZpbGUuCitFcXVpdmFsZW50ZSBhIC1jICJzb3VyY2Uge2ZpbGV9Ii4KK3tmaWxlfSBub24gcHXyIGF2ZXJlIHVuIG5vbWUgY2hlIGluaXppYSBwZXIgJy0nLgorU2Uge2ZpbGV9IOggb21lc3NvIHNpIHVzYSAiU2Vzc2lvbi52aW0iIChmdW56aW9uYSBzb2xvIHNlIC1TIOggbCd1bHRpbW8KK2FyZ29tZW50byBzcGVjaWZpY2F0bykuCisuVFAKKy0tY21kIHtjb21hbmRvfQorQ29tZSAiLWMiLCBtYSBpbCBjb21hbmRvIOggZXNlZ3VpdG8gUFJJTUEKK2RpIGVzZWd1aXJlIHF1YWxzaWFzaSBmaWxlIHZpbXJjLgorU2kgcG9zc29ubyB1c2FyZSBmaW5vIGEgMTAgZGkgcXVlc3RpIGNvbWFuZGksIGluZGlwZW5kZW50ZW1lbnRlIGRhaSBjb21hbmRpCisiLWMiLgorLlRQCistQQorU2UKKy5CIFZpbQor6CBzdGF0byBjb21waWxhdG8gY29uIHN1cHBvcnRvIEFSQUJJQyBwZXIgZWRpdGFyZSBmaWxlIGNvbiBvcmllbnRhbWVudG8KK2Rlc3RyYS1zaW5pc3RyYSBlIHRhc3RpZXJhIGNvbiBtYXBwYXR1cmEgQXJhYmEsIHF1ZXN0YSBvcHppb25lIGluaXppYQorLkIgVmltCitpbiBtb2RhbGl04CAiQXJhYmljIiwgY2lv6CBpbXBvc3RhbmRvICdhcmFiaWMnLgorQWx0cmltZW50aSB2aWVuZSBkYXRvIHVuIG1lc3NhZ2dpbyBkaSBlcnJvcmUgZQorLkIgVmltCit0ZXJtaW5hIGluIG1vZG8gYW5vcm1hbGUuCisuVFAKKy1iCitNb2RhbGl04CAiQmluYXJpYSIuCitWZW5nb25vIGltcG9zdGF0ZSBhbGN1bmUgb3B6aW9uaSBjaGUgcGVybWV0dG9ubyBkaSBtb2RpZmljYXJlIHVuIGZpbGUKK2JpbmFyaW8gbyB1biBwcm9ncmFtbWEgZXNlZ3VpYmlsZS4KKy5UUAorLUMKK0NvbXBhdGliaWxlLiAgSW1wb3N0YSBsJ29wemlvbmUgJ2NvbXBhdGlibGUnLgorSW4gcXVlc3RvIG1vZG8KKy5CIFZpbQoraGEgcXVhc2kgbG8gc3Rlc3NvIGNvbXBvcnRhbWVudG8gZGkgVmksIGFuY2hlIGluIHByZXNlbnphIGRpIHVuIGZpbGUKK2RpIGNvbmZpZ3VyYXppb25lIC52aW1yYyBbcHJvcHJpbyBkaSBWaW0gLSBOZFRdLgorLlRQCistZAorSW5pemlhIGluIG1vZGFsaXTgICJEaWZmIiBbZGlmZmVyZW56ZV0uCitEb3ZyZWJiZXJvIGVzc2VyY2kgY29tZSBhcmdvbWVudGkgZHVlIG8gdHJlIG5vbWkgZGkgZmlsZS4KKy5CIFZpbQorYXByaXLgIHR1dHRpIGkgZmlsZSBldmlkZW56aWFuZG8gbGUgZGlmZmVyZW56ZSBmcmEgZ2xpIHN0ZXNzaS4KK0Z1bnppb25hIGNvbWUgdmltZGlmZigxKS4KKy5UUAorLWQge2Rpc3Bvc2l0aXZvfQorQXByZSB7ZGlzcG9zaXRpdm99IHBlciB1c2FybG8gY29tZSB0ZXJtaW5hbGUuCitTb2xvIHBlciBsJ0FtaWdhLgorRXNlbXBpbzoKKyJcLWQgY29uOjIwLzMwLzYwMC8xNTAiLgorLlRQCistRAorRGVidWdnaW5nLiAgVmltIHNpIG1ldHRlIGluIG1vZGFsaXTgICJkZWJ1Z2dpbmciIGEgcGFydGlyZQorZGFsbCdlc2VjdXppb25lIGRlbCBwcmltbyBjb21hbmRvIGRhIHVubyBzY3JpcHQuCisuVFAKKy1lCitFc2VndWlyZQorLkIgVmltCitpbiBtb2RhbGl04CAiRXgiLCBjb21lIHNlIGlsIHByb2dyYW1tYSBlc2VndWl0byBzaWEgImV4Ii4KKy5UUAorLUUKK0VzZWd1aXJlCisuQiBWaW0KK2luIG1vZGFsaXTgICJFeCIgbWlnbGlvcmF0YSwgY29tZSBzZSBpbCBwcm9ncmFtbWEgZXNlZ3VpdG8gc2lhICJleGltIi4KKy5UUAorLWYKK0RpcmV0dGFtZW50ZSBbRm9yZWdyb3VuZF0uICBQZXIgbGEgdmVyc2lvbmUgR1VJLAorLkIgVmltCitub24gY3JlYSBbZm9ya10gdW5hIG51b3ZhIGZpbmVzdHJhLCBpbmRpcGVuZGVudGUgZGFsbG8gc2hlbGwgZGkgaW52b2NhemlvbmUuCitQZXIgbCdBbWlnYSwKKy5CIFZpbQorbm9uIOggZmF0dG8gcmlwYXJ0aXJlIHBlciBhcHJpcmUgdW5hIG51b3ZhIGZpbmVzdHJhLgorT3B6aW9uZSBkYSB1c2FyZSBxdWFuZG8KKy5CIFZpbQor6CBlc2VndWl0byBkYSB1biBwcm9ncmFtbWEgY2hlIGF0dGVuZGUgbGEgZmluZSBkZWxsYQorc2Vzc2lvbmUgZGkgZWRpdCAoYWQgZXMuIG1haWwpLgorU3VsbCdBbWlnYSBpIGNvbWFuZGkgIjpzaCIgZSAiOiEiIG5vbiBzb25vIGRpc3BvbmliaWxpLgorLlRQCistLW5vZm9yaworRGlyZXR0YW1lbnRlIFtGb3JlZ3JvdW5kXS4gIFBlciBsYSB2ZXJzaW9uZSBHVUksCisuQiBWaW0KK25vbiBjcmVhIFtmb3JrXSB1bmEgbnVvdmEgZmluZXN0cmEsIGluZGlwZW5kZW50ZSBkYWxsbyBzaGVsbCBkaSBpbnZvY2F6aW9uZS4KKy5UUAorLUYKK1NlCisuQiBWaW0KK+ggc3RhdG8gY29tcGlsYXRvIGNvbiBzdXBwb3J0byBGS01BUCBwZXIgZWRpdGFyZSBmaWxlIGNvbiBvcmllbnRhbWVudG8KK2Rlc3RyYS1zaW5pc3RyYSBlIHRhc3RpZXJhIGNvbiBtYXBwYXR1cmEgRmFyc2ksIHF1ZXN0YSBvcHppb25lIGluaXppYQorLkIgVmltCitpbiBtb2RhbGl04CAiRmFyc2kiLCBjaW/oIGltcG9zdGFuZG8gJ2ZrbWFwJyBlICdyaWdodGxlZnQnLgorQWx0cmltZW50aSB2aWVuZSBkYXRvIHVuIG1lc3NhZ2dpbyBkaSBlcnJvcmUgZQorLkIgVmltCit0ZXJtaW5hIGluIG1vZG8gYW5vcm1hbGUuCisuVFAKKy1nCitTZQorLkIgVmltCivoIHN0YXRvIGNvbXBpbGF0byBjb24gc3VwcG9ydG8gR1VJLCBxdWVzdGEgb3B6aW9uZSBjaGllZGUgZGkgdXNhcmxhLgorU2UgVmltIOggc3RhdG8gY29tcGlsYXRvIHNlbnphIHN1cHBvcnRvIEdVSSB2aWVuZSBkYXRvIHVuIG1lc3NhZ2dpbyBkaSBlcnJvcmUgZQorLkIgVmltCit0ZXJtaW5hIGluIG1vZG8gYW5vcm1hbGUuCisuVFAKKy1oCitVbiBwbycgZGkgYWl1dG8gc3Ugb3B6aW9uaSBlIGFyZ29tZW50aSBjaGUgc2kgcG9zc29ubyBkYXJlIGludm9jYW5kbyBWaW0uCitTdWJpdG8gZG9wbworLkIgVmltCitlc2NlLgorLlRQCistSAorU2UKKy5CIFZpbQor6CBzdGF0byBjb21waWxhdG8gY29sIHN1cHBvcnRvIFJJR0hUTEVGVCBwZXIgZWRpdGFyZSBmaWxlIGNvbiBvcmllbnRhbWVudG8KK2Rlc3RyYS1zaW5pc3RyYSBlIHRhc3RpZXJhIGNvbiBtYXBwYXR1cmEgRWJyYWljYSwgcXVlc3RhIG9wemlvbmUgaW5pemlhCisuQiBWaW0KK2luIG1vZGFsaXTgICJFYnJhaWNhIiwgY2lv6CBpbXBvc3RhbmRvICdoa21hcCcgZSAncmlnaHRsZWZ0Jy4KK0FsdHJpbWVudGkgdmllbmUgZGF0byB1biBtZXNzYWdnaW8gZGkgZXJyb3JlIGUKKy5CIFZpbQordGVybWluYSBpbiBtb2RvIGFub3JtYWxlLgorLlRQCistaSB7dmltaW5mb30KK1NlIOggYWJpbGl0YXRvIGwndXNvIGRpIHVuIGZpbGUgdmltaW5mbywgcXVlc3RhIG9wemlvbmUgaW5kaWNhIGlsIG5vbWUKK2RlbCBmaWxlIGRhIHVzYXJlIGludmVjZSBkaSBxdWVsbG8gcHJlZGVmaW5pdG8gIn4vLnZpbWluZm8iLgorU2kgcHXyIGFuY2hlIGV2aXRhcmUgbCd1c28gZGkgdW4gZmlsZSAudmltaW5mbywgZGFuZG8gY29tZSBub21lICJOT05FIi4KKy5UUAorLUwKK0VxdWl2YWxlbnRlIGEgLXIuCisuVFAKKy1sCitNb2RhbGl04CBMaXNwLgorSW1wb3N0YSBsZSBvcHppbmkgJ2xpc3AnIGUgJ3Nob3dtYXRjaCcuCisuVFAKKy1tCitJbmliaXNjZSBtb2RpZmljYSBmaWxlLgorQW5udWxsYSBsJ29wemlvbmUgJ3dyaXRlJy4KK0UnIGFuY29yYSBwb3NzaWJpbGUgbW9kaWZpY2FyZSB1biBidWZmZXIgW2luIG1lbW9yaWEgLSBOZHRdLCBtYSBub24gc2NyaXZlcmxvLgorLlRQCistTQorTW9kaWZpY2hlIG5vbiBwZXJtZXNzZS4gIExlIG9wemlvbmkgJ21vZGlmaWFibGUnIGUgJ3dyaXRlJyBzb25vIGFubnVsbGF0ZSwKK2luIG1vZG8gZGEgaW1wZWRpcmUgc2lhIG1vZGlmaWNoZSBjaGUgcmlzY3JpdHR1cmUuICBEYSBub3RhcmUgY2hlIHF1ZXN0ZQorb3B6aW9uaSBwb3Nzb25vIGVzc2VyZSBhYmlsaXRhdGUgaW4gc2VndWl0bywgcGVybWV0dGVuZG8gY29z7CBtb2RpZmljaGUuCisuVFAKKy1OCitNb2RhbGl04CAiTm9uLWNvbXBhdGliaWxlIi4gIEFubnVsbGEgbCdvcHppb25lICdjb21wYXRpYmxlJy4KK0Nvc+wKKy5CIFZpbQordmEgdW4gcG8nIG1lZ2xpbywgbWEg6CBtZW5vIGNvbXBhdGliaWxlIGNvbiBWaSwgYW5jaGUgaW4gYXNzZW56YSBkaSB1bgorZmlsZSAudmltcmMuCisuVFAKKy1uCitJbmliaXNjZSBsJ3VzbyBkaSB1biBmaWxlIGRpIHN3YXAuCitJbCByZWN1cGVybyBkb3BvIHVuYSBjYWR1dGEgZGkgbWFjY2hpbmEgZGl2ZW50YSBpbXBvc3NpYmlsZS4KK1V0aWxlIHBlciBlZGl0YXJlIHVuIGZpbGUgc3UgdW4gc3VwcG9ydG8gbW9sdG8gbGVudG8gKGFkIGVzLiBmbG9wcHkpLgorSWwgY29tYW5kbyAiOnNldCB1Yz0wIiBoYSBsbyBzdGVzc28gZWZmZXR0by4KK1BlciBhYmlsaXRhcmUgaWwgcmVjdXBlcm8gdXNhcmUgIjpzZXQgdWM9MjAwIi4KKy5UUAorLW5iCitEaXZpZW5lIHVuIEVkaXRvciBzZXJ2ZXIgcGVyIE5ldEJlYW5zLiAgVmVkZXJlIGxhIGRvY3VtZW50YXppb25lIHBlciBkZXR0YWdsaS4KKy5UUAorLW9bTl0KK0FwcmkgTiBmaW5lc3RyZSBpbiBvcml6em9udGFsZS4KK1NlIE4gbWFuY2EsIGFwcmkgdW5hIGZpbmVzdHJhIHBlciBjaWFzY3VuIGZpbGUuCisuVFAKKy1PW05dCitBcHJpIE4gZmluZXN0cmUsIGluIHZlcnRpY2FsZS4KK1NlIE4gbWFuY2EsIGFwcmkgdW5hIGZpbmVzdHJhIHBlciBjaWFzY3VuIGZpbGUuCisuVFAKKy1SCitNb2RhbGl04CAiU29sYSBMZXR0dXJhIi4KK0ltcG9zdGEgbCdvcHppb25lICdyZWFkb25seScuCitTaSBwdfIgYW5jb3JhIG1vZGlmaWNhcmUgaWwgYnVmZmVyLCBtYSBzaWV0ZSBwcm90ZXR0aSBkYSB1bmEgcmlzY3JpdHR1cmEKK2ludm9sb250YXJpYS4KK1NlIHZvbGV0ZSBkYXZ2ZXJvIHJpc2NyaXZlcmUgaWwgZmlsZSwgYWdnaXVuZ2V0ZSB1biBwdW50byBlc2NsYW1hdGl2bworYWwgY29tYW5kbyAiRXgiLCBjb21lIGluICI6dyEiLgorTCdvcHppb25lIC1SIGltcGxpY2EgYW5jaGUgbCdvcHppb25lIC1uICh2ZWRlcmUgc290dG8pLgorTCdvcHppb25lICdyZWFkb25seScgcHXyIGVzc2VyZSBhbm51bGxhdGEgY29uICI6c2V0IG5vcm8iLgorVmVkZXJlICI6aGVscCAncmVhZG9ubHknIi4KKy5UUAorLXIKK0xpc3RhIGZpbGUgZGkgc3dhcCwgYXNzaWVtZSBhIGRhdGkgdXRpbGkgcGVyIHVuIHJlY3VwZXJvLgorLlRQCistciB7ZmlsZX0KK01vZGFsaXTgICJSZWNvdmVyeSIuCitJbCBmaWxlIGRpIHN3YXAg6CB1c2F0byBwZXIgcmVjdXBlcmFyZSB1bmEgc2Vzc2lvbmUgZGkgZWRpdCBmaW5pdGEgbWFsZS4KK0lsIGZpbGUgZGkgc3dhcCDoIHVuIGZpbGUgY29uIGxvIHN0ZXNzbyBub21lIGZpbGUgZGVsIGZpbGUgZGkgdGVzdG8KK2VkaXRhdG8sIGNvbCBzdWZmaXNzbyAiLnN3cCIuCitWZWRlcmUgIjpoZWxwIHJlY292ZXJ5Ii4KKy5UUAorLXMKK01vZGFsaXTgIHNpbGVuemlvc2EuICBTb2xvIHF1YW5kbyBpbnZvY2F0byBjb21lICJFeCIgbyBxdWFuZG8gbCdvcHppb25lCisiLWUiIOggc3RhdGEgZGF0YSBwcmltYSBkZWxsJ29wemlvbmUgIi1zIi4KKy5UUAorLXMge3NjcmlwdGlufQorTG8gc2NyaXB0IGZpbGUge3NjcmlwdGlufSDoIGxldHRvLgorSSBjYXJhdHRlcmkgbmVsIGZpbGUgc29ubyBpbnRlcnByZXRhdGkgY29tZSBzZSBpbW1lc3NpIGRhIHZvaS4KK0xvIHN0ZXNzbyBzaSBwdfIgb3R0ZW5lcmUgY29sIGNvbWFuZG8gIjpzb3VyY2UhIHtzY3JpcHRpbn0iLgorU2UgbGEgZmluZSBkZWwgZmlsZSBkaSBpbnB1dCB2aWVuZSByYWdnaXVudGEgcHJpbWEgY2hlIFZpbSB0ZXJtaW5pLAorbCd1bHRlcmlvcmUgaW5wdXQgdmllbmUgcHJlc28gZGFsbGEgdGFzdGllcmEuCisuVFAKKy1UIHt0ZXJtaW5hbGV9CitEaWNlIGEKKy5CIFZpbQorcXVhbGUgdGlwbyBkaSB0ZXJtaW5hbGUgc3RhdGUgdXNhbmRvLgorVXRpbGUgc29sbyBzZSBpbCB0ZXJtaW5hbGUgbm9uIHZpZW5lIHJpY29ub3NjaXV0byBjb3JyZXR0YW1lbnRlIGRhIFZpbS4KK0RvdnJlYmJlIGVzc2VyZSB1biB0ZXJtaW5hbGUgbm90byBhCisuQiBWaW0KKyhpbnRlcm5hbWVudGUpIG8gZGVmaW5pdG8gbmVsIGZpbGUgdGVybWNhcCBvIHRlcm1pbmZvLgorLlRQCistdSB7dmltcmN9CitVc2EgaSBjb21hbmRpIG5lbCBmaWxlIHt2aW1yY30gcGVyIGluaXppYWxpenphemlvbmkuCitUdXR0ZSBsZSBhbHRyZSBpbml6aWFsaXp6YXppb25pIG5vbiBzb25vIGVzZWd1aXRlLgorVXNhdGUgcXVlc3RhIG9wemlvbmUgcGVyIGVkaXRhcmUgcXVhbGNoZSBmaWxlIGRpIHRpcG8gc3BlY2lhbGUuCitQdfIgYW5jaGUgZXNzZXJlIHVzYXRvIHBlciBub24gZmFyZSBhbGN1bmEgaW5pemlhbGl6emF6aW9uZSBkYW5kbyAKK2NvbWUgbm9tZSAiTk9ORSIuCitWZWRlcmUgIjpoZWxwIGluaXRpYWxpemF0aW9uIiBkYSB2aW0gcGVyIHVsdGVyaW9yaSBkZXR0YWdsaS4KKy5UUAorLVUge2d2aW1yY30KK1VzYSBpIGNvbWFuZGkgbmVsIGZpbGUge2d2aW1yY30gcGVyIGluaXppYWxpenphemlvbmkgR1VJLgorVHV0dGUgbGUgYWx0cmUgaW5pemlhbGl6emF6aW9uaSBHVUkgbm9uIHNvbm8gZXNlZ3VpdGUuCitQdfIgYW5jaGUgZXNzZXJlIHVzYXRhIHBlciBub24gZmFyZSBhbGN1bmEgaW5pemlhbGl6emF6aW9uZSBHVUkgZGFuZG8gCitjb21lIG5vbWUgIk5PTkUiLgorVmVkZXJlICI6aGVscCBndWktaW5pdCIgZGEgdmltIHBlciB1bHRlcmlvcmkgZGV0dGFnbGkuCisuVFAKKy1WW05dCitWZXJib3NvLiAgVmltIG1hbmRhIG1lc3NhZ2dpIHJlbGF0aXZpIGFnbGkgc2NyaXB0IGZpbGUgY2hlIGVzZWd1ZQorZSBxdWFuZG8gbGVnZ2UgbyBzY3JpdmUgdW4gZmlsZSB2aW1pbmZvLiAgSWwgbnVtZXJvIG9wemlvbmFsZSBOIOggaWwgdmFsb3JlCitkZWxsJ29wemlvbmUgJ3ZlcmJvc2UnLgorSWwgdmFsb3JlIHByZWRlZmluaXRvIOggMTAuCisuVFAKKy12CitJbml6aWEKKy5CIFZpbQoraW4gbW9kYWxpdOAgIlZpIiwgY29tZSBzZSBpbCBwcm9ncmFtbWEgZXNlZ3VpYmlsZSBmb3NzZSAidmkiLiAgUXVlc3RvIGhhCitlZmZldHRvIHNvbG8gcXVhbmRvIFZpbSB2aWVuZSBpbnZvY2F0byBjb24gaWwgbm9tZSAiZXgiLgorLlRQCistdyB7c2NyaXB0b3V0fQorT2duaSBjYXJhdHRlcmUgaW1tZXNzbyB2aWVuZSByZWdpc3RyYXRvIG5lbCBmaWxlIHtzY3JpcHRvdXR9LAorZmluY2jpIG5vbiB1c2NpdGUgZGEKKy5CIFZpbS4KK1V0aWxlIHNlIHNpIHZ1b2xlIGNyZWFyZSB1bm8gc2NyaXB0IGZpbGUgZGEgdXNhcmUgY29uICJ2aW0gLXMiIG8KKyI6c291cmNlISIuCitTZSBpbCBmaWxlIHtzY3JpcHRvdXR9IGVzaXN0ZSwgcXVlbCBjaGUgaW1tZXR0ZXRlIHZpZW5lIGFnZ2l1bnRvIGluIGZvbmRvLgorLlRQCistVyB7c2NyaXB0b3V0fQorQ29tZSAtdywgbWEgdW5vIHNjcmlwdCBmaWxlIGVzaXN0ZW50ZSB2aWVuZSBzb3ZyYXNjcml0dG8uCisuVFAKKy14CitVc28gZGkgY2lmcmF0dXJhIG5lbGxhIHNjcml0dHVyYSBkZWkgZmlsZS4gIEUnIG5lY2Vzc2FyaW8gaW1tZXR0ZXJlCit1bmEgY2hpYXZlIGRpIGNpZnJhdHVyYS4KKy5UUAorLVgKK05vbiBjb25uZXR0ZXJ0aSBhbCBzZXJ2ZXIgWC4gIFZpbSBwYXJ0ZSBwafkgcmFwaWRhbWVudGUsCittYSBpbCB0aXRvbG8gZGVsbGEgZmluZXN0cmEgZSBsYSBjbGlwYm9hcmQgbm9uIHNvbm8gZGlzcG9uaWJpbGkuCisuVFAKKy15CitFc2VndWlyZQorLkIgVmltCitpbiBtb2RhbGl04CAiRmFjaWxlIiAoc2VtcGxpZmljYXRhKSwgY29tZSBzZSBsJ2VzZWd1aWJpbGUgaW52b2NhdG8KK3NpYSAiZXZpbSIgbyAiZXZpZXciLgorRmEgc+wgY2hlCisuQiBWaW0KK3NpIGNvbXBvcnRpIGNvbWUgdW4gZWRpdG9yIGNoZSB1c2Egc29sbyBpbCBtb3VzZSBlIGkgY2FyYXR0ZXJpLgorLlRQCistWgorTW9kYWxpdOAgIlJpc3RyZXR0YSIuICBWaW0gc2kgY29tcG9ydGEgY29tZSBzZSBpbnZvY2F0byBjb24gdW4gbm9tZQorY2hlIGluaXppYSBwZXIgInIiLgorLlRQCistLQorU3BlY2lmaWNhIGxhIGZpbmUgZGVsbGUgb3B6aW9uaS4KK0FyZ29tZW50aSBzcGVjaWZpY2F0aSBkb3BvIHF1ZXN0byBzb25vIGNvbnNpZGVyYXRpIG5vbWkgZmlsZS4KK1NpIHB18iB1c2FyZSBwZXIgZWRpdGFyZSB1biBmaWxlIGlsIGN1aSBub21lIGluaXppIHBlciAnLScuCisuVFAKKy0tZWNoby13aWQKK1NvbG8gY29uIEdVSSBHVEs6IFZpc3VhbGl6emEgV2luZG93IElEIHN1ICJzdGRvdXQiLgorLlRQCistLWhlbHAKK1ZpbSBk4CB1biBtZXNzYWdnaW8gZWQgZXNjZSwgY29tZSBjb24gbCdhcmdvbWVudG8gIi1oIi4KKy5UUAorLS1saXRlcmFsCitDb25zaWRlcmEgaSBub21pIHBhc3NhdGkgY29tZSBhcmdvbWVudGkgbGV0dGVyYWksIHNlbnphIGVzcGFuZGVyZQorbWV0YWNhcmF0dGVyaS4gIE5vbiBuZWNlc3NhcmlvIGluIFVuaXgsIGxvIHNoZWxsIGVzcGFuZGUgaSBtZXRhY2FyYXR0ZXJpLgorLlRQCistLW5vcGx1Z2luCitOb24gY2FyaWNhcmUgcGx1Z2luLiAgSW1wbGljaXRvIHNlIHNpIHNwZWNpZmljYSAtdSBOT05FLgorLlRQCistLXJlbW90ZQorQ29ubmV0dGVyc2kgYSB1biBzZXJ2ZXIgVmltIGUgY2hpZWRlcmUgZGkgZWRpdGFyZSBpIGZpbGUgZWxlbmNhdGkgY29tZSBhbHRyaQorYXJnb21lbnRpLiAgU2Ugbm9uIHNpIHRyb3ZhIHVuIHNlcnZlciB2aWVuZSBkYXRvIHVuIG1lc3NhZ2dpbyBlIGkgZmlsZSBzb25vCitlZGl0YXRpIG5lbCBWaW0gY29ycmVudGUuCisuVFAKKy0tcmVtb3RlLWV4cHIge2V4cHJ9CitDb25uZXR0ZXJzaSBhIHVuIHNlcnZlciBWaW0sIHZhbHV0YXJlIGl2aSB7ZXhwcn0gZSBzdGFtcGFyZSBpbCByaXN1bHRhdG9pCitzdSAic3Rkb3V0Ii4KKy5UUAorLS1yZW1vdGUtc2VuZCB7Y2hpYXZpfQorQ29ubmV0dGVyc2kgYSB1biBzZXJ2ZXIgVmltIGUgc3BlZGlyZ2xpIHtjaGlhdml9LgorLlRQCistLXJlbW90ZS1zaWxlbnQKK0NvbWUgLS1yZW1vdGUsIG1hIHNlbnphIGF2dmlzYXJlIHNlIG5vbiBzaSB0cm92YSB1biBzZXJ2ZXIuCisuVFAKKy0tcmVtb3RlLXdhaXQKK0NvbWUgLS1yZW1vdGUsIG1hIFZpbSBub24gdGVybWluYSBmaW5jaOkgaSBmaWxlIG5vbiBzb25vIHN0YXRpIGVkaXRhdGkuCisuVFAKKy0tcmVtb3RlLXdhaXQtc2lsZW50CitDb21lIC0tcmVtb3RlLXdhaXQsIG1hIHNlbnphIGF2dmlzYXJlIHNlIG5vbiBzaSB0cm92YSB1biBzZXJ2ZXIuCisuVFAKKy0tc2VydmVybGlzdAorTGlzdGEgaSBub21pIGRpIHR1dHRpIGkgc2VydmVyIFZpbSBkaXNwb25pYmlsaS4KKy5UUAorLS1zZXJ2ZXJuYW1lIHtub21lfQorVXNhIHtub21lfSBjb21lIG5vbWUgc2VydmVyLiAgVXNhdG8gcGVyIGlsIFZpbSBjb3JyZW50ZSwgYSBtZW5vIGNoZSBzaWEKK3VzYXRvIGNvbiBsJ2FyZ29tZW50byAtLXJlbW90ZSwgbmVsIHF1YWwgY2FzbyBpbmRpY2EgaWwgc2VydmVyIGEgY3VpCitjb25uZXR0ZXJzaS4KKy5UUAorLS1zb2NrZXRpZCB7aWR9CitTb2xvIGNvbiBHVUkgR1RLOiBVc2EgaWwgbWVjY2FuaXNtbyBHdGtQbHVnIHBlciBlc2VndWlyZSBndmltIGluIHVuJ2FsdHJhCitmaW5lc3RyYS4KKy5UUAorLS12ZXJzaW9uCitTdGFtcGEgbGEgdmVyc2lvbmUgZGkgVmltIGVkIGVzY2kuCisuU0ggQUlVVE8gT05MSU5FCitCYXR0ZXJlICI6aGVscCIgaW4KKy5CIFZpbQorcGVyIGluaXppYXJlLgorQmF0dGVyZSAiOmhlbHAgYXJnb21lbnRvIiBwZXIgcmljZXZlcmUgYWl1dG8gc3UgdW5vIHNwZWNpZmljbyBhcmdvbWVudG8uCitQZXIgZXNlbXBpbzogIjpoZWxwIFpaIiBwZXIgcmljZXZlcmUgYWl1dG8gc3VsIGNvbWFuZG8gIlpaIi4KK1VzYXJlIDxUYWI+IGUgQ1RSTC1EIHBlciBjb21wbGV0YXJlIGdsaSBhcmdvbWVudGkKKygiOmhlbHAgY21kbGluZS1jb21wbGV0aW9uIikuCitDaSBzb25vICJ0YWciIG5laSBmaWxlIGRpIGhlbHAgcGVyIHNhbHRhcmUgZGEgdW4gYXJnb21lbnRvIGEgdW4gYWx0cm8KKyhzaW1pbGkgYSBsZWdhbWkgaXBlcnRlc3R1YWxpLCB2ZWRlcmUgIjpoZWxwIikuCitUdXR0aSBpIGZpbGUgZGkgZG9jdW1lbnRhemlvbmUgcG9zc29ubyBlc3NlcmUgbmF2aWdhdGkgY29z7C4gIEFkIGVzLjoKKyI6aGVscCBzeW50YXgudHh0Ii4KKy5TSCBGSUxFCisuVFAgMTUKKy91c3IvbG9jYWwvbGliL3ZpbS9kb2MvKi50eHQKK0kgZmlsZSBkaSBjb2N1bWVudGF6aW9uYSBkaQorLkIgVmltCisuCitVc2F0ZSAiOmhlbHAgZG9jLWZpbGUtbGlzdCIgcGVyIGF2ZXJlIGxhIGxpc3RhIGNvbXBsZXRhLgorLlRQCisvdXNyL2xvY2FsL2xpYi92aW0vZG9jL3RhZ3MKK0lsIGZpbGUgZGkgdGFncyB1c2F0byBwZXIgdHJvdmFyZSBpbmZvcm1hemlvbmkgbmVpIGZpbGUgZGkgZG9jdW1lbnRhemlvbmUuCisuVFAKKy91c3IvbG9jYWwvbGliL3ZpbS9zeW50YXgvc3ludGF4LnZpbQorSW5pemlhbGl6emF6aW9uaSBzaW50YXR0aWNoZSBhIGxpdmVsbG8gZGkgc2lzdGVtYS4KKy5UUAorL3Vzci9sb2NhbC9saWIvdmltL3N5bnRheC8qLnZpbQorRmlsZSBkaSBjb2xvcmF6aW9uZSBzaW50YXR0aWNhIHBlciB2YXJpIGxpbmd1YWdnaS4KKy5UUAorL3Vzci9sb2NhbC9saWIvdmltL3ZpbXJjCitJbml6aWFsaXp6YXppb25pCisuQiBWaW0KK2EgbGl2ZWxsbyBkaSBzaXN0ZW1hLgorLlRQCisvdXNyL2xvY2FsL2xpYi92aW0vZ3ZpbXJjCitJbml6aWFsaXp6YXppb25pIGd2aW0gYSBsaXZlbGxvIGRpIHNpc3RlbWEuCisuVFAKKy91c3IvbG9jYWwvbGliL3ZpbS9vcHR3aW4udmltCitTY3JpcHQgVmltIHVzYXRvIGRhbCBjb21hbmRvICI6b3B0aW9ucyIsIHVuIG1vZG8gc2VtcGxpY2UKK3BlciB2aXN1YWxpenphcmUgZSBpbXBvc3RhcmUgb3B6aW9uaS4KKy5UUAorL3Vzci9sb2NhbC9saWIvdmltL21lbnUudmltCitJbnppYWxpenphemlvbmkgZGVsIG1lbnUgZ3ZpbSBhIGxpdmVsbG8gZGkgc2lzdGVtYS4KKy5UUAorL3Vzci9sb2NhbC9saWIvdmltL2J1Z3JlcG9ydC52aW0KK1NjcmlwdCBWaW0gcGVyIGdlbmVyYXJlIHVuYSBzZWduYWxhemlvbmUgZGkgZXJyb3JlLiAgVmVkZXJlICI6aGVscCBidWdzIi4KKy5UUAorL3Vzci9sb2NhbC9saWIvdmltL2ZpbGV0eXBlLnZpbQorU2NyaXB0IFZpbSBwZXIgZGV0ZXJtaW5hcmUgaWwgdGlwbyBkaSB1biBmaWxlIGEgcGFydGlyZSBkYWwgc3VvIG5vbWUuCitWZWRlcmUgIjpoZWxwICdmaWxldHlwZSciLgorLlRQCisvdXNyL2xvY2FsL2xpYi92aW0vc2NyaXB0cy52aW0KK1NjcmlwdCBWaW0gcGVyIGRldGVybWluYXJlIGlsIHRpcG8gZGkgdW4gZmlsZSBhIHBhcnRpcmUgZGFsIHN1byBjb250ZW51dG8uCitWZWRlcmUgIjpoZWxwICdmaWxldHlwZSciLgorLlRQCisvdXNyL2xvY2FsL2xpYi92aW0vKi5wcworRmlsZSB1c2F0aSBwZXIgc3RhbXBhIFBvc3RTY3JpcHQuCisuUFAKK1BlciBpbmZvcm1hemlvbmkgYWdnaW9ybmF0ZSBbaW4gaW5nbGVzZSAtIE5kVF0gdmVkZXJlIGxhIGhvbWUgcGFnZSBkaSBWaW06CisuYnIKKzxVUkw6aHR0cDovL3d3dy52aW0ub3JnLz4KKy5TSCBWRURFUkUgQU5DSEUKK3ZpbXR1dG9yKDEpCisuU0ggQVVUT1JFCitCdW9uYSBwYXJ0ZSBkaQorLkIgVmltCivoIHN0YXRvIHNjcml0dG8gZGEgQnJhbSBNb29sZW5hYXIsIGNvbiBtb2x0byBhaXV0byBkYSBhbHRyaS4KK1ZlZGVyZSAiOmhlbHAgY3JlZGl0cyIgaW4KKy5CIFZpbS4KKy5icgorLkIgVmltCivoIGJhc2F0byBzdSBTdGV2aWUsIHNjcml0dG8gZGE6IFRpbSBUaG9tcHNvbiwKK1RvbnkgQW5kcmV3cyBlIEcuUi4gKEZyZWQpIFdhbHRlci4KK0luIHZlcml04CwgcG9jbyBvIG51bGxhIOggcmltYXN0byBkZWwgbG9ybyBjb2RpY2Ugb3JpZ2luYWxlLgorLlNIIEJBQ0hJCitQcm9iYWJpbGkuCitWZWRlcmUgIjpoZWxwIHRvZG8iIHBlciB1bmEgbGlzdGEgZGkgcHJvYmxlbWkgbm90aS4KKy5QUAorU2kgbm90aSBjaGUgdW4gY2VydG8gbnVtZXJvIGRpIGNvbXBvcnRhbWVudGkgY2hlIHBvc3Nvbm8gZXNzZXJlIGNvbnNpZGVyYXRpCitlcnJvcmkgZGEgcXVhbGN1bm8sIHNvbm8gaW4gZWZmZXR0aSBjYXVzYXRpIGRhIHVuYSByaXByb2R1emlvbmUgZmluIHRyb3BwbworZmVkZWxlIGRlbCBjb21wb3J0YW1lbnRvIGRpIFZpLgorU2Ugcml0ZW5ldGUgY2hlIGFsdHJlIGNvc2Ugc2lhbm8gZXJyb3JpICJwZXJjaOkgVmkgc2kgY29tcG9ydGEgZGl2ZXJzYW1lbnRlIiwKK2RhdGUgcHJpbWEgdW4nb2NjaGlhdGEgYWwgZmlsZSB2aV9kaWZmLnR4dAorKG8gYmF0dGVyZSA6aGVscCB2aV9kaWZmLnR4dCBkYSBWaW0pLgorRGF0ZSBhbmNoZSB1bidvY2NoaWF0YSBhbGxlIG9wemlvbmkgJ2NvbXBhdGlibGUnIGUgJ2Nwb3B0aW9ucy4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZpbS5tYW4gYi9ydW50aW1lL2RvYy92aW0ubWFuCmluZGV4IDU5MzkyNmQuLmZmOTI1YzYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3ZpbS5tYW4KKysrIGIvcnVudGltZS9kb2MvdmltLm1hbgpAQCAtMjc5LDggKzI3OSw4IEBACiAgICAgICAgLVcge3NjcmlwdG91dH0KICAgICAgICAgICAgICAgICAgICBMaWtlIC13LCBidXQgYW4gZXhpc3RpbmcgZmlsZSBpcyBvdmVyd3JpdHRlbi4KIAotICAgICAgIC14ICAgICAgICAgIFVzZSAgZW5jcnlwdGlvbiAgd2hlbiAgd3JpdGluZyAgZmlsZXMuICAgIFdpbGwgcHJvbXB0IGZvciBhCi0gICAgICAgICAgICAgICAgICAgY3J5cHQga2V5LgorICAgICAgIC14ICAgICAgICAgIFVzZSBlbmNyeXB0aW9uIHdoZW4gd3JpdGluZyBmaWxlcy4gIFdpbGwgcHJvbXB0IGZvciBhIGNyeXB0CisgICAgICAgICAgICAgICAgICAga2V5LgogCiAgICAgICAgLVggICAgICAgICAgRG9uJ3QgY29ubmVjdCB0byB0aGUgWCBzZXJ2ZXIuICBTaG9ydGVucyBzdGFydHVwIHRpbWUgaW4gIGEKICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hbCwgIGJ1dCAgdGhlICB3aW5kb3cgdGl0bGUgYW5kIGNsaXBib2FyZCB3aWxsIG5vdCBiZQpAQCAtMjk3LDEyICsyOTcsMTMgQEAKICAgICAgICAgICAgICAgICAgICBiZSBoYW5kbGVkIGFzIGEgZmlsZSBuYW1lLiAgVGhpcyBjYW4gIGJlICB1c2VkICB0byAgZWRpdCAgYQogICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lIHRoYXQgc3RhcnRzIHdpdGggYSAnLScuCiAKLSAgICAgICAtLWVjaG8td2lkICBHVEsgR1VJIG9ubHk6IEVjaG8gdGhlIFdpbmRvdyBJRCBvbiBzdGRvdXQKKyAgICAgICAtLWVjaG8td2lkICBHVEsgR1VJIG9ubHk6IEVjaG8gdGhlIFdpbmRvdyBJRCBvbiBzdGRvdXQuCiAKICAgICAgICAtLWhlbHAgICAgICBHaXZlIGEgaGVscCBtZXNzYWdlIGFuZCBleGl0LCBqdXN0IGxpa2UgIi1oIi4KIAogICAgICAgIC0tbGl0ZXJhbCAgIFRha2UgIGZpbGUgIG5hbWUgIGFyZ3VtZW50cyAgbGl0ZXJhbGx5LCBkbyBub3QgZXhwYW5kIHdpbGQtCi0gICAgICAgICAgICAgICAgICAgY2FyZHMuICBOb3QgbmVlZGVkIG9uIFVuaXgsIHRoZSBzaGVsbCBleHBhbmQgd2lsZGNhcmRzLgorICAgICAgICAgICAgICAgICAgIGNhcmRzLiAgVGhpcyBoYXMgbm8gZWZmZWN0IG9uIFVuaXggd2hlcmUgdGhlIHNoZWxsICBleHBhbmRzCisgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzLgogCiAgICAgICAgLS1ub3BsdWdpbiAgU2tpcCBsb2FkaW5nIHBsdWdpbnMuICBJbXBsaWVkIGJ5IC11IE5PTkUuCiAKQEAgLTMxMSwxOCArMzEyLDE4IEBACiAgICAgICAgICAgICAgICAgICAgaXMgZ2l2ZW4gYW5kIHRoZSBmaWxlcyBhcmUgZWRpdGVkIGluIHRoZSBjdXJyZW50IFZpbS4KIAogICAgICAgIC0tcmVtb3RlLWV4cHIge2V4cHJ9Ci0gICAgICAgICAgICAgICAgICAgQ29ubmVjdCB0byBhIFZpbSBzZXJ2ZXIsIGV2YWx1YXRlIHtleHByfSBpbiAgaXQgIGFuZCAgcHJpbnQKKyAgICAgICAgICAgICAgICAgICBDb25uZWN0ICB0byAgYSAgVmltIHNlcnZlciwgZXZhbHVhdGUge2V4cHJ9IGluIGl0IGFuZCBwcmludAogICAgICAgICAgICAgICAgICAgIHRoZSByZXN1bHQgb24gc3Rkb3V0LgogCiAgICAgICAgLS1yZW1vdGUtc2VuZCB7a2V5c30KICAgICAgICAgICAgICAgICAgICBDb25uZWN0IHRvIGEgVmltIHNlcnZlciBhbmQgc2VuZCB7a2V5c30gdG8gaXQuCiAKICAgICAgICAtLXJlbW90ZS1zaWxlbnQKLSAgICAgICAgICAgICAgICAgICBBcyAgLS1yZW1vdGUsICBidXQgIHdpdGhvdXQgIHRoZSAgd2FybmluZyB3aGVuIG5vIHNlcnZlciBpcworICAgICAgICAgICAgICAgICAgIEFzIC0tcmVtb3RlLCBidXQgd2l0aG91dCB0aGUgIHdhcm5pbmcgIHdoZW4gIG5vICBzZXJ2ZXIgIGlzCiAgICAgICAgICAgICAgICAgICAgZm91bmQuCiAKICAgICAgICAtLXJlbW90ZS13YWl0Ci0gICAgICAgICAgICAgICAgICAgQXMgLS1yZW1vdGUsIGJ1dCBWaW0gZG9lcyBub3QgZXhpdCAgdW50aWwgIHRoZSAgZmlsZXMgIGhhdmUKKyAgICAgICAgICAgICAgICAgICBBcyAgLS1yZW1vdGUsICBidXQgIFZpbSAgZG9lcyBub3QgZXhpdCB1bnRpbCB0aGUgZmlsZXMgaGF2ZQogICAgICAgICAgICAgICAgICAgIGJlZW4gZWRpdGVkLgogCiAgICAgICAgLS1yZW1vdGUtd2FpdC1zaWxlbnQKQEAgLTMzMywzMSArMzM0LDMxIEBACiAgICAgICAgICAgICAgICAgICAgTGlzdCB0aGUgbmFtZXMgb2YgYWxsIFZpbSBzZXJ2ZXJzIHRoYXQgY2FuIGJlIGZvdW5kLgogCiAgICAgICAgLS1zZXJ2ZXJuYW1lIHtuYW1lfQotICAgICAgICAgICAgICAgICAgIFVzZSB7bmFtZX0gYXMgdGhlIHNlcnZlciBuYW1lLiAgVXNlZCBmb3IgdGhlICBjdXJyZW50ICBWaW0sCisgICAgICAgICAgICAgICAgICAgVXNlICB7bmFtZX0gIGFzIHRoZSBzZXJ2ZXIgbmFtZS4gIFVzZWQgZm9yIHRoZSBjdXJyZW50IFZpbSwKICAgICAgICAgICAgICAgICAgICB1bmxlc3MgdXNlZCB3aXRoIGEgLS1yZW1vdGUgYXJndW1lbnQsIHRoZW4gaXQncyB0aGUgbmFtZSBvZgogICAgICAgICAgICAgICAgICAgIHRoZSBzZXJ2ZXIgdG8gY29ubmVjdCB0by4KIAogICAgICAgIC0tc29ja2V0aWQge2lkfQotICAgICAgICAgICAgICAgICAgIEdUSyBHVUkgb25seTogVXNlIHRoZSBHdGtQbHVnICBtZWNoYW5pc20gIHRvICBydW4gIGd2aW0gIGluCisgICAgICAgICAgICAgICAgICAgR1RLICBHVUkgIG9ubHk6ICBVc2UgIHRoZSAgR3RrUGx1ZyBtZWNoYW5pc20gdG8gcnVuIGd2aW0gaW4KICAgICAgICAgICAgICAgICAgICBhbm90aGVyIHdpbmRvdy4KIAogICAgICAgIC0tdmVyc2lvbiAgIFByaW50IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuCiAKIE9OLUxJTkUgSEVMUAotICAgICAgIFR5cGUgICI6aGVscCIgIGluIFZpbSB0byBnZXQgc3RhcnRlZC4gIFR5cGUgIjpoZWxwIHN1YmplY3QiIHRvIGdldCBoZWxwCi0gICAgICAgb24gYSBzcGVjaWZpYyBzdWJqZWN0LiAgRm9yIGV4YW1wbGU6ICI6aGVscCBaWiIgdG8gIGdldCAgaGVscCAgZm9yICB0aGUKLSAgICAgICAiWloiICBjb21tYW5kLiAgIFVzZSA8VGFiPiBhbmQgQ1RSTC1EIHRvIGNvbXBsZXRlIHN1YmplY3RzICgiOmhlbHAgY21kLQotICAgICAgIGxpbmUtY29tcGxldGlvbiIpLiAgVGFncyBhcmUgcHJlc2VudCB0byBqdW1wIGZyb20gb25lIHBsYWNlIHRvICBhbm90aGVyCisgICAgICAgVHlwZSAiOmhlbHAiIGluIFZpbSB0byBnZXQgc3RhcnRlZC4gIFR5cGUgIjpoZWxwIHN1YmplY3QiIHRvICBnZXQgIGhlbHAKKyAgICAgICBvbiAgYSAgc3BlY2lmaWMgIHN1YmplY3QuICAgRm9yIGV4YW1wbGU6ICI6aGVscCBaWiIgdG8gZ2V0IGhlbHAgZm9yIHRoZQorICAgICAgICJaWiIgY29tbWFuZC4gIFVzZSA8VGFiPiBhbmQgQ1RSTC1EIHRvIGNvbXBsZXRlIHN1YmplY3RzICAoIjpoZWxwICBjbWQtCisgICAgICAgbGluZS1jb21wbGV0aW9uIikuICAgVGFncyBhcmUgcHJlc2VudCB0byBqdW1wIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIKICAgICAgICAoc29ydCBvZiBoeXBlcnRleHQgbGlua3MsIHNlZSAiOmhlbHAiKS4gIEFsbCBkb2N1bWVudGF0aW9uIGZpbGVzIGNhbiBiZQogICAgICAgIHZpZXdlZCBpbiB0aGlzIHdheSwgZm9yIGV4YW1wbGUgIjpoZWxwIHN5bnRheC50eHQiLgogCiBGSUxFUwogICAgICAgIC91c3IvbG9jYWwvbGliL3ZpbS9kb2MvKi50eHQKLSAgICAgICAgICAgICAgICAgICAgICBUaGUgVmltIGRvY3VtZW50YXRpb24gZmlsZXMuICBVc2UgIjpoZWxwICBkb2MtZmlsZS1saXN0IgorICAgICAgICAgICAgICAgICAgICAgIFRoZSAgVmltIGRvY3VtZW50YXRpb24gZmlsZXMuICBVc2UgIjpoZWxwIGRvYy1maWxlLWxpc3QiCiAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0LgogCiAgICAgICAgL3Vzci9sb2NhbC9saWIvdmltL2RvYy90YWdzCi0gICAgICAgICAgICAgICAgICAgICAgVGhlICB0YWdzIGZpbGUgdXNlZCBmb3IgZmluZGluZyBpbmZvcm1hdGlvbiBpbiB0aGUgZG9jdS0KKyAgICAgICAgICAgICAgICAgICAgICBUaGUgdGFncyBmaWxlIHVzZWQgZm9yIGZpbmRpbmcgaW5mb3JtYXRpb24gaW4gdGhlICBkb2N1LQogICAgICAgICAgICAgICAgICAgICAgIG1lbnRhdGlvbiBmaWxlcy4KIAogICAgICAgIC91c3IvbG9jYWwvbGliL3ZpbS9zeW50YXgvc3ludGF4LnZpbQpAQCAtMzczLDcgKzM3NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtIHdpZGUgZ3ZpbSBpbml0aWFsaXphdGlvbnMuCiAKICAgICAgICAvdXNyL2xvY2FsL2xpYi92aW0vb3B0d2luLnZpbQotICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdCB1c2VkIGZvciB0aGUgIjpvcHRpb25zIiBjb21tYW5kLCBhICBuaWNlICB3YXkgIHRvCisgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0ICB1c2VkICBmb3IgIHRoZSAiOm9wdGlvbnMiIGNvbW1hbmQsIGEgbmljZSB3YXkgdG8KICAgICAgICAgICAgICAgICAgICAgICB2aWV3IGFuZCBzZXQgb3B0aW9ucy4KIAogICAgICAgIC91c3IvbG9jYWwvbGliL3ZpbS9tZW51LnZpbQpAQCAtMzgzLDExICszODQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHQgdG8gZ2VuZXJhdGUgYSBidWcgcmVwb3J0LiAgU2VlICI6aGVscCBidWdzIi4KIAogICAgICAgIC91c3IvbG9jYWwvbGliL3ZpbS9maWxldHlwZS52aW0KLSAgICAgICAgICAgICAgICAgICAgICBTY3JpcHQgIHRvICBkZXRlY3QgIHRoZSB0eXBlIG9mIGEgZmlsZSBieSBpdHMgbmFtZS4gIFNlZQorICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdCB0byBkZXRlY3QgdGhlIHR5cGUgb2YgYSBmaWxlIGJ5ICBpdHMgIG5hbWUuICAgU2VlCiAgICAgICAgICAgICAgICAgICAgICAgIjpoZWxwICdmaWxldHlwZSciLgogCiAgICAgICAgL3Vzci9sb2NhbC9saWIvdmltL3NjcmlwdHMudmltCi0gICAgICAgICAgICAgICAgICAgICAgU2NyaXB0IHRvIGRldGVjdCB0aGUgdHlwZSBvZiBhICBmaWxlICBieSAgaXRzICBjb250ZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICBTY3JpcHQgIHRvICBkZXRlY3QgIHRoZSAgdHlwZSBvZiBhIGZpbGUgYnkgaXRzIGNvbnRlbnRzLgogICAgICAgICAgICAgICAgICAgICAgIFNlZSAiOmhlbHAgJ2ZpbGV0eXBlJyIuCiAKICAgICAgICAvdXNyL2xvY2FsL2xpYi92aW0vKi5wcwpAQCAtNDAyLDE3ICs0MDMsMTcgQEAKIEFVVEhPUgogICAgICAgIE1vc3Qgb2YgVmltIHdhcyBtYWRlIGJ5IEJyYW0gTW9vbGVuYWFyLCB3aXRoIGEgbG90IG9mIGhlbHAgZnJvbSBvdGhlcnMuCiAgICAgICAgU2VlICI6aGVscCBjcmVkaXRzIiBpbiBWaW0uCi0gICAgICAgVmltIGlzIGJhc2VkIG9uIFN0ZXZpZSwgd29ya2VkIG9uIGJ5OiBUaW0gVGhvbXBzb24sICBUb255ICBBbmRyZXdzICBhbmQKLSAgICAgICBHLlIuICAoRnJlZCkgV2FsdGVyLiAgQWx0aG91Z2ggaGFyZGx5IGFueSBvZiB0aGUgb3JpZ2luYWwgY29kZSByZW1haW5zLgorICAgICAgIFZpbSAgaXMgIGJhc2VkICBvbiBTdGV2aWUsIHdvcmtlZCBvbiBieTogVGltIFRob21wc29uLCBUb255IEFuZHJld3MgYW5kCisgICAgICAgRy5SLiAoRnJlZCkgV2FsdGVyLiAgQWx0aG91Z2ggaGFyZGx5IGFueSBvZiB0aGUgb3JpZ2luYWwgY29kZSAgcmVtYWlucy4KIAogQlVHUwogICAgICAgIFByb2JhYmx5LiAgU2VlICI6aGVscCB0b2RvIiBmb3IgYSBsaXN0IG9mIGtub3duIHByb2JsZW1zLgogCi0gICAgICAgTm90ZSB0aGF0IGEgbnVtYmVyIG9mIHRoaW5ncyB0aGF0IG1heSBiZSByZWdhcmRlZCBhcyBidWdzIGJ5IHNvbWUsICBhcmUKLSAgICAgICBpbiAgZmFjdCAgY2F1c2VkIGJ5IGEgdG9vLWZhaXRoZnVsIHJlcHJvZHVjdGlvbiBvZiBWaSdzIGJlaGF2aW91ci4gIEFuZAotICAgICAgIGlmIHlvdSB0aGluayBvdGhlciB0aGluZ3MgYXJlIGJ1Z3MgImJlY2F1c2UgVmkgIGRvZXMgIGl0ICBkaWZmZXJlbnRseSIsCi0gICAgICAgeW91ICBzaG91bGQgIHRha2UgIGEgY2xvc2VyIGxvb2sgYXQgdGhlIHZpX2RpZmYudHh0IGZpbGUgKG9yIHR5cGUgOmhlbHAKLSAgICAgICB2aV9kaWZmLnR4dCB3aGVuIGluIFZpbSkuICBBbHNvIGhhdmUgYSBsb29rICBhdCAgdGhlICAnY29tcGF0aWJsZScgIGFuZAorICAgICAgIE5vdGUgIHRoYXQgYSBudW1iZXIgb2YgdGhpbmdzIHRoYXQgbWF5IGJlIHJlZ2FyZGVkIGFzIGJ1Z3MgYnkgc29tZSwgYXJlCisgICAgICAgaW4gZmFjdCBjYXVzZWQgYnkgYSB0b28tZmFpdGhmdWwgcmVwcm9kdWN0aW9uIG9mIFZpJ3MgIGJlaGF2aW91ci4gICBBbmQKKyAgICAgICBpZiAgeW91ICB0aGluayAgb3RoZXIgdGhpbmdzIGFyZSBidWdzICJiZWNhdXNlIFZpIGRvZXMgaXQgZGlmZmVyZW50bHkiLAorICAgICAgIHlvdSBzaG91bGQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSB2aV9kaWZmLnR4dCBmaWxlICAob3IgIHR5cGUgIDpoZWxwCisgICAgICAgdmlfZGlmZi50eHQgIHdoZW4gIGluICBWaW0pLiAgIEFsc28gaGF2ZSBhIGxvb2sgYXQgdGhlICdjb21wYXRpYmxlJyBhbmQKICAgICAgICAnY3BvcHRpb25zJyBvcHRpb25zLgogCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZpbWRpLWl0LjEgYi9ydW50aW1lL2RvYy92aW1kaS1pdC4xCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk0MTdiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL2RvYy92aW1kaS1pdC4xCkBAIC0wLDAgKzEsNDggQEAKKy5USCBWSU1ESUZGIDEgIjMwIG1hcnpvIDIwMDEiCisuU0ggTk9NRQordmltZGlmZiBcLSBtb2RpZmljYSBkdWUgbyB0cmUgdmVyc2lvbmkgZGkgdW4gZmlsZSBjb24gVmltLCB2aXN1YWxpenphbmRvIGxlCitkaWZmZXJlbnplCisuU0ggU0lOVEFTU0kKKy5icgorLkIgdmltZGlmZgorW29wemlvbmldIGZpbGUxIGZpbGUyIFtmaWxlM10KKy5QUAorLkIgZ3ZpbWRpZmYKKy5TSCBERVNDUklaSU9ORQorLkIgVmltZGlmZgoraW5pemlhCisuQiBWaW0KK3BlciBkdWUgKG8gdHJlKSBmaWxlLgorT2duaSBmaWxlIGhhIHVuYSBzdWEgZmluZXN0cmEuCitMZSBkaWZmZXJlbnplIGZyYSBmaWxlIHNvbm8gZXZpZGVuemlhdGUuCitFJyB1bmEgbWFuaWVyYSBlbGVnYW50ZSBwZXIgY29udHJvbGxhcmUgbW9kaWZpY2hlIGUgcG9ydGFyZSBtb2RpZmljaGUKK3ZlcnNvIHVuJ2FsdHJhIHZlcnNpb25lIGRlbGxvIHN0ZXNzbyBmaWxlLgorLlBQCitWZWRlcmUgdmltKDEpIHBlciBkZXR0YWdsaSBzdSBWaW0gaW4gZ2VuZXJhbGUuCisuUFAKK1NlIGluaXppYXRvIGNvbgorLkIgZ3ZpbWRpZmYKK2xhIEdVSSBzYXLgIHV0aWxpenphdGEsIHNlIGRpc3BvbmliaWxlLgorLlBQCitJbiBvZ25pIGZpbmVzdHJhIGwnb3B6aW9uZSAnZGlmZicg6CBpbXBvc3RhdGEsIGV2aWRlbnppYW5kbyBjb3PsIGxlCitkaWZmZXJlbnplLgorLmJyCitMZSBvcHppb25pICd3cmFwJyBlICdzY3JvbGxiaW5kJyBzb25vIGltcG9zdGF0ZSBwZXIgbWlnbGlvcmFyZSBsYQordmlzaWJpbGl04CBkZWwgdGVzdG8uCisuYnIKK0wnb3B6aW9uZSAnZm9sZG1ldGhvZCcg6CBpbXBvc3RhdGEgYWwgdmFsb3JlICJkaWZmIiwgY2hlIG1ldHRlIGdydXBwaSBkaQorbGluZWUgdWd1YWxpIGZyYSBpIGRpdmVyc2kgZmlsZSBpbiB1bmEgcGllZ2F0dXJhLiAnZm9sZGNvbHVtbicg6CBpbXBvc3RhdG8KK2EgZHVlIHBlciBwb3RlciBmYWNpbG1lbnRlIHZpc3VhbGl6emFyZSBsZSBwaWVnYXR1cmUsIGFwcmlybGUgZSBjaGl1ZGVybGUuCisuU0ggT1BaSU9OSQorTG8gc2NoZXJtbyDoIGRpdmlzbyB2ZXJ0aWNhbG1lbnRlLCBjb21lIHNlIGF2ZXN0ZSB1c2F0byBsJ29wemlvbmUgIi1PIi4KK1BlciBkaXZpZGVybG8gb3JpenpvbnRhbG1lbnRlLCB1c2FyZSBsJ29wemlvbmUgIi1vIi4KKy5QUAorUGVyIHR1dHRlIGxlIGFsdHJlIG9wemlvbmksIHZlZGVyZSB2aW0oMSkuCisuU0ggVkVERVJFIEFOQ0hFCit2aW0oMSkKKy5TSCBBVVRPUkUKK0J1b25hIHBhcnRlIGRpCisuQiBWaW0KK+ggc3RhdG8gc2NyaXR0byBkYSBCcmFtIE1vb2xlbmFhciwgY29uIG1vbHRvIGFpdXRvIGRhIGFsdHJpLgorVmVkZXJlICI6aGVscCBjcmVkaXRzIiBpbgorLkIgVmltLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmltdHUtaXQuMSBiL3J1bnRpbWUvZG9jL3ZpbXR1LWl0LjEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWEyODY4OAotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvZG9jL3ZpbXR1LWl0LjEKQEAgLTAsMCArMSw1NCBAQAorLlRIIFZJTVRVVE9SIDEgIjIwMDEgQXByaWwgMiIKKy5TSCBOT01FCit2aW10dXRvciBcLSB0aGUgVmltIHR1dG9yCisuU0ggU0lOVEFTU0kKKy5icgorLkIgdmltdHV0b3IgW2xpbmd1YV0KKy5TSCBERVNDUklaSU9ORQorLkIgVmltdHV0b3IKK2luaXppYSBpbAorLkIgVmltCit0dXRvci4KK0l0IGNvcGllcyB0aGUgdHV0b3IgZmlsZSBmaXJzdCwgc28gdGhhdCBpdCBjYW4gYmUgbW9kaWZpZWQgd2l0aG91dCBjaGFuZ2luZwordGhlIG9yaWdpbmFsIGZpbGUuCisuUFAKK1RoZQorLkIgVmltdHV0b3IKK2lzIHVzZWZ1bCBmb3IgcGVvcGxlIHRoYXQgd2FudCB0byBsZWFybiB0aGVpciBmaXJzdAorLkIgVmltCitjb21tYW5kcy4KKy5QUAorVGhlIG9wdGlvbmFsIFtsYW5ndWFnZV0gYXJndW1lbnQgaXMgdGhlIHR3by1sZXR0ZXIgbmFtZSBvZiBhIGxhbmd1YWdlLCBsaWtlCisiaXQiIG9yICJlcyIuCitJZiB0aGUgW2xhbmd1YWdlXSBhcmd1bWVudCBpcyBtaXNzaW5nLCB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGN1cnJlbnQgbG9jYWxlIHdpbGwKK2JlIHVzZWQuCitJZiBhIHR1dG9yIGluIHRoaXMgbGFuZ3VhZ2UgaXMgYXZhaWxhYmxlLCBpdCB3aWxsIGJlIHVzZWQuCitPdGhlcndpc2UgdGhlIEVuZ2xpc2ggdmVyc2lvbiB3aWxsIGJlIHVzZWQuCisuUFAKKy5CIFZpbQoraXMgYWx3YXlzIHN0YXJ0ZWQgaW4gVmkgY29tcGF0aWJsZSBtb2RlLgorLlNIIEZJTEUKKy5UUCAxNQorL3Vzci9sb2NhbC9saWIvdmltL3R1dG9yL3R1dG9yWy5sYW5ndWFnZV0KK1RoZQorLkIgVmltdHV0b3IKK3RleHQgZmlsZShzKS4KKy5UUCAxNQorL3Vzci9sb2NhbC9saWIvdmltL3R1dG9yL3R1dG9yLnZpbQorVGhlIFZpbSBzY3JpcHQgdXNlZCB0byBjb3B5IHRoZQorLkIgVmltdHV0b3IKK3RleHQgZmlsZS4KKy5TSCBBVVRPUkUKK1RoZQorLkIgVmltdHV0b3IKK+ggc3RhdG8gc2NyaXR0byBpbiBvcmlnaW5lIHBlciBWaSBkYSBNaWNoYWVsIEMuIFBpZXJjZSBlIFJvYmVydCBLLiBXYXJlLAorQ29sb3JhZG8gU2Nob29sIG9mIE1pbmVzLCB1c2FuZG8gaWRlZSBmb3JuaXRlIGRhIENoYXJsZXMgU21pdGgsCitDb2xvcmFkbyBTdGF0ZSBVbml2ZXJzaXR5LgorRS1tYWlsOiBid2FyZUBtaW5lcy5jb2xvcmFkby5lZHUuCisuYnIKK0UnIHN0YXRvIG1vZGlmaWNhdG8gcGVyCisuQiBWaW0KK2RhIEJyYW0gTW9vbGVuYWFyLgorUGVyIGkgbm9taSBkZWkgdHJhZHV0dG9yaSwgdmVkZXJlIGkgZmlsZSB1c2F0aSBuZWxsZSByaXNwZXR0aXZlIGxpbmd1ZS4KKy5TSCBWRURFUkUgQU5DSEUKK3ZpbSgxKQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MveHhkLWl0LjEgYi9ydW50aW1lL2RvYy94eGQtaXQuMQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45ZTZiYzVmCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9kb2MveHhkLWl0LjEKQEAgLTAsMCArMSw0MDIgQEAKKy5USCBYWEQgMSAiQWdvc3RvIDE5OTYiICJQYWdpbmEgZGkgbWFudWFsZSBwZXIgeHhkIgorLlwiCisuXCIgMjEgTWFnZ2lvIDE5OTYKKy5cIiBBdXRvcmUgZGVsbGEgcGFnaW5hIGRpIG1hbnVhbGU6CisuXCIgICAgVG9ueSBOdWdlbnQgPHRvbnlAc2N0bnVnZW4ucHBwLmd1LmVkdS5hdT4gPFQuTnVnZW50QHNjdC5ndS5lZHUuYXU+CisuXCIgICAgTW9kaWZpY2F0byBkYSBCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgorLlNIIE5PTUUKKy5JIHh4ZAorXC0gUHJvZHVjZSBlc2FkZWNpbWFsZSBkYSB1biBmaWxlIGJpbmFyaW8gbyB2aWNldmVyc2EuCisuU0ggU0lOVEFTU0kKKy5CIHh4ZAorXC1oW2VscF0KKy5icgorLkIgeHhkCitbb3B6aW9uaV0gW2lucHV0X2ZpbGUgW291dHB1dF9maWxlXV0KKy5icgorLkIgeHhkCitcLXJbZXZlcnRdIFtvcHppb25pXSBbaW5wdXRfZmlsZSBbb3V0cHV0X2ZpbGVdXQorLlNIIERFU0NSSVpJT05FCisuSSB4eGQKK2NyZWEgdW4naW1tYWdpbmUgZXNhZGVjaW1hbGUgZGkgdW4gZGF0byBmaWxlIG8gZGVsbG8gInN0YW5kYXJkIGlucHV0Ii4KK1B18iBhbmNoZSBvdHRlbmVyZSBkYSB1bidpbW1hZ2luZSBlc2FkZWNpbWFsZSBpbCBmaWxlIGJpbmFyaW8gb3JpZ2luYWxlLgorQ29tZQorLkJSIHV1ZW5jb2RlKDEpCitlCisuQlIgdXVkZWNvZGUoMSkKK3Blcm1ldHRlIGRpIHRyYXNtZXR0ZXJlIGRhdGkgYmluYXJpIGluIHVuYSByYXByZXNlbnRhemlvbmUgQVNDSUkgImEgcHJvdmEKK2RpIGVtYWlsIiwgbWEgaGEgYW5jaGUgaWwgdmFudGFnZ2lvIGRpIHBvdGVyIGRlY29kaWZpY2FyZSBzdWxsbyAic3RhbmRhcmQKK291dHB1dCIuICBJbm9sdHJlLCBwdfIgZXNzZXJlIHVzYXRvIHBlciBlZmZldHR1YXJlIGRlbGxlIG1vZGlmaWNoZSAocGF0Y2gpCithIGZpbGUgYmluYXJpLgorLlNIIE9QWklPTkkKK1NlIG5vbiBzaSBzcGVjaWZpY2EgdW4KKy5JIGlucHV0X2ZpbGUKK2lsIHByb2dyYW1tYSBsZWdnZSBkYWxsbyAic3RhbmRhcmQgaW5wdXQiLgorU2UKKy5JIGlucHV0X2ZpbGUKK+ggc3BlY2lmaWNhdG8gY29tZSBpbCBjYXJhdHRlcmUKKy5SQiBcYCBcLSAnCissIGwnaW5wdXQg6CBsZXR0byBkYWxsbyAic3RhbmRhcmQgaW5wdXQiLgorU2Ugbm9uIHNpIHNwZWNpZmljYSB1bgorLkkgb3V0cHV0X2ZpbGUKKyhvIHNpIG1ldHRlIGFsIHN1byBwb3N0byBpbCBjYXJhdHRlcmUKKy5SQiBcYCBcLSAnCispLCBpIHJpc3VsdGF0aSBzb25vIGludmlhdGkgYWxsbyAic3RhbmRhcmQgb3V0cHV0Ii4KKy5QUAorU2kgbm90aSBjaGUgbGEgc2NhbnNpb25lIGRlaSBjYXJhdHRlcmkg6CAicGlncmEiLCBlIG5vbiBjb250cm9sbGEgb2x0cmUKK2xhIHByaW1hIGxldHRlcmEgZGVsbCdvcHppb25lLCBhIG1lbm8gY2hlIGwnb3B6aW9uZSBzaWEgc2VndWl0YSBkYSB1bgorcGFyYW1ldHJvLgorR2xpIHNwYXppIGZyYSB1bmEgc2luZ29sYSBsZXR0ZXJhIGRpIG9wemlvbmUgZSBpbCBjb3JyaXNwb25kZW50ZSBwYXJhbWV0cm8KK2RvcG8gZGkgZXNzYSBzb25vIGZhY29sdGF0aXZpLgorSSBwYXJhbWV0cmkgZGVsbGUgb3B6aW9uaSBwb3Nzb25vIGVzc2VyZSBzcGVjaWZpY2F0aSB1c2FuZG8gbGEgbm90YXppb25lCitkZWNpbWFsZSwgZXNhZGVjaW1hbGUgb3BwdXJlIG90dGFsZS4KK1BlcnRhbnRvCisuQlIgXC1jOCAsCisuQlIgIlwtYyA4IiAsCisuQiBcLWMgMDEwCitlCisuQiBcLWNvbHMgOAorc29ubyBub3RhemlvbmkgZXF1aXZhbGVudGkgZnJhIGxvcm8uCisuUFAKKy5UUAorLklSIFwtYSAiIHwgIiBcLWF1dG9za2lwCitSaWNoaWVzdGEgZGkgYXV0b3NraXA6IFVuIHNpbmdvbG8gJyonIHJpbXBpYXp6YSBsaW5lZSBkaSB6ZXJpIGJpbmFyaS4KK1ZhbG9yZSBwcmVkZWZpbml0bzogb2ZmLgorLlRQCisuSVIgXC1iICIgfCAiIFwtYml0cworUmljaGllc3RhIGRpIHVuYSBpbW1hZ2luZSBiaW5hcmlhIChjaWZyZSBiaW5hcmllKSwgaW52ZWNlIGNoZSBlc2FkZWNpbWFsZS4KK1F1ZXN0YSBvcHppb25lIHNjcml2ZSB1biBieXRlIGNvbWUgb3R0byBjaWZyZSAiMSIgZSAiMCIgaW52ZWNlIGRpIHVzYXJlIGkKK251bWVyaSBlc2FkZWNpbWFsaS4gT2duaSBsaW5lYSDoIHByZWNlZHV0YSBkYSB1biBpbmRpcml6em8gaW4gZXNhZGVjaW1hbGUgZQorc2VndWl0YSBkYSB1bmEgZGVjb2RpZmljYSBhc2NpaSAobyBlYmNkaWMpLiBMZSBvcHppb25pIHNwZWNpZmljYWJpbGkgZGFsbGEKK2xpbmVhIGNvbWFuZG8gXC1yLCBcLXAsIFwtaSBub24gZnVuemlvbmFubyBpbiBxdWVzdG8gbW9kby4KKy5UUAorLklSICJcLWMgY29sb25uZSAiIHwgIiBcLWNvbHMgY29sb25uZSIKKy5JUiAiXC1jIGNvbG9ubmUgIiB8ICIgXC1jb2xzIGNvbG9ubmUiCitJbiBvZ25pIGxpbmVhIHNvbm8gZm9ybWF0dGF0ZQorLlJJIDwgY29sb25uZSA+Citjb2xvbm5lLiBWYWxvcmUgcHJlZGVmaW5pdG8gMTYgKFwtaTogMTIsIFwtcHM6IDMwLCBcLWI6IDYpLgorVmFsb3JlIG1hc3NpbW8gMjU2LgorLlRQCisuSVIgXC1FICIgfCAiIFwtRUJDRElDCitDYW1iaWEgbGEgY29kaWZpY2EgZGVsbGEgY29sb25uYSBkaSBkZXN0cmEgZGEgQVNDSUkgYSBFQkNESUMuCitRdWVzdG8gbm9uIG1vZGlmaWNhIGxhIHJhcHByZXNlbnRhemlvbmUgZXNhZGVjaW1hbGUuIE5vbiBoYSBzZW5zbworc3BlY2lmaWNhcmUgcXVlc3RhIG9wemlvbmUgaW4gY29tYmluYXppb25lIGNvbiBcLXIsIFwtcCBvIFwtaS4KKy5UUAorLklSICJcLWcgYnl0ZXMgIiB8ICIgXC1ncm91cHNpemUgYnl0ZXMiCitJbnNlcmlzY2kgb2duaQorLlJJIDwgYnl0ZXMgPgorYnl0ZXMgZGkgb3V0cHV0IChkaSBkdWUgY2FyYXR0ZXJpIGVzYWRlY2ltYWxpIG8gb3R0byBudW1lcmkgYmluYXJpIG9nbnVubykKK3VubyBzcGF6aW8gYmlhbmNvLgorU3BlY2lmaWNhbmRvCisuSSBcLWcgMAoraSBieXRlcyBkaSBvdXRwdXQgbm9uIHNvbm8gc2VwYXJhdGkgZGEgYWxjdW5vIHNwYXppby4KKy5SSSA8IEJ5dGVzICI+IGhhIGNvbWUgdmFsb3JlIHByZWRlZmluaXRvICIgMgoraW4gbW9kYWxpdOAgbm9ybWFsZSBbZXNhZGVjaW1hbGVdIGUgXGZJMVxmUCBpbiBtb2RhbGl04CBiaW5hcmlhLgorSWwgcmFnZ3J1cHBhbWVudG8gbm9uIHNpIGFwcGxpY2EgYWdsaSBzdGlsaSAiUG9zdFNjcmlwdCIgZSAiaW5jbHVkZSIuCisuVFAKKy5JUiBcLWggIiB8ICIgXC1oZWxwCitzdGFtcGEgdW4gc29tbWFyaW8gZGVpIGNvbWFuZGkgZGlzcG9uaWJpbGkgZWQgZXNjZS4gIE5vbiB2aWVuZSBmYXR0bworbnVsbCdhbHRyby4KKy5UUAorLklSIFwtaSAiIHwgIiBcLWluY2x1ZGUKK0wnb3V0cHV0IOggbmVsbG8gc3RpbGUgZGVpIGZpbGUgImluY2x1ZGUiIGluIEMuICBWaWVuZSBwcmVwYXJhdGEgbGEKK2RlZmluaXppb25lIGNvbXBsZXRhIGRpIHVuICJhcnJheSIgW3ZldHRvcmVdLCBkYW5kb2dsaSBpbCBub21lIGRlbAorZmlsZSBkaSBpbnB1dCksIHRyYW5uZSBjaGUgbmVsIGNhc28gaW4gY3VpIHh4ZCBsZWdnYSBkYWxsbyAic3RhbmRhcmQgaW5wdXQiLgorLlRQCisuSVIgIlwtbCBsdW5naGV6emEgIiB8ICIgXC1sZW4gbHVuZ2hlenphIgorSWwgcHJvZ3JhbW1hIGVzY2UgZG9wbyBhdmVyIHNjcml0dG8KKy5SSSAgPCBsdW5naGV6emEgPgorYnl0ZXMuCisuVFAKKy5JUiBcLXAgIiB8ICIgXC1wcyAiIHwgIiBcLXBvc3RzY3JpcHQgIiB8ICIgXC1wbGFpbgorTCdvdXRwdXQg6CBuZWxsbyBzdGlsZSBkaSB1biBkdW1wIGNvbnRpbnVvIHNvdHRvIHBvc3RzY3JpcHQuCitOb3RvIGFuY2hlIGNvbWUgc3RpbGUgZXNhZGVjaW1hbGUgc2VtcGxpY2UgW3BsYWluXS4KKy5UUAorLklSIFwtciAiIHwgIiBcLXJldmVydAorcmljb3N0cnV6aW9uZTogY29udmVydGUgKG8gbWV0dGUgdW5hIHBhdGNoKSBhIHBhcnRpcmUgZGFsbCdpbW1hZ2luZQorZXNhZGVjaW1hbGUsIGNyZWFuZG8gW28gbW9kaWZpY2FuZG9dIGlsIGZpbGUgYmluYXJpby4KK1NlIG5vbiBkaXJldHRvIGFsbG8gInN0YW5kYXJkIG91dHB1dCIsIHh4ZCBzY3JpdmUgbmVsIHN1byBmaWxlIGRpIG91dHB1dAoraW4gbWFuaWVyYSBjb250aW51YSwgc2VuemEgaW50ZXJydXppb25pLiAgVXNhcmUgbGEgY29tYmluYXppb25lCisuSSBcLXIgXC1wCitwZXIgbGVnZ2VyZSBkdW1wIGluIHN0aWxlIGVzYWRlY2ltYWxlIHNlbXBsaWNlIFtwbGFpbl0sIHNlbnphIGwnaW5mb3JtYXppb25lCitkaSBudW1lcm8gZGkgbGluZWEgZSBzZW56YSB1biBwYXJ0aWNvbGFyZSB0cmFjY2lhdG8gZGkgY29sb25uYS4gIERlZ2xpIHNwYXppCitvIGRlbGxlIGxpbmVlIHZ1b3RlIHBvc3Nvbm8gZXNzZXJlIGluc2VyaXRlIGEgcGlhY2VyZSBbZSB2ZW5nb25vIGluZ29yYXRlXS4KKy5UUAorLkkgXC1zZWVrIGRpc3RhbnphCitVc2F0byBjb24gbCdvcHppb25lCisuSSBcLXIKKzogKHJpY29zdHJ1emlvbmUpLAorLlJJIDwgZGlzdGFuemEgPgordmllbmUgYWdnaXVudGEgYWxsYSBwb3NpemlvbmUgbmVsIGZpbGUgdHJvdmF0YSBuZWxsYSBpbW1hZ2luZQorZXNhZGVjaW1hbGUuCisuVFAKKy5JIFwtcyBbXCtdW1wtXXNlZWsKK0luaXppYSBhCisuUkkgPCBzZWVrID4KK2J5dGVzIGFzc29sdXRpIChvIHJlbGF0aXZpKSBkaSBkaXN0YW56YSBhbGwnaW50ZXJubyBkaSBpbnB1dF9maWxlLgorXGZJXCsgXGZSaW5kaWNhIGNoZSBpbCAic2VlayIg6CByZWxhdGl2byBhbGxhIHBvc2l6aW9uZSBjb3JyZW50ZSBuZWwgZmlsZQorInN0YW5kYXJkIGlucHV0IiAobm9uIHNpZ25pZmljYXRpdmEgcXVhbmRvIG5vbiBzaSBsZWdnZSBkYSAic3RhbmRhcmQgaW5wdXQiKS4KK1xmSVwtIFxmUmluZGljYSBjaGUgaWwgInNlZWsiIGRvdnJlYmJlIHBvc2l6aW9uYXJzaSBhZCBxdWVsIG51bWVybyBkaQorY2FyYXR0ZXJpIGRhbGxhIGZpbmUgZGVsbCdpbnB1dCAobyBzZSBpbiBjb21iaW5hemlvbmUgY29uCitcZkkgXCsgXGZSOiBwcmltZSBkZWxsYSBwb3NpemlvbmUgY29ycmVudGUgbmVsIGZpbGUgInN0YW5kYXJkIGlucHV0IikuCitTZSBub24gc2kgc3BlY2lmaWNhIHVuYSBvcHppb25lIFwtcyBvcHRpb24sIHh4ZCBpbml6aWEgYWxsYSBwb3NpemlvbmUKK2NvcnJlbnRlIGFsbCdpbnRlcm5vIGRlbCBmaWxlLgorLlRQCisuSSBcLXUKK3VzYSBsZXR0ZXJlIGVzYWRlY2ltYWxpIG1haXVzY29sZS4gSWwgdmFsb3JlIHByZWRlZmluaXRvIOggZGkgdXNhcmUKK2xldHRlcmUgbWludXNjb2xlLgorLlRQCisuSVIgXC12ICIgfCAiIFwtdmVyc2lvbgordmlzdWFsaXp6YSBsYSBzdHJpbmdhIGNvbnRlbmVudGUgbGEgdmVyc2lvbmUgZGVsIHByb2dyYW1tYS4KKy5TSCBBVFRFTlpJT05FCisuUFAKKy5JIHh4ZCBcLXIKK+ggY2FwYWNlIGRpIG9wZXJhcmUgIm1hZ2llIiBuZWxsJ3V0aWxpenphcmUgbCdpbmZvcm1hemlvbmUgIm51bWVybyBkaSBsaW5lYSIuCitTZSBzdWwgZmlsZSBkaSBvdXRwdXQgY2kgc2kgcHXyIHBvc2l6aW9uYXJlIHVzYW5kbyBsYSAic2VlayIsIGlsIG51bWVybyBkaQorbGluZWEgYWxsJ2luaXppbyBkaSBvZ25pIHJpZ2EgZXNhZGVjaW1hbGUgcHXyIGVzc2VyZSBub24gb3JkaW5hdG8sIGRlbGxlCitsaW5lZSBwb3Nzb25vIG1hbmNhcmUgZGVsbGUgbGluZWUsIG9wcHVyZSBlc3NlcmNpIGRlbGxlIHNvdnJhcHBvc2l6aW9uaS4KK0luIHNpbWlsaSBjYXNpIHh4ZCB1c2Vy4CBsc2VlaygyKSBwZXIgcmFnZ2l1bmdlcmUgbGEgcG9zaXppb25lIGQnaW5pemlvLgorU2UgaWwgZmlsZSBkaSBvdXRwdXQgbm9uIGNvbnNlbnRlIGRpIHVzYXJlICJzZWVrIiwgc29ubyBwZXJtZXNzaSBzb2xvIGRlaQorImJ1Y2hpIiwgY2hlIHNhcmFubm8gcmllbXBpdGkgY29uIHplcmkgYmluYXJpLgorLlBQCisuSSB4eGQgXC1yCitub24gZ2VuZXJhIG1haSBlcnJvcmkgZGkgc3BlY2lmaWNhIHBhcmFtZXRyaS4gSSBwYXJhbWV0cmkgbm9uIHJpY29ub3NjaXV0aQorc29ubyBzaWxlbnppb3NhbWVudGUgaWdub3JhdGkuCisuUFAKK05lbCBtb2RpZmljYXJlIGltbWFnaW5pIGVzYWRlY2ltYWxpLCB0ZW5ldGUgY29udG8gY2hlCisuSSB4eGQgXC1yCitzYWx0YSBpbCByZXN0byBkZWxsYSBsaW5lYSwgZG9wbyBhdmVyIGxldHRvIGFiYmFzdGFuemEgY2FyYXR0ZXJpIGNvbnRlbmVudGkKK2RhdGkgZXNhZGVjaW1hbGkgKHZlZGVyZSBvcHppb25lIFwtYykuIENp8iBpbXBsaWNhIHB1cmUgY2hlIGxlIG1vZGlmaWNoZSBhbGxlCitjb2xvbm5lIGRpIGNhcmF0dGVyaSBzdGFtcGFiaWxpIGFzY2lpIChvIGViY2RpYykgc29ubyBzZW1wcmUgaWdub3JhdGUuCitMYSByaWNvc3RydXppb25lIGRhIHVuIGZpbGUgaW1tYWdpbmUgZXNhZGVjaW1hbGUgaW4gc3RpbGUgc2VtcGxpY2UKKyhwb3N0c2NyaXB0KSBjb24geHhkIFwtciBcLXAgbm9uIGRpcGVuZGUgZGFsIG51bWVybyBjb3JycmV0dG8gZGkgY29sb25uZS4gCitJTiBxdWVzdG8gY2FzbywgcXVhbHNpYXNpIGNvc2EgYXNzb21pZ2xpIGEgdW5hIGNvcHBpYSBkaSBjaWZyZSBlc2FkZWNpbWFsaQor6CBpbnRlcnByZXRhdGEgW2UgdXRpbGl6emF0YV0uCisuUFAKK05vdGFyZSBsYSBkaWZmZXJlbnphIGZyYQorLmJyCitcZkklIHh4ZCBcLWkgZmlsZVxmUgorLmJyCitlCisuYnIKK1xmSSUgeHhkIFwtaSBcPCBmaWxlXGZSCisuUFAKKy5JIHh4ZCBcLXMgXCtzZWVrCitwdfIgY29tcG9ydGFyc2kgaW4gbW9kbyBkaXZlcnNvIGRhCisuSSB4eGQgXC1zIHNlZWsKKywgcGVyY2jpIGxzZWVrKDIpIOggdXNhdGEgcGVyIHRvcm5hcmUgaW5kaWV0cm8gbmVsIGZpbGUgZGkgaW5wdXQuICBJbCAnKycKK2ZhIGRpZmZlcmVuemEgc2UgaWwgZmlsZSBkaSBpbnB1dCDoIGxvICJzdGFuZGFyZCBpbnB1dCIsIGUgc2UgbGEgcG96aW9uZSBuZWwKK2ZpbGUgZGkgInN0YW5kYXJkIGlucHV0IiBub24g6CBhbGwnaW5pemlvIGRlbCBmaWxlIHF1YW5kbyB4eGQg6CBlc2VndWl0bywKK2NvbiBxdWVzdG8gaW5wdXQuCitJIHNlZ3VlbnRpIGVzZW1waSBwb3Nzb25vIGNvbnRyaWJ1aXJlIGEgY2hpYXJpcmUgaWwgY29uY2V0dG8KKyhvIGFkIG9zY3VyYXJsbyEpLi4uCisuUFAKK1JpYXZ2b2xnZSBsbyAic3RhbmRhcmQgaW5wdXQiIHByaW1hIGRpIGxlZ2dlcmU7IG5lY2Vzc2FyaW8gcGVyY2jpIGBjYXQnCitoYSBnaeAgbGV0dG8gbG8gc3Rlc3NvIGZpbGUgWyJmaWxlIl0gZmlubyBhbGxhIGZpbmUgZGVsbG8gInN0YW5kYXJkIGlucHV0Ii4KKy5icgorXGZJJSBzaCBcLWMgJ2NhdCA+IGNvcGlhX25vcm1hbGU7IHh4ZCBcLXMgMCA+IGNvcGlhX2VzYWRlY2ltYWxlJyA8IGZpbGUKKy5QUAorU3RhbXBhIGltbWFnaW5lIGVzYWRlY2ltYWxlIGRhbGxhIHBvc2l6aW9uZSBmaWxlIDB4NDgwICg9MTAyNCsxMjgpIGluIHBvaS4KK0lsIHNlZ25vIGArJyB2dW9sIGRpcmUgInJpc3BldHRvIGFsbGEgcG9zaXppb25lIGNvcnJlbnRlIiwgcXVpbmRpIGlsIGAxMjgnCitzaSBhZ2dpdW5nZSBhIDFrICgxMDI0KSBkb3ZlIGBkZCcgc2kgZXJhIGZlcm1hdG8uCisuYnIKK1xmSSUgc2ggXC1jICdkZCBvZj1ub3JtYWxlIGJzPTFrIGNvdW50PTE7IHh4ZCBcLXMgKzEyOCA+IGVzYWRlY2ltYWxlJyA8IGZpbGUKKy5QUAorSW1tYWdpbmUgZXNhZGVjaW1hbGUgZGFsbGEgcG9zaXppb25lIDB4MTAwICggPSAxMDI0LTc2OCApIGRlbCBmaWxlIGluIGF2YW50aS4KKy5icgorXGZJJSBzaCBcLWMgJ2RkIG9mPW5vcm1hbGUgYnM9MWsgY291bnQ9MTsgeHhkIFwtcyArLTc2OCA+IGVzYWRlY2ltYWxlJyA8IGZpbGUKKy5QUAorQ29tdW5xdWUsIHF1ZXN0byBjYXBpdGEgcmFyYW1lbnRlLCBlIGwndXNvIGRlbCBgKycgZGkgcmFkby4KK0wnYXV0b3JlIHByZWZlcmlzY2UgbW9uaXRvcmFyZSBpbCBjb21wb3J0YW1lbnRvIGRpIHh4ZCBjb24gc3RyYWNlKDEpIG8KK3RydXNzKDEpLCBxdWFuZG8gc2kgdXNhIGwnb3B6aW9uZSBcLXMuCisuU0ggRVNFTVBJCisuUFAKKy5icgorU3RhbXBhIHR1dHRvIHRyYW5uZSBsZSBwcmltZSB0cmUgbGluZWUgKDB4MzAgYnl0ZXMgZXNhZGVjaW1hbGkpIGRpCisuQiBmaWxlCitcLgorLmJyCitcZkklIHh4ZCBcLXMgMHgzMCBmaWxlCisuUFAKKy5icgorU3RhbXBhIDMgbGluZWUgKDB4MzAgYnl0ZXMgZXNhZGVjaW1hbGkpIGFsbGEgZmluZSBkaQorLkIgZmlsZQorXC4KKy5icgorXGZJJSB4eGQgXC1zIFwtMHgzMCBmaWxlCisuUFAKKy5icgorU3RhbXBhIDEyMCBieXRlcyBjb21lIGltbWFnaW5lIGVzYWRlY2ltYWxlIGNvbnRpbnVhIGNvbiA0MCBieXRlcyBwZXIgbGluZWEuCisuYnIKK1xmSSUgeHhkIFwtbCAxMjAgXC1wcyBcLWMgMjAgeHhkLjFcZlIKKworLmJyCisyZTU0NDgyMDU4NTg0NDIwMzEyMDIyNDE3NTY3NzU3Mzc0MjAzMTM5CisuYnIKKzM5MzYyMjIwMjI0ZDYxNmU3NTYxNmMyMDcwNjE2NzY1MjA2NjZmNzIKKy5icgorMjA3ODc4NjQyMjBhMmU1YzIyMGEyZTVjMjIyMDMyMzE3Mzc0MjA0ZAorLmJyCis2MTc5MjAzMTM5MzkzNjBhMmU1YzIyMjA0ZDYxNmUyMDcwNjE2NzY1CisuYnIKKzIwNjE3NTc0Njg2ZjcyM2EwYTJlNWMyMjIwMjAyMDIwNTQ2ZjZlNzkKKy5icgorMjA0ZTc1Njc2NTZlNzQyMDNjNzQ2ZjZlNzk0MDczNjM3NDZlNzU2NworLmJyCisKKy5icgorU3RhbXBhIGkgcHJpbWkgMTIwIGJ5dGVzIGRlbGxhIHBhZ2luYSBkaSBtYW51YWxlIHZpbS4xIGEgMTIgYnl0ZXMgcGVyIGxpbmVhLgorLmJyCitcZkklIHh4ZCBcLWwgMTIwIFwtYyAxMiB4eGQuMVxmUgorCisKKy5icgorMDAwMDAwMDogMmU1NCA0ODIwIDU4NTggNDQyMCAzMTIwIDIyNDEgIC5USCBYWEQgMSAiQQorLmJyCiswMDAwMDBjOiA3NTY3IDc1NzMgNzQyMCAzMTM5IDM5MzYgMjIyMCAgdWd1c3QgMTk5NiIgCisuYnIKKzAwMDAwMTg6IDIyNGQgNjE2ZSA3NTYxIDZjMjAgNzA2MSA2NzY1ICAiTWFudWFsIHBhZ2UKKy5icgorMDAwMDAyNDogMjA2NiA2ZjcyIDIwNzggNzg2NCAyMjBhIDJlNWMgICBmb3IgeHhkIi4uXAorLmJyCiswMDAwMDMwOiAyMjBhIDJlNWMgMjIyMCAzMjMxIDczNzQgMjA0ZCAgIi4uXCIgMjFzdCBNCisuYnIKKzAwMDAwM2M6IDYxNzkgMjAzMSAzOTM5IDM2MGEgMmU1YyAyMjIwICBheSAxOTk2Li5cIiAKKy5icgorMDAwMDA0ODogNGQ2MSA2ZTIwIDcwNjEgNjc2NSAyMDYxIDc1NzQgIE1hbiBwYWdlIGF1dAorLmJyCiswMDAwMDU0OiA2ODZmIDcyM2EgMGEyZSA1YzIyIDIwMjAgMjAyMCAgaG9yOi4uXCIgICAgCisuYnIKKzAwMDAwNjA6IDU0NmYgNmU3OSAyMDRlIDc1NjcgNjU2ZSA3NDIwICBUb255IE51Z2VudCAKKy5icgorMDAwMDA2YzogM2M3NCA2ZjZlIDc5NDAgNzM2MyA3NDZlIDc1NjcgIDx0b255QHNjdG51ZworLlBQCisuYnIKK1Zpc3VhbGl6emEgbGEgZGF0YSBkYWwgZmlsZSB4eGQuMQorLmJyCitcZkklIHh4ZCBcLXMgMHgzNiBcLWwgMTMgXC1jIDEzIHh4ZC4xXGZSCisuYnIKKzAwMDAwMzY6IDMyMzEgNzM3NCAyMDRkIDYxNzkgMjAzMSAzOTM5IDM2ICAyMXN0IE1heSAxOTk2CisuUFAKKy5icgorQ29waWFyZQorLkIgaW5wdXRfZmlsZQorc3UKKy5CIG91dHB1dF9maWxlCitwcmVtZXR0ZW5kb2dsaSAxMDAgYnl0ZXMgYSAweDAwLgorLmJyCitcZkklIHh4ZCBpbnB1dF9maWxlIHwgeHhkIFwtciBcLXMgMTAwIFw+IG91dHB1dF9maWxlXGZSCisuYnIKKworLmJyCitNb2RpZmljYXJlIChwYXRjaCkgbGEgZGF0YSBuZWwgZmlsZSB4eGQuMQorLmJyCitcZkklIGVjaG8gJzAwMDAwMzc6IDM1NzQgNjgnIHwgeHhkIFwtciBcLSB4eGQuMVxmUgorLmJyCitcZkklIHh4ZCBcLXMgMHgzNiBcLWwgMTMgXC1jIDEzIHh4ZC4xXGZSCisuYnIKKzAwMDAwMzY6IDMyMzUgNzQ2OCAyMDRkIDYxNzkgMjAzMSAzOTM5IDM2ICAyNXRoIE1heSAxOTk2CisuUFAKKy5icgorQ3JlYXJlIHVuIGZpbGUgZGkgNjU1MzcgdHV0dG8gYSAweDAwLAordHJhbm5lIGNoZSBsJ3VsdGltbyBjYXJhdHRlcmUgY2hlIOggdW5hICdBJyAoZXNhZGVjaW1hbGUgMHg0MSkuCisuYnIKK1xmSSUgZWNobyAnMDEwMDAwOiA0MScgfCB4eGQgXC1yIFw+IGZpbGVcZlIKKy5QUAorLmJyCitTdGFtcGEgdW5hIGltbWFnaW5lIGVzYWRlY2ltYWxlIGRlbCBmaWxlICBkaSBjdWkgc29wcmEgY29uIG9wemlvbmUgYXV0b3NraXAuCisuYnIKK1xmSSUgeHhkIFwtYSBcLWMgMTIgZmlsZVxmUgorLmJyCiswMDAwMDAwOiAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAgLi4uLi4uLi4uLi4uCisuYnIKKyoKKy5icgorMDAwZmZmYzogMDAwMCAwMDAwIDQwICAgICAgICAgICAgICAgICAgIC4uLi5BCisuUFAKK0NyZWEgdW4gZmlsZSBkaSAxIGJ5dGUgY2hlIGNvbnRpZW5lIGlsIHNvbG8gY2FyYXR0ZXJlICdBJy4KK0lsIG51bWVybyBkb3BvICdcLXIgXC1zJyB2aWVuZSBhZ2dpdW50byBhIHF1ZWxsbyB0cm92YXRvIG5lbCBmaWxlOworaW4gcHJhdGljYSwgaSBieXRlcyBwcmVjZWRlbnRpIG5vbiBzb25vIHN0YW1wYXRpLgorLmJyCitcZkklIGVjaG8gJzAxMDAwMDogNDEnIHwgeHhkIFwtciBcLXMgXC0weDEwMDAwIFw+IGZpbGVcZlIKKy5QUAorVXNhcmUgeHhkIGNvbWUgZmlsdHJvIGFsbCdpbnRlcm5vIGRpIHVuIGVkaXRvciBjb21lCisuQiB2aW0oMSkKK3BlciBvdHRlbmVyZSB1bmEgaW1tYWdpbmUgZXNhZGVjaW1hbGUgZGkgdW5hIHBhcnRlIGRpIGZpbGUKK2RlbGltaXRhdGEgZGFpIG1hcmsgYGEnIGUgYHonLgorLmJyCitcZkk6J2EsJ3oheHhkXGZSCisuUFAKK1VzYXJlIHh4ZCBjb21lIGZpbHRybyBhbGwnaW50ZXJubyBkaSB1biBlZGl0b3IgY29tZQorLkIgdmltKDEpCitwZXIgcmljb3N0cnVpcmUgdW4gcGV6em8gZGkgZmlsZSBiaW5hcmlvIGRhIHVuYSBpbW1hZ2luZSBlc2FkZWNpbWFsZQorZGVsaW1pdGF0YSBkYWkgbWFyayBgYScgZSBgeicuCisuYnIKK1xmSTonYSwneiF4eGQgXC1yXGZSCisuUFAKK1VzYXJlIHh4ZCBjb21lIGZpbHRybyBhbGwnaW50ZXJubyBkaSB1biBlZGl0b3IgY29tZQorLkIgdmltKDEpCitwZXIgcmljb3N0cnVpcmUgdW5hIHNvbGEgbGluZWEgZGkgZmlsZSBiaW5hcmlvIGRhIHVuYSBpbW1hZ2luZSBlc2FkZWNpbWFsZSwKK1BvcnRhcmUgaWwgY3Vyc29yZSBzb3ByYSBsYSBsaW5lYSBlIGJhdHRlcmU6CisuYnIKK1xmSSEheHhkIFwtclxmUgorLlBQCitQZXIgbGVnZ2VyZSBzaW5nb2xpIGNoYXJhdHRlcmkgZGEgdW5hIGxpbmVhIHNlcmlhbGUKKy5icgorXGZJJSB4eGQgXC1jMSA8IC9kZXYvdGVybS9iICZcZlIKKy5icgorXGZJJSBzdHR5IDwgL2Rldi90ZXJtL2IgXC1lY2hvIFwtb3Bvc3QgXC1pc2lnIFwtaWNhbm9uIG1pbiAxXGZSCisuYnIKK1xmSSUgZWNobyBcLW4gZm9vID4gL2Rldi90ZXJtL2JcZlIKKy5QUAorLlNIIENPRElDSSBESSBSSVRPUk5PCitJbCBwcm9ncmFtbWEgcHXyIHJlc3RpdHVpcmUgcXVlc3RpIGNvZGljaSBkaSBlcnJvcmU6CisuVFAKKzAKK25lc3N1biBlcnJvcmUgcmlsZXZhdG8uCisuVFAKK1wtMQorb3BlcmF6aW9uZSBub24gc3VwcG9ydGF0YSAoCisuSSB4eGQgXC1yIFwtaQorbm9uIGFuY29yYSBwb3NzaWJsZSkuCisuVFAKKzEKK2Vycm9yZSBkdXJhbnRlIGxhIHNjYW5zaW9uZSBwYXJhbWV0cmkuCisuVFAKKzIKK3Byb2JsZW1pIGNvbiBpbCBmaWxlIGRpIGlucHV0LgorLlRQCiszCitwcm9ibGVtaSBjb24gaWwgZmlsZSBkaSBvdXRwdXQuCisuVFAKKzQsNQorcG9zaXppb25lICJzZWVrIiBzcGVjaWZpY2F0YSBub24gcmFnZ2l1bmdpYmlsZSBhbGwnaW50ZXJubyBkZWwgZmlsZS4KKy5TSCBWRURFUkUgQU5DSEUKK3V1ZW5jb2RlKDEpLCB1dWRlY29kZSgxKSwgcGF0Y2goMSkKKy5icgorLlNIIEFWVkVSVElNRU5USQorTGEgc3RyYW5lenphIGRlbGxvIHN0cnVtZW50byByaXNwZWNjaGlhIGxhIG1lbnRlIGRlbCBzdW8gY3JlYXRvcmUuCitVc2F0ZSBhIHZvc3RybyByaXNjaGlvIGUgcGVyaWNvbG8uIENvcGlhdGUgaSBmaWxlLiBUcmFjY2lhdGUgbCdlc2VjdXppb25lLgorRGl2ZW50YXRlIHVuIG1hZ28uCisuYnIKKy5TSCBWRVJTSU9ORQorUXVlc3RhIHBhZ2luYSBkaSBtYW51YWxlIGRvY3VtZW50YSBsYSB2ZXJzaW9uZSAxLjcgZGkgeHhkLgorLlNIIEFVVE9SRQorLmJyCisoYykgMTk5MC0xOTk3IEp1ZXJnZW4gV2VpZ2VydAorLmJyCis8am53ZWlnZXJAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisuTFAKK0Rpc3RyaWJ1aXRlIGxpYmVyYW1lbnRlIGVkIGF0dHJpYnVpdGVtaSBpbCBjcmVkaXRvLAorLmJyCitmYXRlIHNvbGRpIGUgY29uZGl2aWRldGVsaSBjb24gbWUKKy5icgorcGVyZGV0ZSBzb2xkaSBlIG5vbiB2ZW5pdGUgYSBjaGllZGVybGkgYSBtZS4KKy5QUAorUGFnaW5hIGRpIG1hbnVhbGUgbWVzc2EgaW4gcGllZGkgZGEgVG9ueSBOdWdlbnQKKy5icgorPHRvbnlAc2N0bnVnZW4ucHBwLmd1LmVkdS5hdT4gPFQuTnVnZW50QHNjdC5ndS5lZHUuYXU+CisuYnIKK1BpY2NvbGUgbW9kaWZpY2hlIGRpIEJyYW0gTW9vbGVuYWFyLgorTW9kaWZpY2F0byBkYSBKdWVyZ2VuIFdlaWdlcnQuCisuUFAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3h4ZC4xIGIvcnVudGltZS9kb2MveHhkLjEKaW5kZXggZmJhMDUyMS4uY2NhZWIyMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MveHhkLjEKKysrIGIvcnVudGltZS9kb2MveHhkLjEKQEAgLTYyLDEyICs2MiwxMSBAQAogLklSIFwtYiAiIHwgIiBcLWJpdHMKIFN3aXRjaCB0byBiaXRzIChiaW5hcnkgZGlnaXRzKSBkdW1wLCByYXRoZXIgdGhhbiBoZXhkdW1wLgogVGhpcyBvcHRpb24gd3JpdGVzIG9jdGV0cyBhcyBlaWdodCBkaWdpdHMgIjEicyBhbmQgIjAicyBpbnN0ZWFkIG9mIGEgbm9ybWFsCi1oZXhhY2VjaW1hbCBkdW1wLiBFYWNoIGxpbmUgaXMgcHJlY2VkZWQgYnkgYSBsaW5lIG51bWJlciBpbiBoZXhhZGVjaW1hbCBhbmQKK2hleGFkZWNpbWFsIGR1bXAuIEVhY2ggbGluZSBpcyBwcmVjZWRlZCBieSBhIGxpbmUgbnVtYmVyIGluIGhleGFkZWNpbWFsIGFuZAogZm9sbG93ZWQgYnkgYW4gYXNjaWkgKG9yIGViY2RpYykgcmVwcmVzZW50YXRpb24uIFRoZSBjb21tYW5kIGxpbmUgc3dpdGNoZXMKIFwtciwgXC1wLCBcLWkgZG8gbm90IHdvcmsgd2l0aCB0aGlzIG1vZGUuCiAuVFAKIC5JUiAiXC1jIGNvbHMgIiB8ICIgXC1jb2xzIGNvbHMiCi0uSVIgIlwtYyBjb2xzICIgfCAiIFwtY29scyBjb2xzIgogZm9ybWF0CiAuUkkgPCBjb2xzID4KIG9jdGV0cyBwZXIgbGluZS4gRGVmYXVsdCAxNiAoXC1pOiAxMiwgXC1wczogMzAsIFwtYjogNikuIE1heCAyNTYuCkBAIC03OCw3ICs3Nyw3IEBACiBtZWFuaW5nbGVzcyBpbiBjb21iaW5hdGlvbnMgd2l0aCBcLXIsIFwtcCBvciBcLWkuCiAuVFAKIC5JUiAiXC1nIGJ5dGVzICIgfCAiIFwtZ3JvdXBzaXplIGJ5dGVzIgotc2VwZXJhdGUgdGhlIG91dHB1dCBvZiBldmVyeQorc2VwYXJhdGUgdGhlIG91dHB1dCBvZiBldmVyeQogLlJJIDwgYnl0ZXMgPgogYnl0ZXMgKHR3byBoZXggY2hhcmFjdGVycyBvciBlaWdodCBiaXQtZGlnaXRzIGVhY2gpIGJ5IGEgd2hpdGVzcGFjZS4KIFNwZWNpZnkKQEAgLTEzOSw3ICsxMzgsNyBAQAogLlBQCiAuSSB4eGQgXC1yCiBoYXMgc29tZSBidWlsdGluIG1hZ2ljIHdoaWxlIGV2YWx1YXRpbmcgbGluZSBudW1iZXIgaW5mb3JtYXRpb24uCi1JZiB0aGUgb3VwdXQgZmlsZSBpcyBzZWVrYWJsZSwgdGhlbiB0aGUgbGluZW51bWJlcnMgYXQgdGhlIHN0YXJ0IG9mIGVhY2gKK0lmIHRoZSBvdXRwdXQgZmlsZSBpcyBzZWVrYWJsZSwgdGhlbiB0aGUgbGluZW51bWJlcnMgYXQgdGhlIHN0YXJ0IG9mIGVhY2gKIGhleGR1bXAgbGluZSBtYXkgYmUgb3V0IG9mIG9yZGVyLCBsaW5lcyBtYXkgYmUgbWlzc2luZywgb3Igb3ZlcmxhcHBpbmcuIEluCiB0aGVzZSBjYXNlcyB4eGQgd2lsbCBsc2VlaygyKSB0byB0aGUgbmV4dCBwb3NpdGlvbi4gSWYgdGhlIG91dHB1dCBmaWxlIGlzIG5vdAogc2Vla2FibGUsIG9ubHkgZ2FwcyBhcmUgYWxsb3dlZCwgd2hpY2ggd2lsbCBiZSBmaWxsZWQgYnkgbnVsbC1ieXRlcy4KQEAgLTE1Miw3ICsxNTEsNyBAQAogc2tpcHMgZXZlcnl0aGluZyBvbiB0aGUgaW5wdXQgbGluZSBhZnRlciByZWFkaW5nIGVub3VnaCBjb2x1bW5zIG9mIGhleGFkZWNpbWFsCiBkYXRhIChzZWUgb3B0aW9uIFwtYykuIFRoaXMgYWxzbyBtZWFucywgdGhhdCBjaGFuZ2VzIHRvIHRoZSBwcmludGFibGUgYXNjaWkgKG9yCiBlYmNkaWMpIGNvbHVtbnMgYXJlIGFsd2F5cyBpZ25vcmVkLiBSZXZlcnRpbmcgYSBwbGFpbiAob3IgcG9zdHNjcmlwdCkgc3R5bGUKLWhleGR1bXAgd2l0aCB4eGQgXC1yIFwtcCBkb2VzIG5vdCBkZXBlbmQgb24gdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGNvbHVtbnMuIEhlcmUgYW4gdGhpbmcgdGhhdCBsb29rcyBsaWtlIGEgcGFpciBvZiBoZXgtZGlnaXRzIGlzIGludGVycHJldGVkLgoraGV4ZHVtcCB3aXRoIHh4ZCBcLXIgXC1wIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgY29ycmVjdCBudW1iZXIgb2YgY29sdW1ucy4gSGVyZSBhbnl0aGluZyB0aGF0IGxvb2tzIGxpa2UgYSBwYWlyIG9mIGhleC1kaWdpdHMgaXMgaW50ZXJwcmV0ZWQuCiAuUFAKIE5vdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbgogLmJyCkBAIC0xODYsNyArMTg1LDcgQEAKIFxmSSUgc2ggXC1jICdkZCBvZj1wbGFpbl9zbmlwcGV0IGJzPTFrIGNvdW50PTE7IHh4ZCBcLXMgKy03NjggPiBoZXhfc25pcHBldCcgPCBmaWxlCiAuUFAKIEhvd2V2ZXIsIHRoaXMgaXMgYSByYXJlIHNpdHVhdGlvbiBhbmQgdGhlIHVzZSBvZiBgKycgaXMgcmFyZWx5IG5lZWRlZC4KLXRoZSBhdXRob3IgcHJlZmVycyB0byBtb25pdG9yIHRoZSBlZmZlY3Qgb2YgeHhkIHdpdGggc3RyYWNlKDEpIG9yIHRydXNzKDEpLCB3aGVuZXZlciBcLXMgaXMgdXNlZC4KK1RoZSBhdXRob3IgcHJlZmVycyB0byBtb25pdG9yIHRoZSBlZmZlY3Qgb2YgeHhkIHdpdGggc3RyYWNlKDEpIG9yIHRydXNzKDEpLCB3aGVuZXZlciBcLXMgaXMgdXNlZC4KIC5TSCBFWEFNUExFUwogLlBQCiAuYnIKQEAgLTIwOCwxNyArMjA3LDE3IEBACiAuYnIKIFxmSSUgeHhkIFwtbCAxMjAgXC1wcyBcLWMgMjAgeHhkLjFcZlIKIC5icgotMmU1NDQ4MjA1ODU4NDQyMDMxMjAyMjRkNjE2ZTc1NjE2YzIwNzA2MQorMmU1NDQ4MjA1ODU4NDQyMDMxMjAyMjQxNzU2Nzc1NzM3NDIwMzEzOQogLmJyCi02NzY1MjA2NjZmNzIyMDc4Nzg2NDIyMGEyZTVjMjIwYTJlNWMyMjIwCiszOTM2MjIyMDIyNGQ2MTZlNzU2MTZjMjA3MDYxNjc2NTIwNjY2ZjcyCiAuYnIKLTMyMzE3Mzc0MjA0ZDYxNzkyMDMxMzkzOTM2MGEyZTVjMjIyMDRkNjEKKzIwNzg3ODY0MjIwYTJlNWMyMjBhMmU1YzIyMjAzMjMxNzM3NDIwNGQKIC5icgotNmUyMDcwNjE2NzY1MjA2MTc1NzQ2ODZmNzIzYTBhMmU1YzIyMjAyMAorNjE3OTIwMzEzOTM5MzYwYTJlNWMyMjIwNGQ2MTZlMjA3MDYxNjc2NQogLmJyCi0yMDIwNTQ2ZjZlNzkyMDRlNzU2NzY1NmU3NDIwM2M3NDZmNmU3OTQwCisyMDYxNzU3NDY4NmY3MjNhMGEyZTVjMjIyMDIwMjAyMDU0NmY2ZTc5CiAuYnIKLTczNjM3NDZlNzU2NzY1NmUyZTcwNzA3MDJlNjc3NTJlNjU2NDc1MmUKKzIwNGU3NTY3NjU2ZTc0MjAzYzc0NmY2ZTc5NDA3MzYzNzQ2ZTc1NjcKIC5icgogCiAuYnIKQEAgLTIyNiwzMiArMjI1LDMyIEBACiAuYnIKIFxmSSUgeHhkIFwtbCAxMjAgXC1jIDEyIHh4ZC4xXGZSCiAuYnIKLTAwMDAwMDA6IDJlNTQgNDgyMCA1ODU4IDQ0MjAgMzEyMCAyMjRkICAuVEggWFhEIDEgIk0KKzAwMDAwMDA6IDJlNTQgNDgyMCA1ODU4IDQ0MjAgMzEyMCAyMjQxICAuVEggWFhEIDEgIkEKIC5icgotMDAwMDAwYzogNjE2ZSA3NTYxIDZjMjAgNzA2MSA2NzY1IDIwNjYgIGFudWFsIHBhZ2UgZgorMDAwMDAwYzogNzU2NyA3NTczIDc0MjAgMzEzOSAzOTM2IDIyMjAgIHVndXN0IDE5OTYiIAogLmJyCi0wMDAwMDE4OiA2ZjcyIDIwNzggNzg2NCAyMjBhIDJlNWMgMjIwYSAgb3IgeHhkIi4uXFwiLgorMDAwMDAxODogMjI0ZCA2MTZlIDc1NjEgNmMyMCA3MDYxIDY3NjUgICJNYW51YWwgcGFnZQogLmJyCi0wMDAwMDI0OiAyZTVjIDIyMjAgMzIzMSA3Mzc0IDIwNGQgNjE3OSAgLlxcIiAyMXN0IE1heQorMDAwMDAyNDogMjA2NiA2ZjcyIDIwNzggNzg2NCAyMjBhIDJlNWMgICBmb3IgeHhkIi4uXFwKIC5icgotMDAwMDAzMDogMjAzMSAzOTM5IDM2MGEgMmU1YyAyMjIwIDRkNjEgICAxOTk2Li5cXCIgTWEKKzAwMDAwMzA6IDIyMGEgMmU1YyAyMjIwIDMyMzEgNzM3NCAyMDRkICAiLi5cXCIgMjFzdCBNCiAuYnIKLTAwMDAwM2M6IDZlMjAgNzA2MSA2NzY1IDIwNjEgNzU3NCA2ODZmICBuIHBhZ2UgYXV0aG8KKzAwMDAwM2M6IDYxNzkgMjAzMSAzOTM5IDM2MGEgMmU1YyAyMjIwICBheSAxOTk2Li5cXCIgCiAuYnIKLTAwMDAwNDg6IDcyM2EgMGEyZSA1YzIyIDIwMjAgMjAyMCA1NDZmICByOi4uXFwiICAgIFRvCiswMDAwMDQ4OiA0ZDYxIDZlMjAgNzA2MSA2NzY1IDIwNjEgNzU3NCAgTWFuIHBhZ2UgYXV0CiAuYnIKLTAwMDAwNTQ6IDZlNzkgMjA0ZSA3NTY3IDY1NmUgNzQyMCAzYzc0ICBueSBOdWdlbnQgPHQKKzAwMDAwNTQ6IDY4NmYgNzIzYSAwYTJlIDVjMjIgMjAyMCAyMDIwICBob3I6Li5cXCIgICAgCiAuYnIKLTAwMDAwNjA6IDZmNmUgNzk0MCA3MzYzIDc0NmUgNzU2NyA2NTZlICBvbnlAc2N0bnVnZW4KKzAwMDAwNjA6IDU0NmYgNmU3OSAyMDRlIDc1NjcgNjU2ZSA3NDIwICBUb255IE51Z2VudCAKIC5icgotMDAwMDA2YzogMmU3MCA3MDcwIDJlNjcgNzUyZSA2NTY0IDc1MmUgIC5wcHAuZ3UuZWR1LgorMDAwMDA2YzogM2M3NCA2ZjZlIDc5NDAgNzM2MyA3NDZlIDc1NjcgIDx0b255QHNjdG51ZwogLlBQCiAuYnIKIERpc3BsYXkganVzdCB0aGUgZGF0ZSBmcm9tIHRoZSBmaWxlIHh4ZC4xCiAuYnIKLVxmSSUgeHhkIFwtcyAweDI4IFwtbCAxMiBcLWMgMTIgeHhkLjFcZlIKK1xmSSUgeHhkIFwtcyAweDM2IFwtbCAxMyBcLWMgMTMgeHhkLjFcZlIKIC5icgotMDAwMDAyODogMzIzMSA3Mzc0IDIwNGQgNjE3OSAyMDMxIDM5MzkgIDIxc3QgTWF5IDE5OQorMDAwMDAzNjogMzIzMSA3Mzc0IDIwNGQgNjE3OSAyMDMxIDM5MzkgMzYgIDIxc3QgTWF5IDE5OTYKIC5QUAogLmJyCiBDb3B5CkBAIC0yNjYsMTEgKzI2NSwxMSBAQAogLmJyCiBQYXRjaCB0aGUgZGF0ZSBpbiB0aGUgZmlsZSB4eGQuMQogLmJyCi1cZkklIGVjaG8gJzAwMDAwMjk6IDM1NzQgNjgnIHwgeHhkIFwtciBcLSB4eGQuMVxmUgorXGZJJSBlY2hvICcwMDAwMDM3OiAzNTc0IDY4JyB8IHh4ZCBcLXIgXC0geHhkLjFcZlIKIC5icgotXGZJJSB4eGQgXC1zIDB4MjggXC1sIDEyIFwtYyAxMiB4eGQuMVxmUgorXGZJJSB4eGQgXC1zIDB4MzYgXC1sIDEzIFwtYyAxMyB4eGQuMVxmUgogLmJyCi0wMDAwMDI4OiAzMjM1IDc0NjggMjA0ZCA2MTc5IDIwMzEgMzkzOSAgMjV0aCBNYXkgMTk5CiswMDAwMDM2OiAzMjM1IDc0NjggMjA0ZCA2MTc5IDIwMzEgMzkzOSAzNiAgMjV0aCBNYXkgMTk5NgogLlBQCiAuYnIKIENyZWF0ZSBhIDY1NTM3IGJ5dGUgZmlsZSB3aXRoIGFsbCBieXRlcyAweDAwLApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MveHhkLm1hbiBiL3J1bnRpbWUvZG9jL3h4ZC5tYW4KaW5kZXggMzdiMjJkNi4uMDBkNzVkYSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MveHhkLm1hbgorKysgYi9ydW50aW1lL2RvYy94eGQubWFuCkBAIC0xLDkgKzEsNyBAQAorWFhEKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFhEKDEpCiAKIAogCi1YWEQoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhYRCgxKQotCi0KIE5BTUUKICAgICAgICB4eGQgLSBtYWtlIGEgaGV4ZHVtcCBvciBkbyB0aGUgcmV2ZXJzZS4KIApAQCAtMTMsMjM5ICsxMSwxODQgQEAKICAgICAgICB4eGQgLXJbZXZlcnRdIFtvcHRpb25zXSBbaW5maWxlIFtvdXRmaWxlXV0KIAogREVTQ1JJUFRJT04KLSAgICAgICB4eGQgIGNyZWF0ZXMgYSBoZXggZHVtcCBvZiBhIGdpdmVuIGZpbGUgb3Igc3RhbmRhcmQgaW5wdXQuCi0gICAgICAgSXQgY2FuIGFsc28gY29udmVydCBhIGhleCBkdW1wIGJhY2sgdG8gaXRzIG9yaWdpbmFsIGJpbmFyeQotICAgICAgIGZvcm0uICAgTGlrZSAgdXVlbmNvZGUoMSkgIGFuZCAgdXVkZWNvZGUoMSkgIGl0IGFsbG93cyB0aGUKLSAgICAgICB0cmFuc21pc3Npb24gb2YgYmluYXJ5IGRhdGEgaW4gYSBgbWFpbC1zYWZlJyBBU0NJSSAgcmVwcmUtCi0gICAgICAgc2VudGF0aW9uLCAgYnV0ICBoYXMgdGhlIGFkdmFudGFnZSBvZiBkZWNvZGluZyB0byBzdGFuZGFyZAotICAgICAgIG91dHB1dC4gIE1vcmVvdmVyLCBpdCBjYW4gYmUgdXNlZCB0byBwZXJmb3JtICBiaW5hcnkgIGZpbGUKLSAgICAgICBwYXRjaGluZy4KKyAgICAgICB4eGQgIGNyZWF0ZXMgYSBoZXggZHVtcCBvZiBhIGdpdmVuIGZpbGUgb3Igc3RhbmRhcmQgaW5wdXQuICBJdCBjYW4gYWxzbworICAgICAgIGNvbnZlcnQgYSBoZXggZHVtcCBiYWNrIHRvIGl0cyBvcmlnaW5hbCBiaW5hcnkgZm9ybS4gIExpa2UgIHV1ZW5jb2RlKDEpCisgICAgICAgYW5kICB1dWRlY29kZSgxKSAgaXQgYWxsb3dzIHRoZSB0cmFuc21pc3Npb24gb2YgYmluYXJ5IGRhdGEgaW4gYSBgbWFpbC0KKyAgICAgICBzYWZlJyBBU0NJSSByZXByZXNlbnRhdGlvbiwgYnV0IGhhcyB0aGUgYWR2YW50YWdlIG9mIGRlY29kaW5nIHRvICBzdGFuLQorICAgICAgIGRhcmQgb3V0cHV0LiAgTW9yZW92ZXIsIGl0IGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gYmluYXJ5IGZpbGUgcGF0Y2hpbmcuCiAKIE9QVElPTlMKLSAgICAgICBJZiAgbm8gaW5maWxlIGlzIGdpdmVuLCBzdGFuZGFyZCBpbnB1dCBpcyByZWFkLiAgSWYgaW5maWxlCi0gICAgICAgaXMgc3BlY2lmaWVkIGFzIGEgYC0nIGNoYXJhY3RlciwgdGhlbiBpbnB1dCBpcyB0YWtlbiAgZnJvbQotICAgICAgIHN0YW5kYXJkICBpbnB1dC4gIElmIG5vIG91dGZpbGUgaXMgZ2l2ZW4gKG9yIGEgYC0nIGNoYXJhYy0KLSAgICAgICB0ZXIgaXMgaW4gaXRzIHBsYWNlKSwgcmVzdWx0cyBhcmUgc2VudCB0byBzdGFuZGFyZCBvdXRwdXQuCisgICAgICAgSWYgbm8gaW5maWxlIGlzIGdpdmVuLCBzdGFuZGFyZCBpbnB1dCBpcyByZWFkLiAgSWYgaW5maWxlIGlzICBzcGVjaWZpZWQKKyAgICAgICBhcyAgYSAgYC0nICBjaGFyYWN0ZXIsICB0aGVuIGlucHV0IGlzIHRha2VuIGZyb20gc3RhbmRhcmQgaW5wdXQuICBJZiBubworICAgICAgIG91dGZpbGUgaXMgZ2l2ZW4gKG9yIGEgYC0nIGNoYXJhY3RlciBpcyBpbiBpdHMgcGxhY2UpLCByZXN1bHRzIGFyZSBzZW50CisgICAgICAgdG8gc3RhbmRhcmQgb3V0cHV0LgogCi0gICAgICAgTm90ZSB0aGF0IGEgImxhenkiIHBhcnNlciBpcyB1c2VkIHdoaWNoIGRvZXMgbm90IGNoZWNrIGZvcgotICAgICAgIG1vcmUgdGhhbiB0aGUgZmlyc3Qgb3B0aW9uIGxldHRlciwgdW5sZXNzICB0aGUgIG9wdGlvbiAgaXMKLSAgICAgICBmb2xsb3dlZCAgYnkgIGEgcGFyYW1ldGVyLiAgU3BhY2VzIGJldHdlZW4gYSBzaW5nbGUgb3B0aW9uCi0gICAgICAgbGV0dGVyIGFuZCBpdHMgIHBhcmFtZXRlciAgYXJlICBvcHRpb25hbC4gICBQYXJhbWV0ZXJzICB0bwotICAgICAgIG9wdGlvbnMgIGNhbiBiZSBzcGVjaWZpZWQgaW4gZGVjaW1hbCwgaGV4YWRlY2ltYWwgb3Igb2N0YWwKLSAgICAgICBub3RhdGlvbi4gIFRodXMgLWM4LCAtYyA4LCAtYyAwMTAgIGFuZCAgLWNvbHMgIDggIGFyZSAgYWxsCi0gICAgICAgZXF1aXZhbGVudC4KKyAgICAgICBOb3RlICB0aGF0ICBhICAibGF6eSIgcGFyc2VyIGlzIHVzZWQgd2hpY2ggZG9lcyBub3QgY2hlY2sgZm9yIG1vcmUgdGhhbgorICAgICAgIHRoZSBmaXJzdCBvcHRpb24gbGV0dGVyLCB1bmxlc3MgdGhlIG9wdGlvbiBpcyBmb2xsb3dlZCBieSBhICBwYXJhbWV0ZXIuCisgICAgICAgU3BhY2VzICBiZXR3ZWVuICBhIHNpbmdsZSBvcHRpb24gbGV0dGVyIGFuZCBpdHMgcGFyYW1ldGVyIGFyZSBvcHRpb25hbC4KKyAgICAgICBQYXJhbWV0ZXJzIHRvIG9wdGlvbnMgY2FuIGJlIHNwZWNpZmllZCBpbiBkZWNpbWFsLCBoZXhhZGVjaW1hbCBvciBvY3RhbAorICAgICAgIG5vdGF0aW9uLiAgVGh1cyAtYzgsIC1jIDgsIC1jIDAxMCBhbmQgLWNvbHMgOCBhcmUgYWxsIGVxdWl2YWxlbnQuCiAKIAogICAgICAgIC1hIHwgLWF1dG9za2lwCi0gICAgICAgICAgICAgIHRvZ2dsZSAgYXV0b3NraXA6ICBBIHNpbmdsZSAnKicgcmVwbGFjZXMgbnVsLWxpbmVzLgotICAgICAgICAgICAgICBEZWZhdWx0IG9mZi4KKyAgICAgICAgICAgICAgdG9nZ2xlICBhdXRvc2tpcDogQSBzaW5nbGUgJyonIHJlcGxhY2VzIG51bC1saW5lcy4gIERlZmF1bHQgb2ZmLgogCiAgICAgICAgLWIgfCAtYml0cwotICAgICAgICAgICAgICBTd2l0Y2ggdG8gYml0cyAoYmluYXJ5IGRpZ2l0cykgIGR1bXAsICByYXRoZXIgIHRoYW4KLSAgICAgICAgICAgICAgaGV4ZHVtcC4gIFRoaXMgb3B0aW9uIHdyaXRlcyBvY3RldHMgYXMgZWlnaHQgZGlnaXRzCi0gICAgICAgICAgICAgICIxInMgYW5kICIwInMgaW5zdGVhZCBvZiBhIG5vcm1hbCBoZXhhY2VjaW1hbCBkdW1wLgotICAgICAgICAgICAgICBFYWNoIGxpbmUgaXMgcHJlY2VkZWQgYnkgYSBsaW5lIG51bWJlciBpbiBoZXhhZGVjaS0KLSAgICAgICAgICAgICAgbWFsIGFuZCBmb2xsb3dlZCBieSBhbiBhc2NpaSAob3IgZWJjZGljKSAgcmVwcmVzZW4tCi0gICAgICAgICAgICAgIHRhdGlvbi4gVGhlIGNvbW1hbmQgbGluZSBzd2l0Y2hlcyAtciwgLXAsIC1pIGRvIG5vdAotICAgICAgICAgICAgICB3b3JrIHdpdGggdGhpcyBtb2RlLgorICAgICAgICAgICAgICBTd2l0Y2ggdG8gYml0cyAoYmluYXJ5IGRpZ2l0cykgZHVtcCwgcmF0aGVyIHRoYW4gaGV4ZHVtcC4gICBUaGlzCisgICAgICAgICAgICAgIG9wdGlvbiAgd3JpdGVzIG9jdGV0cyBhcyBlaWdodCBkaWdpdHMgIjEicyBhbmQgIjAicyBpbnN0ZWFkIG9mIGEKKyAgICAgICAgICAgICAgbm9ybWFsIGhleGFkZWNpbWFsIGR1bXAuIEVhY2ggbGluZSBpcyBwcmVjZWRlZCBieSBhIGxpbmUgIG51bWJlcgorICAgICAgICAgICAgICBpbiAgaGV4YWRlY2ltYWwgYW5kIGZvbGxvd2VkIGJ5IGFuIGFzY2lpIChvciBlYmNkaWMpIHJlcHJlc2VudGEtCisgICAgICAgICAgICAgIHRpb24uIFRoZSBjb21tYW5kIGxpbmUgc3dpdGNoZXMgLXIsIC1wLCAtaSBkbyBub3Qgd29yayB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgbW9kZS4KIAogICAgICAgIC1jIGNvbHMgfCAtY29scyBjb2xzCi0gICAgICAgICAgICAgIC1jIGNvbHMgfCAtY29scyBjb2xzIGZvcm1hdCA8Y29scz4gb2N0ZXRzIHBlciBsaW5lLgotICAgICAgICAgICAgICBEZWZhdWx0IDE2ICgtaTogMTIsIC1wczogMzAsIC1iOiA2KS4gTWF4IDI1Ni4KKyAgICAgICAgICAgICAgZm9ybWF0ICA8Y29scz4gb2N0ZXRzIHBlciBsaW5lLiBEZWZhdWx0IDE2ICgtaTogMTIsIC1wczogMzAsIC1iOgorICAgICAgICAgICAgICA2KS4gTWF4IDI1Ni4KIAogICAgICAgIC1FIHwgLUVCQ0RJQwotICAgICAgICAgICAgICBDaGFuZ2UgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpbiB0aGUgcmlnaHRoYW5kIGNvbC0KLSAgICAgICAgICAgICAgdW1uIGZyb20gQVNDSUkgdG8gRUJDRElDLiAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgdGhlCi0gICAgICAgICAgICAgIGhleGFkZWNpbWFsICByZXByZXNlbnRhdGlvbi4gVGhlIG9wdGlvbiBpcyBtZWFuaW5nLQotICAgICAgICAgICAgICBsZXNzIGluIGNvbWJpbmF0aW9ucyB3aXRoIC1yLCAtcCBvciAtaS4KLQotCi0KLU1hbnVhbCBwYWdlIGZvciB4eGQgICAgICAgIEF1Z3VzdCAxOTk2ICAgICAgICAgICAgICAgICAgICAgICAgICAxCi0KLQotCi0KLQotWFhEKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYWEQoMSkKLQorICAgICAgICAgICAgICBDaGFuZ2UgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpbiB0aGUgcmlnaHRoYW5kIGNvbHVtbiBmcm9tIEFTQ0lJCisgICAgICAgICAgICAgIHRvIEVCQ0RJQy4gIFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgICAgVGhlIG9wdGlvbiBpcyBtZWFuaW5nbGVzcyBpbiBjb21iaW5hdGlvbnMgd2l0aCAtciwgLXAgb3IgLWkuCiAKICAgICAgICAtZyBieXRlcyB8IC1ncm91cHNpemUgYnl0ZXMKLSAgICAgICAgICAgICAgc2VwZXJhdGUgdGhlIG91dHB1dCBvZiBldmVyeSA8Ynl0ZXM+IGJ5dGVzICh0d28gaGV4Ci0gICAgICAgICAgICAgIGNoYXJhY3RlcnMgIG9yICBlaWdodCBiaXQtZGlnaXRzIGVhY2gpIGJ5IGEgd2hpdGVzLQotICAgICAgICAgICAgICBwYWNlLiAgU3BlY2lmeSAtZyAwIHRvIHN1cHByZXNzIGdyb3VwaW5nLiAgIDxCeXRlcz4KLSAgICAgICAgICAgICAgZGVmYXVsdHMgIHRvICAyICBpbiBub3JtYWwgbW9kZSBhbmQgMSBpbiBiaXRzIG1vZGUuCi0gICAgICAgICAgICAgIEdyb3VwaW5nIGRvZXMgbm90IGFwcGx5IHRvICBwb3N0c2NyaXB0ICBvciAgaW5jbHVkZQorICAgICAgICAgICAgICBzZXBhcmF0ZSB0aGUgb3V0cHV0IG9mIGV2ZXJ5IDxieXRlcz4gYnl0ZXMgKHR3byAgaGV4ICBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgIG9yIGVpZ2h0IGJpdC1kaWdpdHMgZWFjaCkgYnkgYSB3aGl0ZXNwYWNlLiAgU3BlY2lmeSAtZyAwIHRvIHN1cC0KKyAgICAgICAgICAgICAgcHJlc3MgZ3JvdXBpbmcuICA8Qnl0ZXM+IGRlZmF1bHRzIHRvIDIgaW4gbm9ybWFsIG1vZGUgYW5kICAxICBpbgorICAgICAgICAgICAgICBiaXRzICBtb2RlLiAgIEdyb3VwaW5nICBkb2VzICBub3QgYXBwbHkgdG8gcG9zdHNjcmlwdCBvciBpbmNsdWRlCiAgICAgICAgICAgICAgIHN0eWxlLgogCiAgICAgICAgLWggfCAtaGVscAotICAgICAgICAgICAgICBwcmludCBhIHN1bW1hcnkgb2YgYXZhaWxhYmxlIGNvbW1hbmRzIGFuZCBleGl0LiAgTm8KLSAgICAgICAgICAgICAgaGV4IGR1bXBpbmcgaXMgcGVyZm9ybWVkLgorICAgICAgICAgICAgICBwcmludCBhIHN1bW1hcnkgb2YgYXZhaWxhYmxlIGNvbW1hbmRzIGFuZCBleGl0LiAgTm8gaGV4ICBkdW1waW5nCisgICAgICAgICAgICAgIGlzIHBlcmZvcm1lZC4KIAogICAgICAgIC1pIHwgLWluY2x1ZGUKLSAgICAgICAgICAgICAgb3V0cHV0IGluIEMgaW5jbHVkZSBmaWxlIHN0eWxlLiBBICBjb21wbGV0ZSAgc3RhdGljCi0gICAgICAgICAgICAgIGFycmF5ICBkZWZpbml0aW9uIGlzIHdyaXR0ZW4gKG5hbWVkIGFmdGVyIHRoZSBpbnB1dAotICAgICAgICAgICAgICBmaWxlKSwgdW5sZXNzIHh4ZCByZWFkcyBmcm9tIHN0ZGluLgorICAgICAgICAgICAgICBvdXRwdXQgIGluIEMgaW5jbHVkZSBmaWxlIHN0eWxlLiBBIGNvbXBsZXRlIHN0YXRpYyBhcnJheSBkZWZpbmktCisgICAgICAgICAgICAgIHRpb24gaXMgd3JpdHRlbiAobmFtZWQgYWZ0ZXIgdGhlIGlucHV0IGZpbGUpLCB1bmxlc3MgIHh4ZCAgcmVhZHMKKyAgICAgICAgICAgICAgZnJvbSBzdGRpbi4KIAogICAgICAgIC1sIGxlbiB8IC1sZW4gbGVuCiAgICAgICAgICAgICAgIHN0b3AgYWZ0ZXIgd3JpdGluZyA8bGVuPiBvY3RldHMuCiAKICAgICAgICAtcCB8IC1wcyB8IC1wb3N0c2NyaXB0IHwgLXBsYWluCi0gICAgICAgICAgICAgIG91dHB1dCBpbiBwb3N0c2NyaXB0IGNvbnRpbnVvdXMgaGV4ZHVtcCBzdHlsZS4gQWxzbwotICAgICAgICAgICAgICBrbm93biBhcyBwbGFpbiBoZXhkdW1wIHN0eWxlLgorICAgICAgICAgICAgICBvdXRwdXQgIGluICBwb3N0c2NyaXB0ICBjb250aW51b3VzICBoZXhkdW1wIHN0eWxlLiBBbHNvIGtub3duIGFzCisgICAgICAgICAgICAgIHBsYWluIGhleGR1bXAgc3R5bGUuCiAKICAgICAgICAtciB8IC1yZXZlcnQKLSAgICAgICAgICAgICAgcmV2ZXJzZSAgb3BlcmF0aW9uOiBjb252ZXJ0IChvciBwYXRjaCkgaGV4ZHVtcCBpbnRvCi0gICAgICAgICAgICAgIGJpbmFyeS4gIElmIG5vdCB3cml0aW5nIHRvIHN0ZG91dCwgeHhkIHdyaXRlcyAgaW50bwotICAgICAgICAgICAgICBpdHMgb3V0cHV0IGZpbGUgd2l0aG91dCB0cnVuY2F0aW5nIGl0LiBVc2UgdGhlIGNvbS0KLSAgICAgICAgICAgICAgYmluYXRpb24gLXIgLXAgIHRvICByZWFkICBwbGFpbiAgaGV4YWRlY2ltYWwgIGR1bXBzCi0gICAgICAgICAgICAgIHdpdGhvdXQgIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIGFuZCB3aXRob3V0IGEgcGFyLQotICAgICAgICAgICAgICB0aWN1bGFyIGNvbHVtbiBsYXlvdXQuICBBZGRpdGlvbmFsICBXaGl0ZXNwYWNlICBhbmQKLSAgICAgICAgICAgICAgbGluZS1icmVha3MgYXJlIGFsbG93ZWQgYW55d2hlcmUuCisgICAgICAgICAgICAgIHJldmVyc2Ugb3BlcmF0aW9uOiBjb252ZXJ0IChvciBwYXRjaCkgaGV4ZHVtcCBpbnRvICBiaW5hcnkuICAgSWYKKyAgICAgICAgICAgICAgbm90ICB3cml0aW5nICB0byBzdGRvdXQsIHh4ZCB3cml0ZXMgaW50byBpdHMgb3V0cHV0IGZpbGUgd2l0aG91dAorICAgICAgICAgICAgICB0cnVuY2F0aW5nIGl0LiBVc2UgdGhlIGNvbWJpbmF0aW9uIC1yIC1wIHRvIHJlYWQgcGxhaW4gaGV4YWRlY2ktCisgICAgICAgICAgICAgIG1hbCBkdW1wcyB3aXRob3V0IGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIGFuZCB3aXRob3V0IGEgcGFydGljdS0KKyAgICAgICAgICAgICAgbGFyIGNvbHVtbiBsYXlvdXQuIEFkZGl0aW9uYWwgIFdoaXRlc3BhY2UgIGFuZCAgbGluZS1icmVha3MgIGFyZQorICAgICAgICAgICAgICBhbGxvd2VkIGFueXdoZXJlLgogCiAgICAgICAgLXNlZWsgb2Zmc2V0Ci0gICAgICAgICAgICAgIFdoZW4gIHVzZWQgYWZ0ZXIgLXIgOiByZXZlcnQgd2l0aCA8b2Zmc2V0PiBhZGRlZCB0bwotICAgICAgICAgICAgICBmaWxlIHBvc2l0aW9ucyBmb3VuZCBpbiBoZXhkdW1wLgorICAgICAgICAgICAgICBXaGVuICB1c2VkICBhZnRlciAgLXIgOiByZXZlcnQgd2l0aCA8b2Zmc2V0PiBhZGRlZCB0byBmaWxlIHBvc2ktCisgICAgICAgICAgICAgIHRpb25zIGZvdW5kIGluIGhleGR1bXAuCiAKICAgICAgICAtcyBbK11bLV1zZWVrCi0gICAgICAgICAgICAgIHN0YXJ0IGF0IDxzZWVrPiBieXRlcyBhYnMuIChvciByZWwuKSBpbmZpbGUgb2Zmc2V0LgotICAgICAgICAgICAgICArICBpbmRpY2F0ZXMgIHRoYXQgdGhlIHNlZWsgaXMgcmVsYXRpdmUgdG8gdGhlIGN1ci0KLSAgICAgICAgICAgICAgcmVudCBzdGRpbiAgZmlsZSAgcG9zaXRpb24gIChtZWFuaW5nbGVzcyAgd2hlbiAgbm90Ci0gICAgICAgICAgICAgIHJlYWRpbmcgIGZyb20gIHN0ZGluKS4gICAtICBpbmRpY2F0ZXMgdGhhdCB0aGUgc2VlawotICAgICAgICAgICAgICBzaG91bGQgYmUgdGhhdCBtYW55IGNoYXJhY3RlcnMgZnJvbSB0aGUgZW5kIG9mICB0aGUKLSAgICAgICAgICAgICAgaW5wdXQgKG9yIGlmIGNvbWJpbmVkIHdpdGgKLSAgICAgICAgICAgICAgICsgIDogIGJlZm9yZSAgdGhlICBjdXJyZW50ICBzdGRpbiAgZmlsZSBwb3NpdGlvbikuCi0gICAgICAgICAgICAgIFdpdGhvdXQgLXMgb3B0aW9uLCB4eGQgc3RhcnRzIGF0IHRoZSAgY3VycmVudCAgZmlsZQotICAgICAgICAgICAgICBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgc3RhcnQgYXQgPHNlZWs+IGJ5dGVzIGFicy4gKG9yIHJlbC4pIGluZmlsZSBvZmZzZXQuICArIGluZGljYXRlcworICAgICAgICAgICAgICB0aGF0ICB0aGUgIHNlZWsgIGlzICByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBzdGRpbiBmaWxlIHBvc2l0aW9uCisgICAgICAgICAgICAgIChtZWFuaW5nbGVzcyB3aGVuIG5vdCByZWFkaW5nIGZyb20gc3RkaW4pLiAgLSBpbmRpY2F0ZXMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgc2VlayAgc2hvdWxkICBiZSAgdGhhdCBtYW55IGNoYXJhY3RlcnMgZnJvbSB0aGUgZW5kIG9mIHRoZSBpbnB1dAorICAgICAgICAgICAgICAob3IgaWYgY29tYmluZWQgd2l0aAorICAgICAgICAgICAgICAgKyA6IGJlZm9yZSAgdGhlICBjdXJyZW50ICBzdGRpbiAgZmlsZSAgcG9zaXRpb24pLiAgIFdpdGhvdXQgIC1zCisgICAgICAgICAgICAgIG9wdGlvbiwgeHhkIHN0YXJ0cyBhdCB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLgogCi0gICAgICAgLXUgICAgIHVzZSAgdXBwZXIgY2FzZSBoZXggbGV0dGVycy4gRGVmYXVsdCBpcyBsb3dlciBjYXNlLgorICAgICAgIC11ICAgICB1c2UgdXBwZXIgY2FzZSBoZXggbGV0dGVycy4gRGVmYXVsdCBpcyBsb3dlciBjYXNlLgogCiAgICAgICAgLXYgfCAtdmVyc2lvbgogICAgICAgICAgICAgICBzaG93IHZlcnNpb24gc3RyaW5nLgogCi0KLQotCi0KLU1hbnVhbCBwYWdlIGZvciB4eGQgICAgICAgIEF1Z3VzdCAxOTk2ICAgICAgICAgICAgICAgICAgICAgICAgICAyCi0KLQotCi0KLQotWFhEKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYWEQoMSkKLQotCiBDQVZFQVRTCi0gICAgICAgeHhkIC1yIGhhcyBzb21lIGJ1aWx0aW4gbWFnaWMgd2hpbGUgZXZhbHVhdGluZyBsaW5lIG51bWJlcgotICAgICAgIGluZm9ybWF0aW9uLiAgIElmICB0aGUgIG91cHV0ICBmaWxlICBpcyBzZWVrYWJsZSwgdGhlbiB0aGUKLSAgICAgICBsaW5lbnVtYmVycyBhdCB0aGUgc3RhcnQgb2YgZWFjaCBoZXhkdW1wIGxpbmUgbWF5ICBiZSAgb3V0Ci0gICAgICAgb2YgIG9yZGVyLCAgbGluZXMgbWF5IGJlIG1pc3NpbmcsIG9yIG92ZXJsYXBwaW5nLiBJbiB0aGVzZQotICAgICAgIGNhc2VzIHh4ZCB3aWxsIGxzZWVrKDIpIHRvIHRoZSBuZXh0IHBvc2l0aW9uLiBJZiB0aGUgIG91dC0KLSAgICAgICBwdXQgIGZpbGUgIGlzICBub3QgIHNlZWthYmxlLCBvbmx5IGdhcHMgYXJlIGFsbG93ZWQsIHdoaWNoCi0gICAgICAgd2lsbCBiZSBmaWxsZWQgYnkgbnVsbC1ieXRlcy4KKyAgICAgICB4eGQgLXIgaGFzIHNvbWUgYnVpbHRpbiBtYWdpYyB3aGlsZSBldmFsdWF0aW5nIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uLgorICAgICAgIElmIHRoZSBvdXRwdXQgZmlsZSBpcyBzZWVrYWJsZSwgdGhlbiB0aGUgbGluZW51bWJlcnMgYXQgIHRoZSAgc3RhcnQgIG9mCisgICAgICAgZWFjaCAgaGV4ZHVtcCAgbGluZSBtYXkgYmUgb3V0IG9mIG9yZGVyLCBsaW5lcyBtYXkgYmUgbWlzc2luZywgb3Igb3Zlci0KKyAgICAgICBsYXBwaW5nLiBJbiB0aGVzZSBjYXNlcyB4eGQgd2lsbCBsc2VlaygyKSB0byB0aGUgbmV4dCBwb3NpdGlvbi4gSWYgIHRoZQorICAgICAgIG91dHB1dCAgZmlsZSAgaXMgIG5vdCAgc2Vla2FibGUsICBvbmx5ICBnYXBzIGFyZSBhbGxvd2VkLCB3aGljaCB3aWxsIGJlCisgICAgICAgZmlsbGVkIGJ5IG51bGwtYnl0ZXMuCiAKLSAgICAgICB4eGQgLXIgbmV2ZXIgZ2VuZXJhdGVzIHBhcnNlIGVycm9ycy4gR2FyYmFnZSAgaXMgIHNpbGVudGx5Ci0gICAgICAgc2tpcHBlZC4KKyAgICAgICB4eGQgLXIgbmV2ZXIgZ2VuZXJhdGVzIHBhcnNlIGVycm9ycy4gR2FyYmFnZSBpcyBzaWxlbnRseSBza2lwcGVkLgogCi0gICAgICAgV2hlbiAgZWRpdGluZyAgaGV4ZHVtcHMsICBwbGVhc2UgIG5vdGUgIHRoYXQgIHh4ZCAtciBza2lwcwotICAgICAgIGV2ZXJ5dGhpbmcgb24gdGhlIGlucHV0IGxpbmUgYWZ0ZXIgcmVhZGluZyBlbm91Z2ggIGNvbHVtbnMKLSAgICAgICBvZiBoZXhhZGVjaW1hbCBkYXRhIChzZWUgb3B0aW9uIC1jKS4gVGhpcyBhbHNvIG1lYW5zLCB0aGF0Ci0gICAgICAgY2hhbmdlcyB0byB0aGUgcHJpbnRhYmxlIGFzY2lpICAob3IgIGViY2RpYykgIGNvbHVtbnMgIGFyZQotICAgICAgIGFsd2F5cyAgaWdub3JlZC4gIFJldmVydGluZyAgYSBwbGFpbiAob3IgcG9zdHNjcmlwdCkgc3R5bGUKLSAgICAgICBoZXhkdW1wIHdpdGggeHhkIC1yIC1wIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgY29ycmVjdCBudW0tCi0gICAgICAgYmVyICBvZiAgY29sdW1ucy4gIEhlcmUgYW4gdGhpbmcgdGhhdCBsb29rcyBsaWtlIGEgcGFpciBvZgotICAgICAgIGhleC1kaWdpdHMgaXMgaW50ZXJwcmV0ZWQuCisgICAgICAgV2hlbiBlZGl0aW5nIGhleGR1bXBzLCBwbGVhc2Ugbm90ZSB0aGF0IHh4ZCAtciBza2lwcyBldmVyeXRoaW5nIG9uICB0aGUKKyAgICAgICBpbnB1dCBsaW5lIGFmdGVyIHJlYWRpbmcgZW5vdWdoIGNvbHVtbnMgb2YgaGV4YWRlY2ltYWwgZGF0YSAoc2VlIG9wdGlvbgorICAgICAgIC1jKS4gVGhpcyBhbHNvIG1lYW5zLCB0aGF0IGNoYW5nZXMgdG8gdGhlIHByaW50YWJsZSBhc2NpaSAgKG9yICBlYmNkaWMpCisgICAgICAgY29sdW1ucyAgYXJlICBhbHdheXMgIGlnbm9yZWQuICBSZXZlcnRpbmcgYSBwbGFpbiAob3IgcG9zdHNjcmlwdCkgc3R5bGUKKyAgICAgICBoZXhkdW1wIHdpdGggeHhkIC1yIC1wIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgY29ycmVjdCAgbnVtYmVyICBvZiAgY29sLQorICAgICAgIHVtbnMuICBIZXJlICBhbnl0aGluZyAgdGhhdCAgbG9va3MgIGxpa2UgYSBwYWlyIG9mIGhleC1kaWdpdHMgaXMgaW50ZXItCisgICAgICAgcHJldGVkLgogCiAgICAgICAgTm90ZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCiAgICAgICAgJSB4eGQgLWkgZmlsZQogICAgICAgIGFuZAogICAgICAgICUgeHhkIC1pIDwgZmlsZQogCi0gICAgICAgeHhkIC1zICtzZWVrIG1heSBiZSAgZGlmZmVyZW50ICBmcm9tICB4eGQgIC1zICBzZWVrICAsICBhcwotICAgICAgIGxzZWVrKDIpIGlzIHVzZWQgdG8gInJld2luZCIgaW5wdXQuICBBICcrJyBtYWtlcyBhIGRpZmZlci0KLSAgICAgICBlbmNlIGlmIHRoZSBpbnB1dCBzb3VyY2UgaXMgc3RkaW4sICBhbmQgIGlmICBzdGRpbidzICBmaWxlCi0gICAgICAgcG9zaXRpb24gIGlzICBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIGJ5IHRoZSB0aW1lIHh4ZAotICAgICAgIGlzIHN0YXJ0ZWQgYW5kIGdpdmVuIGl0cyBpbnB1dC4gICBUaGUgIGZvbGxvd2luZyAgZXhhbXBsZXMKLSAgICAgICBtYXkgaGVscCB0byBjbGFyaWZ5IChvciBmdXJ0aGVyIGNvbmZ1c2UhKS4uLgorICAgICAgIHh4ZCAtcyArc2VlayBtYXkgYmUgZGlmZmVyZW50IGZyb20geHhkIC1zIHNlZWsgLCBhcyBsc2VlaygyKSBpcyB1c2VkIHRvCisgICAgICAgInJld2luZCIgaW5wdXQuICBBICcrJyBtYWtlcyBhIGRpZmZlcmVuY2UgaWYgdGhlIGlucHV0IHNvdXJjZSBpcyBzdGRpbiwKKyAgICAgICBhbmQgaWYgc3RkaW4ncyBmaWxlIHBvc2l0aW9uIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgIHRoZSAgZmlsZSAgYnkgIHRoZQorICAgICAgIHRpbWUgIHh4ZCAgaXMgIHN0YXJ0ZWQgYW5kIGdpdmVuIGl0cyBpbnB1dC4gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgbWF5CisgICAgICAgaGVscCB0byBjbGFyaWZ5IChvciBmdXJ0aGVyIGNvbmZ1c2UhKS4uLgogCi0gICAgICAgUmV3aW5kICBzdGRpbiBiZWZvcmUgcmVhZGluZzsgbmVlZGVkIGJlY2F1c2UgdGhlIGBjYXQnIGhhcwotICAgICAgIGFscmVhZHkgcmVhZCB0byB0aGUgZW5kIG9mIHN0ZGluLgorICAgICAgIFJld2luZCBzdGRpbiBiZWZvcmUgcmVhZGluZzsgbmVlZGVkIGJlY2F1c2UgdGhlIGBjYXQnIGhhcyBhbHJlYWR5ICByZWFkCisgICAgICAgdG8gdGhlIGVuZCBvZiBzdGRpbi4KICAgICAgICAlIHNoIC1jICdjYXQgPiBwbGFpbl9jb3B5OyB4eGQgLXMgMCA+IGhleF9jb3B5JyA8IGZpbGUKIAotICAgICAgIEhleGR1bXAgZnJvbSBmaWxlIHBvc2l0aW9uIDB4NDgwICg9MTAyNCsxMjgpIG9ud2FyZHMuICBUaGUKLSAgICAgICBgKycgIHNpZ24gIG1lYW5zICAicmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcG9zaXRpb24iLCB0aHVzCi0gICAgICAgdGhlIGAxMjgnIGFkZHMgdG8gdGhlIDFrIHdoZXJlIGRkIGxlZnQgb2ZmLgotICAgICAgICUgc2ggLWMgJ2RkIG9mPXBsYWluX3NuaXBwZXQgYnM9MWsgY291bnQ9MTsgeHhkIC1zICsxMjggID4KLSAgICAgICBoZXhfc25pcHBldCcgPCBmaWxlCisgICAgICAgSGV4ZHVtcCAgZnJvbSAgZmlsZSAgcG9zaXRpb24gIDB4NDgwICg9MTAyNCsxMjgpIG9ud2FyZHMuICBUaGUgYCsnIHNpZ24KKyAgICAgICBtZWFucyAicmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcG9zaXRpb24iLCB0aHVzIHRoZSBgMTI4JyBhZGRzIHRvIHRoZSAxaworICAgICAgIHdoZXJlIGRkIGxlZnQgb2ZmLgorICAgICAgICUgIHNoIC1jICdkZCBvZj1wbGFpbl9zbmlwcGV0IGJzPTFrIGNvdW50PTE7IHh4ZCAtcyArMTI4ID4gaGV4X3NuaXBwZXQnCisgICAgICAgPCBmaWxlCiAKICAgICAgICBIZXhkdW1wIGZyb20gZmlsZSBwb3NpdGlvbiAweDEwMCAoID0gMTAyNC03NjgpIG9uLgotICAgICAgICUgc2ggLWMgJ2RkIG9mPXBsYWluX3NuaXBwZXQgYnM9MWsgY291bnQ9MTsgeHhkIC1zICstNzY4ID4KLSAgICAgICBoZXhfc25pcHBldCcgPCBmaWxlCisgICAgICAgJSBzaCAtYyAnZGQgb2Y9cGxhaW5fc25pcHBldCBicz0xayBjb3VudD0xOyB4eGQgLXMgKy03NjggPiBoZXhfc25pcHBldCcKKyAgICAgICA8IGZpbGUKIAotICAgICAgIEhvd2V2ZXIsIHRoaXMgaXMgYSByYXJlIHNpdHVhdGlvbiBhbmQgdGhlIHVzZSAgb2YgIGArJyAgaXMKLSAgICAgICByYXJlbHkgIG5lZWRlZC4gICB0aGUgYXV0aG9yIHByZWZlcnMgdG8gbW9uaXRvciB0aGUgZWZmZWN0Ci0gICAgICAgb2YgeHhkIHdpdGggc3RyYWNlKDEpIG9yIHRydXNzKDEpLCB3aGVuZXZlciAtcyBpcyB1c2VkLgorICAgICAgIEhvd2V2ZXIsICB0aGlzIGlzIGEgcmFyZSBzaXR1YXRpb24gYW5kIHRoZSB1c2Ugb2YgYCsnIGlzIHJhcmVseSBuZWVkZWQuCisgICAgICAgVGhlIGF1dGhvciBwcmVmZXJzIHRvIG1vbml0b3IgdGhlICBlZmZlY3QgIG9mICB4eGQgIHdpdGggIHN0cmFjZSgxKSAgb3IKKyAgICAgICB0cnVzcygxKSwgd2hlbmV2ZXIgLXMgaXMgdXNlZC4KIAogRVhBTVBMRVMKLSAgICAgICBQcmludCBldmVyeXRoaW5nIGJ1dCAgdGhlICBmaXJzdCAgdGhyZWUgIGxpbmVzICAoaGV4ICAweDMwCi0gICAgICAgYnl0ZXMpIG9mIGZpbGUKLQotCi0KLU1hbnVhbCBwYWdlIGZvciB4eGQgICAgICAgIEF1Z3VzdCAxOTk2ICAgICAgICAgICAgICAgICAgICAgICAgICAzCi0KLQotCi0KLQotWFhEKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYWEQoMSkKLQotCisgICAgICAgUHJpbnQgZXZlcnl0aGluZyBidXQgdGhlIGZpcnN0IHRocmVlIGxpbmVzIChoZXggMHgzMCBieXRlcykgb2YgZmlsZQogICAgICAgICUgeHhkIC1zIDB4MzAgZmlsZQogCiAgICAgICAgUHJpbnQgMyBsaW5lcyAoaGV4IDB4MzAgYnl0ZXMpIGZyb20gdGhlIGVuZCBvZiBmaWxlCiAgICAgICAgJSB4eGQgLXMgLTB4MzAgZmlsZQogCi0gICAgICAgUHJpbnQgIDEyMCAgYnl0ZXMgYXMgY29udGludW91cyBoZXhkdW1wIHdpdGggNDAgb2N0ZXRzIHBlcgotICAgICAgIGxpbmUuCisgICAgICAgUHJpbnQgMTIwIGJ5dGVzIGFzIGNvbnRpbnVvdXMgaGV4ZHVtcCB3aXRoIDQwIG9jdGV0cyBwZXIgbGluZS4KICAgICAgICAlIHh4ZCAtbCAxMjAgLXBzIC1jIDIwIHh4ZC4xCi0gICAgICAgMmU1NDQ4MjA1ODU4NDQyMDMxMjAyMjRkNjE2ZTc1NjE2YzIwNzA2MQotICAgICAgIDY3NjUyMDY2NmY3MjIwNzg3ODY0MjIwYTJlNWMyMjBhMmU1YzIyMjAKLSAgICAgICAzMjMxNzM3NDIwNGQ2MTc5MjAzMTM5MzkzNjBhMmU1YzIyMjA0ZDYxCi0gICAgICAgNmUyMDcwNjE2NzY1MjA2MTc1NzQ2ODZmNzIzYTBhMmU1YzIyMjAyMAotICAgICAgIDIwMjA1NDZmNmU3OTIwNGU3NTY3NjU2ZTc0MjAzYzc0NmY2ZTc5NDAKLSAgICAgICA3MzYzNzQ2ZTc1Njc2NTZlMmU3MDcwNzAyZTY3NzUyZTY1NjQ3NTJlCisgICAgICAgMmU1NDQ4MjA1ODU4NDQyMDMxMjAyMjQxNzU2Nzc1NzM3NDIwMzEzOQorICAgICAgIDM5MzYyMjIwMjI0ZDYxNmU3NTYxNmMyMDcwNjE2NzY1MjA2NjZmNzIKKyAgICAgICAyMDc4Nzg2NDIyMGEyZTVjMjIwYTJlNWMyMjIwMzIzMTczNzQyMDRkCisgICAgICAgNjE3OTIwMzEzOTM5MzYwYTJlNWMyMjIwNGQ2MTZlMjA3MDYxNjc2NQorICAgICAgIDIwNjE3NTc0Njg2ZjcyM2EwYTJlNWMyMjIwMjAyMDIwNTQ2ZjZlNzkKKyAgICAgICAyMDRlNzU2NzY1NmU3NDIwM2M3NDZmNmU3OTQwNzM2Mzc0NmU3NTY3CiAKLSAgICAgICBIZXhkdW1wIHRoZSBmaXJzdCAxMjAgYnl0ZXMgIG9mICB0aGlzICBtYW4gIHBhZ2UgIHdpdGggIDEyCi0gICAgICAgb2N0ZXRzIHBlciBsaW5lLgorICAgICAgIEhleGR1bXAgdGhlIGZpcnN0IDEyMCBieXRlcyBvZiB0aGlzIG1hbiBwYWdlIHdpdGggMTIgb2N0ZXRzIHBlciBsaW5lLgogICAgICAgICUgeHhkIC1sIDEyMCAtYyAxMiB4eGQuMQotICAgICAgIDAwMDAwMDA6IDJlNTQgNDgyMCA1ODU4IDQ0MjAgMzEyMCAyMjRkICAuVEggWFhEIDEgIk0KLSAgICAgICAwMDAwMDBjOiA2MTZlIDc1NjEgNmMyMCA3MDYxIDY3NjUgMjA2NiAgYW51YWwgcGFnZSBmCi0gICAgICAgMDAwMDAxODogNmY3MiAyMDc4IDc4NjQgMjIwYSAyZTVjIDIyMGEgIG9yIHh4ZCIuLlwiLgotICAgICAgIDAwMDAwMjQ6IDJlNWMgMjIyMCAzMjMxIDczNzQgMjA0ZCA2MTc5ICAuXCIgMjFzdCBNYXkKLSAgICAgICAwMDAwMDMwOiAyMDMxIDM5MzkgMzYwYSAyZTVjIDIyMjAgNGQ2MSAgIDE5OTYuLlwiIE1hCi0gICAgICAgMDAwMDAzYzogNmUyMCA3MDYxIDY3NjUgMjA2MSA3NTc0IDY4NmYgIG4gcGFnZSBhdXRobwotICAgICAgIDAwMDAwNDg6IDcyM2EgMGEyZSA1YzIyIDIwMjAgMjAyMCA1NDZmICByOi4uXCIgICAgVG8KLSAgICAgICAwMDAwMDU0OiA2ZTc5IDIwNGUgNzU2NyA2NTZlIDc0MjAgM2M3NCAgbnkgTnVnZW50IDx0Ci0gICAgICAgMDAwMDA2MDogNmY2ZSA3OTQwIDczNjMgNzQ2ZSA3NTY3IDY1NmUgIG9ueUBzY3RudWdlbgotICAgICAgIDAwMDAwNmM6IDJlNzAgNzA3MCAyZTY3IDc1MmUgNjU2NCA3NTJlICAucHBwLmd1LmVkdS4KKyAgICAgICAwMDAwMDAwOiAyZTU0IDQ4MjAgNTg1OCA0NDIwIDMxMjAgMjI0MSAgLlRIIFhYRCAxICJBCisgICAgICAgMDAwMDAwYzogNzU2NyA3NTczIDc0MjAgMzEzOSAzOTM2IDIyMjAgIHVndXN0IDE5OTYiCisgICAgICAgMDAwMDAxODogMjI0ZCA2MTZlIDc1NjEgNmMyMCA3MDYxIDY3NjUgICJNYW51YWwgcGFnZQorICAgICAgIDAwMDAwMjQ6IDIwNjYgNmY3MiAyMDc4IDc4NjQgMjIwYSAyZTVjICAgZm9yIHh4ZCIuLlwKKyAgICAgICAwMDAwMDMwOiAyMjBhIDJlNWMgMjIyMCAzMjMxIDczNzQgMjA0ZCAgIi4uXCIgMjFzdCBNCisgICAgICAgMDAwMDAzYzogNjE3OSAyMDMxIDM5MzkgMzYwYSAyZTVjIDIyMjAgIGF5IDE5OTYuLlwiCisgICAgICAgMDAwMDA0ODogNGQ2MSA2ZTIwIDcwNjEgNjc2NSAyMDYxIDc1NzQgIE1hbiBwYWdlIGF1dAorICAgICAgIDAwMDAwNTQ6IDY4NmYgNzIzYSAwYTJlIDVjMjIgMjAyMCAyMDIwICBob3I6Li5cIgorICAgICAgIDAwMDAwNjA6IDU0NmYgNmU3OSAyMDRlIDc1NjcgNjU2ZSA3NDIwICBUb255IE51Z2VudAorICAgICAgIDAwMDAwNmM6IDNjNzQgNmY2ZSA3OTQwIDczNjMgNzQ2ZSA3NTY3ICA8dG9ueUBzY3RudWcKIAogICAgICAgIERpc3BsYXkganVzdCB0aGUgZGF0ZSBmcm9tIHRoZSBmaWxlIHh4ZC4xCi0gICAgICAgJSB4eGQgLXMgMHgyOCAtbCAxMiAtYyAxMiB4eGQuMQotICAgICAgIDAwMDAwMjg6IDMyMzEgNzM3NCAyMDRkIDYxNzkgMjAzMSAzOTM5ICAyMXN0IE1heSAxOTkKKyAgICAgICAlIHh4ZCAtcyAweDM2IC1sIDEzIC1jIDEzIHh4ZC4xCisgICAgICAgMDAwMDAzNjogMzIzMSA3Mzc0IDIwNGQgNjE3OSAyMDMxIDM5MzkgMzYgIDIxc3QgTWF5IDE5OTYKIAotICAgICAgIENvcHkgIGlucHV0X2ZpbGUgIHRvICBvdXRwdXRfZmlsZSBhbmQgcHJlcGVuZCAxMDAgYnl0ZXMgb2YKLSAgICAgICB2YWx1ZSAweDAwLgorICAgICAgIENvcHkgaW5wdXRfZmlsZSB0byBvdXRwdXRfZmlsZSBhbmQgcHJlcGVuZCAxMDAgYnl0ZXMgb2YgdmFsdWUgMHgwMC4KICAgICAgICAlIHh4ZCBpbnB1dF9maWxlIHwgeHhkIC1yIC1zIDEwMCA+IG91dHB1dF9maWxlCiAKICAgICAgICBQYXRjaCB0aGUgZGF0ZSBpbiB0aGUgZmlsZSB4eGQuMQotICAgICAgICUgZWNobyAnMDAwMDAyOTogMzU3NCA2OCcgfCB4eGQgLXIgLSB4eGQuMQotICAgICAgICUgeHhkIC1zIDB4MjggLWwgMTIgLWMgMTIgeHhkLjEKLSAgICAgICAwMDAwMDI4OiAzMjM1IDc0NjggMjA0ZCA2MTc5IDIwMzEgMzkzOSAgMjV0aCBNYXkgMTk5CisgICAgICAgJSBlY2hvICcwMDAwMDM3OiAzNTc0IDY4JyB8IHh4ZCAtciAtIHh4ZC4xCisgICAgICAgJSB4eGQgLXMgMHgzNiAtbCAxMyAtYyAxMyB4eGQuMQorICAgICAgIDAwMDAwMzY6IDMyMzUgNzQ2OCAyMDRkIDYxNzkgMjAzMSAzOTM5IDM2ICAyNXRoIE1heSAxOTk2CiAKLSAgICAgICBDcmVhdGUgYSA2NTUzNyBieXRlIGZpbGUgd2l0aCBhbGwgYnl0ZXMgMHgwMCwgIGV4Y2VwdCAgZm9yCi0gICAgICAgdGhlIGxhc3Qgb25lIHdoaWNoIGlzICdBJyAoaGV4IDB4NDEpLgorICAgICAgIENyZWF0ZSAgYSAgNjU1MzcgYnl0ZSBmaWxlIHdpdGggYWxsIGJ5dGVzIDB4MDAsIGV4Y2VwdCBmb3IgdGhlIGxhc3Qgb25lCisgICAgICAgd2hpY2ggaXMgJ0EnIChoZXggMHg0MSkuCiAgICAgICAgJSBlY2hvICcwMTAwMDA6IDQxJyB8IHh4ZCAtciA+IGZpbGUKIAogICAgICAgIEhleGR1bXAgdGhpcyBmaWxlIHdpdGggYXV0b3NraXAuCkBAIC0yNTQsMzQgKzE5NywyMSBAQAogICAgICAgICoKICAgICAgICAwMDBmZmZjOiAwMDAwIDAwMDAgNDAgICAgICAgICAgICAgICAgICAgLi4uLkEKIAotICAgICAgIENyZWF0ZSAgYSAgMSAgYnl0ZSBmaWxlIGNvbnRhaW5pbmcgYSBzaW5nbGUgJ0EnIGNoYXJhY3Rlci4KLSAgICAgICBUaGUgbnVtYmVyIGFmdGVyICctciAtcycgYWRkcyB0byB0aGUgbGluZW51bWJlcnMgZm91bmQgIGluCi0KLQotCi1NYW51YWwgcGFnZSBmb3IgeHhkICAgICAgICBBdWd1c3QgMTk5NiAgICAgICAgICAgICAgICAgICAgICAgICAgNAotCi0KLQotCi0KLVhYRCgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFhEKDEpCi0KLQotICAgICAgIHRoZSBmaWxlOyBpbiBlZmZlY3QsIHRoZSBsZWFkaW5nIGJ5dGVzIGFyZSBzdXBwcmVzc2VkLgorICAgICAgIENyZWF0ZSBhIDEgYnl0ZSBmaWxlIGNvbnRhaW5pbmcgYSBzaW5nbGUgICdBJyAgY2hhcmFjdGVyLiAgIFRoZSAgbnVtYmVyCisgICAgICAgYWZ0ZXIgJy1yIC1zJyBhZGRzIHRvIHRoZSBsaW5lbnVtYmVycyBmb3VuZCBpbiB0aGUgZmlsZTsgaW4gZWZmZWN0LCB0aGUKKyAgICAgICBsZWFkaW5nIGJ5dGVzIGFyZSBzdXBwcmVzc2VkLgogICAgICAgICUgZWNobyAnMDEwMDAwOiA0MScgfCB4eGQgLXIgLXMgLTB4MTAwMDAgPiBmaWxlCiAKLSAgICAgICBVc2UgIHh4ZCAgYXMgIGEgIGZpbHRlciB3aXRoaW4gYW4gZWRpdG9yIHN1Y2ggYXMgdmltKDEpIHRvCi0gICAgICAgaGV4ZHVtcCBhIHJlZ2lvbiBtYXJrZWQgYmV0d2VlbiBgYScgYW5kIGB6Jy4KKyAgICAgICBVc2UgeHhkIGFzIGEgZmlsdGVyIHdpdGhpbiBhbiBlZGl0b3Igc3VjaCBhcyB2aW0oMSkgdG8gaGV4ZHVtcCBhIHJlZ2lvbgorICAgICAgIG1hcmtlZCBiZXR3ZWVuIGBhJyBhbmQgYHonLgogICAgICAgIDonYSwneiF4eGQKIAotICAgICAgIFVzZSB4eGQgYXMgYSBmaWx0ZXIgd2l0aGluIGFuIGVkaXRvciAgc3VjaCAgYXMgIHZpbSgxKSAgdG8KLSAgICAgICByZWNvdmVyIGEgYmluYXJ5IGhleGR1bXAgbWFya2VkIGJldHdlZW4gYGEnIGFuZCBgeicuCisgICAgICAgVXNlIHh4ZCBhcyBhIGZpbHRlciB3aXRoaW4gYW4gZWRpdG9yIHN1Y2ggYXMgdmltKDEpIHRvIHJlY292ZXIgYSBiaW5hcnkKKyAgICAgICBoZXhkdW1wIG1hcmtlZCBiZXR3ZWVuIGBhJyBhbmQgYHonLgogICAgICAgIDonYSwneiF4eGQgLXIKIAotICAgICAgIFVzZSAgeHhkICBhcyAgYSAgZmlsdGVyIHdpdGhpbiBhbiBlZGl0b3Igc3VjaCBhcyB2aW0oMSkgdG8KLSAgICAgICByZWNvdmVyIG9uZSBsaW5lIG9mIGEgaGV4ZHVtcC4gIE1vdmUgdGhlIGN1cnNvciAgb3ZlciAgdGhlCi0gICAgICAgbGluZSBhbmQgdHlwZToKKyAgICAgICBVc2UgeHhkIGFzIGEgZmlsdGVyIHdpdGhpbiBhbiBlZGl0b3Igc3VjaCBhcyB2aW0oMSkgdG8gcmVjb3ZlciBvbmUgbGluZQorICAgICAgIG9mIGEgaGV4ZHVtcC4gIE1vdmUgdGhlIGN1cnNvciBvdmVyIHRoZSBsaW5lIGFuZCB0eXBlOgogICAgICAgICEheHhkIC1yCiAKICAgICAgICBSZWFkIHNpbmdsZSBjaGFyYWN0ZXJzIGZyb20gYSBzZXJpYWwgbGluZQpAQCAtMjk1LDggKzIyNSw3IEBACiAKICAgICAgICAwICAgICAgbm8gZXJyb3JzIGVuY291bnRlcmVkLgogCi0gICAgICAgLTEgICAgIG9wZXJhdGlvbiAgbm90IHN1cHBvcnRlZCAoIHh4ZCAtciAtaSBzdGlsbCBpbXBvc3NpLQotICAgICAgICAgICAgICBibGUpLgorICAgICAgIC0xICAgICBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCAoIHh4ZCAtciAtaSBzdGlsbCBpbXBvc3NpYmxlKS4KIAogICAgICAgIDEgICAgICBlcnJvciB3aGlsZSBwYXJzaW5nIG9wdGlvbnMuCiAKQEAgLTMxMCw5ICsyMzksOCBAQAogICAgICAgIHV1ZW5jb2RlKDEpLCB1dWRlY29kZSgxKSwgcGF0Y2goMSkKIAogV0FSTklOR1MKLSAgICAgICBUaGUgdG9vbHMgIHdlaXJkbmVzcyAgbWF0Y2hlcyAgaXRzICBjcmVhdG9ycyAgYnJhaW4uICAgVXNlCi0gICAgICAgZW50aXJlbHkgIGF0IHlvdXIgb3duIHJpc2suIENvcHkgZmlsZXMuIFRyYWNlIGl0LiBCZWNvbWUgYQotICAgICAgIHdpemFyZC4KKyAgICAgICBUaGUgIHRvb2xzICB3ZWlyZG5lc3MgbWF0Y2hlcyBpdHMgY3JlYXRvcnMgYnJhaW4uICBVc2UgZW50aXJlbHkgYXQgeW91cgorICAgICAgIG93biByaXNrLiBDb3B5IGZpbGVzLiBUcmFjZSBpdC4gQmVjb21lIGEgd2l6YXJkLgogCiBWRVJTSU9OCiAgICAgICAgVGhpcyBtYW51YWwgcGFnZSBkb2N1bWVudHMgeHhkIHZlcnNpb24gMS43CkBAIC0zMjIsNzUgKzI1MCwxNCBAQAogICAgICAgIDxqbndlaWdlckBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KIAogICAgICAgIERpc3RyaWJ1dGUgZnJlZWx5IGFuZCBjcmVkaXQgbWUsCi0KLQotCi1NYW51YWwgcGFnZSBmb3IgeHhkICAgICAgICBBdWd1c3QgMTk5NiAgICAgICAgICAgICAgICAgICAgICAgICAgNQotCi0KLQotCi0KLVhYRCgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFhEKDEpCi0KLQogICAgICAgIG1ha2UgbW9uZXkgYW5kIHNoYXJlIHdpdGggbWUsCiAgICAgICAgbG9zZSBtb25leSBhbmQgZG9uJ3QgYXNrIG1lLgogCiAgICAgICAgTWFudWFsIHBhZ2Ugc3RhcnRlZCBieSBUb255IE51Z2VudAogICAgICAgIDx0b255QHNjdG51Z2VuLnBwcC5ndS5lZHUuYXU+IDxULk51Z2VudEBzY3QuZ3UuZWR1LmF1PgotICAgICAgIFNtYWxsICBjaGFuZ2VzICBieSAgQnJhbSAgTW9vbGVuYWFyLiAgIEVkaXRlZCAgYnkgIEp1ZXJnZW4KLSAgICAgICBXZWlnZXJ0LgorICAgICAgIFNtYWxsIGNoYW5nZXMgYnkgQnJhbSBNb29sZW5hYXIuICBFZGl0ZWQgYnkgSnVlcmdlbiBXZWlnZXJ0LgogCiAKIAogCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLU1hbnVhbCBwYWdlIGZvciB4eGQgICAgICAgIEF1Z3VzdCAxOTk2ICAgICAgICAgICAgICAgICAgICAgICAgICA2Ci0KLQorTWFudWFsIHBhZ2UgZm9yIHh4ZCAgICAgICAgICAgICAgIEF1Z3VzdCAxOTk2ICAgICAgICAgICAgICAgICAgICAgICAgICAgWFhEKDEpCmRpZmYgLS1naXQgYS9ydW50aW1lL2ZpbGV0eXBlLnZpbSBiL3J1bnRpbWUvZmlsZXR5cGUudmltCmluZGV4IGMxMDU3OWUuLjk0NjUwMjYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZmlsZXR5cGUudmltCisrKyBiL3J1bnRpbWUvZmlsZXR5cGUudmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gc3VwcG9ydCBmaWxlIHRvIGRldGVjdCBmaWxlIHR5cGVzCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDA0IE9jdCAxNAorIiBMYXN0IENoYW5nZToJMjAwNCBOb3YgMTgKIAogIiBMaXN0ZW4gdmVyeSBjYXJlZnVsbHksIEkgd2lsbCBzYXkgdGhpcyBvbmx5IG9uY2UKIGlmIGV4aXN0cygiZGlkX2xvYWRfZmlsZXR5cGVzIikKQEAgLTEyODEsNiArMTI4MSw5IEBACiAiIHNlZAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouc2VkCQkJc2V0ZiBzZWQKIAorIiBTaWV2ZSAoUkZDIDMwMjgpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5zaXYJCQlzZXRmIHNpZXZlCisKICIgU2VuZG1haWwKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBzZW5kbWFpbC5jZgkJc2V0ZiBzbQogCmRpZmYgLS1naXQgYS9ydW50aW1lL2Z0cGx1Z2luLnZpbSBiL3J1bnRpbWUvZnRwbHVnaW4udmltCmluZGV4IDJjNjQ1NTAuLmQwODEzMjYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4udmltCisrKyBiL3J1bnRpbWUvZnRwbHVnaW4udmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gc3VwcG9ydCBmaWxlIHRvIHN3aXRjaCBvbiBsb2FkaW5nIHBsdWdpbnMgZm9yIGZpbGUgdHlwZXMKICIKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBjaGFuZ2U6CTIwMDMgTWF5IDEwCisiIExhc3QgY2hhbmdlOgkyMDA0IE5vdiAyMgogCiBpZiBleGlzdHMoImRpZF9sb2FkX2Z0cGx1Z2luIikKICAgZmluaXNoCkBAIC0xNCw3ICsxNCw3IEBACiAgICAgaWYgZXhwYW5kKCI8YW1hdGNoPiIpICE9ICIiCiAgICAgICBpZiBleGlzdHMoImI6dW5kb19mdHBsdWdpbiIpCiAJZXhlIGI6dW5kb19mdHBsdWdpbgotCXVubGV0IGI6dW5kb19mdHBsdWdpbiBiOmRpZF9mdHBsdWdpbgorCXVubGV0ISBiOnVuZG9fZnRwbHVnaW4gYjpkaWRfZnRwbHVnaW4KICAgICAgIGVuZGlmCiAgICAgICBpZiAmY3BvID1+IyAiUyIgJiYgZXhpc3RzKCJiOmRpZF9mdHBsdWdpbiIpCiAJIiBJbiBjb21wYXRpYmxlIG1vZGUgb3B0aW9ucyBhcmUgcmVzZXQgdG8gdGhlIGdsb2JhbCB2YWx1ZXMsIG5lZWQgdG8KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZnRwbHVnaW4vbGlzcC52aW0gYi9ydW50aW1lL2Z0cGx1Z2luL2xpc3AudmltCmluZGV4IDViYzI1YWYuLjk0ODI4MzMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vbGlzcC52aW0KKysrIGIvcnVudGltZS9mdHBsdWdpbi9saXNwLnZpbQpAQCAtMSw4ICsxLDEwIEBACiAiIFZpbSBmaWxldHlwZSBwbHVnaW4KICIgTGFuZ3VhZ2U6ICAgICAgTGlzcAotIiBNYWludGFpbmVyOiAgICBEb3JhaSBTaXRhcmFtIDxkczI2QGd0ZS5jb20+Ci0iIFVSTDoJCSBodHRwOi8vd3d3LmNjcy5uZXUuZWR1L35kb3JhaS92aW1wbHVnaW5zL3ZpbXBsdWdpbnMuaHRtbAotIiBMYXN0IENoYW5nZTogICBNYXkgMTUsIDIwMDMKKyIgTWFpbnRhaW5lcjogICAgU2VyZ2V5IEtob3JldiA8c2VyZ2V5Lmtob3JldkBnbWFpbC5jb20+CisiIFVSTDoJCSBodHRwOi8vaWFtcGhldC5ubS5ydS92aW0KKyIgT3JpZ2luYWwgYXV0aG9yOiAgICBEb3JhaSBTaXRhcmFtIDxkczI2QGd0ZS5jb20+CisiIE9yaWdpbmFsIFVSTDoJCSBodHRwOi8vd3d3LmNjcy5uZXUuZWR1L35kb3JhaS92aW1wbHVnaW5zL3ZpbXBsdWdpbnMuaHRtbAorIiBMYXN0IENoYW5nZTogICBOb3YgOCwgMjAwNAogCiAiIE9ubHkgZG8gdGhpcyB3aGVuIG5vdCBkb25lIHlldCBmb3IgdGhpcyBidWZmZXIKIGlmIGV4aXN0cygiYjpkaWRfZnRwbHVnaW4iKQpAQCAtMTgsMyArMjAsMTEgQEAKIHNldGwgZm9ybWF0b3B0aW9ucy09dAogc2V0bCBpc2tleXdvcmQrPSssLSwqLC8sJSw8LD0sPiw6LCQsPywhLEAtQCw5NAogc2V0bCBsaXNwCisKKyIgbWFrZSBjb21tZW50cyBiZWhhdmlvdXIgbGlrZSBpbiBjLnZpbQorIiBlLmcuIGluc2VydGlvbiBvZiA7OzsgYW5kIDs7IG9uIG5vcm1hbCAiTyIgb3IgIm8iIHdoZW4gc3RheWluZyBpbiBjb21tZW50CitzZXRsIGNvbW1lbnRzXj06Ozs7LDo7OyxzcjojXHwsbWI6XHwsZXg6XHwjCitzZXRsIGZvcm1hdG9wdGlvbnMrPWNyb3FsCisiIHdpdGggc21hcnRpbmRlbnQgIyBjYXVzZSBsZWZ0IGFsaWdubWVudAorc2V0bCBub3NtYXJ0aW5kZW50CisKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZnRwbHVnaW4vcGVybC52aW0gYi9ydW50aW1lL2Z0cGx1Z2luL3BlcmwudmltCmluZGV4IDlmNzE0YTkuLmU4YzgwMWYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vcGVybC52aW0KKysrIGIvcnVudGltZS9mdHBsdWdpbi9wZXJsLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIGZpbGV0eXBlIHBsdWdpbiBmaWxlCiAiIExhbmd1YWdlOglQZXJsCiAiIE1haW50YWluZXI6CURhbiBTaGFycCA8ZHdzaGFycCBhdCBob3RtYWlsIGRvdCBjb20+Ci0iIExhc3QgQ2hhbmdlOiAgMjAwNCBNYXkgMTYKKyIgTGFzdCBDaGFuZ2U6ICAyMDA0IERlYyAwNgogIiBVUkw6CQlodHRwOi8vbXl3ZWJwYWdlLm5ldHNjYXBlLmNvbS9zaGFycHBlb3BsZS92aW0vZnRwbHVnaW4KIAogaWYgZXhpc3RzKCJiOmRpZF9mdHBsdWdpbiIpIHwgZmluaXNoIHwgZW5kaWYKQEAgLTI3LDcgKzI3LDcgQEAKIAogIiBQcm92aWRlZCBieSBOZWQgS29ueiA8bmVkIGF0IGJpa2Utbm9tYWQgZG90IGNvbT4KICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXNldGxvY2FsIGluY2x1ZGU9XFw8XFwodXNlXHxyZXF1aXJlXFwpXFw+CitzZXRsb2NhbCBpbmNsdWRlPVxcPFxcKHVzZVxcfHJlcXVpcmVcXClcXD4KIHNldGxvY2FsIGluY2x1ZGVleHByPXN1YnN0aXR1dGUoc3Vic3RpdHV0ZSh2OmZuYW1lLCc6OicsJy8nLCdnJyksJyQnLCcucG0nLCcnKQogc2V0bG9jYWwgZGVmaW5lPVteQS1aYS16X10KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9mdHBsdWdpbi9zY2hlbWUudmltIGIvcnVudGltZS9mdHBsdWdpbi9zY2hlbWUudmltCmluZGV4IDdkMzRmNzIuLjAyMWMyM2EgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vc2NoZW1lLnZpbQorKysgYi9ydW50aW1lL2Z0cGx1Z2luL3NjaGVtZS52aW0KQEAgLTEsNyArMSwyNiBAQAogIiBWaW0gZmlsZXR5cGUgcGx1Z2luCiAiIExhbmd1YWdlOiAgICAgIFNjaGVtZQotIiBNYWludGFpbmVyOiAgICBEb3JhaSBTaXRhcmFtIDxkczI2QGd0ZS5jb20+Ci0iIFVSTDoJCSBodHRwOi8vd3d3LmNjcy5uZXUuZWR1L35kb3JhaS92aW1wbHVnaW5zL3ZpbXBsdWdpbnMuaHRtbAotIiBMYXN0IENoYW5nZTogICBBcHIgMiwgMjAwMworIiBNYWludGFpbmVyOiAgICBTZXJnZXkgS2hvcmV2IDxzZXJnZXkua2hvcmV2QGdtYWlsLmNvbT4KKyIgVVJMOgkJIGh0dHA6Ly9pYW1waGV0Lm5tLnJ1L3ZpbSAKKyIgT3JpZ2luYWwgYXV0aG9yOiAgICBEb3JhaSBTaXRhcmFtIDxkczI2QGd0ZS5jb20+CisiIE9yaWdpbmFsIFVSTDoJCSBodHRwOi8vd3d3LmNjcy5uZXUuZWR1L35kb3JhaS92aW1wbHVnaW5zL3ZpbXBsdWdpbnMuaHRtbAorIiBMYXN0IENoYW5nZTogICBOb3YgMjIsIDIwMDQKIAotcnVuIGZ0cGx1Z2luL2xpc3AudmltCitydW50aW1lISBmdHBsdWdpbi9saXNwLnZpbSBmdHBsdWdpbi9saXNwXyoudmltIGZ0cGx1Z2luL2xpc3AvKi52aW0KKworaWYgZXhpc3RzKCJiOmlzX216c2NoZW1lIikgfHwgZXhpc3RzKCJpc19tenNjaGVtZSIpCisgICAgIiBpbXByb3ZlIGluZGVudGluZworICAgIHNldGwgaXNrZXl3b3JkKz0jLCUsXgorICAgIHNldGwgbGlzcHdvcmRzKz1tb2R1bGUscGFyYW1ldGVyaXplLGxldC12YWx1ZXMsbGV0Ki12YWx1ZXMsbGV0cmVjLXZhbHVlcworICAgIHNldGwgbGlzcHdvcmRzKz1kZWZpbmUtdmFsdWVzLG9wdC1sYW1iZGEsY2FzZS1sYW1iZGEsc3ludGF4LXJ1bGVzLHdpdGgtc3ludGF4LHN5bnRheC1jYXNlCisgICAgc2V0bCBsaXNwd29yZHMrPWRlZmluZS1zaWduYXR1cmUsdW5pdCx1bml0L3NpZyxjb21wdW5kLXVuaXQvc2lnLGRlZmluZS12YWx1ZXMvaW52b2tlLXVuaXQvc2lnCitlbmRpZgorCitpZiBleGlzdHMoImI6aXNfY2hpY2tlbiIpIHx8IGV4aXN0cygiaXNfY2hpY2tlbiIpCisgICAgIiBpbXByb3ZlIGluZGVudGluZworICAgIHNldGwgaXNrZXl3b3JkKz0jLCUsXgorICAgIHNldGwgbGlzcHdvcmRzKz1sZXQtb3B0aW9uYWxzLGxldC1vcHRpb25hbHMqLGRlY2xhcmUKKyAgICBzZXRsIGxpc3B3b3Jkcys9bGV0LXZhbHVlcyxsZXQqLXZhbHVlcyxsZXRyZWMtdmFsdWVzCisgICAgc2V0bCBsaXNwd29yZHMrPWRlZmluZS12YWx1ZXMsb3B0LWxhbWJkYSxjYXNlLWxhbWJkYSxzeW50YXgtcnVsZXMsd2l0aC1zeW50YXgsc3ludGF4LWNhc2UKKyAgICBzZXRsIGxpc3B3b3Jkcys9Y29uZC1leHBhbmQsYW5kLWxldCosZm9yZWlnbi1sYW1iZGEsZm9yZWlnbi1sYW1iZGEqCitlbmRpZgpkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvR2VuZXJpY0luZGVudC52aW0gYi9ydW50aW1lL2luZGVudC9HZW5lcmljSW5kZW50LnZpbQppbmRleCAwOWFkOTI3Li44MzUyM2RmIDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9HZW5lcmljSW5kZW50LnZpbQorKysgYi9ydW50aW1lL2luZGVudC9HZW5lcmljSW5kZW50LnZpbQpAQCAtMSwzMjIgKzEsMzIyIEBACi0iIFZpbSBpbmRlbnQgZmlsZSBnZW5lcmljIHV0aWxpdHkgZnVuY3Rpb25zDQotIiBMYW5ndWFnZTogICAgKiAodmFyaW91cykNCi0iIE1haW50YWluZXI6ICBEYXZlIFNpbHZpYSA8ZHNpbHZpYUBtY2hzaS5jb20+DQotIiBEYXRlOiAgICAgICAgNi8zMC8yMDA0DQotDQotIiBTVU1NQVJZOiAgVG8gdXNlIEdlbmVyaWNJbmRlbnQsIGluZGVudC88eW91cl9maWxlbmFtZT4udmltIHdvdWxkIGhhdmUgdGhlDQotIiAgICAgICAgICAgZm9sbG93aW5nIGdlbmVyYWwgZm9ybWF0Og0KLSINCi0iICAgICAgaWYgZXhpc3RzKCJiOmRpZF9pbmRlbnQiKSB8IGZpbmlzaCB8IGVuZGlmDQotIiAgICAgIGxldCBiOmRpZF9pbmRlbnQgPSAxDQotIiAgICAgIHJ1bnRpbWUgaW5kZW50L0dlbmVyaWNJbmRlbnQudmltDQotIiAgICAgIGxldCBiOmluZGVudFN0bXRzPScnDQotIiAgICAgIGxldCBiOmRlZGVudFN0bXRzPScnDQotIiAgICAgIGxldCBiOmFsbFN0bXRzPScnDQotIiAgICAgIHNldGxvY2FsIGluZGVudGV4cHI9R2VuZXJpY0luZGVudCgpDQotIiAgICAgIHNldGxvY2FsIGluZGVudGtleXM9PHlvdXJfa2V5cz4NCi0iICAgICAgY2FsbCBHZW5lcmljSW5kZW50U3RtdHMoPHlvdXJfc3RtdHM+KQ0KLSIgICAgICBjYWxsIEdlbmVyaWNEZWRlbnRTdG10cyg8eW91cl9zdG10cz4pDQotIiAgICAgIGNhbGwgR2VuZXJpY0FsbFN0bXRzKCkNCi0iDQotIiBFTkQgU1VNTUFSWToNCi0NCi0iIE5PVEU6ICBiOmluZGVudFN0bXRzLCBiOmRlZGVudFN0bXRzLCBhbmQgYjphbGxTdG10cyBuZWVkIHRvIGJlIGluaXRpYWxpemVkDQotIiAgICAgICAgdG8gJycgYmVmb3JlIGNhbGxpbiB0aGUgZnVuY3Rpb25zIGJlY2F1c2UgJ2luZGVudC52aW0nIGV4cGxpY2l0bHkNCi0iICAgICAgICAndW5sZXQncyBiOmRpZF9pbmRlbnQuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGxpc3RzIHdpbGwgY29tcG91bmQgaWYNCi0iICAgICAgICB5b3UgY2hhbmdlIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gYnVmZmVycy4gIFRoaXMgaXMgdHJ1ZSBhcyBvZg0KLSIgICAgICAgIHZlcnNpb24gNi4zLCA2LzIzLzIwMDQuDQotIg0KLSIgTk9URTogIEJ5IGRlZmF1bHQsIEdlbmVyaWNJbmRlbnQgaXMgY2FzZSBzZW5zaXRpdmUuDQotIiAgICAgICAgbGV0IGI6Y2FzZV9pbnNlbnNpdGl2ZT0xIGlmIHlvdSB3YW50IHRvIGlnbm9yZSBjYXNlLCBlLmcuIERPUyBiYXRjaCBmaWxlcw0KLQ0KLSIgVGhlIGZ1bmN0aW9uICdHZW5lcmljSW5kZW50JyBpcyBkYXRhIGRyaXZlbiBhbmQgaGFuZGxlcyBtb3N0IGFsbCBjYXNlcyBvZg0KLSIgaW5kZW50IGNoZWNraW5nIGlmIHlvdSBmaXJzdCBzZXQgdXAgdGhlIGRhdGEuICBUbyB1c2UgdGhpcyBmdW5jdGlvbiBmb2xsb3cNCi0iIHRoZSBleGFtcGxlIGJlbG93ICh0YWtlbiBmcm9tIHRoZSBmaWxlIGluZGVudC9NdVBBRF9zb3VyY2UudmltKQ0KLSINCi0iIEJlZm9yZSB5b3Ugc3RhcnQsIHNvdXJjZSB0aGlzIGZpbGUgaW4gaW5kZW50Lzx5b3VyX3NjcmlwdD4udmltIHRvIGhhdmUgaXQNCi0iIGRlZmluZSBmdW5jdGlvbnMgZm9yIHlvdXIgdXNlLg0KLSINCi0icnVudGltZSBpbmRlbnQvR2VuZXJpY0luZGVudC52aW0NCi0iDQotIiBUaGUgZGF0YSBpcyBpbiA1IHNldHM6DQotIg0KLSIgRmlyc3QsIHNldCB0aGUgZGF0YSBzZXQgJ2luZGVudGV4cHInIHRvIEdlbmVyaWNJbmRlbnQoKS4NCi0iDQotInNldGxvY2FsIGluZGVudGV4cHI9R2VuZXJpY0luZGVudCgpDQotIg0KLSIgU2Vjb25kLCBzZXQgdGhlIGRhdGEgc2V0ICdpbmRlbnRrZXlzJyB0byB0aGUga2V5d29yZHMvZXhwcmVzc2lvbnMgdGhhdCBuZWVkDQotIiB0byBiZSBjaGVja2VkIGZvciAnaW5kZW50aW5nJyBfYXNfIHRoZXkgdHlwZWQuDQotIg0KLSJzZXRsb2NhbCBpbmRlbnRrZXlzPT1lbmRfcHJvYyw9ZWxzZSw9dGhlbiw9ZWxpZiw9ZW5kX2lmLD1lbmRfY2FzZSw9dW50aWwsPWVuZF9yZXBlYXQsPWVuZF9kb21haW4sPWVuZF9mb3IsPWVuZF93aGlsZSw9ZW5kLG8sTw0KLSINCi0iIE5PVEU6ICdvLE8nIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgc2F5cyB5b3Ugd2lzaCB0byBiZSBjYWxsZWQNCi0iIHdoZW5ldmVyIGEgbmV3bGluZSBpcyBwbGFjZWQgaW4gdGhlIGJ1ZmZlci4gIFRoaXMgYWxsb3dzIHRoZSBwcmV2aW91cyBsaW5lDQotIiB0byBiZSBjaGVja2VkIGZvciBpbmRlbnRhdGlvbiBwYXJhbWV0ZXJzLg0KLSINCi0iIFRoaXJkLCBzZXQgdGhlIGRhdGEgc2V0ICdiOmluZGVudFN0bXRzJyB0byB0aGUga2V5d29yZHMvZXhwcmVzc2lvbnMgdGhhdCwgd2hlbg0KLSIgdGhleSBhcmUgb24gYSBsaW5lICBfd2hlbl8gIHlvdSAgX3ByZXNzXyAgdGhlICBfPEVudGVyPl8gIGtleSwNCi0iIHlvdSB3aXNoIHRvIGhhdmUgdGhlIG5leHQgbGluZSBpbmRlbnRlZC4NCi0iDQotImNhbGwgR2VuZXJpY0luZGVudFN0bXRzKCdiZWdpbixpZix0aGVuLGVsc2UsZWxpZixjYXNlLHJlcGVhdCx1bnRpbCxkb21haW4sZG8nKQ0KLSINCi0iIEZvdXJ0aCwgc2V0IHRoZSBkYXRhIHNldCAnYjpkZWRlbnRTdG10cycgdG8gdGhlIGtleXdvcmRzL2V4cHJlc3Npb25zIHRoYXQsIHdoZW4NCi0iIHRoZXkgYXJlIG9uIGEgbGluZSB5b3UgYXJlIGN1cnJlbnRseSB0eXBpbmcsIHlvdSB3aXNoIHRvIGhhdmUgdGhhdCBsaW5lDQotIiAnZGVkZW50ZWQnIChoYXZpbmcgYWxyZWFkeSBiZWVuIGluZGVudGVkIGJlY2F1c2Ugb2YgdGhlIHByZXZpb3VzIGxpbmUncw0KLSIgaW5kZW50YXRpb24pLg0KLSINCi0iY2FsbCBHZW5lcmljRGVkZW50U3RtdHMoJ2VuZF9wcm9jLHRoZW4sZWxzZSxlbGlmLGVuZF9pZixlbmRfY2FzZSx1bnRpbCxlbmRfcmVwZWF0LGVuZF9kb21haW4sZW5kX2ZvcixlbmRfd2hpbGUsZW5kJykNCi0iDQotIiBGaWZ0aCwgc2V0IHRoZSBkYXRhIHNldCAnYjphbGxTdG10cycgdG8gdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHRoaXJkIGFuZA0KLSIgZm91cnRoIGRhdGEgc2V0cywgdXNlZCBmb3IgY2hlY2tpbmcgd2hlbiBtb3JlIHRoYW4gb25lIGtleXdvcmQvZXhwcmVzc2lvbg0KLSIgaXMgb24gYSBsaW5lLg0KLSINCi0iY2FsbCBHZW5lcmljQWxsU3RtdHMoKQ0KLSINCi0iIE5PVEU6ICBHZW5lcmljSW5kZW50U3RtdHMgdXNlcyB0d28gdmFyaWFibGVzOiAnYjppbmRlbnRTdG10T3BlbicgYW5kDQotIiAnYjppbmRlbnRTdG10Q2xvc2UnIHdoaWNoIGRlZmF1bHQgdG8gJ1w8JyBhbmQgJ1w+JyByZXNwZWN0aXZlbHkuICBZb3UgY2FuDQotIiBzZXQgKGxldCkgdGhlc2UgdG8gYW55IHZhbHVlIHlvdSB3aXNoIGJlZm9yZSBjYWxsaW5nIEdlbmVyaWNJbmRlbnRTdG10cyB3aXRoDQotIiB5b3VyIGxpc3QuICBTaW1pbGFybHksIEdlbmVyaWNEZWRlbnRTdG10cyB1c2VzICdiOmRlZGVudFN0bXRPcGVuJyBhbmQNCi0iICdiOmRlZGVudFN0bXRDbG9zZScuDQotIg0KLSIgTk9URTogIFBhdHRlcm5zIG1heSBiZSB1c2VkIGluIHRoZSBsaXN0cyBwYXNzZWQgdG8gR2VuZXJpY1tJbnxEZV1kZW50U3RtdHMNCi0iIHNpbmNlIGVhY2ggZWxlbWVudCBpbiB0aGUgbGlzdCBpcyBjb3BpZWQgdmVyYmF0aW0uDQotIg0KLSIgT3B0aW9uYWxseSwgeW91IGNhbiBzZXQgdGhlIERFQlVHR0lORyBmbGFnIHdpdGhpbiB5b3VyIHNjcmlwdCB0byBoYXZlIHRoZQ0KLSIgZGVidWdnaW5nIG1lc3NhZ2VzIG91dHB1dC4gIFNlZSBiZWxvdyBmb3IgZGVzY3JpcHRpb24uICBUaGlzIGNhbiBhbHNvIGJlIHNldA0KLSIgKGxldCkgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHdpdGhpbiB5b3VyIGVkaXRpbmcgYnVmZmVyLg0KLSINCi0ibGV0IGI6REVCVUdHSU5HPTENCi0iDQotIiBTZWU6DQotIiAgICAgIDpoIHJ1bnRpbWUNCi0iICAgICAgOnNldCBydW50aW1lcGF0aCA/DQotIiB0byBmYW1pbGlhcml6ZSB5b3Vyc2VsZiB3aXRoIGhvdyB0aGlzIHdvcmtzIGFuZCB3aGVyZSB5b3Ugc2hvdWxkIGhhdmUgdGhpcw0KLSIgZmlsZSBhbmQgeW91ciBmaWxlKHMpIGluc3RhbGxlZC4NCi0iDQotIiBGb3IgaGVscCB3aXRoIHNldHRpbmcgJ2luZGVudGtleXMnIHNlZToNCi0iICAgICAgOmggaW5kZW50a2V5cw0KLSIgQWxzbywgZm9yIHNvbWUgZ29vZCBleGFtcGxlcyBzZWUgJ2luZGVudC9zaC52aW0nIGFuZCAnaW5kZW50L3ZpbS52aW0nIGFzDQotIiB3ZWxsIGFzIGZpbGVzIGZvciBvdGhlciBsYW5ndWFnZXMgeW91IG1heSBiZSBmYW1pbGlhciB3aXRoLg0KLSINCi0iDQotIiBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UnZCByYXRoZXIgc3BlY2lmeSB5b3Vyc2VsZiwgeW91IGNhbiBlbnRlcg0KLSIgJ2I6aW5kZW50U3RtdHMnLCAnYjpkZWRlbnRTdG10cycsIGFuZCAnYjphbGxTdG10cycgJ2xpdGVyYWxseSc6DQotIg0KLSJsZXQgYjppbmRlbnRTdG10cz0nXDxiZWdpblw+XHxcPGlmXD5cfFw8dGhlblw+XHxcPGVsc2VcPlx8XDxlbGlmXD5cfFw8Y2FzZVw+XHxcPHJlcGVhdFw+XHxcPHVudGlsXD5cfFw8ZG9tYWluXD5cfFw8ZG9cPicNCi0ibGV0IGI6ZGVkZW50U3RtdHM9J1w8ZW5kX3Byb2NcPlx8XDxlbHNlXD5cfFw8ZWxpZlw+XHxcPGVuZF9pZlw+XHxcPGVuZF9jYXNlXD5cfFw8dW50aWxcPlx8XDxlbmRfcmVwZWF0XD5cfFw8ZW5kX2RvbWFpblw+XHxcPGVuZF9mb3JcPlx8XDxlbmRfd2hpbGVcPlx8XDxlbmRcPicNCi0ibGV0IGI6YWxsU3RtdHM9YjppbmRlbnRTdG10cy4nXHwnLmI6ZGVkZW50U3RtdHMNCi0iDQotIiBUaGlzIGlzIG9ubHkgdXNlZnVsIGlmIHlvdSBoYXZlIHBhcnRpY3VsYXJseSBkaWZmZXJlbnQgcGFyYW1ldGVycyBmb3INCi0iIG1hdGNoaW5nIGVhY2ggc3RhdGVtZW50Lg0KLQ0KLSIgUkVDQVA6ICBGcm9tIGluZGVudC9NdVBBRF9zb3VyY2UudmltDQotIg0KLSJpZiBleGlzdHMoImI6ZGlkX2luZGVudCIpIHwgZmluaXNoIHwgZW5kaWYNCi0iDQotImxldCBiOmRpZF9pbmRlbnQgPSAxDQotIg0KLSJydW50aW1lIGluZGVudC9HZW5lcmljSW5kZW50LnZpbQ0KLSINCi0ic2V0bG9jYWwgaW5kZW50ZXhwcj1HZW5lcmljSW5kZW50KCkNCi0ic2V0bG9jYWwgaW5kZW50a2V5cz09ZW5kX3Byb2MsPXRoZW4sPWVsc2UsPWVsaWYsPWVuZF9pZiw9ZW5kX2Nhc2UsPXVudGlsLD1lbmRfcmVwZWF0LD1lbmRfZG9tYWluLD1lbmRfZm9yLD1lbmRfd2hpbGUsPWVuZCxvLE8NCi0iY2FsbCBHZW5lcmljSW5kZW50U3RtdHMoJ2JlZ2luLGlmLHRoZW4sZWxzZSxlbGlmLGNhc2UscmVwZWF0LHVudGlsLGRvbWFpbixkbycpDQotImNhbGwgR2VuZXJpY0RlZGVudFN0bXRzKCdlbmRfcHJvYyx0aGVuLGVsc2UsZWxpZixlbmRfaWYsZW5kX2Nhc2UsdW50aWwsZW5kX3JlcGVhdCxlbmRfZG9tYWluLGVuZF9mb3IsZW5kX3doaWxlLGVuZCcpDQotImNhbGwgR2VuZXJpY0FsbFN0bXRzKCkNCi0iDQotIiBFTkQgUkVDQVA6DQotDQotbGV0IHM6aGl0PTANCi1sZXQgczpsYXN0VmxudW09MA0KLWxldCBzOm15U2NyaXB0TmFtZT1leHBhbmQoIjxzZmlsZT46dCIpDQotDQotaWYgZXhpc3RzKCIqR2VuZXJpY0luZGVudCIpDQotCWZpbmlzaA0KLWVuZGlmDQotDQotZnVuY3Rpb24gR2VuZXJpY0FsbFN0bXRzKCkNCi0JbGV0IGI6YWxsU3RtdHM9YjppbmRlbnRTdG10cy4nXHwnLmI6ZGVkZW50U3RtdHMNCi0JY2FsbCBEZWJ1Z0dlbmVyaWNJbmRlbnQoZXhwYW5kKCI8c2ZpbGU+IikuIjogIi4iYjppbmRlbnRTdG10czogIi5iOmluZGVudFN0bXRzLiIsIGI6ZGVkZW50U3RtdHM6ICIuYjpkZWRlbnRTdG10cy4iLCBiOmFsbFN0bXRzOiAiLmI6YWxsU3RtdHMpDQotZW5kZnVuY3Rpb24NCi0NCi1mdW5jdGlvbiBHZW5lcmljSW5kZW50U3RtdHMoc3RtdHMpDQotCWxldCBTdG10cz1hOnN0bXRzDQotCWxldCBDb21tYT1tYXRjaChTdG10cywnLCcpDQotCWlmIENvbW1hID09IC0xIHx8IENvbW1hID09IHN0cmxlbihTdG10cyktMQ0KLQkJZWNob2VyciAiTXVzdCBzdXBwbHkgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhdCBsZWFzdCAyIGVudHJpZXMuIg0KLQkJZWNob2VyciAiU3VwcGxpZWQgbGlzdDogPCIuU3RtdHMuIj4iDQotCQlyZXR1cm4NCi0JZW5kaWYNCi0NCi0JaWYgIWV4aXN0cygiYjppbmRlbnRTdG10T3BlbiIpDQotCQlsZXQgYjppbmRlbnRTdG10T3Blbj0nXDwnDQotCWVuZGlmDQotCWlmICFleGlzdHMoImI6aW5kZW50U3RtdENsb3NlIikNCi0JCWxldCBiOmluZGVudFN0bXRDbG9zZT0nXD4nDQotCWVuZGlmDQotCWlmICFleGlzdHMoImI6aW5kZW50U3RtdHMiKQ0KLQkJbGV0IGI6aW5kZW50U3RtdHM9JycNCi0JZW5kaWYNCi0JaWYgYjppbmRlbnRTdG10cyAhPSAnJw0KLQkJbGV0IGI6aW5kZW50U3RtdHM9YjppbmRlbnRTdG10cy4nXHwnDQotCWVuZGlmDQotCWNhbGwgRGVidWdHZW5lcmljSW5kZW50KGV4cGFuZCgiPHNmaWxlPiIpLiI6ICIuImI6aW5kZW50U3RtdE9wZW46ICIuYjppbmRlbnRTdG10T3Blbi4iLCBiOmluZGVudFN0bXRDbG9zZTogIi5iOmluZGVudFN0bXRDbG9zZS4iLCBiOmluZGVudFN0bXRzOiAiLmI6aW5kZW50U3RtdHMuIiwgU3RtdHM6ICIuU3RtdHMpDQotCWxldCBzdG10RW50cnlCZWdpbj0wDQotCWxldCBzdG10RW50cnlFbmQ9Q29tbWENCi0JbGV0IHN0bXRFbnRyeT1zdHJwYXJ0KFN0bXRzLHN0bXRFbnRyeUJlZ2luLHN0bXRFbnRyeUVuZC1zdG10RW50cnlCZWdpbikNCi0JbGV0IFN0bXRzPXN0cnBhcnQoU3RtdHMsQ29tbWErMSkNCi0JbGV0IENvbW1hPW1hdGNoKFN0bXRzLCcsJykNCi0JbGV0IGI6aW5kZW50U3RtdHM9YjppbmRlbnRTdG10cy5iOmluZGVudFN0bXRPcGVuLnN0bXRFbnRyeS5iOmluZGVudFN0bXRDbG9zZQ0KLQl3aGlsZSBDb21tYSAhPSAtMQ0KLQkJbGV0IHN0bXRFbnRyeUVuZD1Db21tYQ0KLQkJbGV0IHN0bXRFbnRyeT1zdHJwYXJ0KFN0bXRzLHN0bXRFbnRyeUJlZ2luLHN0bXRFbnRyeUVuZC1zdG10RW50cnlCZWdpbikNCi0JCWxldCBTdG10cz1zdHJwYXJ0KFN0bXRzLENvbW1hKzEpDQotCQlsZXQgQ29tbWE9bWF0Y2goU3RtdHMsJywnKQ0KLQkJbGV0IGI6aW5kZW50U3RtdHM9YjppbmRlbnRTdG10cy4nXHwnLmI6aW5kZW50U3RtdE9wZW4uc3RtdEVudHJ5LmI6aW5kZW50U3RtdENsb3NlDQotCWVuZHdoaWxlDQotCWxldCBzdG10RW50cnk9U3RtdHMNCi0JbGV0IGI6aW5kZW50U3RtdHM9YjppbmRlbnRTdG10cy4nXHwnLmI6aW5kZW50U3RtdE9wZW4uc3RtdEVudHJ5LmI6aW5kZW50U3RtdENsb3NlDQotZW5kZnVuY3Rpb24NCi0NCi1mdW5jdGlvbiBHZW5lcmljRGVkZW50U3RtdHMoc3RtdHMpDQotCWxldCBTdG10cz1hOnN0bXRzDQotCWxldCBDb21tYT1tYXRjaChTdG10cywnLCcpDQotCWlmIENvbW1hID09IC0xIHx8IENvbW1hID09IHN0cmxlbihTdG10cyktMQ0KLQkJZWNob2VyciAiTXVzdCBzdXBwbHkgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhdCBsZWFzdCAyIGVudHJpZXMuIg0KLQkJZWNob2VyciAiU3VwcGxpZWQgbGlzdDogPCIuU3RtdHMuIj4iDQotCQlyZXR1cm4NCi0JZW5kaWYNCi0NCi0JaWYgIWV4aXN0cygiYjpkZWRlbnRTdG10T3BlbiIpDQotCQlsZXQgYjpkZWRlbnRTdG10T3Blbj0nXDwnDQotCWVuZGlmDQotCWlmICFleGlzdHMoImI6ZGVkZW50U3RtdENsb3NlIikNCi0JCWxldCBiOmRlZGVudFN0bXRDbG9zZT0nXD4nDQotCWVuZGlmDQotCWlmICFleGlzdHMoImI6ZGVkZW50U3RtdHMiKQ0KLQkJbGV0IGI6ZGVkZW50U3RtdHM9JycNCi0JZW5kaWYNCi0JaWYgYjpkZWRlbnRTdG10cyAhPSAnJw0KLQkJbGV0IGI6ZGVkZW50U3RtdHM9YjpkZWRlbnRTdG10cy4nXHwnDQotCWVuZGlmDQotCWNhbGwgRGVidWdHZW5lcmljSW5kZW50KGV4cGFuZCgiPHNmaWxlPiIpLiI6ICIuImI6ZGVkZW50U3RtdE9wZW46ICIuYjpkZWRlbnRTdG10T3Blbi4iLCBiOmRlZGVudFN0bXRDbG9zZTogIi5iOmRlZGVudFN0bXRDbG9zZS4iLCBiOmRlZGVudFN0bXRzOiAiLmI6ZGVkZW50U3RtdHMuIiwgU3RtdHM6ICIuU3RtdHMpDQotCWxldCBzdG10RW50cnlCZWdpbj0wDQotCWxldCBzdG10RW50cnlFbmQ9Q29tbWENCi0JbGV0IHN0bXRFbnRyeT1zdHJwYXJ0KFN0bXRzLHN0bXRFbnRyeUJlZ2luLHN0bXRFbnRyeUVuZC1zdG10RW50cnlCZWdpbikNCi0JbGV0IFN0bXRzPXN0cnBhcnQoU3RtdHMsQ29tbWErMSkNCi0JbGV0IENvbW1hPW1hdGNoKFN0bXRzLCcsJykNCi0JbGV0IGI6ZGVkZW50U3RtdHM9YjpkZWRlbnRTdG10cy5iOmRlZGVudFN0bXRPcGVuLnN0bXRFbnRyeS5iOmRlZGVudFN0bXRDbG9zZQ0KLQl3aGlsZSBDb21tYSAhPSAtMQ0KLQkJbGV0IHN0bXRFbnRyeUVuZD1Db21tYQ0KLQkJbGV0IHN0bXRFbnRyeT1zdHJwYXJ0KFN0bXRzLHN0bXRFbnRyeUJlZ2luLHN0bXRFbnRyeUVuZC1zdG10RW50cnlCZWdpbikNCi0JCWxldCBTdG10cz1zdHJwYXJ0KFN0bXRzLENvbW1hKzEpDQotCQlsZXQgQ29tbWE9bWF0Y2goU3RtdHMsJywnKQ0KLQkJbGV0IGI6ZGVkZW50U3RtdHM9YjpkZWRlbnRTdG10cy4nXHwnLmI6ZGVkZW50U3RtdE9wZW4uc3RtdEVudHJ5LmI6ZGVkZW50U3RtdENsb3NlDQotCWVuZHdoaWxlDQotCWxldCBzdG10RW50cnk9U3RtdHMNCi0JbGV0IGI6ZGVkZW50U3RtdHM9YjpkZWRlbnRTdG10cy4nXHwnLmI6ZGVkZW50U3RtdE9wZW4uc3RtdEVudHJ5LmI6ZGVkZW50U3RtdENsb3NlDQotZW5kZnVuY3Rpb24NCi0NCi0iIERlYnVnZ2luZyBmdW5jdGlvbi4gIERpc3BsYXlzIG1lc3NhZ2VzIGluIHRoZSBjb21tYW5kIGFyZWEgd2hpY2ggY2FuIGJlDQotIiByZXZpZXdlZCB1c2luZyAnOm1lc3NhZ2VzJy4gIFRvIHR1cm4gaXQgb24gdXNlICc6bGV0IGI6REVCVUdHSU5HPTEnLiAgT25jZQ0KLSIgb24sIHR1cm4gb2ZmIGJ5IHVzaW5nICc6bGV0IGI6REVCVUdHSU5HPTAuICBJZiB5b3UgZG9uJ3Qgd2FudCBpdCBhdCBhbGwgYW5kDQotIiBmZWVsIGl0J3Mgc2xvd2luZyBkb3duIHlvdXIgZWRpdGluZyAoeW91IG11c3QgaGF2ZSBhbiBfYXdmdWxseV8gc2xvdw0KLSIgbWFjaGluZSE7LT4gKSwgeW91IGNhbiBqdXN0IGNvbW1lbnQgb3V0IHRoZSBjYWxscyB0byBpdCBmcm9tICdHZW5lcmljSW5kZW50Jw0KLSIgYmVsb3cuICBObyBuZWVkIHRvIHJlbW92ZSB0aGUgZnVuY3Rpb24gb3IgdGhlIGNhbGxzLCB0aG8nLCBhcyB5b3UgbmV2ZXIgY2FuDQotIiB0ZWxsIHdoZW4gdGhleSBtaWdodCBjb21lIGluIGhhbmR5ITstKQ0KLWZ1bmN0aW9uIERlYnVnR2VuZXJpY0luZGVudChtc2cpDQotICBpZiBleGlzdHMoImI6REVCVUdHSU5HIikgJiYgYjpERUJVR0dJTkcNCi0JCWVjaG9tc2cgJ1snLnM6aGl0LiddJy5zOm15U2NyaXB0TmFtZS4iOjoiLmE6bXNnDQotCWVuZGlmDQotZW5kZnVuY3Rpb24NCi0NCi1mdW5jdGlvbiBHZW5lcmljSW5kZW50KCkNCi0JIiBzYXZlIGlnbm9yZSBjYXNlIG9wdGlvbi4gIEhhdmUgdG8gc2V0IG5vaWdub3JlY2FzZSBmb3IgdGhlIG1hdGNoDQotCSIgZnVuY3Rpb25zIHRvIGRvIHRoZWlyIGpvYiB0aGUgd2F5IHdlIHdhbnQgdGhlbSB0byENCi0JIiBOT1RFOiBpZiB5b3UgYWRkIGEgcmV0dXJuIHRvIHRoaXMgZnVuY3Rpb24gYmUgc3VyZSB5b3UgZG8NCi0JIiAgICAgICAgICAgaWYgSWdub3JlQ2FzZSB8IHNldCBpZ25vcmVjYXNlIHwgZW5kaWYNCi0JIiAgICAgICBiZWZvcmUgcmV0dXJuaW5nLiAgWW91IGNhbiBqdXN0IGN1dCBhbmQgcGFzdGUgZnJvbSBoZXJlLg0KLQlsZXQgSWdub3JlQ2FzZT0maWdub3JlY2FzZQ0KLQkiIGxldCBiOmNhc2VfaW5zZW5zaXRpdmU9MSBpZiB5b3Ugd2FudCB0byBpZ25vcmUgY2FzZSwgZS5nLiBET1MgYmF0Y2ggZmlsZXMNCi0JaWYgIWV4aXN0cygiYjpjYXNlX2luc2Vuc2l0aXZlIikNCi0JCXNldCBub2lnbm9yZWNhc2UNCi0JZW5kaWYNCi0JIiB0aGlzIGlzIHVzZWQgdG8gbGV0IERlYnVnR2VuZXJpY0luZGVudCBkaXNwbGF5IHdoaWNoIGludm9jYXRpb24gb2YgdGhlDQotCSIgZnVuY3Rpb24gZ29lcyB3aXRoIHdoaWNoIG1lc3NhZ2VzLg0KLQlsZXQgczpoaXQ9czpoaXQrMQ0KLSAgbGV0IGxudW09djpsbnVtDQotCWxldCBjbGluZT1nZXRsaW5lKGxudW0pDQotCWxldCBsbnVtPXByZXZub25ibGFuayhsbnVtKQ0KLQlpZiBsbnVtPT0wIHwgaWYgSWdub3JlQ2FzZSB8IHNldCBpZ25vcmVjYXNlIHwgZW5kaWYgfCByZXR1cm4gMCB8IGVuZGlmDQotCWxldCBwbGluZT1nZXRsaW5lKGxudW0pDQotICBsZXQgbmRudD1pbmRlbnQobG51bSkNCi0JaWYgIWV4aXN0cygiYjphbGxTdG10cyIpDQotCQljYWxsIEdlbmVyaWNBbGxTdG10cygpDQotCWVuZGlmDQotDQotCWNhbGwgRGVidWdHZW5lcmljSW5kZW50KGV4cGFuZCgiPHNmaWxlPiIpLiI6ICIuImNsaW5lPTwiLmNsaW5lLiI+LCBwbGluZT08Ii5wbGluZS4iPiwgbG51bT0iLmxudW0uIiwgdjpsbnVtPSIudjpsbnVtLiIsIG5kbnQ9Ii5uZG50KQ0KLQlpZiBsbnVtPT12OmxudW0NCi0JCSIgY3VycmVudCBsaW5lLCBvbmx5IGNoZWNrIGRlZGVudA0KLQkJIg0KLQkJIiBqdXN0IGRlZGVudGVkIHRoaXMgbGluZSwgZG9uJ3QgbmVlZCB0byBkbyBpdCBhZ2Fpbi4NCi0JCSIgYW5vdGhlciBkZWRlbnRTdG10cyB3YXMgYWRkZWQgb3IgYW4gZW5kJVtfKl0gd2FzIGNvbXBsZXRlZC4NCi0JCWlmIHM6bGFzdFZsbnVtPT12OmxudW0NCi0gCQkJaWYgSWdub3JlQ2FzZSB8IHNldCBpZ25vcmVjYXNlIHwgZW5kaWYNCi0JCQlyZXR1cm4gbmRudA0KLQkJZW5kaWYNCi0JCWxldCBzOmxhc3RWbG51bT12OmxudW0NCi0JCWNhbGwgRGVidWdHZW5lcmljSW5kZW50KGV4cGFuZCgiPHNmaWxlPiIpLiI6ICIuIkNoZWNraW5nIGRlZGVudCIpDQotCQlsZXQgc3JjU3RyPWNsaW5lDQotCQlsZXQgZGVkZW50S2V5QmVnaW49bWF0Y2goc3JjU3RyLGI6ZGVkZW50U3RtdHMpDQotCQlpZiBkZWRlbnRLZXlCZWdpbiAhPSAtMQ0KLQkJCWxldCBkZWRlbnRLZXlFbmQ9bWF0Y2hlbmQoc3JjU3RyLGI6ZGVkZW50U3RtdHMpDQotCQkJbGV0IGRlZGVudEtleVN0cj1zdHJwYXJ0KHNyY1N0cixkZWRlbnRLZXlCZWdpbixkZWRlbnRLZXlFbmQtZGVkZW50S2V5QmVnaW4pDQotCQkJIm9ubHkgZGVkZW50IGlmIGl0J3MgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZQ0KLQkJCWlmIG1hdGNoKHNyY1N0ciwnXlxzKlw8Jy5kZWRlbnRLZXlTdHIuJ1w+JykgIT0gLTENCi0JCQkJY2FsbCBEZWJ1Z0dlbmVyaWNJbmRlbnQoZXhwYW5kKCI8c2ZpbGU+IikuIjogIi4iSXQncyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLCBkZWRlbnQiKQ0KLQkJCQlsZXQgbmRudD1uZG50LSZzaGlmdHdpZHRoDQotCQkJZW5kaWYNCi0JCWVuZGlmDQotCQljYWxsIERlYnVnR2VuZXJpY0luZGVudChleHBhbmQoIjxzZmlsZT4iKS4iOiAiLiJkZWRlbnQgLSByZXR1cm5pbmcgbmRudD0iLm5kbnQpDQotCWVsc2UNCi0JCSIgcHJldmlvdXMgbGluZSwgb25seSBjaGVjayBpbmRlbnQNCi0JCWNhbGwgRGVidWdHZW5lcmljSW5kZW50KGV4cGFuZCgiPHNmaWxlPiIpLiI6ICIuIkNoZWNraW5nIGluZGVudCIpDQotCQlsZXQgc3JjU3RyPXBsaW5lDQotCQlsZXQgaW5kZW50S2V5QmVnaW49bWF0Y2goc3JjU3RyLGI6aW5kZW50U3RtdHMpDQotCQlpZiBpbmRlbnRLZXlCZWdpbiAhPSAtMQ0KLQkJCSIgb25seSBpbmRlbnQgaWYgaXQncyB0aGUgbGFzdCBpbmRlbnRTdG10cyBpbiB0aGUgbGluZQ0KLQkJCWxldCBhbGxLZXlCZWdpbj1tYXRjaChzcmNTdHIsYjphbGxTdG10cykNCi0JCQlsZXQgYWxsS2V5RW5kPW1hdGNoZW5kKHNyY1N0cixiOmFsbFN0bXRzKQ0KLQkJCWxldCBhbGxLZXlTdHI9c3RycGFydChzcmNTdHIsYWxsS2V5QmVnaW4sYWxsS2V5RW5kLWFsbEtleUJlZ2luKQ0KLQkJCWxldCBzcmNTdHI9c3RycGFydChzcmNTdHIsYWxsS2V5RW5kKQ0KLQkJCWxldCBhbGxLZXlCZWdpbj1tYXRjaChzcmNTdHIsYjphbGxTdG10cykNCi0JCQlpZiBhbGxLZXlCZWdpbiAhPSAtMQ0KLQkJCQkiIG5vdCB0aGUgZW5kIG9mIHRoZSBsaW5lLCBjaGVjayB3aGF0IGlzIGFuZCBvbmx5IGluZGVudCBpZg0KLQkJCQkiIGl0J3MgYW4gaW5kZW50U3RtdHMNCi0JCQkJY2FsbCBEZWJ1Z0dlbmVyaWNJbmRlbnQoZXhwYW5kKCI8c2ZpbGU+IikuIjogIi4iTXVsdGlwbGUgd29yZHMgaW4gbGluZSwgY2hlY2tpbmcgaWYgbGFzdCBpcyBpbmRlbnQiKQ0KLQkJCQl3aGlsZSBhbGxLZXlCZWdpbiAhPSAtMQ0KLQkJCQkJbGV0IGFsbEtleUVuZD1tYXRjaGVuZChzcmNTdHIsYjphbGxTdG10cykNCi0JCQkJCWxldCBhbGxLZXlTdHI9c3RycGFydChzcmNTdHIsYWxsS2V5QmVnaW4sYWxsS2V5RW5kLWFsbEtleUJlZ2luKQ0KLQkJCQkJbGV0IHNyY1N0cj1zdHJwYXJ0KHNyY1N0cixhbGxLZXlFbmQpDQotCQkJCQlsZXQgYWxsS2V5QmVnaW49bWF0Y2goc3JjU3RyLGI6YWxsU3RtdHMpDQotCQkJCWVuZHdoaWxlDQotCQkJCWlmIG1hdGNoKGI6aW5kZW50U3RtdHMsYWxsS2V5U3RyKSAhPSAtMQ0KLQkJCQkJY2FsbCBEZWJ1Z0dlbmVyaWNJbmRlbnQoZXhwYW5kKCI8c2ZpbGU+IikuIjogIi4iTGFzdCB3b3JkIGluIGxpbmUgaXMgaW5kZW50IikNCi0JCQkJCWxldCBuZG50PW5kbnQrJnNoaWZ0d2lkdGgNCi0JCQkJZW5kaWYNCi0JCQllbHNlDQotCQkJCSIgaXQncyB0aGUgbGFzdCBpbmRlbnRTdG10cyBpbiB0aGUgbGluZSwgZ28gYWhlYWQgYW5kIGluZGVudA0KLQkJCQlsZXQgbmRudD1uZG50KyZzaGlmdHdpZHRoDQotCQkJZW5kaWYNCi0JCWVuZGlmDQotCQljYWxsIERlYnVnR2VuZXJpY0luZGVudChleHBhbmQoIjxzZmlsZT4iKS4iOiAiLiJpbmRlbnQgLSByZXR1cm5pbmcgbmRudD0iLm5kbnQpDQotCWVuZGlmDQotCWlmIElnbm9yZUNhc2UgfCBzZXQgaWdub3JlY2FzZSB8IGVuZGlmDQotCXJldHVybiBuZG50DQotZW5kZnVuY3Rpb24NCi0NCi0NCi0iIFRPRE86ICBJJ20gb3BlbiENCi0iDQotIiBCVUdTOiAgWW91IHRlbGwgbWUhICBQcm9iYWJseS4gIEkganVzdCBoYXZlbid0IGZvdW5kIG9uZSB5ZXQgb3IgaGF2ZW4ndCBiZWVuDQotIiAgICAgICAgdG9sZCBhYm91dCBvbmUuDQotIiAgICAgICAgDQorIiBWaW0gaW5kZW50IGZpbGUgZ2VuZXJpYyB1dGlsaXR5IGZ1bmN0aW9ucworIiBMYW5ndWFnZTogICAgKiAodmFyaW91cykKKyIgTWFpbnRhaW5lcjogIERhdmUgU2lsdmlhIDxkc2lsdmlhQG1jaHNpLmNvbT4KKyIgRGF0ZTogICAgICAgIDYvMzAvMjAwNAorCisiIFNVTU1BUlk6ICBUbyB1c2UgR2VuZXJpY0luZGVudCwgaW5kZW50Lzx5b3VyX2ZpbGVuYW1lPi52aW0gd291bGQgaGF2ZSB0aGUKKyIgICAgICAgICAgIGZvbGxvd2luZyBnZW5lcmFsIGZvcm1hdDoKKyIKKyIgICAgICBpZiBleGlzdHMoImI6ZGlkX2luZGVudCIpIHwgZmluaXNoIHwgZW5kaWYKKyIgICAgICBsZXQgYjpkaWRfaW5kZW50ID0gMQorIiAgICAgIHJ1bnRpbWUgaW5kZW50L0dlbmVyaWNJbmRlbnQudmltCisiICAgICAgbGV0IGI6aW5kZW50U3RtdHM9JycKKyIgICAgICBsZXQgYjpkZWRlbnRTdG10cz0nJworIiAgICAgIGxldCBiOmFsbFN0bXRzPScnCisiICAgICAgc2V0bG9jYWwgaW5kZW50ZXhwcj1HZW5lcmljSW5kZW50KCkKKyIgICAgICBzZXRsb2NhbCBpbmRlbnRrZXlzPTx5b3VyX2tleXM+CisiICAgICAgY2FsbCBHZW5lcmljSW5kZW50U3RtdHMoPHlvdXJfc3RtdHM+KQorIiAgICAgIGNhbGwgR2VuZXJpY0RlZGVudFN0bXRzKDx5b3VyX3N0bXRzPikKKyIgICAgICBjYWxsIEdlbmVyaWNBbGxTdG10cygpCisiCisiIEVORCBTVU1NQVJZOgorCisiIE5PVEU6ICBiOmluZGVudFN0bXRzLCBiOmRlZGVudFN0bXRzLCBhbmQgYjphbGxTdG10cyBuZWVkIHRvIGJlIGluaXRpYWxpemVkCisiICAgICAgICB0byAnJyBiZWZvcmUgY2FsbGluIHRoZSBmdW5jdGlvbnMgYmVjYXVzZSAnaW5kZW50LnZpbScgZXhwbGljaXRseQorIiAgICAgICAgJ3VubGV0J3MgYjpkaWRfaW5kZW50LiAgVGhpcyBtZWFucyB0aGF0IHRoZSBsaXN0cyB3aWxsIGNvbXBvdW5kIGlmCisiICAgICAgICB5b3UgY2hhbmdlIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gYnVmZmVycy4gIFRoaXMgaXMgdHJ1ZSBhcyBvZgorIiAgICAgICAgdmVyc2lvbiA2LjMsIDYvMjMvMjAwNC4KKyIKKyIgTk9URTogIEJ5IGRlZmF1bHQsIEdlbmVyaWNJbmRlbnQgaXMgY2FzZSBzZW5zaXRpdmUuCisiICAgICAgICBsZXQgYjpjYXNlX2luc2Vuc2l0aXZlPTEgaWYgeW91IHdhbnQgdG8gaWdub3JlIGNhc2UsIGUuZy4gRE9TIGJhdGNoIGZpbGVzCisKKyIgVGhlIGZ1bmN0aW9uICdHZW5lcmljSW5kZW50JyBpcyBkYXRhIGRyaXZlbiBhbmQgaGFuZGxlcyBtb3N0IGFsbCBjYXNlcyBvZgorIiBpbmRlbnQgY2hlY2tpbmcgaWYgeW91IGZpcnN0IHNldCB1cCB0aGUgZGF0YS4gIFRvIHVzZSB0aGlzIGZ1bmN0aW9uIGZvbGxvdworIiB0aGUgZXhhbXBsZSBiZWxvdyAodGFrZW4gZnJvbSB0aGUgZmlsZSBpbmRlbnQvTXVQQURfc291cmNlLnZpbSkKKyIKKyIgQmVmb3JlIHlvdSBzdGFydCwgc291cmNlIHRoaXMgZmlsZSBpbiBpbmRlbnQvPHlvdXJfc2NyaXB0Pi52aW0gdG8gaGF2ZSBpdAorIiBkZWZpbmUgZnVuY3Rpb25zIGZvciB5b3VyIHVzZS4KKyIKKyJydW50aW1lIGluZGVudC9HZW5lcmljSW5kZW50LnZpbQorIgorIiBUaGUgZGF0YSBpcyBpbiA1IHNldHM6CisiCisiIEZpcnN0LCBzZXQgdGhlIGRhdGEgc2V0ICdpbmRlbnRleHByJyB0byBHZW5lcmljSW5kZW50KCkuCisiCisic2V0bG9jYWwgaW5kZW50ZXhwcj1HZW5lcmljSW5kZW50KCkKKyIKKyIgU2Vjb25kLCBzZXQgdGhlIGRhdGEgc2V0ICdpbmRlbnRrZXlzJyB0byB0aGUga2V5d29yZHMvZXhwcmVzc2lvbnMgdGhhdCBuZWVkCisiIHRvIGJlIGNoZWNrZWQgZm9yICdpbmRlbnRpbmcnIF9hc18gdGhleSB0eXBlZC4KKyIKKyJzZXRsb2NhbCBpbmRlbnRrZXlzPT1lbmRfcHJvYyw9ZWxzZSw9dGhlbiw9ZWxpZiw9ZW5kX2lmLD1lbmRfY2FzZSw9dW50aWwsPWVuZF9yZXBlYXQsPWVuZF9kb21haW4sPWVuZF9mb3IsPWVuZF93aGlsZSw9ZW5kLG8sTworIgorIiBOT1RFOiAnbyxPJyBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lIHNheXMgeW91IHdpc2ggdG8gYmUgY2FsbGVkCisiIHdoZW5ldmVyIGEgbmV3bGluZSBpcyBwbGFjZWQgaW4gdGhlIGJ1ZmZlci4gIFRoaXMgYWxsb3dzIHRoZSBwcmV2aW91cyBsaW5lCisiIHRvIGJlIGNoZWNrZWQgZm9yIGluZGVudGF0aW9uIHBhcmFtZXRlcnMuCisiCisiIFRoaXJkLCBzZXQgdGhlIGRhdGEgc2V0ICdiOmluZGVudFN0bXRzJyB0byB0aGUga2V5d29yZHMvZXhwcmVzc2lvbnMgdGhhdCwgd2hlbgorIiB0aGV5IGFyZSBvbiBhIGxpbmUgIF93aGVuXyAgeW91ICBfcHJlc3NfICB0aGUgIF88RW50ZXI+XyAga2V5LAorIiB5b3Ugd2lzaCB0byBoYXZlIHRoZSBuZXh0IGxpbmUgaW5kZW50ZWQuCisiCisiY2FsbCBHZW5lcmljSW5kZW50U3RtdHMoJ2JlZ2luLGlmLHRoZW4sZWxzZSxlbGlmLGNhc2UscmVwZWF0LHVudGlsLGRvbWFpbixkbycpCisiCisiIEZvdXJ0aCwgc2V0IHRoZSBkYXRhIHNldCAnYjpkZWRlbnRTdG10cycgdG8gdGhlIGtleXdvcmRzL2V4cHJlc3Npb25zIHRoYXQsIHdoZW4KKyIgdGhleSBhcmUgb24gYSBsaW5lIHlvdSBhcmUgY3VycmVudGx5IHR5cGluZywgeW91IHdpc2ggdG8gaGF2ZSB0aGF0IGxpbmUKKyIgJ2RlZGVudGVkJyAoaGF2aW5nIGFscmVhZHkgYmVlbiBpbmRlbnRlZCBiZWNhdXNlIG9mIHRoZSBwcmV2aW91cyBsaW5lJ3MKKyIgaW5kZW50YXRpb24pLgorIgorImNhbGwgR2VuZXJpY0RlZGVudFN0bXRzKCdlbmRfcHJvYyx0aGVuLGVsc2UsZWxpZixlbmRfaWYsZW5kX2Nhc2UsdW50aWwsZW5kX3JlcGVhdCxlbmRfZG9tYWluLGVuZF9mb3IsZW5kX3doaWxlLGVuZCcpCisiCisiIEZpZnRoLCBzZXQgdGhlIGRhdGEgc2V0ICdiOmFsbFN0bXRzJyB0byB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgdGhpcmQgYW5kCisiIGZvdXJ0aCBkYXRhIHNldHMsIHVzZWQgZm9yIGNoZWNraW5nIHdoZW4gbW9yZSB0aGFuIG9uZSBrZXl3b3JkL2V4cHJlc3Npb24KKyIgaXMgb24gYSBsaW5lLgorIgorImNhbGwgR2VuZXJpY0FsbFN0bXRzKCkKKyIKKyIgTk9URTogIEdlbmVyaWNJbmRlbnRTdG10cyB1c2VzIHR3byB2YXJpYWJsZXM6ICdiOmluZGVudFN0bXRPcGVuJyBhbmQKKyIgJ2I6aW5kZW50U3RtdENsb3NlJyB3aGljaCBkZWZhdWx0IHRvICdcPCcgYW5kICdcPicgcmVzcGVjdGl2ZWx5LiAgWW91IGNhbgorIiBzZXQgKGxldCkgdGhlc2UgdG8gYW55IHZhbHVlIHlvdSB3aXNoIGJlZm9yZSBjYWxsaW5nIEdlbmVyaWNJbmRlbnRTdG10cyB3aXRoCisiIHlvdXIgbGlzdC4gIFNpbWlsYXJseSwgR2VuZXJpY0RlZGVudFN0bXRzIHVzZXMgJ2I6ZGVkZW50U3RtdE9wZW4nIGFuZAorIiAnYjpkZWRlbnRTdG10Q2xvc2UnLgorIgorIiBOT1RFOiAgUGF0dGVybnMgbWF5IGJlIHVzZWQgaW4gdGhlIGxpc3RzIHBhc3NlZCB0byBHZW5lcmljW0lufERlXWRlbnRTdG10cworIiBzaW5jZSBlYWNoIGVsZW1lbnQgaW4gdGhlIGxpc3QgaXMgY29waWVkIHZlcmJhdGltLgorIgorIiBPcHRpb25hbGx5LCB5b3UgY2FuIHNldCB0aGUgREVCVUdHSU5HIGZsYWcgd2l0aGluIHlvdXIgc2NyaXB0IHRvIGhhdmUgdGhlCisiIGRlYnVnZ2luZyBtZXNzYWdlcyBvdXRwdXQuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9uLiAgVGhpcyBjYW4gYWxzbyBiZSBzZXQKKyIgKGxldCkgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHdpdGhpbiB5b3VyIGVkaXRpbmcgYnVmZmVyLgorIgorImxldCBiOkRFQlVHR0lORz0xCisiCisiIFNlZToKKyIgICAgICA6aCBydW50aW1lCisiICAgICAgOnNldCBydW50aW1lcGF0aCA/CisiIHRvIGZhbWlsaWFyaXplIHlvdXJzZWxmIHdpdGggaG93IHRoaXMgd29ya3MgYW5kIHdoZXJlIHlvdSBzaG91bGQgaGF2ZSB0aGlzCisiIGZpbGUgYW5kIHlvdXIgZmlsZShzKSBpbnN0YWxsZWQuCisiCisiIEZvciBoZWxwIHdpdGggc2V0dGluZyAnaW5kZW50a2V5cycgc2VlOgorIiAgICAgIDpoIGluZGVudGtleXMKKyIgQWxzbywgZm9yIHNvbWUgZ29vZCBleGFtcGxlcyBzZWUgJ2luZGVudC9zaC52aW0nIGFuZCAnaW5kZW50L3ZpbS52aW0nIGFzCisiIHdlbGwgYXMgZmlsZXMgZm9yIG90aGVyIGxhbmd1YWdlcyB5b3UgbWF5IGJlIGZhbWlsaWFyIHdpdGguCisiCisiCisiIEFsdGVybmF0aXZlbHksIGlmIHlvdSdkIHJhdGhlciBzcGVjaWZ5IHlvdXJzZWxmLCB5b3UgY2FuIGVudGVyCisiICdiOmluZGVudFN0bXRzJywgJ2I6ZGVkZW50U3RtdHMnLCBhbmQgJ2I6YWxsU3RtdHMnICdsaXRlcmFsbHknOgorIgorImxldCBiOmluZGVudFN0bXRzPSdcPGJlZ2luXD5cfFw8aWZcPlx8XDx0aGVuXD5cfFw8ZWxzZVw+XHxcPGVsaWZcPlx8XDxjYXNlXD5cfFw8cmVwZWF0XD5cfFw8dW50aWxcPlx8XDxkb21haW5cPlx8XDxkb1w+JworImxldCBiOmRlZGVudFN0bXRzPSdcPGVuZF9wcm9jXD5cfFw8ZWxzZVw+XHxcPGVsaWZcPlx8XDxlbmRfaWZcPlx8XDxlbmRfY2FzZVw+XHxcPHVudGlsXD5cfFw8ZW5kX3JlcGVhdFw+XHxcPGVuZF9kb21haW5cPlx8XDxlbmRfZm9yXD5cfFw8ZW5kX3doaWxlXD5cfFw8ZW5kXD4nCisibGV0IGI6YWxsU3RtdHM9YjppbmRlbnRTdG10cy4nXHwnLmI6ZGVkZW50U3RtdHMKKyIKKyIgVGhpcyBpcyBvbmx5IHVzZWZ1bCBpZiB5b3UgaGF2ZSBwYXJ0aWN1bGFybHkgZGlmZmVyZW50IHBhcmFtZXRlcnMgZm9yCisiIG1hdGNoaW5nIGVhY2ggc3RhdGVtZW50LgorCisiIFJFQ0FQOiAgRnJvbSBpbmRlbnQvTXVQQURfc291cmNlLnZpbQorIgorImlmIGV4aXN0cygiYjpkaWRfaW5kZW50IikgfCBmaW5pc2ggfCBlbmRpZgorIgorImxldCBiOmRpZF9pbmRlbnQgPSAxCisiCisicnVudGltZSBpbmRlbnQvR2VuZXJpY0luZGVudC52aW0KKyIKKyJzZXRsb2NhbCBpbmRlbnRleHByPUdlbmVyaWNJbmRlbnQoKQorInNldGxvY2FsIGluZGVudGtleXM9PWVuZF9wcm9jLD10aGVuLD1lbHNlLD1lbGlmLD1lbmRfaWYsPWVuZF9jYXNlLD11bnRpbCw9ZW5kX3JlcGVhdCw9ZW5kX2RvbWFpbiw9ZW5kX2Zvciw9ZW5kX3doaWxlLD1lbmQsbyxPCisiY2FsbCBHZW5lcmljSW5kZW50U3RtdHMoJ2JlZ2luLGlmLHRoZW4sZWxzZSxlbGlmLGNhc2UscmVwZWF0LHVudGlsLGRvbWFpbixkbycpCisiY2FsbCBHZW5lcmljRGVkZW50U3RtdHMoJ2VuZF9wcm9jLHRoZW4sZWxzZSxlbGlmLGVuZF9pZixlbmRfY2FzZSx1bnRpbCxlbmRfcmVwZWF0LGVuZF9kb21haW4sZW5kX2ZvcixlbmRfd2hpbGUsZW5kJykKKyJjYWxsIEdlbmVyaWNBbGxTdG10cygpCisiCisiIEVORCBSRUNBUDoKKworbGV0IHM6aGl0PTAKK2xldCBzOmxhc3RWbG51bT0wCitsZXQgczpteVNjcmlwdE5hbWU9ZXhwYW5kKCI8c2ZpbGU+OnQiKQorCitpZiBleGlzdHMoIipHZW5lcmljSW5kZW50IikKKwlmaW5pc2gKK2VuZGlmCisKK2Z1bmN0aW9uIEdlbmVyaWNBbGxTdG10cygpCisJbGV0IGI6YWxsU3RtdHM9YjppbmRlbnRTdG10cy4nXHwnLmI6ZGVkZW50U3RtdHMKKwljYWxsIERlYnVnR2VuZXJpY0luZGVudChleHBhbmQoIjxzZmlsZT4iKS4iOiAiLiJiOmluZGVudFN0bXRzOiAiLmI6aW5kZW50U3RtdHMuIiwgYjpkZWRlbnRTdG10czogIi5iOmRlZGVudFN0bXRzLiIsIGI6YWxsU3RtdHM6ICIuYjphbGxTdG10cykKK2VuZGZ1bmN0aW9uCisKK2Z1bmN0aW9uIEdlbmVyaWNJbmRlbnRTdG10cyhzdG10cykKKwlsZXQgU3RtdHM9YTpzdG10cworCWxldCBDb21tYT1tYXRjaChTdG10cywnLCcpCisJaWYgQ29tbWEgPT0gLTEgfHwgQ29tbWEgPT0gc3RybGVuKFN0bXRzKS0xCisJCWVjaG9lcnIgIk11c3Qgc3VwcGx5IGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYXQgbGVhc3QgMiBlbnRyaWVzLiIKKwkJZWNob2VyciAiU3VwcGxpZWQgbGlzdDogPCIuU3RtdHMuIj4iCisJCXJldHVybgorCWVuZGlmCisKKwlpZiAhZXhpc3RzKCJiOmluZGVudFN0bXRPcGVuIikKKwkJbGV0IGI6aW5kZW50U3RtdE9wZW49J1w8JworCWVuZGlmCisJaWYgIWV4aXN0cygiYjppbmRlbnRTdG10Q2xvc2UiKQorCQlsZXQgYjppbmRlbnRTdG10Q2xvc2U9J1w+JworCWVuZGlmCisJaWYgIWV4aXN0cygiYjppbmRlbnRTdG10cyIpCisJCWxldCBiOmluZGVudFN0bXRzPScnCisJZW5kaWYKKwlpZiBiOmluZGVudFN0bXRzICE9ICcnCisJCWxldCBiOmluZGVudFN0bXRzPWI6aW5kZW50U3RtdHMuJ1x8JworCWVuZGlmCisJY2FsbCBEZWJ1Z0dlbmVyaWNJbmRlbnQoZXhwYW5kKCI8c2ZpbGU+IikuIjogIi4iYjppbmRlbnRTdG10T3BlbjogIi5iOmluZGVudFN0bXRPcGVuLiIsIGI6aW5kZW50U3RtdENsb3NlOiAiLmI6aW5kZW50U3RtdENsb3NlLiIsIGI6aW5kZW50U3RtdHM6ICIuYjppbmRlbnRTdG10cy4iLCBTdG10czogIi5TdG10cykKKwlsZXQgc3RtdEVudHJ5QmVnaW49MAorCWxldCBzdG10RW50cnlFbmQ9Q29tbWEKKwlsZXQgc3RtdEVudHJ5PXN0cnBhcnQoU3RtdHMsc3RtdEVudHJ5QmVnaW4sc3RtdEVudHJ5RW5kLXN0bXRFbnRyeUJlZ2luKQorCWxldCBTdG10cz1zdHJwYXJ0KFN0bXRzLENvbW1hKzEpCisJbGV0IENvbW1hPW1hdGNoKFN0bXRzLCcsJykKKwlsZXQgYjppbmRlbnRTdG10cz1iOmluZGVudFN0bXRzLmI6aW5kZW50U3RtdE9wZW4uc3RtdEVudHJ5LmI6aW5kZW50U3RtdENsb3NlCisJd2hpbGUgQ29tbWEgIT0gLTEKKwkJbGV0IHN0bXRFbnRyeUVuZD1Db21tYQorCQlsZXQgc3RtdEVudHJ5PXN0cnBhcnQoU3RtdHMsc3RtdEVudHJ5QmVnaW4sc3RtdEVudHJ5RW5kLXN0bXRFbnRyeUJlZ2luKQorCQlsZXQgU3RtdHM9c3RycGFydChTdG10cyxDb21tYSsxKQorCQlsZXQgQ29tbWE9bWF0Y2goU3RtdHMsJywnKQorCQlsZXQgYjppbmRlbnRTdG10cz1iOmluZGVudFN0bXRzLidcfCcuYjppbmRlbnRTdG10T3Blbi5zdG10RW50cnkuYjppbmRlbnRTdG10Q2xvc2UKKwllbmR3aGlsZQorCWxldCBzdG10RW50cnk9U3RtdHMKKwlsZXQgYjppbmRlbnRTdG10cz1iOmluZGVudFN0bXRzLidcfCcuYjppbmRlbnRTdG10T3Blbi5zdG10RW50cnkuYjppbmRlbnRTdG10Q2xvc2UKK2VuZGZ1bmN0aW9uCisKK2Z1bmN0aW9uIEdlbmVyaWNEZWRlbnRTdG10cyhzdG10cykKKwlsZXQgU3RtdHM9YTpzdG10cworCWxldCBDb21tYT1tYXRjaChTdG10cywnLCcpCisJaWYgQ29tbWEgPT0gLTEgfHwgQ29tbWEgPT0gc3RybGVuKFN0bXRzKS0xCisJCWVjaG9lcnIgIk11c3Qgc3VwcGx5IGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYXQgbGVhc3QgMiBlbnRyaWVzLiIKKwkJZWNob2VyciAiU3VwcGxpZWQgbGlzdDogPCIuU3RtdHMuIj4iCisJCXJldHVybgorCWVuZGlmCisKKwlpZiAhZXhpc3RzKCJiOmRlZGVudFN0bXRPcGVuIikKKwkJbGV0IGI6ZGVkZW50U3RtdE9wZW49J1w8JworCWVuZGlmCisJaWYgIWV4aXN0cygiYjpkZWRlbnRTdG10Q2xvc2UiKQorCQlsZXQgYjpkZWRlbnRTdG10Q2xvc2U9J1w+JworCWVuZGlmCisJaWYgIWV4aXN0cygiYjpkZWRlbnRTdG10cyIpCisJCWxldCBiOmRlZGVudFN0bXRzPScnCisJZW5kaWYKKwlpZiBiOmRlZGVudFN0bXRzICE9ICcnCisJCWxldCBiOmRlZGVudFN0bXRzPWI6ZGVkZW50U3RtdHMuJ1x8JworCWVuZGlmCisJY2FsbCBEZWJ1Z0dlbmVyaWNJbmRlbnQoZXhwYW5kKCI8c2ZpbGU+IikuIjogIi4iYjpkZWRlbnRTdG10T3BlbjogIi5iOmRlZGVudFN0bXRPcGVuLiIsIGI6ZGVkZW50U3RtdENsb3NlOiAiLmI6ZGVkZW50U3RtdENsb3NlLiIsIGI6ZGVkZW50U3RtdHM6ICIuYjpkZWRlbnRTdG10cy4iLCBTdG10czogIi5TdG10cykKKwlsZXQgc3RtdEVudHJ5QmVnaW49MAorCWxldCBzdG10RW50cnlFbmQ9Q29tbWEKKwlsZXQgc3RtdEVudHJ5PXN0cnBhcnQoU3RtdHMsc3RtdEVudHJ5QmVnaW4sc3RtdEVudHJ5RW5kLXN0bXRFbnRyeUJlZ2luKQorCWxldCBTdG10cz1zdHJwYXJ0KFN0bXRzLENvbW1hKzEpCisJbGV0IENvbW1hPW1hdGNoKFN0bXRzLCcsJykKKwlsZXQgYjpkZWRlbnRTdG10cz1iOmRlZGVudFN0bXRzLmI6ZGVkZW50U3RtdE9wZW4uc3RtdEVudHJ5LmI6ZGVkZW50U3RtdENsb3NlCisJd2hpbGUgQ29tbWEgIT0gLTEKKwkJbGV0IHN0bXRFbnRyeUVuZD1Db21tYQorCQlsZXQgc3RtdEVudHJ5PXN0cnBhcnQoU3RtdHMsc3RtdEVudHJ5QmVnaW4sc3RtdEVudHJ5RW5kLXN0bXRFbnRyeUJlZ2luKQorCQlsZXQgU3RtdHM9c3RycGFydChTdG10cyxDb21tYSsxKQorCQlsZXQgQ29tbWE9bWF0Y2goU3RtdHMsJywnKQorCQlsZXQgYjpkZWRlbnRTdG10cz1iOmRlZGVudFN0bXRzLidcfCcuYjpkZWRlbnRTdG10T3Blbi5zdG10RW50cnkuYjpkZWRlbnRTdG10Q2xvc2UKKwllbmR3aGlsZQorCWxldCBzdG10RW50cnk9U3RtdHMKKwlsZXQgYjpkZWRlbnRTdG10cz1iOmRlZGVudFN0bXRzLidcfCcuYjpkZWRlbnRTdG10T3Blbi5zdG10RW50cnkuYjpkZWRlbnRTdG10Q2xvc2UKK2VuZGZ1bmN0aW9uCisKKyIgRGVidWdnaW5nIGZ1bmN0aW9uLiAgRGlzcGxheXMgbWVzc2FnZXMgaW4gdGhlIGNvbW1hbmQgYXJlYSB3aGljaCBjYW4gYmUKKyIgcmV2aWV3ZWQgdXNpbmcgJzptZXNzYWdlcycuICBUbyB0dXJuIGl0IG9uIHVzZSAnOmxldCBiOkRFQlVHR0lORz0xJy4gIE9uY2UKKyIgb24sIHR1cm4gb2ZmIGJ5IHVzaW5nICc6bGV0IGI6REVCVUdHSU5HPTAuICBJZiB5b3UgZG9uJ3Qgd2FudCBpdCBhdCBhbGwgYW5kCisiIGZlZWwgaXQncyBzbG93aW5nIGRvd24geW91ciBlZGl0aW5nICh5b3UgbXVzdCBoYXZlIGFuIF9hd2Z1bGx5XyBzbG93CisiIG1hY2hpbmUhOy0+ICksIHlvdSBjYW4ganVzdCBjb21tZW50IG91dCB0aGUgY2FsbHMgdG8gaXQgZnJvbSAnR2VuZXJpY0luZGVudCcKKyIgYmVsb3cuICBObyBuZWVkIHRvIHJlbW92ZSB0aGUgZnVuY3Rpb24gb3IgdGhlIGNhbGxzLCB0aG8nLCBhcyB5b3UgbmV2ZXIgY2FuCisiIHRlbGwgd2hlbiB0aGV5IG1pZ2h0IGNvbWUgaW4gaGFuZHkhOy0pCitmdW5jdGlvbiBEZWJ1Z0dlbmVyaWNJbmRlbnQobXNnKQorICBpZiBleGlzdHMoImI6REVCVUdHSU5HIikgJiYgYjpERUJVR0dJTkcKKwkJZWNob21zZyAnWycuczpoaXQuJ10nLnM6bXlTY3JpcHROYW1lLiI6OiIuYTptc2cKKwllbmRpZgorZW5kZnVuY3Rpb24KKworZnVuY3Rpb24gR2VuZXJpY0luZGVudCgpCisJIiBzYXZlIGlnbm9yZSBjYXNlIG9wdGlvbi4gIEhhdmUgdG8gc2V0IG5vaWdub3JlY2FzZSBmb3IgdGhlIG1hdGNoCisJIiBmdW5jdGlvbnMgdG8gZG8gdGhlaXIgam9iIHRoZSB3YXkgd2Ugd2FudCB0aGVtIHRvIQorCSIgTk9URTogaWYgeW91IGFkZCBhIHJldHVybiB0byB0aGlzIGZ1bmN0aW9uIGJlIHN1cmUgeW91IGRvCisJIiAgICAgICAgICAgaWYgSWdub3JlQ2FzZSB8IHNldCBpZ25vcmVjYXNlIHwgZW5kaWYKKwkiICAgICAgIGJlZm9yZSByZXR1cm5pbmcuICBZb3UgY2FuIGp1c3QgY3V0IGFuZCBwYXN0ZSBmcm9tIGhlcmUuCisJbGV0IElnbm9yZUNhc2U9Jmlnbm9yZWNhc2UKKwkiIGxldCBiOmNhc2VfaW5zZW5zaXRpdmU9MSBpZiB5b3Ugd2FudCB0byBpZ25vcmUgY2FzZSwgZS5nLiBET1MgYmF0Y2ggZmlsZXMKKwlpZiAhZXhpc3RzKCJiOmNhc2VfaW5zZW5zaXRpdmUiKQorCQlzZXQgbm9pZ25vcmVjYXNlCisJZW5kaWYKKwkiIHRoaXMgaXMgdXNlZCB0byBsZXQgRGVidWdHZW5lcmljSW5kZW50IGRpc3BsYXkgd2hpY2ggaW52b2NhdGlvbiBvZiB0aGUKKwkiIGZ1bmN0aW9uIGdvZXMgd2l0aCB3aGljaCBtZXNzYWdlcy4KKwlsZXQgczpoaXQ9czpoaXQrMQorICBsZXQgbG51bT12OmxudW0KKwlsZXQgY2xpbmU9Z2V0bGluZShsbnVtKQorCWxldCBsbnVtPXByZXZub25ibGFuayhsbnVtKQorCWlmIGxudW09PTAgfCBpZiBJZ25vcmVDYXNlIHwgc2V0IGlnbm9yZWNhc2UgfCBlbmRpZiB8IHJldHVybiAwIHwgZW5kaWYKKwlsZXQgcGxpbmU9Z2V0bGluZShsbnVtKQorICBsZXQgbmRudD1pbmRlbnQobG51bSkKKwlpZiAhZXhpc3RzKCJiOmFsbFN0bXRzIikKKwkJY2FsbCBHZW5lcmljQWxsU3RtdHMoKQorCWVuZGlmCisKKwljYWxsIERlYnVnR2VuZXJpY0luZGVudChleHBhbmQoIjxzZmlsZT4iKS4iOiAiLiJjbGluZT08Ii5jbGluZS4iPiwgcGxpbmU9PCIucGxpbmUuIj4sIGxudW09Ii5sbnVtLiIsIHY6bG51bT0iLnY6bG51bS4iLCBuZG50PSIubmRudCkKKwlpZiBsbnVtPT12OmxudW0KKwkJIiBjdXJyZW50IGxpbmUsIG9ubHkgY2hlY2sgZGVkZW50CisJCSIKKwkJIiBqdXN0IGRlZGVudGVkIHRoaXMgbGluZSwgZG9uJ3QgbmVlZCB0byBkbyBpdCBhZ2Fpbi4KKwkJIiBhbm90aGVyIGRlZGVudFN0bXRzIHdhcyBhZGRlZCBvciBhbiBlbmQlW18qXSB3YXMgY29tcGxldGVkLgorCQlpZiBzOmxhc3RWbG51bT09djpsbnVtCisgCQkJaWYgSWdub3JlQ2FzZSB8IHNldCBpZ25vcmVjYXNlIHwgZW5kaWYKKwkJCXJldHVybiBuZG50CisJCWVuZGlmCisJCWxldCBzOmxhc3RWbG51bT12OmxudW0KKwkJY2FsbCBEZWJ1Z0dlbmVyaWNJbmRlbnQoZXhwYW5kKCI8c2ZpbGU+IikuIjogIi4iQ2hlY2tpbmcgZGVkZW50IikKKwkJbGV0IHNyY1N0cj1jbGluZQorCQlsZXQgZGVkZW50S2V5QmVnaW49bWF0Y2goc3JjU3RyLGI6ZGVkZW50U3RtdHMpCisJCWlmIGRlZGVudEtleUJlZ2luICE9IC0xCisJCQlsZXQgZGVkZW50S2V5RW5kPW1hdGNoZW5kKHNyY1N0cixiOmRlZGVudFN0bXRzKQorCQkJbGV0IGRlZGVudEtleVN0cj1zdHJwYXJ0KHNyY1N0cixkZWRlbnRLZXlCZWdpbixkZWRlbnRLZXlFbmQtZGVkZW50S2V5QmVnaW4pCisJCQkib25seSBkZWRlbnQgaWYgaXQncyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lCisJCQlpZiBtYXRjaChzcmNTdHIsJ15ccypcPCcuZGVkZW50S2V5U3RyLidcPicpICE9IC0xCisJCQkJY2FsbCBEZWJ1Z0dlbmVyaWNJbmRlbnQoZXhwYW5kKCI8c2ZpbGU+IikuIjogIi4iSXQncyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLCBkZWRlbnQiKQorCQkJCWxldCBuZG50PW5kbnQtJnNoaWZ0d2lkdGgKKwkJCWVuZGlmCisJCWVuZGlmCisJCWNhbGwgRGVidWdHZW5lcmljSW5kZW50KGV4cGFuZCgiPHNmaWxlPiIpLiI6ICIuImRlZGVudCAtIHJldHVybmluZyBuZG50PSIubmRudCkKKwllbHNlCisJCSIgcHJldmlvdXMgbGluZSwgb25seSBjaGVjayBpbmRlbnQKKwkJY2FsbCBEZWJ1Z0dlbmVyaWNJbmRlbnQoZXhwYW5kKCI8c2ZpbGU+IikuIjogIi4iQ2hlY2tpbmcgaW5kZW50IikKKwkJbGV0IHNyY1N0cj1wbGluZQorCQlsZXQgaW5kZW50S2V5QmVnaW49bWF0Y2goc3JjU3RyLGI6aW5kZW50U3RtdHMpCisJCWlmIGluZGVudEtleUJlZ2luICE9IC0xCisJCQkiIG9ubHkgaW5kZW50IGlmIGl0J3MgdGhlIGxhc3QgaW5kZW50U3RtdHMgaW4gdGhlIGxpbmUKKwkJCWxldCBhbGxLZXlCZWdpbj1tYXRjaChzcmNTdHIsYjphbGxTdG10cykKKwkJCWxldCBhbGxLZXlFbmQ9bWF0Y2hlbmQoc3JjU3RyLGI6YWxsU3RtdHMpCisJCQlsZXQgYWxsS2V5U3RyPXN0cnBhcnQoc3JjU3RyLGFsbEtleUJlZ2luLGFsbEtleUVuZC1hbGxLZXlCZWdpbikKKwkJCWxldCBzcmNTdHI9c3RycGFydChzcmNTdHIsYWxsS2V5RW5kKQorCQkJbGV0IGFsbEtleUJlZ2luPW1hdGNoKHNyY1N0cixiOmFsbFN0bXRzKQorCQkJaWYgYWxsS2V5QmVnaW4gIT0gLTEKKwkJCQkiIG5vdCB0aGUgZW5kIG9mIHRoZSBsaW5lLCBjaGVjayB3aGF0IGlzIGFuZCBvbmx5IGluZGVudCBpZgorCQkJCSIgaXQncyBhbiBpbmRlbnRTdG10cworCQkJCWNhbGwgRGVidWdHZW5lcmljSW5kZW50KGV4cGFuZCgiPHNmaWxlPiIpLiI6ICIuIk11bHRpcGxlIHdvcmRzIGluIGxpbmUsIGNoZWNraW5nIGlmIGxhc3QgaXMgaW5kZW50IikKKwkJCQl3aGlsZSBhbGxLZXlCZWdpbiAhPSAtMQorCQkJCQlsZXQgYWxsS2V5RW5kPW1hdGNoZW5kKHNyY1N0cixiOmFsbFN0bXRzKQorCQkJCQlsZXQgYWxsS2V5U3RyPXN0cnBhcnQoc3JjU3RyLGFsbEtleUJlZ2luLGFsbEtleUVuZC1hbGxLZXlCZWdpbikKKwkJCQkJbGV0IHNyY1N0cj1zdHJwYXJ0KHNyY1N0cixhbGxLZXlFbmQpCisJCQkJCWxldCBhbGxLZXlCZWdpbj1tYXRjaChzcmNTdHIsYjphbGxTdG10cykKKwkJCQllbmR3aGlsZQorCQkJCWlmIG1hdGNoKGI6aW5kZW50U3RtdHMsYWxsS2V5U3RyKSAhPSAtMQorCQkJCQljYWxsIERlYnVnR2VuZXJpY0luZGVudChleHBhbmQoIjxzZmlsZT4iKS4iOiAiLiJMYXN0IHdvcmQgaW4gbGluZSBpcyBpbmRlbnQiKQorCQkJCQlsZXQgbmRudD1uZG50KyZzaGlmdHdpZHRoCisJCQkJZW5kaWYKKwkJCWVsc2UKKwkJCQkiIGl0J3MgdGhlIGxhc3QgaW5kZW50U3RtdHMgaW4gdGhlIGxpbmUsIGdvIGFoZWFkIGFuZCBpbmRlbnQKKwkJCQlsZXQgbmRudD1uZG50KyZzaGlmdHdpZHRoCisJCQllbmRpZgorCQllbmRpZgorCQljYWxsIERlYnVnR2VuZXJpY0luZGVudChleHBhbmQoIjxzZmlsZT4iKS4iOiAiLiJpbmRlbnQgLSByZXR1cm5pbmcgbmRudD0iLm5kbnQpCisJZW5kaWYKKwlpZiBJZ25vcmVDYXNlIHwgc2V0IGlnbm9yZWNhc2UgfCBlbmRpZgorCXJldHVybiBuZG50CitlbmRmdW5jdGlvbgorCisKKyIgVE9ETzogIEknbSBvcGVuIQorIgorIiBCVUdTOiAgWW91IHRlbGwgbWUhICBQcm9iYWJseS4gIEkganVzdCBoYXZlbid0IGZvdW5kIG9uZSB5ZXQgb3IgaGF2ZW4ndCBiZWVuCisiICAgICAgICB0b2xkIGFib3V0IG9uZS4KKyIgICAgICAgIApkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvYWRhLnZpbSBiL3J1bnRpbWUvaW5kZW50L2FkYS52aW0KaW5kZXggNzJlMmU4MC4uOTYwMTE4MSAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvYWRhLnZpbQorKysgYi9ydW50aW1lL2luZGVudC9hZGEudmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gaW5kZW50IGZpbGUKICIgTGFuZ3VhZ2U6CUFkYQogIiBNYWludGFpbmVyOglOZWlsIEJpcmQgPG5laWxAZm54d2ViLmNvbT4KLSIgTGFzdCBDaGFuZ2U6CTIwMDMgTWF5IDIwCisiIExhc3QgQ2hhbmdlOgkyMDA0IE5vdiAyMwogIiBWZXJzaW9uOgkkSWQkCiAiIExvb2sgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBhdCBodHRwOi8vdmltLnNvdXJjZWZvcmdlLm5ldC8KICIKQEAgLTI1LDExICsyNSwxMSBAQAogICAgZmluaXNoCiBlbmRpZgogCi1sZXQgczpBZGFCbG9ja1N0YXJ0ID0gJ15ccypcKGlmXD5cfHdoaWxlXD5cfGVsc2VcPlx8ZWxzaWZcPlx8bG9vcFw+XHxmb3JcPi4qXDxsb29wXD5cfGRlY2xhcmVcPlx8YmVnaW5cPlx8dHlwZVw+LipcPGlzXHMqJFx8XCh0eXBlXD4uKlwpXD1cPHJlY29yZFw+XHxwcm9jZWR1cmVcPlx8ZnVuY3Rpb25cPlx8YWNjZXB0XD5cfGRvXD5cfHRhc2tcPlx8cGFja2FnZVw+XHx0aGVuXD5cfHdoZW5cPlx8aXNcPlwpJworbGV0IHM6QWRhQmxvY2tTdGFydCA9ICdeXHMqXChpZlw+XHx3aGlsZVw+XHxlbHNlXD5cfGVsc2lmXD5cfGxvb3BcPlx8Zm9yXD4uKlw8XChsb29wXHx1c2VcKVw+XHxkZWNsYXJlXD5cfGJlZ2luXD5cfHR5cGVcPi4qXDxpc1w+W147XSokXHxcKHR5cGVcPi4qXClcPVw8cmVjb3JkXD5cfHByb2NlZHVyZVw+XHxmdW5jdGlvblw+XHxhY2NlcHRcPlx8ZG9cPlx8dGFza1w+XHxwYWNrYWdlXD5cfHRoZW5cPlx8d2hlblw+XHxpc1w+XCknCiBsZXQgczpBZGFDb21tZW50ID0gIlxcdl4oXCJbXlwiXSpcInwnLid8W15cIiddKXstfVxcenNcXHMqLS0uKiIKIAogCi0iIFRyeSB0byBmaW5kIGluZGVudCBvZiB0aGUgYmxvY2sgd2UncmUgaW4gKGFuZCBhYm91dCB0byBjb21wbGV0ZSkKKyIgVHJ5IHRvIGZpbmQgaW5kZW50IG9mIHRoZSBibG9jayB3ZSdyZSBpbgogIiBwcmV2X2luZGVudCA9IHRoZSBwcmV2aW91cyBsaW5lJ3MgaW5kZW50CiAiIHByZXZfbG51bSAgID0gcHJldmlvdXMgbGluZSAodG8gc3RhcnQgbG9va2luZyBvbikKICIgYmxvY2tzdGFydCAgPSBleHByLiB0aGF0IGluZGljYXRlcyBhIHBvc3NpYmxlIHN0YXJ0IG9mIHRoaXMgYmxvY2sKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgIGxldCBsaW5lID0gc3Vic3RpdHV0ZSggZ2V0bGluZShsbnVtKSwgczpBZGFDb21tZW50LCAnJywgJycgKQogICAgd2hpbGUgbG51bSA+IDEKICAgICAgIGlmIGE6c3RvcF9hdCAhPSAnJyAgJiYgIGxpbmUgPX4gJ15ccyonIC4gYTpzdG9wX2F0ICAmJiAgaW5kZW50KGxudW0pIDwgYTpwcmV2X2luZGVudAotICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgICByZXR1cm4gYTpwcmV2X2luZGVudAogICAgICAgZWxzZWlmIGxpbmUgPX4gJ15ccyonIC4gYTpibG9ja3N0YXJ0CiAgICAgICAgICBsZXQgaW5kID0gaW5kZW50KGxudW0pCiAgICAgICAgICBpZiBpbmQgPCBhOnByZXZfaW5kZW50CkBAIC0xMTEsNyArMTExLDcgQEAKICAgIHJldHVybiBhOnByZXZfaW5kZW50IC0gJnN3CiBlbmRmdW5jdGlvbgogCi0iIEFzIHBlciBNYWluQmxvY2tJbmRlbnQsIGJ1dCByZXR1cm4gaW5kZW50IG9mIHByZXZpb3VzIHN0YXRlbWVudC1zdGFydAorIiBSZXR1cm4gaW5kZW50IG9mIHByZXZpb3VzIHN0YXRlbWVudC1zdGFydAogIiAoYWZ0ZXIgd2UndmUgaW5kZW50ZWQgZHVlIHRvIG11bHRpLWxpbmUgc3RhdGVtZW50cykuCiAiIFRoaXMgdGltZSwgd2Ugc3RhcnQgc2VhcmNoaW5nIG9uIHRoZSBsaW5lICpiZWZvcmUqIHRoZSBvbmUgZ2l2ZW4gKHdoaWNoIGlzCiAiIHRoZSBlbmQgb2YgYSBzdGF0ZW1lbnQgLSB3ZSB3YW50IHRoZSBwcmV2aW91cyBiZWdpbm5pbmcpLgpAQCAtMTY5LDYgKzE2OSw3IEBACiAKICAgICIgR2V0IGRlZmF1bHQgaW5kZW50IChmcm9tIHByZXYuIGxpbmUpCiAgICBsZXQgaW5kID0gaW5kZW50KGxudW0pCisgICBsZXQgaW5pdGluZCA9IGluZAogCiAgICAiIE5vdyBjaGVjayB3aGF0J3Mgb24gdGhlIHByZXZpb3VzIGxpbmUKICAgIGlmIGxpbmUgPX4gczpBZGFCbG9ja1N0YXJ0ICB8fCAgbGluZSA9fiAnKFxzKiQnCkBAIC0yMTAsNyArMjExLDcgQEAKICAgICAgICIgTXVsdGlwbGUgbGluZSBnZW5lcmljIGluc3RhbnRpYXRpb24gKCdwYWNrYWdlIGJsYWggaXNcbm5ldyB0aGluZ3knKQogICAgICAgbGV0IGluZCA9IHM6U3RhdGVtZW50SW5kZW50KCBpbmQgLSAmc3csIGxudW0gKQogICAgZWxzZWlmIGxpbmUgPX4gJztccyokJwotICAgICAgIiBTdGF0ZW1lbnQgZW5kIC0gdHJ5IHRvIGZpbmQgY3VycmVudCBzdGF0ZW1lbnQtc3RhcnQgaW5kZW50CisgICAgICAiIFN0YXRlbWVudCBlbmQgKGJ1dCBub3QgJ2VuZCcgKSAtIHRyeSB0byBmaW5kIGN1cnJlbnQgc3RhdGVtZW50LXN0YXJ0IGluZGVudAogICAgICAgbGV0IGluZCA9IHM6U3RhdGVtZW50SW5kZW50KCBpbmQsIGxudW0gKQogICAgZW5kaWYKIApAQCAtMjI0LDExICsyMjUsMTQgQEAKICAgICAgICIgU3RhcnQgb2YgbGluZSBmb3IgYWRhLXBwCiAgICAgICBsZXQgaW5kID0gMAogICAgZWxzZWlmIGNvbnRpbnVhdGlvbiAmJiBsaW5lID1+ICdeXHMqKCcKLSAgICAgIGxldCBpbmQgPSBpbmQgKyAmc3cKKyAgICAgICIgRG9uJ3QgZG8gdGhpcyBpZiB3ZSd2ZSBhbHJlYWR5IGluZGVudGVkIGR1ZSB0byB0aGUgcHJldmlvdXMgbGluZQorICAgICAgaWYgaW5kID09IGluaXRpbmQKKyAgICAgICAgIGxldCBpbmQgPSBpbmQgKyAmc3cKKyAgICAgIGVuZGlmCiAgICBlbHNlaWYgbGluZSA9fiAnXlxzKlwoYmVnaW5cfGlzXClcPicKICAgICAgIGxldCBpbmQgPSBzOk1haW5CbG9ja0luZGVudCggaW5kLCBsbnVtLCAnXChwcm9jZWR1cmVcfGZ1bmN0aW9uXHxkZWNsYXJlXHxwYWNrYWdlXHx0YXNrXClcPicsICdiZWdpblw+JyApCiAgICBlbHNlaWYgbGluZSA9fiAnXlxzKnJlY29yZFw+JwotICAgICAgbGV0IGluZCA9IHM6TWFpbkJsb2NrSW5kZW50KCBpbmQsIGxudW0sICd0eXBlXD4nLCAnJyApICsgJnN3CisgICAgICBsZXQgaW5kID0gczpNYWluQmxvY2tJbmRlbnQoIGluZCwgbG51bSwgJ3R5cGVcPlx8Zm9yXD4uKlw8dXNlXD4nLCAnJyApICsgJnN3CiAgICBlbHNlaWYgbGluZSA9fiAnXlxzKlwoZWxzZVx8ZWxzaWZcKVw+JwogICAgICAgbGV0IGluZCA9IHM6TWFpbkJsb2NrSW5kZW50KCBpbmQsIGxudW0sICdpZlw+JywgJycgKQogICAgZWxzZWlmIGxpbmUgPX4gJ15ccyp3aGVuXD4nCkBAIC0yNTEsNyArMjU1LDcgQEAKICAgICAgIGxldCBpbmQgPSBzOkVuZEJsb2NrSW5kZW50KCBpbmQsIGxudW0sICdjYXNlXD4uKlw8aXNcPicsICdlbmRcPlxzKlw8Y2FzZVw+JyApCiAgICBlbHNlaWYgbGluZSA9fiAnXlxzKmVuZFw+JwogICAgICAgIiBHZW5lcmFsIGNhc2UgZm9yIGVuZAotICAgICAgbGV0IGluZCA9IHM6TWFpbkJsb2NrSW5kZW50KCBpbmQsIGxudW0sICdcKGlmXHx3aGlsZVx8Zm9yXHxsb29wXHxhY2NlcHRcfGJlZ2luXHxyZWNvcmRcfGNhc2VcfGV4Y2VwdGlvblwpXD4nLCAnJyApCisgICAgICBsZXQgaW5kID0gczpNYWluQmxvY2tJbmRlbnQoIGluZCwgbG51bSwgJ1woaWZcfHdoaWxlXHxmb3JcfGxvb3BcfGFjY2VwdFx8YmVnaW5cfHJlY29yZFx8Y2FzZVx8ZXhjZXB0aW9uXHxwYWNrYWdlXClcPicsICcnICkKICAgIGVsc2VpZiBsaW5lID1+ICdeXHMqZXhjZXB0aW9uXD4nCiAgICAgICBsZXQgaW5kID0gczpNYWluQmxvY2tJbmRlbnQoIGluZCwgbG51bSwgJ2JlZ2luXD4nLCAnJyApCiAgICBlbHNlaWYgbGluZSA9fiAnXlxzKnRoZW5cPicKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L2VpZmZlbC52aW0gYi9ydW50aW1lL2luZGVudC9laWZmZWwudmltCmluZGV4IDIyYjkzMmEuLjg5NTk0NTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L2VpZmZlbC52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvZWlmZmVsLnZpbQpAQCAtNSw3ICs1LDcgQEAKICIgJERhdGUkCiAiICRSZXZpc2lvbiQKICIgVVJMOiBodHRwOi8vd3d3LmRqb2NlLm5ldC9wYWdlL3ZpbS8KLSIgTGFzdCBDaGFuZ2U6CTIwMDQgU2VwIDE0CisiIExhc3QgQ2hhbmdlOgkyMDA0IFNlcHQgMTQgOiByZW1vdmVkIHNwZWNpZmljIHZhbHVlIGZvciB0YWIgKHN3KQogCiAiIE9ubHkgbG9hZCB0aGlzIGluZGVudCBmaWxlIHdoZW4gbm8gb3RoZXIgd2FzIGxvYWRlZC4KIGlmIGV4aXN0cygiYjpkaWRfaW5kZW50IikKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL3NpbmhhbGEtcGhvbmV0aWNfdXRmLTgudmltIGIvcnVudGltZS9rZXltYXAvc2luaGFsYS1waG9uZXRpY191dGYtOC52aW0KaW5kZXggMWY3NzE4YS4uNDNkY2M2MyAxMDA2NDQKLS0tIGEvcnVudGltZS9rZXltYXAvc2luaGFsYS1waG9uZXRpY191dGYtOC52aW0KKysrIGIvcnVudGltZS9rZXltYXAvc2luaGFsYS1waG9uZXRpY191dGYtOC52aW0KQEAgLTEsNiArMSw2IEBACiAiIFZpbSBLZXltYXAgZmlsZSBmb3IgU2luaGFsYSAoU3JpIExhbmthKSAoMjAwMy0xMS0wMikKICIgTWFpbnRhaW5lciAgOiBIYXJzaHVsYSBKYXlhc3VyaXlhIDxoYXNoQGpheWFzb2x1dGlvbnMuY2piLm5ldD4KLSIgTGFzdCBVcGRhdGVkOiAyMDA0LTEwLTEwCisiIExhc3QgVXBkYXRlZDogMjAwNC0xMS0xNAogIiBUaGlzIGlzIGEgc3RhdGljIHBob25ldGljIG1hcHBpbmcgZm9yIGEgc3RhbmRhcmQgVVMtRW5nbGlzaCBrZXlib2FyZAogIiAocXdlcnR5KQogIiBodHRwOi8vd3d3Lm5vbmdudS5vcmcvc2luaGFsYS9kb2Mva2V5bWFwcy9zaW5oYWxhLWtleWJvYXJkXzMuaHRtbApAQCAtMTIsNiArMTIsNyBAQAogIiBTZWxlY3QgdGhlIG5ldyBrZXltYXAKICIgICBzZXQga2V5bWFwPXNpbmhhbGEtcGhvbmV0aWNfdXRmLTgKIAorbGV0IGI6a2V5bWFwX25hbWUgPSAic2luaGFsYSIKIAogbG9hZGtleW1hcAogVgk8Y2hhci0weDBkODI+CSIgIOC2giAtIGFudXN2YXJheWEgKGFudXN2YXJhKQpAQCAtNDMsNyArNDQsNyBAQAogYwk8Y2hhci0weDBkYTA+CSIg4LagIC0gYWxwYXByYWFuYSBjYXlhbm5hIChjYSkKIEMJPGNoYXItMHgwZGExPgkiIOC2oSAtIG1haGFhcHJhYW5hIGNheWFubmEgKGNoYSkKIGoJPGNoYXItMHgwZGEyPgkiIOC2oiAtIGFscGFwcmFhbmEgamF5YW5uYSAoamEpCi1KCTxjaGFyLTB4MGRhMz4JIiDgtqMgLSBtYWhhYXByYWFuYSBqaGF5YW5uYSAoamhhKQorSgk8Y2hhci0weDBkYTM+CSIg4LajIC0gbWFoYWFwcmFhbmEgamF5YW5uYSAoamhhKQogegk8Y2hhci0weDBkYTQ+CSIg4LakIC0gdGFhbHVqYSBuYWFzaWt5YXlhIChueWEpCiBaCTxjaGFyLTB4MGRhNT4JIiDgtqUgLSB0YWFsdWphIHNhbnlvb2dhIG5hYXNpa3lheWEgKGpueWEpCiA8QS1qPgk8Y2hhci0weDBkYTY+CSIg4LamIC0gc2FueWFrYSBqYXlhbm5hIChueWphKQpAQCAtNTIsMTMgKzUzLDEzIEBACiBkCTxjaGFyLTB4MGRhOT4JIiDgtqkgLSBhbHBhcHJhYW5hIGRkYXlhbm5hIChkZGEpCiBECTxjaGFyLTB4MGRhYT4JIiDgtqogLSBtYWhhYXByYWFuYSBkZGF5YW5uYSAoZGRoYSkKIE4JPGNoYXItMHgwZGFiPgkiIOC2qyAtIG11dXJkaGFqYSBuYXlhbm5hIChubmEpCi08QS1kPgk8Y2hhci0weDBkYWM+CSIg4LasIC0gc2FueWFrYSBkZGF5YW5uYSAobm5kZGEpCit4CTxjaGFyLTB4MGRhYz4JIiDgtqwgLSBzYW55YWthIGRkYXlhbm5hIChubmRkYSkKIDxBLXQ+CTxjaGFyLTB4MGRhZD4JIiDgtq0gLSBhbHBhcHJhYW5hIHRheWFubmEgKHRhKQogPEEtVD4JPGNoYXItMHgwZGFlPgkiIOC2riAtIG1haGFhcHJhYW5hIHRheWFubmEgKHRoYSkKLXgJPGNoYXItMHgwZGFmPgkiIOC2ryAtIGFscGFwcmFhbmEgZGF5YW5uYSAoZGEpCi1YCTxjaGFyLTB4MGRiMD4JIiDgtrAgLSBtYWhhYXByYWFuYSBkYXlhbm5hIChkaGEpCis8QS1kPgk8Y2hhci0weDBkYWY+CSIg4LavIC0gYWxwYXByYWFuYSBkYXlhbm5hIChkYSkKKzxBLUQ+CTxjaGFyLTB4MGRiMD4JIiDgtrAgLSBtYWhhYXByYWFuYSBkYXlhbm5hIChkaGEpCiBuCTxjaGFyLTB4MGRiMT4JIiDgtrEgLSBkYW50YWphIG5heWFubmEgKG5hKQotPEEteD4JPGNoYXItMHgwZGIzPgkiIOC2syAtIHNhbnlha2EgZGF5YW5uYSAobmRhKQorWAk8Y2hhci0weDBkYjM+CSIg4LazIC0gc2FueWFrYSBkYXlhbm5hIChuZGEpCiBwCTxjaGFyLTB4MGRiND4JIiDgtrQgLSBhbHBhcHJhYW5hIHBheWFubmEgKHBhKQogUAk8Y2hhci0weDBkYjU+CSIg4La1IC0gbWFoYWFwcmFhbmEgcGF5YW5uYSAocGhhKQogYgk8Y2hhci0weDBkYjY+CSIg4La2IC0gYWxwYXByYWFuYSBiYXlhbm5hIChiYSkKQEAgLTEwMiw1ICsxMDMsNSBAQAogPEEtXD4JPGNoYXItMHgwZGNhPjxjaGFyLTB4MjAwZD4JIiBqb2luIC0gY29uanVuY3QgbGV0dGVycyBjb25zIDBEQ0EgMjAwRCBjb25zCiA8QS18Pgk8Y2hhci0weDIwMGQ+CSIgdG91Y2ggLSBaV0oKIAotIjxTLXNwYWNlPgk8Y2hhci0weDAwYTA+CSIgLSBuby1icmVhayBzcGFjZS4gPFMtc3BhY2U+IGRpZG4ndCB3b3JrLgorPFMtc3BhY2U+CTxjaGFyLTB4MDBhMD4JIiAtIG5vLWJyZWFrIHNwYWNlLiA8Uy1zcGFjZT4gZGlkbid0IHdvcmsuCiA8Qy1zcGFjZT4JPGNoYXItMHgyMDBjPgkiIC0gWldOSi4gPEEtc3BhY2U+IGRvZXNuJ3Qgd29yayEKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL3NpbmhhbGEudmltIGIvcnVudGltZS9rZXltYXAvc2luaGFsYS52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYwOTFiNAotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUva2V5bWFwL3NpbmhhbGEudmltCkBAIC0wLDAgKzEsMyBAQAorIiBWaW0gS2V5bWFwIGZpbGUgZm9yIFNpbmhhbGEgKFNyaSBMYW5rYSkKKyIKK3NvdXJjZSA8c2ZpbGU+OnA6aC9zaW5oYWxhLXBob25ldGljX3V0Zi04LnZpbQpkaWZmIC0tZ2l0IGEvcnVudGltZS9tYWtlbWVudS52aW0gYi9ydW50aW1lL21ha2VtZW51LnZpbQppbmRleCBiZGY5OTkyLi5jOTg5MDA3IDEwMDY0NAotLS0gYS9ydW50aW1lL21ha2VtZW51LnZpbQorKysgYi9ydW50aW1lL21ha2VtZW51LnZpbQpAQCAtMSw2ICsxLDYgQEAKICIgU2NyaXB0IHRvIGRlZmluZSB0aGUgc3ludGF4IG1lbnUgaW4gc3lubWVudS52aW0KICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDQgU2VwIDExCisiIExhc3QgQ2hhbmdlOgkyMDA0IE5vdiAyMAogCiAiIFRoaXMgaXMgdXNlZCBieSAibWFrZSBtZW51IiBpbiB0aGUgc3JjIGRpcmVjdG9yeS4KIGVkaXQgPHNmaWxlPjpwOmgvc3lubWVudS52aW0KQEAgLTM2Niw2ICszNjYsNyBAQAogU3luTWVudSBTaC1TLlNoZWxsXCBzY3JpcHQudGNzaDp0Y3NoCiBTeW5NZW51IFNoLVMuU2hlbGxcIHNjcmlwdC56c2g6enNoCiBTeW5NZW51IFNoLVMuU2lDQUQ6c2ljYWQKK1N5bk1lbnUgU2gtUy5TaWV2ZTpzaWV2ZQogU3luTWVudSBTaC1TLlNpbXVsYTpzaW11bGEKIFN5bk1lbnUgU2gtUy5TaW5kYS5TaW5kYVwgY29tcGFyZTpzaW5kYWNtcAogU3luTWVudSBTaC1TLlNpbmRhLlNpbmRhXCBpbnB1dDpzaW5kYQpAQCAtNDIzLDYgKzQyNCw3IEBACiBTeW5NZW51IFRVVi5URlwgbXVkXCBjbGllbnQ6dGYKIFN5bk1lbnUgVFVWLlRpZHlcIGNvbmZpZ3VyYXRpb246dGlkeQogU3luTWVudSBUVVYuVGlsZGU6dGlsZGUKK1N5bk1lbnUgVFVWLlRQUDp0cHAKIFN5bk1lbnUgVFVWLlRyYXN5c1wgaW5wdXQ6dHJhc3lzCiBTeW5NZW51IFRVVi5UU1MuQ29tbWFuZFwgTGluZTp0c3NjbAogU3luTWVudSBUVVYuVFNTLkdlb21ldHJ5OnRzc2dtCmRpZmYgLS1naXQgYS9ydW50aW1lL21lbnUudmltIGIvcnVudGltZS9tZW51LnZpbQppbmRleCBiNTA0ZmY4Li4wZjAzMTdkIDEwMDY0NAotLS0gYS9ydW50aW1lL21lbnUudmltCisrKyBiL3J1bnRpbWUvbWVudS52aW0KQEAgLTIsNyArMiw3IEBACiAiIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyBhcyBhIHN0YXJ0IGZvciB5b3VyIG93biBzZXQgb2YgbWVudXMuCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDA0IFNlcCAxNgorIiBMYXN0IENoYW5nZToJMjAwNCBEZWMgMDQKIAogIiBOb3RlIHRoYXQgIjphbiIgKHNob3J0IGZvciAiOmFub3JlbWVudSIpIGlzIG9mdGVuIHVzZWQgdG8gbWFrZSBhIG1lbnUgd29yawogIiBpbiBhbGwgbW9kZXMgYW5kIGF2b2lkIHNpZGUgZWZmZWN0cyBmcm9tIG1hcHBpbmdzIGRlZmluZWQgYnkgdGhlIHVzZXIuCkBAIC03ODUsOSArNzg1LDM3IEBACiB2bm9yZW1lbnUgMS41MCBQb3BVcC4mRGVsZXRlCQl4CiBhbiAxLjU1IFBvcFVwLi1TRVAyLQkJCTxOb3A+CiB2bm9yZW1lbnUgMS42MCBQb3BVcC5TZWxlY3RcIEJsb2Nrd2lzZQk8Qy1WPgotYW4gMS43MCBQb3BVcC5TZWxlY3RcICZXb3JkCQl2YXcKLWFuIDEuODAgUG9wVXAuU2VsZWN0XCAmTGluZQkJVgotYW4gMS45MCBQb3BVcC5TZWxlY3RcICZCbG9jawkJPEMtVj4KKworbm5vcmVtZW51IDEuNzAgUG9wVXAuU2VsZWN0XCAmV29yZAl2YXcKK29ub3JlbWVudSAxLjcwIFBvcFVwLlNlbGVjdFwgJldvcmQJYXcKK3Zub3JlbWVudSAxLjcwIFBvcFVwLlNlbGVjdFwgJldvcmQJPEMtQz52YXcKK2lub3JlbWVudSAxLjcwIFBvcFVwLlNlbGVjdFwgJldvcmQJPEMtTz52YXcKK2Nub3JlbWVudSAxLjcwIFBvcFVwLlNlbGVjdFwgJldvcmQJPEMtQz52YXcKKworbm5vcmVtZW51IDEuNzMgUG9wVXAuU2VsZWN0XCAmU2VudGVuY2UJdmFzCitvbm9yZW1lbnUgMS43MyBQb3BVcC5TZWxlY3RcICZTZW50ZW5jZQlhcwordm5vcmVtZW51IDEuNzMgUG9wVXAuU2VsZWN0XCAmU2VudGVuY2UJPEMtQz52YXMKK2lub3JlbWVudSAxLjczIFBvcFVwLlNlbGVjdFwgJlNlbnRlbmNlCTxDLU8+dmFzCitjbm9yZW1lbnUgMS43MyBQb3BVcC5TZWxlY3RcICZTZW50ZW5jZQk8Qy1DPnZhcworCitubm9yZW1lbnUgMS43NyBQb3BVcC5TZWxlY3RcIFBhJnJhZ3JhcGgJdmFwCitvbm9yZW1lbnUgMS43NyBQb3BVcC5TZWxlY3RcIFBhJnJhZ3JhcGgJYXAKK3Zub3JlbWVudSAxLjc3IFBvcFVwLlNlbGVjdFwgUGEmcmFncmFwaAk8Qy1DPnZhcAoraW5vcmVtZW51IDEuNzcgUG9wVXAuU2VsZWN0XCBQYSZyYWdyYXBoCTxDLU8+dmFwCitjbm9yZW1lbnUgMS43NyBQb3BVcC5TZWxlY3RcIFBhJnJhZ3JhcGgJPEMtQz52YXAKKworbm5vcmVtZW51IDEuODAgUG9wVXAuU2VsZWN0XCAmTGluZQlWCitvbm9yZW1lbnUgMS44MCBQb3BVcC5TZWxlY3RcICZMaW5lCTxDLUM+Vgordm5vcmVtZW51IDEuODAgUG9wVXAuU2VsZWN0XCAmTGluZQk8Qy1DPlYKK2lub3JlbWVudSAxLjgwIFBvcFVwLlNlbGVjdFwgJkxpbmUJPEMtTz5WCitjbm9yZW1lbnUgMS44MCBQb3BVcC5TZWxlY3RcICZMaW5lCTxDLUM+VgorCitubm9yZW1lbnUgMS45MCBQb3BVcC5TZWxlY3RcICZCbG9jawk8Qy1WPgorb25vcmVtZW51IDEuOTAgUG9wVXAuU2VsZWN0XCAmQmxvY2sJPEMtQz48Qy1WPgordm5vcmVtZW51IDEuOTAgUG9wVXAuU2VsZWN0XCAmQmxvY2sJPEMtQz48Qy1WPgoraW5vcmVtZW51IDEuOTAgUG9wVXAuU2VsZWN0XCAmQmxvY2sJPEMtTz48Qy1WPgorY25vcmVtZW51IDEuOTAgUG9wVXAuU2VsZWN0XCAmQmxvY2sJPEMtQz48Qy1WPgorCiBub3JlbWVudSAgPHNjcmlwdD4gPHNpbGVudD4gMS4xMDAgUG9wVXAuU2VsZWN0XCAmQWxsCTo8Qy1VPmNhbGwgPFNJRD5TZWxlY3RBbGwoKTxDUj4KIGlub3JlbWVudSA8c2NyaXB0PiA8c2lsZW50PiAxLjEwMCBQb3BVcC5TZWxlY3RcICZBbGwJPEMtTz46Y2FsbCA8U0lEPlNlbGVjdEFsbCgpPENSPgogY25vcmVtZW51IDxzY3JpcHQ+IDxzaWxlbnQ+IDEuMTAwIFBvcFVwLlNlbGVjdFwgJkFsbAk8Qy1VPmNhbGwgPFNJRD5TZWxlY3RBbGwoKTxDUj4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvb3B0d2luLnZpbSBiL3J1bnRpbWUvb3B0d2luLnZpbQppbmRleCA4NWUyMDFjLi5mNmRiZjM1IDEwMDY0NAotLS0gYS9ydW50aW1lL29wdHdpbi52aW0KKysrIGIvcnVudGltZS9vcHR3aW4udmltCkBAIC0xLDcgKzEsNyBAQAogIiBUaGVzZSBjb21tYW5kcyBjcmVhdGUgdGhlIG9wdGlvbiB3aW5kb3cuCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDA0IEp1bCAwNQorIiBMYXN0IENoYW5nZToJMjAwNCBEZWMgMDkKIAogIiBJZiB0aGVyZSBhbHJlYWR5IGlzIGFuIG9wdGlvbiB3aW5kb3csIGp1bXAgdG8gdGhhdCBvbmUuCiBpZiBidWZ3aW5ucigib3B0aW9uLXdpbmRvdyIpID4gMApAQCAtODg5LDYgKzg4OSw4IEBACiBjYWxsIDxTSUQ+QmluT3B0aW9uRygiYXIiLCAmYXIpCiBjYWxsIGFwcGVuZCgiJCIsICJwYXRjaG1vZGVcdGtlZXAgb2xkZXN0IHZlcnNpb24gb2YgYSBmaWxlOyBzcGVjaWZpZXMgZmlsZSBuYW1lIGV4dGVuc2lvbiIpCiBjYWxsIDxTSUQ+T3B0aW9uRygicG0iLCAmcG0pCitjYWxsIGFwcGVuZCgiJCIsICJmc3luY1x0Zm9yY2libHkgc3luYyB0aGUgZmlsZSB0byBkaXNrIGFmdGVyIHdyaXRpbmcgaXQiKQorY2FsbCA8U0lEPkJpbk9wdGlvbkcoImZzIiwgJmZzKQogaWYgIWhhcygibXNkb3MiKQogICBjYWxsIGFwcGVuZCgiJCIsICJzaG9ydG5hbWVcdHVzZSA4LjMgZmlsZSBuYW1lcyIpCiAgIGNhbGwgYXBwZW5kKCIkIiwgIlx0KGxvY2FsIHRvIGJ1ZmZlcikiKQpkaWZmIC0tZ2l0IGEvcnVudGltZS9wbHVnaW4vTmV0cndGaWxlSGFuZGxlcnMudmltIGIvcnVudGltZS9wbHVnaW4vTmV0cndGaWxlSGFuZGxlcnMudmltCmluZGV4IDZlZGViNTEuLjM1ZGY2ZGQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvcGx1Z2luL05ldHJ3RmlsZUhhbmRsZXJzLnZpbQorKysgYi9ydW50aW1lL3BsdWdpbi9OZXRyd0ZpbGVIYW5kbGVycy52aW0KQEAgLTIsMTQgKzIsMTQgQEAKICIgICAgICAgICAgICAgICAgICAgIG5ldHJ3J3MgYnJvd3NlcnMnIHggY29tbWFuZCAoImVYZWN1dGUgbGF1bmNoZXIiKQogIiBBdXRob3I6CUNoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgogIiBEYXRlOgkJQXVnIDMxLCAyMDA0Ci0iIFZlcnNpb246CTNhCU5PVCBSRUxFQVNFRAorIiBWZXJzaW9uOgkzCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIFByZXZlbnQgUmVsb2FkaW5nOiB7e3sxCiBpZiBleGlzdHMoImc6bG9hZGVkX25ldHJ3ZmlsZWhhbmRsZXJzIikgfHwgJmNwCiAgZmluaXNoCiBlbmRpZgotbGV0IGc6bG9hZGVkX25ldHJ3ZmlsZWhhbmRsZXJzPSAidjNhIgorbGV0IGc6bG9hZGVkX25ldHJ3ZmlsZWhhbmRsZXJzPSAidjMiCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldHJ3RmlsZUhhbmRsZXJfaHRtbDogaGFuZGxlcyBodG1sIHdoZW4gdGhlIHVzZXIgaGl0cyAieCIgd2hlbiB0aGUge3t7MQpAQCAtMTUzLDcgKzE1Myw3IEBACiBmdW4hIE5ldHJ3RmlsZUhhbmRsZXJfcGRmKHBkZikKICIgICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9wZGYocGRmPCIuYTpwZGYuIj4pIikKICAgaWYgZXhlY3V0YWJsZSgiZ3MiKQotICAgZXhlICJzaWxlbnQhICFncyAiLmE6cGRmCisgICBleGUgJ3NpbGVudCEgIWdzICInLmE6cGRmLiciJwogICBlbHNlCiAiICAgIiBjYWxsIERyZXQoIk5ldHJ3RmlsZUhhbmRsZXJfcGRmIDAiKQogICAgcmV0dXJuIDAKQEAgLTE2OCw3ICsxNjgsNyBAQAogZnVuISBOZXRyd0ZpbGVIYW5kbGVyX3N4dyhzeHcpCiAiICAiIGNhbGwgRGZ1bmMoIk5ldHJ3RmlsZUhhbmRsZXJfc3h3KHN4dzwiLmE6c3h3LiI+KSIpCiAgIGlmIGV4ZWN1dGFibGUoImdzIikKLSAgIGV4ZSAic2lsZW50ISAhZ3MgIi5hOnN4dworICAgZXhlICdzaWxlbnQhICFncyAiJy5hOnN4dy4nIicKICAgZWxzZQogIiAgICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX3N4dyAwIikKICAgIHJldHVybiAwCkBAIC0xODQsNyArMTg0LDcgQEAKICIgICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9kb2MoZG9jPCIuYTpkb2MuIj4pIikKIAogICBpZiBleGVjdXRhYmxlKCJvb3dyaXRlciIpCi0gICBleGUgInNpbGVudCEgIW9vd3JpdGVyICIuYTpkb2MKKyAgIGV4ZSAnc2lsZW50ISAhb293cml0ZXIgIicuYTpkb2MuJyInCiAgICByZWRyYXchCiAgIGVsc2UKICIgICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9kb2MgMCIpCkBAIC0yMDEsNyArMjAxLDcgQEAKICIgICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9zeHcoc3h3PCIuYTpzeHcuIj4pIikKIAogICBpZiBleGVjdXRhYmxlKCJvb3dyaXRlciIpCi0gICBleGUgInNpbGVudCEgIW9vd3JpdGVyICIuYTpzeHcKKyAgIGV4ZSAnc2lsZW50ISAhb293cml0ZXIgIicuYTpzeHcuJyInCiAgICByZWRyYXchCiAgIGVsc2UKICIgICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9zeHcgMCIpCkBAIC0yMTgsNyArMjE4LDcgQEAKICIgICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl94bHMoeGxzPCIuYTp4bHMuIj4pIikKIAogICBpZiBleGVjdXRhYmxlKCJvb2NhbGMiKQotICAgZXhlICJzaWxlbnQhICFvb2NhbGMgIi5hOnhscworICAgZXhlICdzaWxlbnQhICFvb2NhbGMgIicuYTp4bHMuJyInCiAgICByZWRyYXchCiAgIGVsc2UKICIgICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl94bHMgMCIpCmRpZmYgLS1naXQgYS9ydW50aW1lL3BsdWdpbi9uZXRydy52aW0gYi9ydW50aW1lL3BsdWdpbi9uZXRydy52aW0KaW5kZXggNjA4Y2M3ZC4uZTQ4NjhhMyAxMDA2NDQKLS0tIGEvcnVudGltZS9wbHVnaW4vbmV0cncudmltCisrKyBiL3J1bnRpbWUvcGx1Z2luL25ldHJ3LnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgbmV0cncudmltOiBIYW5kbGVzIGZpbGUgdHJhbnNmZXIgYW5kIHJlbW90ZSBkaXJlY3RvcnkgbGlzdGluZyBhY3Jvc3MgYSBuZXR3b3JrCi0iIExhc3QgQ2hhbmdlOglTZXAgMTQsIDIwMDQKLSIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIFBoRCAgIDxkcmNoaXBOT1NQQU0gYXQgY2FtcGJlbGxmYW1pbHkuYml6PgotIiBWZXJzaW9uOgk1MWEJTk9UIFJFTEVBU0VECisiIGxhc3QgY2hhbmdlOglEZWMgMDYsIDIwMDQKKyIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFIENhbXBiZWxsLCBKciA8ZHJjaGlwTk9TUEFNIGF0IGNhbXBiZWxsZmFtaWx5IGRvdCBiaXo+CisiIFZlcnNpb246CTUzCiAiIExpY2Vuc2U6CVZpbSBMaWNlbnNlICAoc2VlIHZpbSdzIDpoZWxwIGxpY2Vuc2UpCiAiCiAiICBCdXQgYmUgZG9lcnMgb2YgdGhlIFdvcmQsIGFuZCBub3Qgb25seSBoZWFyZXJzLCBkZWx1ZGluZyB5b3VyIG93biBzZWx2ZXMKQEAgLTE0LDcgKzE0LDcgQEAKIGlmIGV4aXN0cygiZzpsb2FkZWRfbmV0cnciKSB8fCAmY3AKICAgZmluaXNoCiBlbmRpZgotbGV0IGc6bG9hZGVkX25ldHJ3ICA9ICJ2NTFhIgorbGV0IGc6bG9hZGVkX25ldHJ3ICA9ICJ2NTMiCiBsZXQgczpzYXZlX2NwbyAgICAgID0gJmNwbwogbGV0IGxvYWRlZF9leHBsb3JlciA9IDEKIHNldCBjcG8mdmltCkBAIC0yOSw3ICsyOSwxMSBAQAogZW5kaWYKIGlmICFleGlzdHMoImc6bmV0cndfY3lnd2luIikKICBpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikKLSAgbGV0IGc6bmV0cndfY3lnd2luPSAxCisgIGlmICZzaGVsbCA9PSAiYmFzaCIKKyAgIGxldCBnOm5ldHJ3X2N5Z3dpbj0gMQorICBlbHNlCisgICBsZXQgZzpuZXRyd19jeWd3aW49IDAKKyAgZW5kaWYKICBlbHNlCiAgIGxldCBnOm5ldHJ3X2N5Z3dpbj0gMAogIGVuZGlmCkBAIC03OCw3ICs4Miw3IEBACiAgbGV0IGc6bmV0cndfc29ydF9ieT0gIm5hbWUiCiBlbmRpZgogaWYgIWV4aXN0cygiZzpuZXRyd19zb3J0X3NlcXVlbmNlIikKLSBsZXQgZzpuZXRyd19zb3J0X3NlcXVlbmNlPSAnLyQsKixcLmJhayQsXC5vJCxcLmgkLFwuaW5mbyQsXC5zd3AkLFwub2JqJCcKKyBsZXQgZzpuZXRyd19zb3J0X3NlcXVlbmNlPSAnW1wvXSQsKixcLmJhayQsXC5vJCxcLmgkLFwuaW5mbyQsXC5zd3AkLFwub2JqJCcKIGVuZGlmCiBpZiAhZXhpc3RzKCJnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uIikKICAiIGFsdGVybmF0aXZlOiByZXZlcnNlICAoeiB5IHggLi4uKQpAQCAtMTE3LDYgKzEyMSw5IEBACiBpZiAhZXhpc3RzKCJnOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0IikKICBsZXQgZzpuZXRyd19mdHBfYnJvd3NlX3JlamVjdD0nXnRvdGFsXHNcK1xkXCskXHxeVHJ5aW5nXHNcK1xkXCsuKiRcfF5LRVJCRVJPU19WXGQgcmVqZWN0ZWRcfF5TZWN1cml0eSBleHRlbnNpb25zIG5vdFx8Tm8gc3VjaCBmaWxlXHw6IGNvbm5lY3QgdG8gYWRkcmVzcyBbMC05YS1mQS1GOl0qOiBObyByb3V0ZSB0byBob3N0JCcKIGVuZGlmCitpZiAhZXhpc3RzKCJnOm5ldHJ3X3NzaF9icm93c2VfcmVqZWN0IikKKyAgbGV0IGc6bmV0cndfc3NoX2Jyb3dzZV9yZWplY3Q9J150b3RhbFxzXCtcZFwrJCcKK2VuZGlmCiBpZiAhZXhpc3RzKCJnOm5ldHJ3X2tlZXBkaXIiKQogIGxldCBnOm5ldHJ3X2tlZXBkaXI9IDEKIGVuZGlmCkBAIC0xNDMsNiArMTUwLDEyIEBACiBpZiAhZXhpc3RzKCJnOm5ldHJ3X21heGZpbGVuYW1lbGVuIikKICBsZXQgZzpuZXRyd19tYXhmaWxlbmFtZWxlbj0gMzIKIGVuZGlmCitpZiAhZXhpc3RzKCJnOm5ldHJ3X2Rpcmhpc3RtYXgiKQorIGxldCBnOm5ldHJ3X2Rpcmhpc3RtYXg9IDEwCitlbmRpZgoraWYgIWV4aXN0cygiZzpORVRSV19ESVJISVNUX0NOVCIpCisgbGV0IGc6TkVUUldfRElSSElTVF9DTlQ9IDAKK2VuZGlmCiAKICIgQnVmRW50ZXIgZXZlbnQgaWdub3JlZCBieSBkZWNobyB3aGVuIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB0cnVlCiAiICBIYXMgYSBzaWRlIGVmZmVjdCB0aGF0IGRvYXUgQnVmUmVhZFBvc3QgZG9lc24ndCB3b3JrLCBzbwpAQCAtMjE4LDcgKzIzMSw2IEBACiAgIGF1IEZpbGVSZWFkQ21kICBmdHA6Ly8qLHJjcDovLyosc2NwOi8vKixodHRwOi8vKixkYXY6Ly8qLHJzeW5jOi8vKixzZnRwOi8vKglleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQcmUgIi5leHBhbmQoIjxhZmlsZT4iKXxleGUgIk5yZWFkICIgICAuZXhwYW5kKCI8YWZpbGU+Iil8ZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUG9zdCAiLmV4cGFuZCgiPGFmaWxlPiIpCiAgIGF1IEJ1ZldyaXRlQ21kICBmdHA6Ly8qLHJjcDovLyosc2NwOi8vKixkYXY6Ly8qLHJzeW5jOi8vKixzZnRwOi8vKiAgICAJZXhlICJzaWxlbnQgZG9hdSBCdWZXcml0ZVByZSAiLmV4cGFuZCgiPGFmaWxlPiIpfGV4ZSAiTndyaXRlICIgLmV4cGFuZCgiPGFmaWxlPiIpfGV4ZSAic2lsZW50IGRvYXUgQnVmV3JpdGVQb3N0ICIuZXhwYW5kKCI8YWZpbGU+IikKICAgYXUgRmlsZVdyaXRlQ21kIGZ0cDovLyoscmNwOi8vKixzY3A6Ly8qLGRhdjovLyoscnN5bmM6Ly8qLHNmdHA6Ly8qICAgIAlleGUgInNpbGVudCBkb2F1IEJ1ZldyaXRlUHJlICIuZXhwYW5kKCI8YWZpbGU+Iil8ZXhlICInWywnXU53cml0ZSAiIC5leHBhbmQoIjxhZmlsZT4iKXxleGUgInNpbGVudCBkb2F1IEJ1ZldyaXRlUG9zdCAiLmV4cGFuZCgiPGFmaWxlPiIpCi0iICBhdSBGaWxlV3JpdGVDbWQgZnRwOi8vKixyY3A6Ly8qLHNjcDovLyosZGF2Oi8vKixyc3luYzovLyosc2Z0cDovLyogICAgCWlmIGV4aXN0cygidmNvdW50Iil8Y2FsbCBEZWNobygidmNvdW50PSIudmNvdW50KXxlbHNlfGNhbGwgRGVjaG8oIm5vIHZjb3VudCIpfGVuZGlmCiAgYXVncm91cCBFTkQKIGVuZGlmCiAKQEAgLTMzNSw2ICszNDcsNyBAQAogICAgICAgIGlmIGljaG9pY2UgPiBhOjAKICAgICAgICAJaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgICAgICBlY2hvZXJyICJVbmJhbGFuY2VkIHN0cmluZyBpbiBmaWxlbmFtZSAnIi4gd2hvbGVjaG9pY2UgLiInIgorICAgICAgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogCWVuZGlmCiAiICAgICAgICBjYWxsIERyZXQoIk5ldFJlYWQiKQogICAgICAgICByZXR1cm4KQEAgLTM2Myw3ICszNzYsNyBAQAogIAogICAgIiBDaGVjayBpZiBOZXRCcm93c2UoKSBzaG91bGQgYmUgaGFuZGxpbmcgdGhpcyByZXF1ZXN0CiAiICAgY2FsbCBEZWNobygiY2hlY2tpbmcgaWYgbmV0bGlzdDogY2hvaWNlPCIuY2hvaWNlLiI+IG5ldHJ3X2xpc3RfY21kPCIuZzpuZXRyd19saXN0X2NtZC4iPiIpCi0gICBpZiBjaG9pY2UgPX4gIl4uKi8kIgorICAgaWYgY2hvaWNlID1+ICJeLipbXC9dJCIKICAgICBrZWVwanVtcHMgY2FsbCBzOk5ldEJyb3dzZShjaG9pY2UpCiAiICAgIGNhbGwgRHJldCgiTmV0UmVhZCIpCiAgICAgcmV0dXJuCkBAIC00MjEsNiArNDM0LDcgQEAKICAgICAgIGxldCBkZWJ1Z2tlZXA9ICZkZWJ1ZwogICAgICAgc2V0IGRlYnVnPW1zZwogICAgICAgZWNob2VyciBnZXRsaW5lKDEpCisgICAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICAgICBsZXQgJmRlYnVnPSBkZWJ1Z2tlZXAKICAgICAgZW5kaWYKICAgICAgYmQhCkBAIC00NjYsNiArNDgwLDcgQEAKICIgICAgIGNhbGwgRGVjaG8oImVycm9yPCIuZ2V0bGluZSgxKS4iPiIpCiAgICAgIGlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQogICAgICAgZWNob2VyciBnZXRsaW5lKDEpCisgICAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICAgIGVuZGlmCiAgICAgZW5kaWYKICAgICBiZCEKQEAgLTQ5OCw2ICs1MTMsNyBAQAogICAgIGlmIGc6bmV0cndfaHR0cF9jbWQgPT0gIiIKICAgICAgaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgICBlY2hvZXJyICJuZWl0aGVyIHdnZXQgbm9yIGZldGNoIGNvbW1hbmQgaXMgYXZhaWxhYmxlIgorICAgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogICAgICBlbmRpZgogICAgICBleGl0CiAgICAgZW5kaWYKQEAgLTU3NSw2ICs1OTEsNyBAQAogICAgIGlmIGc6bmV0cndfZmV0Y2hfY21kID09ICIiCiAgICAgIGlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQogICAgICAgZWNob2VyciAiZmV0Y2ggY29tbWFuZCBub3QgYXZhaWxhYmxlIgorICAgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogICAgICBlbmRpZgogICAgICBleGl0CiAgICAgZW5kaWYKQEAgLTYzOSwxNCArNjU2LDE0IEBACiAgICBsZXQgbGluZTI9IGxpbmUoIiQiKQogICBlbmRpZgogIAotICAiIHRyYW5zZm9ybSBwYXRocyBmcm9tIC8gdG8gXCBmb3IgV2luZG93cywgdW5sZXNzIHRoZSBzaGVsbCBpcyBiYXNoCisgICIgdHJhbnNmb3JtIHBhdGhzIGZyb20gLyB0byBcIGZvciBXaW5kb3dzIChleGNlcHQgZm9yIGN5Z3dpbikKICAgaWYgJnRlcm0gPT0gIndpbjMyIgotICAgaWYgJnNoZWxsID09ICJiYXNoIgotICAgIGxldCBmbmFtZT1hOmZuYW1lCi0iICAgIGNhbGwgRGVjaG8oIih3aW4zMiAmJiBiYXNoKSBmbmFtZTwiLmZuYW1lLiI+IikKKyAgIGlmIGc6bmV0cndfY3lnd2luCisgICAgbGV0IGZuYW1lPSBhOmZuYW1lCisiICAgIGNhbGwgRGVjaG8oIih3aW4zMiAmJiBjeWd3aW4pIGZuYW1lPCIuZm5hbWUuIj4iKQogICAgZWxzZQotICAgIGxldCBmbmFtZT1zdWJzdGl0dXRlKGE6Zm5hbWUsJy8nLCdcXFxcJywnZ2UnKQotIiAgICBjYWxsIERlY2hvKCIod2luMzIgJiYgIWJhc2gpIGZuYW1lPCIuZm5hbWUuIj4iKQorICAgIGxldCBmbmFtZT0gc3Vic3RpdHV0ZShhOmZuYW1lLCcvJywnXFxcXCcsJ2dlJykKKyIgICAgY2FsbCBEZWNobygiKHdpbjMyICYmICFjeWd3aW4pIGZuYW1lPCIuZm5hbWUuIj4iKQogICAgZW5kaWYKICAgZWxzZQogICAgbGV0IGZuYW1lPSBhOmZuYW1lCkBAIC04MDIsNiArODE5LDcgQEAKICAgICAgICBpZiBjaG9pY2UgPiBhOjAKICAgICAgICAJaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgICAgICBlY2hvZXJyICJVbmJhbGFuY2VkIHN0cmluZyBpbiBmaWxlbmFtZSAnIi4gd2hvbGVjaG9pY2UgLiInIgorICAgICAgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogCWVuZGlmCiAiICAgICAgICBjYWxsIERyZXQoIk5ldFdyaXRlIikKICAgICAgICAgcmV0dXJuCkBAIC04NzIsNiArODkwLDcgQEAKICAgICBpZiBnZXRsaW5lKDEpICF+ICJeJCIKICAgICAgaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgICBlY2hvZXJyIGdldGxpbmUoMSkKKyAgICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgICAgZW5kaWYKICAgICAgbGV0IG1vZD0xCiAgICAgZW5kaWYKQEAgLTkxMSw2ICs5MzAsNyBAQAogICAgIGlmIGdldGxpbmUoMSkgIX4gIl4kIgogICAgICBpZiAgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgICBlY2hvZXJyIGdldGxpbmUoMSkKKyAgICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgICAgZW5kaWYKICAgICAgbGV0IG1vZD0xCiAgICAgZW5kaWYKQEAgLTkzOSw2ICs5NTksNyBAQAogICAgZWxzZWlmICAgICBiOm5ldHJ3X21ldGhvZCA9PSA1CiAgICAgaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgIGVjaG9lcnIgIioqKndhcm5pbmcqKiogY3VycmVudGx5IDxuZXRydy52aW0+IGRvZXMgbm90IHN1cHBvcnQgd3JpdGluZyB1c2luZyBodHRwOiIKKyAgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogICAgIGVuZGlmCiAgCiAgICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KQEAgLTEwMzUsNiArMTA1Niw3IEBACiAgICBpZiAhZXhlY3V0YWJsZSgiZnRwIikKICAgICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKICAgICAgZWNob2VyciAiKioqbmV0cncqKiogdGhpcyBzeXN0ZW0gZG9lc24ndCBzdXBwb3J0IHJlbW90ZSBkaXJlY3RvcnkgbGlzdGluZyB2aWEgZnRwIgorICAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICAgZW5kaWYKICIgICAgY2FsbCBEcmV0KCJOZXRCcm93c2UiKQogICAgIHJldHVybgpAQCAtMTA0Miw2ICsxMDY0LDcgQEAKICAgZWxzZWlmICFleGlzdHMoImc6bmV0cndfbGlzdF9jbWQiKSB8fCBnOm5ldHJ3X2xpc3RfY21kID09ICcnCiAgICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKICAgICBlY2hvZXJyICIqKipuZXRydyoqKiB0aGlzIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcmVtb3RlIGRpcmVjdG9yeSBsaXN0aW5nIHZpYSBzc2giCisgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogICAgZW5kaWYKICIgICBjYWxsIERyZXQoIk5ldEJyb3dzZSIpCiAgICByZXR1cm4KQEAgLTEwNTIsMjAgKzEwNzUsMjIgQEAKIAogICAiIGFuYWx5emUgYTpkaXJuYW1lIGFuZCBnOm5ldHJ3X2xpc3RfY21kCiAgIGxldCBkaXJwYXQgID0gJ15cKFx3XHstfVwpOi8vXChcd1wrQFwpXD1cKFteL11cK1wpL1woLipcKSQnCisgIGxldCBkaXJuYW1lID0gc3Vic3RpdHV0ZShhOmRpcm5hbWUsJ1xcJywnLycsJ2dlJykKICIgIGNhbGwgRGVjaG8oImRpcnBhdDwiLmRpcnBhdC4iPiIpCi0gIGlmIGE6ZGlybmFtZSAhfiBkaXJwYXQKKyAgaWYgZGlybmFtZSAhfiBkaXJwYXQKICAgIGlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQotICAgIGVjaG9lcnIgIk5ldEJyb3dzZTogSSBkb24ndCB1bmRlcnN0YW5kIHlvdXIgZGlybmFtZTwiLmE6ZGlybmFtZS4iPiIKKyAgICBlY2hvZXJyICJOZXRCcm93c2U6IEkgZG9uJ3QgdW5kZXJzdGFuZCB5b3VyIGRpcm5hbWU8Ii5kaXJuYW1lLiI+IgorICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgIGVuZGlmCi0iICAgY2FsbCBEcmV0KCJOZXRCcm93c2UgOiBiYWRseSBmb3JtYXR0ZWQgZGlybmFtZTwiLmE6ZGlybmFtZS4iPiIpCisiICAgY2FsbCBEcmV0KCJOZXRCcm93c2UgOiBiYWRseSBmb3JtYXR0ZWQgZGlybmFtZTwiLmRpcm5hbWUuIj4iKQogICAgcmV0dXJuCiAgIGVuZGlmCiAKLSAgbGV0IG1ldGhvZCAgPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSxkaXJwYXQsJ1wxJywnJykKLSAgbGV0IHVzZXIgICAgPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSxkaXJwYXQsJ1wyJywnJykKLSAgbGV0IG1hY2hpbmUgPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSxkaXJwYXQsJ1wzJywnJykKLSAgbGV0IHBhdGggICAgPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSxkaXJwYXQsJ1w0JywnJykKLSAgbGV0IGZuYW1lICAgPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSwnXi4qL1x6ZS4nLCcnLCcnKQorICBsZXQgbWV0aG9kICA9IHN1YnN0aXR1dGUoZGlybmFtZSxkaXJwYXQsJ1wxJywnJykKKyAgbGV0IHVzZXIgICAgPSBzdWJzdGl0dXRlKGRpcm5hbWUsZGlycGF0LCdcMicsJycpCisgIGxldCBtYWNoaW5lID0gc3Vic3RpdHV0ZShkaXJuYW1lLGRpcnBhdCwnXDMnLCcnKQorICBsZXQgcGF0aCAgICA9IHN1YnN0aXR1dGUoZGlybmFtZSxkaXJwYXQsJ1w0JywnJykKKyAgbGV0IGZuYW1lICAgPSBzdWJzdGl0dXRlKGRpcm5hbWUsJ14uKi9cemUuJywnJywnJykKICIgIGNhbGwgRGVjaG8oInNldCB1cCBtZXRob2QgPCIubWV0aG9kIC4iPiIpCiAiICBjYWxsIERlY2hvKCJzZXQgdXAgdXNlciAgIDwiLnVzZXIgICAuIj4iKQogIiAgY2FsbCBEZWNobygic2V0IHVwIG1hY2hpbmU8Ii5tYWNoaW5lLiI+IikKQEAgLTEwODcsNiArMTExMiw3IEBACiAgICIgb3B0aW9uYWxseSBzb3J0IGJ5IHRpbWUgKC10KSBvciBieSBzaXplICgtUykKICAgaWYgbGlzdGNtZCA9PSAiZGlyIiAmJiBnOm5ldHJ3X3NvcnRfYnkgPX4gIl5bdHNdIgogICAgZWNob2VyciAiKioqd2FybmluZyoqKiB3aW5kb3dzJyBmdHAgZG9lc24ndCBzdXBwb3J0IHRpbWUvc2l6ZSBzb3J0cyAoZ2V0IGN5Z3dpbiwgc2V0IGc6bmV0cndfY3lnd2luKSIKKyAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgZWxzZQogICAgaWYgZzpuZXRyd19zb3J0X2J5ID1+ICJedCIKICAgICBsZXQgbGlzdGNtZD0gbGlzdGNtZC4idCIKQEAgLTExMDIsMTQgKzExMjgsMTQgQEAKICIgIGNhbGwgRGVjaG8oInNldCB1cCBsaXN0Y21kPCIubGlzdGNtZC4iPiIpCiAgIGlmIGZuYW1lID1+ICdAJCcgJiYgZm5hbWUgIX4gJ14iJwogIiAgIGNhbGwgRGVjaG8oImF0dGVtcHQgdHJhbnNmZXIgb2Ygc3ltbGluayBhcyBmaWxlIikKLSAgIGNhbGwgczpOZXRCcm93c2Uoc3Vic3RpdHV0ZShhOmRpcm5hbWUsJ0AkJywnJywnZScpKQorICAgY2FsbCBzOk5ldEJyb3dzZShzdWJzdGl0dXRlKGRpcm5hbWUsJ0AkJywnJywnZScpKQogICAgcmVkcmF3IQogIiAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIDogc3ltbGluayIpCiAgICByZXR1cm4KIAotICBlbHNlaWYgZm5hbWUgIX4gJy8kJyAmJiBmbmFtZSAhfiAnXiInCisgIGVsc2VpZiBmbmFtZSAhfiAnW1wvXSQnICYmIGZuYW1lICF+ICdeIicKICAgICIgbG9va3MgbGlrZSBhIHJlZ3VsYXIgZmlsZSwgYXR0ZW1wdCB0cmFuc2ZlcgotIiAgIGNhbGwgRGVjaG8oImF0dGVtcHQgdHJhbnNmZXIgYXMgcmVndWxhciBmaWxlPCIuYTpkaXJuYW1lLiI+IikKKyIgICBjYWxsIERlY2hvKCJhdHRlbXB0IHRyYW5zZmVyIGFzIHJlZ3VsYXIgZmlsZTwiLmRpcm5hbWUuIj4iKQogCiAgICAiIHJlbW92ZSBhbnkgZmlsZXR5cGUgaW5kaWNhdG9yIGZyb20gZW5kIG9mIGRpcm5hbWUsIGV4Y2VwdCBmb3IgdGhlCiAgICAiICJ0aGlzIGlzIGEgZGlyZWN0b3J5IiBpbmRpY2F0b3IgKC8pLiAgVGhlcmUgc2hvdWxkbid0IGJlIG9uZSBvZiB0aG9zZSwKQEAgLTExNTcsNyArMTE4MywxMCBAQAogIiAgY2FsbCBEZWNobygiZXhlIGZpbGUgIi5lc2NhcGUoYnVmbmFtZSxzOm5ldHJ3X2NkX2VzY2FwZSkpCiAgIGV4ZSAnZmlsZSAnLmVzY2FwZShidWZuYW1lLHM6bmV0cndfY2RfZXNjYXBlKQogIiAgY2FsbCBEZWNobygicmVuYW1pbmcgZmlsZSB0byBidWZuYW1lPCIuYnVmbmFtZS4iPiIpCi0gIHNldGxvY2FsIGJoPWhpZGUgbm9ibAorICBzZXRsb2NhbCBiaD1oaWRlIG5vYmwgbm9udQorCisgICIgc2F2ZSBjdXJyZW50IGRpcmVjdG9yeSBvbiBkaXJlY3RvcnkgaGlzdG9yeSBsaXN0CisgIGNhbGwgPFNJRD5OZXRCb29rbWFya0RpcigzLGV4cGFuZCgiJSIpKQogCiAgICIgc2V0IHVwIGJ1ZmZlci1sb2NhbCBtYXBwaW5ncwogIiAgY2FsbCBEZWNobygic2V0IHVwIGJ1ZmZlci1sb2NhbCBtYXBwaW5ncyIpCkBAIC0xMTc0LDYgKzEyMDMsOCBAQAogICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiByCQk6bGV0IGc6bmV0cndfc29ydF9kaXJlY3Rpb249IChnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uID1+ICduJyk/ICdyJyA6ICduJzxiYXI+ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPk5ldEJyb3dzZSg8U0lEPk5ldEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSwnLi8nKSk8Y3I+CiAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHMJCTpjYWxsIDxTSUQ+TmV0U2F2ZVdvcmRQb3NuKCk8YmFyPmxldCBnOm5ldHJ3X3NvcnRfYnk9IChnOm5ldHJ3X3NvcnRfYnkgPX4gJ24nKT8gJ3RpbWUnIDogKGc6bmV0cndfc29ydF9ieSA9fiAndCcpPyAnc2l6ZScgOiAnbmFtZSc8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksJy4vJykpPGJhcj5jYWxsIDxTSUQ+TmV0UmVzdG9yZVdvcmRQb3NuKCk8Y3I+CiAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFMJCTpjYWxsIDxTSUQ+TmV0U29ydFNlcXVlbmNlKDApPGNyPgorICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB1CQk6PGMtdT5jYWxsIDxTSUQ+TmV0Qm9va21hcmtEaXIoNCxleHBhbmQoIiUiKSk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFUJCTo8Yy11PmNhbGwgPFNJRD5OZXRCb29rbWFya0Rpcig1LGV4cGFuZCgiJSIpKTxjcj4KICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gdgkJOmV4ZSAoZzpuZXRyd19hbHR2PyAicmlnaHRiICIgOiAibGVmdGEgIikuZzpuZXRyd193aW5zaXplLiJ3aW5jbWQgdiI8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksPFNJRD5OZXRHZXRXb3JkKCkpKTxjcj4KICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4geAkJOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2VYKDxTSUQ+TmV0QnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLDxTSUQ+TmV0R2V0V29yZCgpKSwxKTxjcj4KICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPDItbGVmdG1vdXNlPiA6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPk5ldEJyb3dzZSg8U0lEPk5ldEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSw8U0lEPk5ldEdldFdvcmQoKSkpPGNyPgpAQCAtMTE4NSw3ICsxMjE2LDcgQEAKICAgZXhlICdubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBSCTpleGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0QnJvd3NlUmVuYW1lKCInLnVzZXIubWFjaGluZS4nIiwiJy5wYXRoLiciKTxjcj4nCiAgIGV4ZSAndm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gUgk6Y2FsbCA8U0lEPk5ldEJyb3dzZVJlbmFtZSgiJy51c2VyLm1hY2hpbmUuJyIsIicucGF0aC4nIik8Y3I+JwogICBubm9yZW1hcCA8YnVmZmVyPiA/CQkJOmhlIG5ldHJ3LWJyb3dzZS1jbWRzPGNyPgotICBzZXRsb2NhbCBtYQorICBzZXRsb2NhbCBtYSBub251CiAKICAgIiBTZXQgdXAgdGhlIGJhbm5lcgogIiAgY2FsbCBEZWNobygic2V0IHVwIHRoZSBiYW5uZXI6IHNvcnRieTwiLmc6bmV0cndfc29ydF9ieS4iPiBtZXRob2Q8Ii5tZXRob2QuIj4iKQpAQCAtMTIwOSw5ICsxMjQwLDkgQEAKICAgZW5kaWYKICAgaWYgZzpuZXRyd19saXN0X2hpZGUgIT0gIiIgJiYgZzpuZXRyd19oaWRlCiAgICBpZiBnOm5ldHJ3X2hpZGUgPT0gMQotICAgIGtlZXBqdW1wcyBwdXQgPSdcIiAgIEhpZGluZzogJy5nOm5ldHJ3X2xpc3RfaGlkZQorICAgIGtlZXBqdW1wcyBwdXQgPSdcIiAgIEhpZGluZzogICAgICAgICcuZzpuZXRyd19saXN0X2hpZGUKICAgIGVsc2UKLSAgICBrZWVwanVtcHMgcHV0ID0nXCIgICBTaG93aW5nOiAnLmc6bmV0cndfbGlzdF9oaWRlCisgICAga2VlcGp1bXBzIHB1dCA9J1wiICAgU2hvd2luZzogICAgICAgJy5nOm5ldHJ3X2xpc3RfaGlkZQogICAgZW5kaWYKICAgIGxldCBzOm5ldHJ3X2Jhbm5lcmNudD0gczpuZXRyd19iYW5uZXJjbnQgKyAxCiAgIGVuZGlmCkBAIC0xMjMyLDEwICsxMjYzLDExIEBACiAgICAgIiBzaG9ydGVuIHRoZSBsaXN0aW5nCiAiICAgIGNhbGwgRGVjaG8oImdlbmVyYXRlIHNob3J0IGxpc3RpbmciKQogICAgIGV4ZSAia2VlcGp1bXBzICIuczpuZXRyd19iYW5uZXJjbnQKKwogICAgICIgY2xlYW51cAotICAgIHdoaWxlIGdldGxpbmUoIi4iKSA9fiBnOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0Ci0gICAgIGtlZXBqdW1wcyBkCi0gICAgZW5kd2hpbGUKKyAgICBpZiBnOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0ICE9ICIiCisgICAgIGV4ZSAic2lsZW50ISBnLyIuZzpuZXRyd19mdHBfYnJvd3NlX3JlamVjdC4iL2tlZXBqdW1wcyBkIgorICAgIGVuZGlmCiAKICAgICAiIGlmIHRoZXJlJ3Mgbm8gLi4vIGxpc3RlZCwgdGhlbiBwdXQgLi8gYW5kIC4uLyBpbgogICAgIGxldCBsaW5lMT0gbGluZSgiLiIpCkBAIC0xMjYyLDYgKzEyOTQsMTAgQEAKICIgICBjYWxsIERlY2hvKCJleGUgc2lsZW50IHIhICIubGlzdGNtZC4iICIuc2hxLmVzY2FwZShwYXRoLHM6bmV0cndfY2RfZXNjYXBlKS5zaHEpCiAgICBleGUgInNpbGVudCByISAiLmxpc3RjbWQuIiAiLnNocS5lc2NhcGUocGF0aCxzOm5ldHJ3X2NkX2VzY2FwZSkuc2hxCiAgICBrZWVwanVtcHMgMWQKKyAgICIgY2xlYW51cAorICAgaWYgZzpuZXRyd19mdHBfYnJvd3NlX3JlamVjdCAhPSAiIgorICAgIGV4ZSAic2lsZW50ISBnLyIuZzpuZXRyd19zc2hfYnJvd3NlX3JlamVjdC4iL2tlZXBqdW1wcyBkIgorICAgIGVuZGlmCiAgIGVuZGlmCiAKICAgIiBtYW5pcHVsYXRlIHRoZSBkaXJlY3RvcnkgbGlzdGluZyAoaGlkZSwgc29ydCkKQEAgLTEyOTksMTkgKzEzMzUsMjIgQEAKICAgICBleGUgczpuZXRyd19iYW5uZXJjbnQKICAgIGVuZGlmCiAKLSAgIGlmIGc6bmV0cndfc29ydF9ieSA9fiAiXm4iCi0gICAgY2FsbCBzOlNldFNvcnQoKQotICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJGNhbGwgczpOZXRTb3J0KCknCi0gICAgZXhlICdrZWVwanVtcHMgc2lsZW50ICcuczpuZXRyd19iYW5uZXJjbnQuJywkcy9eXGRcezN9XC8vL2UnCi0gICBlbmRpZgotICAgaWYgZzpuZXRyd19sb25nbGlzdAotICAgICIgc2hvcnRlbiB0aGUgbGlzdCB0byBrZWVwIGl0cyB3aWR0aCA8PSA4MCBjaGFyYWN0ZXJzCi0gICAgZXhlICJrZWVwanVtcHMgc2lsZW50ICIuczpuZXRyd19iYW5uZXJjbnQuJywkcy9cdFstZHN0cnd4XVwrL1x0L2UnCisgICBpZiBsaW5lKCIkIikgPj0gczpuZXRyd19iYW5uZXJjbnQKKyAgICBpZiBnOm5ldHJ3X3NvcnRfYnkgPX4gIl5uIgorICAgICBjYWxsIHM6U2V0U29ydCgpCisgICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJGNhbGwgczpOZXRTb3J0KCknCisgICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJHMvXlxkXHszfVwvLy9lJworICAgIGVuZGlmCisgICAgaWYgZzpuZXRyd19sb25nbGlzdAorICAgICAiIHNob3J0ZW4gdGhlIGxpc3QgdG8ga2VlcCBpdHMgd2lkdGggPD0gODAgY2hhcmFjdGVycworICAgICBleGUgImtlZXBqdW1wcyBzaWxlbnQgIi5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRzL1x0Wy1kc3Ryd3hdXCsvXHQvZScKKyAgICBlbmRpZgogICAgZW5kaWYKICAgZW5kaWYKICAgZXhlICJrZWVwanVtcHMgIi5zOm5ldHJ3X2Jhbm5lcmNudAogICBzZXRsb2NhbCBub21vZAogICBzZXRsb2NhbCBub21hCisgIHNldGxvY2FsIG5vbnUKIAogIiAgY2FsbCBEcmV0KCJOZXRCcm93c2UiKQogICByZXR1cm4KQEAgLTEzMjUsNyArMTM2NCw3IEBACiAgIGxldCBkaXJuYW1lPSBhOmRpcm5hbWUKICAgbGV0IG5ld2RpciA9IGE6bmV3ZGlyCiAKLSAgaWYgbmV3ZGlyICF+ICcvJCcKKyAgaWYgbmV3ZGlyICF+ICdbXC9dJCcKICAgICIgaGFuZGxpbmcgYSBmaWxlCiAgICBsZXQgZGlybmFtZT0gZGlybmFtZS5uZXdkaXIKICIgICBjYWxsIERlY2hvKCJoYW5kbGluZyBhIGZpbGU6IGRpcm5hbWU8Ii5kaXJuYW1lLiI+IikKQEAgLTEzOTQsNyArMTQzMyw3IEBACiAgICBsZXQgcm1maWxlPSBzOk5ldEdldFdvcmQoKQogIiAgIGNhbGwgRGVjaG8oInJtZmlsZTwiLnJtZmlsZS4iPiIpCiAKLSAgIGlmIHJtZmlsZSAhfiAnXiInICYmIChybWZpbGUgPX4gJ0AkJyB8fCBybWZpbGUgIX4gJy8kJykKKyAgIGlmIHJtZmlsZSAhfiAnXiInICYmIChybWZpbGUgPX4gJ0AkJyB8fCBybWZpbGUgIX4gJ1tcL10kJykKICAgICAiIGF0dGVtcHQgdG8gcmVtb3ZlIGZpbGUKICAgICBpZiAhYWxsCiAgICAgIGVjaG9obCBTdGF0ZW1lbnQKQEAgLTE0NDUsMTMgKzE0ODQsMTQgQEAKICIgICAgICBjYWxsIERlY2hvKCJyZXR1cm5lZD0iLnJldC4iIGVycmNvZGU9Ii52OnNoZWxsX2Vycm9yKQogCiAgICAgICBpZiB2OnNoZWxsX2Vycm9yICE9IDAKLSAgICAgICBsZXQgbmV0cndfcm1mX2NtZD0gc3Vic3RpdHV0ZShnOm5ldHJ3X3JtZl9jbWQsJ0hPU1ROQU1FJyxhOnVzcmhvc3QsJycpLicgJy5zdWJzdGl0dXRlKHJtZmlsZSwnLyQnLCcnLCdlJykKKyAgICAgICBsZXQgbmV0cndfcm1mX2NtZD0gc3Vic3RpdHV0ZShnOm5ldHJ3X3JtZl9jbWQsJ0hPU1ROQU1FJyxhOnVzcmhvc3QsJycpLicgJy5zdWJzdGl0dXRlKHJtZmlsZSwnW1wvXSQnLCcnLCdlJykKICIgICAgICAgY2FsbCBEZWNobygiMm5kIGF0dGVtcHQgdG8gcmVtb3ZlIGRpcjogc3lzdGVtKCIubmV0cndfcm1mX2NtZC4iKSIpCiAgICAgICAgbGV0IHJldD0gc3lzdGVtKG5ldHJ3X3JtZl9jbWQpCiAiICAgICAgIGNhbGwgRGVjaG8oInJldHVybmVkPSIucmV0LiIgZXJyY29kZT0iLnY6c2hlbGxfZXJyb3IpCiAgICAgIAogICAgICAgIGlmIHY6c2hlbGxfZXJyb3IgIT0gMCAmJiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKICAgICAgICAgZWNob2VyciAidW5hYmxlIHRvIHJlbW92ZSBkaXJlY3Rvcnk8Ii5ybWZpbGUuIj4gLS0gaXMgaXQgZW1wdHk/IgorICAgICAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICAgICAgZW5kaWYKICAgICAgIGVuZGlmCiAgICAgIGVuZGlmCkBAIC0xODE3LDYgKzE4NTcsNyBAQAogICAgaWYgaXNkaXJlY3RvcnkoZnVsbG5ld2RpcikKICAgICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKICAgICAgZWNob2VyciAiKioqd2FybmluZyoqKiA8Ii5uZXdkaXJuYW1lLiI+IGlzIGFscmVhZHkgYSBkaXJlY3RvcnkhIgorICAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICAgZW5kaWYKICIgICAgY2FsbCBEcmV0KCJOZXRNYWtlRGlyIDogZGlyZWN0b3J5PCIubmV3ZGlybmFtZS4iPiBleGlzdHMgcHJldmlvdXNseSIpCiAgICAgcmV0dXJuCkBAIC0xODI0LDYgKzE4NjUsNyBAQAogICAgaWYgZmlsZXJlYWRhYmxlKGZ1bGxuZXdkaXIpCiAgICAgaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgIGVjaG9lcnIgIioqKndhcm5pbmcqKiogPCIubmV3ZGlybmFtZS4iPiBpcyBhbHJlYWR5IGEgZmlsZSEiCisgICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgICBlbmRpZgogIiAgICBjYWxsIERyZXQoIk5ldE1ha2VEaXIgOiBmaWxlPCIubmV3ZGlybmFtZS4iPiBleGlzdHMgcHJldmlvdXNseSIpCiAgICAgcmV0dXJuCkBAIC0xODQ2LDYgKzE4ODgsNyBAQAogICAgIGV4ZSBsaW5lbnVtCiAgICBlbHNlaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgZWNob2VyciAiKioqd2FybmluZyoqKiB1bmFibGUgdG8gbWFrZSBkaXJlY3Rvcnk8Ii5uZXdkaXJuYW1lLiI+IgorICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgIGVuZGlmCiAgICByZWRyYXchCiAKQEAgLTE4NjUsNiArMTkwOCw3IEBACiAgICAgZXhlIGxpbmVudW0KICAgIGVsc2VpZiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKICAgICBlY2hvZXJyICIqKip3YXJuaW5nKioqIHVuYWJsZSB0byBtYWtlIGRpcmVjdG9yeTwiLm5ld2Rpcm5hbWUuIj4iCisgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogICAgZW5kaWYKICAgIHJlZHJhdyEKICAgZW5kaWYKQEAgLTE4OTYsMTcgKzE5NDAsNzEgQEAKICAgICBlY2hvbXNnICJTb3JyeSwgYm9va21hcmsjIi52OmNvdW50LiIgZG9lc24ndCBleGlzdCEiCiAgICBlbmRpZgogCi0gIGVsc2VpZiBleGlzdHMoImc6TkVUUldfQk9PS01BUktNQVgiKQotICAgIiBsaXN0IGJvb2ttYXJrcwotIiAgIGNhbGwgRGVjaG8oImxpc3QgYm9va21hcmtzIFswLCIuZzpORVRSV19CT09LTUFSS01BWC4iXSIpCi0gICBsZXQgY250PSAwCi0gICB3aGlsZSBjbnQgPD0gZzpORVRSV19CT09LTUFSS01BWAotICAgIGlmIGV4aXN0cygiZzpORVRSV19CT09LTUFSS0RJUl97Y250fSIpCi0gICAgIGVjaG8gIk5ldHJ3IEJvb2ttYXJrIyIuY250LiI6ICIuZzpORVRSV19CT09LTUFSS0RJUl97Y250fQotIiAgICAgY2FsbCBEZWNobygiTmV0cncgQm9va21hcmsjIi5jbnQuIjogIi5nOk5FVFJXX0JPT0tNQVJLRElSX3tjbnR9KQorICBlbHNlaWYgYTpjaGcgPT0gMgorICAgaWYgZXhpc3RzKCJnOk5FVFJXX0JPT0tNQVJLTUFYIikKKyAgICAiIGxpc3QgdXNlcidzIGJvb2ttYXJrcworIiAgICBjYWxsIERlY2hvKCJsaXN0IGJvb2ttYXJrcyBbMCwiLmc6TkVUUldfQk9PS01BUktNQVguIl0iKQorICAgIGxldCBjbnQ9IDAKKyAgICB3aGlsZSBjbnQgPD0gZzpORVRSV19CT09LTUFSS01BWAorICAgICBpZiBleGlzdHMoImc6TkVUUldfQk9PS01BUktESVJfe2NudH0iKQorIiAgICAgIGNhbGwgRGVjaG8oIk5ldHJ3IEJvb2ttYXJrIyIuY250LiI6ICIuZzpORVRSV19CT09LTUFSS0RJUl97Y250fSkKKyAgICAgIGVjaG8gIk5ldHJ3IEJvb2ttYXJrIyIuY250LiI6ICIuZzpORVRSV19CT09LTUFSS0RJUl97Y250fQorICAgICBlbmRpZgorICAgICBsZXQgY250PSBjbnQgKyAxCisgICAgZW5kd2hpbGUKKyAgIGVuZGlmCisKKyAgICIgbGlzdCBkaXJlY3RvcnkgaGlzdG9yeQorICAgbGV0IGNudCAgICAgPSBnOk5FVFJXX0RJUkhJU1RfQ05UCisgICBsZXQgZmlyc3QgICA9IDEKKyAgIGxldCBoaXN0Y250ID0gMAorICAgd2hpbGUgKCBmaXJzdCB8fCBjbnQgIT0gZzpORVRSV19ESVJISVNUX0NOVCApCisiICAgIGNhbGwgRGVjaG8oImZpcnN0PSIuZmlyc3QuIiBjbnQ9Ii5jbnQuIiBkaXJoaXN0X2NudD0iLmc6TkVUUldfRElSSElTVF9DTlQpCisgICAgbGV0IGhpc3RjbnQ9IGhpc3RjbnQgKyAxCisgICAgaWYgZXhpc3RzKCJnOk5FVFJXX0RJUkhJU1Rfe2NudH0iKQorIiAgICAgY2FsbCBEZWNobygiTmV0cncgIEhpc3RvcnkjIi5oaXN0Y250LiI6ICIuZzpORVRSV19ESVJISVNUX3tjbnR9KQorICAgICBlY2hvICJOZXRydyAgSGlzdG9yeSMiLmhpc3RjbnQuIjogIi5nOk5FVFJXX0RJUkhJU1Rfe2NudH0KICAgICBlbmRpZgotICAgIGxldCBjbnQ9IGNudCArIDEKKyAgICBsZXQgZmlyc3QgPSAwCisgICAgbGV0IGNudCAgID0gKCBjbnQgLSAxICkgJSBnOm5ldHJ3X2Rpcmhpc3RtYXgKKyAgICBpZiBjbnQgPCAwCisgICAgIGxldCBjbnQ9IGNudCArIGc6bmV0cndfZGlyaGlzdG1heAorICAgIGVuZGlmCiAgICBlbmR3aGlsZQorCisgIGVsc2VpZiBhOmNoZyA9PSAzCisgICAiIHNhdmVzIG1vc3QgcmVjZW50bHkgdmlzaXRlZCBkaXJlY3RvcmllcworICAgbGV0IGc6TkVUUldfRElSSElTVF9DTlQ9ICggZzpORVRSV19ESVJISVNUX0NOVCArIDEgKSAlIGc6bmV0cndfZGlyaGlzdG1heAorICAgbGV0IGc6TkVUUldfRElSSElTVF97ZzpORVRSV19ESVJISVNUX0NOVH09IHN1YnN0aXR1dGUoYTpjdXJkaXIsJ1svXFxdJCcsJycsJ2UnKQorIiAgIGNhbGwgRGVjaG8oInNhdmUgZGlyaGlzdCMiLmc6TkVUUldfRElSSElTVF9DTlQuIjwiLmc6TkVUUldfRElSSElTVF97ZzpORVRSV19ESVJISVNUX0NOVH0uIj4iKQorCisgIGVsc2VpZiBhOmNoZyA9PSA0CisgICAiIHU6IGNoYW5nZSB0byB0aGUgcHJldmlvdXMgZGlyZWN0b3J5IHN0b3JlZCBvbiB0aGUgaGlzdG9yeSBsaXN0CisgICBsZXQgZzpORVRSV19ESVJISVNUX0NOVD0gKCBnOk5FVFJXX0RJUkhJU1RfQ05UIC0gMSApICUgZzpuZXRyd19kaXJoaXN0bWF4CisgICBpZiBnOk5FVFJXX0RJUkhJU1RfQ05UIDwgMAorICAgIGxldCBnOk5FVFJXX0RJUkhJU1RfQ05UPSBnOk5FVFJXX0RJUkhJU1RfQ05UICsgZzpuZXRyd19kaXJoaXN0bWF4CisgICBlbmRpZgorICAgaWYgZXhpc3RzKCJnOk5FVFJXX0RJUkhJU1Rfe2c6TkVUUldfRElSSElTVF9DTlR9IikKKyIgICAgY2FsbCBEZWNobygiY2hhbmdlZGlyIHUjIi5nOk5FVFJXX0RJUkhJU1RfQ05ULiI8Ii5nOk5FVFJXX0RJUkhJU1Rfe2c6TkVUUldfRElSSElTVF9DTlR9LiI+IikKKyAgICBleGUgImUgIi5nOk5FVFJXX0RJUkhJU1Rfe2c6TkVUUldfRElSSElTVF9DTlR9CisgICBlbHNlCisgICAgbGV0IGc6TkVUUldfRElSSElTVF9DTlQ9ICggZzpORVRSV19ESVJISVNUX0NOVCArIDEgKSAlIGc6bmV0cndfZGlyaGlzdG1heAorICAgIGVjaG8gIlNvcnJ5LCBubyBwcmVkZWNlc3NvciBkaXJlY3RvcnkgZXhpc3RzIHlldCIKKyAgIGVuZGlmCisKKyAgZWxzZWlmIGE6Y2hnID09IDUKKyAgICIgVTogY2hhbmdlIHRvIHRoZSBzdWJzZXF1ZW50IGRpcmVjdG9yeSBzdG9yZWQgb24gdGhlIGhpc3RvcnkgbGlzdAorICAgbGV0IGc6TkVUUldfRElSSElTVF9DTlQ9ICggZzpORVRSV19ESVJISVNUX0NOVCArIDEgKSAlIGc6bmV0cndfZGlyaGlzdG1heAorICAgaWYgZXhpc3RzKCJnOk5FVFJXX0RJUkhJU1Rfe2c6TkVUUldfRElSSElTVF9DTlR9IikKKyIgICAgY2FsbCBEZWNobygiY2hhbmdlZGlyIFUjIi5nOk5FVFJXX0RJUkhJU1RfQ05ULiI8Ii5nOk5FVFJXX0RJUkhJU1Rfe2c6TkVUUldfRElSSElTVF9DTlR9LiI+IikKKyAgICBleGUgImUgIi5nOk5FVFJXX0RJUkhJU1Rfe2c6TkVUUldfRElSSElTVF9DTlR9CisgICBlbHNlCisgICAgbGV0IGc6TkVUUldfRElSSElTVF9DTlQ9ICggZzpORVRSV19ESVJISVNUX0NOVCAtIDEgKSAlIGc6bmV0cndfZGlyaGlzdG1heAorICAgIGlmIGc6TkVUUldfRElSSElTVF9DTlQgPCAwCisgICAgIGxldCBnOk5FVFJXX0RJUkhJU1RfQ05UPSBnOk5FVFJXX0RJUkhJU1RfQ05UICsgZzpuZXRyd19kaXJoaXN0bWF4CisgICAgZW5kaWYKKyAgICBlY2hvICJTb3JyeSwgbm8gc3VjY2Vzc29yIGRpcmVjdG9yeSBleGlzdHMgeWV0IgorICAgZW5kaWYKICAgZW5kaWYKICIgIGNhbGwgRHJldCgiTmV0Qm9va21hcmtEaXIiKQogZW5kZnVuCkBAIC0xOTMzLDYgKzIwMzEsNyBAQAogICBpZiB2OnZlcnNpb24gPCA2MDMKICAgIGlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQogICAgIGVjaG9lcnIgInZpbSB2ZXJzaW9uPCIudjp2ZXJzaW9uLiI+IHRvbyBvbGQgZm9yIGJyb3dzaW5nIHdpdGggbmV0cnciCisgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogICAgZW5kaWYKICIgICBjYWxsIERyZXQoIkxvY2FsQnJvd3NlIDogdmltIHZlcnNpb248Ii52OnZlcnNpb24uIj4gdG9vIG9sZCIpCiAgICByZXR1cm4KQEAgLTE5NDEsOCArMjA0MCw3IEBACiAgICIgcmVjb3JkIGFuZCBjaGFuZ2UgY3VycmVudCBkaXJlY3RvcnkKICAgbGV0IG5ldHJ3X29yaWdkaXI9IHM6TmV0R2V0Y3dkKDEpCiAgIGV4ZSAnY2QgJy5lc2NhcGUoc3Vic3RpdHV0ZShhOmRpcm5hbWUsJ1xcJywnLycsJ2dlJyksczpuZXRyd19jZF9lc2NhcGUpCi0gIGxldCBkaXJuYW1lPSBzOk5ldEdldGN3ZCgwKQotIiAgY2FsbCBEZWNobygiZGlybmFtZTwiLmRpcm5hbWUuIj4gYnVmIyIuYnVmbnIoIiUiKS4iIHdpbm5yPSIud2lubnIoKSkKKyIgIGNhbGwgRGVjaG8oImRpcm5hbWU8Ii5hOmRpcm5hbWUuIj4gYnVmIyIuYnVmbnIoIiUiKS4iIHdpbm5yPSIud2lubnIoKSkKIAogICAiIG1ha2UgdGhpcyBidWZmZXIgbW9kaWZpYWJsZQogICBzZXRsb2NhbCBtYQpAQCAtMTk1MSwxMiArMjA0OSwxNyBAQAogICAiICBQZXJmb3JtIERpcmVjdG9yeSBMaXN0aW5nOgogIiAgY2FsbCBEZWNobygiUGVyZm9ybSBkaXJlY3RvcnkgbGlzdGluZy4uLiIpCiAgICIgc2V0IHVwIG5ldyBidWZmZXIgYW5kIG1hcAotICAiIHJlbW92ZSB0aGUgdHJhaWxpbmcgIi8iCi0gIGxldCBkaXJuYW1lbnM9IHN1YnN0aXR1dGUoZGlybmFtZSwnLyQnLCcnLCdlJykKLSAgbGV0IGRpcm5hbWVucj0gYnVmbnIoZGlybmFtZW5zLickJykKKyAgIiBkaXJuYW1lICAgOiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LCBubyBlc2NhcGVzLCBoYXMgdHJhaWxpbmcgLworICAiIGRpcm5hbWVucyA6IGRpcm5hbWUsIGJ1dCB3aXRoIG5vIHRyYWlsaW5nIHNsYXNoCisgICIgZGlybmFtZW5yIDogYnVmZmVyIG51bWJlciBjb250YWluaW5nIGRpcm5hbWVucworICAiIGRpcm5hbWVidWY6IGJ1ZmZlcidzIGlkZWEgb2YgZGlybmFtZSwgd2l0aCBhbGwgXCAtPiAvCisgIGxldCBkaXJuYW1lICAgID0gczpOZXRHZXRjd2QoMCkKKyAgbGV0IGRpcm5hbWVucyAgPSBzdWJzdGl0dXRlKGRpcm5hbWUsJ1tcL10kJywnJywnZScpCisgIGxldCBkaXJuYW1lbnIgID0gYnVmbnIoZGlybmFtZW5zLickJykKKyAgbGV0IGRpcm5hbWVidWYgPSBzdWJzdGl0dXRlKGJ1Zm5hbWUoZGlybmFtZW5yKSwnXFwnLCcvJywnZ2UnKQogIiAgY2FsbCBEZWNobygiZGlybmFtZW5yPSBidWZucigiLmRpcm5hbWVucy4iKT0iLmRpcm5hbWVuci4iIGJ1Zm5hbWUoIi5kaXJuYW1lbnIuIik9Ii5idWZuYW1lKGRpcm5hbWVucikpCiAKLSAgaWYgZGlybmFtZW5yICE9IDAgJiYgYnVmbmFtZShkaXJuYW1lbnIpICE9IGRpcm5hbWVucworICBpZiBkaXJuYW1lbnIgIT0gMCAmJiBkaXJuYW1lYnVmICE9IGRpcm5hbWVucwogICAgIiB0cnkga2VlcGluZyB0aGUgdHJhaWxpbmcgc2xhc2gKICAgIGxldCBkaXJuYW1lbnIgPSBidWZucihkaXJuYW1lLickJykKICIgICBjYWxsIERlY2hvKCJkaXJuYW1lbnI9IGJ1Zm5yKCIuZGlybmFtZS4iKT0iLmRpcm5hbWVuci4iIGJ1Zm5hbWUoIi5kaXJuYW1lbnIuIik9Ii5idWZuYW1lKGRpcm5hbWVucikuIiAocmV0cnkgd2l0aCAvKSIpCkBAIC0xOTY3LDcgKzIwNzAsNyBAQAogIiAgIGNhbGwgRGVjaG8oImJ1ZmZlciBhbHJlYWR5IGV4aXN0czogZGlybmFtZW5yPSIuZGlybmFtZW5yLiIgZGlybmFtZTwiLmRpcm5hbWUuIj4gcHJlLWV4aXN0cyIpCiAiICAgY2FsbCBEcmVkaXIoImxzISIpCiAgICBleGUgImIgIi5kaXJuYW1lbnIKLSAgIGV4ZSAnc2lsZW50ISBjZCAnLmVzY2FwZShzdWJzdGl0dXRlKGE6ZGlybmFtZSwnXFwnLCcvJywnZ2UnKSxzOm5ldHJ3X2NkX2VzY2FwZSkKKyAgIGV4ZSAnc2lsZW50ISBjZCAnLmVzY2FwZShkaXJuYW1lLHM6bmV0cndfY2RfZXNjYXBlKQogIiAgIGNhbGwgRGVjaG8oImNoYW5nZWQgZGlyZWN0b3J5IHRvPCIuZGlybmFtZS4iPiIpCiAgICBpZiBhOmRpcm5hbWUgIT0gIi4iICYmIGxpbmUoIiQiKSA+PSA1ICYmIGV4aXN0cygiYjpuZXRyd19jdXJkaXIiKQogICAgIGlmIGI6bmV0cndfY3VyZGlyID09IGRpcm5hbWUKQEAgLTE5ODAsMTEgKzIwODMsMTMgQEAKICIgICBjYWxsIERlY2hvKCJidWZmZXIgbmFtZTwiLmJ1Zm5hbWUoIiUiKS4iPiBkaXJuYW1lPCIuZGlybmFtZS4iPiIpCiAgICBzZXRsb2NhbCBtYQogICAga2VlcGp1bXBzICVkCi0gICBpZiBleHBhbmQoIiUiKSAhPSBkaXJuYW1lCisgICBsZXQgY3VyZGlyPSBzdWJzdGl0dXRlKHN1YnN0aXR1dGUoZXhwYW5kKCIlIiksJ1xcJywnLycsJ2dlJyksJ1teL10kJywnJi8nLCdlJykKKyAgIGlmIGN1cmRpciAhPSBkaXJuYW1lCiAgICAgIiBzZXQgc3RhbmRhcmQgYnJvd3NlciBvcHRpb25zIG9uIGJ1ZmZlcgogICAgIHNldGxvY2FsIGJ0PW5vZmlsZSBiaD1oaWRlIG5vYmwgbm9zd2YKICAgICBleGUgInNldGxvY2FsIHRzPSIuZzpuZXRyd19tYXhmaWxlbmFtZWxlbgotICAgIGV4ZSAnc2lsZW50ISBmaWxlICcuZXNjYXBlKGRpcm5hbWUsczpuZXRyd19jZF9lc2NhcGUpCisgICAgZXhlICdzaWxlbnQgZmlsZSAnLmVzY2FwZShkaXJuYW1lLHM6bmV0cndfY2RfZXNjYXBlKQorIiAgICBjYWxsIERlY2hvKCJlcnJtc2cxPCIudjplcnJtc2cuIj4iKQogIiAgICBjYWxsIERlY2hvKCJyZW5hbWVkIGJ1ZmZlciB0bzwiLmVzY2FwZShkaXJuYW1lLHM6bmV0cndfY2RfZXNjYXBlKS4iPiIpCiAiICAgIGNhbGwgRGVjaG8oInlpZWxkaW5nIGFjdHVhbCBidWZuYW1lPCIuYnVmbmFtZSgiJSIpLiI+IikKICAgIGVuZGlmCkBAIC0xOTkyLDEwICsyMDk3LDExIEBACiAiICAgY2FsbCBEZWNobygiZ2VuZXJhdGUgbmV3IGJ1ZmZlciBuYW1lZDwiLmVzY2FwZShkaXJuYW1lLCcgIycpLiI+IikKICAgIHNpbGVudCEgZW5ldyEKICAgICIgc2V0IHN0YW5kYXJkIGJyb3dzZXIgb3B0aW9ucyBvbiBidWZmZXIKLSAgIHNldGxvY2FsIGJ0PW5vZmlsZSBiaD1oaWRlIG5vYmwgbm9zd2YKKyAgIHNldGxvY2FsIGJ0PW5vZmlsZSBiaD1oaWRlIG5vYmwgbm9zd2Ygbm9udQogICAgZXhlICJzZXRsb2NhbCB0cz0iLmc6bmV0cndfbWF4ZmlsZW5hbWVsZW4KLSAgIGV4ZSAnc2lsZW50ISBmaWxlICcuc3Vic3RpdHV0ZShlc2NhcGUoZGlybmFtZSxzOm5ldHJ3X2NkX2VzY2FwZSksJy8kJywnJywnZScpCi0iICAgY2FsbCBEZWNobygicmVuYW1lZCBidWZmZXIgdG88Ii5zdWJzdGl0dXRlKGVzY2FwZShkaXJuYW1lLHM6bmV0cndfY2RfZXNjYXBlKSwnLyQnLCcnLCdlJykuIj4iKQorICAgZXhlICdzaWxlbnQgZmlsZSAnLnN1YnN0aXR1dGUoZXNjYXBlKGRpcm5hbWUsczpuZXRyd19jZF9lc2NhcGUpLCdbXC9dJCcsJycsJ2UnKQorIiAgIGNhbGwgRGVjaG8oImVycm1zZzI8Ii52OmVycm1zZy4iPiIpCisiICAgY2FsbCBEZWNobygicmVuYW1lZCBidWZmZXIgdG88Ii5zdWJzdGl0dXRlKGVzY2FwZShkaXJuYW1lLHM6bmV0cndfY2RfZXNjYXBlKSwnW1wvXSQnLCcnLCdlJykuIj4iKQogIiAgIGNhbGwgRGVjaG8oInlpZWxkaW5nIGFjdHVhbCBidWZuYW1lPCIuYnVmbmFtZSgiJSIpLiI+IikKICAgZW5kaWYKICAgaWYgYnVmbmFtZSgiIyIpID09ICIiICYmIGJ1Zm5yKCIjIikgIT0gLTEKQEAgLTIwMDQsNiArMjExMCw5IEBACiAgICBleGUgYnVmbnIoIiMiKS4iYndpcGUiCiAgIGVuZGlmCiAKKyAgIiBzYXZlIGN1cnJlbnQgZGlyZWN0b3J5IG9uIGRpcmVjdG9yeSBoaXN0b3J5IGxpc3QKKyAgY2FsbCA8U0lEPk5ldEJvb2ttYXJrRGlyKDMsczpOZXRHZXRjd2QoMCkpCisKICAgIiBzZXQgdXAgYWxsIHRoZSBtYXBzCiAiICBjYWxsIERlY2hvKCJTZXR0aW5nIHVwIGxvY2FsIGJyb3dzZXIgbWFwcyIpCiAgIGxldCBiOm5ldHJ3X2N1cmRpcj0gczpOZXRHZXRjd2QoMSkKQEAgLTIwMjMsNiArMjEzMiw4IEBACiAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHIJCTpsZXQgZzpuZXRyd19zb3J0X2RpcmVjdGlvbj0gKGc6bmV0cndfc29ydF9kaXJlY3Rpb24gPX4gJ24nKT8gJ3InIDogJ24nPGJhcj5leGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciwnLi8nKSk8Y3I+CiAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHMJCTpjYWxsIDxTSUQ+TmV0U2F2ZVdvcmRQb3NuKCk8YmFyPmxldCBnOm5ldHJ3X3NvcnRfYnk9IChnOm5ldHJ3X3NvcnRfYnkgPX4gJ24nKT8gJ3RpbWUnIDogKGc6bmV0cndfc29ydF9ieSA9fiAndCcpPyAnc2l6ZScgOiAnbmFtZSc8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLCcuLycpKTxiYXI+Y2FsbCA8U0lEPk5ldFJlc3RvcmVXb3JkUG9zbigpPGNyPgogICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBTCQk6Y2FsbCA8U0lEPk5ldFNvcnRTZXF1ZW5jZSgxKTxjcj4KKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gdQkJOjxjLXU+Y2FsbCA8U0lEPk5ldEJvb2ttYXJrRGlyKDQsZXhwYW5kKCIlIikpPGNyPgorICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBVCQk6PGMtdT5jYWxsIDxTSUQ+TmV0Qm9va21hcmtEaXIoNSxleHBhbmQoIiUiKSk8Y3I+CiAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHYJCTpleGUgKGc6bmV0cndfYWx0dj8gInJpZ2h0YiAiIDogImxlZnRhICIpLmc6bmV0cndfd2luc2l6ZS4id2luY21kIHYiPGJhcj5leGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciw8U0lEPk5ldEdldFdvcmQoKSkpPGNyPgogICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB4CQk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPk5ldEJyb3dzZVgoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciw8U0lEPk5ldEdldFdvcmQoKSwwKSwwKTxjcj4KICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPDItbGVmdG1vdXNlPiA6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoYjpuZXRyd19jdXJkaXIsPFNJRD5OZXRHZXRXb3JkKCkpKTxjcj4KQEAgLTIwNDEsMzQgKzIxNTIsNDMgQEAKICAga2VlcGp1bXBzIDFkCiAgIGtlZXBqdW1wcyBwdXQgPSdcIiBEaXJlY3RvcnkgTGlzdGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmV0cncgJy5nOmxvYWRlZF9uZXRydy4nKScKICAga2VlcGp1bXBzIHB1dCA9J1wiICAgJy5kaXJuYW1lCi0gIGxldCBzOm5ldHJ3X2Jhbm5lcmNudD0gNworICBsZXQgczpuZXRyd19iYW5uZXJjbnQ9IDMKIAogICBsZXQgc29ydGJ5PSBnOm5ldHJ3X3NvcnRfYnkKICAgaWYgZzpuZXRyd19zb3J0X2RpcmVjdGlvbiA9fiAiXnIiCiAgICBsZXQgc29ydGJ5PSBzb3J0YnkuIiByZXZlcnNlZCIKICAgZW5kaWYKIAorICAiIFNvcnRlZCBieS4uLgogICBpZiBnOm5ldHJ3X3NvcnRfYnkgPX4gIl5uIgogIiAgIGNhbGwgRGVjaG8oImRpcmVjdG9yaWVzIHdpbGwgYmUgc29ydGVkIGJ5IG5hbWUiKQogICAgIiBzb3J0ZWQgYnkgbmFtZQotICAgbGV0IHM6bmV0cndfYmFubmVyY250PSBzOm5ldHJ3X2Jhbm5lcmNudCArIDEKICAgIGtlZXBqdW1wcyBwdXQgPSdcIiAgIFNvcnRlZCBieSAgICAgICcuc29ydGJ5CiAgICBrZWVwanVtcHMgcHV0ID0nXCIgICBTb3J0IHNlcXVlbmNlOiAnLmc6bmV0cndfc29ydF9zZXF1ZW5jZQorICAgbGV0IHM6bmV0cndfYmFubmVyY250PSBzOm5ldHJ3X2Jhbm5lcmNudCArIDIKICAgZWxzZQogIiAgIGNhbGwgRGVjaG8oImRpcmVjdG9yaWVzIHdpbGwgYmUgc29ydGVkIGJ5IHNpemUgb3IgZGF0ZSIpCiAgICAiIHNvcnRlZCBieSBzaXplIG9yIGRhdGUKICAgIGtlZXBqdW1wcyBwdXQgPSdcIiAgIFNvcnRlZCBieSAnLnNvcnRieQorICAgbGV0IHM6bmV0cndfYmFubmVyY250PSBzOm5ldHJ3X2Jhbm5lcmNudCArIDEKICAgZW5kaWYKKworICAiIEhpZGluZy4uLiAgLW9yLSAgU2hvd2luZy4uLgogICBpZiBnOm5ldHJ3X2xpc3RfaGlkZSAhPSAiIiAmJiBnOm5ldHJ3X2hpZGUKICAgIGlmIGc6bmV0cndfaGlkZSA9PSAxCi0gICAga2VlcGp1bXBzIHB1dCA9J1wiICAgSGlkaW5nOiAnLmc6bmV0cndfbGlzdF9oaWRlCisgICAga2VlcGp1bXBzIHB1dCA9J1wiICAgSGlkaW5nOiAgICAgICAgJy5nOm5ldHJ3X2xpc3RfaGlkZQogICAgZWxzZQotICAgIGtlZXBqdW1wcyBwdXQgPSdcIiAgIFNob3dpbmc6ICcuZzpuZXRyd19saXN0X2hpZGUKKyAgICBrZWVwanVtcHMgcHV0ID0nXCIgICBTaG93aW5nOiAgICAgICAnLmc6bmV0cndfbGlzdF9oaWRlCiAgICBlbmRpZgogICAgbGV0IHM6bmV0cndfYmFubmVyY250PSBzOm5ldHJ3X2Jhbm5lcmNudCArIDEKICAgZW5kaWYKICAga2VlcGp1bXBzIHB1dCA9J1wiICAgUXVpY2sgSGVscDogICAgPzpoZWxwICAtOmdvIHVwIGRpciAgRDpkZWxldGUgIFI6cmVuYW1lICBzOnNvcnQtYnkgIHg6ZXhlYycKICAga2VlcGp1bXBzIHB1dCA9J1wiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nCisgIGxldCBzOm5ldHJ3X2Jhbm5lcmNudD0gczpuZXRyd19iYW5uZXJjbnQgKyAyCisKKyAgIiBiYW5uZXJjbnQgc2hvdWxkIGluZGV4IHRoZSBsaW5lIGp1c3QgYWZ0ZXIgdGhlIGJhbm5lcgorICBsZXQgczpuZXRyd19iYW5uZXJjbnQ9IHM6bmV0cndfYmFubmVyY250ICsgMQorIiAgY2FsbCBEZWNobygiYmFubmVyY250PSIuczpuZXRyd19iYW5uZXJjbnQpCiAKICAgIiBnZW5lcmF0ZSB0aGUgcmVxdWVzdGVkIGRpcmVjdG9yeSBsaXN0aW5nCiAgIGNhbGwgTG9jYWxCcm93c2VMaXN0KGRpcm5hbWUpCkBAIC0yMDc5LDE4ICsyMTk5LDIwIEBACiAgICBpZiBnOm5ldHJ3X2hpZGUgJiYgZzpuZXRyd19saXN0X2hpZGUgIT0gIiIKICAgICBjYWxsIHM6TmV0cndMaXN0SGlkZSgpCiAgICBlbmRpZgotICAgaWYgZzpuZXRyd19zb3J0X2J5ID1+ICJebiIKLSAgICBjYWxsIHM6U2V0U29ydCgpCi0gICAgZXhlICdrZWVwanVtcHMgc2lsZW50ICcuczpuZXRyd19iYW5uZXJjbnQuJywkY2FsbCBzOk5ldFNvcnQoKScKLSAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cZFx7M31cLy8vZScKLSAgIGVsc2UKLSAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRjYWxsIHM6TmV0U29ydCgpJwotICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJHMvXlxkXHstfVwvLy9lJworICAgaWYgbGluZSgiJCIpID49IHM6bmV0cndfYmFubmVyY250CisgICAgaWYgZzpuZXRyd19zb3J0X2J5ID1+ICJebiIKKyAgICAgY2FsbCBzOlNldFNvcnQoKQorICAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRjYWxsIHM6TmV0U29ydCgpJworICAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cZFx7M31cLy8vZScKKyAgICBlbHNlCisgICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJGNhbGwgczpOZXRTb3J0KCknCisgICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJHMvXlxkXHstfVwvLy9lJworICAgIGVuZGlmCiAgICBlbmRpZgogICBlbmRpZgogICBleGUgczpuZXRyd19iYW5uZXJjbnQKIAotICBzZXRsb2NhbCBub21hIG5vbW9kCisgIHNldGxvY2FsIG5vbWEgbm9tb2Qgbm9udQogICBpZiBnOm5ldHJ3X2tlZXBkaXIgfCBleGUgJ2tlZXBqdW1wcyBjZCAnLm5ldHJ3X29yaWdkaXIgfCBlbmRpZgogCiAiICBjYWxsIERyZXQoIkxvY2FsQnJvd3NlIDogZmlsZTwiLmV4cGFuZCgiJTpwIikuIj4gYnVmbmFtZTwiLmJ1Zm5hbWUoIiUiKS4iPiIpCkBAIC0yMTkzLDE0ICsyMzE1LDE0IEBACiAgIGxldCBkaXJuYW1lPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSwnXFwnLCcnLCdnZScpCiAgIGxldCBuZXdkaXIgPSBhOm5ld2RpcgogCi0gIGlmIGRpcm5hbWUgIX4gJy8kJworICBpZiBkaXJuYW1lICF+ICdbXC9dJCcKICAgICIgYXBwYXJlbnRseSB2aW0gaXMgInJlY29nbml6aW5nIiB0aGF0IGl0IGlzIGluIHRoZSBob21lIGRpcmVjdG9yeSBhbmQKICAgICIgaXMgcmVtb3ZpbmcgdGhlICIvIi4gIEJhZCBpZGVhLCBzbyBJIGhhdmUgdG8gcHV0IGl0IGJhY2suCiAgICBsZXQgZGlybmFtZT0gZGlybmFtZS4nLycKICIgICBjYWxsIERlY2hvKCJhZGp1c3RpbmcgZGlybmFtZTwiLmRpcm5hbWUuIj4iKQogICBlbmRpZgogCi0gIGlmIG5ld2RpciAhfiAnLyQnCisgIGlmIG5ld2RpciAhfiAnW1wvXSQnCiAgICAiIGhhbmRsaW5nIGEgZmlsZQogICAgbGV0IGRpcm5hbWU9IGRpcm5hbWUubmV3ZGlyCiAiICAgY2FsbCBEZWNobygiaGFuZGxpbmcgYSBmaWxlOiBkaXJuYW1lPCIuZGlybmFtZS4iPiIpCkBAIC0yMjE3LDcgKzIzMzksNyBAQAogCiAgIGVsc2VpZiBuZXdkaXIgPT0gJy4uLycKICAgICIgZ28gdXAgb25lIGRpcmVjdG9yeQotICAgbGV0IGRpcm5hbWU9IHN1YnN0aXR1dGUoZGlybmFtZSwnXlwoLiovXClcKFteL11cKy8kXCknLCdcMScsJ2UnKQorICAgbGV0IGRpcm5hbWU9IHN1YnN0aXR1dGUoZGlybmFtZSwnXlwoLiovXClcKFteL11cK1tcL10kXCknLCdcMScsJ2UnKQogIiAgIGNhbGwgRGVjaG8oImdvIHVwIG9uZSBkaXI6IGRpcm5hbWU8Ii5kaXJuYW1lLiI+IikKIAogICBlbHNlCkBAIC0yMjYyLDcgKzIzODQsNyBAQAogICAgbGV0IHJtZmlsZT0gYTpwYXRoLmN1cndvcmQKICIgICBjYWxsIERlY2hvKCJybWZpbGU8Ii5ybWZpbGUuIj4iKQogCi0gICBpZiBybWZpbGUgIX4gJ14iJyAmJiAocm1maWxlID1+ICdAJCcgfHwgcm1maWxlICF+ICcvJCcpCisgICBpZiBybWZpbGUgIX4gJ14iJyAmJiAocm1maWxlID1+ICdAJCcgfHwgcm1maWxlICF+ICdbXC9dJCcpCiAgICAgIiBhdHRlbXB0IHRvIHJlbW92ZSBmaWxlCiAgICAgaWYgIWFsbAogICAgICBlY2hvaGwgU3RhdGVtZW50CkBAIC0yMjk1LDcgKzI0MTcsNyBAQAogICAgICAgbGV0IGFsbD0gMQogICAgICBlbmRpZgogICAgIGVuZGlmCi0gICAgbGV0IHJtZmlsZT0gc3Vic3RpdHV0ZShybWZpbGUsJy8kJywnJywnZScpCisgICAgbGV0IHJtZmlsZT0gc3Vic3RpdHV0ZShybWZpbGUsJ1tcL10kJywnJywnZScpCiAKICAgICBpZiBhbGwgfHwgb2sgPX4gJ3lcJVtlc10nIHx8IG9rID09ICIiCiAiICAgICBjYWxsIERlY2hvKCIxc3QgYXR0ZW1wdDogc3lzdGVtKCIuZzpuZXRyd19sb2NhbF9ybWRpci4nICInLnJtZmlsZS4nIiknKQpAQCAtMjMxMyw5ICsyNDM1LDExIEBACiAJY2FsbCBzeXN0ZW0oInJtICIucm1maWxlKQogICAgICAgICBpZiB2OnNoZWxsX2Vycm9yICE9IDAgJiYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgICAgICBlY2hvZXJyICJ1bmFibGUgdG8gcmVtb3ZlIGRpcmVjdG9yeTwiLnJtZmlsZS4iPiAtLSBpcyBpdCBlbXB0eT8iCisgICAgICAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAJZW5kaWYKLSAgICAgICBlbHNlaWYgIWV4aXN0KCJnOm5ldHJ3X3F1aWV0IilzCisgICAgICAgZWxzZWlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQogICAgICAgICBlY2hvZXJyICJ1bmFibGUgdG8gcmVtb3ZlIGRpcmVjdG9yeTwiLnJtZmlsZS4iPiAtLSBpcyBpdCBlbXB0eT8iCisgICAgICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgICAgICBlbmRpZgogICAgICAgZW5kaWYKICAgICAgZW5kaWYKQEAgLTIzOTAsMTEgKzI1MTQsMTMgQEAKICAgaWYgaGFzKCJxdWlja2ZpeCIpCiAgICBpZiAhaXNkaXJlY3RvcnkoYTpwYXRoKQogICAgIGV4ZSAicGVkaXQgIi5hOnBhdGgKLSAgIGVsc2VpZiAhZXhpc3QoImc6bmV0cndfcXVpZXQiKXMKKyAgIGVsc2VpZiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKICAgICBlY2hvZXJyICJzb3JyeSwgY2Fubm90IHByZXZpZXcgYSBkaXJlY3Rvcnkgc3VjaCBhcyA8Ii5hOnBhdGguIj4iCisgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogICAgZW5kaWYKLSAgZWxzZWlmICFleGlzdCgiZzpuZXRyd19xdWlldCIpcworICBlbHNlaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICBlY2hvZXJyICJzb3JyeSwgdG8gcHJldmlldyB5b3VyIHZpbSBuZWVkcyB0aGUgcXVpY2tmaXggZmVhdHVyZSBjb21waWxlZCBpbiIKKyAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgZW5kaWYKICIgIGNhbGwgRHJldCgiTG9jYWxQcmV2aWV3IikKIGVuZGZ1bgpAQCAtMjQwNiw3ICsyNTMyLDcgQEAKIGZ1biEgPFNJRD5OZXRHZXRjd2QoZG9lc2MpCiAiICBjYWxsIERmdW5jKCJOZXRHZXRjd2QoZG9lc2M9Ii5hOmRvZXNjLiIpIikKICAgbGV0IGN1cmRpcj0gc3Vic3RpdHV0ZShnZXRjd2QoKSwnXFwnLCcvJywnZ2UnKQotICBpZiBjdXJkaXIgIX4gJy8kJworICBpZiBjdXJkaXIgIX4gJ1tcL10kJwogICAgbGV0IGN1cmRpcj0gY3VyZGlyLicvJwogICBlbmRpZgogICBpZiBhOmRvZXNjCkBAIC0yNTk1LDYgKzI3MjEsNyBAQAogICBlbHNlCiAgICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKICAgICBlY2hvZXJyICIqKiplcnJvcioqKiBjYW5ub3QgZGV0ZXJtaW5lIG1ldGhvZCIKKyAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICBlbmRpZgogICAgbGV0IGI6bmV0cndfbWV0aG9kICA9IC0xCiAgIGVuZGlmCkBAIC0yNjg1LDcgKzI4MTIsMTYgQEAKICAgbGV0ICZnZAk9IHM6Z2RrZWVwCiAgIGxldCAmdHcJPSBzOnR3a2VlcAogICBpZiBleGlzdHMoInM6c3dma2VlcCIpCi0gICBsZXQgJnN3Zj0gczpzd2ZrZWVwCisgICBpZiAmZGlyZWN0b3J5ID09ICIiCisgICAgIiB1c2VyIGhhc24ndCBzcGVjaWZpZWQgYSBzd2FwZmlsZSBkaXJlY3Rvcnk7CisgICAgIiBuZXRydyB3aWxsIHRlbXBvcmFyaWx5IG1ha2UgdGhlIHN3YXBmaWxlCisgICAgIiBkaXJlY3RvcnkgdGhlIGN1cnJlbnQgbG9jYWwgb25lLgorICAgIGxldCAmZGlyZWN0b3J5ICAgPSBnZXRjd2QoKQorICAgIHNpbGVudCEgbGV0ICZzd2YgPSBzOnN3ZmtlZXAKKyAgICBzZXQgZGlyZWN0b3J5PQorICAgZWxzZQorICAgIGxldCAmc3dmPSBzOnN3ZmtlZXAKKyAgIGVuZGlmCiAgICB1bmxldCBzOnN3ZmtlZXAKICAgZW5kaWYKICAgdW5sZXQgczphaWtlZXAKQEAgLTI3OTksNiArMjkzNSwxMiBAQAogICAgZW5kaWYKICIgICBjYWxsIERlY2hvKCJwcmlvcml0eT0iLnByaW9yaXR5LiIgc3ByaW9yaXR5PCIuc3ByaW9yaXR5LiI+IHNlcTwiLnNlcS4iPiBzZXFsaXN0PCIuc2VxbGlzdC4iPiIpCiAKKyAgICIgc2FuaXR5IGNoZWNrCisgICBpZiBzOm5ldHJ3X2Jhbm5lcmNudCA+IGxpbmUoIiQiKQorICAgICIgYXBwYXJlbnRseSBubyBmaWxlcyB3ZXJlIGxlZnQgYWZ0ZXIgYSBIaWRpbmcgcGF0dGVybiB3YXMgdXNlZAorIiAgICBjYWxsIERyZXQoIlNldFNvcnQgOiBubyBmaWxlcyBsZWZ0IGFmdGVyIGhpZGluZyIpCisgICAgcmV0dXJuCisgICBlbmRpZgogICAgaWYgc2VxID09ICcqJwogICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJHYvXlxkXHszfVwvL3MvXi8nLnNwcmlvcml0eS4nLycKICAgIGVsc2UKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3lubWVudS52aW0gYi9ydW50aW1lL3N5bm1lbnUudmltCmluZGV4IDA4OWE2ZmUuLmEzOTczYWMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3lubWVudS52aW0KKysrIGIvcnVudGltZS9zeW5tZW51LnZpbQpAQCAtMzksNDYgKzM5LDQ3IEBACiBhbiA1MC4xMC4xNTAgJlN5bnRheC5BQi5BY2VEQlwgbW9kZWwgOmNhbCBTZXRTeW4oImFjZWRiIik8Q1I+CiBhbiA1MC4xMC4xNjAgJlN5bnRheC5BQi5BZGEgOmNhbCBTZXRTeW4oImFkYSIpPENSPgogYW4gNTAuMTAuMTcwICZTeW50YXguQUIuQWZMZXggOmNhbCBTZXRTeW4oImFmbGV4Iik8Q1I+Ci1hbiA1MC4xMC4xODAgJlN5bnRheC5BQi5BbHRlcmFcIEFIREwgOmNhbCBTZXRTeW4oImFoZGwiKTxDUj4KLWFuIDUwLjEwLjE5MCAmU3ludGF4LkFCLkFtaWdhXCBET1MgOmNhbCBTZXRTeW4oImFtaWdhIik8Q1I+Ci1hbiA1MC4xMC4yMDAgJlN5bnRheC5BQi5BTVBMIDpjYWwgU2V0U3luKCJhbXBsIik8Q1I+Ci1hbiA1MC4xMC4yMTAgJlN5bnRheC5BQi5BbnRcIGJ1aWxkXCBmaWxlIDpjYWwgU2V0U3luKCJhbnQiKTxDUj4KLWFuIDUwLjEwLjIyMCAmU3ludGF4LkFCLkFOVExSIDpjYWwgU2V0U3luKCJhbnRsciIpPENSPgotYW4gNTAuMTAuMjMwICZTeW50YXguQUIuQXBhY2hlXCBjb25maWcgOmNhbCBTZXRTeW4oImFwYWNoZSIpPENSPgotYW4gNTAuMTAuMjQwICZTeW50YXguQUIuQXBhY2hlLXN0eWxlXCBjb25maWcgOmNhbCBTZXRTeW4oImFwYWNoZXN0eWxlIik8Q1I+Ci1hbiA1MC4xMC4yNTAgJlN5bnRheC5BQi5BcHBsaXhcIEVMRiA6Y2FsIFNldFN5bigiZWxmIik8Q1I+Ci1hbiA1MC4xMC4yNjAgJlN5bnRheC5BQi5BcmNcIE1hY3JvXCBMYW5ndWFnZSA6Y2FsIFNldFN5bigiYW1sIik8Q1I+Ci1hbiA1MC4xMC4yNzAgJlN5bnRheC5BQi5BcmNoXCBpbnZlbnRvcnkgOmNhbCBTZXRTeW4oImFyY2giKTxDUj4KLWFuIDUwLjEwLjI4MCAmU3ludGF4LkFCLkFSVCA6Y2FsIFNldFN5bigiYXJ0Iik8Q1I+Ci1hbiA1MC4xMC4yOTAgJlN5bnRheC5BQi5BU1BcIHdpdGhcIFZCU2NyaXB0IDpjYWwgU2V0U3luKCJhc3B2YnMiKTxDUj4KLWFuIDUwLjEwLjMwMCAmU3ludGF4LkFCLkFTUFwgd2l0aFwgUGVybCA6Y2FsIFNldFN5bigiYXNwcGVybCIpPENSPgotYW4gNTAuMTAuMzEwICZTeW50YXguQUIuQXNzZW1ibHkuNjgweDAgOmNhbCBTZXRTeW4oImFzbTY4ayIpPENSPgotYW4gNTAuMTAuMzIwICZTeW50YXguQUIuQXNzZW1ibHkuRmxhdCA6Y2FsIFNldFN5bigiZmFzbSIpPENSPgotYW4gNTAuMTAuMzMwICZTeW50YXguQUIuQXNzZW1ibHkuR05VIDpjYWwgU2V0U3luKCJhc20iKTxDUj4KLWFuIDUwLjEwLjM0MCAmU3ludGF4LkFCLkFzc2VtYmx5LkdOVVwgSC04MzAwIDpjYWwgU2V0U3luKCJhc21oODMwMCIpPENSPgotYW4gNTAuMTAuMzUwICZTeW50YXguQUIuQXNzZW1ibHkuSW50ZWxcIElBLTY0IDpjYWwgU2V0U3luKCJpYTY0Iik8Q1I+Ci1hbiA1MC4xMC4zNjAgJlN5bnRheC5BQi5Bc3NlbWJseS5NaWNyb3NvZnQgOmNhbCBTZXRTeW4oIm1hc20iKTxDUj4KLWFuIDUwLjEwLjM3MCAmU3ludGF4LkFCLkFzc2VtYmx5Lk5ldHdpZGUgOmNhbCBTZXRTeW4oIm5hc20iKTxDUj4KLWFuIDUwLjEwLjM4MCAmU3ludGF4LkFCLkFzc2VtYmx5LlBJQyA6Y2FsIFNldFN5bigicGljIik8Q1I+Ci1hbiA1MC4xMC4zOTAgJlN5bnRheC5BQi5Bc3NlbWJseS5UdXJibyA6Y2FsIFNldFN5bigidGFzbSIpPENSPgotYW4gNTAuMTAuNDAwICZTeW50YXguQUIuQXNzZW1ibHkuVkFYXCBNYWNyb1wgQXNzZW1ibHkgOmNhbCBTZXRTeW4oInZtYXNtIik8Q1I+Ci1hbiA1MC4xMC40MTAgJlN5bnRheC5BQi5Bc3NlbWJseS5aLTgwIDpjYWwgU2V0U3luKCJ6OGEiKTxDUj4KLWFuIDUwLjEwLjQyMCAmU3ludGF4LkFCLkFzc2VtYmx5LnhhXCA2NTAyXCBjcm9zc1wgYXNzZW1iZXIgOmNhbCBTZXRTeW4oImE2NSIpPENSPgotYW4gNTAuMTAuNDMwICZTeW50YXguQUIuQVNOXC4xIDpjYWwgU2V0U3luKCJhc24iKTxDUj4KLWFuIDUwLjEwLjQ0MCAmU3ludGF4LkFCLkF0bGFzIDpjYWwgU2V0U3luKCJhdGxhcyIpPENSPgotYW4gNTAuMTAuNDUwICZTeW50YXguQUIuQXV0b21ha2UgOmNhbCBTZXRTeW4oImF1dG9tYWtlIik8Q1I+Ci1hbiA1MC4xMC40NjAgJlN5bnRheC5BQi5BdmVudWUgOmNhbCBTZXRTeW4oImF2ZSIpPENSPgotYW4gNTAuMTAuNDcwICZTeW50YXguQUIuQXdrIDpjYWwgU2V0U3luKCJhd2siKTxDUj4KLWFuIDUwLjEwLjQ4MCAmU3ludGF4LkFCLkFZYWNjIDpjYWwgU2V0U3luKCJheWFjYyIpPENSPgotYW4gNTAuMTAuNTAwICZTeW50YXguQUIuQiA6Y2FsIFNldFN5bigiYiIpPENSPgotYW4gNTAuMTAuNTEwICZTeW50YXguQUIuQmFhbiA6Y2FsIFNldFN5bigiYmFhbiIpPENSPgotYW4gNTAuMTAuNTIwICZTeW50YXguQUIuQkFTSUMgOmNhbCBTZXRTeW4oImJhc2ljIik8Q1I+Ci1hbiA1MC4xMC41MzAgJlN5bnRheC5BQi5CQ1wgY2FsY3VsYXRvciA6Y2FsIFNldFN5bigiYmMiKTxDUj4KLWFuIDUwLjEwLjU0MCAmU3ludGF4LkFCLkJERlwgZm9udCA6Y2FsIFNldFN5bigiYmRmIik8Q1I+Ci1hbiA1MC4xMC41NTAgJlN5bnRheC5BQi5CaWJUZVggOmNhbCBTZXRTeW4oImJpYiIpPENSPgotYW4gNTAuMTAuNTYwICZTeW50YXguQUIuQklORC5CSU5EXCBjb25maWcgOmNhbCBTZXRTeW4oIm5hbWVkIik8Q1I+Ci1hbiA1MC4xMC41NzAgJlN5bnRheC5BQi5CSU5ELkJJTkRcIHpvbmUgOmNhbCBTZXRTeW4oImJpbmR6b25lIik8Q1I+Ci1hbiA1MC4xMC41ODAgJlN5bnRheC5BQi5CbGFuayA6Y2FsIFNldFN5bigiYmxhbmsiKTxDUj4KK2FuIDUwLjEwLjE4MCAmU3ludGF4LkFCLkFMU0FcIGNvbmZpZyA6Y2FsIFNldFN5bigiYWxzYWNvbmYiKTxDUj4KK2FuIDUwLjEwLjE5MCAmU3ludGF4LkFCLkFsdGVyYVwgQUhETCA6Y2FsIFNldFN5bigiYWhkbCIpPENSPgorYW4gNTAuMTAuMjAwICZTeW50YXguQUIuQW1pZ2FcIERPUyA6Y2FsIFNldFN5bigiYW1pZ2EiKTxDUj4KK2FuIDUwLjEwLjIxMCAmU3ludGF4LkFCLkFNUEwgOmNhbCBTZXRTeW4oImFtcGwiKTxDUj4KK2FuIDUwLjEwLjIyMCAmU3ludGF4LkFCLkFudFwgYnVpbGRcIGZpbGUgOmNhbCBTZXRTeW4oImFudCIpPENSPgorYW4gNTAuMTAuMjMwICZTeW50YXguQUIuQU5UTFIgOmNhbCBTZXRTeW4oImFudGxyIik8Q1I+CithbiA1MC4xMC4yNDAgJlN5bnRheC5BQi5BcGFjaGVcIGNvbmZpZyA6Y2FsIFNldFN5bigiYXBhY2hlIik8Q1I+CithbiA1MC4xMC4yNTAgJlN5bnRheC5BQi5BcGFjaGUtc3R5bGVcIGNvbmZpZyA6Y2FsIFNldFN5bigiYXBhY2hlc3R5bGUiKTxDUj4KK2FuIDUwLjEwLjI2MCAmU3ludGF4LkFCLkFwcGxpeFwgRUxGIDpjYWwgU2V0U3luKCJlbGYiKTxDUj4KK2FuIDUwLjEwLjI3MCAmU3ludGF4LkFCLkFyY1wgTWFjcm9cIExhbmd1YWdlIDpjYWwgU2V0U3luKCJhbWwiKTxDUj4KK2FuIDUwLjEwLjI4MCAmU3ludGF4LkFCLkFyY2hcIGludmVudG9yeSA6Y2FsIFNldFN5bigiYXJjaCIpPENSPgorYW4gNTAuMTAuMjkwICZTeW50YXguQUIuQVJUIDpjYWwgU2V0U3luKCJhcnQiKTxDUj4KK2FuIDUwLjEwLjMwMCAmU3ludGF4LkFCLkFTUFwgd2l0aFwgVkJTY3JpcHQgOmNhbCBTZXRTeW4oImFzcHZicyIpPENSPgorYW4gNTAuMTAuMzEwICZTeW50YXguQUIuQVNQXCB3aXRoXCBQZXJsIDpjYWwgU2V0U3luKCJhc3BwZXJsIik8Q1I+CithbiA1MC4xMC4zMjAgJlN5bnRheC5BQi5Bc3NlbWJseS42ODB4MCA6Y2FsIFNldFN5bigiYXNtNjhrIik8Q1I+CithbiA1MC4xMC4zMzAgJlN5bnRheC5BQi5Bc3NlbWJseS5GbGF0IDpjYWwgU2V0U3luKCJmYXNtIik8Q1I+CithbiA1MC4xMC4zNDAgJlN5bnRheC5BQi5Bc3NlbWJseS5HTlUgOmNhbCBTZXRTeW4oImFzbSIpPENSPgorYW4gNTAuMTAuMzUwICZTeW50YXguQUIuQXNzZW1ibHkuR05VXCBILTgzMDAgOmNhbCBTZXRTeW4oImFzbWg4MzAwIik8Q1I+CithbiA1MC4xMC4zNjAgJlN5bnRheC5BQi5Bc3NlbWJseS5JbnRlbFwgSUEtNjQgOmNhbCBTZXRTeW4oImlhNjQiKTxDUj4KK2FuIDUwLjEwLjM3MCAmU3ludGF4LkFCLkFzc2VtYmx5Lk1pY3Jvc29mdCA6Y2FsIFNldFN5bigibWFzbSIpPENSPgorYW4gNTAuMTAuMzgwICZTeW50YXguQUIuQXNzZW1ibHkuTmV0d2lkZSA6Y2FsIFNldFN5bigibmFzbSIpPENSPgorYW4gNTAuMTAuMzkwICZTeW50YXguQUIuQXNzZW1ibHkuUElDIDpjYWwgU2V0U3luKCJwaWMiKTxDUj4KK2FuIDUwLjEwLjQwMCAmU3ludGF4LkFCLkFzc2VtYmx5LlR1cmJvIDpjYWwgU2V0U3luKCJ0YXNtIik8Q1I+CithbiA1MC4xMC40MTAgJlN5bnRheC5BQi5Bc3NlbWJseS5WQVhcIE1hY3JvXCBBc3NlbWJseSA6Y2FsIFNldFN5bigidm1hc20iKTxDUj4KK2FuIDUwLjEwLjQyMCAmU3ludGF4LkFCLkFzc2VtYmx5LlotODAgOmNhbCBTZXRTeW4oIno4YSIpPENSPgorYW4gNTAuMTAuNDMwICZTeW50YXguQUIuQXNzZW1ibHkueGFcIDY1MDJcIGNyb3NzXCBhc3NlbWJlciA6Y2FsIFNldFN5bigiYTY1Iik8Q1I+CithbiA1MC4xMC40NDAgJlN5bnRheC5BQi5BU05cLjEgOmNhbCBTZXRTeW4oImFzbiIpPENSPgorYW4gNTAuMTAuNDUwICZTeW50YXguQUIuQXRsYXMgOmNhbCBTZXRTeW4oImF0bGFzIik8Q1I+CithbiA1MC4xMC40NjAgJlN5bnRheC5BQi5BdXRvbWFrZSA6Y2FsIFNldFN5bigiYXV0b21ha2UiKTxDUj4KK2FuIDUwLjEwLjQ3MCAmU3ludGF4LkFCLkF2ZW51ZSA6Y2FsIFNldFN5bigiYXZlIik8Q1I+CithbiA1MC4xMC40ODAgJlN5bnRheC5BQi5Bd2sgOmNhbCBTZXRTeW4oImF3ayIpPENSPgorYW4gNTAuMTAuNDkwICZTeW50YXguQUIuQVlhY2MgOmNhbCBTZXRTeW4oImF5YWNjIik8Q1I+CithbiA1MC4xMC41MTAgJlN5bnRheC5BQi5CIDpjYWwgU2V0U3luKCJiIik8Q1I+CithbiA1MC4xMC41MjAgJlN5bnRheC5BQi5CYWFuIDpjYWwgU2V0U3luKCJiYWFuIik8Q1I+CithbiA1MC4xMC41MzAgJlN5bnRheC5BQi5CQVNJQyA6Y2FsIFNldFN5bigiYmFzaWMiKTxDUj4KK2FuIDUwLjEwLjU0MCAmU3ludGF4LkFCLkJDXCBjYWxjdWxhdG9yIDpjYWwgU2V0U3luKCJiYyIpPENSPgorYW4gNTAuMTAuNTUwICZTeW50YXguQUIuQkRGXCBmb250IDpjYWwgU2V0U3luKCJiZGYiKTxDUj4KK2FuIDUwLjEwLjU2MCAmU3ludGF4LkFCLkJpYlRlWCA6Y2FsIFNldFN5bigiYmliIik8Q1I+CithbiA1MC4xMC41NzAgJlN5bnRheC5BQi5CSU5ELkJJTkRcIGNvbmZpZyA6Y2FsIFNldFN5bigibmFtZWQiKTxDUj4KK2FuIDUwLjEwLjU4MCAmU3ludGF4LkFCLkJJTkQuQklORFwgem9uZSA6Y2FsIFNldFN5bigiYmluZHpvbmUiKTxDUj4KK2FuIDUwLjEwLjU5MCAmU3ludGF4LkFCLkJsYW5rIDpjYWwgU2V0U3luKCJibGFuayIpPENSPgogYW4gNTAuMjAuMTAwICZTeW50YXguQy5DIDpjYWwgU2V0U3luKCJjIik8Q1I+CiBhbiA1MC4yMC4xMTAgJlN5bnRheC5DLkMrKyA6Y2FsIFNldFN5bigiY3BwIik8Q1I+CiBhbiA1MC4yMC4xMjAgJlN5bnRheC5DLkMjIDpjYWwgU2V0U3luKCJjcyIpPENSPgpAQCAtMzM2LDQ2ICszMzcsNDcgQEAKIGFuIDUwLjEwMC4xMjAgJlN5bnRheC5TaC1TLlNoZWxsXCBzY3JpcHQudGNzaCA6Y2FsIFNldFN5bigidGNzaCIpPENSPgogYW4gNTAuMTAwLjEzMCAmU3ludGF4LlNoLVMuU2hlbGxcIHNjcmlwdC56c2ggOmNhbCBTZXRTeW4oInpzaCIpPENSPgogYW4gNTAuMTAwLjE0MCAmU3ludGF4LlNoLVMuU2lDQUQgOmNhbCBTZXRTeW4oInNpY2FkIik8Q1I+Ci1hbiA1MC4xMDAuMTUwICZTeW50YXguU2gtUy5TaW11bGEgOmNhbCBTZXRTeW4oInNpbXVsYSIpPENSPgotYW4gNTAuMTAwLjE2MCAmU3ludGF4LlNoLVMuU2luZGEuU2luZGFcIGNvbXBhcmUgOmNhbCBTZXRTeW4oInNpbmRhY21wIik8Q1I+Ci1hbiA1MC4xMDAuMTcwICZTeW50YXguU2gtUy5TaW5kYS5TaW5kYVwgaW5wdXQgOmNhbCBTZXRTeW4oInNpbmRhIik8Q1I+Ci1hbiA1MC4xMDAuMTgwICZTeW50YXguU2gtUy5TaW5kYS5TaW5kYVwgb3V0cHV0IDpjYWwgU2V0U3luKCJzaW5kYW91dCIpPENSPgotYW4gNTAuMTAwLjE5MCAmU3ludGF4LlNoLVMuU0tJTEwuU0tJTEwgOmNhbCBTZXRTeW4oInNraWxsIik8Q1I+Ci1hbiA1MC4xMDAuMjAwICZTeW50YXguU2gtUy5TS0lMTC5TS0lMTFwgZm9yXCBEaXZhIDpjYWwgU2V0U3luKCJkaXZhIik8Q1I+Ci1hbiA1MC4xMDAuMjEwICZTeW50YXguU2gtUy5TbGljZSA6Y2FsIFNldFN5bigic2xpY2UiKTxDUj4KLWFuIDUwLjEwMC4yMjAgJlN5bnRheC5TaC1TLlNMUk4uU2xyblwgcmMgOmNhbCBTZXRTeW4oInNscm5yYyIpPENSPgotYW4gNTAuMTAwLjIzMCAmU3ludGF4LlNoLVMuU0xSTi5TbHJuXCBzY29yZSA6Y2FsIFNldFN5bigic2xybnNjIik8Q1I+Ci1hbiA1MC4xMDAuMjQwICZTeW50YXguU2gtUy5TbWFsbFRhbGsgOmNhbCBTZXRTeW4oInN0Iik8Q1I+Ci1hbiA1MC4xMDAuMjUwICZTeW50YXguU2gtUy5TbWFydHlcIFRlbXBsYXRlcyA6Y2FsIFNldFN5bigic21hcnR5Iik8Q1I+Ci1hbiA1MC4xMDAuMjYwICZTeW50YXguU2gtUy5TTUlMIDpjYWwgU2V0U3luKCJzbWlsIik8Q1I+Ci1hbiA1MC4xMDAuMjcwICZTeW50YXguU2gtUy5TTUlUSCA6Y2FsIFNldFN5bigic21pdGgiKTxDUj4KLWFuIDUwLjEwMC4yODAgJlN5bnRheC5TaC1TLlNOTVBcIE1JQiA6Y2FsIFNldFN5bigibWliIik8Q1I+Ci1hbiA1MC4xMDAuMjkwICZTeW50YXguU2gtUy5TTk5TLlNOTlNcIG5ldHdvcmsgOmNhbCBTZXRTeW4oInNubnNuZXQiKTxDUj4KLWFuIDUwLjEwMC4zMDAgJlN5bnRheC5TaC1TLlNOTlMuU05OU1wgcGF0dGVybiA6Y2FsIFNldFN5bigic25uc3BhdCIpPENSPgotYW4gNTAuMTAwLjMxMCAmU3ludGF4LlNoLVMuU05OUy5TTk5TXCByZXN1bHQgOmNhbCBTZXRTeW4oInNubnNyZXMiKTxDUj4KLWFuIDUwLjEwMC4zMjAgJlN5bnRheC5TaC1TLlNub2JvbDQgOmNhbCBTZXRTeW4oInNub2JvbDQiKTxDUj4KLWFuIDUwLjEwMC4zMzAgJlN5bnRheC5TaC1TLlNub3J0XCBDb25maWd1cmF0aW9uIDpjYWwgU2V0U3luKCJob2ciKTxDUj4KLWFuIDUwLjEwMC4zNDAgJlN5bnRheC5TaC1TLlNQRUNcIChMaW51eFwgUlBNKSA6Y2FsIFNldFN5bigic3BlYyIpPENSPgotYW4gNTAuMTAwLjM1MCAmU3ludGF4LlNoLVMuU3BlY21hbiA6Y2FsIFNldFN5bigic3BlY21hbiIpPENSPgotYW4gNTAuMTAwLjM2MCAmU3ludGF4LlNoLVMuU3BpY2UgOmNhbCBTZXRTeW4oInNwaWNlIik8Q1I+Ci1hbiA1MC4xMDAuMzcwICZTeW50YXguU2gtUy5TcHljZSA6Y2FsIFNldFN5bigic3B5Y2UiKTxDUj4KLWFuIDUwLjEwMC4zODAgJlN5bnRheC5TaC1TLlNwZWVkdXAgOmNhbCBTZXRTeW4oInNwdXAiKTxDUj4KLWFuIDUwLjEwMC4zOTAgJlN5bnRheC5TaC1TLlNwbGludCA6Y2FsIFNldFN5bigic3BsaW50Iik8Q1I+Ci1hbiA1MC4xMDAuNDAwICZTeW50YXguU2gtUy5TcXVpZFwgY29uZmlnIDpjYWwgU2V0U3luKCJzcXVpZCIpPENSPgotYW4gNTAuMTAwLjQxMCAmU3ludGF4LlNoLVMuU1FMLkVTUUwtQyA6Y2FsIFNldFN5bigiZXNxbGMiKTxDUj4KLWFuIDUwLjEwMC40MjAgJlN5bnRheC5TaC1TLlNRTC5NeVNRTCA6Y2FsIFNldFN5bigibXlzcWwiKTxDUj4KLWFuIDUwLjEwMC40MzAgJlN5bnRheC5TaC1TLlNRTC5QTC9TUUwgOmNhbCBTZXRTeW4oInBsc3FsIik8Q1I+Ci1hbiA1MC4xMDAuNDQwICZTeW50YXguU2gtUy5TUUwuU1FMXCAoT3JhY2xlKSA6Y2FsIFNldFN5bigic3FsIik8Q1I+Ci1hbiA1MC4xMDAuNDUwICZTeW50YXguU2gtUy5TUUwuU1FMXCBGb3JtcyA6Y2FsIFNldFN5bigic3FsZm9ybXMiKTxDUj4KLWFuIDUwLjEwMC40NjAgJlN5bnRheC5TaC1TLlNRTC5TUUxKIDpjYWwgU2V0U3luKCJzcWxqIik8Q1I+Ci1hbiA1MC4xMDAuNDcwICZTeW50YXguU2gtUy5TUUwuU1FMLUluZm9ybWl4IDpjYWwgU2V0U3luKCJzcWxpbmZvcm1peCIpPENSPgotYW4gNTAuMTAwLjQ4MCAmU3ludGF4LlNoLVMuU1FSIDpjYWwgU2V0U3luKCJzcXIiKTxDUj4KLWFuIDUwLjEwMC40OTAgJlN5bnRheC5TaC1TLlNzaC5zc2hfY29uZmlnIDpjYWwgU2V0U3luKCJzc2hjb25maWciKTxDUj4KLWFuIDUwLjEwMC41MDAgJlN5bnRheC5TaC1TLlNzaC5zc2hkX2NvbmZpZyA6Y2FsIFNldFN5bigic3NoZGNvbmZpZyIpPENSPgotYW4gNTAuMTAwLjUxMCAmU3ludGF4LlNoLVMuU3RhbmRhcmRcIE1MIDpjYWwgU2V0U3luKCJzbWwiKTxDUj4KLWFuIDUwLjEwMC41MjAgJlN5bnRheC5TaC1TLlN0b3JlZFwgUHJvY2VkdXJlcyA6Y2FsIFNldFN5bigic3RwIik8Q1I+Ci1hbiA1MC4xMDAuNTMwICZTeW50YXguU2gtUy5TdHJhY2UgOmNhbCBTZXRTeW4oInN0cmFjZSIpPENSPgotYW4gNTAuMTAwLjU0MCAmU3ludGF4LlNoLVMuU3VidmVyc2lvblwgY29tbWl0IDpjYWwgU2V0U3luKCJzdm4iKTxDUj4KK2FuIDUwLjEwMC4xNTAgJlN5bnRheC5TaC1TLlNpZXZlIDpjYWwgU2V0U3luKCJzaWV2ZSIpPENSPgorYW4gNTAuMTAwLjE2MCAmU3ludGF4LlNoLVMuU2ltdWxhIDpjYWwgU2V0U3luKCJzaW11bGEiKTxDUj4KK2FuIDUwLjEwMC4xNzAgJlN5bnRheC5TaC1TLlNpbmRhLlNpbmRhXCBjb21wYXJlIDpjYWwgU2V0U3luKCJzaW5kYWNtcCIpPENSPgorYW4gNTAuMTAwLjE4MCAmU3ludGF4LlNoLVMuU2luZGEuU2luZGFcIGlucHV0IDpjYWwgU2V0U3luKCJzaW5kYSIpPENSPgorYW4gNTAuMTAwLjE5MCAmU3ludGF4LlNoLVMuU2luZGEuU2luZGFcIG91dHB1dCA6Y2FsIFNldFN5bigic2luZGFvdXQiKTxDUj4KK2FuIDUwLjEwMC4yMDAgJlN5bnRheC5TaC1TLlNLSUxMLlNLSUxMIDpjYWwgU2V0U3luKCJza2lsbCIpPENSPgorYW4gNTAuMTAwLjIxMCAmU3ludGF4LlNoLVMuU0tJTEwuU0tJTExcIGZvclwgRGl2YSA6Y2FsIFNldFN5bigiZGl2YSIpPENSPgorYW4gNTAuMTAwLjIyMCAmU3ludGF4LlNoLVMuU2xpY2UgOmNhbCBTZXRTeW4oInNsaWNlIik8Q1I+CithbiA1MC4xMDAuMjMwICZTeW50YXguU2gtUy5TTFJOLlNscm5cIHJjIDpjYWwgU2V0U3luKCJzbHJucmMiKTxDUj4KK2FuIDUwLjEwMC4yNDAgJlN5bnRheC5TaC1TLlNMUk4uU2xyblwgc2NvcmUgOmNhbCBTZXRTeW4oInNscm5zYyIpPENSPgorYW4gNTAuMTAwLjI1MCAmU3ludGF4LlNoLVMuU21hbGxUYWxrIDpjYWwgU2V0U3luKCJzdCIpPENSPgorYW4gNTAuMTAwLjI2MCAmU3ludGF4LlNoLVMuU21hcnR5XCBUZW1wbGF0ZXMgOmNhbCBTZXRTeW4oInNtYXJ0eSIpPENSPgorYW4gNTAuMTAwLjI3MCAmU3ludGF4LlNoLVMuU01JTCA6Y2FsIFNldFN5bigic21pbCIpPENSPgorYW4gNTAuMTAwLjI4MCAmU3ludGF4LlNoLVMuU01JVEggOmNhbCBTZXRTeW4oInNtaXRoIik8Q1I+CithbiA1MC4xMDAuMjkwICZTeW50YXguU2gtUy5TTk1QXCBNSUIgOmNhbCBTZXRTeW4oIm1pYiIpPENSPgorYW4gNTAuMTAwLjMwMCAmU3ludGF4LlNoLVMuU05OUy5TTk5TXCBuZXR3b3JrIDpjYWwgU2V0U3luKCJzbm5zbmV0Iik8Q1I+CithbiA1MC4xMDAuMzEwICZTeW50YXguU2gtUy5TTk5TLlNOTlNcIHBhdHRlcm4gOmNhbCBTZXRTeW4oInNubnNwYXQiKTxDUj4KK2FuIDUwLjEwMC4zMjAgJlN5bnRheC5TaC1TLlNOTlMuU05OU1wgcmVzdWx0IDpjYWwgU2V0U3luKCJzbm5zcmVzIik8Q1I+CithbiA1MC4xMDAuMzMwICZTeW50YXguU2gtUy5Tbm9ib2w0IDpjYWwgU2V0U3luKCJzbm9ib2w0Iik8Q1I+CithbiA1MC4xMDAuMzQwICZTeW50YXguU2gtUy5Tbm9ydFwgQ29uZmlndXJhdGlvbiA6Y2FsIFNldFN5bigiaG9nIik8Q1I+CithbiA1MC4xMDAuMzUwICZTeW50YXguU2gtUy5TUEVDXCAoTGludXhcIFJQTSkgOmNhbCBTZXRTeW4oInNwZWMiKTxDUj4KK2FuIDUwLjEwMC4zNjAgJlN5bnRheC5TaC1TLlNwZWNtYW4gOmNhbCBTZXRTeW4oInNwZWNtYW4iKTxDUj4KK2FuIDUwLjEwMC4zNzAgJlN5bnRheC5TaC1TLlNwaWNlIDpjYWwgU2V0U3luKCJzcGljZSIpPENSPgorYW4gNTAuMTAwLjM4MCAmU3ludGF4LlNoLVMuU3B5Y2UgOmNhbCBTZXRTeW4oInNweWNlIik8Q1I+CithbiA1MC4xMDAuMzkwICZTeW50YXguU2gtUy5TcGVlZHVwIDpjYWwgU2V0U3luKCJzcHVwIik8Q1I+CithbiA1MC4xMDAuNDAwICZTeW50YXguU2gtUy5TcGxpbnQgOmNhbCBTZXRTeW4oInNwbGludCIpPENSPgorYW4gNTAuMTAwLjQxMCAmU3ludGF4LlNoLVMuU3F1aWRcIGNvbmZpZyA6Y2FsIFNldFN5bigic3F1aWQiKTxDUj4KK2FuIDUwLjEwMC40MjAgJlN5bnRheC5TaC1TLlNRTC5FU1FMLUMgOmNhbCBTZXRTeW4oImVzcWxjIik8Q1I+CithbiA1MC4xMDAuNDMwICZTeW50YXguU2gtUy5TUUwuTXlTUUwgOmNhbCBTZXRTeW4oIm15c3FsIik8Q1I+CithbiA1MC4xMDAuNDQwICZTeW50YXguU2gtUy5TUUwuUEwvU1FMIDpjYWwgU2V0U3luKCJwbHNxbCIpPENSPgorYW4gNTAuMTAwLjQ1MCAmU3ludGF4LlNoLVMuU1FMLlNRTFwgKE9yYWNsZSkgOmNhbCBTZXRTeW4oInNxbCIpPENSPgorYW4gNTAuMTAwLjQ2MCAmU3ludGF4LlNoLVMuU1FMLlNRTFwgRm9ybXMgOmNhbCBTZXRTeW4oInNxbGZvcm1zIik8Q1I+CithbiA1MC4xMDAuNDcwICZTeW50YXguU2gtUy5TUUwuU1FMSiA6Y2FsIFNldFN5bigic3FsaiIpPENSPgorYW4gNTAuMTAwLjQ4MCAmU3ludGF4LlNoLVMuU1FMLlNRTC1JbmZvcm1peCA6Y2FsIFNldFN5bigic3FsaW5mb3JtaXgiKTxDUj4KK2FuIDUwLjEwMC40OTAgJlN5bnRheC5TaC1TLlNRUiA6Y2FsIFNldFN5bigic3FyIik8Q1I+CithbiA1MC4xMDAuNTAwICZTeW50YXguU2gtUy5Tc2guc3NoX2NvbmZpZyA6Y2FsIFNldFN5bigic3NoY29uZmlnIik8Q1I+CithbiA1MC4xMDAuNTEwICZTeW50YXguU2gtUy5Tc2guc3NoZF9jb25maWcgOmNhbCBTZXRTeW4oInNzaGRjb25maWciKTxDUj4KK2FuIDUwLjEwMC41MjAgJlN5bnRheC5TaC1TLlN0YW5kYXJkXCBNTCA6Y2FsIFNldFN5bigic21sIik8Q1I+CithbiA1MC4xMDAuNTMwICZTeW50YXguU2gtUy5TdG9yZWRcIFByb2NlZHVyZXMgOmNhbCBTZXRTeW4oInN0cCIpPENSPgorYW4gNTAuMTAwLjU0MCAmU3ludGF4LlNoLVMuU3RyYWNlIDpjYWwgU2V0U3luKCJzdHJhY2UiKTxDUj4KK2FuIDUwLjEwMC41NTAgJlN5bnRheC5TaC1TLlN1YnZlcnNpb25cIGNvbW1pdCA6Y2FsIFNldFN5bigic3ZuIik8Q1I+CiBhbiA1MC4xMTAuMTAwICZTeW50YXguVFVWLlRBRFMgOmNhbCBTZXRTeW4oInRhZHMiKTxDUj4KIGFuIDUwLjExMC4xMTAgJlN5bnRheC5UVVYuVGFncyA6Y2FsIFNldFN5bigidGFncyIpPENSPgogYW4gNTAuMTEwLjEyMCAmU3ludGF4LlRVVi5UQUsuVEFLXCBjb21wYXJlIDpjYWwgU2V0U3luKCJ0YWtjbXAiKTxDUj4KQEAgLTM5MiwyMyArMzk0LDI0IEBACiBhbiA1MC4xMTAuMjMwICZTeW50YXguVFVWLlRGXCBtdWRcIGNsaWVudCA6Y2FsIFNldFN5bigidGYiKTxDUj4KIGFuIDUwLjExMC4yNDAgJlN5bnRheC5UVVYuVGlkeVwgY29uZmlndXJhdGlvbiA6Y2FsIFNldFN5bigidGlkeSIpPENSPgogYW4gNTAuMTEwLjI1MCAmU3ludGF4LlRVVi5UaWxkZSA6Y2FsIFNldFN5bigidGlsZGUiKTxDUj4KLWFuIDUwLjExMC4yNjAgJlN5bnRheC5UVVYuVHJhc3lzXCBpbnB1dCA6Y2FsIFNldFN5bigidHJhc3lzIik8Q1I+Ci1hbiA1MC4xMTAuMjcwICZTeW50YXguVFVWLlRTUy5Db21tYW5kXCBMaW5lIDpjYWwgU2V0U3luKCJ0c3NjbCIpPENSPgotYW4gNTAuMTEwLjI4MCAmU3ludGF4LlRVVi5UU1MuR2VvbWV0cnkgOmNhbCBTZXRTeW4oInRzc2dtIik8Q1I+Ci1hbiA1MC4xMTAuMjkwICZTeW50YXguVFVWLlRTUy5PcHRpY3MgOmNhbCBTZXRTeW4oInRzc29wIik8Q1I+Ci1hbiA1MC4xMTAuMzEwICZTeW50YXguVFVWLlVJVC9VSUwgOmNhbCBTZXRTeW4oInVpbCIpPENSPgotYW4gNTAuMTEwLjMyMCAmU3ludGF4LlRVVi5VbnJlYWxTY3JpcHQgOmNhbCBTZXRTeW4oInVjIik8Q1I+Ci1hbiA1MC4xMTAuMzQwICZTeW50YXguVFVWLlZhbGdyaW5kIDpjYWwgU2V0U3luKCJ2YWxncmluZCIpPENSPgotYW4gNTAuMTEwLjM1MCAmU3ludGF4LlRVVi5WZXJpbG9nXCBIREwgOmNhbCBTZXRTeW4oInZlcmlsb2ciKTxDUj4KLWFuIDUwLjExMC4zNjAgJlN5bnRheC5UVVYuVmdyaW5kZWZzIDpjYWwgU2V0U3luKCJ2Z3JpbmRlZnMiKTxDUj4KLWFuIDUwLjExMC4zNzAgJlN5bnRheC5UVVYuVkhETCA6Y2FsIFNldFN5bigidmhkbCIpPENSPgotYW4gNTAuMTEwLjM4MCAmU3ludGF4LlRVVi5WaW0uVmltXCBoZWxwXCBmaWxlIDpjYWwgU2V0U3luKCJoZWxwIik8Q1I+Ci1hbiA1MC4xMTAuMzkwICZTeW50YXguVFVWLlZpbS5WaW1cIHNjcmlwdCA6Y2FsIFNldFN5bigidmltIik8Q1I+Ci1hbiA1MC4xMTAuNDAwICZTeW50YXguVFVWLlZpbS5WaW1pbmZvXCBmaWxlIDpjYWwgU2V0U3luKCJ2aW1pbmZvIik8Q1I+Ci1hbiA1MC4xMTAuNDEwICZTeW50YXguVFVWLlZpcmF0YVwgY29uZmlnIDpjYWwgU2V0U3luKCJ2aXJhdGEiKTxDUj4KLWFuIDUwLjExMC40MjAgJlN5bnRheC5UVVYuVmlzdWFsXCBCYXNpYyA6Y2FsIFNldFN5bigidmIiKTxDUj4KLWFuIDUwLjExMC40MzAgJlN5bnRheC5UVVYuVlJNTCA6Y2FsIFNldFN5bigidnJtbCIpPENSPgotYW4gNTAuMTEwLjQ0MCAmU3ludGF4LlRVVi5WU0VcIEpDTCA6Y2FsIFNldFN5bigidnNlamNsIik8Q1I+CithbiA1MC4xMTAuMjYwICZTeW50YXguVFVWLlRQUCA6Y2FsIFNldFN5bigidHBwIik8Q1I+CithbiA1MC4xMTAuMjcwICZTeW50YXguVFVWLlRyYXN5c1wgaW5wdXQgOmNhbCBTZXRTeW4oInRyYXN5cyIpPENSPgorYW4gNTAuMTEwLjI4MCAmU3ludGF4LlRVVi5UU1MuQ29tbWFuZFwgTGluZSA6Y2FsIFNldFN5bigidHNzY2wiKTxDUj4KK2FuIDUwLjExMC4yOTAgJlN5bnRheC5UVVYuVFNTLkdlb21ldHJ5IDpjYWwgU2V0U3luKCJ0c3NnbSIpPENSPgorYW4gNTAuMTEwLjMwMCAmU3ludGF4LlRVVi5UU1MuT3B0aWNzIDpjYWwgU2V0U3luKCJ0c3NvcCIpPENSPgorYW4gNTAuMTEwLjMyMCAmU3ludGF4LlRVVi5VSVQvVUlMIDpjYWwgU2V0U3luKCJ1aWwiKTxDUj4KK2FuIDUwLjExMC4zMzAgJlN5bnRheC5UVVYuVW5yZWFsU2NyaXB0IDpjYWwgU2V0U3luKCJ1YyIpPENSPgorYW4gNTAuMTEwLjM1MCAmU3ludGF4LlRVVi5WYWxncmluZCA6Y2FsIFNldFN5bigidmFsZ3JpbmQiKTxDUj4KK2FuIDUwLjExMC4zNjAgJlN5bnRheC5UVVYuVmVyaWxvZ1wgSERMIDpjYWwgU2V0U3luKCJ2ZXJpbG9nIik8Q1I+CithbiA1MC4xMTAuMzcwICZTeW50YXguVFVWLlZncmluZGVmcyA6Y2FsIFNldFN5bigidmdyaW5kZWZzIik8Q1I+CithbiA1MC4xMTAuMzgwICZTeW50YXguVFVWLlZIREwgOmNhbCBTZXRTeW4oInZoZGwiKTxDUj4KK2FuIDUwLjExMC4zOTAgJlN5bnRheC5UVVYuVmltLlZpbVwgaGVscFwgZmlsZSA6Y2FsIFNldFN5bigiaGVscCIpPENSPgorYW4gNTAuMTEwLjQwMCAmU3ludGF4LlRVVi5WaW0uVmltXCBzY3JpcHQgOmNhbCBTZXRTeW4oInZpbSIpPENSPgorYW4gNTAuMTEwLjQxMCAmU3ludGF4LlRVVi5WaW0uVmltaW5mb1wgZmlsZSA6Y2FsIFNldFN5bigidmltaW5mbyIpPENSPgorYW4gNTAuMTEwLjQyMCAmU3ludGF4LlRVVi5WaXJhdGFcIGNvbmZpZyA6Y2FsIFNldFN5bigidmlyYXRhIik8Q1I+CithbiA1MC4xMTAuNDMwICZTeW50YXguVFVWLlZpc3VhbFwgQmFzaWMgOmNhbCBTZXRTeW4oInZiIik8Q1I+CithbiA1MC4xMTAuNDQwICZTeW50YXguVFVWLlZSTUwgOmNhbCBTZXRTeW4oInZybWwiKTxDUj4KK2FuIDUwLjExMC40NTAgJlN5bnRheC5UVVYuVlNFXCBKQ0wgOmNhbCBTZXRTeW4oInZzZWpjbCIpPENSPgogYW4gNTAuMTIwLjEwMCAmU3ludGF4LldYWVouV0VCLkNXRUIgOmNhbCBTZXRTeW4oImN3ZWIiKTxDUj4KIGFuIDUwLjEyMC4xMTAgJlN5bnRheC5XWFlaLldFQi5XRUIgOmNhbCBTZXRTeW4oIndlYiIpPENSPgogYW4gNTAuMTIwLjEyMCAmU3ludGF4LldYWVouV0VCLldFQlwgQ2hhbmdlcyA6Y2FsIFNldFN5bigiY2hhbmdlIik8Q1I+CmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9jLnZpbSBiL3J1bnRpbWUvc3ludGF4L2MudmltCmluZGV4IDc1OWJlYmIuLmVlNzM5YjkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2MudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2MudmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gc3ludGF4IGZpbGUKICIgTGFuZ3VhZ2U6CUMKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDQgRmViIDA0CisiIExhc3QgQ2hhbmdlOgkyMDA0IERlYyAwOQogCiAiIEZvciB2ZXJzaW9uIDUueDogQ2xlYXIgYWxsIHN5bnRheCBpdGVtcwogIiBGb3IgdmVyc2lvbiA2Lng6IFF1aXQgd2hlbiBhIHN5bnRheCBmaWxlIHdhcyBhbHJlYWR5IGxvYWRlZApAQCAtMTI0LDE1ICsxMjQsMjUgQEAKICAgc3ludGF4IHJlZ2lvbiBjQ29tbWVudFN0cmluZwljb250YWluZWQgc3RhcnQ9K0xcPVxcXEA8ISIrIHNraXA9K1xcXFxcfFxcIisgZW5kPSsiKyBlbmQ9K1wqLyttZT1zLTEgY29udGFpbnM9Y1NwZWNpYWwsY0NvbW1lbnRTa2lwCiAgIHN5bnRheCByZWdpb24gY0NvbW1lbnQyU3RyaW5nCWNvbnRhaW5lZCBzdGFydD0rTFw9XFxcQDwhIisgc2tpcD0rXFxcXFx8XFwiKyBlbmQ9KyIrIGVuZD0iJCIgY29udGFpbnM9Y1NwZWNpYWwKICAgc3ludGF4IHJlZ2lvbiAgY0NvbW1lbnRMCXN0YXJ0PSIvLyIgc2tpcD0iXFwkIiBlbmQ9IiQiIGtlZXBlbmQgY29udGFpbnM9QGNDb21tZW50R3JvdXAsY0NvbW1lbnQyU3RyaW5nLGNDaGFyYWN0ZXIsY051bWJlcnNDb20sY1NwYWNlRXJyb3IsQFNwZWxsCi0gIHN5bnRheCByZWdpb24gY0NvbW1lbnQJbWF0Y2hncm91cD1jQ29tbWVudFN0YXJ0IHN0YXJ0PSIvXCoiIGVuZD0iXCovIiBjb250YWlucz1AY0NvbW1lbnRHcm91cCxjQ29tbWVudFN0YXJ0RXJyb3IsY0NvbW1lbnRTdHJpbmcsY0NoYXJhY3RlcixjTnVtYmVyc0NvbSxjU3BhY2VFcnJvcixAU3BlbGwKKyAgaWYgZXhpc3RzKCJjX25vX2NvbW1lbnRfZm9sZCIpCisgICAgc3ludGF4IHJlZ2lvbiBjQ29tbWVudAltYXRjaGdyb3VwPWNDb21tZW50U3RhcnQgc3RhcnQ9Ii9cKiIgZW5kPSJcKi8iIGNvbnRhaW5zPUBjQ29tbWVudEdyb3VwLGNDb21tZW50U3RhcnRFcnJvcixjQ29tbWVudFN0cmluZyxjQ2hhcmFjdGVyLGNOdW1iZXJzQ29tLGNTcGFjZUVycm9yLEBTcGVsbAorICBlbHNlCisgICAgc3ludGF4IHJlZ2lvbiBjQ29tbWVudAltYXRjaGdyb3VwPWNDb21tZW50U3RhcnQgc3RhcnQ9Ii9cKiIgZW5kPSJcKi8iIGNvbnRhaW5zPUBjQ29tbWVudEdyb3VwLGNDb21tZW50U3RhcnRFcnJvcixjQ29tbWVudFN0cmluZyxjQ2hhcmFjdGVyLGNOdW1iZXJzQ29tLGNTcGFjZUVycm9yLEBTcGVsbCBmb2xkCisgIGVuZGlmCiBlbHNlCiAgIHN5biByZWdpb24JY0NvbW1lbnRMCXN0YXJ0PSIvLyIgc2tpcD0iXFwkIiBlbmQ9IiQiIGtlZXBlbmQgY29udGFpbnM9QGNDb21tZW50R3JvdXAsY1NwYWNlRXJyb3IsQFNwZWxsCi0gIHN5biByZWdpb24JY0NvbW1lbnQJbWF0Y2hncm91cD1jQ29tbWVudFN0YXJ0IHN0YXJ0PSIvXCoiIGVuZD0iXCovIiBjb250YWlucz1AY0NvbW1lbnRHcm91cCxjQ29tbWVudFN0YXJ0RXJyb3IsY1NwYWNlRXJyb3IsQFNwZWxsCisgIGlmIGV4aXN0cygiY19ub19jb21tZW50X2ZvbGQiKQorICAgIHN5biByZWdpb24JY0NvbW1lbnQJbWF0Y2hncm91cD1jQ29tbWVudFN0YXJ0IHN0YXJ0PSIvXCoiIGVuZD0iXCovIiBjb250YWlucz1AY0NvbW1lbnRHcm91cCxjQ29tbWVudFN0YXJ0RXJyb3IsY1NwYWNlRXJyb3IsQFNwZWxsCisgIGVsc2UKKyAgICBzeW4gcmVnaW9uCWNDb21tZW50CW1hdGNoZ3JvdXA9Y0NvbW1lbnRTdGFydCBzdGFydD0iL1wqIiBlbmQ9IlwqLyIgY29udGFpbnM9QGNDb21tZW50R3JvdXAsY0NvbW1lbnRTdGFydEVycm9yLGNTcGFjZUVycm9yLEBTcGVsbCBmb2xkCisgIGVuZGlmCiBlbmRpZgogIiBrZWVwIGEgLy8gY29tbWVudCBzZXBhcmF0ZWx5LCBpdCB0ZXJtaW5hdGVzIGEgcHJlcHJvYy4gY29uZGl0aW9uYWwKIHN5bnRheCBtYXRjaAljQ29tbWVudEVycm9yCWRpc3BsYXkgIlwqLyIKIHN5bnRheCBtYXRjaAljQ29tbWVudFN0YXJ0RXJyb3IgZGlzcGxheSAiL1wqIm1lPWUtMSBjb250YWluZWQKIAorc3ludGF4IHJlZ2lvbgljQmxvY2sJCXN0YXJ0PSJ7IiBlbmQ9In0iIHRyYW5zcGFyZW50IGZvbGQKKwogc3luIGtleXdvcmQJY09wZXJhdG9yCXNpemVvZgogaWYgZXhpc3RzKCJjX2dudSIpCiAgIHN5biBrZXl3b3JkCWNTdGF0ZW1lbnQJX19hc21fXwpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvY3NzLnZpbSBiL3J1bnRpbWUvc3ludGF4L2Nzcy52aW0KaW5kZXggOTUzZjIyNC4uYzI0YjI5OSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvY3NzLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9jc3MudmltCkBAIC0yLDcgKzIsNyBAQAogIiBMYW5ndWFnZToJQ2FzY2FkaW5nIFN0eWxlIFNoZWV0cwogIiBNYWludGFpbmVyOglDbGF1ZGlvIEZsZWluZXIgPGNsYXVkaW9AZmxlaW5lci5jb20+CiAiIFVSTDoJCWh0dHA6Ly93d3cuZmxlaW5lci5jb20vdmltL3N5bnRheC9jc3MudmltCi0iIExhc3QgQ2hhbmdlOgkyMDAyIE9jdCAxOQorIiBMYXN0IENoYW5nZToJMjAwNCBNYXIgMzAKICIgQ1NTMiBieSBOaWtvbGFpIFdlaWJ1bGwKICIgRnVsbCBDU1MyLCBIVE1MNCBzdXBwb3J0IGJ5IFlldGkKIApAQCAtMzgsNyArMzgsNyBAQAogc3luIG1hdGNoIGNzc1NlbGVjdG9yT3AyICJbfnxdXD89IiBjb250YWluZWQKIHN5biByZWdpb24gY3NzQXR0cmlidXRlU2VsZWN0b3IgbWF0Y2hncm91cD1jc3NTZWxlY3Rvck9wIHN0YXJ0PSJcWyIgZW5kPSJdIiB0cmFuc3BhcmVudCBjb250YWlucz1jc3NVbmljb2RlRXNjYXBlLGNzc1NlbGVjdG9yT3AyLGNzc1N0cmluZ1EsY3NzU3RyaW5nUVEKIAotc3luIG1hdGNoIGNzc0lkZW50aWZpZXIgIiNcaVwrIgorc3luIG1hdGNoIGNzc0lkZW50aWZpZXIgIiNbQS1aYS16wC3/X0BdW0EtWmEtesAt/zAtOV9ALV0qIgogCiBzeW4gbWF0Y2ggY3NzTWVkaWEgIkBtZWRpYVw+IiBuZXh0Z3JvdXA9Y3NzTWVkaWFUeXBlIHNraXB3aGl0ZSBza2lwbmwKIHN5biBrZXl3b3JkIGNzc01lZGlhVHlwZSBjb250YWluZWQgc2NyZWVuIHByaW50IGF1cmFsIGJyYWlsZSBlbWJvc2VkIGhhbmRoZWxkIHByb2plY3Rpb24gdHkgdHYgYWxsIG5leHRncm91cD1jc3NNZWRpYUNvbW1hLGNzc01lZGlhQmxvY2sgc2tpcHdoaXRlIHNraXBubApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvZGViY29udHJvbC52aW0gYi9ydW50aW1lL3N5bnRheC9kZWJjb250cm9sLnZpbQppbmRleCBkNTgwZmRiLi4zZTI2YjRjIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9kZWJjb250cm9sLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9kZWJjb250cm9sLnZpbQpAQCAtMSw3ICsxLDE0IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJRGViaWFuIGNvbnRyb2wgZmlsZXMKLSIgTWFpbnRhaW5lcjoJV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CU9jdG9iZXIgMjgsIDIwMDEKKyIgTWFpbnRhaW5lcjoJR2VyZnJpZWQgRnVjaHMgPGFsZmllQGRlYmlhbi5vcmc+CisiIExhc3QgQ2hhbmdlOiAgMjkgT2N0IDIwMDQKKyIgVVJMOiAgICAgICAgICBodHRwOi8vYWxmaWUuaXN0Lm9yZy9zb2Z0d2FyZS92aW0vc3ludGF4L2RlYmNvbnRyb2wudmltCisiCisiIE9yaWdpbmFsIFZlcnNpb246IFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CisKKyIgQ29tbWVudHMgYXJlIHZlcnkgd2VsY29tZSAtIGJ1dCBwbGVhc2UgbWFrZSBzdXJlIHRoYXQgeW91IGFyZSBjb21tZW50aW5nIG9uCisiIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGZpbGUuCisiIFNQQU0gaXMgX05PVF8gd2VsY29tZSAtIGJlIHJlYWR5IHRvIGJlIHJlcG9ydGVkIQogCiAiIFN0YW5kYXJkIHN5bnRheCBpbml0aWFsaXphdGlvbgogaWYgdmVyc2lvbiA8IDYwMApAQCAtMTgsMTAgKzI1LDEwIEBACiBzeW4gbWF0Y2ggZGViQ29udHJvbFNwYWNlICIgIgogCiAiIERlZmluZSBzb21lIGNvbW1vbiBleHByZXNzaW9ucyB3ZSBjYW4gdXNlIGxhdGVyIG9uCi1zeW4gbWF0Y2ggZGViY29udHJvbEFyY2hpdGVjdHVyZSBjb250YWluZWQgIlwoYWxsXHxhbnlcfGFscGhhXHxhcm1cfGhwcGFcfGlhNjRcfGkzODZcfG02OGtcfG1pcHNlbFx8bWlwc1x8cG93ZXJwY1x8c2hcfHNoZWJcfHNwYXJjXHxodXJkLWkzODZcKSIKK3N5biBtYXRjaCBkZWJjb250cm9sQXJjaGl0ZWN0dXJlIGNvbnRhaW5lZCAiXChhbGxcfGFueVx8YWxwaGFcfGFtZDY0XHxhcm1cfGhwcGFcfGkzODZcfGlhNjRcfG02OGtcfG1pcHNlbFx8bWlwc1x8cG93ZXJwY1x8czM5MFx8c2hlYlx8c2hcfHNwYXJjNjRcfHNwYXJjXHxodXJkLWkzODZcfGtmcmVlYnNkLWkzODZcfGtuZXRic2QtaTM4Nlx8bmV0YnNkLWkzODZcKSIKIHN5biBtYXRjaCBkZWJjb250cm9sTmFtZSBjb250YWluZWQgIlthLXpdW2EtejAtOSstXSoiCiBzeW4gbWF0Y2ggZGViY29udHJvbFByaW9yaXR5IGNvbnRhaW5lZCAiXChleHRyYVx8aW1wb3J0YW50XHxvcHRpb25hbFx8cmVxdWlyZWRcfHN0YW5kYXJkXCkiCi1zeW4gbWF0Y2ggZGViY29udHJvbFNlY3Rpb24gY29udGFpbmVkICJcKFwoY29udHJpYlx8bm9uLWZyZWVcfG5vbi1VUy9tYWluXHxub24tVVMvY29udHJpYlx8bm9uLVVTL25vbi1mcmVlXCkvXClcPVwoYWRtaW5cfGJhc2VcfGNvbW1cfGRldmVsXHxkb2NcfGVkaXRvcnNcfGVsZWN0cm9uaWNzXHxnYW1lc1x8Z3JhcGhpY3NcfGhhbXJhZGlvXHxpbnRlcnByZXRlcnNcfGxpYnNcfG1haWxcfG1hdGhcfG1pc2NcfG5ldFx8bmV3c1x8b2xkbGlic1x8b3RoZXJvc2ZzXHxzY2llbmNlXHxzaGVsbHNcfHNvdW5kXHx0ZXh0XHx0ZXhcfHV0aWxzXHx3ZWJcfHgxMVx8ZGViaWFuLWluc3RhbGxlclwpIgorc3luIG1hdGNoIGRlYmNvbnRyb2xTZWN0aW9uIGNvbnRhaW5lZCAiXChcKGNvbnRyaWJcfG5vbi1mcmVlXHxub24tVVMvbWFpblx8bm9uLVVTL2NvbnRyaWJcfG5vbi1VUy9ub24tZnJlZVwpL1wpXD1cKGFkbWluXHxiYXNlXHxjb21tXHxkZXZlbFx8ZG9jXHxlZGl0b3JzXHxlbGVjdHJvbmljc1x8ZW1iZWRkZWRcfGdhbWVzXHxnbm9tZVx8Z3JhcGhpY3NcfGhhbXJhZGlvXHxpbnRlcnByZXRlcnNcfGtkZVx8bGlic1x8bGliZGV2ZWxcfG1haWxcfG1hdGhcfG1pc2NcfG5ldFx8bmV3c1x8b2xkbGlic1x8b3RoZXJvc2ZzXHxwZXJsXHxweXRob25cfHNjaWVuY2VcfHNoZWxsc1x8c291bmRcfHRleHRcfHRleFx8dXRpbHNcfHdlYlx8eDExXHxkZWJpYW4taW5zdGFsbGVyXCkiCiBzeW4gbWF0Y2ggZGViY29udHJvbFZhcmlhYmxlIGNvbnRhaW5lZCAiXCR7Llx7LX19IgogCiAiIEFuIGVtYWlsIGFkZHJlc3MKQEAgLTI5LDcgKzM2LDcgQEAKIHN5biBtYXRjaAlkZWJjb250cm9sRW1haWwJIjwuXHstfT4iCiAKICIgTGlzdCBvZiBhbGwgbGVnYWwga2V5cwotc3luIG1hdGNoIGRlYmNvbnRyb2xLZXkgY29udGFpbmVkICJeXChTb3VyY2VcfFBhY2thZ2VcfFNlY3Rpb25cfFByaW9yaXR5XHxNYWludGFpbmVyXHxVcGxvYWRlcnNcfEJ1aWxkLURlcGVuZHNcfEJ1aWxkLUNvbmZsaWN0c1x8QnVpbGQtRGVwZW5kcy1JbmRlcFx8QnVpbGQtQ29uZmxpY3RzLUluZGVwXHxTdGFuZGFyZHMtVmVyc2lvblx8UHJlLURlcGVuZHNcfERlcGVuZHNcfFJlY29tbWVuZHNcfFN1Z2dlc3RzXHxQcm92aWRlc1x8UmVwbGFjZXNcfENvbmZsaWN0c1x8RXNzZW50aWFsXHxBcmNoaXRlY3R1cmVcfERlc2NyaXB0aW9uXHxCdWdzXHxPcmlnaW5cKTogKiIKK3N5biBtYXRjaCBkZWJjb250cm9sS2V5IGNvbnRhaW5lZCAiXlwoU291cmNlXHxQYWNrYWdlXHxTZWN0aW9uXHxQcmlvcml0eVx8TWFpbnRhaW5lclx8VXBsb2FkZXJzXHxCdWlsZC1EZXBlbmRzXHxCdWlsZC1Db25mbGljdHNcfEJ1aWxkLURlcGVuZHMtSW5kZXBcfEJ1aWxkLUNvbmZsaWN0cy1JbmRlcFx8U3RhbmRhcmRzLVZlcnNpb25cfFByZS1EZXBlbmRzXHxEZXBlbmRzXHxSZWNvbW1lbmRzXHxTdWdnZXN0c1x8UHJvdmlkZXNcfFJlcGxhY2VzXHxDb25mbGljdHNcfEVzc2VudGlhbFx8QXJjaGl0ZWN0dXJlXHxEZXNjcmlwdGlvblx8QnVnc1x8T3JpZ2luXHxFbmhhbmNlc1wpOiAqIgogCiAiIEZpZWxkcyBmb3Igd2hpY2ggd2UgZG8gc3RyaWN0IHN5bnRheCBjaGVja2luZwogc3luIHJlZ2lvbiBkZWJjb250cm9sU3RyaWN0RmllbGQgc3RhcnQ9Il5BcmNoaXRlY3R1cmUiIGVuZD0iJCIgY29udGFpbnM9ZGViY29udHJvbEtleSxkZWJjb250cm9sQXJjaGl0ZWN0dXJlLGRlYmNvbnRyb2xTcGFjZSBvbmVsaW5lCkBAIC0zOCw3ICs0NSw3IEBACiBzeW4gcmVnaW9uIGRlYmNvbnRyb2xTdHJpY3RGaWVsZCBzdGFydD0iXlNlY3Rpb24iIGVuZD0iJCIgY29udGFpbnM9ZGViY29udHJvbEtleSxkZWJjb250cm9sU2VjdGlvbiBvbmVsaW5lCiAKICIgQ2F0Y2gtYWxsIGZvciB0aGUgb3RoZXIgbGVnYWwgZmllbGRzCi1zeW4gcmVnaW9uIGRlYmNvbnRyb2xGaWVsZCBzdGFydD0iXlwoTWFpbnRhaW5lclx8QnVpbGQtRGVwZW5kc1x8QnVpbGQtQ29uZmxpY3RzXHxCdWlsZC1EZXBlbmRzLUluZGVwXHxCdWlsZC1Db25mbGljdHMtSW5kZXBcfFN0YW5kYXJkcy1WZXJzaW9uXHxQcmUtRGVwZW5kc1x8RGVwZW5kc1x8UmVjb21tZW5kc1x8U3VnZ2VzdHNcfFByb3ZpZGVzXHxSZXBsYWNlc1x8Q29uZmxpY3RzXHxFc3NlbnRpYWxcfEJ1Z3NcfE9yaWdpblwpOiIgZW5kPSIkIiBjb250YWlucz1kZWJjb250cm9sS2V5LGRlYmNvbnRyb2xWYXJpYWJsZSxkZWJjb250cm9sRW1haWwgb25lbGluZQorc3luIHJlZ2lvbiBkZWJjb250cm9sRmllbGQgc3RhcnQ9Il5cKE1haW50YWluZXJcfEJ1aWxkLURlcGVuZHNcfEJ1aWxkLUNvbmZsaWN0c1x8QnVpbGQtRGVwZW5kcy1JbmRlcFx8QnVpbGQtQ29uZmxpY3RzLUluZGVwXHxTdGFuZGFyZHMtVmVyc2lvblx8UHJlLURlcGVuZHNcfERlcGVuZHNcfFJlY29tbWVuZHNcfFN1Z2dlc3RzXHxQcm92aWRlc1x8UmVwbGFjZXNcfENvbmZsaWN0c1x8RXNzZW50aWFsXHxCdWdzXHxPcmlnaW5cfEVuaGFuY2VzXCk6IiBlbmQ9IiQiIGNvbnRhaW5zPWRlYmNvbnRyb2xLZXksZGViY29udHJvbFZhcmlhYmxlLGRlYmNvbnRyb2xFbWFpbCBvbmVsaW5lCiBzeW4gcmVnaW9uIGRlYmNvbnRyb2xNdWx0aUZpZWxkIHN0YXJ0PSJeXChVcGxvYWRlcnNcfERlc2NyaXB0aW9uXCk6IiBza2lwPSJeICIgZW5kPSJeJCJtZT1zLTEgZW5kPSJeW14gXSJtZT1zLTEgY29udGFpbnM9ZGViY29udHJvbEtleSxkZWJjb250cm9sRW1haWwsZGViY29udHJvbFZhcmlhYmxlCiAKICIgQXNzb2NpYXRlIG91ciBtYXRjaGVzIGFuZCByZWdpb25zIHdpdGggcHJldHR5IGNvbG91cnMKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2phdmEudmltIGIvcnVudGltZS9zeW50YXgvamF2YS52aW0KaW5kZXggYjQ3YzE3ZS4uMDMwZTllYyAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvamF2YS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvamF2YS52aW0KQEAgLTIsNyArMiw3IEBACiAiIExhbmd1YWdlOiAgICAgSmF2YQogIiBNYWludGFpbmVyOiAgIENsYXVkaW8gRmxlaW5lciA8Y2xhdWRpb0BmbGVpbmVyLmNvbT4KICIgVVJMOgkJaHR0cDovL3d3dy5mbGVpbmVyLmNvbS92aW0vc3ludGF4L2phdmEudmltCi0iIExhc3QgQ2hhbmdlOiAgMjAwNCBBcHIgMjMKKyIgTGFzdCBDaGFuZ2U6ICAyMDA0IE5vdiAxMgogCiAiIFBsZWFzZSBjaGVjayA6aGVscCBqYXZhLnZpbSBmb3IgY29tbWVudHMgb24gc29tZSBvZiB0aGUgb3B0aW9ucyBhdmFpbGFibGUuCiAKQEAgLTM3LDcgKzM3LDcgQEAKIAogIiBrZXl3b3JkIGRlZmluaXRpb25zCiBzeW4ga2V5d29yZCBqYXZhRXh0ZXJuYWwJbmF0aXZlIHBhY2thZ2UKLXN5biBtYXRjaCBqYXZhRXh0ZXJuYWwJCSJcPGltcG9ydFwoXHNcK3N0YXRpY1w+XClcPyIKK3N5biBtYXRjaCBqYXZhRXh0ZXJuYWwgICAgICAgICAgIlw8aW1wb3J0XD5cKFxzXCtzdGF0aWNcPlwpXD8iCiBzeW4ga2V5d29yZCBqYXZhRXJyb3IJCWdvdG8gY29uc3QKIHN5biBrZXl3b3JkIGphdmFDb25kaXRpb25hbAlpZiBlbHNlIHN3aXRjaAogc3luIGtleXdvcmQgamF2YVJlcGVhdAkJd2hpbGUgZm9yIGRvCkBAIC0yMjgsNiArMjI4LDcgQEAKIAogICAiIHRvIG1ha2UgdGhpcyB3b3JrIHlvdSBtdXN0IGRlZmluZSB0aGUgaGlnaGxpZ2h0aW5nIGZvciB0aGVzZSBncm91cHMKICAgc3luIG1hdGNoIGphdmFEZWJ1ZyAiXDxTeXN0ZW1cLlwob3V0XHxlcnJcKVwucHJpbnRcKGxuXCkqXHMqKCJtZT1lLTEgY29udGFpbnM9amF2YURlYnVnLiogbmV4dGdyb3VwPWphdmFEZWJ1Z1BhcmVuCisgIHN5biBtYXRjaCBqYXZhRGVidWcgIlw8cFxzKigibWU9ZS0xIGNvbnRhaW5zPWphdmFEZWJ1Zy4qIG5leHRncm91cD1qYXZhRGVidWdQYXJlbgogICBzeW4gbWF0Y2ggamF2YURlYnVnICJbQS1aYS16XVthLXpBLVowLTlfXSpcLnByaW50U3RhY2tUcmFjZVxzKigibWU9ZS0xIGNvbnRhaW5zPWphdmFEZWJ1Zy4qIG5leHRncm91cD1qYXZhRGVidWdQYXJlbgogICBzeW4gbWF0Y2ggamF2YURlYnVnICJcPHRyYWNlW1NMXVw9XHMqKCJtZT1lLTEgY29udGFpbnM9amF2YURlYnVnLiogbmV4dGdyb3VwPWphdmFEZWJ1Z1BhcmVuCiAKQEAgLTI2Myw2ICsyNjQsMTIgQEAKIHN5biByZWdpb24gIGphdmFQYXJlblQxIHRyYW5zcGFyZW50IG1hdGNoZ3JvdXA9amF2YVBhcmVuMSBzdGFydD0iKCIgZW5kPSIpIiBjb250YWlucz1AamF2YVRvcCxqYXZhUGFyZW5UMiBjb250YWluZWQKIHN5biByZWdpb24gIGphdmFQYXJlblQyIHRyYW5zcGFyZW50IG1hdGNoZ3JvdXA9amF2YVBhcmVuMiBzdGFydD0iKCIgZW5kPSIpIiBjb250YWlucz1AamF2YVRvcCxqYXZhUGFyZW5UICBjb250YWluZWQKIHN5biBtYXRjaCAgIGphdmFQYXJlbkVycm9yICAgICAgICIpIgorIiBjYXRjaCBlcnJvcnMgY2F1c2VkIGJ5IHdyb25nIHNxdWFyZSBwYXJlbnRoZXNpcworc3luIHJlZ2lvbiAgamF2YVBhcmVuVCAgdHJhbnNwYXJlbnQgbWF0Y2hncm91cD1qYXZhUGFyZW4gIHN0YXJ0PSJcWyIgIGVuZD0iXF0iIGNvbnRhaW5zPUBqYXZhVG9wLGphdmFQYXJlblQxCitzeW4gcmVnaW9uICBqYXZhUGFyZW5UMSB0cmFuc3BhcmVudCBtYXRjaGdyb3VwPWphdmFQYXJlbjEgc3RhcnQ9IlxbIiBlbmQ9IlxdIiBjb250YWlucz1AamF2YVRvcCxqYXZhUGFyZW5UMiBjb250YWluZWQKK3N5biByZWdpb24gIGphdmFQYXJlblQyIHRyYW5zcGFyZW50IG1hdGNoZ3JvdXA9amF2YVBhcmVuMiBzdGFydD0iXFsiIGVuZD0iXF0iIGNvbnRhaW5zPUBqYXZhVG9wLGphdmFQYXJlblQgIGNvbnRhaW5lZAorc3luIG1hdGNoICAgamF2YVBhcmVuRXJyb3IgICAgICAgIlxdIgorCiBKYXZhSGlMaW5rIGphdmFQYXJlbkVycm9yICAgICAgIGphdmFFcnJvcgogCiBpZiAhZXhpc3RzKCJqYXZhX21pbmxpbmVzIikKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2phdmFzY3JpcHQudmltIGIvcnVudGltZS9zeW50YXgvamF2YXNjcmlwdC52aW0KaW5kZXggYTAzNzQ5Ni4uYzIyYWVmYSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvamF2YXNjcmlwdC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvamF2YXNjcmlwdC52aW0KQEAgLTIsNyArMiw3IEBACiAiIExhbmd1YWdlOglKYXZhU2NyaXB0CiAiIE1haW50YWluZXI6CUNsYXVkaW8gRmxlaW5lciA8Y2xhdWRpb0BmbGVpbmVyLmNvbT4KICIgVVJMOgkJaHR0cDovL3d3dy5mbGVpbmVyLmNvbS92aW0vc3ludGF4L2phdmFzY3JpcHQudmltCi0iIExhc3QgQ2hhbmdlOgkyMDA0IE1heSAxNgorIiBMYXN0IENoYW5nZToJMjAwNCBOb3YgMjAKIAogIiBGb3IgdmVyc2lvbiA1Lng6IENsZWFyIGFsbCBzeW50YXggaXRlbXMKICIgRm9yIHZlcnNpb24gNi54OiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKQEAgLTM1LDE0ICszNSwxNSBAQAogc3luIHJlZ2lvbiAgamF2YVNjcmlwdFN0cmluZ1MJICAgICAgIHN0YXJ0PSsnKyAgc2tpcD0rXFxcXFx8XFwnKyAgZW5kPSsnKyAgY29udGFpbnM9amF2YVNjcmlwdFNwZWNpYWwsQGh0bWxQcmVwcm9jCiBzeW4gbWF0Y2ggICBqYXZhU2NyaXB0U3BlY2lhbENoYXJhY3RlciAiJ1xcLiciCiBzeW4gbWF0Y2ggICBqYXZhU2NyaXB0TnVtYmVyCSAgICAgICAiLVw9XDxcZFwrTFw9XD5cfDBbeFhdWzAtOWEtZkEtRl1cK1w+Igotc3luIHJlZ2lvbiAgamF2YVNjcmlwdFJlZ2V4cFN0cmluZyAgICAgc3RhcnQ9Ky8rIHNraXA9K1xcXFxcfFxcLysgZW5kPSsvW2dpXVw/XHMqJCsgZW5kPSsvW2dpXVw/XHMqWzssKV0rbWU9ZS0xIGNvbnRhaW5zPUBodG1sUHJlcHJvYyBvbmVsaW5lCi1zeW4ga2V5d29yZCBqYXZhU2NyaXB0Q29uZGl0aW9uYWwgICAgICBpZiBlbHNlCi1zeW4ga2V5d29yZCBqYXZhU2NyaXB0UmVwZWF0CSAgICAgICB3aGlsZSBmb3IKLXN5biBrZXl3b3JkIGphdmFTY3JpcHRCcmFuY2gJICAgICAgIGJyZWFrIGNvbnRpbnVlIHN3aXRjaCBjYXNlIGRlZmF1bHQKLXN5biBrZXl3b3JkIGphdmFTY3JpcHRPcGVyYXRvcgkgICAgICAgbmV3IGluCi1zeW4ga2V5d29yZCBqYXZhU2NyaXB0VHlwZQkgICAgICAgdGhpcyB2YXIgY29uc3QKLXN5biBrZXl3b3JkIGphdmFTY3JpcHRTdGF0ZW1lbnQgICAgICAgIHJldHVybiB3aXRoCi1zeW4ga2V5d29yZCBqYXZhU2NyaXB0Qm9vbGVhbgkgICAgICAgdHJ1ZSBmYWxzZQorc3luIHJlZ2lvbiAgamF2YVNjcmlwdFJlZ2V4cFN0cmluZyAgICAgc3RhcnQ9Ky9bXi8qXSttZT1lLTEgc2tpcD0rXFxcXFx8XFwvKyBlbmQ9Ky9bZ2ldXD9ccyokKyBlbmQ9Ky9bZ2ldXD9ccypbOy4sKV0rbWU9ZS0xIGNvbnRhaW5zPUBodG1sUHJlcHJvYyBvbmVsaW5lCitzeW4ga2V5d29yZCBqYXZhU2NyaXB0Q29uZGl0aW9uYWwJaWYgZWxzZQorc3luIGtleXdvcmQgamF2YVNjcmlwdFJlcGVhdAkJd2hpbGUgZm9yCitzeW4ga2V5d29yZCBqYXZhU2NyaXB0QnJhbmNoCQlicmVhayBjb250aW51ZSBzd2l0Y2ggY2FzZSBkZWZhdWx0CitzeW4ga2V5d29yZCBqYXZhU2NyaXB0T3BlcmF0b3IJCW5ldyBpbgorc3luIGtleXdvcmQgamF2YVNjcmlwdFR5cGUJCXRoaXMgdmFyIGNvbnN0CitzeW4ga2V5d29yZCBqYXZhU2NyaXB0U3RhdGVtZW50CQlyZXR1cm4gd2l0aAorc3luIGtleXdvcmQgamF2YVNjcmlwdEJvb2xlYW4JCXRydWUgZmFsc2UKK3N5biBrZXl3b3JkIGphdmFTY3JpcHROdWxsCQludWxsCiAKIGlmIGV4aXN0cygiamF2YVNjcmlwdF9mb2xkIikKICAgICBzeW4gbWF0Y2gJamF2YVNjcmlwdEZ1bmN0aW9uICAgICAgIlw8ZnVuY3Rpb25cPiIKQEAgLTYyLDcgKzYzLDggQEAKIHN5biBzeW5jIG1heGxpbmVzPTEwMAogCiAiIGNhdGNoIGVycm9ycyBjYXVzZWQgYnkgd3JvbmcgcGFyZW50aGVzaXMKLXN5biByZWdpb24gIGphdmFTY3JpcHRQYXJlbiAgICAgICB0cmFuc3BhcmVudCBzdGFydD0iKCIgZW5kPSIpIiBjb250YWlucz1qYXZhU2NyaXB0UGFyZW4samF2YVNjcmlwdENvbW1lbnQsamF2YVNjcmlwdFNwZWNpYWwsamF2YVNjcmlwdFN0cmluZ0QsamF2YVNjcmlwdFN0cmluZ1MsamF2YVNjcmlwdFNwZWNpYWxDaGFyYWN0ZXIsamF2YVNjcmlwdE51bWJlcixqYXZhU2NyaXB0UmVnZXhwU3RyaW5nLGphdmFTY3JpcHRCb29sZWFuLGphdmFTY3JpcHRCcmFjZXMKK3N5biByZWdpb24gIGphdmFTY3JpcHRQYXJlbiAgICAgICB0cmFuc3BhcmVudCBzdGFydD0iKCIgZW5kPSIpIiBjb250YWlucz1qYXZhU2NyaXB0UGFyZW4samF2YVNjcmlwdENvbW1lbnQsamF2YVNjcmlwdFNwZWNpYWwsamF2YVNjcmlwdFN0cmluZ0QsamF2YVNjcmlwdFN0cmluZ1MsamF2YVNjcmlwdFNwZWNpYWxDaGFyYWN0ZXIsamF2YVNjcmlwdE51bWJlcixqYXZhU2NyaXB0UmVnZXhwU3RyaW5nLGphdmFTY3JpcHRCb29sZWFuLGphdmFTY3JpcHRCcmFjZXMsamF2YVNjcmlwdEZ1bmN0aW9uLGphdmFTY3JpcHRGdW5jdGlvbkZvbGQsamF2YVNjcmlwdENvbmRpdGlvbmFsLGphdmFTY3JpcHRSZXBlYXQsamF2YVNjcmlwdEJyYW5jaCxqYXZhU2NyaXB0T3BlcmF0b3IsamF2YVNjcmlwdFR5cGUsamF2YVNjcmlwdFN0YXRlbWVudCxqYXZhU2NyaXB0Qm9vbGVhbixqYXZhU2NyaXB0Q29uc3RhbnQKKyBzeW4gcmVnaW9uICBqYXZhU2NyaXB0UGFyZW4gICAgICAgdHJhbnNwYXJlbnQgc3RhcnQ9IigiIGVuZD0iKSIgY29udGFpbnM9amF2YVNjcmlwdFBhcmVuLGphdmFTY3JpcHRDb21tZW50LGphdmFTY3JpcHRTcGVjaWFsLGphdmFTY3JpcHRTdHJpbmdELGphdmFTY3JpcHRTdHJpbmdTLGphdmFTY3JpcHRTcGVjaWFsQ2hhcmFjdGVyLGphdmFTY3JpcHROdW1iZXIsamF2YVNjcmlwdFJlZ2V4cFN0cmluZyxqYXZhU2NyaXB0Qm9vbGVhbixqYXZhU2NyaXB0QnJhY2VzCiBzeW4gbWF0Y2ggICBqYXZhU2NyUGFyZW5FcnJvciAgIikiCiAKIGlmIG1haW5fc3ludGF4ID09ICJqYXZhc2NyaXB0IgpAQCAtNzksMjcgKzgxLDI4IEBACiAgIGVsc2UKICAgICBjb21tYW5kIC1uYXJncz0rIEhpTGluayBoaSBkZWYgbGluayA8YXJncz4KICAgZW5kaWYKLSAgSGlMaW5rIGphdmFTY3JpcHRDb21tZW50CSAgICAgQ29tbWVudAotICBIaUxpbmsgamF2YVNjcmlwdExpbmVDb21tZW50CSAgICAgQ29tbWVudAotICBIaUxpbmsgamF2YVNjcmlwdENvbW1lbnRUb2RvCSAgICAgVG9kbwotICBIaUxpbmsgamF2YVNjcmlwdFNwZWNpYWwJICAgICBTcGVjaWFsCi0gIEhpTGluayBqYXZhU2NyaXB0U3RyaW5nUwkgICAgIFN0cmluZwotICBIaUxpbmsgamF2YVNjcmlwdFN0cmluZ0QJICAgICBTdHJpbmcKLSAgSGlMaW5rIGphdmFTY3JpcHRDaGFyYWN0ZXIJICAgICBDaGFyYWN0ZXIKLSAgSGlMaW5rIGphdmFTY3JpcHRTcGVjaWFsQ2hhcmFjdGVyICBqYXZhU2NyaXB0U3BlY2lhbAotICBIaUxpbmsgamF2YVNjcmlwdE51bWJlcgkgICAgIGphdmFTY3JpcHRWYWx1ZQotICBIaUxpbmsgamF2YVNjcmlwdENvbmRpdGlvbmFsCSAgICAgQ29uZGl0aW9uYWwKLSAgSGlMaW5rIGphdmFTY3JpcHRSZXBlYXQJICAgICBSZXBlYXQKLSAgSGlMaW5rIGphdmFTY3JpcHRCcmFuY2gJICAgICBDb25kaXRpb25hbAotICBIaUxpbmsgamF2YVNjcmlwdE9wZXJhdG9yCSAgICAgT3BlcmF0b3IKLSAgSGlMaW5rIGphdmFTY3JpcHRUeXBlCQkgICAgIFR5cGUKLSAgSGlMaW5rIGphdmFTY3JpcHRTdGF0ZW1lbnQJICAgICBTdGF0ZW1lbnQKLSAgSGlMaW5rIGphdmFTY3JpcHRGdW5jdGlvbgkgICAgIEZ1bmN0aW9uCi0gIEhpTGluayBqYXZhU2NyaXB0QnJhY2VzCSAgICAgRnVuY3Rpb24KLSAgSGlMaW5rIGphdmFTY3JpcHRFcnJvcgkgICAgIEVycm9yCi0gIEhpTGluayBqYXZhU2NyUGFyZW5FcnJvcgkgICAgIGphdmFTY3JpcHRFcnJvcgotICBIaUxpbmsgamF2YVNjcmlwdEJvb2xlYW4JICAgICBCb29sZWFuCi0gIEhpTGluayBqYXZhU2NyaXB0UmVnZXhwU3RyaW5nICAgICAgU3RyaW5nCisgIEhpTGluayBqYXZhU2NyaXB0Q29tbWVudAkJQ29tbWVudAorICBIaUxpbmsgamF2YVNjcmlwdExpbmVDb21tZW50CQlDb21tZW50CisgIEhpTGluayBqYXZhU2NyaXB0Q29tbWVudFRvZG8JCVRvZG8KKyAgSGlMaW5rIGphdmFTY3JpcHRTcGVjaWFsCQlTcGVjaWFsCisgIEhpTGluayBqYXZhU2NyaXB0U3RyaW5nUwkJU3RyaW5nCisgIEhpTGluayBqYXZhU2NyaXB0U3RyaW5nRAkJU3RyaW5nCisgIEhpTGluayBqYXZhU2NyaXB0Q2hhcmFjdGVyCQlDaGFyYWN0ZXIKKyAgSGlMaW5rIGphdmFTY3JpcHRTcGVjaWFsQ2hhcmFjdGVyCWphdmFTY3JpcHRTcGVjaWFsCisgIEhpTGluayBqYXZhU2NyaXB0TnVtYmVyCQlqYXZhU2NyaXB0VmFsdWUKKyAgSGlMaW5rIGphdmFTY3JpcHRDb25kaXRpb25hbAkJQ29uZGl0aW9uYWwKKyAgSGlMaW5rIGphdmFTY3JpcHRSZXBlYXQJCVJlcGVhdAorICBIaUxpbmsgamF2YVNjcmlwdEJyYW5jaAkJQ29uZGl0aW9uYWwKKyAgSGlMaW5rIGphdmFTY3JpcHRPcGVyYXRvcgkJT3BlcmF0b3IKKyAgSGlMaW5rIGphdmFTY3JpcHRUeXBlCQkJVHlwZQorICBIaUxpbmsgamF2YVNjcmlwdFN0YXRlbWVudAkJU3RhdGVtZW50CisgIEhpTGluayBqYXZhU2NyaXB0RnVuY3Rpb24JCUZ1bmN0aW9uCisgIEhpTGluayBqYXZhU2NyaXB0QnJhY2VzCQlGdW5jdGlvbgorICBIaUxpbmsgamF2YVNjcmlwdEVycm9yCQlFcnJvcgorICBIaUxpbmsgamF2YVNjclBhcmVuRXJyb3IJCWphdmFTY3JpcHRFcnJvcgorICBIaUxpbmsgamF2YVNjcmlwdE51bGwJCQlLZXl3b3JkCisgIEhpTGluayBqYXZhU2NyaXB0Qm9vbGVhbgkJQm9vbGVhbgorICBIaUxpbmsgamF2YVNjcmlwdFJlZ2V4cFN0cmluZwkJU3RyaW5nCiAgIGRlbGNvbW1hbmQgSGlMaW5rCiBlbmRpZgogCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9sZXgudmltIGIvcnVudGltZS9zeW50YXgvbGV4LnZpbQppbmRleCA2YzYxMjFlLi45YWRjMzg4IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9sZXgudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2xleC52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJTGV4CiAiIE1haW50YWluZXI6CURyLiBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4gPE5kck9jaGlwU0BQY2FtcGJlbGxBZmFtaWx5Lk1iaXo+Ci0iIExhc3QgQ2hhbmdlOglKdWwgMjgsIDIwMDQKLSIgVmVyc2lvbjoJNQorIiBMYXN0IENoYW5nZToJTm92IDI2LCAyMDA0CisiIFZlcnNpb246CTYKICIgVVJMOglodHRwOi8vd3d3LmVyb2xzLmNvbS9hc3Ryb25hdXQvdmltL2luZGV4Lmh0bWwjdmltbGlua3Nfc3ludGF4CiAiCiAiIE9wdGlvbjoKQEAgLTU2LDcgKzU2LDcgQEAKIHN5biByZWdpb24gbGV4UGF0U3RyaW5nCW1hdGNoZ3JvdXA9U3RyaW5nIHN0YXJ0PSsiKwlza2lwPStcXFxcXHxcXCIrCW1hdGNoZ3JvdXA9U3RyaW5nIGVuZD0rIisJY29udGFpbmVkCiBzeW4gbWF0Y2ggIGxleFBhdFRhZwkiXjxcSVxpKlwoLFxJXGkqXCkqPioiCQkJY29udGFpbmVkIG5leHRncm91cD1sZXhQYXQsbGV4UGF0VGFnLGxleE1vcmVQYXQsbGV4UGF0U2VwCiBzeW4gbWF0Y2ggIGxleFBhdFRhZwkrXjxcSVxpKlwoLFxJXGkqXCkqPipcKFxcXFxcKSpcXCIrCQljb250YWluZWQgbmV4dGdyb3VwPWxleFBhdCxsZXhQYXRUYWcsbGV4TW9yZVBhdCxsZXhQYXRTZXAKLXN5biByZWdpb24gbGV4UGF0Q29tbWVudAlzdGFydD0iXlxzKi9cKiIgZW5kPSJcKi8iCQlza2lwbmwJY29udGFpbmVkIGNvbnRhaW5zPWNUb2RvIG5leHRncm91cD1sZXhQYXRDb21tZW50LGxleFBhdCxsZXhQYXRTdHJpbmcsbGV4UGF0VGFnLEBTcGVsbAorc3luIHJlZ2lvbiBsZXhQYXRDb21tZW50CXN0YXJ0PSJeXHMqL1wqIiBlbmQ9IlwqLyIJCXNraXBubAljb250YWluZWQgY29udGFpbnM9Y1RvZG8gc2tpcHdoaXRlIG5leHRncm91cD1sZXhQYXRDb21tZW50LGxleFBhdCxAU3BlbGwKIHN5biBtYXRjaCAgbGV4UGF0Q29kZUxpbmUJIi4qJCIJCQkJCWNvbnRhaW5lZCBjb250YWlucz1BTExCVVQsQGxleExpc3RHcm91cAogc3luIG1hdGNoICBsZXhNb3JlUGF0CSJccyp8XHMqJCIJCQlza2lwbmwJY29udGFpbmVkIG5leHRncm91cD1sZXhQYXQsbGV4UGF0VGFnLGxleFBhdENvbW1lbnQKIHN5biBtYXRjaCAgbGV4UGF0U2VwCSJcc1wrIgkJCQkJY29udGFpbmVkIG5leHRncm91cD1sZXhNb3JlUGF0LGxleFBhdENvZGUsbGV4UGF0Q29kZUxpbmUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2x5bngudmltIGIvcnVudGltZS9zeW50YXgvbHlueC52aW0KaW5kZXggMWRlZTFlZi4uNDcxZDcwOCAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvbHlueC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvbHlueC52aW0KQEAgLTEsOSArMSw5IEBACiAiIEx5bnggc3ludGF4IGZpbGUKICIgRmlsZW5hbWU6CWx5bngudmltCiAiIExhbmd1YWdlOglMeW54IGNvbmZpZ3VyYXRpb24gZmlsZSAoIGx5bnguY2ZnICkKLSIgTWFpbnRhaW5lcjoJRG91ZyBLZWFybnMgPGRqa2VhMkBtdWdjYS5pdHMubW9uYXNoLmVkdS5hdT4KLSIgVVJMOgkJaHR0cDovL211Z2NhLml0cy5tb25hc2guZWR1LmF1L35kamtlYTIvdmltL3N5bnRheC9seW54LnZpbQotIiBMYXN0IENoYW5nZToJMjAwMyBNYXkgMTEKKyIgTWFpbnRhaW5lcjoJRG91ZyBLZWFybnMgPGRqa2VhMkBndXMuZ3NjaXQubW9uYXNoLmVkdS5hdT4KKyIgVVJMOgkJaHR0cDovL2d1cy5nc2NpdC5tb25hc2guZWR1LmF1L35kamtlYTIvdmltL3N5bnRheC9seW54LnZpbQorIiBMYXN0IENoYW5nZToJMjAwNCBOb3YgMjcKIAogIiBUT0RPOiBtb3JlIGludGVsbGlnZW50IGFuZCBjb21wbGV0ZSBhcmd1bWVudCBoaWdobGlnaHRpbmcKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvbWFpbGNhcC52aW0gYi9ydW50aW1lL3N5bnRheC9tYWlsY2FwLnZpbQppbmRleCA2ZDYyNzA3Li41NDdkYjczIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9tYWlsY2FwLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9tYWlsY2FwLnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglNYWlsY2FwIGNvbmZpZ3VyYXRpb24gZmlsZQotIiBNYWludGFpbmVyOglEb3VnIEtlYXJucwotIiBMYXN0IENoYW5nZToJMjAwMiBOb3ZlbWJlciAyNAotIiBVUkw6CQlodHRwOi8vbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vc3ludGF4L21haWxjYXAudmltCisiIE1haW50YWluZXI6CURvdWcgS2Vhcm5zIDxkamtlYTJAZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXU+CisiIExhc3QgQ2hhbmdlOgkyMDA0IE5vdiAyNworIiBVUkw6CQlodHRwOi8vZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vc3ludGF4L21haWxjYXAudmltCiAKICIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiAiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9tYXBsZS52aW0gYi9ydW50aW1lL3N5bnRheC9tYXBsZS52aW0KaW5kZXggMmZhMDQ1Ny4uNTk0MDc5MiAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvbWFwbGUudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L21hcGxlLnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglNYXBsZSBWIChiYXNlZCBvbiByZWxlYXNlIDQpCiAiIE1haW50YWluZXI6CURyLiBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4gPE5kck9jaGlwU0BQY2FtcGJlbGxBZmFtaWx5Lk1iaXo+Ci0iIExhc3QgQ2hhbmdlOglBdWcgMTksIDIwMDQKLSIgVmVyc2lvbjoJNQorIiBMYXN0IENoYW5nZToJT2N0IDEyLCAyMDA0CisiIFZlcnNpb246CTYKICIgVVJMOglodHRwOi8vd3d3LmVyb2xzLmNvbS9hc3Ryb25hdXQvdmltL2luZGV4Lmh0bWwjdmltbGlua3Nfc3ludGF4CiAiCiAiIFBhY2thZ2UgRnVuY3Rpb24gU2VsZWN0aW9uOiB7e3sxCkBAIC0xMTYsMTEgKzExNiwxMiBAQAogc3luIGtleXdvcmQgbXZUb2RvCWNvbnRhaW5lZAlUT0RPCiBpZiBleGlzdHMoImc6bWFwbGV2ZXJzaW9uIikgJiYgZzptYXBsZXZlcnNpb24gPCA5CiAgc3luIHJlZ2lvbiAgbXZTdHJpbmcJc3RhcnQ9K2ArIHNraXA9K2BgKyBlbmQ9K2ArCWtlZXBlbmQJY29udGFpbnM9bXZUb2RvCisgc3luIHJlZ2lvbiAgbXZTdHJpbmcJc3RhcnQ9KyIrIHNraXA9KyIiKyBlbmQ9KyIrCWtlZXBlbmQKICBzeW4gcmVnaW9uICBtdkRlbGF5RXZhbAlzdGFydD0rJysgZW5kPSsnKwlrZWVwZW5kIGNvbnRhaW5zPUFMTEJVVCxtdkVycm9yLG12QnJhY2VFcnJvcixtdkN1cmx5RXJyb3IsbXZQYXJlbkVycm9yLG12U2VtaUVycm9yCiAgc3luIG1hdGNoICAgbXZWYXJBc3NpZ24JIlthLXpBLVpfXVthLXpBLVpfMC05XSpbIFx0XSo6PSIgY29udGFpbnM9bXZBc3NpZ24KICBzeW4gbWF0Y2ggICBtdkFzc2lnbgkiOj0iCWNvbnRhaW5lZAogZWxzZQotIHN5biByZWdpb24gIG12TmFtZQlzdGFydD0rYCsgc2tpcD0rYGArIGVuZD0rYCsJa2VlcGVuZAljb250YWlucz1tdlRvZG8KKyBzeW4gcmVnaW9uICBtdk5hbWUJCXN0YXJ0PStgKyBza2lwPStgYCsgZW5kPStgKwlrZWVwZW5kCWNvbnRhaW5zPW12VG9kbwogIHN5biByZWdpb24gIG12U3RyaW5nCXN0YXJ0PSsiKyBza2lwPSsiIisgZW5kPSsiKwlrZWVwZW5kCiAgc3luIHJlZ2lvbiAgbXZEZWxheUV2YWwJc3RhcnQ9KycrIGVuZD0rJysJa2VlcGVuZCBjb250YWlucz1BTExCVVQsbXZFcnJvcixtdkJyYWNlRXJyb3IsbXZDdXJseUVycm9yLG12UGFyZW5FcnJvcgogIHN5biBtYXRjaCAgIG12RGVsaW0JCSJbOzpdIglkaXNwbGF5CmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9yYXRwb2lzb24udmltIGIvcnVudGltZS9zeW50YXgvcmF0cG9pc29uLnZpbQppbmRleCAzOTA5NGZjLi4wMmEwYTkyIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9yYXRwb2lzb24udmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3JhdHBvaXNvbi52aW0KQEAgLTEsOSArMSw5IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBGaWxlbmFtZToJcmF0cG9pc29uLnZpbQogIiBMYW5ndWFnZToJUmF0cG9pc29uIGNvbmZpZ3VyYXRpb24vY29tbWFuZHMgZmlsZSAoIC9ldGMvcmF0cG9pc29ucmMgfi8ucmF0cG9pc29ucmMgKQotIiBNYWludGFpbmVyOglEb3VnIEtlYXJucyA8ZGprZWEyQG11Z2NhLml0cy5tb25hc2guZWR1LmF1PgotIiBVUkw6CQlodHRwOi8vbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vc3ludGF4L3JhdHBvaXNvbi52aW0KLSIgTGFzdCBDaGFuZ2U6CTIwMDQgQXByIDI3CisiIE1haW50YWluZXI6CURvdWcgS2Vhcm5zIDxkamtlYTJAZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXU+CisiIFVSTDoJCWh0dHA6Ly9ndXMuZ3NjaXQubW9uYXNoLmVkdS5hdS9+ZGprZWEyL3ZpbS9zeW50YXgvcmF0cG9pc29uLnZpbQorIiBMYXN0IENoYW5nZToJMjAwNCBOb3YgMjcKIAogIiBGb3IgdmVyc2lvbiA1Lng6IENsZWFyIGFsbCBzeW50YXggaXRlbXMKICIgRm9yIHZlcnNpb24gNi54OiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3J1YnkudmltIGIvcnVudGltZS9zeW50YXgvcnVieS52aW0KaW5kZXggMDJmMTc4ZC4uNzMyYjQ3MCAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvcnVieS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvcnVieS52aW0KQEAgLTEsOSArMSw5IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJCVJ1YnkKLSIgTWFpbnRhaW5lcjoJCURvdWcgS2Vhcm5zCisiIE1haW50YWluZXI6CQlEb3VnIEtlYXJucyA8ZGprZWEyQGd1cy5nc2NpdC5tb25hc2guZWR1LmF1PgogIiBQcmV2aW91cyBNYWludGFpbmVyOglNaXJrbyBOYXNhdG8KLSIgTGFzdCBDaGFuZ2U6CQkyMDAzIE1heSAzMQotIiBVUkw6CQkJaHR0cDovL211Z2NhLml0cy5tb25hc2guZWR1LmF1L35kamtlYTIvdmltL3N5bnRheC9ydWJ5LnZpbQorIiBMYXN0IENoYW5nZToJCTIwMDQgTm92IDI3CisiIFVSTDoJCQlodHRwOi8vZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXUvfmRqa2VhMi92aW0vc3ludGF4L3J1YnkudmltCiAKICIgJElkJAogCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9zY2hlbWUudmltIGIvcnVudGltZS9zeW50YXgvc2NoZW1lLnZpbQppbmRleCA0MWQ0OTFjLi45M2Q0MTg3IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9zY2hlbWUudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3NjaGVtZS52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJU2NoZW1lIChSNVJTKQotIiBMYXN0IENoYW5nZToJSnVseSAxNCwgMjAwNAotIiBNYWludGFpbmVyOglTZXJnZXkgS2hvcmV2IDxpYW1waGV0QG5tLnJ1PgorIiBMYXN0IENoYW5nZToJTm92IDI4LCAyMDA0CisiIE1haW50YWluZXI6CVNlcmdleSBLaG9yZXYgPHNlcmdleS5raG9yZXZAZ21haWwuY29tPgogIiBPcmlnaW5hbCBhdXRob3I6CURpcmsgdmFuIERldW4gPGRpcmtAaWd3ZS52dWIuYWMuYmU+CiAKICIgVGhpcyBzY3JpcHQgaW5jb3JyZWN0bHkgcmVjb2duaXplcyBzb21lIGp1bmsgaW5wdXQgYXMgbnVtZXJhbHM6CkBAIC0xNDMsNyArMTQzLDcgQEAKIHN5biByZWdpb24gc2NoZW1lU3RydWMgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiNcWyIgbWF0Y2hncm91cD1EZWxpbWl0ZXIgZW5kPSJcXSIgY29udGFpbnM9QUxMCiAKICIgU2ltcGxlIGxpdGVyYWxzOgotc3luIHJlZ2lvbglzY2hlbWVTdHJpbmcJc3RhcnQ9KyIrICBza2lwPStcXFtcXCJdKyBlbmQ9KyIrCitzeW4gcmVnaW9uIHNjaGVtZVN0cmluZyBzdGFydD0rXCUoXFxcKVxAPCEiKyBza2lwPStcXFtcXCJdKyBlbmQ9KyIrCiAKICIgQ29tbWVudHM6CiAKQEAgLTE3MiwxNSArMTcyLDE2IEBACiBzeW4gbWF0Y2gJc2NoZW1lRXJyb3IJb25lbGluZSAgICAhI1xcbmV3bGluZVteIFx0XFtcXSgpIjtdXCshCiAKIGlmIGV4aXN0cygiYjppc19tenNjaGVtZSIpIHx8IGV4aXN0cygiaXNfbXpzY2hlbWUiKQotICAgICIgTXpTY2hlbWUgZXh0ZW5zaW9ucyBhZGRlZCBieSBTZXJnZXkgS2hvcmV2CisgICAgIiBNelNjaGVtZSBleHRlbnNpb25zCiAgICAgIiBtdWx0aWxpbmUgY29tbWVudAotICAgIHN5bnRheCByZWdpb24gc2NoZW1lTXVsdGlsaW5lQ29tbWVudCBzdGFydD0vI3wvIGVuZD0vfCMvCisgICAgc3luIHJlZ2lvbglzY2hlbWVDb21tZW50IHN0YXJ0PSIjfCIgZW5kPSJ8IyIKKwogICAgICIgIyV4eHggYXJlIHRoZSBzcGVjaWFsIE16U2NoZW1lIGlkZW50aWZpZXJzCiAgICAgc3luIG1hdGNoIHNjaGVtZU90aGVyIG9uZWxpbmUgICAgIiMlWy1hLXohJCUmKi86PD0+P15ffjAtOSsuQCMlXVwrIgogICAgICIgYW55dGhpbmcgbGltaXRlZCBieSB8J3MgaXMgaWRlbnRpZmllcgogICAgIHN5biBtYXRjaCBzY2hlbWVPdGhlciBvbmVsaW5lICAgICJ8W158XVwrfCIKIAotICAgIHN5biBtYXRjaAlzY2hlbWVDaGFyCW9uZWxpbmUgICAgIiNcXHJldHVybiIKKyAgICBzeW4gbWF0Y2gJc2NoZW1lQ2hhcglvbmVsaW5lICAgICIjXFxcJShyZXR1cm5cfHRhYlwpIgogCiAgICAgIiBNb2R1bGVzIHJlcXVpcmUgc3RtdAogICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dFN5bnRheCBtb2R1bGUgcmVxdWlyZSBkeW5hbWljLXJlcXVpcmUgbGliIHByZWZpeCBhbGwtZXhjZXB0IHByZWZpeC1hbGwtZXhjZXB0IHJlbmFtZQpAQCAtMjMwLDEyICsyMzEsMTkgQEAKIAogCiBpZiBleGlzdHMoImI6aXNfY2hpY2tlbiIpIHx8IGV4aXN0cygiaXNfY2hpY2tlbiIpCisgICAgIiBtdWx0aWxpbmUgY29tbWVudAorICAgIHN5bnRheCByZWdpb24gc2NoZW1lTXVsdGlsaW5lQ29tbWVudCBzdGFydD0vI3wvIGVuZD0vfCMvIGNvbnRhaW5zPXNjaGVtZU11bHRpbGluZUNvbW1lbnQKKwogICAgIHN5biBtYXRjaCBzY2hlbWVPdGhlciBvbmVsaW5lICAgICIjI1stYS16ISQlJiovOjw9Pj9eX34wLTkrLkAjJV1cKyIKICAgICBzeW4gbWF0Y2ggc2NoZW1lRXh0U3ludGF4IG9uZWxpbmUgICAgIiM6Wy1hLXohJCUmKi86PD0+P15ffjAtOSsuQCMlXVwrIgogCiAgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0U3ludGF4IHVuaXQgdXNlcyBkZWNsYXJlIGhpZGUgZm9yZWlnbi1kZWNsYXJlIGZvcmVpZ24tcGFyc2UgZm9yZWlnbi1wYXJzZS9zcGVjCi0gICAgc3luIGtleXdvcmQgc2NoZW1lRXh0U3ludGF4IGZvcmVpZ24tbGFtYmRhIGZvcmVpZ24tbGFtYmRhKiAKLSAgICBzeW4ga2V5d29yZCBzY2hlbWVFeHRTeW50YXggbGV0LW9wdGlvbmFscyBsZXQtb3B0aW9uYWxzKiBkZWZpbmUtZm9yZWlnbi12YXJpYWJsZQorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dFN5bnRheCBmb3JlaWduLWxhbWJkYSBmb3JlaWduLWxhbWJkYSogZGVmaW5lLWV4dGVybmFsIGRlZmluZS1tYWNybyBsb2FkLWxpYnJhcnkKKyAgICBzeW4ga2V5d29yZCBzY2hlbWVFeHRTeW50YXggbGV0LXZhbHVlcyBsZXQqLXZhbHVlcyBsZXRyZWMtdmFsdWVzIC0+c3RyaW5nIHJlcXVpcmUtZXh0ZW5zaW9uCisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0U3ludGF4IGxldC1vcHRpb25hbHMgbGV0LW9wdGlvbmFscyogZGVmaW5lLWZvcmVpZ24tdmFyaWFibGUgZGVmaW5lLXJlY29yZAorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dFN5bnRheCBwb2ludGVyIHRhZy1wb2ludGVyIHRhZ2dlZC1wb2ludGVyPyBkZWZpbmUtZm9yZWlnbi10eXBlCisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0U3ludGF4IHJlcXVpcmUgcmVxdWlyZS1mb3Itc3ludGF4IGNvbmQtZXhwYW5kIGFuZC1sZXQqIHJlY2VpdmUgYXJnYythcmd2CisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0U3ludGF4IGZpeG51bT8gZng9IGZ4PiBmeDwgZng+PSBmeDw9IGZ4bWluIGZ4bWF4CiAgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0RnVuYyAjI2NvcmUjaW5saW5lICMjc3lzI2Vycm9yICMjc3lzI3VwZGF0ZS1lcnJubwogCiAgICAgIiBoZXJlLXN0cmluZwpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvc2gudmltIGIvcnVudGltZS9zeW50YXgvc2gudmltCmluZGV4IGY4NjI0YWUuLjI3ZmY3NzUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3NoLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9zaC52aW0KQEAgLTIsOCArMiw4IEBACiAiIExhbmd1YWdlOgkJc2hlbGwgKHNoKSBLb3JuIHNoZWxsIChrc2gpIGJhc2ggKHNoKQogIiBNYWludGFpbmVyOgkJRHIuIENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiAgPE5kck9jaGlwU0BQY2FtcGJlbGxBZmFtaWx5Lk1iaXo+CiAiIFByZXZpb3VzIE1haW50YWluZXI6CUxlbm5hcnQgU2NodWx0eiA8TGVubmFydC5TY2h1bHR6QGVjbXdmLmludD4KLSIgTGFzdCBDaGFuZ2U6CQlKdWwgMjYsIDIwMDQKLSIgVmVyc2lvbjoJCTY5CisiIExhc3QgQ2hhbmdlOgkJT2N0IDE3LCAyMDA0CisiIFZlcnNpb246CQk3MAogIiBVUkw6CQlodHRwOi8vd3d3LmVyb2xzLmNvbS9hc3Ryb25hdXQvdmltL2luZGV4Lmh0bWwjdmltbGlua3Nfc3ludGF4CiAiCiAiIFVzaW5nIHRoZSBmb2xsb3dpbmcgVklNIHZhcmlhYmxlczoge3t7MQpAQCAtNTMsNiArNTMsOSBAQAogCiBpZiAhZXhpc3RzKCJnOnNoX2ZvbGRfZW5hYmxlZCIpCiAgbGV0IGc6c2hfZm9sZF9lbmFibGVkPSAwCitlbHNlaWYgZzpzaF9mb2xkX2VuYWJsZWQgIT0gMCAmJiAhaGFzKCJmb2xkaW5nIikKKyBsZXQgZzpzaF9mb2xkX2VuYWJsZWQ9IDAKKyBlY2hvbXNnICJJZ25vcmluZyBnOnNoX2ZvbGRfZW5hYmxlZD0iLmc6c2hfZm9sZF9lbmFibGVkLiI7IHJlLWNvbXBpbGUgdmltIGZvciArZm9sZCBzdXBwb3J0IgogZW5kaWYKIAogIiBzaCBzeW50YXggaXMgY2FzZSBzZW5zaXRpdmUKQEAgLTM0NCw3ICszNDcsNyBAQAogCiAiIFBhcmFtZXRlciBEZXJlZmVyZW5jaW5nOiB7e3sxCiAiID09PT09PT09PT09PT09PT09PT09PT09PQotc3luIG1hdGNoICBzaERlcmVmU2ltcGxlCSJcJFx3XCsiCitzeW4gbWF0Y2ggIHNoRGVyZWZTaW1wbGUJIlwkXCUoXGhcdypcfFxkXCkiCiBzeW4gcmVnaW9uIHNoRGVyZWYJbWF0Y2hncm91cD1QcmVQcm9jIHN0YXJ0PSJcJHsiIGVuZD0ifSIJY29udGFpbnM9QHNoRGVyZWZMaXN0LHNoRGVyZWZWYXJBcnJheQogc3luIG1hdGNoICBzaERlcmVmV29yZEVycm9yCSJbXn0kW10iCWNvbnRhaW5lZAogc3luIG1hdGNoICBzaERlcmVmU2ltcGxlCSJcJFstIypAIT9dIgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvc2lldmUudmltIGIvcnVudGltZS9zeW50YXgvc2lldmUudmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MjNmNDQKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3N5bnRheC9zaWV2ZS52aW0KQEAgLTAsMCArMSw3MCBAQAorIiBWaW0gc3ludGF4IGZpbGUKKyIgTWFpbnRhaW5lcjoJICAgIE5pa29sYWkgV2VpYnVsbCA8c291cmNlQHBjcHBvcHBlci5vcmc+CisiIFVSTDoJCSAgICBodHRwOi8vd3d3LnBjcHBvcHBlci5vcmcvCisiIExhdGVzdCBSZXZpc2lvbjogIDIwMDQtMTEtMTEKKyIgYXJjaC10YWc6CSAgICAzNTZmYWQ2ZC1mZjZiLTQ1M2MtYmQyNS03ZmM2M2M0NzU4YmMKKworaWYgdmVyc2lvbiA8IDYwMAorICBzeW50YXggY2xlYXIKK2Vsc2VpZiBleGlzdHMoImI6Y3VycmVudF9zeW50YXgiKQorICBmaW5pc2gKK2VuZGlmCisKKyIgVG9kbworc3luIGtleXdvcmQgc2lldmVUb2RvCSAgY29udGFpbmVkIFRPRE8gRklYTUUgWFhYIE5PVEUKKworIiBDb21tZW50cworc3luIHJlZ2lvbiAgc2lldmVDb21tZW50ICBtYXRjaGdyb3VwPXNpZXZlQ29tbWVudCBzdGFydD0nL1wqJyBlbmQ9J1wqLycgY29udGFpbnM9c2lldmVUb2RvCitzeW4gcmVnaW9uICBzaWV2ZUNvbW1lbnQgIG1hdGNoZ3JvdXA9c2lldmVDb21tZW50IHN0YXJ0PScjJyBlbmQ9JyQnIGNvbnRhaW5zPXNpZXZlVG9kbworCitzeW4gY2FzZSBpZ25vcmUKKworIiBUYWdzCitzeW4gbWF0Y2ggICBzaWV2ZVRhZwkgICc6XGhcdyonCisKKyIgTnVtYmVycworc3luIG1hdGNoICAgc2lldmVOdW1iZXIJICAnXGRcK1tLTUddXD0nCisKKyIgU3BlY2lhbHMKK3N5biBtYXRjaCAgIHNpZXZlU3BlY2lhbCAgJ1xcWyJcXF0nCisKKyIgU3RyaW5ncworc3luIHJlZ2lvbiAgc2lldmVTdHJpbmcJICBtYXRjaGdyb3VwPXNpZXZlU3RyaW5nIHN0YXJ0PSsiKyBza2lwPStcXFxcXHxcXCIrIGVuZD0rIisgY29udGFpbnM9c2lldmVTcGVjaWFsCitzeW4gcmVnaW9uICBzaWV2ZVN0cmluZwkgIG1hdGNoZ3JvdXA9c2lldmVTdHJpbmcgc3RhcnQ9J3RleHQ6JyBlbmQ9J1xuLlxuJworCisiIEtleXdvcmRzCitzeW4ga2V5d29yZCBzaWV2ZUNvbmRpdGlvbmFsICBpZiBlbHNpZiBlbHNlCitzeW4ga2V5d29yZCBzaWV2ZVRlc3QJICAgICAgYWRkcmVzcyBhbGxvZiBhbnlvZiBlbnZlbG9wZSBleGlzdHMgZmFsc2UgaGVhZGVyIG5vdCBzaXplIHRydWUKK3N5biBrZXl3b3JkIHNpZXZlUHJlUHJvYyAgICAgIHJlcXVpcmUgc3RvcAorc3luIGtleXdvcmQgc2lldmVBY3Rpb24JICAgICAgcmVqZWN0IGZpbGVpbnRvIHJlZGlyZWN0IGtlZXAgZGlzY2FyZAorc3luIG1hdGNoICAgc2lldmVLZXl3b3JkICAgICAgJ1w8XGhcdypcPicKKworIiBEZWZpbmUgdGhlIGRlZmF1bHQgaGlnaGxpZ2h0aW5nLgorIiBGb3IgdmVyc2lvbiA1LjcgYW5kIGVhcmxpZXI6IG9ubHkgd2hlbiBub3QgZG9uZSBhbHJlYWR5CisiIEZvciB2ZXJzaW9uIDUuOCBhbmQgbGF0ZXI6IG9ubHkgd2hlbiBhbiBpdGVtIGRvZXNuJ3QgaGF2ZSBoaWdobGlnaHRpbmcgeWV0CitpZiB2ZXJzaW9uID49IDUwOCB8fCAhZXhpc3RzKCJkaWRfc2lldmVfc3luX2luaXRzIikKKyAgaWYgdmVyc2lvbiA8IDUwOAorICAgIGxldCBkaWRfc2lldmVfc3luX2luaXRzID0gMQorICAgIGNvbW1hbmQgLW5hcmdzPSsgSGlMaW5rIGhpIGxpbmsgPGFyZ3M+CisgIGVsc2UKKyAgICBjb21tYW5kIC1uYXJncz0rIEhpTGluayBoaSBkZWYgbGluayA8YXJncz4KKyAgZW5kaWYKKworICBIaUxpbmsgc2lldmVUb2RvCSAgVG9kbworICBIaUxpbmsgc2lldmVDb21tZW50CSAgQ29tbWVudAorICBIaUxpbmsgc2lldmVUYWcJICBUeXBlCisgIEhpTGluayBzaWV2ZU51bWJlcgkgIE51bWJlcgorICBIaUxpbmsgc2lldmVTcGVjaWFsCSAgU3BlY2lhbAorICBIaUxpbmsgc2lldmVTdHJpbmcJICBTdHJpbmcKKyAgSGlMaW5rIHNpZXZlQ29uZGl0aW9uYWwgQ29uZGl0aW9uYWwKKyAgSGlMaW5rIHNpZXZlVGVzdAkgIEtleXdvcmQKKyAgSGlMaW5rIHNpZXZlUHJlUHJvYwkgIFByZVByb2MKKyAgSGlMaW5rIHNpZXZlQWN0aW9uCSAgS2V5d29yZAorICBIaUxpbmsgc2lldmVLZXl3b3JkCSAgS2V5d29yZAorCisgIGRlbGNvbW1hbmQgSGlMaW5rCitlbmRpZgorCitsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJzaWV2ZSIKKworIiB2aW06IHNldCBzdHM9MiBzdz0yOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvdGV4LnZpbSBiL3J1bnRpbWUvc3ludGF4L3RleC52aW0KaW5kZXggZGMzNTJmZC4uYTdjNmVlMSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvdGV4LnZpbQorKysgYi9ydW50aW1lL3N5bnRheC90ZXgudmltCkBAIC0xLDggKzEsOCBAQAogIiBWaW0gc3ludGF4IGZpbGUKICIgTGFuZ3VhZ2U6CVRlWAogIiBNYWludGFpbmVyOglEci4gQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgotIiBMYXN0IENoYW5nZToJSnVuIDE1LCAyMDA0Ci0iIFZlcnNpb246CTI1CisiIExhc3QgQ2hhbmdlOglPY3QgMTMsIDIwMDQKKyIgVmVyc2lvbjoJMjYKICIgVVJMOgkJaHR0cDovL3d3dy5lcm9scy5jb20vYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI3ZpbWxpbmtzX3N5bnRheAogIgogIiBOb3Rlczoge3t7MQpAQCAtMTEyLDcgKzExMiw3IEBACiAgc3luIHJlZ2lvbiB0ZXhNYXRjaGVyCQltYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0ieyIgc2tpcD0iXFxcXFx8XFxbe31dIgllbmQ9In0iCQljb250YWlucz1AdGV4TWF0Y2hHcm91cAogIHN5biByZWdpb24gdGV4TWF0Y2hlcgkJbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IlxbIgkJCQllbmQ9Il0iCQljb250YWlucz1AdGV4TWF0Y2hHcm91cAogZW5kaWYKLXN5biByZWdpb24gdGV4UGFyZW4JCXN0YXJ0PSIoIgkJCQkJCWVuZD0iKSIJCWNvbnRhaW5zPUB0ZXhNYXRjaEdyb3VwCitzeW4gcmVnaW9uIHRleFBhcmVuCQlzdGFydD0iKCIJCQkJCQllbmQ9IikiCQljb250YWlucz1AdGV4TWF0Y2hHcm91cCxAU3BlbGwKIGlmICFleGlzdHMoImc6dGV4X25vX2Vycm9yIikKICBzeW4gbWF0Y2ggIHRleEVycm9yCQkiW31cXSldIgogZW5kaWYKQEAgLTIzMyw5ICsyMzMsMjQgQEAKIHN5biBtYXRjaCB0ZXhTcGFjZUNvZGVDaGFyICAgICJgXFxcPS5cKFxeLlwpXD09XChcZFx8XCJceFx7MSw2fVx8YC5cKSIJY29udGFpbmVkCiAKICIgU2VjdGlvbnMsIHN1YnNlY3Rpb25zLCBldGM6IHt7ezEKLXN5biBtYXRjaCB0ZXhTZWN0aW9uCQkiXFxcKHN1YlwpKnNlY3Rpb25cKlw9XD4iCi1zeW4gbWF0Y2ggdGV4U2VjdGlvbgkJIlxcXCh0aXRsZVx8YXV0aG9yXHxwYXJ0XHxjaGFwdGVyXHxwYXJhZ3JhcGhcfHN1YnBhcmFncmFwaFwpXD4iCi1zeW4gbWF0Y2ggdGV4U2VjdGlvbgkJIlxcYmVnaW5ccyp7XHMqYWJzdHJhY3Rccyp9XHxcXGVuZFxzKntccyphYnN0cmFjdFxzKn0iCitpZiBleGlzdHMoInRleF9kb3N5bmZvbGRzIikgJiYgaGFzKCJmb2xkaW5nIikKKyAiIENPTUJBSyAtLSB0aGlzIGZvbGRpbmcgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkIGFzIHlldAorIHN5biByZWdpb24gUmVkCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0iXFxzZWN0aW9uXCpcPVw+IgkJCWVuZD0iXFxcJShzdWJcKSpcJShhYnN0cmFjdFx8c2VjdGlvblx8YXV0aG9yXHxwYXJ0XHxjaGFwdGVyXHxwYXJhZ3JhcGhcfHN1YnBhcmFncmFwaFwpXCpcPVw+Im1lPXMgZW5kPSIlXHMqc3RvcHpvbmVcPiIgZm9sZAorIiBzeW4gcmVnaW9uIFJlZAltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9Ilxcc2VjdGlvblwqXD1cPiIJCQllbmQ9Ilx6ZVxcXChzdWJcKSpcKGFic3RyYWN0XHxzZWN0aW9uXHxhdXRob3JcfHBhcnRcfGNoYXB0ZXJcfHBhcmFncmFwaFx8c3VicGFyYWdyYXBoXClcKlw9XD4iIGVuZD0iJVxzKnN0b3B6b25lXD4iIGNvbnRhaW5zPVRPUCBmb2xkCisiIHN5biByZWdpb24gQmx1ZQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9Ilxcc3Vic2VjdGlvblwqXD1cPiIJCWVuZD0iXHplXFxcKHN1YlwpKlwoYWJzdHJhY3RcfHNlY3Rpb25cfGF1dGhvclx8cGFydFx8Y2hhcHRlclx8cGFyYWdyYXBoXHxzdWJwYXJhZ3JhcGhcKVwqXD1cPiIgY29udGFpbnM9VE9QIGZvbGQKKyIgc3luIHJlZ2lvbiB0ZXhTZWN0aW9uWm9uZQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9Ilxcc3Vic3Vic2VjdGlvblwqXD1cPiIJCWVuZD0iXHplXFxcKHN1YlwpKlwoYWJzdHJhY3RcfHNlY3Rpb25cfGF1dGhvclx8cGFydFx8Y2hhcHRlclx8cGFyYWdyYXBoXHxzdWJwYXJhZ3JhcGhcKVwqXD1cPiIgY29udGFpbnM9VE9QIGZvbGQKKyIgc3luIHJlZ2lvbiB0ZXhTZWN0aW9uWm9uZQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9IlxcdGl0bGVcKlw9XD4iCQkJZW5kPSJcemVcXFwoc3ViXCkqXChhYnN0cmFjdFx8c2VjdGlvblx8YXV0aG9yXHxwYXJ0XHxjaGFwdGVyXHxwYXJhZ3JhcGhcfHN1YnBhcmFncmFwaFwpXCpcPVw+IiBjb250YWlucz1UT1AgZm9sZAorIiBzeW4gcmVnaW9uIHRleFNlY3Rpb25ab25lCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0iXFxhdXRob3JcKlw9XD4iCQkJZW5kPSJcemVcXFwoc3ViXCkqXChhYnN0cmFjdFx8c2VjdGlvblx8YXV0aG9yXHxwYXJ0XHxjaGFwdGVyXHxwYXJhZ3JhcGhcfHN1YnBhcmFncmFwaFwpXCpcPVw+IiBjb250YWlucz1UT1AgZm9sZAorIiBzeW4gcmVnaW9uIHRleFNlY3Rpb25ab25lCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0iXFxwYXJ0XCpcPVw+IgkJCWVuZD0iXHplXFxcKHN1YlwpKlwoYWJzdHJhY3RcfHNlY3Rpb25cfGF1dGhvclx8cGFydFx8Y2hhcHRlclx8cGFyYWdyYXBoXHxzdWJwYXJhZ3JhcGhcKVwqXD1cPiIgY29udGFpbnM9VE9QIGZvbGQKKyIgc3luIHJlZ2lvbiB0ZXhTZWN0aW9uWm9uZQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9IlxcY2hhcHRlclwqXD1cPiIJCQllbmQ9Ilx6ZVxcXChzdWJcKSpcKGFic3RyYWN0XHxzZWN0aW9uXHxhdXRob3JcfHBhcnRcfGNoYXB0ZXJcfHBhcmFncmFwaFx8c3VicGFyYWdyYXBoXClcKlw9XD4iIGNvbnRhaW5zPVRPUCBmb2xkCisiIHN5biByZWdpb24gdGV4U2VjdGlvblpvbmUJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSJcXHBhcmFncmFwaFwqXD1cPiIJCWVuZD0iXHplXFxcKHN1YlwpKlwoYWJzdHJhY3RcfHNlY3Rpb25cfGF1dGhvclx8cGFydFx8Y2hhcHRlclx8cGFyYWdyYXBoXHxzdWJwYXJhZ3JhcGhcKVwqXD1cPiIgY29udGFpbnM9VE9QIGZvbGQKKyIgc3luIHJlZ2lvbiB0ZXhTZWN0aW9uWm9uZQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9Ilxcc3VicGFyYWdyYXBoXCpcPVw+IgkJZW5kPSJcemVcXFwoc3ViXCkqXChhYnN0cmFjdFx8c2VjdGlvblx8YXV0aG9yXHxwYXJ0XHxjaGFwdGVyXHxwYXJhZ3JhcGhcfHN1YnBhcmFncmFwaFwpXCpcPVw+IiBjb250YWlucz1UT1AgZm9sZAorIiBzeW4gcmVnaW9uIHRleFNlY3Rpb25ab25lCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0iXFxiZWdpblxzKntccyphYnN0cmFjdFxzKn0iCWVuZD0iXFxlbmRccyp7XHMqYWJzdHJhY3Rccyp9IiAgY29udGFpbnM9VE9QIGZvbGQKK2Vsc2UKKyBzeW4gbWF0Y2ggdGV4U2VjdGlvbgkJIlxcXChzdWJcKSpzZWN0aW9uXCpcPVw+IgorIHN5biBtYXRjaCB0ZXhTZWN0aW9uCQkiXFxcKHRpdGxlXHxhdXRob3JcfHBhcnRcfGNoYXB0ZXJcfHBhcmFncmFwaFx8c3VicGFyYWdyYXBoXClcPiIKKyBzeW4gbWF0Y2ggdGV4U2VjdGlvbgkJIlxcYmVnaW5ccyp7XHMqYWJzdHJhY3Rccyp9XHxcXGVuZFxzKntccyphYnN0cmFjdFxzKn0iCitlbmRpZgogCiAiIEJhZCBNYXRoIChtaXNtYXRjaGVkKToge3t7MQogaWYgIWV4aXN0cygidGV4X25vX21hdGgiKQpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvdGlkeS52aW0gYi9ydW50aW1lL3N5bnRheC90aWR5LnZpbQppbmRleCAwNjUxODAzLi5iZmZiNjE3IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC90aWR5LnZpbQorKysgYi9ydW50aW1lL3N5bnRheC90aWR5LnZpbQpAQCAtMSw5ICsxLDkgQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIEZpbGVuYW1lOgl0aWR5LnZpbQogIiBMYW5ndWFnZToJSE1UTCBUaWR5IGNvbmZpZ3VyYXRpb24gZmlsZSAoIC9ldGMvdGlkeXJjIH4vLnRpZHlyYyApCi0iIE1haW50YWluZXI6CURvdWcgS2Vhcm5zIDxkamtlYTJAbXVnY2EuaXRzLm1vbmFzaC5lZHUuYXU+Ci0iIFVSTDoJCWh0dHA6Ly9tdWdjYS5pdHMubW9uYXNoLmVkdS5hdS9+ZGprZWEyL3ZpbS9zeW50YXgvdGlkeS52aW0KLSIgTGFzdCBDaGFuZ2U6CTIwMDIgT2N0IDI0CisiIE1haW50YWluZXI6CURvdWcgS2Vhcm5zIDxkamtlYTJAZ3VzLmdzY2l0Lm1vbmFzaC5lZHUuYXU+CisiIFVSTDoJCWh0dHA6Ly9ndXMuZ3NjaXQubW9uYXNoLmVkdS5hdS9+ZGprZWEyL3ZpbS9zeW50YXgvdGlkeS52aW0KKyIgTGFzdCBDaGFuZ2U6CTIwMDQgTm92IDI3CiAKICIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiAiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC90cHAudmltIGIvcnVudGltZS9zeW50YXgvdHBwLnZpbQppbmRleCAyOGEyYzZiLi44ZWI3NDgwIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC90cHAudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3RwcC52aW0KQEAgLTIsNyArMiw3IEBACiAiIExhbmd1YWdlOgl0cHAgLSBUZXh0IFByZXNlbnRhdGlvbiBQcm9ncmFtCiAiIE1haW50YWluZXI6CUdlcmZyaWVkIEZ1Y2hzIDxhbGZpZUBpc3Qub3JnPgogIiBGaWxlbmFtZXM6CSoudHBwCi0iIExhc3QgQ2hhbmdlOgkxMy4gT2N0b2JlciAyMDA0CisiIExhc3QgQ2hhbmdlOgkyOC4gT2N0b2JlciAyMDA0CiAiIFVSTDoJCWh0dHA6Ly9hbGZpZS5pc3Qub3JnL3Byb2plY3RzL3ZpbS9zeW50YXgvdHBwLnZpbQogIiBMaWNlbnNlOglCU0QKICIKQEAgLTI1LDcgKzI1LDcgQEAKIAogIiIgbGlzdCBvZiB0aGUgbGVnYWwgc3dpdGNoZXMvb3B0aW9ucwogc3luIG1hdGNoIHRwcEFic3RyYWN0T3B0aW9uS2V5IGNvbnRhaW5lZCAiXi0tXCUoYXV0aG9yXHx0aXRsZVx8ZGF0ZVwpICoiIG5leHRncm91cD10cHBWYWx1ZQotc3luIG1hdGNoIHRwcFBhZ2VMb2NhbE9wdGlvbktleSBjb250YWluZWQgIl4tLVwlKGhlYWRpbmdcfGNlbnRlclx8cmlnaHRcfHNsZWVwXHxodWdlXHxleGVjXCkgKiIgbmV4dGdyb3VwPXRwcFZhbHVlCitzeW4gbWF0Y2ggdHBwUGFnZUxvY2FsT3B0aW9uS2V5IGNvbnRhaW5lZCAiXi0tXCUoaGVhZGluZ1x8Y2VudGVyXHxyaWdodFx8aHVnZVx8c2V0aHVnZWZvbnRcfGV4ZWNcKSAqIiBuZXh0Z3JvdXA9dHBwVmFsdWUKIHN5biBtYXRjaCB0cHBQYWdlTG9jYWxTd2l0Y2hLZXkgY29udGFpbmVkICJeLS1cJShob3JsaW5lXHwtXHxcJShiZWdpblx8ZW5kXClcJShcJShzaGVsbFwpXD9vdXRwdXRcfHNsaWRlXCUobGVmdFx8cmlnaHRcfHRvcFx8Ym90dG9tXClcKVx8XCUoYm9sZFx8cmV2XHx1bFwpXCUob25cfG9mZlwpXHx3aXRoYm9yZGVyXCkiCiBzeW4gbWF0Y2ggdHBwTmV3UGFnZU9wdGlvbktleSBjb250YWluZWQgIl4tLW5ld3BhZ2UgKiIgbmV4dGdyb3VwPXRwcFZhbHVlCiBzeW4gbWF0Y2ggdHBwQ29sb3JPcHRpb25LZXkgY29udGFpbmVkICJeLS1cJShcJShiZ1x8ZmdcKVw/Y29sb3JcKSAqIgpAQCAtMzksNyArMzksNyBAQAogc3luIHJlZ2lvbiB0cHBDb2xvck9wdGlvbiBzdGFydD0iXi0tXCUoXCUoYmdcfGZnXClcP2NvbG9yXCkiIGVuZD0iJCIgY29udGFpbnM9dHBwQ29sb3JPcHRpb25LZXksdHBwQ29sb3Igb25lbGluZQogc3luIHJlZ2lvbiB0cHBUaW1lT3B0aW9uIHN0YXJ0PSJeLS1zbGVlcCIgZW5kPSIkIiBjb250YWlucz10cHBUaW1lT3B0aW9uS2V5LHRwcFRpbWUgb25lbGluZQogc3luIHJlZ2lvbiB0cHBOZXdQYWdlT3B0aW9uIHN0YXJ0PSJeLS1uZXdwYWdlIiBlbmQ9IiQiIGNvbnRhaW5zPXRwcE5ld1BhZ2VPcHRpb25LZXkgb25lbGluZQotc3luIHJlZ2lvbiB0cHBQYWdlTG9jYWxPcHRpb24gc3RhcnQ9Il4tLVwlKGhlYWRpbmdcfGNlbnRlclx8cmlnaHRcfHNsZWVwXHxodWdlXHxleGVjXCkiIGVuZD0iJCIgY29udGFpbnM9dHBwUGFnZUxvY2FsT3B0aW9uS2V5IG9uZWxpbmUKK3N5biByZWdpb24gdHBwUGFnZUxvY2FsT3B0aW9uIHN0YXJ0PSJeLS1cJShoZWFkaW5nXHxjZW50ZXJcfHJpZ2h0XHxodWdlXHxzZXRodWdlZm9udFx8ZXhlY1wpIiBlbmQ9IiQiIGNvbnRhaW5zPXRwcFBhZ2VMb2NhbE9wdGlvbktleSBvbmVsaW5lCiBzeW4gcmVnaW9uIHRwcEFic3RyYWN0T3B0aW9uIHN0YXJ0PSJeLS1cJShhdXRob3JcfHRpdGxlXHxkYXRlXCkiIGVuZD0iJCIgY29udGFpbnM9dHBwQWJzdHJhY3RPcHRpb25LZXkgb25lbGluZQogCiBpZiBtYWluX3N5bnRheCAhPSAnc2gnCkBAIC01NSw2ICs1NSw3IEBACiAKIGVuZGlmCiAKK3N5biBtYXRjaCB0cHBDb21tZW50ICJeLS0jIy4qJCIKIAogIiBEZWZpbmUgdGhlIGRlZmF1bHQgaGlnaGxpZ2h0aW5nLgogIiBGb3IgdmVyc2lvbiA1LjcgYW5kIGVhcmxpZXI6IG9ubHkgd2hlbiBub3QgZG9uZSBhbHJlYWR5CkBAIC03Niw2ICs3Nyw3IEBACiAgIEhpTGluayB0cHBWYWx1ZQkJCVN0cmluZwogICBIaUxpbmsgdHBwQ29sb3IJCQlTdHJpbmcKICAgSGlMaW5rIHRwcFRpbWUJCQlOdW1iZXIKKyAgSGlMaW5rIHRwcENvbW1lbnQJCQlDb21tZW50CiAgIEhpTGluayB0cHBBYnN0cmFjdE9wdGlvbgkJRXJyb3IKICAgSGlMaW5rIHRwcFBhZ2VMb2NhbE9wdGlvbgkJRXJyb3IKICAgSGlMaW5rIHRwcFBhZ2VMb2NhbFN3aXRjaAkJRXJyb3IKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0gYi9ydW50aW1lL3N5bnRheC92aW0udmltCmluZGV4IDk3N2VjYzYuLmJkMTYyOWUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvdmltLnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglWaW0gNy4wIHNjcmlwdAogIiBNYWludGFpbmVyOglEci4gQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgotIiBMYXN0IENoYW5nZToJSnVseSAxMiwgMjAwNAotIiBWZXJzaW9uOgk3LjAtMDEJTk9UIFJFTEVBU0VECisiIExhc3QgQ2hhbmdlOglEZWNlbWJlciAwNywgMjAwNAorIiBWZXJzaW9uOgk3LjAtMDIJTk9UIFJFTEVBU0VECiAiIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGtleXdvcmQgbGlzdHM6IHt7ezEKIAogIiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQge3t7MgpAQCAtMTYsNyArMTYsNyBAQAogc3luIGNsdXN0ZXIgdmltQ29tbWVudEdyb3VwCWNvbnRhaW5zPXZpbVRvZG8KIAogIiByZWd1bGFyIHZpbSBjb21tYW5kcyB7e3syCi1zeW4ga2V5d29yZCB2aW1Db21tYW5kIGNvbnRhaW5lZAlhYlticmV2aWF0ZV0gYWJjW2xlYXJdIGFib1t2ZWxlZnRdIGFsW2xdIGFyZ2FbZGRdIGFyZ2RbZWxldGVdIGFyZ2RvIGFyZ2VbZGl0XSBhcmdnW2xvYmFsXSBhcmdsW29jYWxdIGFyW2dzXSBhcmd1W21lbnRdIGFzW2NpaV0gYmFkW2RdIGJhW2xsXSBiZFtlbGV0ZV0gYmUgYmVsW293cmlnaHRdIGJmW2lyc3RdIGJsW2FzdF0gYm1bb2RpZmllZF0gYm5bZXh0XSBiTltleHRdIGJvW3RyaWdodF0gYnBbcmV2aW91c10gYnJlYVtrXSBicmVha2FbZGRdIGJyZWFrZFtlbF0gYnJlYWtsW2lzdF0gYnJbZXdpbmRdIGJyb1t3c2VdIGJ1ZmRvIGJbdWZmZXJdIGJ1ZmZlcnMgYnVuW2xvYWRdIGJ3W2lwZW91dF0gY2FbYmJyZXZdIGNhYmNbbGVhcl0gY2FsW2xdIGNhdFtjaF0gY2MgY2NsW29zZV0gY2QgY2VbbnRlcl0gY2ZbaWxlXSBjZmlyW3N0XSBjZ1tldGZpbGVdIGNbaGFuZ2VdIGNoYW5nZXMgY2hkW2lyXSBjaGVbY2twYXRoXSBjaGVja3RbaW1lXSBjbGFbc3RdIGNsW2lzdF0gY2xvW3NlXSBjbWFwY1tsZWFyXSBjbmV3W2VyXSBjbltleHRdIGNOW2V4dF0gY25mW2lsZV0gY05mW2lsZV0gY25vcmVhW2JicmV2XSBjb2xbZGVyXSBjb2xvW3JzY2hlbWVdIGNvbWNbbGVhcl0gY29tcFtpbGVyXSBjb25mW2lybV0gY29uW3RpbnVlXSBjb3BlW25dIGNvW3B5XSBjcGZbaWxlXSBjcFtyZXZpb3VzXSBjcVt1aXRdIGNyW2V3aW5kXSBjdW5hW2JicmV2XSBjdVtubWFwXSBjd1tpbmRvd10gZGVidWdnW3JlZWR5XSBkZWxjW29tbWFuZF0gZFtlbGV0ZV0gRGVsZXRlRmlyc3QgZGVsZlt1bmN0aW9uXSBkaWZmZ1tldF0gZGlmZnBhdGNoIGRpZmZwdVt0XSBkaWZmc3BsaXQgZGlmZnRoaXMgZGlnW3JhcGhzXSBkaVtzcGxheV0gZGpbdW1wXSBkbFtpc3RdIGRyW29wXSBkc1tlYXJjaF0gZHNwW2xpdF0gZWNob2VbcnJdIGVjaG9tW3NnXSBlY2hvbiBlW2RpdF0gZWxbc2VdIGVsc2VpW2ZdIGVtW2VudV0gZW1lbnUqIGVuZGZbdW5jdGlvbl0gZW5bZGlmXSBlbmR0W3J5XSBlbmR3W2hpbGVdIGVuZVt3XSBleCBleGlbdF0gZltpbGVdIGZpbGVzIGZpbGV0eXBlIGZpbmFbbGx5XSBmaW5bZF0gZmluaVtzaF0gZmlyW3N0XSBmaXhbZGVsXSBmb1tsZF0gZm9sZGNbbG9zZV0gZm9sZGRvY1tsb3NlZF0gZm9sZGRbb29wZW5dIGZvbGRvW3Blbl0gZnVbbmN0aW9uXSBnW2xvYmFsXSBnb1t0b10gZ3JbZXBdIGdyZXBhW2RkXSBoYVtyZGNvcHldIGhbZWxwXSBoZWxwZltpbmRdIGhlbHBnW3JlcF0gaGVscHRbYWdzXSBoaWRbZV0gaGlzW3RvcnldIEkgaWFbYmJyZXZdIGlhYmNbbGVhcl0gaWYgaWpbdW1wXSBpbFtpc3RdIGltYXBjW2xlYXJdIGlub3JlYVtiYnJldl0gaXNbZWFyY2hdIGlzcFtsaXRdIGl1bmFbYmJyZXZdIGl1W25tYXBdIGpbb2luXSBqdVttcHNdIGsga2VlcGpbdW1wc10ga2VlW3BtYXJrc10gbGFuW2d1YWdlXSBsYVtzdF0gbGNbZF0gbGNoW2Rpcl0gbGVbZnRdIGxlZnRhW2JvdmVdIGxbaXN0XSBsbVthcF0gbG1hcGNbbGVhcl0gbG5bb3JlbWFwXSBsb1thZHZpZXddIGxvY1trbWFya3NdIGxzIGx1W25tYXBdIG1ha1tlXSBtYVtya10gbWFya3MgbWF0W2NoXSBtZW51dFtyYW5zbGF0ZV0gbWtbZXhyY10gbWtzW2Vzc2lvbl0gbWt2aWVbd10gbWt2W2ltcmNdIG1vZFtlXSBtW292ZV0gbXpmW2lsZV0gbXpbc2NoZW1lXSBuZXcgbltleHRdIE5bZXh0XSBubWFwY1tsZWFyXSBub2hbbHNlYXJjaF0gbm9yZWFbYmJyZXZdIG5vcm1bYWxdIE5yZWFkIG51W21iZXJdIG51blttYXBdIE53IG9tYXBjW2xlYXJdIG9uW2x5XSBvW3Blbl0gb3B0W2lvbnNdIG91W25tYXBdIHBjW2xvc2VdIHBlZFtpdF0gcGVbcmxdIHBlcmxkW29dIHBvW3BdIHBvcHUgcG9wdVtwXSBwcFtvcF0gcHJlW3NlcnZlXSBwcmV2W2lvdXNdIHBbcmludF0gUFtyaW50XSBwcm9tcHQgcHJvbXB0ZltpbmRdIHByb21wdHJbZXBsXSBwc1tlYXJjaF0gcHRhW2ddIHB0ZltpcnN0XSBwdGpbdW1wXSBwdGxbYXN0XSBwdG5bZXh0XSBwdE5bZXh0XSBwdHBbcmV2aW91c10gcHRyW2V3aW5kXSBwdHNbZWxlY3RdIHB1W3RdIHB3W2RdIHB5ZltpbGVdIHB5W3Rob25dIHFhW2xsXSBxW3VpdF0gcXVpdGFbbGxdIHJbZWFkXSByZWNbb3Zlcl0gcmVkaVtyXSByZWRbb10gcmVkclthd10gcmVkcmF3c1t0YXR1c10gcmVnW2lzdGVyc10gcmVzW2l6ZV0gcmV0W2FiXSByZXR1W3JuXSByZXdbaW5kXSByaVtnaHRdIHJpZ2h0YltlbG93XSBydWJbeV0gcnVieWRbb10gcnVieWZbaWxlXSBydVtudGltZV0gcnZbaW1pbmZvXSBzYWxbbF0gc2Fbcmd1bWVudF0gc2F2W2Vhc10gc2JhW2xsXSBzYmZbaXJzdF0gc2JsW2FzdF0gc2JtW29kaWZpZWRdIHNibltleHRdIHNiTltleHRdIHNicFtyZXZpb3VzXSBzYnJbZXdpbmRdIHNiW3VmZmVyXSBzY3JpcHRlW25jb2RpbmddIHNjcmlwW3RuYW1lc10gc2VbdF0gc2V0ZltpbGV0eXBlXSBzZXRnW2xvYmFsXSBzZXRsW29jYWxdIHNmW2luZF0gc2ZpcltzdCBzaFtlbGxdIHNpZ24gc2lsW2VudF0gc2ltW2FsdF0gc2xhW3N0XSBzbFtlZXBdIHNtW2FnaWNdIHNuW2V4dF0gc05bZXh0XSBzbmlbZmZdIHNub1ttYWdpY10gc29bdXJjZV0gc3BbbGl0XSBzcHJbZXZpb3VzXSBzcmVbd2luZF0gc3RhW2ddIHN0YXJbdGluc2VydF0gc3RhcnRyW2VwbGFjZV0gc3RqW3VtcF0gc3Rbb3BdIHN0b3BpW25zZXJ0XSBzdHNbZWxlY3RdIHN1bltoaWRlXSBzdXNbcGVuZF0gc3ZbaWV3XSBzeW4gc3luY2JpbmQgdCB0YVtnXSB0YWdzIHRjW2xdIHRjbGRbb10gdGNsZltpbGVdIHRlW2Fyb2ZmXSB0ZltpcnN0XSB0aGUgdGhbcm93XSB0alt1bXBdIHRsW2FzdF0gdG0gdG1bZW51XSB0bltleHRdIHROW2V4dF0gdG9bcGxlZnRdIHRwW3JldmlvdXNdIHRyW2V3aW5kXSB0cnkgdHNbZWxlY3RdIHR1IHR1W25tZW51XSB1bmFbYmJyZXZpYXRlXSB1W25kb10gdW5oW2lkZV0gdW5tW2FwXSB1cFtkYXRlXSB2ZXJiW29zZV0gdmVbcnNpb25dIHZlcnRbaWNhbF0gdltnbG9iYWxdIHZpZVt3XSB2aVtzdWFsXSB2bWFwY1tsZWFyXSB2bmVbd10gdnNbcGxpdF0gdnVbbm1hcF0gd2FbbGxdIHdoW2lsZV0gd2luY1ttZF0gd2luZG8gd2lucFtvc10gd2lucG9zKiB3aW5bc2l6ZV0gd25bZXh0XSB3TltleHRdIHdwW3Jldm91c10gd3Egd3FhW2xsXSB3W3JpdGVdIHdzW3ZlcmJdIHd2W2ltaW5mb10gWCB4YVtsbF0geFtpdF0geVthbmtdIAorc3luIGtleXdvcmQgdmltQ29tbWFuZCBjb250YWluZWQJYWJbYnJldmlhdGVdIGFiY1tsZWFyXSBhYm9bdmVsZWZ0XSBhbFtsXSBhcmdhW2RkXSBhcmdkW2VsZXRlXSBhcmdkbyBhcmdlW2RpdF0gYXJnZ1tsb2JhbF0gYXJnbFtvY2FsXSBhcltnc10gYXJndVttZW50XSBhc1tjaWldIGJhZFtkXSBiYVtsbF0gYmRbZWxldGVdIGJlIGJlbFtvd3JpZ2h0XSBiZltpcnN0XSBibFthc3RdIGJtW29kaWZpZWRdIGJuW2V4dF0gYk5bZXh0XSBib1t0cmlnaHRdIGJwW3JldmlvdXNdIGJyZWFba10gYnJlYWthW2RkXSBicmVha2RbZWxdIGJyZWFrbFtpc3RdIGJyW2V3aW5kXSBicm9bd3NlXSBidWZkbyBiW3VmZmVyXSBidWZmZXJzIGJ1bltsb2FkXSBid1tpcGVvdXRdIGNhW2JicmV2XSBjYWJjW2xlYXJdIGNhbFtsXSBjYXRbY2hdIGNjIGNjbFtvc2VdIGNkIGNlW250ZXJdIGNmW2lsZV0gY2ZpcltzdF0gY2dbZXRmaWxlXSBjW2hhbmdlXSBjaGFuZ2VzIGNoZFtpcl0gY2hlW2NrcGF0aF0gY2hlY2t0W2ltZV0gY2xhW3N0XSBjbFtpc3RdIGNsb1tzZV0gY21hcGNbbGVhcl0gY25ld1tlcl0gY25bZXh0XSBjTltleHRdIGNuZltpbGVdIGNOZltpbGVdIGNub3JlYVtiYnJldl0gY29sW2Rlcl0gY29sb1tyc2NoZW1lXSBjb21jW2xlYXJdIGNvbXBbaWxlcl0gY29uZltpcm1dIGNvblt0aW51ZV0gY29wZVtuXSBjb1tweV0gY3BmW2lsZV0gY3BbcmV2aW91c10gY3FbdWl0XSBjcltld2luZF0gY3VuYVtiYnJldl0gY3Vbbm1hcF0gY3dbaW5kb3ddIGRlYnVnZ1tyZWVkeV0gZGVsY1tvbW1hbmRdIGRbZWxldGVdIERlbGV0ZUZpcnN0IGRlbGZbdW5jdGlvbl0gZGVsbVthcmtzXSBkaWZmZ1tldF0gZGlmZm9mZiBkaWZmcGF0Y2ggZGlmZnB1W3RdIGRpZmZzcGxpdCBkaWZmdGhpcyBkaWdbcmFwaHNdIGRpW3NwbGF5XSBkalt1bXBdIGRsW2lzdF0gZHJbb3BdIGRzW2VhcmNoXSBkc3BbbGl0XSBlY2hvZVtycl0gZWNob21bc2ddIGVjaG9uIGVbZGl0XSBlbFtzZV0gZWxzZWlbZl0gZW1bZW51XSBlbWVudSogZW5kZlt1bmN0aW9uXSBlbltkaWZdIGVuZHRbcnldIGVuZHdbaGlsZV0gZW5lW3ddIGV4IGV4aVt0XSBmW2lsZV0gZmlsZXMgZmlsZXR5cGUgZmluYVtsbHldIGZpbltkXSBmaW5pW3NoXSBmaXJbc3RdIGZpeFtkZWxdIGZvW2xkXSBmb2xkY1tsb3NlXSBmb2xkZG9jW2xvc2VkXSBmb2xkZFtvb3Blbl0gZm9sZG9bcGVuXSBmdVtuY3Rpb25dIGdbbG9iYWxdIGdvW3RvXSBncltlcF0gZ3JlcGFbZGRdIGhhW3JkY29weV0gaFtlbHBdIGhlbHBmW2luZF0gaGVscGdbcmVwXSBoZWxwdFthZ3NdIGhpZFtlXSBoaXNbdG9yeV0gSSBpYVtiYnJldl0gaWFiY1tsZWFyXSBpZiBpalt1bXBdIGlsW2lzdF0gaW1hcGNbbGVhcl0gaW5vcmVhW2JicmV2XSBpc1tlYXJjaF0gaXNwW2xpdF0gaXVuYVtiYnJldl0gaXVbbm1hcF0galtvaW5dIGp1W21wc10gayBrZWVwYWx0IGtlZXBqW3VtcHNdIGtlZVtwbWFya3NdIGxhbltndWFnZV0gbGFbc3RdIGxjW2RdIGxjaFtkaXJdIGxlW2Z0XSBsZWZ0YVtib3ZlXSBsW2lzdF0gbG1bYXBdIGxtYXBjW2xlYXJdIGxuW29yZW1hcF0gbG9bYWR2aWV3XSBsb2Nba21hcmtzXSBscyBsdVtubWFwXSBtYWtbZV0gbWFbcmtdIG1hcmtzIG1hdFtjaF0gbWVudXRbcmFuc2xhdGVdIG1rW2V4cmNdIG1rc1tlc3Npb25dIG1rdmllW3ddIG1rdltpbXJjXSBtb2RbZV0gbVtvdmVdIG16ZltpbGVdIG16W3NjaGVtZV0gbmV3IG5bZXh0XSBOW2V4dF0gbm1hcGNbbGVhcl0gbm9oW2xzZWFyY2hdIG5vcmVhW2JicmV2XSBOcmVhZCBudVttYmVyXSBudW5bbWFwXSBOdyBvbWFwY1tsZWFyXSBvbltseV0gb1twZW5dIG9wdFtpb25zXSBvdVtubWFwXSBwY1tsb3NlXSBwZWRbaXRdIHBlW3JsXSBwZXJsZFtvXSBwb1twXSBwb3B1IHBvcHVbcF0gcHBbb3BdIHByZVtzZXJ2ZV0gcHJldltpb3VzXSBwW3JpbnRdIFBbcmludF0gcHJvbXB0IHByb21wdGZbaW5kXSBwcm9tcHRyW2VwbF0gcHNbZWFyY2hdIHB0YVtnXSBwdGZbaXJzdF0gcHRqW3VtcF0gcHRsW2FzdF0gcHRuW2V4dF0gcHROW2V4dF0gcHRwW3JldmlvdXNdIHB0cltld2luZF0gcHRzW2VsZWN0XSBwdVt0XSBwd1tkXSBweWZbaWxlXSBweVt0aG9uXSBxYVtsbF0gcVt1aXRdIHF1aXRhW2xsXSByW2VhZF0gcmVjW292ZXJdIHJlZGlbcl0gcmVkW29dIHJlZHJbYXddIHJlZHJhd3NbdGF0dXNdIHJlZ1tpc3RlcnNdIHJlc1tpemVdIHJldFthYl0gcmV0dVtybl0gcmV3W2luZF0gcmlbZ2h0XSByaWdodGJbZWxvd10gcnViW3ldIHJ1YnlkW29dIHJ1YnlmW2lsZV0gcnVbbnRpbWVdIHJ2W2ltaW5mb10gc2FsW2xdIHNhbmRib3ggc2Fbcmd1bWVudF0gc2F2W2Vhc10gc2JhW2xsXSBzYmZbaXJzdF0gc2JsW2FzdF0gc2JtW29kaWZpZWRdIHNibltleHRdIHNiTltleHRdIHNicFtyZXZpb3VzXSBzYnJbZXdpbmRdIHNiW3VmZmVyXSBzY3JpcHRlW25jb2RpbmddIHNjcmlwW3RuYW1lc10gc2VbdF0gc2V0ZltpbGV0eXBlXSBzZXRnW2xvYmFsXSBzZXRsW29jYWxdIHNmW2luZF0gc2ZpcltzdCBzaFtlbGxdIHNpZ24gc2lsW2VudF0gc2ltW2FsdF0gc2xhW3N0XSBzbFtlZXBdIHNtW2FnaWNdIHNuW2V4dF0gc05bZXh0XSBzbmlbZmZdIHNub1ttYWdpY10gc29bdXJjZV0gc3BbbGl0XSBzcHJbZXZpb3VzXSBzcmVbd2luZF0gc3RhW2ddIHN0YXJbdGluc2VydF0gc3RhcnRyW2VwbGFjZV0gc3RqW3VtcF0gc3Rbb3BdIHN0b3BpW25zZXJ0XSBzdHNbZWxlY3RdIHN1bltoaWRlXSBzdXNbcGVuZF0gc3ZbaWV3XSBzeW5jYmluZCB0IHRhW2ddIHRhZ3MgdGNbbF0gdGNsZFtvXSB0Y2xmW2lsZV0gdGVbYXJvZmZdIHRmW2lyc3RdIHRoZSB0aFtyb3ddIHRqW3VtcF0gdGxbYXN0XSB0bSB0bVtlbnVdIHRuW2V4dF0gdE5bZXh0XSB0b1twbGVmdF0gdHBbcmV2aW91c10gdHJbZXdpbmRdIHRyeSB0c1tlbGVjdF0gdHUgdHVbbm1lbnVdIHVuYVtiYnJldmlhdGVdIHVbbmRvXSB1bmhbaWRlXSB1bm1bYXBdIHVwW2RhdGVdIHZlcmJbb3NlXSB2ZVtyc2lvbl0gdmVydFtpY2FsXSB2W2dsb2JhbF0gdmllW3ddIHZpW3N1YWxdIHZtYXBjW2xlYXJdIHZuZVt3XSB2c1twbGl0XSB2dVtubWFwXSB3YVtsbF0gd2hbaWxlXSB3aW5jW21kXSB3aW5kbyB3aW5wW29zXSB3aW5wb3MqIHdpbltzaXplXSB3bltleHRdIHdOW2V4dF0gd3BbcmV2b3VzXSB3cSB3cWFbbGxdIHdbcml0ZV0gd3NbdmVyYl0gd3ZbaW1pbmZvXSBYIHhhW2xsXSB4W2l0XSB5W2Fua10gCiBzeW4gbWF0Y2ggICB2aW1Db21tYW5kIGNvbnRhaW5lZAkiXDx6Wy0rXi49XSIKIAogIiB2aW1PcHRpb25zIGFyZSBjYXVnaHQgb25seSB3aGVuIGNvbnRhaW5lZCBpbiBhIHZpbVNldCB7e3syCkBAIC01MSwxMiArNTEsMTQgQEAKIAogIiBEZWZhdWx0IGhpZ2hsaWdodGluZyBncm91cHMge3t7Mgogc3luIGtleXdvcmQgdmltSExHcm91cCBjb250YWluZWQJQ3Vyc29yIEN1cnNvcklNIERpZmZBZGQgRGlmZkNoYW5nZSBEaWZmRGVsZXRlIERpZmZUZXh0IERpcmVjdG9yeSBFcnJvck1zZyBGb2xkQ29sdW1uIEZvbGRlZCBJbmNTZWFyY2ggTGluZU5yIE1lbnUgTW9kZU1zZyBNb3JlTXNnIE5vblRleHQgTm9ybWFsIFF1ZXN0aW9uIFNjcm9sbGJhciBTZWFyY2ggU2lnbkNvbHVtbiBTcGVjaWFsS2V5IFN0YXR1c0xpbmUgU3RhdHVzTGluZU5DIFRpdGxlIFRvb2x0aXAgVmVydFNwbGl0IFZpc3VhbCBWaXN1YWxOT1MgV2FybmluZ01zZyBXaWxkTWVudSAKK3N5biBtYXRjaCB2aW1ITEdyb3VwIGNvbnRhaW5lZAkiQ29uY2VhbCIKIHN5biBjYXNlIG1hdGNoCiAKICIgRnVuY3Rpb24gTmFtZXMge3t7Mgotc3luIGtleXdvcmQgdmltRnVuY05hbWUgY29udGFpbmVkCWFwcGVuZCBhcmdjIGFyZ2lkeCBhcmd2IGJyb3dzZSBidWZleGlzdHMgYnVmbGlzdGVkIGJ1ZmxvYWRlZCBidWZuYW1lIGJ1Zm5yIGJ1Zndpbm5yIGJ5dGUybGluZSBjaGFyMm5yIGNpbmRlbnQgY29sIGNvbmZpcm0gY3Njb3BlX2Nvbm5lY3Rpb24gY3Vyc29yIGRlbGV0ZSBkaWRfZmlsZXR5cGUgZXNjYXBlIGV2ZW50aGFuZGxlciBleGVjdXRhYmxlIGV4aXN0cyBleHBhbmQgZmlsZXJlYWRhYmxlIGZpbGV3cml0YWJsZSBmbmFtZW1vZGlmeSBmb2xkY2xvc2VkIGZvbGRjbG9zZWRlbmQgZm9sZGxldmVsIGZvbGR0ZXh0IGZvcmVncm91bmQgZnVuY3Rpb24gZ2V0YnVmdmFyIGdldGNoYXIgZ2V0Y2hhcm1vZCBnZXRjbWRsaW5lIGdldGNtZHBvcyBnZXRjd2QgZ2V0ZnNpemUgZ2V0ZnRpbWUgZ2V0bGluZSBnZXRyZWcgZ2V0cmVndHlwZSBnZXR3aW5wb3N4IGdldHdpbnBvc3kgZ2V0d2ludmFyIGdsb2IgZ2xvYnBhdGggaGFzIGhhc21hcHRvIGhpc3RhZGQgaGlzdGRlbCBoaXN0Z2V0IGhpc3RuciBobGV4aXN0cyBobElEIGhvc3RuYW1lIGljb252IGluZGVudCBpbnB1dCBpbnB1dGRpYWxvZyBpbnB1dHJlc3RvcmUgaW5wdXRzYXZlIGlucHV0c2VjcmV0IGlzZGlyZWN0b3J5IGxpYmNhbGwgbGliY2FsbG5yIGxpbmUgbGluZTJieXRlIGxpc3BpbmRlbnQgbG9jYWx0aW1lIG1hcGFyZyBtYXBjaGVjayBtYXRjaCBtYXRjaGVuZCBtYXRjaHN0ciBtb2RlIG5leHRub25ibGFuayBucjJjaGFyIHByZXZub25ibGFuayByZW1vdGVfZXhwciByZW1vdGVfZm9yZWdyb3VuZCByZW1vdGVfcGVlayByZW1vdGVfcmVhZCByZW1vdGVfc2VuZCByZW5hbWUgcmVzb2x2ZSBzZWFyY2ggc2VhcmNocGFpciBzZXJ2ZXIyY2xpZW50IHNlcnZlcmxpc3Qgc2V0YnVmdmFyIHNldGNtZHBvcyBzZXRsaW5lIHNldHJlZyBzZXR3aW52YXIgc2ltcGxpZnkgc3RyZnRpbWUgc3RyaWR4IHN0cmxlbiBzdHJwYXJ0IHN0cnJpZHggc3RydHJhbnMgc3VibWF0Y2ggc3Vic3RpdHV0ZSBzeW5JRCBzeW5JRGF0dHIgc3luSUR0cmFucyBzeXN0ZW0gdGVtcG5hbWUgdG9sb3dlciB0b3VwcGVyIHRyIHR5cGUgdmlydGNvbCB2aXN1YWxtb2RlIHdpbmJ1Zm5yIHdpbmNvbCB3aW5oZWlnaHQgd2lubGluZSB3aW5uciB3aW5yZXN0Y21kIHdpbndpZHRoIAorc3luIGtleXdvcmQgdmltRnVuY05hbWUgY29udGFpbmVkCWFwcGVuZCBhcmdjIGFyZ2lkeCBhcmd2IGJyb3dzZSBicm93c2VkaXIgYnVmZXhpc3RzIGJ1Zmxpc3RlZCBidWZsb2FkZWQgYnVmbmFtZSBidWZuciBidWZ3aW5uciBieXRlMmxpbmUgYnl0ZWlkeCBjaGFyMm5yIGNpbmRlbnQgY29sIGNvbmZpcm0gY3Njb3BlX2Nvbm5lY3Rpb24gY3Vyc29yIGRlbGV0ZSBkaWRfZmlsZXR5cGUgZGlmZl9maWxsZXIgZGlmZl9obElEIGVzY2FwZSBldmVudGhhbmRsZXIgZXhlY3V0YWJsZSBleGlzdHMgZXhwYW5kIGZpbGVyZWFkYWJsZSBmaWxld3JpdGFibGUgZmluZGRpciBmaW5kZmlsZSBmbmFtZW1vZGlmeSBmb2xkY2xvc2VkIGZvbGRjbG9zZWRlbmQgZm9sZGxldmVsIGZvbGR0ZXh0IGZvbGR0ZXh0cmVzdWx0IGZvcmVncm91bmQgZnVuY3Rpb24gZ2V0YnVmdmFyIGdldGNoYXIgZ2V0Y2hhcm1vZCBnZXRjbWRsaW5lIGdldGNtZHBvcyBnZXRjd2QgZ2V0ZnBlcm0gZ2V0ZnNpemUgZ2V0ZnRpbWUgZ2V0ZnR5cGUgZ2V0bGluZSBnZXRyZWcgZ2V0cmVndHlwZSBnZXR3aW5wb3N4IGdldHdpbnBvc3kgZ2V0d2ludmFyIGdsb2IgZ2xvYnBhdGggaGFzIGhhc21hcHRvIGhpc3RhZGQgaGlzdGRlbCBoaXN0Z2V0IGhpc3RuciBobGV4aXN0cyBobElEIGhvc3RuYW1lIGljb252IGluZGVudCBpbnB1dCBpbnB1dGRpYWxvZyBpbnB1dHJlc3RvcmUgaW5wdXRzYXZlIGlucHV0c2VjcmV0IGlzZGlyZWN0b3J5IGxpYmNhbGwgbGliY2FsbG5yIGxpbmUgbGluZTJieXRlIGxpc3BpbmRlbnQgbG9jYWx0aW1lIG1hcGFyZyBtYXBjaGVjayBtYXRjaCBtYXRjaGVuZCBtYXRjaHN0ciBtb2RlIG5leHRub25ibGFuayBucjJjaGFyIHByZXZub25ibGFuayByZW1vdGVfZXhwciByZW1vdGVfZm9yZWdyb3VuZCByZW1vdGVfcGVlayByZW1vdGVfcmVhZCByZW1vdGVfc2VuZCByZW5hbWUgcmVwZWF0IHJlc29sdmUgc2VhcmNoIHNlYXJjaHBhaXIgc2VydmVyMmNsaWVudCBzZXJ2ZXJsaXN0IHNldGJ1ZnZhciBzZXRjbWRwb3Mgc2V0bGluZSBzZXRyZWcgc2V0d2ludmFyIHNpbXBsaWZ5IHN0cmZ0aW1lIHN0cmlkeCBzdHJsZW4gc3RycGFydCBzdHJyaWR4IHN0cnRyYW5zIHN1Ym1hdGNoIHN1YnN0aXR1dGUgc3luSUQgc3luSURhdHRyIHN5bklEdHJhbnMgc3lzdGVtIHRlbXBuYW1lIHRvbG93ZXIgdG91cHBlciB0ciB0eXBlIHZpcnRjb2wgdmlzdWFsbW9kZSB3aW5idWZuciB3aW5jb2wgd2luaGVpZ2h0IHdpbmxpbmUgd2lubnIgd2lucmVzdGNtZCB3aW53aWR0aCAKIAogIi0tLSBzeW50YXggYWJvdmUgZ2VuZXJhdGVkIGJ5IG1rdmltdmltIC0tLQorIi0tLSBzeW50YXggYWJvdmUgZ2VuZXJhdGVkIGJ5IG1rdmltdmltIC0tLQogIiBTcGVjaWFsIFZpbSBIaWdobGlnaHRpbmcgKG5vdCBhdXRvbWF0aWMpIHt7ezEKIAogIiBOdW1iZXJzIHt7ezIKQEAgLTY4LDcgKzcwLDcgQEAKIAogIiBBbGwgdmltQ29tbWFuZHMgYXJlIGNvbnRhaW5lZCBieSB2aW1Jc0NvbW1hbmRzLiB7e3syCiBzeW4gbWF0Y2ggdmltQ21kU2VwCSJbOnxdXCsiCXNraXB3aGl0ZSBuZXh0Z3JvdXA9dmltQWRkcmVzcyx2aW1BdXRvQ21kLHZpbUNvbW1hbmQsdmltRXh0Q21kLHZpbUZpbHRlcix2aW1MZXQsdmltTWFwLHZpbU1hcmssdmltU2V0LHZpbVN5bnRheCx2aW1Vc2VyQ21kCi1zeW4gbWF0Y2ggdmltSXNDb21tYW5kCSJcPFxhXCtcPiIJY29udGFpbnM9dmltQ29tbWFuZAorc3luIG1hdGNoIHZpbUlzQ29tbWFuZAkiXDxcaFx3Klw+Igljb250YWlucz12aW1Db21tYW5kCiBzeW4gbWF0Y2ggdmltVmFyCQkiXDxbYndnbHNhdl06XEtcaypcPiIKIHN5biBtYXRjaCB2aW1WYXIgY29udGFpbmVkCSJcPFxLXGsqXD4iCiAKQEAgLTg4LDcgKzkwLDcgQEAKIAogIiBGaWxldHlwZXMge3t7MgogIiA9PT09PT09PT0KLXN5biBtYXRjaCAgIHZpbUZpbGV0eXBlCSJcPGZpbGV0XCVbeXBlXVwoXHNcK1xJXGkqXCkqXCh8XHwkXCkiCXNraXB3aGl0ZSBjb250YWlucz12aW1GVENtZCx2aW1GVE9wdGlvbix2aW1GVEVycm9yCitzeW4gbWF0Y2ggICB2aW1GaWxldHlwZQkiXDxmaWxldFwlW3lwZV1cKFxzXCtcSVxpKlwpKiIJc2tpcHdoaXRlIGNvbnRhaW5zPXZpbUZUQ21kLHZpbUZUT3B0aW9uLHZpbUZURXJyb3IKIGlmICFleGlzdHMoImc6dmltc3ludGF4X25vZXJyb3IiKQogIHN5biBtYXRjaCAgIHZpbUZURXJyb3IgIGNvbnRhaW5lZAkiXElcaSoiCiBlbmRpZgpAQCAtMTI2LDYgKzEyOCw3IEBACiBzeW4gbWF0Y2ggIHZpbU9wZXIJIlwoPT1cfCE9XHw+PVx8PD1cfD1cflx8IVx+XHw+XHw8XHw9XClbPyNdXHswLDJ9Iglza2lwd2hpdGUgbmV4dGdyb3VwPXZpbVN0cmluZyx2aW1TcGVjRmlsZQogc3luIG1hdGNoICB2aW1PcGVyCSJ8fFx8JiZcfFstKy5dIglza2lwd2hpdGUgbmV4dGdyb3VwPXZpbVN0cmluZyx2aW1TcGVjRmlsZQogc3luIHJlZ2lvbiB2aW1PcGVyUGFyZW4gb25lbGluZQltYXRjaGdyb3VwPXZpbU9wZXIgc3RhcnQ9IigiIGVuZD0iKSIgY29udGFpbnM9QHZpbU9wZXJHcm91cAorc3luIHJlZ2lvbiB2aW1PcGVyUGFyZW4gb25lbGluZQltYXRjaGdyb3VwPXZpbVNlcCAgc3RhcnQ9InsiIGVuZD0ifSIgY29udGFpbnM9QHZpbU9wZXJHcm91cCBuZXh0Z3JvdXA9dmltVmFyCiBzeW4gbWF0Y2ggIHZpbU9wZXJPawkiXDxbYWlBSXJSXVsoKV0iCiBpZiAhZXhpc3RzKCJnOnZpbXN5bnRheF9ub2Vycm9yIikKICBzeW4gbWF0Y2ggIHZpbU9wZXJFcnJvcgkiKSIKQEAgLTI0Miw3ICsyNDUsNyBAQAogc3luIG1hdGNoICB2aW1GaWx0ZXIgY29udGFpbmVkCSJcQSEuXHstfVwofFx8JFwpIm1zPXMrMQljb250YWlucz12aW1TcGVjRmlsZQogCiAiIENvbXBsZXggcmVwZWF0cyAoOmggY29tcGxleC1yZXBlYXQpIHt7ezIKLXN5biBtYXRjaCAgdmltQ21wbHhSZXBlYXQJJ1teYS16QS1aXy9cXF1xWzAtOWEtekEtWiJdJ2xjPTEKK3N5biBtYXRjaCAgdmltQ21wbHhSZXBlYXQJJ1teYS16QS1aXy9cXCgpXXFbMC05YS16QS1aIl0nbGM9MQogc3luIG1hdGNoICB2aW1DbXBseFJlcGVhdAknQFswLTlhLXoiLj1AOl1cemVcKCRcfFteYS16QS1aXVwpJwogCiAiIFNldCBjb21tYW5kIGFuZCBhc3NvY2lhdGVkIHNldC1vcHRpb25zICh2aW1PcHRpb25zKSB3aXRoIGNvbW1lbnQge3t7MgpAQCAtMjY2LDcgKzI2OSw3IEBACiAiIEVjaG8gYW5kIEV4ZWN1dGUgLS0gcHJlZmVyIHN0cmluZ3MhIHt7ezIKICIgPT09PT09PT09PT09PT09PQogc3luIHJlZ2lvbiAgdmltRWNobwlvbmVsaW5lIGV4Y2x1ZGVubCBtYXRjaGdyb3VwPXZpbUNvbW1hbmQgc3RhcnQ9Ilw8ZWNcJVtob11cPiIgc2tpcD0iXChcXFxcXCkqXFx8IiBlbmQ9IiRcfHwiIGNvbnRhaW5zPXZpbUZ1bmMsdmltU3RyaW5nLHZhclZhcgotc3luIHJlZ2lvbiAgdmltRXhlY3V0ZQlvbmVsaW5lIGV4Y2x1ZGVubCBtYXRjaGdyb3VwPXZpbUNvbW1hbmQgc3RhcnQ9Ilw8ZXhlXCVbY3V0ZV1cPiIgc2tpcD0iXChcXFxcXCkqXFx8IiBlbmQ9IiRcfHxcfDxbY0NdW3JSXT4iIGNvbnRhaW5zPXZpbUlzQ29tbWFuZCx2aW1TdHJpbmcsdmltT3Blcix2aW1WYXIsdmltTm90YXRpb24KK3N5biByZWdpb24gIHZpbUV4ZWN1dGUJb25lbGluZSBleGNsdWRlbmwgbWF0Y2hncm91cD12aW1Db21tYW5kIHN0YXJ0PSJcPGV4ZVwlW2N1dGVdXD4iIHNraXA9IlwoXFxcXFwpKlxcfCIgZW5kPSIkXHx8XHw8W2NDXVtyUl0+IiBjb250YWlucz12aW1Jc0NvbW1hbmQsdmltU3RyaW5nLHZpbU9wZXIsdmltVmFyLHZpbU5vdGF0aW9uLHZpbU9wZXJQYXJlbgogc3luIG1hdGNoICAgdmltRWNob0hMCSJlY2hvaGxcPSIJc2tpcHdoaXRlIG5leHRncm91cD12aW1Hcm91cCx2aW1ITEdyb3VwLHZpbUVjaG9ITE5vbmUKIHN5biBjYXNlIGlnbm9yZQogc3luIGtleXdvcmQgdmltRWNob0hMTm9uZQlub25lCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC93Z2V0LnZpbSBiL3J1bnRpbWUvc3ludGF4L3dnZXQudmltCmluZGV4IDgwMWY3NmQuLjg4ZGY2OTAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3dnZXQudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3dnZXQudmltCkBAIC0xLDkgKzEsOSBAQAogIiBXZ2V0IHN5bnRheCBmaWxlCiAiIEZpbGVuYW1lOiAgICAgd2dldC52aW0KICIgTGFuZ3VhZ2U6ICAgICBXZ2V0IGNvbmZpZ3VyYXRpb24gZmlsZSAoIC9ldGMvd2dldHJjIH4vLndnZXRyYyApCi0iIE1haW50YWluZXI6ICAgRG91ZyBLZWFybnMgPGRqa2VhMkBtdWdjYS5pdHMubW9uYXNoLmVkdS5hdT4KLSIgVVJMOgkJaHR0cDovL211Z2NhLml0cy5tb25hc2guZWR1LmF1L35kamtlYTIvdmltL3N5bnRheC93Z2V0LnZpbQotIiBMYXN0IENoYW5nZTogIDIwMDMgTWF5IDExCisiIE1haW50YWluZXI6ICAgRG91ZyBLZWFybnMgPGRqa2VhMkBndXMuZ3NjaXQubW9uYXNoLmVkdS5hdT4KKyIgVVJMOgkJaHR0cDovL2d1cy5nc2NpdC5tb25hc2guZWR1LmF1L35kamtlYTIvdmltL3N5bnRheC93Z2V0LnZpbQorIiBMYXN0IENoYW5nZTogIDIwMDQgTm92IDI3CiAKICIgVE9ETzogYWxsIGNvbW1hbmRzIGFyZSBhY3R1YWxseSB1bmRlcnNjb3JlIGFuZCBoeXBoZW4gaW5zZW5zaXRpdmUsIHRob3VnaAogIiAgICAgICB0aGV5IGFyZSBub3JtYWxseSBuYW1lZCBhcyBsaXN0ZWQgYmVsb3cKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvdHV0b3IuZGUgYi9ydW50aW1lL3R1dG9yL3R1dG9yLmRlCmluZGV4IDJhOGYwOTAuLmQyMDc2MjEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvdHV0b3IvdHV0b3IuZGUKKysrIGIvcnVudGltZS90dXRvci90dXRvci5kZQpAQCAtNjcsNyArNjcsNyBAQAogICAgICBXZW5uIER1IGRpZSDEbmRlcnVuZ2VuIHNwZWljaGVybiB1bmQgYmVlbmRlbiB3aWxsc3QsIHRpcHBlOgogCQkJCTp3cSAgPEVOVEVSPgogCi0gIDMuIFdlbm4gRHUgZGllIEVpbmdhYmVhdWZmb3JkZXJ1bmcgc2llaHN0LCB0aXBwZSBkYXMgS29tbWFuZG8sIGRhc3MgRGljaCB6dQorICAzLiBXZW5uIER1IGRpZSBFaW5nYWJlYXVmZm9yZGVydW5nIHNpZWhzdCwgdGlwcGUgZGFzIEtvbW1hbmRvLCBkYXMgRGljaCB6dQogICAgICBkaWVzZW0gVHV0b3IgZ2Vm/GhydCBoYXQuIERhcyBr9m5udGUgc2VpbjogdmltdHV0b3IgPEVOVEVSPgogICAgICBJbSBOb3JtYWxmYWxsIHf8cmRlc3QgRHUgZWluZ2ViZW4JCQlWaW0gdHV0b3IgPEVOVEVSPgogCkBAIC0yOTksMTEgKzI5OSwxMSBAQAogCQkJICAgTGVrdGlvbiAzLjE6IEFORtxHRU4gKFBVVCkKIAogCi0gICAgICAgKiogVGlwcGUgcCAsdW0gZGFzIHp1bGV0enQgR2Vs9nNjaHRlIG5hY2ggZGVtIEN1cnNvciBhbnp1ZvxnZW4uICoqCisgICAgICAgKiogVGlwcGUgcCAsIHVtIGRhcyB6dWxldHp0IEdlbPZzY2h0ZSBuYWNoIGRlbSBDdXJzb3IgYW56dWb8Z2VuLiAqKgogCiAgIDEuIEJld2VnZSBkZW4gQ3Vyc29yIHp1ciBlcnN0ZW4gWmVpbGUgZGVzIHVudGVuIHN0ZWhlbmRlbiBTaW5uc3BydWNocy4KIAotICAyLiBUaXBwZSAgZGQgICwgdW0gZGllIFplaWxlIHp1IGz2c2NoZW4gdW5kIHNpZSBpbSBWaW1zIFB1ZmZlciB6dSBzcGVpY2hlcm4uCisgIDIuIFRpcHBlICBkZCAgLCB1bSBkaWUgWmVpbGUgenUgbPZzY2hlbiB1bmQgc2llIGluIFZpbXMgUHVmZmVyIHp1IHNwZWljaGVybi4KIAogICAzLiBCZXdlZ2UgZGVuIEN1cnNvciB6dXIgWmVpbGUg3EJFUiBkZXJqZW5pZ2VuLAogICAgICB3byBkaWUgZ2Vs9nNjaHRlIFplaWxlIHBsYXR6aWVydCB3ZXJkZW4gc29sbC4KQEAgLTM1MCw3ICszNTAsNyBAQAogCiAgIDEuIEJld2VnZSBkZW4gQ3Vyc29yIHp1ciBlcnN0ZW4gdW50ZW4gc3RlaGVuZGVuLCBtaXQgLS0tPiBtYXJraWVydGVuIFplaWxlLgogCi0gIDIuIFBsYXppZXJlIGRlbiBDdXJzb3IgYXVmIGRhcyBzIHZvbiBXc3R3ci4KKyAgMi4gUGxhdHppZXJlIGRlbiBDdXJzb3IgYXVmIGRhcyBzIHZvbiBXc3R3ci4KIAogICAzLiBUaXBwZSAgY3cgIHVuZCBkaWUgV29ydGtvcnJla3R1ciBlaW4gKGluIGRpZXNlbSBGYWxsLCB0aXBwZSAgJ/ZydGVyJy4pCiAKQEAgLTM3Miw3ICszNzIsNyBAQAogCiAgICAgICoqIERhcyBjaGFuZ2UtS29tbWFuZG8gYXJiZWl0ZXQgbWl0IGRlbnNlbGJlbiBPYmpla3RlbiB3aWUgZGVsZXRlICAqKgogCi0gIDEuIERhcyBjaGFuZ2UgS29tbWFuZG8gYXJiZWl0ZXQgZ2xlaWNoZXIgV2Vpc2Ugd2llIGRlbGV0ZS4gRGFzIEZvcm1hdCBpc3Q6CisgIDEuIERhcyBjaGFuZ2UgS29tbWFuZG8gYXJiZWl0ZXQgaW4gZ2xlaWNoZXIgV2Vpc2Ugd2llIGRlbGV0ZS4gRGFzIEZvcm1hdCBpc3Q6CiAKICAgICAgICBbTnVtbWVyXSAgIGMgICBPYmpla3QgICAgICAgT0RFUiAgICAgICBjICAgW051bW1lcl0gICBPYmpla3QKIApAQCAtMzkzLDcgKzM5Myw3IEBACiAJCQkgICBaVVNBTU1FTkZBU1NVTkcgVk9OIExFS1RJT04gMwogCiAKLSAgMS4gVW0gZWluZW4gdm9yaGVyIGdlbPZzY2h0ZW4gVGV4dCBhbnp1ZvxnZW4sIHRpcHBlICBwICAuIERpZXNlIGb8Z3QgZGVuCisgIDEuIFVtIGVpbmVuIHZvcmhlciBnZWz2c2NodGVuIFRleHQgYW56dWb8Z2VuLCB0aXBwZSAgcCAgLiBEaWVzIGb8Z3QgZGVuCiAgICAgIGdlbPZzY2h0ZW4gVGV4dCBOQUNIIGRlbSBDdXJzb3IgYW4gKHdlbm4gZXMgc2ljaCB1bSBlaW5lIGdhbnplIFplaWxlCiAgICAgIGhhbmRlbHQsIHdpcmQgYWIgZGVyIFplaWxlIHVudGVyIGRlbSBDdXJzb3IgZWluZ2Vm/Gd0KS4KIApAQCAtNDYzLDcgKzQ2Myw3IEBACiAKICAgICoqIFRpcHBlICAlICwgdW0gZWluZSBrb3JyZXNwb25kaWVyZW5kZSBLbGFtbWVyICksXSwgb2RlciB9IHp1IGZpbmRlbi4gKioKIAotICAxLiBQbGF6aWVyZSBkZW4gQ3Vyc29yIGF1ZiBpcmdlbmRlaW5lbSBkZXIgWmVpY2hlbiAoLCBbLCBvZGVyIHsKKyAgMS4gUGxhdHppZXJlIGRlbiBDdXJzb3IgYXVmIGlyZ2VuZGVpbmVtIGRlciBaZWljaGVuICgsIFssIG9kZXIgewogICAgICBpbiBkZXIgdW50ZW4gc3RlaGVuZGVuIFplaWxlLCBkaWUgbWl0IC0tLT4gbWFya2llcnQgaXN0LgogCiAgIDIuIE51biB0aXBwZSBkYXMgICUgIFplaWNoZW4uCkBAIC02MTIsNyArNjEyLDcgQEAKICAgMS4gVGlwcGUgICA6IWxzICAgYnp3LiAgICFkaXIgLCAgdW0gc2ljaGVyenVzdGVsbGVuLCBkYXNzIERlaW5lIERhdGVpIFRFU1QKICAgICAgdm9uIHZvcmhpbiB2b3JoYW5kZW4gaXN0LgogCi0gIDIuIFBsYXppZXJlIGRlbiBDdXJzb3IgYXVmIGRlciBlcnN0ZW4gWmVpbGUgZGllc2VzIEthcGl0ZWxzLgorICAyLiBQbGF0emllcmUgZGVuIEN1cnNvciBhdWYgZGVyIGVyc3RlbiBaZWlsZSBkaWVzZXMgS2FwaXRlbHMuCiAKIEJFQUNIVEU6ICBOYWNoZGVtIER1IFNjaHJpdHQgMyBhdXNnZWb8aHJ0IGhhc3QsIHdpcnN0IER1IExla3Rpb24gNS4zICBzZWhlbi4KIAkgIEFuIGRpZXNlbSBQdW5rdCBiZXdlZ2UgRGljaCB3aWVkZXIgQUJXxFJUUyB6dSBkaWVzZXIgTGVrdGlvbi4KQEAgLTcwNiw3ICs3MDYsNyBAQAogCiAgIDEuIEJld2VnZSBkZW4gQ3Vyc29yIHp1ciBlcnN0ZW4gdW50ZW4gc3RlaGVuZGVuLCBtaXQgLS0tPiBtYXJraWVydGVuIFplaWxlLgogCi0gIDIuIFBsYXppZXJlIGRlbiBDdXJzb3IgYXVmIGRlbiBBbmZhbmcgZGVzIGVyc3RlbiBXb3J0ZXMsIHdlbGNoZXMgc2ljaCB2b24KKyAgMi4gUGxhdHppZXJlIGRlbiBDdXJzb3IgYXVmIGRlbiBBbmZhbmcgZGVzIGVyc3RlbiBXb3J0ZXMsIHdlbGNoZXMgc2ljaCB2b24KICAgICAgZGVyIHp3ZWl0ZW4gbWl0IC0tLT4gbWFya2llcnRlbiBaZWlsZSB1bnRlcnNjaGVpZGV0IChkYXMgV29ydCAnYmVudXR6ZScpLgogCiAgIDMuIE51biBnaWIgZWluIFIgIGVpbiwgdW5kIGVyc2V0emUgZGVuIFJlc3QgZGVzIFRleHRlcyBhdWYgZGVyIGVyc3RlbgpAQCAtODI1LDExICs4MjUsMTkgQEAKICAgRvxyIHdlaXRlcmVzIExlc2VuIHVuZCBMZXJuZW4ga2FubiBmb2xnZW5kZXMgQnVjaCBlbXBmb2hsZW4gd2VyZGVuOgogCVZpbSAtIFZpIEltcHJvdmVkIC0gdm9uIFN0ZXZlIE91YWxsaW5lCiAJVmVybGFnOiBOZXcgUmlkZXJzCi0gIERhcyBlcnN0ZSBCdWNoLCBkYXNzIGR1cmNoZ+RuZ2lnIFZpbSBnZXdpZG1ldCBpc3QuICBCZXNvbmRlcnMgbvx0emxpY2gKKyAgRGFzIGVyc3RlIEJ1Y2gsIGRhcyBkdXJjaGfkbmdpZyBWaW0gZ2V3aWRtZXQgaXN0LiAgQmVzb25kZXJzIG78dHpsaWNoCiAgIGb8ciBBbmbkbmdlci4KICAgVmllbGUgQmVpc3BpZWxlIHVuZCBCaWxkZXIgc2luZCBlbnRoYWx0ZW4uCiAgIFNpZWhlIGh0dHA6Ly93d3cuaWNjZi5ubC9jbGljazUuaHRtbAogCisgIEFscyBha3R1ZWxsZSBSZWZlcmVueiBm77+9ciBWZXJzaW9uIDYuMiB1bmQga25hcHBlIEVpbmbvv71ocnVuZyBkaWVudCBkYXMKKyAgZm9sZ2VuZGUgQnVjaDoKKyAgICAgICAgdmltIGdlLXBhY2t0IHZvbiBSZWluaGFyZCBXb2JzdAorCW1pdHAtVmVybGFnLCBJU0JOIDMtODI2Ni0xNDI1LTkKKyAgVHJvdHogZGVyIGtvbXBha3RlbiBEYXJzdGVsbHVuZyBpc3QgZXMgZHVyY2ggdmllbGUgbu+/vXR6bGljaGUgQmVpc3BpZWxlIGF1Y2gKKyAgZu+/vXIgRWluc3RlaWdlciBlbXBmZWhsZW5zd2VydC4gIFByb2Jla2FwaXRlbCB1bmQgZGllIEJlaXNwaWVsc2tyaXB0ZSBzaW5kCisgIG9ubGluZSBlcmjvv71sdGxpY2guICBTaWVoZSBodHRwOi8vd3d3LmljY2YubmwvY2xpY2s1Lmh0bWwKKwogICBGb2xnZW5kZXMgQnVjaCBpc3Qg5Gx0ZXIgdW5kIG1laHIg/GJlciBWaSBhbHMgVmltLCBhYmVyIGF1Y2ggZW1wZmVobGVuc3dlcnQ6CiAJTGluZGEgTGFtYiB1bmQgQXJub2xkIFJvYmJpbnMKIAlUZXh0YmVhcmJlaXR1bmcgbWl0IGRlbSB2aS1FZGl0b3IKZGlmZiAtLWdpdCBhL3NyYy9NYWtlX3JvLm1hayBiL3NyYy9NYWtlX3JvLm1hawppbmRleCA2YWMyZjk0Li44MjcwOGY0IDEwMDY0NAotLS0gYS9zcmMvTWFrZV9yby5tYWsKKysrIGIvc3JjL01ha2Vfcm8ubWFrCkBAIC0yLDE4ICsyLDE2IEBACiAjIE1ha2VmaWxlIGZvciBWaW0gb24gUklTQyBPUyAtIEFuZHkgV2luZ2F0ZQogIwogCi1HQ0MJICAgID0gZ2NjIC1tdGhyb3diYWNrCi1DRkxBR1MJICAgPSAtRFJJU0NPUyAtREZFQVRfR1VJCi0jIE9wdGltaXNpbmcgb24gZXhfZG9jbWQuYyBzZWVtcyB0byBjYXVzZSBzZWdmYXVsdHMgb24gY29tcGlsYXRpb24uIE5lZWRzIGludmVzdGlnYXRpb24uCi1DQ0VYX0RPQ01EID0gJChHQ0MpICQoQ0ZMQUdTKQotQ0MJICAgPSAkKEdDQykgJChDRkxBR1MpIC1PMgorR0NDICAgICAgICAgPSBnY2MgLW10aHJvd2JhY2sKK0NGTEFHUyAgICAgPSAtRFJJU0NPUyAtREZFQVRfR1VJCitDQyAgICAgICAgID0gJChHQ0MpICQoQ0ZMQUdTKSAtTzIKICMgLURVUF9CQ19QQ19FWFRFUk4gZm9yIHRlcm0uYyBuZWVkZWQgYXMgQkMgZGVmaW5lZCBpbiB0ZXJtbGliLmMgYW5kIHRlcm0uYwogCiBURVJNRkxBRyAgID0gLURVUF9CQ19QQ19FWFRFUk4KIAogQVNNRkxBR1MgICA9IC10aHJvd2JhY2sgLW9iamFzbSAtZ2NjCiAKLU9CSlMgPSAgby5idWZmZXIgby5jaGFyc2V0IG8uZGlncmFwaCBvLmVkaXQgby5ldmFsIG8uZXhfY21kcyBvLmV4X2NtZHMyIG8uZGlmZiBcCitPQkpTID0gIG8uYnVmZmVyIG8uY2hhcnNldCBvLmRpZmYgby5kaWdyYXBoIG8uZWRpdCBvLmV2YWwgby5leF9jbWRzIG8uZXhfY21kczIgIFwKIAlvLmV4X2RvY21kIG8uZXhfZXZhbCBvLmV4X2dldGxuIG8uZmlsZWlvIG8uZm9sZCBvLmdldGNoYXIgby5tYWluIG8ubWFyayBvLm1ieXRlICBcCiAJby5tZW1maWxlIG8ubWVtbGluZSBvLm1lbnUgby5tZXNzYWdlIG8ubWlzYzEgby5taXNjMiBvLm1vdmUgICAgIFwKIAlvLm5vcm1hbCBvLm9wcyBvLm9wdGlvbiBvLnF1aWNrZml4IG8ucmVnZXhwIG8uc2NyZWVuIG8uc2VhcmNoICAgXApAQCAtMjYsNyArMjQsNyBAQAogaW5zdGFsbDogVmltCiAJc3F1ZWV6ZSAtdiBWaW0gQC4hVmltLlZpbQogCi1jbGVhbjoKK2NsZWFuOgkKIAljcmVhdGUgby4hZmFrZSEgMAogCXdpcGUgby4qIH5jZgogCXJlbW92ZSBWaW0KQEAgLTM1LDEzNCArMzMsOTMgQEAKIAlhcyAkKEFTTUZMQUdTKSAtbyBvLnN3aXMgcy5zd2lzCiAKICMgUnVsZXMgZm9yIG9iamVjdCBmaWxlcwotIyBZb3Ugc2hvdWxkbid0IG5lZWQgdG8gcHV0IGFsbCB0aGlzIGluZm9ybWF0aW9uIGluIGFzIGFsbCBidXQgdGVybS5jIGhhdmUgdGhlIHNhbWUKLSMgcnVsZSAoYW5kIG9ubHkgdGhlbiB0byBzYXZlIGV4dHJhIGRlZmluZXMpIGJ1dCBzb21lIHZlcnNpb25zIG9mIG1ha2UgYXJlIGF3a3dhcmQuCisKK28uJToJYy4lCisJJChDQykgLWMgJDwgLW8gJEAKIAogby5idWZmZXI6CWMuYnVmZmVyCi0JJChDQykgLWMgYy5idWZmZXIgLW8gby5idWZmZXIKIAogby5jaGFyc2V0OgljLmNoYXJzZXQKLQkkKENDKSAtYyBjLmNoYXJzZXQgLW8gby5jaGFyc2V0CiAKIG8uZGlncmFwaDoJYy5kaWdyYXBoCi0JJChDQykgLWMgYy5kaWdyYXBoIC1vIG8uZGlncmFwaAogCiBvLmRpZmY6CQljLmRpZmYKLQkkKENDKSAtYyBjLmRpZmYgLW8gby5kaWZmCiAKIG8uZWRpdDoJCWMuZWRpdAotCSQoQ0MpIC1jIGMuZWRpdCAtbyBvLmVkaXQKIAogby5ldmFsOgkJYy5ldmFsCi0JJChDQykgLWMgYy5ldmFsIC1vIG8uZXZhbAogCiBvLmV4X2NtZHM6CWMuZXhfY21kcwotCSQoQ0MpIC1jIGMuZXhfY21kcyAtbyBvLmV4X2NtZHMKIAogby5leF9jbWRzMjoJYy5leF9jbWRzMgotCSQoQ0MpIC1jIGMuZXhfY21kczIgLW8gby5leF9jbWRzMgogCiBvLmV4X2RvY21kOgljLmV4X2RvY21kCi0JJChDQ0VYX0RPQ01EKSAtYyBjLmV4X2RvY21kIC1vIG8uZXhfZG9jbWQKIAogby5leF9ldmFsOgljLmV4X2V2YWwKLQkkKENDRVhfRE9DTUQpIC1jIGMuZXhfZXZhbCAtbyBvLmV4X2V2YWwKIAogby5leF9nZXRsbjoJYy5leF9nZXRsbgotCSQoQ0MpIC1jIGMuZXhfZ2V0bG4gLW8gby5leF9nZXRsbgogCiBvLmZpbGVpbzoJYy5maWxlaW8KLQkkKENDKSAtYyBjLmZpbGVpbyAtbyBvLmZpbGVpbwogCiBvLmZvbGQ6CQljLmZvbGQKLQkkKENDKSAtYyBjLmZvbGQgLW8gby5mb2xkCiAKIG8uZ2V0Y2hhcjoJYy5nZXRjaGFyCi0JJChDQykgLWMgYy5nZXRjaGFyIC1vIG8uZ2V0Y2hhcgogCiBvLmd1aToJCWMuZ3VpCi0JJChDQykgLWMgYy5ndWkgLW8gby5ndWkKIAogby5ndWlfcmlzY29zOgljLmd1aV9yaXNjb3MKLQkkKENDKSAtYyBjLmd1aV9yaXNjb3MgLW8gby5ndWlfcmlzY29zCiAKIG8ubWFpbjoJCWMubWFpbgotCSQoQ0MpIC1jIGMubWFpbiAtbyBvLm1haW4KIAogby5tYXJrOgkJYy5tYXJrCi0JJChDQykgLWMgYy5tYXJrIC1vIG8ubWFyawogCiBvLm1ieXRlOgljLm1ieXRlCi0JJChDQykgLWMgYy5tYnl0ZSAtbyBvLm1ieXRlCiAKIG8ubWVtZmlsZToJYy5tZW1maWxlCi0JJChDQykgLWMgYy5tZW1maWxlIC1vIG8ubWVtZmlsZQogCiBvLm1lbWxpbmU6CWMubWVtbGluZQotCSQoQ0MpIC1jIGMubWVtbGluZSAtbyBvLm1lbWxpbmUKIAogby5tZW51OgkJYy5tZW51Ci0JJChDQykgLWMgYy5tZW51IC1vIG8ubWVudQogCiBvLm1lc3NhZ2U6CWMubWVzc2FnZQotCSQoQ0MpIC1jIGMubWVzc2FnZSAtbyBvLm1lc3NhZ2UKIAogby5taXNjMToJYy5taXNjMQotCSQoQ0MpIC1jIGMubWlzYzEgLW8gby5taXNjMQogCiBvLm1pc2MyOgljLm1pc2MyCi0JJChDQykgLWMgYy5taXNjMiAtbyBvLm1pc2MyCiAKIG8ubW92ZToJCWMubW92ZQotCSQoQ0MpIC1jIGMubW92ZSAtbyBvLm1vdmUKIAogby5ub3JtYWw6CWMubm9ybWFsCi0JJChDQykgLWMgYy5ub3JtYWwgLW8gby5ub3JtYWwKIAogby5vcHM6CQljLm9wcwotCSQoQ0MpIC1jIGMub3BzIC1vIG8ub3BzCiAKIG8ub3B0aW9uOgljLm9wdGlvbgotCSQoQ0MpIC1jIGMub3B0aW9uIC1vIG8ub3B0aW9uCiAKIG8ub3NfcmlzY29zOgljLm9zX3Jpc2NvcwotCSQoQ0MpIC1jIGMub3NfcmlzY29zIC1vIG8ub3NfcmlzY29zCiAKIG8ucHR5OgkJYy5wdHkKLQkkKENDKSAtYyBjLnB0eSAtbyBwLnB0eQogCiBvLnF1aWNrZml4OgljLnF1aWNrZml4Ci0JJChDQykgLWMgYy5xdWlja2ZpeCAtbyBvLnF1aWNrZml4CiAKIG8ucmVnZXhwOgljLnJlZ2V4cAotCSQoQ0MpIC1jIGMucmVnZXhwIC1vIG8ucmVnZXhwCiAKIG8uc2NyZWVuOgljLnNjcmVlbgotCSQoQ0MpIC1jIGMuc2NyZWVuIC1vIG8uc2NyZWVuCiAKIG8uc2VhcmNoOgljLnNlYXJjaAotCSQoQ0MpIC1jIGMuc2VhcmNoIC1vIG8uc2VhcmNoCiAKIG8uc3ludGF4OgljLnN5bnRheAotCSQoQ0MpIC1jIGMuc3ludGF4IC1vIG8uc3ludGF4CiAKIG8udGFnOgkJYy50YWcKLQkkKENDKSAtYyBjLnRhZyAtbyBvLnRhZwogCiBvLnRlcm06CQljLnRlcm0KIAkkKENDKSAkKFRFUk1GTEFHKSAtYyBjLnRlcm0gLW8gby50ZXJtCiAKIG8udGVybWxpYjoJYy50ZXJtbGliCi0JJChDQykgLWMgYy50ZXJtbGliIC1vIG8udGVybWxpYgogCiBvLnVpOgkJYy51aQotCSQoQ0MpIC1jIGMudWkgLW8gby51aQogCiBvLnVuZG86CQljLnVuZG8KLQkkKENDKSAtYyBjLnVuZG8gLW8gby51bmRvCiAKIG8udmVyc2lvbjoJYy52ZXJzaW9uCi0JJChDQykgLWMgYy52ZXJzaW9uIC1vIG8udmVyc2lvbgogCiBvLndpbmRvdzoJYy53aW5kb3cKLQkkKENDKSAtYyBjLndpbmRvdyAtbyBvLndpbmRvdwpkaWZmIC0tZ2l0IGEvc3JjL2J1ZmZlci5jIGIvc3JjL2J1ZmZlci5jCmluZGV4IGExZDU5M2QuLmYwMmMwMGQgMTAwNjQ0Ci0tLSBhL3NyYy9idWZmZXIuYworKysgYi9zcmMvYnVmZmVyLmMKQEAgLTUzOCw4ICs1MzgsNyBAQAogCSAgICByZXR1cm47CiAgICAgfQogIyBpZmRlZiBGRUFUX0VWQUwKLSAgICAvKiBhdXRvY21kcyBtYXkgYWJvcnQgc2NyaXB0IHByb2Nlc3NpbmcgKi8KLSAgICBpZiAoYWJvcnRpbmcoKSkKKyAgICBpZiAoYWJvcnRpbmcoKSkJICAgIC8qIGF1dG9jbWRzIG1heSBhYm9ydCBzY3JpcHQgcHJvY2Vzc2luZyAqLwogCXJldHVybjsKICMgZW5kaWYKIApAQCAtNzU1LDcgKzc1NCw2IEBACiAjIGVuZGlmCiAgICAgfQogICAgIHN3YXBfZXhpc3RzX2FjdGlvbiA9IFNFQV9OT05FOwotCiB9CiAjZW5kaWYKIApAQCAtMTAzMSw4ICsxMDI5LDEyIEBACiAJCSAgICAgKiBub3cuICovCiAJCSAgICByZXR1cm4gRkFJTDsKICMgZW5kaWYKKwkJLyogSWYgaXQncyBzdGlsbCBjaGFuZ2VkIGZhaWwgc2lsZW50bHksIHRoZSBkaWFsb2cgYWxyZWFkeQorCQkgKiBtZW50aW9uZWQgd2h5IGl0IGZhaWxzLiAqLworCQlpZiAoYnVmSXNDaGFuZ2VkKGJ1ZikpCisJCSAgICByZXR1cm4gRkFJTDsKIAkgICAgfQotCSAgICBpZiAoYnVmSXNDaGFuZ2VkKGJ1ZikpCisJICAgIGVsc2UKICNlbmRpZgogCSAgICB7CiAJCUVNU0dOKF8oIkU4OTogTm8gd3JpdGUgc2luY2UgbGFzdCBjaGFuZ2UgZm9yIGJ1ZmZlciAlbGQgKGFkZCAhIHRvIG92ZXJyaWRlKSIpLApAQCAtMTUxOCw4ICsxNTIwLDcgQEAKIAlpZiAoYnVmID09IGN1cmJ1ZikKIAkgICAgYXBwbHlfYXV0b2NtZHMoRVZFTlRfQlVGV0lQRU9VVCwgTlVMTCwgTlVMTCwgRkFMU0UsIGN1cmJ1Zik7CiAjIGlmZGVmIEZFQVRfRVZBTAotCS8qIGF1dG9jbWRzIG1heSBhYm9ydCBzY3JpcHQgcHJvY2Vzc2luZyAqLwotCWlmIChhYm9ydGluZygpKQorCWlmIChhYm9ydGluZygpKQkJLyogYXV0b2NtZHMgbWF5IGFib3J0IHNjcmlwdCBwcm9jZXNzaW5nICovCiAJICAgIHJldHVybiBOVUxMOwogIyBlbmRpZgogI2VuZGlmCkBAIC0xNTcyLDggKzE1NzMsNyBAQAogCWlmIChidWYgIT0gY3VyYnVmKQkgLyogYXV0b2NvbW1hbmRzIGRlbGV0ZWQgdGhlIGJ1ZmZlciEgKi8KIAkgICAgcmV0dXJuIE5VTEw7CiAjaWYgZGVmaW5lZChGRUFUX0FVVE9DTUQpICYmIGRlZmluZWQoRkVBVF9FVkFMKQotCS8qIGF1dG9jbWRzIG1heSBhYm9ydCBzY3JpcHQgcHJvY2Vzc2luZyAqLwotCWlmIChhYm9ydGluZygpKQorCWlmIChhYm9ydGluZygpKQkJLyogYXV0b2NtZHMgbWF5IGFib3J0IHNjcmlwdCBwcm9jZXNzaW5nICovCiAJICAgIHJldHVybiBOVUxMOwogI2VuZGlmCiAJLyogYnVmLT5iX253aW5kb3dzID0gMDsgd2h5IHdhcyB0aGlzIGhlcmU/ICovCkBAIC0xNjQ5LDggKzE2NDksNyBAQAogCWlmIChmbGFncyAmIEJMTl9MSVNURUQpCiAJICAgIGFwcGx5X2F1dG9jbWRzKEVWRU5UX0JVRkFERCwgTlVMTCwgTlVMTCwgRkFMU0UsIGJ1Zik7CiAjIGlmZGVmIEZFQVRfRVZBTAotCS8qIGF1dG9jbWRzIG1heSBhYm9ydCBzY3JpcHQgcHJvY2Vzc2luZyAqLwotCWlmIChhYm9ydGluZygpKQorCWlmIChhYm9ydGluZygpKQkJLyogYXV0b2NtZHMgbWF5IGFib3J0IHNjcmlwdCBwcm9jZXNzaW5nICovCiAJICAgIHJldHVybiBOVUxMOwogIyBlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IDg4Yjk1NDkuLjI3NzgzNzkgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtNDQ4NSw3ICs0NDg1LDE2IEBACiAJcyA9IHNraXB3aGl0ZShtbF9nZXQobG51bSkpOwogCS8qIHNraXAgQyBjb21tZW50LXN0YXJ0ICovCiAJaWYgKHNbMF0gPT0gJy8nICYmIChzWzFdID09ICcqJyB8fCBzWzFdID09ICcvJykpCisJewogCSAgICBzID0gc2tpcHdoaXRlKHMgKyAyKTsKKwkgICAgaWYgKCpza2lwd2hpdGUocykgPT0gTlVMCisJCQkgICAgICAmJiBsbnVtICsgMSA8IChsaW5lbnJfVCl2aW12YXJzW1ZWX0ZPTERFTkRdLnZhbCkKKwkgICAgeworCQlzID0gc2tpcHdoaXRlKG1sX2dldChsbnVtICsgMSkpOworCQlpZiAoKnMgPT0gJyonKQorCQkgICAgcyA9IHNraXB3aGl0ZShzICsgMSk7CisJICAgIH0KKwl9CiAJdHh0ID0gXygiKy0lcyUzbGQgbGluZXM6ICIpOwogCXIgPSBhbGxvYygodW5zaWduZWQpKFNUUkxFTih0eHQpCiAJCSAgICArIFNUUkxFTih2aW12YXJzW1ZWX0ZPTEREQVNIRVNdLnZhbCkgICAgLyogZm9yICVzICovCmRpZmYgLS1naXQgYS9zcmMvZXhfZG9jbWQuYyBiL3NyYy9leF9kb2NtZC5jCmluZGV4IDMwYTVmM2EuLjdhZDU1MTMgMTAwNjQ0Ci0tLSBhL3NyYy9leF9kb2NtZC5jCisrKyBiL3NyYy9leF9kb2NtZC5jCkBAIC03ODkyLDcgKzc4OTIsNiBAQAogZXhfbm9ybWFsKGVhcCkKICAgICBleGFyZ19UCSplYXA7CiB7Ci0gICAgb3BhcmdfVAlvYTsKICAgICBpbnQJCXNhdmVfbXNnX3Njcm9sbCA9IG1zZ19zY3JvbGw7CiAgICAgaW50CQlzYXZlX3Jlc3RhcnRfZWRpdCA9IHJlc3RhcnRfZWRpdDsKICAgICBpbnQJCXNhdmVfbXNnX2RpZG91dCA9IG1zZ19kaWRvdXQ7CkBAIC03OTk2LDMwICs3OTk1LDE3IEBACiAJICovCiAJZG8KIAl7Ci0JICAgIGNsZWFyX29wYXJnKCZvYSk7Ci0JICAgIGZpbmlzaF9vcCA9IEZBTFNFOwogCSAgICBpZiAoZWFwLT5hZGRyX2NvdW50ICE9IDApCiAJICAgIHsKIAkJY3Vyd2luLT53X2N1cnNvci5sbnVtID0gZWFwLT5saW5lMSsrOwogCQljdXJ3aW4tPndfY3Vyc29yLmNvbCA9IDA7CiAJICAgIH0KIAotCSAgICAvKgotCSAgICAgKiBTdHVmZiB0aGUgYXJndW1lbnQgaW50byB0aGUgdHlwZWFoZWFkIGJ1ZmZlci4KLQkgICAgICogRXhlY3V0ZSBub3JtYWxfY21kKCkgdW50aWwgdGhlcmUgaXMgbm8gdHlwZWFoZWFkIGxlZnQuCi0JICAgICAqLwotCSAgICBpbnNfdHlwZWJ1ZigKKwkgICAgZXhlY19ub3JtYWxfY21kKAogI2lmZGVmIEZFQVRfTUJZVEUKIAkJICAgIGFyZyAhPSBOVUxMID8gYXJnIDoKICNlbmRpZgotCQkgICAgZWFwLT5hcmcsIGVhcC0+Zm9yY2VpdCA/IFJFTUFQX05PTkUgOiBSRU1BUF9ZRVMsIDAsCi0JCQkJCQkJCSBUUlVFLCBGQUxTRSk7Ci0JICAgIHdoaWxlICgoIXN0dWZmX2VtcHR5KCkgfHwgKCF0eXBlYnVmX3R5cGVkKCkgJiYgdHlwZWJ1Zi50Yl9sZW4gPiAwKSkKLQkJICAgICYmICFnb3RfaW50KQotCSAgICB7Ci0JCXVwZGF0ZV90b3BsaW5lX2N1cnNvcigpOwotCQlub3JtYWxfY21kKCZvYSwgRkFMU0UpOwkvKiBleGVjdXRlIGEgTm9ybWFsIG1vZGUgY21kICovCi0JICAgIH0KKwkJICAgIGVhcC0+YXJnLCBlYXAtPmZvcmNlaXQgPyBSRU1BUF9OT05FIDogUkVNQVBfWUVTLCBGQUxTRSk7CiAJfQogCXdoaWxlIChlYXAtPmFkZHJfY291bnQgPiAwICYmIGVhcC0+bGluZTEgPD0gZWFwLT5saW5lMiAmJiAhZ290X2ludCk7CiAgICAgfQpAQCAtODA4NSw2ICs4MDcxLDM1IEBACiB9CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRkVBVF9FWF9FWFRSQSkgfHwgZGVmaW5lZChGRUFUX01FTlUpIHx8IGRlZmluZWQoUFJPVE8pCisvKgorICogRXhlY3V0ZSBub3JtYWwgbW9kZSBjb21tYW5kICJjbWQiLgorICogInJlbWFwIiBjYW4gYmUgUkVNQVBfTk9ORSBvciBSRU1BUF9ZRVMuCisgKi8KKyAgICB2b2lkCitleGVjX25vcm1hbF9jbWQoY21kLCByZW1hcCwgc2lsZW50KQorICAgIGNoYXJfdQkqY21kOworICAgIGludAkJcmVtYXA7CisgICAgaW50CQlzaWxlbnQ7Cit7CisgICAgb3BhcmdfVAlvYTsKKworICAgIC8qCisgICAgICogU3R1ZmYgdGhlIGFyZ3VtZW50IGludG8gdGhlIHR5cGVhaGVhZCBidWZmZXIuCisgICAgICogRXhlY3V0ZSBub3JtYWxfY21kKCkgdW50aWwgdGhlcmUgaXMgbm8gdHlwZWFoZWFkIGxlZnQuCisgICAgICovCisgICAgY2xlYXJfb3BhcmcoJm9hKTsKKyAgICBmaW5pc2hfb3AgPSBGQUxTRTsKKyAgICBpbnNfdHlwZWJ1ZihjbWQsIHJlbWFwLCAwLCBUUlVFLCBzaWxlbnQpOworICAgIHdoaWxlICgoIXN0dWZmX2VtcHR5KCkgfHwgKCF0eXBlYnVmX3R5cGVkKCkgJiYgdHlwZWJ1Zi50Yl9sZW4gPiAwKSkKKwkJCQkJCQkJICAmJiAhZ290X2ludCkKKyAgICB7CisJdXBkYXRlX3RvcGxpbmVfY3Vyc29yKCk7CisJbm9ybWFsX2NtZCgmb2EsIEZBTFNFKTsJLyogZXhlY3V0ZSBhIE5vcm1hbCBtb2RlIGNtZCAqLworICAgIH0KK30KKyNlbmRpZgorCiAjaWZkZWYgRkVBVF9GSU5EX0lECiAgICAgc3RhdGljIHZvaWQKIGV4X2NoZWNrcGF0aChlYXApCkBAIC04NzQyLDYgKzg3NTcsMTcgQEAKICAgICB9CiAKICAgICAvKgorICAgICAqIElmIHRoZXJlIGlzIGFuIGVtcHR5LCB1bm5hbWVkIGJ1ZmZlciB3ZSB3aWxsIHdpcGUgaXQgb3V0IGxhdGVyLgorICAgICAqIFJlbWVtYmVyIHRoZSBidWZmZXIgbnVtYmVyLgorICAgICAqLworICAgIGlmIChwdXRfbGluZShmZCwgImlmIGV4cGFuZCgnJScpID09ICcnICYmICEmbW9kaWZpZWQgJiYgbGluZSgnJCcpIDw9IDEgJiYgZ2V0bGluZSgxKSA9PSAnJyIpID09IEZBSUwpCisJcmV0dXJuIEZBSUw7CisgICAgaWYgKHB1dF9saW5lKGZkLCAiICBsZXQgczp3aXBlYnVmID0gYnVmbnIoJyUnKSIpID09IEZBSUwpCisJcmV0dXJuIEZBSUw7CisgICAgaWYgKHB1dF9saW5lKGZkLCAiZW5kaWYiKSA9PSBGQUlMKQorCXJldHVybiBGQUlMOworCisgICAgLyoKICAgICAgKiBOb3cgc2F2ZSB0aGUgY3VycmVudCBmaWxlcywgY3VycmVudCBidWZmZXIgZmlyc3QuCiAgICAgICovCiAgICAgaWYgKHB1dF9saW5lKGZkLCAic2V0IHNob3J0bWVzcz1hb08iKSA9PSBGQUlMKQpAQCAtODg3Niw2ICs4OTAyLDE4IEBACiAJcmV0dXJuIEZBSUw7CiAKICAgICAvKgorICAgICAqIFdpcGUgb3V0IGFuIGVtcHR5IHVubmFtZWQgYnVmZmVyIHdlIHN0YXJ0ZWQgaW4uCisgICAgICovCisgICAgaWYgKHB1dF9saW5lKGZkLCAiaWYgZXhpc3RzKCdzOndpcGVidWYnKSIpID09IEZBSUwpCisJcmV0dXJuIEZBSUw7CisgICAgaWYgKHB1dF9saW5lKGZkLCAiICBleGUgJ2J3aXBlICcgLiBzOndpcGVidWYiKSA9PSBGQUlMKQorCXJldHVybiBGQUlMOworICAgIGlmIChwdXRfbGluZShmZCwgImVuZGlmIikgPT0gRkFJTCkKKwlyZXR1cm4gRkFJTDsKKyAgICBpZiAocHV0X2xpbmUoZmQsICJ1bmxldCEgczp3aXBlYnVmIikgPT0gRkFJTCkKKwlyZXR1cm4gRkFJTDsKKworICAgIC8qCiAgICAgICogUmVzdG9yZSB3aW5kb3cgc2l6ZXMgYWdhaW4gYWZ0ZXIganVtcGluZyBhcm91bmQgaW4gd2luZG93cywgYmVjYXVzZSB0aGUKICAgICAgKiBjdXJyZW50IHdpbmRvdyBoYXMgYSBtaW5pbXVtIHNpemUgd2hpbGUgb3RoZXJzIG1heSBub3QuCiAgICAgICovCmRpZmYgLS1naXQgYS9zcmMvZXhfZXZhbC5jIGIvc3JjL2V4X2V2YWwuYwppbmRleCA4YmUxMWUxLi5lMjY5OWJjIDEwMDY0NAotLS0gYS9zcmMvZXhfZXZhbC5jCisrKyBiL3NyYy9leF9ldmFsLmMKQEAgLTE4MjAsMTkgKzE4MjAsMjUgQEAKIH0KIAogLyoKLSAqIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBiZWZvcmUgYSBmYWlsZWQgY29tbWFuZCBpbnZva2VzIGEgc2VxdWVuY2Ugb2YKLSAqIGF1dG9jb21tYW5kcyBmb3IgY2xlYW51cC4gIChGYWlsdXJlIG1lYW5zIGhlcmUgdGhhdCBhIGNhbGwgdG8gZW1zZygpIGhhcwotICogYmVlbiBtYWRlLCBhbiBpbnRlcnJ1cHQgb2NjdXJyZWQsIG9yIHRoZXJlIGlzIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiBmcm9tIGEKLSAqIHByZXZpb3VzIGF1dG9jb21tYW5kIGV4ZWN1dGlvbiBvZiB0aGUgc2FtZSBjb21tYW5kLikgIFRoaXMgZnVuY3Rpb24gd29ya3MgYQotICogYml0IGxpa2UgZXhfZmluYWxseSgpIGV4Y2VwdCB0aGF0IHRoZXJlIHdhcyBub3QgYWN0dWFsbHkgYW4gZXh0cmEgdHJ5IGJsb2NrCi0gKiBhcm91bmQgdGhlIHBhcnQgdGhhdCBmYWlsZWQgYW5kIGFuIGVycm9yIG9yIGludGVycnVwdCBoYXMgbm90ICh5ZXQpIGJlZW4KLSAqIGNvbnZlcnRlZCB0byBhbiBleGNlcHRpb24uICBUaGlzIGZ1bmN0aW9uIHNhdmVzIHRoZQotICogZXJyb3IvaW50ZXJydXB0L2V4Y2VwdGlvbiBzdGF0ZSBhbmQgcHJlcGFyZXMgZm9yIHRoZSBjYWxsIHRvIGRvX2NtZGxpbmUoKQotICogdGhhdCBpcyBnb2luZyB0byBiZSBtYWRlIGZvciB0aGUgY2xlYW51cCBhdXRvY29tbWFuZCBleGVjdXRpb24uCisgKiBlbnRlcl9jbGVhbnVwKCkgYW5kIGxlYXZlX2NsZWFudXAoKQogICoKLSAqIFN0b3JlcyB0aGUgcGVuZGluZyBlcnJvci9pbnRlcnJ1cHQvZXhjZXB0aW9uIHN0YXRlIGluIHRoZSBjbGVhbnVwX1QKLSAqIHN0cnVjdHVyZSBwb2ludGVkIHRvIGJ5ICJjc3AiLCB3aGljaCBoYXMgdG8gYmUgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvCi0gKiBsZWF2ZV9jbGVhbnVwKCkgYWZ0ZXIgdGhlIGF1dG9jb21tYW5kIGV4ZWN1dGlvbiBoYXMgZmluaXNoZWQuCisgKiBGdW5jdGlvbnMgdG8gYmUgY2FsbGVkIGJlZm9yZS9hZnRlciBpbnZva2luZyBhIHNlcXVlbmNlIG9mIGF1dG9jb21tYW5kcyBmb3IKKyAqIGNsZWFudXAgZm9yIGEgZmFpbGVkIGNvbW1hbmQuICAoRmFpbHVyZSBtZWFucyBoZXJlIHRoYXQgYSBjYWxsIHRvIGVtc2coKQorICogaGFzIGJlZW4gbWFkZSwgYW4gaW50ZXJydXB0IG9jY3VycmVkLCBvciB0aGVyZSBpcyBhbiB1bmNhdWdodCBleGNlcHRpb24KKyAqIGZyb20gYSBwcmV2aW91cyBhdXRvY29tbWFuZCBleGVjdXRpb24gb2YgdGhlIHNhbWUgY29tbWFuZC4pCisgKgorICogQ2FsbCBlbnRlcl9jbGVhbnVwKCkgd2l0aCBhIHBvaW50ZXIgdG8gYSBjbGVhbnVwX1QgYW5kIHBhc3MgdGhlIHNhbWUKKyAqIHBvaW50ZXIgdG8gbGVhdmVfY2xlYW51cCgpLiAgVGhlIGNsZWFudXBfVCBzdHJ1Y3R1cmUgc3RvcmVzIHRoZSBwZW5kaW5nCisgKiBlcnJvci9pbnRlcnJ1cHQvZXhjZXB0aW9uIHN0YXRlLgorICovCisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHdvcmtzIGEgYml0IGxpa2UgZXhfZmluYWxseSgpIGV4Y2VwdCB0aGF0IHRoZXJlIHdhcyBub3QKKyAqIGFjdHVhbGx5IGFuIGV4dHJhIHRyeSBibG9jayBhcm91bmQgdGhlIHBhcnQgdGhhdCBmYWlsZWQgYW5kIGFuIGVycm9yIG9yCisgKiBpbnRlcnJ1cHQgaGFzIG5vdCAoeWV0KSBiZWVuIGNvbnZlcnRlZCB0byBhbiBleGNlcHRpb24uICBUaGlzIGZ1bmN0aW9uCisgKiBzYXZlcyB0aGUgZXJyb3IvaW50ZXJydXB0LyBleGNlcHRpb24gc3RhdGUgYW5kIHByZXBhcmVzIGZvciB0aGUgY2FsbCB0bworICogZG9fY21kbGluZSgpIHRoYXQgaXMgZ29pbmcgdG8gYmUgbWFkZSBmb3IgdGhlIGNsZWFudXAgYXV0b2NvbW1hbmQKKyAqIGV4ZWN1dGlvbi4KICAqLwogICAgIHZvaWQKIGVudGVyX2NsZWFudXAoY3NwKQpAQCAtMTg4MywxNiArMTg4OSwxOSBAQAogfQogCiAvKgotICogRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIGEgZmFpbGVkIGNvbW1hbmQgaW52b2tlZCBhIHNlcXVlbmNlIG9mCi0gKiBhdXRvY29tbWFuZHMgZm9yIGNsZWFudXAuICBJdCBpcyBhIGJpdCBsaWtlIGV4X2VuZHRyeSgpIGV4Y2VwdCB0aGF0IHRoZXJlCi0gKiB3YXMgbm90IGFjdHVhbGx5IGFuIGV4dHJhIHRyeSBibG9jayBhcm91bmQgdGhlIHBhcnQgdGhhdCBmYWlsZWQgYW5kIGFuCi0gKiBlcnJvciBvciBpbnRlcnJ1cHQgaGFkIG5vdCAoeWV0KSBiZWVuIGNvbnZlcnRlZCB0byBhbiBleGNlcHRpb24gd2hlbiB0aGUKLSAqIGNsZWFudXAgYXV0b2NvbW1hbmQgc2VxdWVuY2Ugd2FzIGludm9rZWQuICBUaGlzIGZ1bmN0aW9uIGhhcyB0byBiZSBjYWxsZWQKLSAqIHdpdGggdGhlIGFkZHJlc3Mgb2YgdGhlIGNsZWFudXBfVCBzdHJ1Y3R1cmUgZmlsbGVkIGJ5IGVudGVyX2NsZWFudXAoKSBhcyBhbgotICogYXJndW1lbnQ7IGl0IHJlc3RvcmVzIHRoZSBlcnJvci9pbnRlcnJ1cHQvZXhjZXB0aW9uIHN0YXRlIHNhdmVkIGJ5IHRoYXQKLSAqIGZ1bmN0aW9uIC0gZXhjZXB0IHRoZXJlIHdhcyBhbiBhYm9ydGluZyBlcnJvciwgYW4gaW50ZXJydXB0IG9yIGFuIHVuY2F1Z2h0Ci0gKiBleGNlcHRpb24gZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGUgY2xlYW51cCBhdXRvY29tbWFuZHMuICBJbiB0aGUgbGF0dGVyCi0gKiBjYXNlLCB0aGUgc2F2ZWQgZXJyb3IvaW50ZXJydXB0LyBleGNlcHRpb24gc3RhdGUgaXMgZGlzY2FyZGVkLgorICogU2VlIGNvbW1lbnQgYWJvdmUgZW50ZXJfY2xlYW51cCgpIGZvciBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgYSBiaXQgbGlrZSBleF9lbmR0cnkoKSBleGNlcHQgdGhhdCB0aGVyZSB3YXMgbm90IGFjdHVhbGx5CisgKiBhbiBleHRyYSB0cnkgYmxvY2sgYXJvdW5kIHRoZSBwYXJ0IHRoYXQgZmFpbGVkIGFuZCBhbiBlcnJvciBvciBpbnRlcnJ1cHQKKyAqIGhhZCBub3QgKHlldCkgYmVlbiBjb252ZXJ0ZWQgdG8gYW4gZXhjZXB0aW9uIHdoZW4gdGhlIGNsZWFudXAgYXV0b2NvbW1hbmQKKyAqIHNlcXVlbmNlIHdhcyBpbnZva2VkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaGFzIHRvIGJlIGNhbGxlZCB3aXRoIHRoZSBhZGRyZXNzIG9mIHRoZSBjbGVhbnVwX1Qgc3RydWN0dXJlCisgKiBmaWxsZWQgYnkgZW50ZXJfY2xlYW51cCgpIGFzIGFuIGFyZ3VtZW50OyBpdCByZXN0b3JlcyB0aGUgZXJyb3IvaW50ZXJydXB0LworICogZXhjZXB0aW9uIHN0YXRlIHNhdmVkIGJ5IHRoYXQgZnVuY3Rpb24gLSBleGNlcHQgdGhlcmUgd2FzIGFuIGFib3J0aW5nCisgKiBlcnJvciwgYW4gaW50ZXJydXB0IG9yIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiBkdXJpbmcgZXhlY3V0aW9uIG9mIHRoZQorICogY2xlYW51cCBhdXRvY29tbWFuZHMuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzYXZlZCBlcnJvci9pbnRlcnJ1cHQvCisgKiBleGNlcHRpb24gc3RhdGUgaXMgZGlzY2FyZGVkLgogICovCiAgICAgdm9pZAogbGVhdmVfY2xlYW51cChjc3ApCkBAIC0xOTU5LDcgKzE5NjgsNyBAQAogCiAJLyogUmVwb3J0IGlmIHJlcXVpcmVkIGJ5IHRoZSAndmVyYm9zZScgb3B0aW9uIG9yIHdoZW4gZGVidWdnaW5nLiAqLwogCXJlcG9ydF9yZXN1bWVfcGVuZGluZyhwZW5kaW5nLAotCQkocGVuZGluZyAmIENTVFBfVEhST1cpID8gKHZvaWQgKiljdXJyZW50X2V4Y2VwdGlvbiA6IE5VTEwpOworCQkgICAocGVuZGluZyAmIENTVFBfVEhST1cpID8gKHZvaWQgKiljdXJyZW50X2V4Y2VwdGlvbiA6IE5VTEwpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2ZpbGVpby5jIGIvc3JjL2ZpbGVpby5jCmluZGV4IDAyOWEzMzkuLmMzN2M5NmEgMTAwNjQ0Ci0tLSBhL3NyYy9maWxlaW8uYworKysgYi9zcmMvZmlsZWlvLmMKQEAgLTM5ODUsOCArMzk4NSw5IEBACiAgICAgICogam91cm5hbGxlZC4gIFN5bmNpbmcgdGhlIGZpbGUgc2xvd3MgZG93biB0aGUgc3lzdGVtLCBidXQgYXNzdXJlcyBpdCBoYXMKICAgICAgKiBiZWVuIHdyaXR0ZW4gdG8gZGlzayBhbmQgd2UgZG9uJ3QgbG9zZSBpdC4KICAgICAgKiBGb3IgYSBkZXZpY2UgZG8gdHJ5IHRoZSBmc3luYygpIGJ1dCBkb24ndCBjb21wbGFpbiBpZiBpdCBkb2VzIG5vdCB3b3JrCi0gICAgICogKGNvdWxkIGJlIGEgcGlwZSkuICovCi0gICAgaWYgKGZzeW5jKGZkKSAhPSAwICYmICFkZXZpY2UpCisgICAgICogKGNvdWxkIGJlIGEgcGlwZSkuCisgICAgICogSWYgdGhlICdmc3luYycgb3B0aW9uIGlzIEZBTFNFLCBkb24ndCBmc3luYygpLiAgVXNlZnVsIGZvciBsYXB0b3BzLiAqLworICAgIGlmIChwX2ZzICYmIGZzeW5jKGZkKSAhPSAwICYmICFkZXZpY2UpCiAgICAgewogCWVycm1zZyA9IChjaGFyX3UgKilfKCJFNjY3OiBGc3luYyBmYWlsZWQiKTsKIAllbmQgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2ZvbGQuYyBiL3NyYy9mb2xkLmMKaW5kZXggMWFlZTg3Yy4uYmIyNjhmYiAxMDA2NDQKLS0tIGEvc3JjL2ZvbGQuYworKysgYi9zcmMvZm9sZC5jCkBAIC05MDIsNiArOTAyLDggQEAKICAgICBpbnQJCWxldmVsOwogICAgIGludAkJbGFzdDsKIAorICAgIGNoZWNrdXBkYXRlKGN1cndpbik7CisKICAgICAvKiBSZXBlYXQgImNvdW50IiB0aW1lcy4gKi8KICAgICBmb3IgKG4gPSAwOyBuIDwgY291bnQ7ICsrbikKICAgICB7CkBAIC0yODgzLDcgKzI4ODUsNyBAQAogCXsKIAkgICAgLyogRm91bmQgYW4gZW50cnkgYmVsb3cgdG9wLiAqLwogCSAgICBmb2xkX2NoYW5nZWQgPSBUUlVFOwotCSAgICBpZiAoZnAtPmZkX3RvcCArIGZwLT5mZF9sZW4gPiBib3QpCisJICAgIGlmIChmcC0+ZmRfdG9wICsgZnAtPmZkX2xlbiAtIDEgPiBib3QpCiAJICAgIHsKIAkJLyogNTogTWFrZSBmb2xkIHRoYXQgaW5jbHVkZXMgYm90IHN0YXJ0IGJlbG93IGJvdC4gKi8KIAkJZm9sZE1hcmtBZGp1c3RSZWN1cnNlKCZmcC0+ZmRfbmVzdGVkLApkaWZmIC0tZ2l0IGEvc3JjL2dldGNoYXIuYyBiL3NyYy9nZXRjaGFyLmMKaW5kZXggZjA1MDU0MC4uZGQ1MmFjNCAxMDA2NDQKLS0tIGEvc3JjL2dldGNoYXIuYworKysgYi9zcmMvZ2V0Y2hhci5jCkBAIC0xNTE0LDYgKzE1MTQsMTcgQEAKIAkJY29udGludWU7CiAJICAgIH0KICNlbmRpZgorI2lmZGVmIEhBVkVfR1RLMgorCSAgICAvKiBHVEs6IDxGMTA+IG5vcm1hbGx5IHNlbGVjdHMgdGhlIG1lbnUsIGJ1dCBpdCdzIHBhc3NlZCB1bnRpbAorCSAgICAgKiBoZXJlIHRvIGFsbG93IG1hcHBpbmcgaXQuICBJbnRlcmNlcHQgYW5kIGludm9rZSB0aGUgR1RLCisJICAgICAqIGJlaGF2aW9yIGlmIGl0J3Mgbm90IG1hcHBlZC4gKi8KKwkgICAgaWYgKGMgPT0gS19GMTAgJiYgZ3VpLm1lbnViYXIgIT0gTlVMTCkKKwkgICAgeworCQlndGtfbWVudV9zaGVsbF9zZWxlY3RfZmlyc3QoR1RLX01FTlVfU0hFTEwoZ3VpLm1lbnViYXIpLCBGQUxTRSk7CisJCWNvbnRpbnVlOworCSAgICB9CisjZW5kaWYKKwogI2lmZGVmIEZFQVRfR1VJCiAJICAgIC8qIFRyYW5zbGF0ZSBLX0NTSSB0byBDU0kuICBUaGUgc3BlY2lhbCBrZXkgaXMgb25seSB1c2VkIHRvIGF2b2lkCiAJICAgICAqIGl0IGJlaW5nIHJlY29nbml6ZWQgYXMgdGhlIHN0YXJ0IG9mIGEgc3BlY2lhbCBrZXkuICovCkBAIC0xNTQwLDcgKzE1NTEsMTQgQEAKIAkJY2FzZSBLX0tESVZJREU6CQljID0gJy8nOyBicmVhazsKIAkJY2FzZSBLX0tNVUxUSVBMWToJYyA9ICcqJzsgYnJlYWs7CiAJCWNhc2UgS19LRU5URVI6CQljID0gQ0FSOyBicmVhazsKLQkJY2FzZSBLX0tQT0lOVDoJCWMgPSAnLic7IGJyZWFrOworCQljYXNlIEtfS1BPSU5UOgorI2lmZGVmIFdJTjMyCisJCQkJCS8qIENhbiBiZSBlaXRoZXIgJy4nIG9yIGEgJywnLCAqCisJCQkJCSAqIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBrZXlwYWQuICovCisJCQkJCWMgPSBNYXBWaXJ0dWFsS2V5KFZLX0RFQ0lNQUwsIDIpOyBicmVhazsKKyNlbHNlCisJCQkJCWMgPSAnLic7IGJyZWFrOworI2VuZGlmCiAJCWNhc2UgS19LMDoJCWMgPSAnMCc7IGJyZWFrOwogCQljYXNlIEtfSzE6CQljID0gJzEnOyBicmVhazsKIAkJY2FzZSBLX0syOgkJYyA9ICcyJzsgYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvZ3VpX2d0a194MTEuYyBiL3NyYy9ndWlfZ3RrX3gxMS5jCmluZGV4IDZkNmQ1NWQuLmI2N2I2ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfZ3RrX3gxMS5jCisrKyBiL3NyYy9ndWlfZ3RrX3gxMS5jCkBAIC0zMDgwLDYgKzMwODAsMTcgQEAKICAgICBndWkubWVudWJhciA9IGd0a19tZW51X2Jhcl9uZXcoKTsKICAgICBndGtfd2lkZ2V0X3NldF9uYW1lKGd1aS5tZW51YmFyLCAidmltLW1lbnViYXIiKTsKIAorIyBpZmRlZiBIQVZFX0dUSzIKKyAgICAvKiBBdm9pZCB0aGF0IEdUSyB0YWtlcyA8RjEwPiBhd2F5IGZyb20gdXMuICovCisgICAgeworCUd0a1NldHRpbmdzICpndGtfc2V0dGluZ3M7CisKKwlndGtfc2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0X2Zvcl9zY3JlZW4oZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKwlnX29iamVjdF9zZXQoZ3RrX3NldHRpbmdzLCAiZ3RrLW1lbnUtYmFyLWFjY2VsIiwgTlVMTCwgTlVMTCk7CisgICAgfQorIyBlbmRpZgorCisKICMgaWZkZWYgRkVBVF9HVUlfR05PTUUKICAgICBpZiAodXNpbmdfZ25vbWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvc3JjL2d1aV9tYWMuYyBiL3NyYy9ndWlfbWFjLmMKaW5kZXggZjYwNTY3ZS4uN2FkOTZmYyAxMDA2NDQKLS0tIGEvc3JjL2d1aV9tYWMuYworKysgYi9zcmMvZ3VpX21hYy5jCkBAIC0zNzkyLDYgKzM3OTIsMjcgQEAKIAkodm9pZClTd2FwUURUZXh0RmxhZ3MocWRfZmxhZ3MpOwogICAgIH0KIAorICAgIC8qCisgICAgICogV2hlbiBhbnRpYWxpYXNpbmcgd2UncmUgdXNpbmcgc3JjT3IgbW9kZSwgd2UgaGF2ZSB0byBjbGVhciB0aGUgYmxvY2sKKyAgICAgKiBiZWZvcmUgZHJhd2luZyB0aGUgdGV4dC4KKyAgICAgKiBBbHNvIG5lZWRlZCB3aGVuICdsaW5lc3BhY2UnIGlzIG5vbi16ZXJvIHRvIHJlbW92ZSB0aGUgY3Vyc29yIGFuZAorICAgICAqIHVuZGVybGluaW5nLgorICAgICAqIEJ1dCBub3Qgd2hlbiBkcmF3aW5nIHRyYW5zcGFyZW50bHkuCisgICAgICogVGhlIGZvbGxvd2luZyBpcyBsaWtlIGNhbGxpbmcgZ3VpX21jaF9jbGVhcl9ibG9jayhyb3csIGNvbCwgcm93LCBjb2wgKworICAgICAqIGxlbiAtIDEpLCBidXQgd2l0aG91dCBzZXR0aW5nIHRoZSBiZyBjb2xvciB0byBndWkuYmFja19waXhlbC4KKyAgICAgKi8KKyAgICBpZiAoKChzeXNfdmVyc2lvbiA+PSAweDEwMjAgJiYgcF9hbnRpYWxpYXMpIHx8IHBfbGluZXNwYWNlICE9IDApCisJICAgICYmICEoZmxhZ3MgJiBEUkFXX1RSQU5TUCkpCisgICAgeworCVJlY3QgcmM7CisKKwlyYy5sZWZ0ID0gRklMTF9YKGNvbCk7CisJcmMudG9wID0gRklMTF9ZKHJvdyk7CisJcmMucmlnaHQgPSBGSUxMX1goY29sICsgbGVuKSArIChjb2wgKyBsZW4gPT0gQ29sdW1ucyk7CisJcmMuYm90dG9tID0gRklMTF9ZKHJvdyArIDEpOworCUVyYXNlUmVjdCgmcmMpOworICAgIH0KKwogICAgIGlmIChzeXNfdmVyc2lvbiA+PSAweDEwMjAgJiYgcF9hbnRpYWxpYXMpCiAgICAgewogCVN0eWxlUGFyYW1ldGVyIGZhY2U7CkBAIC0zODA2LDIyICszODI3LDYgQEAKIAkvKiBRdWFydHogYW50aWFsaWFzaW5nIHdvcmtzIG9ubHkgaW4gc3JjT3IgdHJhbnNmZXIgbW9kZS4gKi8KIAlUZXh0TW9kZShzcmNPcik7CiAKLQlpZiAoIShmbGFncyAmIERSQVdfVFJBTlNQKSkKLQl7Ci0JICAgIC8qCi0JICAgICAqIFNpbmNlIHdlJ3JlIHVzaW5nIHNyY09yIG1vZGUsIHdlIGhhdmUgdG8gY2xlYXIgdGhlIGJsb2NrCi0JICAgICAqIGJlZm9yZSBkcmF3aW5nIHRoZSB0ZXh0LiAgVGhlIGZvbGxvd2luZyBpcyBsaWtlIGNhbGxpbmcKLQkgICAgICogZ3VpX21jaF9jbGVhcl9ibG9jayhyb3csIGNvbCwgcm93LCBjb2wgKyBsZW4gLSAxKSwKLQkgICAgICogYnV0IHdpdGhvdXQgc2V0dGluZyB0aGUgYmcgY29sb3IgdG8gZ3VpLmJhY2tfcGl4ZWwuCi0JICAgICAqLwotCSAgICBSZWN0IHJjOwotCSAgICByYy5sZWZ0ID0gRklMTF9YKGNvbCk7Ci0JICAgIHJjLnRvcCA9IEZJTExfWShyb3cpOwotCSAgICByYy5yaWdodCA9IEZJTExfWChjb2wgKyBsZW4pICsgKGNvbCArIGxlbiA9PSBDb2x1bW5zKTsKLQkgICAgcmMuYm90dG9tID0gRklMTF9ZKHJvdyArIDEpOwotCSAgICBFcmFzZVJlY3QoJnJjKTsKLQl9Ci0KIAlNb3ZlVG8oVEVYVF9YKGNvbCksIFRFWFRfWShyb3cpKTsKIAlEcmF3VGV4dCgoY2hhciopcywgMCwgbGVuKTsKICAgICB9CmRpZmYgLS1naXQgYS9zcmMvZ3VpX3czMi5jIGIvc3JjL2d1aV93MzIuYwppbmRleCAwYWZhMTJkLi40NjFkY2VmIDEwMDY0NAotLS0gYS9zcmMvZ3VpX3czMi5jCisrKyBiL3NyYy9ndWlfdzMyLmMKQEAgLTc4OSw4ICs3ODksNyBAQAogCSAgICBicmVhazsKIAl9CiAjaWZkZWYgTVNXSU5fRklORF9SRVBMQUNFCi0JZWxzZQotCWlmICh1TXNnID09IHNfZmluZHJlcF9tc2cgJiYgc19maW5kcmVwX21zZyAhPSAwKQorCWVsc2UgaWYgKHVNc2cgPT0gc19maW5kcmVwX21zZyAmJiBzX2ZpbmRyZXBfbXNnICE9IDApCiAJewogCSAgICBfT25GaW5kUmVwbCgpOwogCX0KQEAgLTE0MTEsMjAgKzE0MTAsNiBAQAogI2luY2x1ZGUgPGltbS5oPgogCiAvKgotICogZGlzcGxheSBjb21wb3NpdGlvbiBzdHJpbmcoa29yZWFuKQotICovCi0gICAgc3RhdGljIHZvaWQKLURpc3BsYXlDb21wU3RyaW5nT3BhcXVlKGNoYXJfdSAqcywgaW50IGxlbikKLXsKLSAgICBpbnQgT2xkQmtNb2RlID0gR2V0QmtNb2RlKHNfaGRjKTsKLQotICAgIFNldEJrTW9kZShzX2hkYywgT1BBUVVFKTsKLSAgICBndWlfb3V0c3RyX25vd3JhcChzLCBsZW4sIEdVSV9NT05fVFJTX0NVUlNPUiwKLQkJCQkJICAgICAoZ3VpY29sb3JfVCkwLCAoZ3VpY29sb3JfVCkwLCAwKTsKLSAgICBTZXRCa01vZGUoc19oZGMsIE9sZEJrTW9kZSk7Ci19Ci0KLS8qCiAgKiBoYW5kbGUgV01fSU1FX05PVElGWSBtZXNzYWdlCiAgKi8KICAgICBzdGF0aWMgTFJFU1VMVApkaWZmIC0tZ2l0IGEvc3JjL2d1aV93NDguYyBiL3NyYy9ndWlfdzQ4LmMKaW5kZXggNGYwYmFiNy4uNTE2ZDA3MCAxMDA2NDQKLS0tIGEvc3JjL2d1aV93NDguYworKysgYi9zcmMvZ3VpX3c0OC5jCkBAIC00ODgsMjcgKzQ4OCw0OSBAQAogICAgIFdDSEFSCXdzdHJpbmdbMl07CiAgICAgY2hhcl91CSp3cyA9IE5VTEw7OwogCi0gICAgLyogImNoIiBpcyBhIFVURi0xNiBjaGFyYWN0ZXIuICBDb252ZXJ0IGl0IHRvIGEgc3RyaW5nIG9mIGJ5dGVzLiAgV2hlbgotICAgICAqICJlbmNfY29kZXBhZ2UiIGlzIG5vbi16ZXJvIHVzZSB0aGUgc3RhbmRhcmQgV2luMzIgZnVuY3Rpb24sIG90aGVyd2lzZQotICAgICAqIHVzZSBvdXIgb3duIGNvbnZlcnNpb24gZnVuY3Rpb24gKGUuZy4sIGZvciBVVEYtOCkuICovCi0gICAgd3N0cmluZ1swXSA9IGNoOwotICAgIGlmIChlbmNfY29kZXBhZ2UgPiAwKQotCWxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoZW5jX2NvZGVwYWdlLCAwLCB3c3RyaW5nLCAxLCBzdHJpbmcsIHNsZW4sCi0JCQkJCQkJCSAgICAgMCwgTlVMTCk7Ci0gICAgZWxzZQorICAgIGlmIChvc192ZXJzaW9uLmR3UGxhdGZvcm1JZCAhPSBWRVJfUExBVEZPUk1fV0lOMzJfTlQpCiAgICAgewotCWxlbiA9IDE7Ci0Jd3MgPSB1Y3MyX3RvX2VuYyh3c3RyaW5nLCAmbGVuKTsKLQlpZiAod3MgPT0gTlVMTCkKLQkgICAgbGVuID0gMDsKKwkvKiBPbiBXaW5kb3dzIDk1Lzk4IHdlIGFwcGFyZW50bHkgZ2V0IHRoZSBjaGFyYWN0ZXIgaW4gdGhlIGFjdGl2ZQorCSAqIGNvZGVwYWdlLCBub3QgaW4gVUNTLTIuICBJZiBjb252ZXJzaW9uIGlzIG5lZWRlZCBjb252ZXJ0IGl0IHRvCisJICogVUNTLTIgZmlyc3QuICovCisJaWYgKChpbnQpR2V0QUNQKCkgPT0gZW5jX2NvZGVwYWdlKQorCSAgICBsZW4gPSAwOwkgICAgLyogbm8gY29udmVyc2lvbiByZXF1aXJlZCAqLwogCWVsc2UKIAl7Ci0JICAgIGlmIChsZW4gPiBzbGVuKQkvKiBqdXN0IGluIGNhc2UgKi8KLQkJbGVuID0gc2xlbjsKLQkgICAgbWNoX21lbW1vdmUoc3RyaW5nLCB3cywgbGVuKTsKLQkgICAgdmltX2ZyZWUod3MpOworCSAgICBzdHJpbmdbMF0gPSBjaDsKKwkgICAgbGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihHZXRBQ1AoKSwgMCwgc3RyaW5nLCAxLCB3c3RyaW5nLCAyKTsKIAl9CiAgICAgfQorICAgIGVsc2UKKyAgICB7CisJd3N0cmluZ1swXSA9IGNoOworCWxlbiA9IDE7CisgICAgfQorCisgICAgaWYgKGxlbiA+IDApCisgICAgeworCS8qICJjaCIgaXMgYSBVVEYtMTYgY2hhcmFjdGVyLiAgQ29udmVydCBpdCB0byBhIHN0cmluZyBvZiBieXRlcy4gIFdoZW4KKwkgKiAiZW5jX2NvZGVwYWdlIiBpcyBub24temVybyB1c2UgdGhlIHN0YW5kYXJkIFdpbjMyIGZ1bmN0aW9uLAorCSAqIG90aGVyd2lzZSB1c2Ugb3VyIG93biBjb252ZXJzaW9uIGZ1bmN0aW9uIChlLmcuLCBmb3IgVVRGLTgpLiAqLworCWlmIChlbmNfY29kZXBhZ2UgPiAwKQorCSAgICBsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGVuY19jb2RlcGFnZSwgMCwgd3N0cmluZywgbGVuLAorCQkJCQkJICAgICAgIHN0cmluZywgc2xlbiwgMCwgTlVMTCk7CisJZWxzZQorCXsKKwkgICAgbGVuID0gMTsKKwkgICAgd3MgPSB1Y3MyX3RvX2VuYyh3c3RyaW5nLCAmbGVuKTsKKwkgICAgaWYgKHdzID09IE5VTEwpCisJCWxlbiA9IDA7CisJICAgIGVsc2UKKwkgICAgeworCQlpZiAobGVuID4gc2xlbikJLyoganVzdCBpbiBjYXNlICovCisJCSAgICBsZW4gPSBzbGVuOworCQltY2hfbWVtbW92ZShzdHJpbmcsIHdzLCBsZW4pOworCQl2aW1fZnJlZSh3cyk7CisJICAgIH0KKwl9CisgICAgfQorCiAgICAgaWYgKGxlbiA9PSAwKQogI2VuZGlmCiAgICAgewpAQCAtNjgyLDkgKzcwNCwxMCBAQAogCSAqIEhvbGRpbmcgZG93biB0aGUgbGVmdCBhbmQgcmlnaHQgYnV0dG9ucyBzaW11bGF0ZXMgcHVzaGluZyB0aGUgbWlkZGxlCiAJICogYnV0dG9uLgogCSAqLwotCWlmIChyZXBlYXRlZF9jbGljayAmJgotCQkoKGJ1dHRvbiA9PSBNT1VTRV9MRUZUICYmIHNfYnV0dG9uX3BlbmRpbmcgPT0gTU9VU0VfUklHSFQpIHx8Ci0JCSAoYnV0dG9uID09IE1PVVNFX1JJR0hUICYmIHNfYnV0dG9uX3BlbmRpbmcgPT0gTU9VU0VfTEVGVCkpKQorCWlmIChyZXBlYXRlZF9jbGljaworCQkmJiAoKGJ1dHRvbiA9PSBNT1VTRV9MRUZUICYmIHNfYnV0dG9uX3BlbmRpbmcgPT0gTU9VU0VfUklHSFQpCisJCSAgICB8fCAoYnV0dG9uID09IE1PVVNFX1JJR0hUCisJCQkJCSAgJiYgc19idXR0b25fcGVuZGluZyA9PSBNT1VTRV9MRUZUKSkpCiAJewogCSAgICAvKgogCSAgICAgKiBIbW0sIGd1aS5jIHdpbGwgaWdub3JlIG1vcmUgdGhhbiBvbmUgYnV0dG9uIGRvd24gYXQgYSB0aW1lLCBzbwpAQCAtNzQ1LDcgKzc2OCw3IEBACiAgICAgewogCS8qIERlbGF5ZWQgYWN0aW9uIGZvciBtb3VzZSBkb3duIGV2ZW50ICovCiAJX09uTW91c2VFdmVudChzX2J1dHRvbl9wZW5kaW5nLCBzX3hfcGVuZGluZywKLQkJCXNfeV9wZW5kaW5nLCBGQUxTRSwgc19rRmxhZ3NfcGVuZGluZyk7CisJCQkJCXNfeV9wZW5kaW5nLCBGQUxTRSwgc19rRmxhZ3NfcGVuZGluZyk7CiAJc19idXR0b25fcGVuZGluZyA9IC0xOwogICAgIH0KICAgICBpZiAoc191TXNnID09IFdNX01PVVNFTU9WRSkKQEAgLTE1MzIsNiArMTU1NSw5IEBACiAgICAgaW50CQlpOwogICAgIGludAkJbW9kaWZpZXJzID0gMDsKICAgICBpbnQJCWtleTsKKyNpZmRlZiBGRUFUX01FTlUKKyAgICBzdGF0aWMgY2hhcl91IGsxMFtdID0ge0tfU1BFQ0lBTCwgJ2snLCAnOycsIDB9OworI2VuZGlmCiAKICAgICBHZXRNZXNzYWdlKCZtc2csIE5VTEwsIDAsIDApOwogCkBAIC0xNjE5LDExICsxNjQ1LDExIEBACiAJCSAgICAmJiAodmsgIT0gVktfU1BBQ0UgfHwgIShHZXRLZXlTdGF0ZShWS19NRU5VKSAmIDB4ODAwMCkpKQogCSAgICB7CiAjaWZkZWYgRkVBVF9NRU5VCi0JCS8qIENoZWNrIGZvciA8RjEwPjogV2luZG93cyBzZWxlY3RzIHRoZSBtZW51LiAgSWdub3JlIGl0IHdoZW4KLQkJICogJ3dpbmFsdGtleXMnIGlzICJ5ZXMiIG9yICJtZW51IiAqLworCQkvKiBDaGVjayBmb3IgPEYxMD46IFdpbmRvd3Mgc2VsZWN0cyB0aGUgbWVudS4gIFdoZW4gPEYxMD4gaXMKKwkJICogbWFwcGVkIHdlIHdhbnQgdG8gdXNlIHRoZSBtYXBwaW5nIGluc3RlYWQuICovCiAJCWlmICh2ayA9PSBWS19GMTAKIAkJCSYmIGd1aS5tZW51X2lzX2FjdGl2ZQotCQkJJiYgKCpwX3dhayA9PSAneScgfHwgKnBfd2FrID09ICdtJykpCisJCQkmJiBjaGVja19tYXAoazEwLCBTdGF0ZSwgRkFMU0UpID09IE5VTEwpCiAJCSAgICBicmVhazsKICNlbmRpZgogCQlpZiAoR2V0S2V5U3RhdGUoVktfU0hJRlQpICYgMHg4MDAwKQpAQCAtMTczNCw5ICsxNzYwLDEwIEBACiAjZW5kaWYKIAogI2lmZGVmIEZFQVRfTUVOVQotICAgIC8qIENoZWNrIGZvciA8RjEwPjogV2luZG93cyBzZWxlY3RzIHRoZSBtZW51LiAgRG9uJ3QgbGV0IFdpbmRvd3MgaGFuZGxlIGl0Ci0gICAgICogd2hlbiAnd2luYWx0a2V5cycgaXMgIm5vIiAqLwotICAgIGlmICh2ayAhPSBWS19GMTAgfHwgKnBfd2FrICE9ICduJykKKyAgICAvKiBDaGVjayBmb3IgPEYxMD46IERlZmF1bHQgZWZmZWN0IGlzIHRvIHNlbGVjdCB0aGUgbWVudS4gIFdoZW4gPEYxMD4gaXMKKyAgICAgKiBtYXBwZWQgd2UgbmVlZCB0byBzdG9wIGl0IGhlcmUgdG8gYXZvaWQgc3RyYW5nZSBlZmZlY3RzIChlLmcuLCBmb3IgdGhlCisgICAgICoga2V5LXVwIGV2ZW50KSAqLworICAgIGlmICh2ayAhPSBWS19GMTAgfHwgY2hlY2tfbWFwKGsxMCwgU3RhdGUsIEZBTFNFKSA9PSBOVUxMKQogI2VuZGlmCiAJRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOwogfQpAQCAtMTgyOSw2ICsxODU2LDExIEBACiAJCXNfd2FpdF90aW1lciA9IDA7CiAJICAgIH0KIAkgICAgYWxsb3dfc2Nyb2xsYmFyID0gRkFMU0U7CisKKwkgICAgLyogQ2xlYXIgcGVuZGluZyBtb3VzZSBidXR0b24sIHRoZSByZWxlYXNlIGV2ZW50IG1heSBoYXZlIGJlZW4KKwkgICAgICogdGFrZW4gYnkgdGhlIGRpYWxvZyB3aW5kb3cuICovCisJICAgIHNfYnV0dG9uX3BlbmRpbmcgPSAtMTsKKwogCSAgICByZXR1cm4gT0s7CiAJfQogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9pZl9jc2NvcGUuYyBiL3NyYy9pZl9jc2NvcGUuYwppbmRleCAwMTJlODZjLi5mMjE4ZWE0IDEwMDY0NAotLS0gYS9zcmMvaWZfY3Njb3BlLmMKKysrIGIvc3JjL2lmX2NzY29wZS5jCkBAIC0xMDkyLDcgKzEwOTIsNyBAQAogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogICAgIH0KLSAgICBpZiAocWZwb3MgIT0gTlVMTCAmJiAqcWZwb3MgIT0gJzAnICYmIHRvdG1hdGNoZXMgPiAxKQorICAgIGlmIChxZnBvcyAhPSBOVUxMICYmICpxZnBvcyAhPSAnMCcgJiYgdG90bWF0Y2hlcyA+IDApCiAgICAgewogCS8qIGZpbGwgZXJyb3IgbGlzdCAqLwogCUZJTEUgKmY7CmRpZmYgLS1naXQgYS9zcmMvaWZfcHl0aG9uLmMgYi9zcmMvaWZfcHl0aG9uLmMKaW5kZXggOGY0ZmRmZC4uNTExMzc4YSAxMDA2NDQKLS0tIGEvc3JjL2lmX3B5dGhvbi5jCisrKyBiL3NyYy9pZl9weXRob24uYwpAQCAtMzgxLDEzICszODEsMTQgQEAKICNlbmRpZiAvKiBQeXRob24gMS40ICovCiAKICNpZm5kZWYgUFlfQ0FOX1JFQ1VSU0UKLXN0YXRpYyBQeVRocmVhZFN0YXRlKiBzYXZlZF9weXRob25fdGhyZWFkID0gTlVMTDsKK3N0YXRpYyBQeVRocmVhZFN0YXRlICpzYXZlZF9weXRob25fdGhyZWFkID0gTlVMTDsKIAogLyoKICAqIFN1c3BlbmQgYSB0aHJlYWQgb2YgdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgb3RoZXIgdGhyZWFkcyBhcmUgYWxsb3dlZCB0bwogICogcnVuLgogICovCi1zdGF0aWMgdm9pZCBQeXRob25fU2F2ZVRocmVhZCh2b2lkKQorICAgIHN0YXRpYyB2b2lkCitQeXRob25fU2F2ZVRocmVhZCh2b2lkKQogewogICAgIHNhdmVkX3B5dGhvbl90aHJlYWQgPSBQeUV2YWxfU2F2ZVRocmVhZCgpOwogfQpAQCAtMzk2LDcgKzM5Nyw4IEBACiAgKiBSZXN0b3JlIGEgdGhyZWFkIG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIHdhaXRzIGZvciBvdGhlciB0aHJlYWRzIHRvCiAgKiBibG9jay4KICAqLwotc3RhdGljIHZvaWQgUHl0aG9uX1Jlc3RvcmVUaHJlYWQodm9pZCkKKyAgICBzdGF0aWMgdm9pZAorUHl0aG9uX1Jlc3RvcmVUaHJlYWQodm9pZCkKIHsKICAgICBQeUV2YWxfUmVzdG9yZVRocmVhZChzYXZlZF9weXRob25fdGhyZWFkKTsKICAgICBzYXZlZF9weXRob25fdGhyZWFkID0gTlVMTDsKQEAgLTQ1Niw4ICs0NTgsMTAgQEAKIAlpZiAoUHl0aG9uTW9kX0luaXQoKSkKIAkgICAgZ290byBmYWlsOwogCi0jaWZuZGVmIFBZX0NBTl9SRUNVUlNFCi0JLyogdGhlIGZpcnN0IHB5dGhvbiB0aHJlYWQgaXMgdmltJ3MgKi8KKwkvKiB0aGUgZmlyc3QgcHl0aG9uIHRocmVhZCBpcyB2aW0ncywgcmVsZWFzZSB0aGUgbG9jayAqLworI2lmZGVmIFBZX0NBTl9SRUNVUlNFCisJUHlFdmFsX1NhdmVUaHJlYWQoKTsKKyNlbHNlCiAJUHl0aG9uX1NhdmVUaHJlYWQoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMva2V5bWFwLmggYi9zcmMva2V5bWFwLmgKaW5kZXggMjRiMGQ2MS4uY2I3OWFkMSAxMDA2NDQKLS0tIGEvc3JjL2tleW1hcC5oCisrKyBiL3NyYy9rZXltYXAuaApAQCAtMzgzLDcgKzM4Myw3IEBACiAjZGVmaW5lIEtfS0RJVklERQlURVJNQ0FQMktFWSgnSycsICc4JykJLyoga2V5cGFkIC8gKi8KICNkZWZpbmUgS19LTVVMVElQTFkJVEVSTUNBUDJLRVkoJ0snLCAnOScpCS8qIGtleXBhZCAqICovCiAjZGVmaW5lIEtfS0VOVEVSCVRFUk1DQVAyS0VZKCdLJywgJ0EnKQkvKiBrZXlwYWQgRW50ZXIgKi8KLSNkZWZpbmUgS19LUE9JTlQJVEVSTUNBUDJLRVkoJ0snLCAnQicpCS8qIGtleXBhZCAuICovCisjZGVmaW5lIEtfS1BPSU5UCVRFUk1DQVAyS0VZKCdLJywgJ0InKQkvKiBrZXlwYWQgLiBvciAsKi8KIAogI2RlZmluZSBLX0swCQlURVJNQ0FQMktFWSgnSycsICdDJykJLyoga2V5cGFkIDAgKi8KICNkZWZpbmUgS19LMQkJVEVSTUNBUDJLRVkoJ0snLCAnRCcpCS8qIGtleXBhZCAxICovCmRpZmYgLS1naXQgYS9zcmMvbWFpbi5jIGIvc3JjL21haW4uYwppbmRleCAzOTc2YTQ0Li41NzkxYmI2IDEwMDY0NAotLS0gYS9zcmMvbWFpbi5jCisrKyBiL3NyYy9tYWluLmMKQEAgLTIyMjgsNiArMjIyOCwxMiBAQAogZ2V0b3V0X3ByZXNlcnZlX21vZGlmaWVkKGV4aXR2YWwpCiAgICAgaW50CQlleGl0dmFsOwogeworI2lmIGRlZmluZWQoVU5JWCkKKyAgICAvKiBJZ25vcmUgU0lHSFVQLCBiZWNhdXNlIGEgZHJvcHBlZCBjb25uZWN0aW9uIG1heSBtYWtlIFZpbSBleGl0IGFuZCB0aGVuCisgICAgICogZ2V0IGEgU0lHSFVQIHdoaWxlIGV4aXRpbmcsIHdoaWNoIGNhdXNlcyB2YXJpb3VzIHJlZW50cmVudCBwcm9ibGVtcy4gKi8KKyAgICBzaWduYWwoU0lHSFVQLCBTSUdfSUdOKTsKKyNlbmRpZgorCiAgICAgbWxfY2xvc2Vfbm90bW9kKCk7CQkgICAgLyogY2xvc2UgYWxsIG5vdC1tb2RpZmllZCBidWZmZXJzICovCiAgICAgbWxfc3luY19hbGwoRkFMU0UsIEZBTFNFKTsJICAgIC8qIHByZXNlcnZlIGFsbCBzd2FwIGZpbGVzICovCiAgICAgbWxfY2xvc2VfYWxsKEZBTFNFKTsJICAgIC8qIGNsb3NlIGFsbCBtZW1maWxlcywgd2l0aG91dCBkZWxldGluZyAqLwpkaWZmIC0tZ2l0IGEvc3JjL21lbnUuYyBiL3NyYy9tZW51LmMKaW5kZXggMjU4Yjg0ZC4uYTY0NzQ1YiAxMDA2NDQKLS0tIGEvc3JjL21lbnUuYworKysgYi9zcmMvbWVudS5jCkBAIC0yMTA3LDggKzIxMDcsOSBAQAogCXJldHVybjsKICAgICB9CiAKLSAgICAvKiBGb3VuZCB0aGUgbWVudSwgc28gZXhlY3V0ZS4gKi8KLSAgICBpZiAocmVzdGFydF9lZGl0KQorICAgIC8qIEZvdW5kIHRoZSBtZW51LCBzbyBleGVjdXRlLgorICAgICAqIFVzZSB0aGUgSW5zZXJ0IG1vZGUgZW50cnkgd2hlbiByZXR1cm5pbmcgdG8gSW5zZXJ0IG1vZGUuICovCisgICAgaWYgKHJlc3RhcnRfZWRpdCAmJiAhY3VycmVudF9TSUQpCiAgICAgewogCW1vZGUgPSAoY2hhcl91ICopIkluc2VydCI7CiAJaWR4ID0gTUVOVV9JTkRFWF9JTlNFUlQ7CkBAIC0yMTIzLDggKzIxMjQsNyBAQAogCS8qIEdFRERFUzogVGhpcyBpcyBub3QgcGVyZmVjdCAtIGJ1dCBpdCBpcyBhCiAJICogcXVpY2sgd2F5IG9mIGRldGVjdGluZyB3aGV0aGVyIHdlIGFyZSBkb2luZyB0aGlzIGZyb20gYQogCSAqIHNlbGVjdGlvbiAtIHNlZSBpZiB0aGUgcmFuZ2UgbWF0Y2hlcyB1cCB3aXRoIHRoZSB2aXN1YWwKLQkgKiBzZWxlY3Qgc3RhcnQgYW5kIGVuZC4KLQkgKi8KKwkgKiBzZWxlY3Qgc3RhcnQgYW5kIGVuZC4gICovCiAJaWYgKChjdXJidWYtPmJfdmlzdWFsX3N0YXJ0LmxudW0gPT0gZWFwLT5saW5lMSkKIAkJJiYgKGN1cmJ1Zi0+Yl92aXN1YWxfZW5kLmxudW0pID09IGVhcC0+bGluZTIpCiAJewpAQCAtMjE0NCw4ICsyMTQ0LDcgQEAKIAkgICAgdHBvcy5jb2wgPSBNQVhDT0w7CiAJfQogCi0JLyogQWN0aXZhdGUgdmlzdWFsIG1vZGUKLQkgKi8KKwkvKiBBY3RpdmF0ZSB2aXN1YWwgbW9kZSAqLwogCVZJc3VhbF9hY3RpdmUgPSBUUlVFOwogCVZJc3VhbF9yZXNlbGVjdCA9IFRSVUU7CiAJY2hlY2tfY3Vyc29yKCk7CkBAIC0yMTU1LDggKzIxNTQsNyBAQAogCWNoZWNrX2N1cnNvcigpOwogCiAJLyogQWRqdXN0IHRoZSBjdXJzb3IgdG8gbWFrZSBzdXJlIGl0IGlzIGluIHRoZSBjb3JyZWN0IHBvcwotCSAqIGZvciBleGNsdXNpdmUgbW9kZQotCSAqLworCSAqIGZvciBleGNsdXNpdmUgbW9kZSAqLwogCWlmICgqcF9zZWwgPT0gJ2UnICYmIGdjaGFyX2N1cnNvcigpICE9IE5VTCkKIAkgICAgKytjdXJ3aW4tPndfY3Vyc29yLmNvbDsKICAgICB9CkBAIC0yMTY4LDcgKzIxNjYsMTMgQEAKIAogICAgIGlmIChpZHggIT0gTUVOVV9JTkRFWF9JTlZBTElEICYmIG1lbnUtPnN0cmluZ3NbaWR4XSAhPSBOVUxMKQogICAgIHsKLQlpbnNfdHlwZWJ1ZihtZW51LT5zdHJpbmdzW2lkeF0sIG1lbnUtPm5vcmVtYXBbaWR4XSwgMCwKKwkvKiBXaGVuIGV4ZWN1dGluZyBhIHNjcmlwdCBvciBmdW5jdGlvbiBleGVjdXRlIHRoZSBjb21tYW5kcyByaWdodCBub3cuCisJICogT3RoZXJ3aXNlIHB1dCB0aGVtIGluIHRoZSB0eXBlYWhlYWQgYnVmZmVyLiAqLworCWlmIChjdXJyZW50X1NJRCAhPSAwKQorCSAgICBleGVjX25vcm1hbF9jbWQobWVudS0+c3RyaW5nc1tpZHhdLCBtZW51LT5ub3JlbWFwW2lkeF0sCisJCQkJCQkJICAgbWVudS0+c2lsZW50W2lkeF0pOworCWVsc2UKKwkgICAgaW5zX3R5cGVidWYobWVudS0+c3RyaW5nc1tpZHhdLCBtZW51LT5ub3JlbWFwW2lkeF0sIDAsCiAJCQkJCQkgICAgIFRSVUUsIG1lbnUtPnNpbGVudFtpZHhdKTsKICAgICB9CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL21lc3NhZ2UuYyBiL3NyYy9tZXNzYWdlLmMKaW5kZXggZDY3OGJmMy4uY2FmN2FjMCAxMDA2NDQKLS0tIGEvc3JjL21lc3NhZ2UuYworKysgYi9zcmMvbWVzc2FnZS5jCkBAIC00ODcsNyArNDg3LDcgQEAKICAgICB9CiAKICAgICAvKiByZW1lbWJlciB0aGUgbGFzdCBzb3VyY2luZyBuYW1lIHByaW50ZWQsIGFsc28gd2hlbiBpdCdzIGVtcHR5ICovCi0gICAgaWYgKHNvdXJjaW5nX25hbWUgPT0gTlVMTCB8fCBvdGhlcl9zb3VyY2luZ19uYW1lKQorICAgIGlmIChzb3VyY2luZ19uYW1lID09IE5VTEwgfHwgb3RoZXJfc291cmNpbmdfbmFtZSgpKQogICAgIHsKIAl2aW1fZnJlZShsYXN0X3NvdXJjaW5nX25hbWUpOwogCWlmIChzb3VyY2luZ19uYW1lID09IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvbWlzYzEuYyBiL3NyYy9taXNjMS5jCmluZGV4IGVjNzQ0ODYuLjRkYzVhNDEgMTAwNjQ0Ci0tLSBhL3NyYy9taXNjMS5jCisrKyBiL3NyYy9taXNjMS5jCkBAIC03NjUzLDYgKzc2NTMsMTIgQEAKICAgICB2b2lkCiBwcmVwYXJlX3RvX2V4aXQoKQogeworI2lmIGRlZmluZWQoVU5JWCkKKyAgICAvKiBJZ25vcmUgU0lHSFVQLCBiZWNhdXNlIGEgZHJvcHBlZCBjb25uZWN0aW9uIG1heSBtYWtlIFZpbSBleGl0IGFuZCB0aGVuCisgICAgICogZ2V0IGEgU0lHSFVQIHdoaWxlIGV4aXRpbmcsIHdoaWNoIGNhdXNlcyB2YXJpb3VzIHJlZW50cmVudCBwcm9ibGVtcy4gKi8KKyAgICBzaWduYWwoU0lHSFVQLCBTSUdfSUdOKTsKKyNlbmRpZgorCiAjaWZkZWYgRkVBVF9HVUkKICAgICBpZiAoZ3VpLmluX3VzZSkKICAgICB7CmRpZmYgLS1naXQgYS9zcmMvbW92ZS5jIGIvc3JjL21vdmUuYwppbmRleCAwYzM3YWEwLi5kMWViMDI1IDEwMDY0NAotLS0gYS9zcmMvbW92ZS5jCisrKyBiL3NyYy9tb3ZlLmMKQEAgLTE1NTEsNyArMTU1MSwxMiBAQAogCSAgICAtLWN1cndpbi0+d190b3BmaWxsOwogCWVsc2UKICNlbmRpZgorCXsKKyNpZmRlZiBGRUFUX0ZPTERJTkcKKwkgICAgKHZvaWQpaGFzRm9sZGluZyhjdXJ3aW4tPndfdG9wbGluZSwgTlVMTCwgJmN1cndpbi0+d190b3BsaW5lKTsKKyNlbmRpZgogCSAgICArK2N1cndpbi0+d190b3BsaW5lOworCX0KIAkrK2N1cndpbi0+d19ib3RsaW5lOwkJLyogYXBwcm94aW1hdGUgd19ib3RsaW5lICovCiAJY3Vyd2luLT53X3ZhbGlkICY9IH4oVkFMSURfV1JPV3xWQUxJRF9DUk9XfFZBTElEX0JPVExJTkUpOwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9uZXRiZWFucy5jIGIvc3JjL25ldGJlYW5zLmMKaW5kZXggNTBlYTE4OC4uYjUxZGRmYiAxMDA2NDQKLS0tIGEvc3JjL25ldGJlYW5zLmMKKysrIGIvc3JjL25ldGJlYW5zLmMKQEAgLTIzODAsNyArMjM4MCw3IEBACiAKIAlpZiAoKHNlcCA9IHN0cmNocih0b2ssICctJykpICE9IE5VTEwpCiAJewotCSAgICAqc2VwID0gTlVMTDsKKwkgICAgKnNlcCA9IE5VTDsKIAkgICAgd2hpbGUgKCp0b2spCiAJICAgIHsKIAkJc3dpdGNoICgqdG9rKQpkaWZmIC0tZ2l0IGEvc3JjL25vcm1hbC5jIGIvc3JjL25vcm1hbC5jCmluZGV4IGIyNTJlMmUuLjgzNzU5YjcgMTAwNjQ0Ci0tLSBhL3NyYy9ub3JtYWwuYworKysgYi9zcmMvbm9ybWFsLmMKQEAgLTExMjcsNiArMTEyNywxMSBAQAogI2VuZGlmCiAgICAgfQogCisgICAgLyogZ2V0IHRoZSBsZW5ndGggb2YgbWFwcGVkIGNoYXJzIGFnYWluIGFmdGVyIHR5cGluZyBhIGNvdW50LCBzZWNvbmQKKyAgICAgKiBjaGFyYWN0ZXIgb3IgInozMzM8Y3I+Ii4gKi8KKyAgICBpZiAob2xkX21hcHBlZF9sZW4gPiAwKQorCW9sZF9tYXBwZWRfbGVuID0gdHlwZWJ1Zl9tYXBsZW4oKTsKKwogICAgIC8qCiAgICAgICogSWYgYW4gb3BlcmF0aW9uIGlzIHBlbmRpbmcsIGhhbmRsZSBpdC4uLgogICAgICAqLwpkaWZmIC0tZ2l0IGEvc3JjL29wcy5jIGIvc3JjL29wcy5jCmluZGV4IDI5YWZjNTYuLjI5ODBmOTMgMTAwNjQ0Ci0tLSBhL3NyYy9vcHMuYworKysgYi9zcmMvb3BzLmMKQEAgLTI4ODYsNiArMjg4NiwxNSBAQAogICAgICAqLwogICAgIGN1cmJ1Zi0+Yl9vcF9zdGFydCA9IG9hcC0+c3RhcnQ7CiAgICAgY3VyYnVmLT5iX29wX2VuZCA9IG9hcC0+ZW5kOworICAgIGlmICh5YW5rdHlwZSA9PSBNTElORQorI2lmZGVmIEZFQVRfVklTVUFMCisJCSYmICFvYXAtPmJsb2NrX21vZGUKKyNlbmRpZgorICAgICAgICkKKyAgICB7CisJY3VyYnVmLT5iX29wX3N0YXJ0LmNvbCA9IDA7CisJY3VyYnVmLT5iX29wX2VuZC5jb2wgPSBNQVhDT0w7CisgICAgfQogCiAjaWZkZWYgRkVBVF9DTElQQk9BUkQKICAgICAvKgpkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbi5jIGIvc3JjL29wdGlvbi5jCmluZGV4IDZjNjIxOTYuLmQzZTQ3ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9vcHRpb24uYworKysgYi9zcmMvb3B0aW9uLmMKQEAgLTMwMiw2ICszMDIsNyBAQAogI2RlZmluZSBQX1NFQ1VSRQkweDQwMDAwTC8qIGNhbm5vdCBjaGFuZ2UgaW4gbW9kZWxpbmUgb3Igc2VjdXJlIG1vZGUgKi8KICNkZWZpbmUgUF9HRVRURVhUCTB4ODAwMDBMLyogZXhwYW5kIGRlZmF1bHQgdmFsdWUgd2l0aCBfKCkgKi8KICNkZWZpbmUgUF9OT0dMT0IgICAgICAgMHgxMDAwMDBMLyogZG8gbm90IHVzZSBsb2NhbCB2YWx1ZSBmb3IgZ2xvYmFsIHZpbXJjICovCisjZGVmaW5lIFBfTkZOQU1FICAgICAgIDB4MjAwMDAwTC8qIG9ubHkgbm9ybWFsIGZpbGUgbmFtZSBjaGFycyBhbGxvd2VkICovCiAKIC8qCiAgKiBvcHRpb25zW10gaXMgaW5pdGlhbGl6ZWQgaGVyZS4KQEAgLTQyMiw3ICs0MjMsNyBAQAogICAgIHsiYmFja3VwZGlyIiwgICAiYmRpciIsIFBfU1RSSU5HfFBfRVhQQU5EfFBfVklfREVGfFBfQ09NTUF8UF9OT0RVUHxQX1NFQ1VSRSwKIAkJCSAgICAoY2hhcl91ICopJnBfYmRpciwgUFZfTk9ORSwKIAkJCSAgICB7KGNoYXJfdSAqKURGTFRfQkRJUiwgKGNoYXJfdSAqKTBMfX0sCi0gICAgeyJiYWNrdXBleHQiLCAgICJiZXgiLCAgUF9TVFJJTkd8UF9WSV9ERUYsCisgICAgeyJiYWNrdXBleHQiLCAgICJiZXgiLCAgUF9TVFJJTkd8UF9WSV9ERUZ8UF9ORk5BTUUsCiAJCQkgICAgKGNoYXJfdSAqKSZwX2JleCwgUFZfTk9ORSwKIAkJCSAgICB7CiAjaWZkZWYgVk1TCkBAIC04NjQsNyArODY1LDcgQEAKICAgICB7ImZpbGVmb3JtYXRzIiwgImZmcyIsICBQX1NUUklOR3xQX1ZJTXxQX0NPTU1BfFBfTk9EVVAsCiAJCQkgICAgKGNoYXJfdSAqKSZwX2ZmcywgUFZfTk9ORSwKIAkJCSAgICB7KGNoYXJfdSAqKURGTFRfRkZTX1ZJLCAoY2hhcl91ICopREZMVF9GRlNfVklNfX0sCi0gICAgeyJmaWxldHlwZSIsICAgICJmdCIsICAgUF9TVFJJTkd8UF9BTExPQ0VEfFBfVklfREVGfFBfTk9HTE9CLAorICAgIHsiZmlsZXR5cGUiLCAgICAiZnQiLCAgIFBfU1RSSU5HfFBfQUxMT0NFRHxQX1ZJX0RFRnxQX05PR0xPQnxQX05GTkFNRSwKICNpZmRlZiBGRUFUX0FVVE9DTUQKIAkJCSAgICAoY2hhcl91ICopJnBfZnQsIFBWX0ZULAogCQkJICAgIHsoY2hhcl91ICopIiIsIChjaGFyX3UgKikwTH0KQEAgLTk1Myw2ICs5NTQsMTUgQEAKICAgICB7ImZvcm1hdHByZyIsICAgImZwIiwgICBQX1NUUklOR3xQX0VYUEFORHxQX1ZJX0RFRnxQX1NFQ1VSRSwKIAkJCSAgICAoY2hhcl91ICopJnBfZnAsIFBWX05PTkUsCiAJCQkgICAgeyhjaGFyX3UgKikiIiwgKGNoYXJfdSAqKTBMfX0sCisgICAgeyJmc3luYyIsICAgICAgICJmcyIsICAgUF9CT09MfFBfU0VDVVJFfFBfVklfREVGLAorI2lmZGVmIEhBVkVfRlNZTkMKKwkJCSAgICAoY2hhcl91ICopJnBfZnMsIFBWX05PTkUsCisJCQkgICAgeyhjaGFyX3UgKilUUlVFLCAoY2hhcl91ICopMEx9CisjZWxzZQorCQkJICAgIChjaGFyX3UgKilOVUxMLCBQVl9OT05FLAorCQkJICAgIHsoY2hhcl91ICopRkFMU0UsIChjaGFyX3UgKikwTH0KKyNlbmRpZgorCQkJICAgIH0sCiAgICAgeyJnZGVmYXVsdCIsICAgICJnZCIsICAgUF9CT09MfFBfVklfREVGfFBfVklNLAogCQkJICAgIChjaGFyX3UgKikmcF9nZCwgUFZfTk9ORSwKIAkJCSAgICB7KGNoYXJfdSAqKUZBTFNFLCAoY2hhcl91ICopMEx9fSwKQEAgLTEyNzgsNyArMTI4OCw4IEBACiAgICAgeyJpc3ByaW50IiwJICAgICJpc3AiLCAgUF9TVFJJTkd8UF9WSV9ERUZ8UF9SQUxMfFBfQ09NTUF8UF9OT0RVUCwKIAkJCSAgICAoY2hhcl91ICopJnBfaXNwLCBQVl9OT05FLAogCQkJICAgIHsKLSNpZiBkZWZpbmVkKE1TRE9TKSB8fCBkZWZpbmVkKE1TV0lOKSB8fCBkZWZpbmVkKE9TMikgfHwgZGVmaW5lZChNQUNPUykgXAorI2lmIGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoTVNXSU4pIHx8IGRlZmluZWQoT1MyKSBcCisJCXx8IChkZWZpbmVkKE1BQ09TKSAmJiAhZGVmaW5lZChNQUNPU19YKSkgXAogCQl8fCBkZWZpbmVkKFZNUykKIAkJCSAgICAoY2hhcl91ICopIkAsfi0yNTUiLAogI2Vsc2UKQEAgLTEzMDIsNyArMTMxMyw3IEBACiAJCQkgICAgeyhjaGFyX3UgKikwTCwgKGNoYXJfdSAqKTBMfQogI2VuZGlmCiAJCQkgICAgfSwKLSAgICB7ImtleW1hcCIsCSAgICAia21wIiwgIFBfU1RSSU5HfFBfQUxMT0NFRHxQX1ZJX0RFRnxQX1JCVUZ8UF9SU1RBVCwKKyAgICB7ImtleW1hcCIsCSAgICAia21wIiwgIFBfU1RSSU5HfFBfQUxMT0NFRHxQX1ZJX0RFRnxQX1JCVUZ8UF9SU1RBVHxQX05GTkFNRSwKICNpZmRlZiBGRUFUX0tFWU1BUAogCQkJICAgIChjaGFyX3UgKikmcF9rZXltYXAsIFBWX0tNQVAsCiAJCQkgICAgeyhjaGFyX3UgKikiIiwgKGNoYXJfdSAqKTBMfQpAQCAtMTM0OCw3ICsxMzU5LDcgQEAKIAkJCSAgICB7KGNoYXJfdSAqKU5VTEwsCiAjZW5kaWYKIAkJCQkoY2hhcl91ICopMEx9fSwKLSAgICB7ImxhbmdtZW51IiwgICAgImxtIiwgICBQX1NUUklOR3xQX1ZJX0RFRiwKKyAgICB7ImxhbmdtZW51IiwgICAgImxtIiwgICBQX1NUUklOR3xQX1ZJX0RFRnxQX05GTkFNRSwKICNpZiBkZWZpbmVkKEZFQVRfTUVOVSkgJiYgZGVmaW5lZChGRUFUX01VTFRJX0xBTkcpCiAJCQkgICAgKGNoYXJfdSAqKSZwX2xtLCBQVl9OT05FLAogI2Vsc2UKQEAgLTE1OTQsNyArMTYwNSw3IEBACiAJCQkgICAgeyhjaGFyX3UgKikwTCwgKGNoYXJfdSAqKTBMfQogI2VuZGlmCiAJCQkgICAgfSwKLSAgICB7InBhdGNobW9kZSIsICAgInBtIiwgICBQX1NUUklOR3xQX1ZJX0RFRiwKKyAgICB7InBhdGNobW9kZSIsICAgInBtIiwgICBQX1NUUklOR3xQX1ZJX0RFRnxQX05GTkFNRSwKIAkJCSAgICAoY2hhcl91ICopJnBfcG0sIFBWX05PTkUsCiAJCQkgICAgeyhjaGFyX3UgKikiIiwgKGNoYXJfdSAqKTBMfX0sCiAgICAgeyJwYXRoIiwJICAgICJwYSIsICAgUF9TVFJJTkd8UF9FWFBBTkR8UF9WSV9ERUZ8UF9DT01NQXxQX05PRFVQLApAQCAtMTYyNyw3ICsxNjM4LDcgQEAKIAkJCSAgICAoY2hhcl91ICopTlVMTCwgUFZfTk9ORSwKICNlbmRpZgogCQkJICAgIHsoY2hhcl91ICopRkFMU0UsIChjaGFyX3UgKikwTH19LAotICAgIHsicHJpbnRkZXZpY2UiLCAicGRldiIsIFBfU1RSSU5HfFBfVklfREVGLAorICAgIHsicHJpbnRkZXZpY2UiLCAicGRldiIsIFBfU1RSSU5HfFBfVklfREVGfFBfU0VDVVJFLAogI2lmZGVmIEZFQVRfUFJJTlRFUgogCQkJICAgIChjaGFyX3UgKikmcF9wZGV2LCBQVl9OT05FLAogCQkJICAgIHsoY2hhcl91ICopIiIsIChjaGFyX3UgKikwTH0KQEAgLTIwNDAsNyArMjA1MSw3IEBACiAgICAgeyJzd2l0Y2hidWYiLCAgICJzd2IiLCAgUF9TVFJJTkd8UF9WSV9ERUZ8UF9DT01NQXxQX05PRFVQLAogCQkJICAgIChjaGFyX3UgKikmcF9zd2IsIFBWX05PTkUsCiAJCQkgICAgeyhjaGFyX3UgKikiIiwgKGNoYXJfdSAqKTBMfX0sCi0gICAgeyJzeW50YXgiLAkgICAgInN5biIsICBQX1NUUklOR3xQX0FMTE9DRUR8UF9WSV9ERUZ8UF9OT0dMT0IsCisgICAgeyJzeW50YXgiLAkgICAgInN5biIsICBQX1NUUklOR3xQX0FMTE9DRUR8UF9WSV9ERUZ8UF9OT0dMT0J8UF9ORk5BTUUsCiAjaWZkZWYgRkVBVF9TWU5fSEwKIAkJCSAgICAoY2hhcl91ICopJnBfc3luLCBQVl9TWU4sCiAJCQkgICAgeyhjaGFyX3UgKikiIiwgKGNoYXJfdSAqKTBMfQpAQCAtMjE0NSw3ICsyMTU2LDcgQEAKIAkJCSAgICAoY2hhcl91ICopTlVMTCwgUFZfTk9ORSwKICNlbmRpZgogCQkJICAgIHsoY2hhcl91ICopODVMLCAoY2hhcl91ICopMEx9fSwKLSAgICB7InRpdGxlb2xkIiwgICAgTlVMTCwgICBQX1NUUklOR3xQX1ZJX0RFRnxQX0dFVFRFWFQsCisgICAgeyJ0aXRsZW9sZCIsICAgIE5VTEwsICAgUF9TVFJJTkd8UF9WSV9ERUZ8UF9HRVRURVhUfFBfU0VDVVJFLAogI2lmZGVmIEZFQVRfVElUTEUKIAkJCSAgICAoY2hhcl91ICopJnBfdGl0bGVvbGQsIFBWX05PTkUsCiAJCQkgICAgeyhjaGFyX3UgKilOXygiVGhhbmtzIGZvciBmbHlpbmcgVmltIiksCkBAIC0yMzgwLDcgKzIzOTEsNyBAQAogCQkJICAgIHsoY2hhcl91ICopMEwsIChjaGFyX3UgKikwTH19LAogCiAvKiB0ZXJtaW5hbCBvdXRwdXQgY29kZXMgKi8KLSNkZWZpbmUgcF90ZXJtKHNzcywgdnZ2KSAgIHtzc3MsIE5VTEwsIFBfU1RSSU5HfFBfVklfREVGfFBfUkFMTCwgXAorI2RlZmluZSBwX3Rlcm0oc3NzLCB2dnYpICAge3NzcywgTlVMTCwgUF9TVFJJTkd8UF9WSV9ERUZ8UF9SQUxMfFBfU0VDVVJFLCBcCiAJCQkgICAgKGNoYXJfdSAqKSZ2dnYsIFBWX05PTkUsIFwKIAkJCSAgICB7KGNoYXJfdSAqKSIiLCAoY2hhcl91ICopMEx9fSwKIApAQCAtMjQzNSw2ICsyNDQ2LDggQEAKICAgICBwX3Rlcm0oInRfdnMiLCBUX1ZTKQogICAgIHBfdGVybSgidF9XUCIsIFRfQ1dQKQogICAgIHBfdGVybSgidF9XUyIsIFRfQ1dTKQorICAgIHBfdGVybSgidF9TSSIsIFRfQ1NJKQorICAgIHBfdGVybSgidF9FSSIsIFRfQ0VJKQogICAgIHBfdGVybSgidF94cyIsIFRfWFMpCiAgICAgcF90ZXJtKCJ0X1pIIiwgVF9DWkgpCiAgICAgcF90ZXJtKCJ0X1pSIiwgVF9DWlIpCkBAIC0zMzg4LDcgKzM0MDEsOCBAQAogCWVycm1zZyA9IE5VTEw7CiAJc3RhcnRhcmcgPSBhcmc7CQkvKiByZW1lbWJlciBmb3IgZXJyb3IgbWVzc2FnZSAqLwogCi0JaWYgKFNUUk5DTVAoYXJnLCAiYWxsIiwgMykgPT0gMCAmJiAhaXNhbHBoYShhcmdbM10pKQorCWlmIChTVFJOQ01QKGFyZywgImFsbCIsIDMpID09IDAgJiYgIWlzYWxwaGEoYXJnWzNdKQorCQkJCQkJJiYgIShvcHRfZmxhZ3MgJiBPUFRfTU9ERUxJTkUpKQogCXsKIAkgICAgLyoKIAkgICAgICogIjpzZXQgYWxsIiAgc2hvdyBhbGwgb3B0aW9ucy4KQEAgLTM0MDQsNyArMzQxOCw3IEBACiAJICAgIGVsc2UKIAkJc2hvd29wdGlvbnMoMSwgb3B0X2ZsYWdzKTsKIAl9Ci0JZWxzZSBpZiAoU1RSTkNNUChhcmcsICJ0ZXJtY2FwIiwgNykgPT0gMCkKKwllbHNlIGlmIChTVFJOQ01QKGFyZywgInRlcm1jYXAiLCA3KSA9PSAwICYmICEob3B0X2ZsYWdzICYgT1BUX01PREVMSU5FKSkKIAl7CiAJICAgIHNob3dvcHRpb25zKDIsIG9wdF9mbGFncyk7CiAJICAgIHNob3dfdGVybWNvZGVzKCk7CkBAIC00NzA0LDYgKzQ3MTgsMTUgQEAKIAllcnJtc2cgPSBlX3NlY3VyZTsKICAgICB9CiAKKyAgICAvKiBDaGVjayBmb3IgYSAibm9ybWFsIiBmaWxlIG5hbWUgaW4gc29tZSBvcHRpb25zLiAgRGlzYWxsb3cgYSBwYXRoCisgICAgICogc2VwYXJhdG9yIChzbGFzaCBhbmQvb3IgYmFja3NsYXNoKSwgd2lsZGNhcmRzIGFuZCBjaGFyYWN0ZXJzIHRoYXQgYXJlCisgICAgICogb2Z0ZW4gaWxsZWdhbCBpbiBhIGZpbGUgbmFtZS4gKi8KKyAgICBlbHNlIGlmICgob3B0aW9uc1tvcHRfaWR4XS5mbGFncyAmIFBfTkZOQU1FKQorCQkJCSAgICYmIHZpbV9zdHJwYnJrKCp2YXJwLCAiL1xcKj9bfDw+IikgIT0gTlVMTCkKKyAgICB7CisJZXJybXNnID0gZV9pbnZhcmc7CisgICAgfQorCiAgICAgLyogJ3Rlcm0nICovCiAgICAgZWxzZSBpZiAodmFycCA9PSAmVF9OQU1FKQogICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9vcHRpb24uaCBiL3NyYy9vcHRpb24uaAppbmRleCBhY2IyM2RlLi41NjZhNTYxIDEwMDY0NAotLS0gYS9zcmMvb3B0aW9uLmgKKysrIGIvc3JjL29wdGlvbi5oCkBAIC0xOSwyNiArMTksMzAgQEAKICMgZW5kaWYKICNlbmRpZgogCi0vKiBkZWZhdWx0IHZhbHVlcyBmb3IgcF9lZm0gJ2Vycm9yZm9ybWF0JyAqLworLyoKKyAqIERlZmF1bHQgdmFsdWVzIGZvciAnZXJyb3Jmb3JtYXQnLgorICogVGhlICIlZnwlbHwgJW0iIG9uZSBpcyB1c2VkIGZvciB3aGVuIHRoZSBjb250ZW50cyBvZiB0aGUgcXVpY2tmaXggd2luZG93IGlzCisgKiB3cml0dGVuIHRvIGEgZmlsZS4KKyAqLwogI2lmZGVmIEFNSUdBCi0jIGRlZmluZSBERkxUX0VGTQkiJWY+JWw6JWM6JXQ6JW46JW0sJWY6JWw6ICV0JSpcXEQlbjogJW0sJWYgJWwgJXQlKlxcRCVuOiAlbSwlKlteXCJdXCIlZlwiJSpcXEQlbDogJW0sJWY6JWw6JW0iCisjIGRlZmluZSBERkxUX0VGTQkiJWY+JWw6JWM6JXQ6JW46JW0sJWY6JWw6ICV0JSpcXEQlbjogJW0sJWYgJWwgJXQlKlxcRCVuOiAlbSwlKlteXCJdXCIlZlwiJSpcXEQlbDogJW0sJWY6JWw6JW0sJWZ8JWx8ICVtIgogI2Vsc2UKICMgaWYgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChXSU4zMjY0KQotIyAgZGVmaW5lIERGTFRfRUZNCSIlZiglbCkgOiAldCUqXFxEJW46ICVtLCUqW15cIl1cIiVmXCIlKlxcRCVsOiAlbSwlZiglbCkgOiAlbSwlKlteIF0gJWYgJWw6ICVtLCVmOiVsOiVtIgorIyAgZGVmaW5lIERGTFRfRUZNCSIlZiglbCkgOiAldCUqXFxEJW46ICVtLCUqW15cIl1cIiVmXCIlKlxcRCVsOiAlbSwlZiglbCkgOiAlbSwlKlteIF0gJWYgJWw6ICVtLCVmOiVsOiVtLCVmfCVsfCAlbSIKICMgZWxzZQogIyAgaWYgZGVmaW5lZChfX0VNWF9fKQkvKiBwdXQgbW9zdCBjb21tb24gaGVyZSAoaS5lLiBnY2MgZm9ybWF0KSBhdCBmcm9udCAqLwotIyAgIGRlZmluZSBERkxUX0VGTQkiJWY6JWw6JW0sJSpbXlwiXVwiJWZcIiUqXFxEJWw6ICVtLFwiJWZcIiUqXFxEJWw6ICVtLCVmKCVsOiVjKSA6ICVtIgorIyAgIGRlZmluZSBERkxUX0VGTQkiJWY6JWw6JW0sJSpbXlwiXVwiJWZcIiUqXFxEJWw6ICVtLFwiJWZcIiUqXFxEJWw6ICVtLCVmKCVsOiVjKSA6ICVtLCVmfCVsfCAlbSIKICMgIGVsc2UKICMgICBpZiBkZWZpbmVkKF9fUU5YX18pCi0jICAgIGRlZmluZSBERkxUX0VGTQkiJWYoJWwpOiUqW15XRV0ldCUqXFxEJW46JW0iCisjICAgIGRlZmluZSBERkxUX0VGTQkiJWYoJWwpOiUqW15XRV0ldCUqXFxEJW46JW0sJWZ8JWx8ICVtIgogIyAgIGVsc2UKICMgICAgaWZkZWYgVk1TCi0jICAgICBkZWZpbmUgREZMVF9FRk0JIiVBJXBeLCVDJSVDQy0ldC0lbSwlQ2F0IGxpbmUgbnVtYmVyICVsIGluIGZpbGUgJWYiCisjICAgICBkZWZpbmUgREZMVF9FRk0JIiVBJXBeLCVDJSVDQy0ldC0lbSwlQ2F0IGxpbmUgbnVtYmVyICVsIGluIGZpbGUgJWYsJWZ8JWx8ICVtIgogIyAgICBlbHNlIC8qIFVuaXgsIHByb2JhYmx5ICovCiAjICAgICBpZmRlZiBFQkNESUMKLSNkZWZpbmUgREZMVF9FRk0JIiUqW14gXSAlKlteIF0gJWY6JWwlKlsgXSVtLCUqW15cIl1cIiVmXCIlKlxcRCVsOiAlbSxcIiVmXCIlKlxcRCVsOiAlbSwlZjolbDolbSxcIiVmXCJcXCwgbGluZSAlbCUqXFxEJWMlKlteIF0gJW0sJUQlKlxcYVslKlxcZF06IEVudGVyaW5nIGRpcmVjdG9yeSBgJWYnLCVYJSpcXGFbJSpcXGRdOiBMZWF2aW5nIGRpcmVjdG9yeSBgJWYnLCVETWFraW5nICUqXFxhIGluICVmIgorI2RlZmluZSBERkxUX0VGTQkiJSpbXiBdICUqW14gXSAlZjolbCUqWyBdJW0sJSpbXlwiXVwiJWZcIiUqXFxEJWw6ICVtLFwiJWZcIiUqXFxEJWw6ICVtLCVmOiVsOiVtLFwiJWZcIlxcLCBsaW5lICVsJSpcXEQlYyUqW14gXSAlbSwlRCUqXFxhWyUqXFxkXTogRW50ZXJpbmcgZGlyZWN0b3J5IGAlZicsJVglKlxcYVslKlxcZF06IExlYXZpbmcgZGlyZWN0b3J5IGAlZicsJURNYWtpbmcgJSpcXGEgaW4gJWYsJWZ8JWx8ICVtIgogIyAgICAgZWxzZQotI2RlZmluZSBERkxUX0VGTQkiJSpbXlwiXVwiJWZcIiUqXFxEJWw6ICVtLFwiJWZcIiUqXFxEJWw6ICVtLCUtRyVmOiVsOiAoRWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlLCUtRyVmOiVsOiBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluLiksJWY6JWw6JW0sXCIlZlwiXFwsIGxpbmUgJWwlKlxcRCVjJSpbXiBdICVtLCVEJSpcXGFbJSpcXGRdOiBFbnRlcmluZyBkaXJlY3RvcnkgYCVmJywlWCUqXFxhWyUqXFxkXTogTGVhdmluZyBkaXJlY3RvcnkgYCVmJywlRE1ha2luZyAlKlxcYSBpbiAlZiIKKyNkZWZpbmUgREZMVF9FRk0JIiUqW15cIl1cIiVmXCIlKlxcRCVsOiAlbSxcIiVmXCIlKlxcRCVsOiAlbSwlLUclZjolbDogKEVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZSwlLUclZjolbDogZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbi4pLCVmOiVsOiVtLFwiJWZcIlxcLCBsaW5lICVsJSpcXEQlYyUqW14gXSAlbSwlRCUqXFxhWyUqXFxkXTogRW50ZXJpbmcgZGlyZWN0b3J5IGAlZicsJVglKlxcYVslKlxcZF06IExlYXZpbmcgZGlyZWN0b3J5IGAlZicsJURNYWtpbmcgJSpcXGEgaW4gJWYsJWZ8JWx8ICVtIgogIyAgICAgZW5kaWYKICMgICAgZW5kaWYKICMgICBlbmRpZgpAQCAtNDQ1LDYgKzQ0OSw3IEBACiAjIGRlZmluZSBGRE9fSlVNUAkJMHg0MDAKICNlbmRpZgogRVhURVJOIGNoYXJfdQkqcF9mcDsJCS8qICdmb3JtYXRwcmcnICovCitFWFRFUk4gaW50CXBfZnM7CQkvKiAnZnN5bmMnICovCiBFWFRFUk4gaW50CXBfZ2Q7CQkvKiAnZ2RlZmF1bHQnICovCiAjaWZkZWYgRkVBVF9QUklOVEVSCiBFWFRFUk4gY2hhcl91CSpwX3BkZXY7CS8qICdwcmludGRldmljZScgKi8KZGlmZiAtLWdpdCBhL3NyYy9vc19tc2Rvcy5jIGIvc3JjL29zX21zZG9zLmMKaW5kZXggOTJiMTRlYS4uMTA1NmZlMCAxMDA2NDQKLS0tIGEvc3JjL29zX21zZG9zLmMKKysrIGIvc3JjL29zX21zZG9zLmMKQEAgLTUwNSwxNCArNTA1LDE0IEBACiAgICAgaWYgKHJlc3RvcmUpCiAgICAgewogCWlmIChzYXZlZCkKLQkgICAgcmVncy5oLmFoID0gMHgwMTsJICAgIC8qU2V0IEN1cnNvciovCisJICAgIHJlZ3MuaC5haCA9IDB4MDE7CSAgICAvKiBTZXQgQ3Vyc29yICovCiAJZWxzZQogCSAgICByZXR1cm47CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0JcmVncy5oLmFoID0gMHgwMzsJICAgIC8qR2V0IEN1cnNvciovCi0JcmVncy5oLmJoID0gMHgwMDsJICAgIC8qUGFnZSAqLworCXJlZ3MuaC5haCA9IDB4MDM7CSAgICAvKiBHZXQgQ3Vyc29yICovCisJcmVncy5oLmJoID0gMHgwMDsJICAgIC8qIFBhZ2UgKi8KIAlzYXZlZCA9IFRSVUU7CiAgICAgfQogCkBAIC01MjgsOSArNTI4LDkgQEAKIHsKICAgICB1bmlvbiBSRUdTCSAgICByZWdzOwogCi0gICAgcmVncy5oLmNoID0gNyAtIHRoaWNrbmVzczsJICAgIC8qU3RhcnRpbmcgTGluZSovCi0gICAgcmVncy5oLmNsID0gNzsJCSAgICAvKkVuZGluZyBMaW5lKi8KLSAgICByZWdzLmguYWggPSAweDAxOwkJICAgIC8qU2V0IEN1cnNvciovCisgICAgcmVncy5oLmNoID0gNyAtIHRoaWNrbmVzczsJICAgIC8qIFN0YXJ0aW5nIExpbmUgKi8KKyAgICByZWdzLmguY2wgPSA3OwkJICAgIC8qIEVuZGluZyBMaW5lICovCisgICAgcmVncy5oLmFoID0gMHgwMTsJCSAgICAvKiBTZXQgQ3Vyc29yICovCiAgICAgKHZvaWQpaW50ODYoMHgxMCwgJnJlZ3MsICZyZWdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL29zX3VuaXguYyBiL3NyYy9vc191bml4LmMKaW5kZXggMDhlOWZjOC4uMzczZGNlMSAxMDA2NDQKLS0tIGEvc3JjL29zX3VuaXguYworKysgYi9zcmMvb3NfdW5peC5jCkBAIC05MDMsNiArOTAzLDEzIEBACiAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBTSUdIQVNBUkcKKyAgICAvKiBXaGVuIFNJR0hVUCBpcyBibG9ja2VkOiBwb3N0cG9uZSBpdHMgZWZmZWN0IGFuZCByZXR1cm4gaGVyZS4gIFRoaXMKKyAgICAgKiBhdm9pZHMgdGhhdCBhIG5vbi1yZWVudHJhbnQgZnVuY3Rpb24gaXMgaW50ZXJydXB0ZWQsIGUuZy4sIGZyZWUoKS4gKi8KKyAgICBpZiAoZW50ZXJlZCA9PSAwICYmIHNpZ2FyZyA9PSBTSUdIVVAgJiYgIWhhbmRsZV9zaWdodXAoU0lHSFVQX1JDVikpCisJU0lHUkVUVVJOOworI2VuZGlmCisKICAgICAvKiBSZW1lbWJlciBob3cgb2Z0ZW4gd2UgaGF2ZSBiZWVuIGNhbGxlZC4gKi8KICAgICArK2VudGVyZWQ7CiAKQEAgLTExNzQsNiArMTE4MSwzOSBAQAogfQogCiAvKgorICogSGFuZGxpbmcgb2YgU0lHSFVQOgorICogIndoZW4iID09IFNJR0hVUF9SQ1Y6ICB3aGVuIGJ1c3ksIHBvc3Rwb25lLCBvdGhlcndpc2UgcmV0dXJuIFRSVUUKKyAqICJ3aGVuIiA9PSBTSUdIVVBfQkxPQ0s6IEdvaW5nIHRvIGJlIGJ1c3ksIGJsb2NrIFNJR0hVUAorICogIndoZW4iID09IFNJR0hVUF9VTkJMT0NLOiBHb2luZyB3YWl0LCB1bmJsb2NrIFNJR0hVUAorICogUmV0dXJucyBUUlVFIHdoZW4gVmltIHNob3VsZCBleGl0LgorICovCisgICAgaW50CitoYW5kbGVfc2lnaHVwKHdoZW4pCisgICAgaW50CQl3aGVuOworeworICAgIHN0YXRpYyBpbnQgZ290X3NpZ2h1cCA9IEZBTFNFOworICAgIHN0YXRpYyBpbnQgYmxvY2tlZCA9IEZBTFNFOworCisgICAgc3dpdGNoICh3aGVuKQorICAgIHsKKwljYXNlIFNJR0hVUF9SQ1Y6ICAgICBpZiAoIWJsb2NrZWQpCisJCQkJIHJldHVybiBUUlVFOwkvKiBleGl0ISAqLworCQkJICAgICBnb3Rfc2lnaHVwID0gVFJVRTsKKwkJCSAgICAgZ290X2ludCA9IFRSVUU7ICAgIC8qIGJyZWFrIGFueSBsb29wcyAqLworCQkJICAgICBicmVhazsKKworCWNhc2UgU0lHSFVQX0JMT0NLOiAgIGJsb2NrZWQgPSBUUlVFOworCQkJICAgICBicmVhazsKKworCWNhc2UgU0lHSFVQX1VOQkxPQ0s6IGJsb2NrZWQgPSBGQUxTRTsKKwkJCSAgICAgaWYgKGdvdF9zaWdodXApCisJCQkJIGtpbGwoZ2V0cGlkKCksIFNJR0hVUCk7CisJCQkgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKy8qCiAgKiBDaGVja193aW4gY2hlY2tzIHdoZXRoZXIgd2UgaGF2ZSBhbiBpbnRlcmFjdGl2ZSBzdGRvdXQuCiAgKi8KIC8qIEFSR1NVU0VEICovCmRpZmYgLS1naXQgYS9zcmMvb3Nfd2luMzIuYyBiL3NyYy9vc193aW4zMi5jCmluZGV4IGZjZTQ4ZjkuLjIzYTMxZjMgMTAwNjQ0Ci0tLSBhL3NyYy9vc193aW4zMi5jCisrKyBiL3NyYy9vc193aW4zMi5jCkBAIC0yMjgsMTUgKzIyOCwxOCBAQAogIyAgZGVmaW5lIEdFVFRFWFRfRExMICJsaWJpbnRsLmRsbCIKICMgZW5kaWYKIC8qIER1bW15IGZ1bmNpdG9ucyAqLwotc3RhdGljIGNoYXIqIG51bGxfbGliaW50bF9nZXR0ZXh0KGNvbnN0IGNoYXIgKik7Ci1zdGF0aWMgY2hhciogbnVsbF9saWJpbnRsX3RleHRkb21haW4oY29uc3QgY2hhciAqKTsKLXN0YXRpYyBjaGFyKiBudWxsX2xpYmludGxfYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworc3RhdGljIGNoYXIgKm51bGxfbGliaW50bF9nZXR0ZXh0KGNvbnN0IGNoYXIgKik7CitzdGF0aWMgY2hhciAqbnVsbF9saWJpbnRsX3RleHRkb21haW4oY29uc3QgY2hhciAqKTsKK3N0YXRpYyBjaGFyICpudWxsX2xpYmludGxfYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworc3RhdGljIGNoYXIgKm51bGxfbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAKIHN0YXRpYyBISU5TVEFOQ0UgaExpYmludGxETEwgPSAwOwotY2hhciogKCpkeW5fbGliaW50bF9nZXR0ZXh0KShjb25zdCBjaGFyICopID0gbnVsbF9saWJpbnRsX2dldHRleHQ7Ci1jaGFyKiAoKmR5bl9saWJpbnRsX3RleHRkb21haW4pKGNvbnN0IGNoYXIgKikgPSBudWxsX2xpYmludGxfdGV4dGRvbWFpbjsKLWNoYXIqICgqZHluX2xpYmludGxfYmluZHRleHRkb21haW4pKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKQorY2hhciAqKCpkeW5fbGliaW50bF9nZXR0ZXh0KShjb25zdCBjaGFyICopID0gbnVsbF9saWJpbnRsX2dldHRleHQ7CitjaGFyICooKmR5bl9saWJpbnRsX3RleHRkb21haW4pKGNvbnN0IGNoYXIgKikgPSBudWxsX2xpYmludGxfdGV4dGRvbWFpbjsKK2NoYXIgKigqZHluX2xpYmludGxfYmluZHRleHRkb21haW4pKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKQogCQkJCQkJPSBudWxsX2xpYmludGxfYmluZHRleHRkb21haW47CitjaGFyICooKmR5bl9saWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikKKwkJCQkgICAgICAgPSBudWxsX2xpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQ7CiAKICAgICBpbnQKIGR5bl9saWJpbnRsX2luaXQoY2hhciAqbGlibmFtZSkKQEAgLTI4Nyw2ICsyOTAsMTUgQEAKIAkgICAgcmV0dXJuIDA7CiAJfQogICAgIH0KKworICAgIC8qIFRoZSBiaW5kX3RleHRkb21haW5fY29kZXNldCgpIGZ1bmN0aW9uIGlzIG9wdGlvbmFsLiAqLworICAgIChGQVJQUk9DKWR5bl9saWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0ID0KKwkJCQkJICAoRkFSUFJPQylHZXRQcm9jQWRkcmVzcyhoTGliaW50bERMTCwKKwkJCQkJCSAgICJiaW5kX3RleHRkb21haW5fY29kZXNldCIpOworICAgIGlmIChkeW5fbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCA9PSBOVUxMKQorCWR5bl9saWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0ID0KKwkJCQkJIG51bGxfbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldDsKKwogICAgIHJldHVybiAxOwogfQogCkBAIC0yOTksNiArMzExLDcgQEAKICAgICBkeW5fbGliaW50bF9nZXR0ZXh0CQk9IG51bGxfbGliaW50bF9nZXR0ZXh0OwogICAgIGR5bl9saWJpbnRsX3RleHRkb21haW4JPSBudWxsX2xpYmludGxfdGV4dGRvbWFpbjsKICAgICBkeW5fbGliaW50bF9iaW5kdGV4dGRvbWFpbgk9IG51bGxfbGliaW50bF9iaW5kdGV4dGRvbWFpbjsKKyAgICBkeW5fbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCA9IG51bGxfbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldDsKIH0KIAogICAgIHN0YXRpYyBjaGFyICoKQEAgLTMxNCw2ICszMjcsMTMgQEAKIH0KIAogICAgIHN0YXRpYyBjaGFyICoKK251bGxfbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldChjb25zdCBjaGFyICpkb21haW5uYW1lLAorCQkJCQkJCSAgY29uc3QgY2hhciAqY29kZXNldCkKK3sKKyAgICByZXR1cm4gTlVMTDsKK30KKworICAgIHN0YXRpYyBjaGFyICoKIG51bGxfbGliaW50bF90ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpCiB7CiAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZXhfZG9jbWQucHJvIGIvc3JjL3Byb3RvL2V4X2RvY21kLnBybwppbmRleCBiM2EyZDJkLi5iNmYzYjdhIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vZXhfZG9jbWQucHJvCisrKyBiL3NyYy9wcm90by9leF9kb2NtZC5wcm8KQEAgLTM0LDYgKzM0LDcgQEAKIHZvaWQgZG9fc2xlZXAgX19BUkdTKChsb25nIG1zZWMpKTsKIEZJTEUgKm9wZW5fZXhmaWxlIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgaW50IGZvcmNlaXQsIGNoYXIgKm1vZGUpKTsKIHZvaWQgdXBkYXRlX3RvcGxpbmVfY3Vyc29yIF9fQVJHUygodm9pZCkpOwordm9pZCBleGVjX25vcm1hbF9jbWQgX19BUkdTKChjaGFyX3UgKmNtZCwgaW50IHJlbWFwLCBpbnQgc2lsZW50KSk7CiBjaGFyX3UgKmV2YWxfdmFycyBfX0FSR1MoKGNoYXJfdSAqc3JjLCBpbnQgKnVzZWRsZW4sIGxpbmVucl9UICpsbnVtcCwgY2hhcl91ICoqZXJyb3Jtc2csIGNoYXJfdSAqc3Jjc3RhcnQpKTsKIGNoYXJfdSAqZXhwYW5kX3NmaWxlIF9fQVJHUygoY2hhcl91ICphcmcpKTsKIGludCBwdXRfZW9sIF9fQVJHUygoRklMRSAqZmQpKTsKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9vc191bml4LnBybyBiL3NyYy9wcm90by9vc191bml4LnBybwppbmRleCA5YTM5MDhiLi42MDE4YzhmIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vb3NfdW5peC5wcm8KKysrIGIvc3JjL3Byb3RvL29zX3VuaXgucHJvCkBAIC0xMSw2ICsxMSw3IEBACiB2b2lkIG1jaF9zdXNwZW5kIF9fQVJHUygodm9pZCkpOwogdm9pZCBtY2hfaW5pdCBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgcmVzZXRfc2lnbmFscyBfX0FSR1MoKHZvaWQpKTsKK2ludCBoYW5kbGVfc2lnaHVwIF9fQVJHUygoaW50IHdoZW4pKTsKIGludCBtY2hfY2hlY2tfd2luIF9fQVJHUygoaW50IGFyZ2MsIGNoYXIgKiphcmd2KSk7CiBpbnQgbWNoX2lucHV0X2lzYXR0eSBfX0FSR1MoKHZvaWQpKTsKIGludCBtY2hfY2FuX3Jlc3RvcmVfdGl0bGUgX19BUkdTKCh2b2lkKSk7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vdGVybS5wcm8gYi9zcmMvcHJvdG8vdGVybS5wcm8KaW5kZXggMTY5MjRiYS4uMzIxNWIwZSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL3Rlcm0ucHJvCisrKyBiL3NyYy9wcm90by90ZXJtLnBybwpAQCAtNDAsNiArNDAsNyBAQAogdm9pZCBzY3JvbGxfc3RhcnQgX19BUkdTKCh2b2lkKSk7CiB2b2lkIGN1cnNvcl9vbiBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgY3Vyc29yX29mZiBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgdGVybV9jdXJzb3Jfc2hhcGUgX19BUkdTKCh2b2lkKSk7CiB2b2lkIHNjcm9sbF9yZWdpb25fc2V0IF9fQVJHUygod2luX1QgKndwLCBpbnQgb2ZmKSk7CiB2b2lkIHNjcm9sbF9yZWdpb25fcmVzZXQgX19BUkdTKCh2b2lkKSk7CiB2b2lkIGNsZWFyX3Rlcm1jb2RlcyBfX0FSR1MoKHZvaWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9zY3JlZW4uYyBiL3NyYy9zY3JlZW4uYwppbmRleCA2OGY2ZGExLi44OGIxN2Q0IDEwMDY0NAotLS0gYS9zcmMvc2NyZWVuLmMKKysrIGIvc3JjL3NjcmVlbi5jCkBAIC0xMTAsOCArMTEwLDggQEAKICAgICBpbnQJCWF0dHI7CS8qIGF0dHJpYnV0ZXMgdG8gYmUgdXNlZCBmb3IgYSBtYXRjaCAqLwogICAgIGludAkJYXR0cl9jdXI7IC8qIGF0dHJpYnV0ZXMgY3VycmVudGx5IGFjdGl2ZSBpbiB3aW5fbGluZSgpICovCiAgICAgbGluZW5yX1QJZmlyc3RfbG51bTsJLyogZmlyc3QgbG51bSB0byBzZWFyY2ggZm9yIG11bHRpLWxpbmUgcGF0ICovCi0gICAgY2hhcl91CSpzdGFydHA7IC8qIGluIHdpbl9saW5lKCkgcG9pbnRzIHRvIGNoYXIgd2hlcmUgSEwgc3RhcnRzICovCi0gICAgY2hhcl91CSplbmRwOwkgLyogaW4gd2luX2xpbmUoKSBwb2ludHMgdG8gY2hhciB3aGVyZSBITCBlbmRzICovCisgICAgY29sbnJfVAlzdGFydGNvbDsgLyogaW4gd2luX2xpbmUoKSBwb2ludHMgdG8gY2hhciB3aGVyZSBITCBzdGFydHMgKi8KKyAgICBjb2xucl9UCWVuZGNvbDsJIC8qIGluIHdpbl9saW5lKCkgcG9pbnRzIHRvIGNoYXIgd2hlcmUgSEwgZW5kcyAqLwogfSBtYXRjaF9UOwogCiBzdGF0aWMgbWF0Y2hfVCBzZWFyY2hfaGw7CS8qIHVzZWQgZm9yICdobHNlYXJjaCcgaGlnaGxpZ2h0IG1hdGNoaW5nICovCkBAIC05NDQsOCArOTQ0LDggQEAKIAogCS8qIFdoZW4gYSBjaGFuZ2Ugc3RhcnRzIGFib3ZlIHdfdG9wbGluZSBhbmQgdGhlIGVuZCBpcyBiZWxvdwogCSAqIHdfdG9wbGluZSwgc3RhcnQgcmVkcmF3aW5nIGF0IHdfdG9wbGluZS4KLQkgKiBJZiB0aGUgZW5kIG9mIHRoZSBjaGFuZ2UgaXMgYWJvdmUgd190b3BsaW5lOiBkbyBsaWtlIG5vIGNoYW5nZXMgd2FzCi0JICogbWFkZWQsIGJ1dCByZWRyYXcgdGhlIGZpcnN0IGxpbmUgdG8gZmluZCBjaGFuZ2VzIGluIHN5bnRheC4gKi8KKwkgKiBJZiB0aGUgZW5kIG9mIHRoZSBjaGFuZ2UgaXMgYWJvdmUgd190b3BsaW5lOiBkbyBsaWtlIG5vIGNoYW5nZSB3YXMKKwkgKiBtYWRlLCBidXQgcmVkcmF3IHRoZSBmaXJzdCBsaW5lIHRvIGZpbmQgY2hhbmdlcyBpbiBzeW50YXguICovCiAJaWYgKG1vZF90b3AgIT0gMCAmJiBtb2RfdG9wIDwgd3AtPndfdG9wbGluZSkKIAl7CiAJICAgIGlmIChtb2RfYm90ID4gd3AtPndfdG9wbGluZSkKQEAgLTk1NSw2ICs5NTUsMTEgQEAKIAkJdG9wX2VuZCA9IDE7CiAjZW5kaWYKIAl9CisKKwkvKiBXaGVuIGxpbmUgbnVtYmVycyBhcmUgZGlzcGxheWVkIG5lZWQgdG8gcmVkcmF3IGFsbCBsaW5lcyBiZWxvdworCSAqIGluc2VydGVkL2RlbGV0ZWQgbGluZXMuICovCisJaWYgKG1vZF90b3AgIT0gMCAmJiBidWYtPmJfbW9kX3hsaW5lcyAhPSAwICYmIHdwLT53X3BfbnUpCisJICAgIG1vZF9ib3QgPSBNQVhMTlVNOwogICAgIH0KIAogICAgIC8qCkBAIC0xNjI1LDEyICsxNjMwLDYgQEAKIAkJCX0KIAkJICAgIH0KIAkJfQotCi0JCS8qIFdoZW4gaW5zZXJ0aW5nIG9yIGRlbGV0aW5nIGxpbmVzIGFuZCAnbnVtYmVyJyBpcyBzZXQ6Ci0JCSAqIFJlZHJhdyBhbGwgbGluZXMgYmVsb3cgdGhlIGNoYW5nZSB0byB1cGRhdGUgdGhlIGxpbmUKLQkJICogbnVtYmVycy4gKi8KLQkJaWYgKGJ1Zi0+Yl9tb2RfeGxpbmVzICE9IDAgJiYgd3AtPndfcF9udSkKLQkJICAgIGJvdF9zdGFydCA9IDA7CiAJICAgIH0KIAogI2lmZGVmIEZFQVRfRk9MRElORwpAQCAtMjY0Miw2ICsyNjQxLDggQEAKIAkJICAgIGZyb21jb2wgPSAtMTA7CiAJCSAgICB0b2NvbCA9IE1BWENPTDsKIAkJfQorCQllbHNlIGlmIChib3QtPmNvbCA9PSBNQVhDT0wpCisJCSAgICB0b2NvbCA9IE1BWENPTDsKIAkJZWxzZQogCQl7CiAJCSAgICBwb3MgPSAqYm90OwpAQCAtMjg1Miw4ICsyODUzLDggQEAKICAgICBzaGwgPSAmc2VhcmNoX2hsOwogICAgIGZvciAoOzspCiAgICAgewotCXNobC0+c3RhcnRwID0gTlVMTDsKLQlzaGwtPmVuZHAgPSBOVUxMOworCXNobC0+c3RhcnRjb2wgPSBNQVhDT0w7CisJc2hsLT5lbmRjb2wgPSBNQVhDT0w7CiAJc2hsLT5hdHRyX2N1ciA9IDA7CiAJaWYgKHNobC0+cm0ucmVncHJvZyAhPSBOVUxMKQogCXsKQEAgLTI4NjgsMjUgKzI4NjksMjUgQEAKIAkgICAgaWYgKHNobC0+bG51bSAhPSAwICYmIHNobC0+bG51bSA8PSBsbnVtKQogCSAgICB7CiAJCWlmIChzaGwtPmxudW0gPT0gbG51bSkKLQkJICAgIHNobC0+c3RhcnRwID0gbGluZSArIHNobC0+cm0uc3RhcnRwb3NbMF0uY29sOworCQkgICAgc2hsLT5zdGFydGNvbCA9IHNobC0+cm0uc3RhcnRwb3NbMF0uY29sOwogCQllbHNlCi0JCSAgICBzaGwtPnN0YXJ0cCA9IGxpbmU7CisJCSAgICBzaGwtPnN0YXJ0Y29sID0gMDsKIAkJaWYgKGxudW0gPT0gc2hsLT5sbnVtICsgc2hsLT5ybS5lbmRwb3NbMF0ubG51bQogCQkJCQkJICAtIHNobC0+cm0uc3RhcnRwb3NbMF0ubG51bSkKLQkJICAgIHNobC0+ZW5kcCA9IGxpbmUgKyBzaGwtPnJtLmVuZHBvc1swXS5jb2w7CisJCSAgICBzaGwtPmVuZGNvbCA9IHNobC0+cm0uZW5kcG9zWzBdLmNvbDsKIAkJZWxzZQotCQkgICAgc2hsLT5lbmRwID0gbGluZSArIE1BWENPTDsKKwkJICAgIHNobC0+ZW5kY29sID0gTUFYQ09MOwogCQkvKiBIaWdobGlnaHQgb25lIGNoYXJhY3RlciBmb3IgYW4gZW1wdHkgbWF0Y2guICovCi0JCWlmIChzaGwtPnN0YXJ0cCA9PSBzaGwtPmVuZHApCisJCWlmIChzaGwtPnN0YXJ0Y29sID09IHNobC0+ZW5kY29sKQogCQl7CiAjaWZkZWYgRkVBVF9NQllURQotCQkgICAgaWYgKGhhc19tYnl0ZSAmJiAqc2hsLT5lbmRwICE9IE5VTCkKLQkJCXNobC0+ZW5kcCArPSAoKm1iX3B0cjJsZW5fY2hlY2spKHNobC0+ZW5kcCk7CisJCSAgICBpZiAoaGFzX21ieXRlICYmIGxpbmVbc2hsLT5lbmRjb2xdICE9IE5VTCkKKwkJCXNobC0+ZW5kY29sICs9ICgqbWJfcHRyMmxlbl9jaGVjaykobGluZSArIHNobC0+ZW5kY29sKTsKIAkJICAgIGVsc2UKICNlbmRpZgotCQkJKytzaGwtPmVuZHA7CisJCQkrK3NobC0+ZW5kY29sOwogCQl9Ci0JCWlmIChzaGwtPnN0YXJ0cCA8IHB0cikgIC8qIG1hdGNoIGF0IGxlZnRjb2wgKi8KKwkJaWYgKChsb25nKXNobC0+c3RhcnRjb2wgPCB2KSAgLyogbWF0Y2ggYXQgbGVmdGNvbCAqLwogCQl7CiAJCSAgICBzaGwtPmF0dHJfY3VyID0gc2hsLT5hdHRyOwogCQkgICAgc2VhcmNoX2F0dHIgPSBzaGwtPmF0dHI7CkBAIC0zMTUwLDIyICszMTUxLDIyIEBACiAJCSAqIERvIHRoaXMgZmlyc3QgZm9yIHNlYXJjaF9obCwgdGhlbiBmb3IgbWF0Y2hfaGwsIHNvIHRoYXQKIAkJICogIjptYXRjaCIgb3ZlcnJ1bGVzICdobHNlYXJjaCcuCiAJCSAqLworCQl2ID0gKGxvbmcpKHB0ciAtIGxpbmUpOwogCQlzaGwgPSAmc2VhcmNoX2hsOwogCQlmb3IgKDs7KQogCQl7CiAJCSAgICB3aGlsZSAoc2hsLT5ybS5yZWdwcm9nICE9IE5VTEwpCiAJCSAgICB7Ci0JCQlpZiAoc2hsLT5zdGFydHAgIT0gTlVMTAotCQkJCSYmIHB0ciA+PSBzaGwtPnN0YXJ0cAotCQkJCSYmIHB0ciA8IHNobC0+ZW5kcCkKKwkJCWlmIChzaGwtPnN0YXJ0Y29sICE9IE1BWENPTAorCQkJCSYmIHYgPj0gKGxvbmcpc2hsLT5zdGFydGNvbAorCQkJCSYmIHYgPCAobG9uZylzaGwtPmVuZGNvbCkKIAkJCXsKIAkJCSAgICBzaGwtPmF0dHJfY3VyID0gc2hsLT5hdHRyOwogCQkJfQotCQkJZWxzZSBpZiAocHRyID09IHNobC0+ZW5kcCkKKwkJCWVsc2UgaWYgKHYgPT0gKGxvbmcpc2hsLT5lbmRjb2wpCiAJCQl7CiAJCQkgICAgc2hsLT5hdHRyX2N1ciA9IDA7CiAKLQkJCSAgICB2ID0gKGxvbmcpKHB0ciAtIGxpbmUpOwogCQkJICAgIG5leHRfc2VhcmNoX2hsKHdwLCBzaGwsIGxudW0sIChjb2xucl9UKXYpOwogCiAJCQkgICAgLyogTmVlZCB0byBnZXQgdGhlIGxpbmUgYWdhaW4sIGEgbXVsdGktbGluZSByZWdleHAKQEAgLTMxNzUsMjMgKzMxNzYsMjMgQEAKIAogCQkJICAgIGlmIChzaGwtPmxudW0gPT0gbG51bSkKIAkJCSAgICB7Ci0JCQkJc2hsLT5zdGFydHAgPSBsaW5lICsgc2hsLT5ybS5zdGFydHBvc1swXS5jb2w7CisJCQkJc2hsLT5zdGFydGNvbCA9IHNobC0+cm0uc3RhcnRwb3NbMF0uY29sOwogCQkJCWlmIChzaGwtPnJtLmVuZHBvc1swXS5sbnVtID09IDApCi0JCQkJICAgIHNobC0+ZW5kcCA9IGxpbmUgKyBzaGwtPnJtLmVuZHBvc1swXS5jb2w7CisJCQkJICAgIHNobC0+ZW5kY29sID0gc2hsLT5ybS5lbmRwb3NbMF0uY29sOwogCQkJCWVsc2UKLQkJCQkgICAgc2hsLT5lbmRwID0gbGluZSArIE1BWENPTDsKKwkJCQkgICAgc2hsLT5lbmRjb2wgPSBNQVhDT0w7CiAKLQkJCQlpZiAoc2hsLT5zdGFydHAgPT0gc2hsLT5lbmRwKQorCQkJCWlmIChzaGwtPnN0YXJ0Y29sID09IHNobC0+ZW5kY29sKQogCQkJCXsKIAkJCQkgICAgLyogaGlnaGxpZ2h0IGVtcHR5IG1hdGNoLCB0cnkgYWdhaW4gYWZ0ZXIKIAkJCQkgICAgICogaXQgKi8KICNpZmRlZiBGRUFUX01CWVRFCiAJCQkJICAgIGlmIChoYXNfbWJ5dGUpCi0JCQkJCXNobC0+ZW5kcCArPQotCQkJCQkgICAgICAgKCptYl9wdHIybGVuX2NoZWNrKShzaGwtPmVuZHApOworCQkJCQlzaGwtPmVuZGNvbCArPSAoKm1iX3B0cjJsZW5fY2hlY2spKGxpbmUKKwkJCQkJCQkgICAgICAgKyBzaGwtPmVuZGNvbCk7CiAJCQkJICAgIGVsc2UKICNlbmRpZgotCQkJCQkrK3NobC0+ZW5kcDsKKwkJCQkJKytzaGwtPmVuZGNvbDsKIAkJCQl9CiAKIAkJCQkvKiBMb29wIHRvIGNoZWNrIGlmIHRoZSBtYXRjaCBzdGFydHMgYXQgdGhlCkBAIC0zNjM1LDggKzM2MzYsMjIgQEAKIAkJCWMgPSAnICc7CiAJCSAgICB9CiAJCX0KLQkJZWxzZSBpZiAoYyA9PSBOVUwgJiYgd3AtPndfcF9saXN0ICYmIGxjc19lb2xfb25lID4gMCkKKwkJZWxzZSBpZiAoYyA9PSBOVUwKKwkJCSYmICgod3AtPndfcF9saXN0ICYmIGxjc19lb2wgPiAwKQorCQkJICAgIHx8ICgoZnJvbWNvbCA+PSAwIHx8IGZyb21jb2xfcHJldiA+PSAwKQorCQkJCSYmIHRvY29sID4gdmNvbAorCQkJCSYmIFZJc3VhbF9tb2RlICE9IEN0cmxfVgorCQkJCSYmICgKKyMgaWZkZWYgRkVBVF9SSUdIVExFRlQKKwkJCQkgICAgd3AtPndfcF9ybCA/IChjb2wgPj0gMCkgOgorIyBlbmRpZgorCQkJCSAgICAoY29sIDwgV19XSURUSCh3cCkpKQorCQkJCSYmICEobm9pbnZjdXIKKwkJCQkgICAgJiYgKGNvbG5yX1QpdmNvbCA9PSB3cC0+d192aXJ0Y29sKSkpCisJCQkmJiBsY3NfZW9sX29uZSA+PSAwKQogCQl7CisJCSAgICAvKiBEaXNwbGF5IGEgJyQnIGFmdGVyIHRoZSBsaW5lIG9yIGhpZ2hsaWdodCBhbiBleHRyYQorCQkgICAgICogY2hhcmFjdGVyIGlmIHRoZSBsaW5lIGJyZWFrIGlzIGluY2x1ZGVkLiAqLwogI2lmIGRlZmluZWQoRkVBVF9ESUZGKSB8fCBkZWZpbmVkKExJTkVfQVRUUikKIAkJICAgIC8qIEZvciBhIGRpZmYgbGluZSB0aGUgaGlnaGxpZ2h0aW5nIGNvbnRpbnVlcyBhZnRlciB0aGUKIAkJICAgICAqICIkIi4gKi8KQEAgLTM2NjcsNyArMzY4MiwxMCBAQAogCQkJICAgIGNfZXh0cmEgPSBOVUw7CiAJCQl9CiAJCSAgICB9Ci0JCSAgICBjID0gbGNzX2VvbDsKKwkJICAgIGlmICh3cC0+d19wX2xpc3QpCisJCQljID0gbGNzX2VvbDsKKwkJICAgIGVsc2UKKwkJCWMgPSAnICc7CiAJCSAgICBsY3NfZW9sX29uZSA9IC0xOwogCQkgICAgLS1wdHI7CSAgICAvKiBwdXQgaXQgYmFjayBhdCB0aGUgTlVMICovCiAJCSAgICBpZiAoYXJlYV9hdHRyID09IDAgJiYgc2VhcmNoX2F0dHIgPT0gMCkKQEAgLTM4NDcsOCArMzg2NSw4IEBACiAJCSAgICAmJiAoKGFyZWFfYXR0ciAhPSAwICYmIHZjb2wgPT0gZnJvbWNvbCkKICNpZmRlZiBGRUFUX1NFQVJDSF9FWFRSQQogCQkJLyogaGlnaGxpZ2h0ICdobHNlYXJjaCcgbWF0Y2ggYXQgZW5kIG9mIGxpbmUgKi8KLQkJCXx8IHB0ciAtIDEgPT0gc2VhcmNoX2hsLnN0YXJ0cAotCQkJfHwgcHRyIC0gMSA9PSBtYXRjaF9obC5zdGFydHAKKwkJCXx8IChwdHIgLSBsaW5lKSAtIDEgPT0gKGxvbmcpc2VhcmNoX2hsLnN0YXJ0Y29sCisJCQl8fCAocHRyIC0gbGluZSkgLSAxID09IChsb25nKW1hdGNoX2hsLnN0YXJ0Y29sCiAjZW5kaWYKIAkJICAgICAgICkpCiAJICAgIHsKQEAgLTM4ODUsNyArMzkwMyw3IEBACiAjaWZkZWYgRkVBVF9TRUFSQ0hfRVhUUkEKIAkJaWYgKGFyZWFfYXR0ciA9PSAwKQogCQl7Ci0JCSAgICBpZiAocHRyIC0gMSA9PSBtYXRjaF9obC5zdGFydHApCisJCSAgICBpZiAoKHB0ciAtIGxpbmUpIC0gMSA9PSAobG9uZyltYXRjaF9obC5zdGFydGNvbCkKIAkJCWNoYXJfYXR0ciA9IG1hdGNoX2hsLmF0dHI7CiAJCSAgICBlbHNlCiAJCQljaGFyX2F0dHIgPSBzZWFyY2hfaGwuYXR0cjsKZGlmZiAtLWdpdCBhL3NyYy9zZWFyY2guYyBiL3NyYy9zZWFyY2guYwppbmRleCA0NTEzZWExLi42YTkxNWUxIDEwMDY0NAotLS0gYS9zcmMvc2VhcmNoLmMKKysrIGIvc3JjL3NlYXJjaC5jCkBAIC00MDMxLDcgKzQwMzEsNyBAQAogCiAjaWZkZWYgUklTQ09TCiAgICAgLyogVW5peExpYiBrbm93cyBiZXN0IGhvdyB0byBtdW5nZSBjIGZpbGUgbmFtZXMgLSB0dXJuIG11bmdpbmcgYmFjayBvbi4gKi8KLSAgICBfX3Jpc2Nvc2lmeV9jb250cm9sID0gX19SSVNDT1NJRllfTE9OR19UUlVOQ0FURTsKKyAgICBpbnQgX19yaXNjb3NpZnlfY29udHJvbCA9IDA7CiAjZW5kaWYKIAogICAgIGlmICh0eXBlICE9IENIRUNLX1BBVEggJiYgdHlwZSAhPSBGSU5EX0RFRklORQpkaWZmIC0tZ2l0IGEvc3JjL3N5bnRheC5jIGIvc3JjL3N5bnRheC5jCmluZGV4IDQ5NTZhZWMuLjBjNzA2YzggMTAwNjQ0Ci0tLSBhL3NyYy9zeW50YXguYworKysgYi9zcmMvc3ludGF4LmMKQEAgLTIzMzksNiArMjMzOSwxMCBAQAogCQljdXJfc2ktPnNpX2hfZW5kcG9zID0gY3VyX3NpLT5zaV9lb2VfcG9zOwogCQljdXJfc2ktPnNpX2ZsYWdzIHw9IEhMX01BVENIOwogCQl1cGRhdGVfc2lfYXR0cihjdXJyZW50X3N0YXRlLmdhX2xlbiAtIDEpOworCisJCS8qIHdoYXQgbWF0Y2hlcyBuZXh0IG1heSBiZSBkaWZmZXJlbnQgbm93LCBjbGVhciBpdCAqLworCQluZXh0X21hdGNoX2lkeCA9IDA7CisJCW5leHRfbWF0Y2hfY29sID0gTUFYQ09MOwogCQlicmVhazsKIAkgICAgfQogCSAgICBlbHNlCkBAIC0yNDM5LDYgKzI0NDMsOCBAQAogCXsKIAkgICAgc2lwLT5zaV9hdHRyID0gQ1VSX1NUQVRFKGlkeCAtIDEpLnNpX2F0dHI7CiAJICAgIHNpcC0+c2lfdHJhbnNfaWQgPSBDVVJfU1RBVEUoaWR4IC0gMSkuc2lfdHJhbnNfaWQ7CisJICAgIHNpcC0+c2lfaF9zdGFydHBvcyA9IENVUl9TVEFURShpZHggLSAxKS5zaV9oX3N0YXJ0cG9zOworCSAgICBzaXAtPnNpX2hfZW5kcG9zID0gQ1VSX1NUQVRFKGlkeCAtIDEpLnNpX2hfZW5kcG9zOwogCSAgICBpZiAoc2lwLT5zaV9jb250X2xpc3QgPT0gTlVMTCkKIAkgICAgewogCQlzaXAtPnNpX2ZsYWdzIHw9IEhMX1RSQU5TX0NPTlQ7CkBAIC01NjIwLDcgKzU2MjYsOCBAQAogICAgIGludAkJcjsKIAogICAgIC8qIElmIHNwcCBoYXMgYSAiY29udGFpbmVkaW4iIGxpc3QgYW5kICJjdXJfc2kiIGlzIGluIGl0LCByZXR1cm4gVFJVRS4gKi8KLSAgICBpZiAoY3VyX3NpICE9IE5VTEwgJiYgc3NwLT5jb250X2luX2xpc3QgIT0gTlVMTCkKKyAgICBpZiAoY3VyX3NpICE9IE5VTEwgJiYgc3NwLT5jb250X2luX2xpc3QgIT0gTlVMTAorCQkJCQkgICAgJiYgIShjdXJfc2ktPnNpX2ZsYWdzICYgSExfTUFUQ0gpKQogICAgIHsKIAkvKiBJZ25vcmUgdHJhbnNwYXJlbnQgaXRlbXMgd2l0aG91dCBhIGNvbnRhaW5zIGFyZ3VtZW50LiAgRG91YmxlIGNoZWNrCiAJICogdGhhdCB3ZSBkb24ndCBnbyBiYWNrIHBhc3QgdGhlIGZpcnN0IG9uZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy90YWcuYyBiL3NyYy90YWcuYwppbmRleCAxZTZkNWFjLi5iODNlYWY0IDEwMDY0NAotLS0gYS9zcmMvdGFnLmMKKysrIGIvc3JjL3RhZy5jCkBAIC0yMzgyLDcgKzIzODIsMTUgQEAKIAkgICAgZ2FfaW5pdDIoJnRhZ19mbmFtZXMsIChpbnQpc2l6ZW9mKGNoYXJfdSAqKSwgMTApOwogCSAgICBkb19pbl9ydW50aW1lcGF0aCgoY2hhcl91ICopCiAjaWZkZWYgRkVBVF9NVUxUSV9MQU5HCisjIGlmZGVmIFZNUworCQkgICAgLyogRnVuY3Rpb25zIGRlY2MkdG9fdm1zKCkgYW5kIGRlY2MkdHJhbnNsYXRlX3ZtcygpIGNyYXNoCisJCSAgICAgKiBvbiBzb21lIFZNUyBzeXN0ZW1zIHdpdGggd2lsZGNhcmRzICI/PyIuICBTZWVtcyBFQ08KKwkJICAgICAqIHBhdGNoZXMgZG8gZml4IHRoZSBwcm9ibGVtIGluIEMgUlRMLCBidXQgd2UgY2FuJ3QgdXNlCisJCSAgICAgKiBhbiAjaWZkZWYgZm9yIHRoYXQuICovCisJCSAgICAiZG9jL3RhZ3MgZG9jL3RhZ3MtKiIKKyMgZWxzZQogCQkgICAgImRvYy90YWdzIGRvYy90YWdzLT8/IgorIyBlbmRpZgogI2Vsc2UKIAkJICAgICJkb2MvdGFncyIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMKaW5kZXggNzFiMTkxMS4uYTgzZjUwNiAxMDA2NDQKLS0tIGEvc3JjL3Rlcm0uYworKysgYi9zcmMvdGVybS5jCkBAIC0xNjQzLDYgKzE2NDMsNyBAQAogCQkJCXtLU19DSVMsICJJUyJ9LCB7S1NfQ0lFLCAiSUUifSwKIAkJCQl7S1NfVFMsICJ0cyJ9LCB7S1NfRlMsICJmcyJ9LAogCQkJCXtLU19DV1AsICJXUCJ9LCB7S1NfQ1dTLCAiV1MifSwKKwkJCQl7S1NfQ1NJLCAiU0kifSwge0tTX0NFSSwgIkVJIn0sCiAJCQkJeyhlbnVtIFNwZWNpYWxLZXkpMCwgTlVMTH0KIAkJCSAgICB9OwogCkBAIC0zNDAwLDYgKzM0MDEsMzEgQEAKIH0KIAogLyoKKyAqIFNldCBjdXJzb3Igc2hhcGUgdG8gbWF0Y2ggSW5zZXJ0IG1vZGUuCisgKi8KKyAgICB2b2lkCit0ZXJtX2N1cnNvcl9zaGFwZSgpCit7CisgICAgc3RhdGljIGludCBzaG93aW5nX2luc2VydF9tb2RlID0gTUFZQkU7CisKKyAgICBpZiAoIWZ1bGxfc2NyZWVuIHx8ICpUX0NTSSA9PSBOVUwgfHwgKlRfQ0VJID09IE5VTCkKKwlyZXR1cm47CisKKyAgICBpZiAoU3RhdGUgJiBJTlNFUlQpCisgICAgeworCWlmIChzaG93aW5nX2luc2VydF9tb2RlICE9IFRSVUUpCisJICAgIG91dF9zdHIoVF9DU0kpOwkgICAgLyogZGlzYWJsZSBjdXJzb3IgKi8KKwlzaG93aW5nX2luc2VydF9tb2RlID0gVFJVRTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKwlpZiAoc2hvd2luZ19pbnNlcnRfbW9kZSAhPSBGQUxTRSkKKwkgICAgb3V0X3N0cihUX0NFSSk7CSAgICAvKiBkaXNhYmxlIGN1cnNvciAqLworCXNob3dpbmdfaW5zZXJ0X21vZGUgPSBGQUxTRTsKKyAgICB9Cit9CisKKy8qCiAgKiBTZXQgc2Nyb2xsaW5nIHJlZ2lvbiBmb3Igd2luZG93ICd3cCcuCiAgKiBUaGUgcmVnaW9uIHN0YXJ0cyAnb2ZmJyBsaW5lcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgd2luZG93LgogICogQWxzbyBzZXQgdGhlIHZlcnRpY2FsIHNjcm9sbCByZWdpb24gZm9yIGEgdmVydGljYWxseSBzcGxpdCB3aW5kb3cuICBBbHdheXMKZGlmZiAtLWdpdCBhL3NyYy90ZXJtLmggYi9zcmMvdGVybS5oCmluZGV4IDE3YjEwNjUuLmM0MDAwMjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmgKKysrIGIvc3JjL3Rlcm0uaApAQCAtNzYsNiArNzYsOCBAQAogICAgIEtTX0NXUCwJLyogc2V0IHdpbmRvdyBwb3NpdGlvbiBpbiBwaXhlbHMgKi8KICAgICBLU19DV1MsCS8qIHNldCB3aW5kb3cgc2l6ZSBpbiBjaGFyYWN0ZXJzICovCiAgICAgS1NfQ1JWLAkvKiByZXF1ZXN0IHZlcnNpb24gc3RyaW5nICovCisgICAgS1NfQ1NJLAkvKiBzdGFydCBpbnNlcnQgbW9kZSAoYmFyIGN1cnNvcikgKi8KKyAgICBLU19DRUksCS8qIGVuZCBpbnNlcnQgbW9kZSAoYmxvY2sgY3Vyc29yKSAqLwogI2lmZGVmIEZFQVRfVkVSVFNQTElUCiAgICAgS1NfQ1NWLAkvKiBzY3JvbGwgcmVnaW9uIHZlcnRpY2FsICovCiAjZW5kaWYKQEAgLTE0OCw2ICsxNTAsOCBAQAogI2RlZmluZSBUX0ZTCSh0ZXJtX3N0cihLU19GUykpCS8qIHNldCB3aW5kb3cgdGl0bGUgZW5kICovCiAjZGVmaW5lIFRfQ1dQCSh0ZXJtX3N0cihLU19DV1ApKQkvKiB3aW5kb3cgcG9zaXRpb24gKi8KICNkZWZpbmUgVF9DV1MJKHRlcm1fc3RyKEtTX0NXUykpCS8qIHdpbmRvdyBzaXplICovCisjZGVmaW5lIFRfQ1NJCSh0ZXJtX3N0cihLU19DU0kpKQkvKiBzdGFydCBpbnNlcnQgbW9kZSAqLworI2RlZmluZSBUX0NFSQkodGVybV9zdHIoS1NfQ0VJKSkJLyogZW5kIGluc2VydCBtb2RlICovCiAjZGVmaW5lIFRfQ1JWCSh0ZXJtX3N0cihLU19DUlYpKQkvKiByZXF1ZXN0IHZlcnNpb24gc3RyaW5nICovCiAjZGVmaW5lIFRfT1AJKHRlcm1fc3RyKEtTX09QKSkJLyogb3JpZ2luYWwgY29sb3IgcGFpciAqLwogCmRpZmYgLS1naXQgYS9zcmMvdWkuYyBiL3NyYy91aS5jCmluZGV4IDQ3ZmY4MGUuLjM5NjNiZDUgMTAwNjQ0Ci0tLSBhL3NyYy91aS5jCisrKyBiL3NyYy91aS5jCkBAIC0xNzYsNyArMTc2LDEzIEBACiAjIGlmZGVmIEZFQVRfR1VJCiAgICAgZWxzZQogIyBlbmRpZgorICAgIHsKKwlpZiAod3RpbWUgPT0gLTEpCisJICAgIGhhbmRsZV9zaWdodXAoU0lHSFVQX1VOQkxPQ0spOyAgLyogYWxsb3cgU0lHSFVQIHRvIGtpbGwgdXMgKi8KIAlyZXR2YWwgPSBtY2hfaW5jaGFyKGJ1ZiwgbWF4bGVuLCB3dGltZSwgdGJfY2hhbmdlX2NudCk7CisJaWYgKHd0aW1lID09IC0xKQorCSAgICBoYW5kbGVfc2lnaHVwKFNJR0hVUF9CTE9DSyk7ICAgIC8qIGJsb2NrIFNJR0hVUCAqLworICAgIH0KICNlbmRpZgogCiAgICAgY3RybF9jX2ludGVycnVwdHMgPSBUUlVFOwpAQCAtMTg1Miw3ICsxODU4LDEwIEBACiAjIGlmZGVmIEZFQVRfR1VJCiAgICAgaWYgKGd1aS5pbl91c2UpCiAJZ3VpX3VwZGF0ZV9jdXJzb3JfbGF0ZXIoKTsKKyAgICBlbHNlCiAjIGVuZGlmCisJdGVybV9jdXJzb3Jfc2hhcGUoKTsKKwogIyBpZmRlZiBNQ0hfQ1VSU09SX1NIQVBFCiAgICAgbWNoX3VwZGF0ZV9jdXJzb3IoKTsKICMgZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy92ZXJzaW9uLmggYi9zcmMvdmVyc2lvbi5oCmluZGV4IDY3YjQ3ZDUuLmU4ZjEwNzggMTAwNjQ0Ci0tLSBhL3NyYy92ZXJzaW9uLmgKKysrIGIvc3JjL3ZlcnNpb24uaApAQCAtMzYsNSArMzYsNSBAQAogI2RlZmluZSBWSU1fVkVSU0lPTl9OT0RPVAkidmltNzBhYSIKICNkZWZpbmUgVklNX1ZFUlNJT05fU0hPUlQJIjcuMGFhIgogI2RlZmluZSBWSU1fVkVSU0lPTl9NRURJVU0JIjcuMGFhIEFMUEhBIgotI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNCBPY3QgNCkiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDQgT2N0IDQsIGNvbXBpbGVkICIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDQgRGVjIDkpIgorI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HX0RBVEUJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA0IERlYyA5LCBjb21waWxlZCAiCmRpZmYgLS1naXQgYS9zcmMvdmltLmggYi9zcmMvdmltLmgKaW5kZXggYzY4ZTFhNy4uY2QyODNkMiAxMDA2NDQKLS0tIGEvc3JjL3ZpbS5oCisrKyBiL3NyYy92aW0uaApAQCAtNDM0LDkgKzQzNCwxMCBAQAogIyAgZGVmaW5lIEZFQVRfR0VUVEVYVAogIyBlbmRpZgogLyogVGhlc2UgYXJlIGluIG9zX3dpbjMyLmMgKi8KLWV4dGVybiBjaGFyKiAoKmR5bl9saWJpbnRsX2dldHRleHQpKGNvbnN0IGNoYXIqIG1zZ2lkKTsKLWV4dGVybiBjaGFyKiAoKmR5bl9saWJpbnRsX2JpbmR0ZXh0ZG9tYWluKShjb25zdCBjaGFyKiBkb21haW5uYW1lLCBjb25zdCBjaGFyKiBkaXJuYW1lKTsKLWV4dGVybiBjaGFyKiAoKmR5bl9saWJpbnRsX3RleHRkb21haW4pKGNvbnN0IGNoYXIqIGRvbWFpbm5hbWUpOworZXh0ZXJuIGNoYXIgKigqZHluX2xpYmludGxfZ2V0dGV4dCkoY29uc3QgY2hhciAqbXNnaWQpOworZXh0ZXJuIGNoYXIgKigqZHluX2xpYmludGxfYmluZHRleHRkb21haW4pKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmRpcm5hbWUpOworZXh0ZXJuIGNoYXIgKigqZHluX2xpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQpKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmNvZGVzZXQpOworZXh0ZXJuIGNoYXIgKigqZHluX2xpYmludGxfdGV4dGRvbWFpbikoY29uc3QgY2hhciAqZG9tYWlubmFtZSk7CiAjZW5kaWYKIAogCkBAIC00NDgsNyArNDQ5LDExIEBACiAjIGlmZGVmIERZTkFNSUNfR0VUVEVYVAogIyAgZGVmaW5lIF8oeCkgKCpkeW5fbGliaW50bF9nZXR0ZXh0KSgoY2hhciAqKSh4KSkKICMgIGRlZmluZSBOXyh4KSB4Ci0jICBkZWZpbmUgYmluZHRleHRkb21haW4oZG9tYWluLGRpcikgKCpkeW5fbGliaW50bF9iaW5kdGV4dGRvbWFpbikoZG9tYWluLGRpcikKKyMgIGRlZmluZSBiaW5kdGV4dGRvbWFpbihkb21haW4sIGRpcikgKCpkeW5fbGliaW50bF9iaW5kdGV4dGRvbWFpbikoKGRvbWFpbiksIChkaXIpKQorIyAgZGVmaW5lIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KGRvbWFpbiwgY29kZXNldCkgKCpkeW5fbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCkoKGRvbWFpbiksIChjb2Rlc2V0KSkKKyMgIGlmICFkZWZpbmVkKEhBVkVfQklORF9URVhURE9NQUlOX0NPREVTRVQpCisjICAgZGVmaW5lIEhBVkVfQklORF9URVhURE9NQUlOX0NPREVTRVQgMQorIyAgZW5kaWYKICMgIGRlZmluZSB0ZXh0ZG9tYWluKGRvbWFpbikgKCpkeW5fbGliaW50bF90ZXh0ZG9tYWluKShkb21haW4pCiAjIGVsc2UKICMgIGluY2x1ZGUgPGxpYmludGwuaD4KQEAgLTQ2Niw2ICs0NzEsMTAgQEAKICMgIHVuZGVmIGJpbmR0ZXh0ZG9tYWluCiAjIGVuZGlmCiAjIGRlZmluZSBiaW5kdGV4dGRvbWFpbih4LCB5KSAvKiBlbXB0eSAqLworIyBpZmRlZiBiaW5kX3RleHRkb21haW5fY29kZXNldAorIyAgdW5kZWYgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQKKyMgZW5kaWYKKyMgZGVmaW5lIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KHgsIHkpIC8qIGVtcHR5ICovCiAjIGlmZGVmIHRleHRkb21haW4KICMgIHVuZGVmIHRleHRkb21haW4KICMgZW5kaWYKQEAgLTE4MzQsNCArMTg0MywxMiBAQAogIyBpbmNsdWRlIDxYU1VCLmg+CiAjZW5kaWYKIAorLyogdmFsdWVzIGZvciBoYW5kbGVfc2lnaHVwKCkgKi8KKyNkZWZpbmUgU0lHSFVQX1JDVgkxCisjZGVmaW5lIFNJR0hVUF9CTE9DSwkyCisjZGVmaW5lIFNJR0hVUF9VTkJMT0NLICAzCisjaWZuZGVmIFVOSVgKKyMgZGVmaW5lIGhhbmRsZV9zaWdodXAoeCkgLyogbm90aGluZyAqLworI2VuZGlmCisKICNlbmRpZiAvKiBWSU1fX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuYyBiL3NyYy93aW5kb3cuYwppbmRleCA0N2RhNjYzLi5hZDMyMjJhIDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMKKysrIGIvc3JjL3dpbmRvdy5jCkBAIC0xOTI0LDcgKzE5MjQsMTEgQEAKIAljdXJidWYgPSBjdXJ3aW4tPndfYnVmZmVyOwogCWNsb3NlX2N1cndpbiA9IFRSVUU7CiAgICAgfQotICAgIGlmIChwX2VhKQorICAgIGlmIChwX2VhCisjaWZkZWYgRkVBVF9WRVJUU1BMSVQKKwkgICAgJiYgKCpwX2VhZCA9PSAnYicgfHwgKnBfZWFkID09IGRpcikKKyNlbmRpZgorCSAgICApCiAJd2luX2VxdWFsKGN1cndpbiwgVFJVRSwKICNpZmRlZiBGRUFUX1ZFUlRTUExJVAogCQlkaXIK